← Handoffs

Repository · handoffs

Restore required CI and finish review of the UrlResolver expiry fix

View on GitHub ↗

id: hf-2026-10-07-finish-urlresolver-round-twelve-after-registry-and-clock-ownership-decisions url: url://handoff/handoffs/hf-2026-10-07-finish-urlresolver-round-twelve-after-registry-and-clock-ownership-decisions title: Restore required CI and finish review of the UrlResolver expiry fix summary: Restore the failed required CI upload, obtain a full-suite pass on pushed head 8a6de8704, then perform both final-head reviews. Nineteen public regression selectors pass; run 77de536d failed before tests with zero chunks and no archive. Worker released claim and PR lock; no re-request or deployment. created: 2026-10-07T08:19:00.260Z completed: null blocked-reason: Required run 77de536d failed before compilation/tests: interrupted upload, zero chunks and no archive; required green and final reviews remain unmet. dependencies:

  • url://handoff/handoffs/hf-2026-10-07-decide-urlresolver-registry-notification-scope-and-caller-clock-test-ownership

Restore required CI and finish review of the UrlResolver expiry fix

Written: 2026-10-08 12:42:40 UTC, sweep worker w2.

RE-VERIFY: This is a write-time snapshot. Recheck https://github.com/CodexCoder21Organization/UrlResolver/pull/1205 with gh pr view --json state,headRefOid,statusCheckRollup,mergeStateStatus,mergedAt,closedAt; inspect GraphQL mergeQueueEntry; fetch main and verify remote refs before acting. The orchestrator owns merge, queue, close and handoff-completion decisions. Never deploy.

Mission and current verdict

The user requested finishing useful open handoffs while skipping deployment and disk-exhaustion work. This worker's continuation was to recover the saved expiry fix, run the 19 regression selectors once, push the PR, use its required kotlin.build(remote) check as the full-suite gate, and perform both review passes on the green final head. The continuation expressly superseded the old pre-push full-suite requirement.

BLOCKED at required CI: the candidate is pushed at 8a6de8704d70372aeefa1937c4947cbbefd1305f, all 19 selectors pass, and the description is updated. Required run 77de536d was exposed before the ten-minute dispatch deadline, but its on-disk executor record is FAILED before compilation or tests: zero chunk files and no assembled archive. GitHub still reports both required checks IN_PROGRESS. No test failure from this candidate is claimed. Final green-head test/code reviews remain pending.

What is done and how it was verified

Fresh clone UrlResolver-round3 read README; no root AGENTS.md exists. Read global instructions, Testing Architecture, Philosophy and triage guidance. Recovered the remote mailbox against old PR 4947888d; recovered tree 6c203172dc63835b0f7bab19fc74d3a864be33a3 exactly matches saved candidate 8aee105f8. Recreated commit ids differ because the mailbox was reapplied; nine carried commits recover the complete candidate. Fetch/rebase on main 4fe061512ba91888439a2cf10608631bb99b6121 was a no-op, including immediately before push. PR was OPEN and not queued; force-with-lease was bound to the old head and remote branch verified after push.

The five fixed mechanisms, with fail-first records on the original evidence branch:

  1. Attempt deadline cancellation removed coverage before a callback-capable final clock read could cross expiry and return its old sample. A resolver-owned result observer remains live through cancellation and acceptance; subscription release invokes no caller clock code. Persistent second-read probe failed 2/2 on old source; bounded request probe failed 1/1.
  2. A genuine follower could join a pending shared timer registration and lose its own expiry coverage. Still-subscribed attempt callbacks cover observations, with identity checks against cancelled late callbacks. Forced public registration ordering failed 1/1 before the fix.
  3. Failed registration left an armed marker without a timer handle. Failure removes the exact marker so subsequent callers establish coverage. Public follow-on opener failed 1/1 before the fix.
  4. Close during the first post-selection clock read missed a lazily created observation owner. The owner now exists from construction, close is terminal, and late handles are reclaimed. Forced public close ordering failed 1/1 before the fix. A separate name-resolution-close hypothesis was refuted and retained zero timers.
  5. A stale candidate remaining-budget read could renew the original absolute connection deadline in a later helper. Bounded initial and refreshed calls now carry that original deadline. The public request probe failed 1/1 before the fix. Accepted persistent connections retain independent future request budgets.

The 19 saved public selectors ran once on the recovered final tree: 19 selected, 19 passed, 0 failed, exit 0. XML and full logs are in the round-three evidence directory. Tests retain original bounds/assertions and genuine concurrency; no timeout or iteration reduction. Initial scripts/test.bash invocation failed before compilation because its cwd-derived cache basename generated a File name too long error. The same generated kompile 0.0.100 launcher ran with explicit short /tmp/w2-urlresolver-round3-cache and the same selectors; no source or test change. No pre-push full suite was run.

Previous candidate reviews are preserved in candidate-review-passes.md. An earlier accepted-sibling 500 ms timeout remains unexplained; later unchanged single and eight-concurrent cases passed, which is not a claim that its cause was fixed. Repeat final-head review passes only after required CI succeeds; do not treat the old candidate reviews as final approval.

Required CI evidence

