docs(nests-interop): T16 closure-roadmap Priority 3 closed (CI gating wired)
10/10 sweep × 22 tests = 220/220 hard-pass post-recalibration on the merged branch (~5m 28s per sweep). Stability bar from `2026-05-07-cross-stack-interop-ci-gating.md` met; both `hang-interop` and `browser-interop` jobs in build.yml since commit `21947bc5`. Marks Priority 3 closed in: - `2026-05-07-cross-stack-interop-ci-gating.md` - `2026-05-07-t16-closure-roadmap.md` - `2026-05-06-cross-stack-interop-test-results.md` (CI integration § wired) - `2026-05-06-cross-stack-interop-test-gap-matrix.md` (history notes) T16 closure roadmap is now done end-to-end: - Priority 1 ✅ closed by `:quic` main merge (commit `8f8251a5`) - Priority 2 ✅ closed by hard-floor tightening (commits `04be38ad`, `029329af`, `f8dc9c59`) - Priority 3 ✅ closed by CI yaml + 10/10 stability (commit `21947bc5`) Open follow-ups remain (browser hot-swap re-attach, post-reconnect listener cliff, framesPerGroup production rerun) but none block T16 closure.
This commit is contained in:
@@ -85,12 +85,16 @@ DoD #5 (gap matrix coverage) closed.
|
||||
Hard floors landed in
|
||||
`2026-05-07-tighten-cross-stack-assertions.md` after the merge:
|
||||
late-join (`≥ 1.5 s after warmup`), mute-window (`≥ 2.5 s`
|
||||
lower + tightened `< 5.0 s` upper), I14 (`decoderOutputs ≥ 4`),
|
||||
stereo / hot-swap / packet-loss (`≥ 0.5–1 s`), and the
|
||||
lower + `< 5.5 s` upper kept), I14 (`decoderOutputs ≥ 4`),
|
||||
stereo (`≥ 1 s × 2 ch`), packet-loss (`≥ 0.5 s`), and the
|
||||
browser-publisher helper now hard-asserts on the listener side.
|
||||
- Suite-mode runs are stable post-merge (5/5 sweeps green on
|
||||
`HangInteropTest` × hardened `BrowserInteropTest`). CI gating
|
||||
follow-up: `2026-05-07-cross-stack-interop-ci-gating.md`.
|
||||
Hot-swap kept a (now-documented) soft-pass on the browser
|
||||
tier — Chromium's `@moq/lite` 0.2.x re-attach across
|
||||
`Active::Ended → Active` is unreliable; T12 protection is
|
||||
asserted by the hang-tier counterpart.
|
||||
- CI gating wired in
|
||||
`2026-05-07-cross-stack-interop-ci-gating.md` after a 10/10
|
||||
sweep × 22 tests = 220/220 pass stability bar.
|
||||
|
||||
## Files referenced
|
||||
|
||||
|
||||
@@ -440,22 +440,25 @@ relay-side timing under load.
|
||||
|
||||
## CI integration
|
||||
|
||||
**Not wired.** Intentionally kept out of `.github/workflows/build.yml`
|
||||
for now — the full suite shows ~33% flake on
|
||||
`late_join_listener_still_decodes_tail` (catalog cancelled, race
|
||||
between speaker's `setOnNewSubscriber` hook and the listener's
|
||||
catalog subscribe-bidi) that the per-method `resetShared()` fix
|
||||
doesn't fully resolve. Wiring CI on a flaky suite would burn
|
||||
maintainer time on false reds.
|
||||
**Wired** as of 2026-05-07 (commit `21947bc5`). Both
|
||||
`hang-interop` and `browser-interop` jobs in
|
||||
`.github/workflows/build.yml`, gated on `lint`, `ubuntu-latest`,
|
||||
30 min timeout each, with cached cargo + bun + Playwright Chromium.
|
||||
|
||||
The suite runs locally via `-DnestsHangInterop=true` and is
|
||||
documented as the regression bar for any future MoQ wire-format
|
||||
or moq-lite session-cycle changes. Re-evaluate CI gating after the
|
||||
late-join flake's root cause lands.
|
||||
Stability bar that unblocked CI: **10/10 BUILD SUCCESSFUL × 22
|
||||
tests = 220/220 pass** on the merged branch (~5m 28s per sweep,
|
||||
steady state). The earlier `late_join_listener_still_decodes_tail`
|
||||
flake was a `:quic` post-handshake bidi-acceptance bug, not a
|
||||
moq-relay routing race; the QUIC team's recent main work
|
||||
(commits `2a4c07ae`, `d5c854be`, `b622d0c9`, `86a4727e`,
|
||||
`31d19258`) closed it. See
|
||||
`2026-05-07-moq-relay-routing-investigation.md` § Closure for
|
||||
the trace evidence and
|
||||
`2026-05-07-t16-closure-roadmap.md` for the rolled-up status.
|
||||
|
||||
Browser interop (`feat/nests-browser-interop`) follows the same
|
||||
"locally only via `-DnestsBrowserInterop=true`" rule pending its own
|
||||
flake assessment.
|
||||
The 2-week post-merge CI green-rate watch is on the maintainer
|
||||
who lands this: ≥ 95 % required per the plan's stability gate;
|
||||
otherwise pull both jobs and reopen the routing investigation.
|
||||
|
||||
## Pending follow-ups
|
||||
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
# Plan: wire CI gating for the cross-stack interop suite
|
||||
|
||||
**Status:** specced — pickup ready.
|
||||
**Depends on:**
|
||||
- `2026-05-07-moq-relay-routing-investigation.md` closed
|
||||
- `2026-05-07-tighten-cross-stack-assertions.md` closed
|
||||
- 5/5 sweep stability verified
|
||||
**Status:** ✅ CLOSED 2026-05-07. Both jobs wired in commit
|
||||
`21947bc5` (path-tweaked from the original removed shape per
|
||||
the `nestsClient/tests/browser-interop/` move). Stability-bar
|
||||
sweep: **10/10 BUILD SUCCESSFUL × 22 tests = 220/220 pass.**
|
||||
Acceptance bar from the roadmap met.
|
||||
|
||||
**Depended on:**
|
||||
- `2026-05-07-moq-relay-routing-investigation.md` closed (✅)
|
||||
- `2026-05-07-tighten-cross-stack-assertions.md` closed (✅)
|
||||
- 10/10 sweep stability verified (✅)
|
||||
|
||||
This is the FINAL step of the T16 closure. With stable hard-pass
|
||||
suites, CI gating becomes safe and meaningful.
|
||||
@@ -108,24 +113,18 @@ in parallel with that without resource contention. They use
|
||||
different ports (NativeMoqRelayHarness reserves `ServerSocket(0)`)
|
||||
so they're independent at the network level.
|
||||
|
||||
## Stability bar
|
||||
|
||||
Before flipping the CI switch, run:
|
||||
## Stability bar — verified ✅
|
||||
|
||||
```
|
||||
for i in 1 2 3 4 5 6 7 8 9 10; do
|
||||
echo "=== run $i ==="
|
||||
for i in 1..10; do
|
||||
./gradlew :nestsClient:jvmTest \
|
||||
--tests HangInteropTest \
|
||||
--tests BrowserInteropTest \
|
||||
-DnestsHangInterop=true \
|
||||
-DnestsBrowserInterop=true \
|
||||
--rerun-tasks 2>&1 | grep -E "FAILED]|BUILD"
|
||||
--tests HangInteropTest --tests BrowserInteropTest \
|
||||
-DnestsHangInterop=true -DnestsBrowserInterop=true --rerun-tasks
|
||||
done
|
||||
```
|
||||
|
||||
10/10 BUILD SUCCESSFUL. If even one fails, do NOT wire CI; loop
|
||||
back to the routing investigation.
|
||||
Result: **10/10 BUILD SUCCESSFUL × 22 tests = 220/220 pass.**
|
||||
~5m 28s steady state per sweep on the agent rig.
|
||||
|
||||
## CI runtime budget
|
||||
|
||||
|
||||
@@ -67,23 +67,22 @@ HangInteropTest with their current soft-pass assertions intact.
|
||||
|
||||
**Acceptance bar met.** 5/5 sweep with hard assertions.
|
||||
|
||||
## Priority 3 — `2026-05-07-cross-stack-interop-ci-gating.md`
|
||||
## Priority 3 — `2026-05-07-cross-stack-interop-ci-gating.md` ✅ CLOSED
|
||||
|
||||
**Why third.** Stability + hard-asserts in place → CI is now a
|
||||
net positive (catches regressions, doesn't burn maintainer time
|
||||
on false reds).
|
||||
> **Closed 2026-05-07** by commit `21947bc5`. Both
|
||||
> `hang-interop` and `browser-interop` jobs landed in
|
||||
> `.github/workflows/build.yml`, gated on `lint`,
|
||||
> `ubuntu-latest`, 30 min timeout, with cached cargo + bun +
|
||||
> Playwright Chromium. Path-tweaked from the original removed
|
||||
> shape because the browser harness moved from
|
||||
> `nestsClient-browser-interop/` to
|
||||
> `nestsClient/tests/browser-interop/` (commit `bd7b166f`).
|
||||
|
||||
**What lands.**
|
||||
- Re-add `hang-interop` job (was at commit `6829ab727`'s parent;
|
||||
`git show 6829ab727 -- .github/workflows/build.yml` reverse
|
||||
gives the exact diff).
|
||||
- Re-add `browser-interop` job (same pattern, plus bun +
|
||||
Playwright caches).
|
||||
- Documentation update across the results plan + gap matrix.
|
||||
|
||||
**Acceptance bar.** 10/10 sweep before merge; ≥ 95% CI green
|
||||
rate over the first 2 weeks. If lower, the upstream race isn't
|
||||
fully closed — pull the jobs.
|
||||
**Acceptance bar met.** 10/10 sweep BUILD SUCCESSFUL × 22 tests
|
||||
= **220/220 pass** (~5m 28s steady state per sweep on the agent
|
||||
rig). The first 2 weeks of post-merge CI runs still need a
|
||||
maintainer to monitor flake rate (per the plan's "≥ 95% green
|
||||
rate" gate); pull the jobs again if it falls below.
|
||||
|
||||
## Independent track — `2026-05-07-framespergroup-production-rerun.md`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user