← Priority list
Blocked

Verify consumer byte-array calls after the UrlProtocol release

Obtain an owner-published UrlProtocol release containing the green RPC 1.0 byte-array fix, then replace or confirm the consumer draft provisional pin and run its unchanged real-service test and required full suite. Upstream checks passed 2846/2846 tests; consumer draft is ready at a96f51be0e455592be7d2b27ad3d8840bafa406c. No merge or publication is authorized for lane s20.

Awaiting owner-published UrlProtocol release containing the verified fix; consumer provisional pin and passing verification remain pending.

Handoff document

Markdown

Handoff: Verify consumer byte-array calls after the UrlProtocol release

Written: 2026-10-21, lane s20.

RE-VERIFY every claim before acting. Query each PR with gh pr view and compare branch heads with git ls-remote. Check Maven metadata and the actual implementation in the released jar. The original broad handoff is completed and historical: url://handoff/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.

Design decisions in force

Lane brief, 2026-10-21: “Do not merge, enqueue or publish.” No deployment is authorized. Preserve all test bodies, assertions, iteration counts and budgets. Required Actions checks: UrlProtocol bld-build and bld-all-tests; UrlResolver bld-build. App checks are informational. Use build-watchman plain mode, never --to-merged.

Continuation, 2026-10-21: “prepare the UrlResolver side as a separate PR: the consumer round-trip test for ByteArray parameters over a 1.0 stream, plus the UrlProtocol pin bump” and “leave it as a draft until that version is published.” Its description must say it waits for the UrlProtocol release containing PR 764: https://github.com/CodexCoder21Organization/UrlProtocol/pull/764.

Mission summary

The user requested real extreme-condition end-to-end tests in UrlResolver that expose bugs before implementation changes, then fixes at the layer that owns each bug. This item concerns ByteArray parameters on a Libp2pRpcStream negotiated to RPC 1.0. Remaining work is an owner-authorized upstream release, replacement or confirmation of the consumer's provisional pin, and passing consumer verification. This lane may prepare but must not merge, enqueue, publish or deploy.

What was found and done

  1. Libp2pRpcStream.sendRequest collected binary attachments unconditionally, while the server selected its JSON-only decoder for negotiated /aicli-rpc/1.0.0. The shared writer forwards encoded bytes without a version downgrade. The legacy server cannot decode the binary references, so the first byte-array call receives Stream closed / EOF. Existing PersistentRpcConnection tests cover another client class and do not refute this defect.
  2. Real-host upstream tests offer only 1.0 or only 1.1 through the existing negotiation API. The identical workload checks 50KB arrays, empty arrays and all byte values in nested containers, nine byte-array calls including concurrent callers, a plain follow-up on the same stream and exact handler count. No parser was substituted, no mocks or reflection used.
  3. Upstream fail-first https://github.com/CodexCoder21Organization/UrlProtocol/actions/runs/39570508553 at 96be821a37a9dbd7c753c53ecdba95617f2be679: 2845/2846 passed; only testLibp2pRpcStreamByteArraysRoundTripOnV10 failed with Stream closed / EOF in 2.049 seconds. V11 control passed in 2.735 seconds. This forces protocol selection deterministically. Closed evidence draft: https://github.com/CodexCoder21Organization/UrlProtocol/pull/761.
  4. Upstream fix selects the attachment collector only for exact 1.1; other versions use the existing Base64 JSON serializer and zero attachments. One version read also selects the existing response-capability flag. No receiver, lifecycle or deadline change. README documents public behavior. Both new tests remain byte-for-byte identical to fail-first evidence.
  5. Consumer reproducer starts an isolated real UrlProtocol2 service, offers only 1.0, sends a 50KB and empty byte array, checks byte-exact results and a plain follow-up on the same open stream, with exact handler count. Evidence run: https://github.com/CodexCoder21Organization/UrlResolver/actions/runs/39570504108 at a8d7ad03e914e269baa9a08785ab24f723f0f0f7; FAILED: 2267/2268 passed; only the new consumer test failed in 2.9 seconds with Stream closed / EOF.
  6. Consumer draft https://github.com/CodexCoder21Organization/UrlResolver/pull/1364 carries the identical test and the production build.kts protocol pin changed from 0.0.1428 to PROVISIONAL 0.0.1430. No existing test file differs from current main. The initial draft briefly edited old test imports instead; those edits were fully restored before the final head. README already links UrlProtocol generically and needs no change for this draft.
  7. Metadata at 09:38 UTC reports 0.0.1429 latest/release. The 0.0.1430 POM returns HTTP 404. The provisional pin is not an assigned release and must never be assumed to contain the fix. Replace or confirm it against the actual owner-published fixed version and inspect the jar before readiness. Nothing was published by this effort.
  8. Fixed-head runner suite https://github.com/CodexCoder21Organization/UrlProtocol/actions/runs/39577640830 completed SUCCESS at 10:42:31 UTC: 2846/2846 passed. The unchanged V10 test passed in 4.392 seconds and V11 control in 5.368 seconds. Actual job logs confirm scripts/test.bash --local-and-remote --test . --log test_log_file.xml. Required build also passed via racing build and kompile-cli 0.0.124.
  9. Separate test-comprehensiveness and code-review passes found no gaps: real isolated dependencies, actual decoder selection, exact bytes, nested values, concurrent calls, stream continuation, cleanup and the production-only dependency change. Full passing consumer verification remains release-dependent.

