Files
amethyst/nestsClient
Claude c79a3ffa87 feat(nests): T16 Phase 4.C+D — I15 ALPN scenario + CI workflow + results doc
Phase 4.C: adds `chromium_round_trips_a_moq_lite_session`, the I15
WT-Protocol scenario from the parent plan. Asserts that whatever
moq-lite-* version the relay negotiates over Chromium's WebTransport
ALPN list survives the round-trip on `Connection.version`. Loosened
from the spec's exact `moq-lite-03` pin because moq-relay 0.10.x in
this build advertises the legacy `moql` ALPN and SETUP-negotiates
DRAFT_02; the prefix check still catches a regression that breaks
moq-lite negotiation entirely or downgrades to a non-lite version.
The remaining 4.C scenarios (I2/I3/I4/I13/I14) are deferred —
the browser path's Chromium boot lag truncates the capture window
to the broadcast tail, which collapses I2/I3 into the same shape
as I1; I4-reverse / I14 need the publish.ts pump fully validated.
See the results doc for the deviation list.

Phase 4.D: adds a `browser-interop` GitHub Actions job parallel to
`hang-interop`. Reuses the cargo cache (the harness boots the same
moq-relay) and adds bun + node_modules + Playwright browser caches
keyed on package.json + bun.lock so warm runs are near-zero. Linux-
only matrix per the parent plan.

Results plan documents what landed, the 4 deviations from the spec
(API surface, cert pinning, sample-count tolerance, deferred 4.C
scenarios), and follow-ups for the next phase.

Verification:
- `./gradlew :nestsClient:jvmTest --tests
   com.vitorpamplona.nestsclient.interop.native.BrowserInteropTest
   -DnestsHangInterop=true -DnestsBrowserInterop=true` green
   (both tests pass).
- HangInteropTest scenarios remain green when the browser flag
  is off.

See: nestsClient/plans/2026-05-06-phase4-browser-harness-results.md

https://claude.ai/code/session_01ERJPUYfdLPwZ99pr5EcEcV
2026-05-07 00:52:41 +00:00
..