← Priority list
Unclaimed

Fix resume admission deadlines and make the deadline test deterministic

Resolve two P2 review findings on UrlResolver long-poll adoption: an already-expired resume deadline can miss its wake, and the new deadline fixture races a legal earlier retry. Full receipt at1d25c5b440 is2522/2522 tests and17/17 rules with two first-attempt failures attributed. Public probes and exact-main comparison are pushed; target unchanged. No merge or enqueue.

Handoff document

Markdown

Fix resume admission deadline handling and make its deadline test deterministic

Written 2026-10-22 10:57:08 UTC, lane s93 independent review after s87 adoption.

RE-VERIFY: This is a snapshot. Recheck https://github.com/CodexCoder21Organization/UrlResolver/pull/1163 head/state and dependency https://github.com/CodexCoder21Organization/UrlResolver/pull/1424 before editing or building. At this review, target remains OPEN at1d25c5b440014e5cc259f9980408476ed6aa7d27, dependency OPEN at2c334bb18294d23926cbe15ae6db53a89b4289cb. Both s93 evidence drafts below are CLOSED without merge. Required full run39752626955 succeeded, but independent review found two P2 issues; this handoff is not complete merely because that run is green. No target push, merge, enqueue, deploy or publication by s93.

Design decisions in force

From the task supplied 2026-10-22 (carried verbatim):

Option A — when a client goes away the server frees the slot, lets the handler finish and discards the result; never interrupted because the client left; a caller interrupting its own thread keeps main's behaviour.

"Queue, then retry" — ordinary requests beyond the cap wait FIFO as on main; long-polls capped at 192; a long-poll rejection is retry-safe and every parking client (observable polls, projection polls incl. <child>/__projection_poll, __projection_command_status, __stream_pull) retries with bounded backoff.

