Handoff: Authorize upstream admission work and cancellation-contract changes for UrlResolver
Written 2026-10-21 10:57 UTC. RE-VERIFY: This is a snapshot; inspect https://github.com/CodexCoder21Organization/UrlResolver/pull/1163 and its latest checks before acting. This handoff tracks a needed owner decision only; no merge, publication or deployment is authorized.
Design decisions in force
2026-10-21 lane brief: “Do NOT publish Maven artifacts or deploy anything unless your brief grants it by name.” “NEVER weaken an assertion”. “Do not merge or enqueue.” These requirements remain in force.
Mission and decision
The requested handler review fixes are pushed at49a9680f9de8761835daef1909eb829b371b045e. Handler-focused tests pass35/35, but current UrlProtocol0.0.1428 acquires a process-wide64-request permit before reaching the handler and holds it while the handler suspends. Four transport-starvation tests also fail unchanged main: https://github.com/CodexCoder21Organization/UrlResolver/actions/runs/39585071554 . Source acquisition: https://github.com/CodexCoder21Organization/UrlProtocol/blob/dd51daccd1dc738883d1febb07a64f5936b4fb84/src/foundation/url/protocol/Libp2pHostFactory.kt#L8152 . The published0.0.1421 did not have this permit; current main adopted0.0.1428.
Decision needed: authorize an upstream UrlProtocol fix, its required artifact publication, and the downstream dependency update, plus the existing cancellation-test contract corrections required by chosen run-to-completion? Recommended: authorize that work while keeping merge/deploy prohibited. Alternative: leave the scoped handler fixes reviewable with red full CI and explicitly incomplete R1/P2. Raising64 or downgrading the dependency is not an acceptable fix. No existing immediate-interruption assertion has been changed. Those12 tests pass main; several conflict with run-to-completion, while retained accepted-result and final-handoff ownership need real fixes.
Relevant PRs / refs
| Repo |
Branch |
Remote head SHA |
PR |
What is on it |
State |
| UrlResolver |
wip/s24-1163 |
49a9680f9de8761835daef1909eb829b371b045e |
https://github.com/CodexCoder21Organization/UrlResolver/pull/1163 |
handler fixes |
OPEN, full CI still running at write time |
| UrlResolver |
wip/s24-artifacts |
2b18683d1de0652cb185356d9890e0bcf97b987f |
no PR |
full logs/XML/findings |
pushed, evidence only |
Next steps
- Re-verify current state first. Obtain explicit owner answer to the question above.
- Record answer here and in the implementation handoff. Complete this decision handoff once the owner answers; the implementation handoff remains open until its own acceptance conditions are met.
- Do not publish or weaken any old assertion based on elapsed time or lack of an answer.
No production code was deployed, published, merged or enqueued in this lane. Verified from the mutation/action record: git pushes, PR updates and evidence-draft closure only. Relevant existing artifacts were inspected read-only, no publication command run.
Decision resolved, 2026-10-21 12:27 UTC
The S32 continuation brief explicitly authorizes rewriting departure tests, assigns the upstream permit work separately and requires ownership fixes here. No owner answer is pending. The implementation remains tracked in url://handoff/handoffs/hf-2026-10-21-finish-urlresolver-handler-fixes-by-resolving-upstream-admission-and-cancellation-contracts .
A. Cancellation-contract tests — AUTHORIZED. The user decided "run to completion" (Option A): when a caller cancels or goes away (disconnect, losing a direct-vs-relay race, coroutine cancellation by the client — the server cannot tell these apart), the server frees the slot, lets the handler finish and discards its result; it does not interrupt the handler. Only a caller interrupting its OWN thread keeps main's behaviour. Existing tests that assert the old interrupt-on-departure behaviour (the six EffectResponseCloseWith* variants, EffectAwareCoroutineCancellationInterruptsDelegate, ResolverCloseJoinsActiveEffectCompletion, both NonNatRace* cancellation tests, and any others the full suite shows) are to be REWRITTEN to assert the new contract: handler not interrupted, runs to completion (bounded by the 30 s deadline), result discarded, slot released, caller gets its cancellation outcome. Never delete or disable a test. For each edited test list before/after and why, and show the rewritten test fails on a build that interrupts on departure (or leaks the slot). Tests whose purpose is unrelated to departure-interruption must keep their assertions.
B. Upstream permit — handled separately: a UrlProtocol lane is fixing the process-wide 64-request permit held across suspended handlers (Libp2pHostFactory). Do NOT work around it in UrlResolver. 1163's end-to-end starvation tests (P2) will pass only after that UrlProtocol release and the pin bump; leave them in place, and state in the PR description that P2's end-to-end check depends on that release.
C. Inherited ownership bug — fix it here: testEffectAwareCancellationAfterNextEffectSignalReclaimsSession ("Cancellation left the next request effect waiting") fails on main too. Find the mechanism and fix it with that test as the reproducer.
D. "Accepted-result and final-handoff ownership" — the previous lane flagged these as unresolved. State precisely who owns an accepted result and its final delivery at each step; any path where a result or session can be left waiting or released twice is a defect to fix with a failing-first test.