One build-watchman 0.0.21 watch used the required check set bld-build and kotlin.build(remote), with a 100-minute hard cap and 25-minute idle cap. No merge/re-request flags. It exposed https://buildtest.kotlin.build/run?id=77de536d before ten minutes, then the results API returned 503 cached-view-not-materialized. Read-only HardwareControlFabric obtained run.json from /root/buildtest-data/runs/77de536d: the first copy was PENDING; the second is FAILED at completedAt 1791462947846, with testsTotal=0, testsPassed=0, testsFailed=0, buildSucceeded=false. Its gitContext.headCommit matches the PR exactly. There is no additional stack trace in the run record. Exact error:

Build watchdog detected that run '77de536d' is a chunked upload that was interrupted and received no further upload activity for 10 minutes (limit 5 minutes). On-disk upload state: session directory=readable, chunk files=0, assembled archive exists=false. The upload cannot be completed without the client resending the remaining chunks, so the build has been marked as FAILED — resubmit the build.

The uploader's deeper cause is not established here. This did not execute candidate code. GitHub's final snapshot remains OPEN, not queued, both required checks IN_PROGRESS at 8a6de8704. The watcher was terminated after the external failure was established, harness exit 130/RESULT INTERRUPTED. No run/check deleted or re-requested. No build outputs, dependency caches or credentials were committed. Nothing was deployed or published.

Relevant PRs and refs

Repo Branch Remote head PR What is on it / state
UrlResolver https://github.com/CodexCoder21Organization/UrlResolver/tree/fix/open-wait-for-gossip-admission-flOpenWait 8a6de8704d70372aeefa1937c4947cbbefd1305f https://github.com/CodexCoder21Organization/UrlResolver/pull/1205 Complete expiry fix; 19 selectors pass; required suite upload failed before tests; OPEN
UrlResolver https://github.com/CodexCoder21Organization/UrlResolver/tree/work/sweep-w2-round3-evidence-20261008 2acce24abe83def4230365cf74293afbe0649112 no PR Round-three recovery, selectors, CI executor records, status/report/cleanup evidence; later terminal bookkeeping may advance this branch
UrlResolver https://github.com/CodexCoder21Organization/UrlResolver/tree/work/sweep-w2-urlresolver-round12-evidence-20261008 a8d6d9c9faa8a701c64f1cbb1f1aacff778ab979 no PR Full saved patch/mailbox, fail-first/fixed XML and candidate reviews; historical evidence
UrlResolver https://github.com/CodexCoder21Organization/UrlResolver/tree/work/fx1205r-round12 72f883164e6d61dbf09079cd88f34cc83d08dc3b no PR Historical superseded source proof
UrlResolver https://github.com/CodexCoder21Organization/UrlResolver/tree/work/fx1205r-corrected-probe-baseline 22e6794b3d416deaa7e20d5afc3d0d23665d231b no PR Historical corrected fail-first proof
UrlProtocol https://github.com/CodexCoder21Organization/UrlProtocol/tree/fix/peer-registry-change-listeners e73e61e08ca71647aa15293ee40730191828f360 https://github.com/CodexCoder21Organization/UrlProtocol/pull/657 OPEN; owned separately by w1; no publish/pin work belongs to w2

Round-three artifacts: https://github.com/CodexCoder21Organization/UrlResolver/tree/work/sweep-w2-round3-evidence-20261008/review-notes/sweep-w2-round12/round3 . Original candidate recovery: https://github.com/CodexCoder21Organization/UrlResolver/blob/work/sweep-w2-urlresolver-round12-evidence-20261008/review-notes/sweep-w2-round12/candidate-through-8aee105f8.mbox .

Next steps

  1. Re-verify current PR/check/queue state and exact head before acting; claim the handoff and acquire UrlResolver-1205 lock. Worker releases both when stopping.
  2. Investigate the required CI uploader for run 77de536d and restore a valid full-suite execution on the exact PR head. Do not blindly re-request; the orchestrator owns dispatch recovery. The source fix and 19-test gate are already pushed; no repeated local/remote full pre-push gate is needed.
  3. Once both required checks are green, perform the two final-head review passes: public test comprehensiveness and adversarial code correctness/ownership. If a real test fails, reproduce and fix it at its source with original bounds.
  4. Return READY_TO_MERGE for the orchestrator's final review/merge/completion decision. This worker neither merges nor completes the handoff. No deployment or disk-exhaustion step exists here; none was performed. Remaining after merge for this handoff: none. Upstream registry listener work remains separately owned.

Reusable details

HCF certificate paths present on this machine are ~/.config/hardware-control-fabric/client_cert.pem, fabric_key.pkcs8 and server_cert.pem. Prefer read-file to retrieve the small run.json; queued runs may have no build.log yet. An executor FAILED record with zero tests is distinct from an executed assertion failure, and a generic/pending GitHub projection can lag that record. The report-challenge CLI auto-enqueues/merges, which the sweep forbids; the filename-length cache issue and deprecated gh pr edit projectCards failure are recorded for the orchestrator instead. PR description update used gh api PATCH with a structured JSON body file.

Required reading: https://github.com/CodexCoder21Organization/DocumentationRepository/blob/main/architecture/TESTING.md ; https://github.com/CodexCoder21Organization/DocumentationRepository/blob/main/PHILOSOPHY.md ; https://github.com/CodexCoder21Organization/PlanRepository/blob/main/handoffs/README.md#triaging-handoffs .