Handoff: Finish UrlProtocol 0.0.1431 consumer verification and CI failure attribution
Written: 2026-10-22 07:08 UTC.
RE-VERIFY: This is a snapshot. Check both linked PRs with gh pr view <url> --json state,headRefOid,statusCheckRollup,mergedAt, check all named Actions runs, and verify branch heads with git ls-remote before acting.
Design decisions in force
The 2026-10-22 publication brief explicitly grants publishing the UrlProtocol Maven artifact by name, says “No deploys”, and says “Do not merge or enqueue.” Those limits remain in force. It asks for focused verification on GitHub runners and full required-check confirmation, with failures attributed against main. Never increase timeouts, reduce iterations, disable a test, weaken an assertion, or guess at a production fix without a reliable reproducer. The original brief says “Time box 2 h.” Publication of 0.0.1431 is complete and must not be repeated or overwritten; a later necessary source fix would require its own new release after the required review.
Mission summary
The brief requested publication of UrlProtocol main at/after e0e97dfb3b4b080077420382b5b7e02b47fe11ac, then a fresh-main UrlResolver pin-bump PR. The release must contain the merged long-poll and relay fixes from https://github.com/CodexCoder21Organization/UrlProtocol/pull/772, https://github.com/CodexCoder21Organization/UrlProtocol/pull/808 and https://github.com/CodexCoder21Organization/UrlProtocol/pull/699. This supplies the dependency needed by https://github.com/CodexCoder21Organization/UrlResolver/pull/1163 and supersedes the 0.0.1430 pin on https://github.com/CodexCoder21Organization/UrlResolver/pull/1364. The four allowance tests on the former PR were not claimed as verified here; they live on its separate branch.
Publication and pin updates are complete. Remaining work is full confirmation of the corrected resolver head and proper attribution/repair of outstanding test failures. The older broad context handoff (https://www.handoff.wasmserver.com/handoffs/hf-2026-10-14-land-the-urlresolver-extreme-condition-bug-fixes-fix-the-two-merge-queue-flakes-then-merge-the-reviewed-prs-and-finish-the-rest) was already archived when read; this record covers the new release verification rather than reopening that completed snapshot.
What was found and done
- UrlProtocol main was e0e97dfb3b4b080077420382b5b7e02b47fe11ac, declaring 0.0.1429. The live Maven endpoint reported latest 0.0.1430, so 0.0.1431 was selected. Local
scripts/build.bash --local foundation.url.protocol.buildMaven /tmp/s81-protocol-maven succeeded. Publisher CLI 0.0.6 with --artifact-dir and the HTTP API exited 0. Coursier fetched POM and JAR from kotlin.directory; both match the build output. The downloaded JAR contains foundation/url/protocol/LongPollRpcRequestHandler.class.
- Published JAR SHA-256 is
4259816acfa12671d50ddebd7c8d04158624b1f8099f676e92303c3f1c030ff8; POM SHA-256 is a79d63bae9f36a135b9b073c8fd572fa0fe23a03ee34d7dcc4cfb7aaa1497585. The live POM returned HTTP 200 and JAR checksum matched again at 06:52 UTC.
- UrlResolver main was 762720922485c932894be30fe507e497fdc925b0. All active protocol pins were updated: build.kts, README and 2,257 test declarations. One declaration had
doNotUpgrade=true at 0.0.524; its flag is retained while its explicit coordinate moves to 0.0.1431. It is a real interleaved-host test, not a prior-version-only contract, and passed full verification. An initial claim that no such flag existed was corrected in findings and PR text. Historical version comments remain historical.
- Initial focused proof https://github.com/CodexCoder21Organization/UrlResolver/actions/runs/39727076333 passed 13/13 tests with no failed-attempt histories. Full run https://github.com/CodexCoder21Organization/UrlResolver/actions/runs/39727154742 passed 17/17 build rules and 2,390/2,391 final tests. Its consistent failure was
testRelayBackedLongMaxRequestUsesFallbackAfterClockAdvances (3/3), because the fixture leaves ManualClock at 1 ms but the newly adopted relay wait correctly uses that clock. The old test waited for wall time instead. Unchanged-main comparison https://github.com/CodexCoder21Organization/UrlResolver/actions/runs/39733699249 passed that scenario.
- The corrected fixture observes the exact 251 ms deadline through public Clock.schedule, retains the initial clock=1 assertion before advancing the unchanged 250 ms fallback, verifies no completion before expiry, then advances the clock. It retains full error text, one dispatch/no replay, caller clock-read count and all original wall-clock guards. Proof https://github.com/CodexCoder21Organization/UrlResolver/actions/runs/39734387175 passed four scenarios plus eight extra clock repetitions, all with zero failed-attempt histories. Control https://github.com/CodexCoder21Organization/UrlResolver/actions/runs/39734391490 restores only the original faulty remaining-time classification of
isUnbounded; the strengthened fallback-deadline assertion fails 3/3. Dedicated test and code review passes found no gaps. The verified correction is now on the PR at e64d90fc75dbb8f04cc429aef20bada4209dc38b, rebased on unchanged main. Full confirmation is https://github.com/CodexCoder21Organization/UrlResolver/actions/runs/39735743728, still pending at 07:07 UTC; build passed and tests started.
- Two resolver tests passed only after one failed attempt in the initial full run:
testPreInterruptedTimedPeerControllerKeepsSharedConnection (handshake deadline) and testPersistentRelayReplyLossLogsSelectedRecord (response timeout instead of controlled shutdown). Neither reproduced in an exact-main full run or 20 fixed comparison trials (40 clean test records) at https://github.com/CodexCoder21Organization/UrlResolver/actions/runs/39734512291. These remain UNATTRIBUTED. Clean comparisons do not prove the failures unrelated.
- Release metadata full test run https://github.com/CodexCoder21Organization/UrlProtocol/actions/runs/39726872717 passed 3,124/3,126 final tests, with two final failures, each 3/3:
testWriteStuckConnectionRecoveredJustBeforeGraceIsNotRetired (partial response stream closes) and testForwardedReplyStreamsBeyondReceiverHeap (identity-publication/executor cleanup failure). Hidden histories also occurred in testF671hAbandonedRequestStreamsReleaseTheirReplies and testRelayedLargeAnswersWaitForOutboxSpace. Exact-main full run https://github.com/CodexCoder21Organization/UrlProtocol/actions/runs/39726416306 has failed attempts in the latter large-answer test. Exact-main focused comparison https://github.com/CodexCoder21Organization/UrlProtocol/actions/runs/39735228282 reproduces the WriteStuck failure 3/3 with matching partial-frame errors; this is PROVEN ON MAIN. It passes ForwardedReply and F671h once each, so those remain UNATTRIBUTED. Three fixed further main comparisons at https://github.com/CodexCoder21Organization/UrlProtocol/actions/runs/39736202134 produced six clean final passing records with no attempt histories. They did not reproduce those two release histories; both remain UNATTRIBUTED. Their three XML files are preserved in the evidence branch.
At 07:03 UTC protocol main advanced to 50a481caa2b27d3883c3c9f6808d81ac3acb04b9 through https://github.com/CodexCoder21Organization/UrlProtocol/pull/818. Only the unrelated ClosingLongPollRefusals test changed from the publication base; production and build coordinate are unchanged. The artifact implementation still matches current main. Rebase the metadata branch before any future build/update rather than assuming its original base is latest. Resolver main remains 762720922485c932894be30fe507e497fdc925b0.
Relevant PRs / refs
- https://github.com/CodexCoder21Organization/UrlResolver/pull/1424 — OPEN at e64d90fc75dbb8f04cc429aef20bada4209dc38b; corrected-head bld-build pending, build step passed.
- https://github.com/CodexCoder21Organization/UrlProtocol/pull/825 — OPEN at 775268c6de71fb3116db019b202ae1e261c28271; bld-build passed, bld-all-tests red as detailed above.
<!-- begin refs -->
| Repo |
Branch |
Remote head SHA |
PR |
What is on it |
State |
| UrlProtocol |
release/s81-urlprotocol-1431 |
775268c6de71fb3116db019b202ae1e261c28271 |
https://github.com/CodexCoder21Organization/UrlProtocol/pull/825 |
Coordinate metadata for published artifact |
Build pass; full tests red; main WriteStuck failure demonstrated |
| UrlProtocol |
wip/s81-protocol-main-control |
000681638c7a8a5cace1b55472eb54ba1b205b39 |
no PR |
Three exact-main attribution cases |
WriteStuck fails 3/3; two other cases pass once |
| UrlProtocol |
wip/s81-protocol-main-repeat |
13f6316885072475c19d4b5014d3fceab71d70b4 |
no PR |
Three fixed further main trials |
Six passing records, no attempt histories; attribution remains open |
| UrlResolver |
deps/s81-urlprotocol-1431 |
e64d90fc75dbb8f04cc429aef20bada4209dc38b |
https://github.com/CodexCoder21Organization/UrlResolver/pull/1424 |
All active pins and proven clock fixture migration |
Corrected full confirmation pending; focused proofs clean |
| UrlResolver |
wip/s81-artifacts |
303d9832ce3d1375520f959d7ce1c1b82a830361 |
no PR |
All incremental findings, ledgers, raw XML and full stacks |
Evidence only; do not merge |
| UrlResolver |
wip/s81-focused-runner |
bda276cb2b71613333d57f2c3e006172c5dfb902 |
no PR |
Original dependency-adoption focused workflow |
13/13 clean; source superseded only by clock correction |
| UrlResolver |
wip/s81-clock-fixture |
2bfc061cda504560d7f31683fda900189013430f |
no PR |
Verified clock correction plus focused workflow |
4 selected passes plus 8 extra clock passes; integrated source on PR |
| UrlResolver |
wip/s81-clock-negative |
89919a9bfe774fede98a7cd691d4fe5c87903cf2 |
no PR |
Old budget classification restored only for proof |
Expected assertion fails 3/3; evidence only, never merge |
| UrlResolver |
wip/s81-main-control |
d999c07b46954ae6c3c0eb8e0923162fcc811cea |
no PR |
First three-scenario unchanged-main comparison |
3/3 pass; source untouched |
| UrlResolver |
wip/s81-main-history |
390bfcd0736c20c82ac1c856162c304e94ef540b |
no PR |
Twenty fixed unchanged-main comparison trials |
40 clean passes; two original histories still unattributed |
<!-- end refs -->
Published but not merged
foundation.url:protocol:0.0.1431 is live at https://kotlin.directory/foundation/url/protocol/0.0.1431/ . It was built from 775268c6de71fb3116db019b202ae1e261c28271: main implementation e0e97dfb3b4b080077420382b5b7e02b47fe11ac plus only the coordinate update. The implementation is on main; the release-coordinate change is unmerged in https://github.com/CodexCoder21Organization/UrlProtocol/pull/825. Reconcile the coordinate through normal review after CI failures are addressed; do not republish or overwrite 0.0.1431. Nothing was deployed, merged or enqueued. No resolver artifact was published.
Next steps
- Re-verify live PR heads/checks, Actions runs and branch refs. Do not restart work from a stale status paragraph.
- Own a plain build-watchman watch on the corrected resolver PR, using
~/bin/coursier launch buildwatchman:build-watchman:0.0.21 -r https://kotlin.directory -- --repo CodexCoder21Organization/UrlResolver --pr 1424 --idle-timeout-minutes 120. Never use --to-merged. On completion, download test-attempt-records and audit every failed attempt, not only final statuses.
- Read the preserved protocol three-trial main comparison records under
protocol-main-repeat/. They are clean, so they do not establish unrelatedness. Continue a reliable public-API reproducer for the unresolved cases rather than using another blind full-suite rerun. The already demonstrated WriteStuck main defect must not be called fixed by this metadata release.
- Investigate remaining failures at their owning layer with reliable public-API reproducers. No guessed timeout, resource or assertion changes. The two intermittent resolver histories have not been shown on main despite clean comparisons; do not label them unrelated. The cleanup and F671h protocol histories likewise need observed evidence or a source-level explanation supported by a reproducer.
- Keep PR descriptions/finding records current, obtain required green checks or report proven main failures accurately. No merge, enqueue or deployment is authorized by this handoff.
Reusable / operational knowledge
- Read https://github.com/CodexCoder21Organization/DocumentationRepository/blob/main/architecture/TESTING.md and https://github.com/CodexCoder21Organization/DocumentationRepository/blob/main/PHILOSOPHY.md before changing tests. Current CI procedure is https://my.externalbrain.wasmserver.com/doc/github-builders-racing-remote-ci.md . It supersedes the stale kotlin-ci-setup skill's remote-only guidance. Required gates: resolver=bld-build; protocol=bld-build and bld-all-tests. App remote checks are informational; do not rerequest them.
- Use fresh clones under workspace/, read README/AGENTS, and use ~/bin/coursier. This box lacks rg; grep was used. The prescribed runner mode is scripts/test.bash --local-and-remote --test <selector>. The box itself is not a reliable full-suite executor.
- The installed gh pr edit fails through obsolete projectCards GraphQL fields. Update bodies with REST PATCH pulls/<id> and JSON via --input instead. Do not expose tokens.
- REST core quota is shared. It reached 0/5000 and reset at 06:42:13 UTC; wait for a reset rather than polling tightly. One gh run watch returned 0 while its last printed state was still active during that exhaustion; verify API state and uploaded records before believing the exit alone.
- All raw proof XML, full failure XML/stack traces, the exhaustive before/after pin ledger and incremental findings live at https://github.com/CodexCoder21Organization/UrlResolver/tree/wip/s81-artifacts/handoff-evidence/s81 . No build outputs or dependency caches are intentionally retained there. The local JAR/output/cache can be deleted after publication verification; immutable Maven URLs and checksums preserve the release proof.
- No local source, stash or unpushed branch was left at the 06:51 sweep. Refresh this fact and the branch table before handover. Remote Actions may continue; local watchers must be stopped before the final message.
Final local housekeeping: all owned monitor processes were stopped and both disposable checkouts/build caches were removed before the final message. The remote corrected-head Actions run continues; the next session must establish its own watcher. No source, stash or unpublished branch is left only on this machine.