One classification source of truth for "is this a long-poll path" (UrlResolver's LongPollServiceHandler declaration) — no second list.

Get the four tests passing with no change to their assertions, timeouts or workload.

No timeout raised, no load reduced, no assertion weakened. Do not merge or enqueue.

The shared brief also prohibits deployment, publication, reflection, mocks and subagents. Verification is on the GitHub runner, racing local-on-runner and remote execution. Only bld-build is required for UrlResolver; old kotlin.build App checks are informational. All linked briefs are preserved in the evidence branch, including p11's original P1–P7 and p82's history.

Mission summary and remaining work

The original user effort adds failing-first end-to-end extreme-condition tests to UrlResolver and fixes the exposed bugs. Lane s87 adopted UrlProtocol0.0.1431 into the long-poll work. Its remaining full-suite receipt is now complete. Lane s93 was explicitly review-only: review the adoption delta across the rebase, audit declarations/retry identity/deadlines/fixture strength, wait for the full suite and attribute every failed first attempt. That review is complete with TWO P2 findings. The remaining author work is to fix the deadline registration gap, make the new deadline test deterministic while retaining its contract assertions, and reverify/review the changed head. Do not merge or enqueue from this handoff.

What was found and verified

  1. P2 product gap, LongPollAdmissionRetry.kt:53–56 / UrlResolver.kt:31480. After an explicit unstarted resume refusal, response-timer cleanup can reach the original caller cutoff before the helper registers its deadline wake. ManualClock does not immediately invoke a newly registered past task. The helper then waits for a new future backoff, so an already-expired500ms public call remains asleep until another clock advance or explicit close. Existing doSendRequest has an expiry recheck after registration; this new helper omits it. The real-host public probe testReviewS93ResumeDeadlineExpiresBeforeAdmissionTimerRegistration deterministically advances to the cutoff during the refused response's unschedule, then fails3/3 on unchanged reviewed source: https://github.com/CodexCoder21Organization/UrlResolver/actions/runs/39761893119 . A disposable runner-only recheck makes the same probe pass first attempt in https://github.com/CodexCoder21Organization/UrlResolver/actions/runs/39765387718 . No product fix is committed or pushed to target.

  2. P2 new test ordering, tests/testHandlerResumeAdmissionKeepsOriginalDeadline.kts:71–78. Its manual.advanceBy(500) executes the50ms backoff callback at1050 before reaching1500. The awakened worker may legally send resume2 while450ms remains. The fixture assumes the advance prevents intermediate work and asserts a before-dispatch error plus exactly one resume. The full suite first attempt gets a response timeout instead, then passes retry. Independent probe testReviewS93ResumeDeadlineClockAdvancementAllowsEarlierRetry holds the1050 callback after wake until the real peer receives resume2, then lets advancement reach1500; its preserved error/count assertions fail3/3 in39765387718 (two error mismatches, one expected1/actual2). This still fails with finding1's runner-only recheck, so it is a distinct fixture issue. Fix the ordering, not the assertions or timeouts.

  3. Full receipt verified: https://github.com/CodexCoder21Organization/UrlResolver/actions/runs/39752626955 at exact target head. XML matches all2522 expected unique tests and17 expected unique build rules, with zero final failures. Exactly two failed first attempts: the new deadline fixture above; and existing testPeerControllerCancelTrueKeepsSharedConnection at its initial direct.stream.get before cancellation or any service request. The latter also fails on exact main71499899e547fb0cd62ff6e7fc04b25c0a97efc1 in https://github.com/CodexCoder21Organization/UrlResolver/actions/runs/39763278612 : unchanged-body20-case probe with4 genuine callers fails3/20,3/20,7/20 across its three attempts. Nine causes are initial connection-admission/handshake timeouts at that same public boundary, two are offer-not-observed, two are other setup-wait timeouts. Target hit the adjacent post-connect budget recheck, while baseline traces hit the connect acquisition window. This shows the pre-existing setup failure family; its deeper handshake cause is not yet diagnosed or fixed here. Raw traces preserve the distinction.

  4. Other adoption review passed: all114 previously reviewed commits are identical across rebase by range-diff. Both outer RPC adapters forward the exact active server declaration, resumed sessions resolve original paths, child projection paths use the wrapper declaration, ordinary names are not inferred as polls. Only explicit unstarted refusal mapping grants the retry; application/effect/command/cursor/stream identity is retained. The three held-work fixtures add only LongPollServiceHandler and path==work; assertions/counts/timeouts are unchanged. Their declared old-adapter negative still fails3/3. All four original regressions pass first attempt in full receipt. Archived12 critical and650 focused cases are first-attempt clean, and all eight new test hashes and four product hashes match target. No additional review finding.

Relevant PRs and recoverable branches

All review evidence: https://github.com/CodexCoder21Organization/UrlResolver/tree/wip/s93-artifacts/handoff-artifacts/s93 . Raw XML includes complete traces and attempt histories. Source/probe branches are evidence only, with temporary workflows; do not merge them.

Repo Branch Remote head SHA PR Contents State
UrlResolver s93 deadline evidence bfa68818e9865ecdea16de352c6f81a04f803b1e https://github.com/CodexCoder21Organization/UrlResolver/pull/1432 Both public probes, temporary runner-only cutoff recheck and native bootstrap CLOSED, never merged; negative3/3; final workflow SUCCESS with one positive and one expected-negative XML
UrlResolver s93 main evidence e27a88837d81d678a3b25f836558d045ab54afd9 https://github.com/CodexCoder21Organization/UrlResolver/pull/1433 Exact-main unchanged-body peer scenario with genuine callers CLOSED, never merged; runtime main reproduction on all3 attempts
UrlResolver s93 artifacts dbf7ffa03439d75b7b906e3dc1413f9a6ff21031 no PR Review findings, full/probe/main XML, attribution, metadata, range-diff and bootstrap log All review evidence pushed; no production code

The earlier adoption branches remain remote-verified and recoverable, with their prior write-time state below (source target still unchanged; s87 evidence drafts remain closed). See the original adoption artifacts for its complete negative/positive chain and briefs.

Repo Branch Remote head SHA PR What is on it State
CodexCoder21Organization/UrlResolver wip/urlfix3-handoff-2026-10-02b 1d25c5b440014e5cc259f9980408476ed6aa7d27 https://github.com/CodexCoder21Organization/UrlResolver/pull/1163 Actual source; complete adoption and eight permanent tests 12 critical +650 focused tests first-attempt PASS; full required check running
CodexCoder21Organization/UrlResolver wip/s87-1163-adoption 1d25c5b440014e5cc259f9980408476ed6aa7d27 https://github.com/CodexCoder21Organization/UrlResolver/pull/1163 Mirror of actual source head Same tree and commit as actual PR
CodexCoder21Organization/UrlResolver wip/s87-1163-dependency-checkpoint b90c7b2338a2198c3869e97e52586fd92ac7e97f no PR Initial two dependency cherry-picks only Superseded by actual source; prior attempt tree is identical
CodexCoder21Organization/UrlResolver wip/s87-failfirst 9a3b09f50d31dbe2620172642f4c3e1eee0df46a https://github.com/CodexCoder21Organization/UrlResolver/pull/1429 Old adapters with declared fixtures and raw transport guard Closed evidence PR; six runtime failures, three attempts each
CodexCoder21Organization/UrlResolver wip/s87-adoption-focused 7b9219bbd2369e72c3b0a2b42b7382b6a7ea7beb https://github.com/CodexCoder21Organization/UrlResolver/pull/1430 Final byte-identical source plus temporary runner/manifests/negative baselines Closed evidence PR; required bld-build SUCCESS; do not merge temporary harness
CodexCoder21Organization/UrlResolver wip/s87-stage1-source b89c39b8ae1a4f92b5956eaa1123beb2fe4dae79 https://github.com/CodexCoder21Organization/UrlResolver/pull/1430 Exact executed first adapter adoption / upload-negative source Five first-pass tests; three intended failures
CodexCoder21Organization/UrlResolver wip/s87-stage2-source 9390ca05f40f2d799b8a6343d8c80a0444e6fdc2 https://github.com/CodexCoder21Organization/UrlResolver/pull/1430 Exact executed resume declaration / upload fix, before client resume retry Four first-pass tests; two intended failures
CodexCoder21Organization/UrlResolver wip/s87-artifacts 3a9e73828a9da19c27c9abfc6c017ff18a8a5700 no PR Raw XML, logs, attribution, findings, briefs, manifests, verification tools Evidence only; source of recoverable receipts
CodexCoder21Organization/UrlResolver wip/s87-prior-attempt 2e1ba1ab3f00e29b11c5d288bd25c909df8ae185 no PR Exact previous attempt history, including two equivalent dependency cherry-picks Superseded; tree identical to dependency checkpoint; no unique content

Next steps

  1. Reverify target/dependency heads first. Dependency is intended to land before target; this lane is not authorized to merge either. A new target head requires review renewal and its own exact-head receipt.
  2. Adopt the public expired-registration probe as a permanent regression. Fix the already-expired condition across deadline timer registration while retaining the original RequestDeadline, session/effect answer, cleanup ownership, explicit-close wake and OptionA server behavior. The temporary runner recheck is diagnostic evidence, not a reviewed final implementation.
  3. Make testHandlerResumeAdmissionKeepsOriginalDeadline force its intended ordering before any retry is eligible (e.g. hold the retry timer's schedule return until the clock has reached the cutoff). Keep the exact error/count assertions for that manufactured condition. Preserve the distinction that retries before cutoff are legal. Use the controlled-order probe to verify the old fixture assumption; do not loosen assertions, increase timeouts or reduce workload.
  4. Run targeted new/neighbor parking tests, then full exact-head verification and first-attempt attribution, including independent test/code review. The old2522/17 receipt is evidence for1d25c5b440 only; account for newly added permanent scenarios in the new manifest. Update target PR receipt when the corrected source is verified.
  5. Keep the separate main initial-peer-setup issue visible with the provided baseline evidence; it is not repaired here. No new author approval question is pending. Do not deploy or publish, and do not merge or enqueue.

Operational knowledge and cleanup

The first corrected-order experiment39763169088 stopped before tests because the JVM Coursier launcher received Maven Central HTTP429 on its own bootstrap dependencies, then kompile.cli.CliKt could not load. Native Coursier2.1.25-M26 plus the existing Google Maven Central mirror made the evidence runner build and execute. Raw build failure is preserved. report-challenge was read but its CLI auto-enqueues/merges, prohibited for this lane, so no such mutation was performed.

Shared REST quota hit0 until10:42:25UTC; GraphQL remained available and provided step/state evidence. Artifact download resumed after reset. Do not infer tests ran from a red job: inspect steps and XML. No blind rerun was used; the failed bootstrap run produced no XML and is not fail-first evidence.

One draft briefly opened at the old target commit before a local git-identity correction, starting duplicate full run39761865005. S93 cancelled only that owned duplicate. Its same-name cancelled check attached to the shared commit and confused the PR watcher; the requested original39752626955 independently completed SUCCESS and its XML is preserved. No original target run was cancelled/rerun. All temporary drafts are closed without merge.

No source changes, artifacts published, production deployments, merges or enqueue actions occurred in s93. No subagents. All meaningful work is on the three remote branches above; no local-only commits/stashes/extra worktrees. Lane-owned watchers are terminal/stopped; the lane clone/cache is removed on exit and the final service report confirms cleanup. Claim is released when review exits so the next author can pick this up. Do not archive this handoff while the two review findings remain open.

Model usage

Recorded agent work, including concurrent agents

No model usage has been recorded for this handoff yet.

Record work with handoff-cli usage report hf-2026-10-22-finish-exact-head-full-suite-verification-for-urlresolver-long-poll-adoption.

No status reports yet.

Add dependency

Complete this handoff

Moves it out of every priority list and into ArchiveArea.