Invariants

Resource Creator / owner / closer Terminal state Contract Public test
Negotiated stream real hosts / Libp2pRpcStream / use and host finally closed encoding uses only negotiated features real V10 and V11 round-trip tests
Request bytes/frame caller input / encoder / completion response or error exact bytes and shared framing nested empty and nonempty arrays, concurrent calls, follow-up
Server/handler factory or UrlProtocol2 / test / finally stopped valid request reaches handler once; shared stream stays usable exact count and open-stream probe

Relevant PRs and refs

Repo Branch Verified remote SHA PR Contents State
UrlProtocol https://github.com/CodexCoder21Organization/UrlProtocol/tree/wip/s20-failfirst 96be821a37a9dbd7c753c53ecdba95617f2be679 https://github.com/CodexCoder21Organization/UrlProtocol/pull/761 tests only closed evidence, one intended failure
UrlProtocol https://github.com/CodexCoder21Organization/UrlProtocol/tree/fix/s20-v10-bytearray 3c580da8c0a16e9f98707bf52b1def392993c042 https://github.com/CodexCoder21Organization/UrlProtocol/pull/764 tests and serializer fix OPEN; build success, full suite SUCCESS at 10:42:31 UTC; 2846/2846 tests passed
UrlResolver https://github.com/CodexCoder21Organization/UrlResolver/tree/wip/s20-failfirst a8d7ad03e914e269baa9a08785ab24f723f0f0f7 https://github.com/CodexCoder21Organization/UrlResolver/pull/1361 consumer test only closed evidence, exactly the intended failure
UrlResolver https://github.com/CodexCoder21Organization/UrlResolver/tree/fix/s20-v10-bytearray-consumer a96f51be0e455592be7d2b27ad3d8840bafa406c https://github.com/CodexCoder21Organization/UrlResolver/pull/1364 identical test and provisional pin OPEN DRAFT, release-dependent

All SHAs verified with git ls-remote. No code exists only locally. Nothing was merged, enqueued, deployed or published. No production mutation command was issued. Build outputs/caches are deliberately excluded; GitHub run logs preserve runtime evidence.

Fixed upstream runs: https://github.com/CodexCoder21Organization/UrlProtocol/actions/runs/39577640762 (bld-build success), https://github.com/CodexCoder21Organization/UrlProtocol/actions/runs/39577640830 (bld-all-tests SUCCESS, 2846/2846 passed). Consumer draft run: https://github.com/CodexCoder21Organization/UrlResolver/actions/runs/39579867362 was canceled during build while its provisional artifact remains unpublished. No passing consumer verification is claimed; run it after the actual release exists.

Next steps

  1. Re-verify live PR, branch and release state first. Read https://github.com/CodexCoder21Organization/DocumentationRepository/blob/main/architecture/TESTING.md and https://github.com/CodexCoder21Organization/DocumentationRepository/blob/main/PHILOSOPHY.md before test edits. Current CI procedure overrides TESTING's legacy unconditional App-check rule: https://my.externalbrain.wasmserver.com/doc/github-builders-racing-remote-ci.md.
  2. Obtain owner authorization for upstream merge/publication; this lane grants none. Publish a release containing the exact upstream fix only under that authorization.
  3. Verify the released implementation selects request encoding by negotiated version. Replace or confirm the provisional consumer production pin with the verified version, rebase on latest main, run the unchanged consumer reproducer and required full suite, and review the final head. Keep draft until the release exists and checks pass.
  4. Preserve bodies, assertions, iterations and budgets. Leave merges to owner authorization.

Operational knowledge

Watch with ~/bin/coursier launch buildwatchman:build-watchman:0.0.21 -r https://kotlin.directory -- --repo <org/repo> --pr <number> --idle-timeout-minutes 120 as a tracked task in plain mode. Do not re-request informational App suites. GitHub core quota was exhausted 09:35–09:40:56 UTC, then recovered; GraphQL PR views and Git transfers remained available.

The brief explicitly overrides local-first testing on this shared machine with GitHub runner local-and-remote racing checks. Do not diagnose by blind CI reruns. Demonstrate any unexpected required-check failure on exact main before calling it unrelated. The original broad handoff is completed; do not reclaim or rewrite it for this narrower item.

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-21-finish-rpc-1-0-byte-array-release-and-consumer-verification.

No status reports yet.

Add dependency

Complete this handoff

Moves it out of every priority list and into ArchiveArea.