ci(nests): drop hang-interop job from build.yml
Per maintainer ask: keep the cross-stack interop suite out of CI for now. The full HangInteropTest suite shows ~33% flake on late_join_listener_still_decodes_tail (catalog-cancelled race between the speaker's setOnNewSubscriber hook and the listener's catalog subscribe-bidi) that the per-method resetShared() fix doesn't fully resolve. CI'ing a flaky suite is net-negative. Suite still runs locally via -DnestsHangInterop=true. Results plan updated to reflect the 'not wired' status with a re-evaluation trigger (root-cause the late-join flake first).
This commit is contained in:
@@ -174,71 +174,6 @@ jobs:
|
||||
name: ${{ matrix.desktop-artifact-name }}
|
||||
path: ${{ matrix.desktop-artifact-path }}
|
||||
|
||||
# Cross-stack interop tests (T16). Builds the Rust hang-listen +
|
||||
# hang-publish sidecars (nestsClient/tests/hang-interop/), `cargo install`s
|
||||
# moq-relay + moq-token-cli at the version pinned in
|
||||
# `nestsClient/tests/hang-interop/REV`, then runs `:nestsClient:jvmTest
|
||||
# -DnestsHangInterop=true`. See
|
||||
# `nestsClient/plans/2026-05-06-cross-stack-interop-test.md`.
|
||||
#
|
||||
# Linux-only: the cargo install of `moq-relay` 0.10.x has nontrivial
|
||||
# native deps (aws-lc-sys, ring) that take 5+ min cold; we cache
|
||||
# both ~/.cargo and the nestsClient/tests/hang-interop/target tree so the warm
|
||||
# path is a few seconds. macOS / Windows runs would double the
|
||||
# matrix cost without catching anything Linux doesn't catch — the
|
||||
# protocol logic is platform-agnostic and the JNA libopus natives
|
||||
# are already exercised by the unit-level JvmOpusRoundTripTest on
|
||||
# the Android job.
|
||||
hang-interop:
|
||||
needs: lint
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 30
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Set up JDK 21
|
||||
uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: 'zulu'
|
||||
java-version: 21
|
||||
|
||||
- name: Set up Gradle
|
||||
uses: gradle/actions/setup-gradle@v4
|
||||
with:
|
||||
cache-read-only: ${{ github.ref != 'refs/heads/main' }}
|
||||
|
||||
# Pin Rust to ≥ 1.95 — moq-relay 0.10.25's transitive dep
|
||||
# `constant_time_eq 0.4.3` requires it, and ubuntu-latest's
|
||||
# default Rust version drifts.
|
||||
- name: Set up Rust
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
|
||||
# Cache cargo registry + the sidecar workspace's target/.
|
||||
# First cold run takes ~6 min for the moq-relay install;
|
||||
# cached runs ~30 s.
|
||||
- name: Cache cargo
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/.cargo/registry
|
||||
~/.cargo/git
|
||||
nestsClient/tests/hang-interop/target
|
||||
~/.cache/amethyst-nests-interop/hang-interop-cargo
|
||||
key: ${{ runner.os }}-cargo-${{ hashFiles('nestsClient/tests/hang-interop/Cargo.lock', 'nestsClient/tests/hang-interop/REV') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-cargo-
|
||||
|
||||
- name: Run cross-stack interop suite
|
||||
run: ./gradlew :nestsClient:jvmTest -DnestsHangInterop=true
|
||||
|
||||
- name: Upload interop test report
|
||||
uses: actions/upload-artifact@v7
|
||||
if: failure()
|
||||
with:
|
||||
name: Hang Interop Test Reports
|
||||
path: nestsClient/build/reports/tests/jvmTest/
|
||||
|
||||
test-and-build-android:
|
||||
needs: lint
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
|
||||
**Status:** Phases 1–3 (and Phase 2.E follow-ups) landed. Phase 4 (browser
|
||||
harness) and Phase 5 (browser-only scenarios) are running in parallel
|
||||
agent branches; not yet merged. CI gating (the `hang-interop` job in
|
||||
`.github/workflows/build.yml`) is live and Linux-only.
|
||||
agent branches; not yet merged. **CI gating intentionally NOT wired** —
|
||||
the suite runs locally only via `-DnestsHangInterop=true`. See the
|
||||
"CI integration" section below.
|
||||
|
||||
**Scenario inventory (committed in this branch + sister branches):**
|
||||
|
||||
@@ -422,18 +423,22 @@ relay-side timing under load.
|
||||
|
||||
## CI integration
|
||||
|
||||
`.github/workflows/build.yml` now has a `hang-interop` job:
|
||||
**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.
|
||||
|
||||
- Linux-only (Rust toolchain + libopus available out of the box)
|
||||
- Caches `~/.cargo` and `~/.cache/amethyst-nests-interop/` between
|
||||
runs so `cargo install moq-relay` and the workspace `cargo build`
|
||||
are warm on the second run
|
||||
- Runs `:nestsClient:jvmTest -DnestsHangInterop=true`
|
||||
- Depends on the existing `lint` job (only runs after spotless +
|
||||
ktlint pass)
|
||||
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.
|
||||
|
||||
Browser interop will land its own job once `feat/nests-browser-interop`
|
||||
merges; that job adds `bun install` + Playwright Chromium caching.
|
||||
Browser interop (`feat/nests-browser-interop`) follows the same
|
||||
"locally only via `-DnestsBrowserInterop=true`" rule pending its own
|
||||
flake assessment.
|
||||
|
||||
## Pending follow-ups
|
||||
|
||||
|
||||
Reference in New Issue
Block a user