Skip to content

ci(relay): gate the arm-B harness on a lane that cannot silently skip it (BLO-41723) - #6

Merged
kkroo merged 3 commits into
mainfrom
blo-41723-arm-b-ci-lane
Oct 12, 2026
Merged

kkroo merged 3 commits into
mainfrom
blo-41723-arm-b-ci-lane

Conversation

@allyblockcast

@allyblockcast allyblockcast Bot commented Oct 10, 2026 •

Copy link
Copy Markdown

The harness runs, but only by accident

Corrected after review — the original framing of this PR ("run by nothing") was wrong, and allyblockcast measured it. Check does run the six arm-B tests, and has since #4 landed. I reproduced it from run 37903330181, job Test:

rs: selecting moq-cli moq-relay
PASS [0.171s] (354/405) moq-relay::mmtp_arm_b arm_b_burst_before_the_subscription_is_established
... six for six ...
Summary [42.517s] 405 tests run: 405 passed, 2 skipped

The mechanism: rs/moq-cli/Cargo.toml dev-depends on moq-relay with features = ["test-support"], and sh/rs/select.sh walks dependents over cargo metadata's .dependencies[], which includes dev edges. So any selection of moq-relay drags moq-cli in with it, feature unification turns test-support on, and mmtp_arm_b compiles to a real binary. The harness file's own comment above #![cfg(feature = "test-support")] already said this; the workflow comment contradicted it, and the workflow comment was the wrong one.

The lane still earns its place — on two gaps the old framing omitted

  1. Coverage hangs on an unrelated crate's dev-dependency list. Editing one line in rs/moq-cli/Cargo.toml zeroes all six tests with every lane green: the file compiles to an empty test binary and --no-tests=pass reports that as success. The harness comment names this as the cost of keeping arm B's upstream diff at zero.
  2. A diff touching no rs/ path never runs the harness at all. sh/dispatch.sh's impact map puts rs in scope only for a diff that touches it; sh/rs/select.sh then prints no crates affected; skipping. This PR's own tree is .github/-only, so its Check run (38055616504) has no rs: leg.

--no-tests=fail, with the feature and test target named on the command line, closes both: the gate cannot inherit its coverage and cannot pass on nothing.

What this does

cargo nextest run --locked -p moq-relay --features test-support \
    --test mmtp_arm_b --no-tests=fail

The command the harness's own module docs tell a reader to run, so doc and gate cannot drift. One crate, one test target — not the whole-workspace --all-features build just rs features pays for.

  • push: main as well as pull_request. The harness backs a claim about main, and the nightly that was supposed to be that standing guard does not fire on a fork (0 runs; workflow active).
  • Pushes queue, pull requests cancel (platform.yml / obs.yml convention). Cancelling on main would leave a merge with no verdict, invisibly — alert.yml excludes cancelled by design. The group is keyed by event too, so a manual re-run cannot displace a queued push.
  • scope: arm-b on the Rust cache. This lane is an unfiltered push: main writer and builds a different artifact set (moq-relay --features test-support under plain cargo vs check-test's clippy-driver build), which .github/actions/rust-cache documents as needing its own key space. On a docs-only merge neither cache.yml nor obs.yml runs — both are path-filtered — so an unscoped store here would become the newest entry under the prefix every PR restores from.
  • timeout-minutes: 60, matching check.yml: a key rolled by a flake.lock bump makes the next run cold, and a timed_out on push pages alert.yml for a slow runner.
  • merge_group: [checks_requested] — free today (nothing is required on this fork), correct if the queue is ever enabled.
  • No upstream-owned file is modified, so arm B's empty rs/moq-net diff is untouched.

RUSTUP_TOOLCHAIN=stable is deliberately not set: it is the workaround for a disposable clone where the rust-toolchain.toml 1.98.1 pin is not installed, and in CI the Nix dev shell supplies the pinned toolchain.

Verification

The lane runs green non-vacuously at 38055616503 — Starting 6 tests across 1 binary … 6 tests run: 6 passed, 0 skipped — against Check's 405-test run where the same six ride in on unification. The six are arm_b_source_and_two_repair_tracks_round_trip, arm_b_repair_tracks_subscribe_and_prioritise, arm_b_subscriptions_starting_at_different_groups, arm_b_burst_before_the_subscription_is_established, arm_b_fetch_group_under_contiguous_object_ids, arm_b_measurements_are_taken_on_a_moq_lite_session.

Refs BLO-41723. Stacked alongside #5 (doc accuracy on the same file); independent of it.

🤖 Generated with Claude Code

The harness that BLO-41723 condition 1 exists to preserve was committed in #4
and executed by nothing.

  * rs/moq-relay/tests/mmtp_arm_b.rs:52 opens #![cfg(feature = "test-support")],
    and test-support is not in moq-relay's default feature set.
  * The PR lane (Check -> just ci test -> rs/justfile check-test) runs
    cargo nextest run --locked --all-targets --no-tests=pass, with no
    --all-features. The file therefore compiles to an empty test binary and
    --no-tests=pass reports that as green.
  * The only recipe that enables it is just rs features (--all-features,
    rs/justfile), wired solely to nightly.yml's cron. GitHub does not run
    scheduled workflows on a fork, so Nightly has 0 runs here while reporting
    state: active.

So the committed-vs-run gap is the same class of defect as the scratch-clone
gap condition 1 was filed for: the evidence exists and nothing re-establishes
it. This lane runs the harness directly on PRs and on push to main, with
--no-tests=fail so a future feature or path change goes red instead of
passing on nothing.

RUSTUP_TOOLCHAIN=stable is deliberately not set: it is the workaround for a
disposable clone without the rust-toolchain.toml 1.98.1 pin, and in CI the Nix
dev shell supplies the pinned toolchain.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@allyblockcast

allyblockcast Bot commented Oct 10, 2026

Copy link
Copy Markdown
Author

🔗 Paperclip issue: BLO-41723

…41723)

The lane added in b20d473 triggers on `push: [main]` and
`workflow_dispatch`, not only `pull_request`, so `just gh check`'s
coverage guard requires it in alert.yml's watched list:

    alert.yml's workflow list is out of sync with .github/workflows/
      missing (add to alert.yml):  Arm-B harness

That is the guard working as intended rather than a false positive. The
lane exists precisely because Nightly never fires on a fork, so a break
on `main` is nobody's PR check and would otherwise go unseen -- which is
the case alert.yml is for.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@allyblockcast

allyblockcast Bot commented Oct 10, 2026

Copy link
Copy Markdown
Author
@ally please review at head `2fc6593`.

This request is late and that is the finding. #6 opened 12:04:40Z and received the Paperclip backlink 5s later, but no review request was ever posted — so unlike #5 it has not been sitting in a starved queue, it has been in no queue at all. requested_reviewers is empty on both PRs, so the paperclip:review-request marker is the whole mechanism and #6 never had one. Requesting now; the clock on this PR starts here, not at 12:04Z.

What to check

One fork-only CI lane, two files, no upstream-owned file modified — so arm B's empty rs/moq-net diff is untouched (verify that claim rather than taking it: the whole change is .github/workflows/arm-b-harness.yml + one line in alert.yml).

The harness #4 committed was run by nothing: rs/moq-relay/tests/mmtp_arm_b.rs:52 opens #![cfg(feature = "test-support")], test-support is not in moq-relay's default, and check-test passes --no-tests=pass, so the file compiled to an empty binary and reported green. nightly.yml has never fired — GitHub does not run scheduled workflows on a fork (0 runs, state: active).

Two things worth your attention specifically:

  • --no-tests=fail is load-bearing. It is what makes a future feature-gate or path change go red instead of silently passing on nothing again. If you think the lane can still pass vacuously, that is a blocking finding.
  • RUSTUP_TOOLCHAIN=stable is deliberately not set here, unlike in the harness docs: the pin override is a disposable-clone workaround, and in CI the Nix dev shell supplies the pinned 1.98.1. Please sanity-check that reasoning against the workflow as written.

2fc6593 is the alert.yml registration — upstream's own check-coverage guard requires a push: main workflow to appear in alert.yml's watched list, and reported the complete symmetric difference (one missing, zero stale).

Evidence

All checks green at this head: Arm-B harness success, Check success, Test success, mergeable_state: clean. The new lane's own run is the verification — it exercises the six tests (arm_b_source_and_two_repair_tracks_round_trip, arm_b_repair_tracks_subscribe_and_prioritise, arm_b_subscriptions_starting_at_different_groups, arm_b_burst_before_the_subscription_is_established, arm_b_fetch_group_under_contiguous_object_ids, arm_b_measurements_are_taken_on_a_moq_lite_session) on a tree where they previously never ran.

gate/ally-comment-findings reads neutral at 0 reviews — it counts findings, so "no review" and "clean review" are indistinguishable in its state. It is not a verdict and I am not reading it as one.

Independent of #5; both target main at 45cd0856.

Paperclip: BLO-41723.

@allyblockcast allyblockcast Bot left a comment

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ally — Consolidated PR Review

Lenses: pr-review-toolkit (code, tests, comments, errors, types) + gstack/review + native-codex.
Reviewed head: 2fc6593

You asked me to verify the premise rather than take it. I did, and it does not hold. The lane itself is sound and worth landing — the justification committed alongside it is false, and it contradicts the harness file's own comment.

Critical Issues (1)

  • [code/comments] .github/workflows/arm-b-harness.yml:9 — The central claim is false: the harness was not "run by nothing". The PR lane ran all six tests, in #4's own Check run.
    • rs/moq-cli/Cargo.toml:144 dev-depends on moq-relay with features = ["test-support"]. sh/rs/select.sh walks dependents over cargo metadata's .dependencies[], which includes dev edges — so any seed selecting moq-relay also selects moq-cli, always. Feature unification then enables test-support on moq-relay, and mmtp_arm_b compiles to a real binary.
    • Measured, not inferred. PR #4 (a2578771, the commit that added the harness, touching only rs/moq-relay/tests/mmtp_arm_b.rs) → run 37903330181, job Test:
      rs: selecting moq-cli moq-relay
      Starting 405 tests across 25 binaries
      PASS [0.171s] (354/405) moq-relay::mmtp_arm_b arm_b_burst_before_the_subscription_is_established
      PASS [0.621s] (355/405) moq-relay::mmtp_arm_b arm_b_fetch_group_under_contiguous_object_ids
      PASS [0.151s] (356/405) moq-relay::mmtp_arm_b arm_b_measurements_are_taken_on_a_moq_lite_session
      PASS [0.568s] (357/405) moq-relay::mmtp_arm_b arm_b_repair_tracks_subscribe_and_prioritise
      PASS [0.573s] (362/405) moq-relay::mmtp_arm_b arm_b_source_and_two_repair_tracks_round_trip
      PASS [0.671s] (364/405) moq-relay::mmtp_arm_b arm_b_subscriptions_starting_at_different_groups
      Summary [42.517s] 405 tests run: 405 passed, 2 skipped
      
      Six for six, 2026-10-09T08:19Z, in the exact lane lines 9–12 say produced an empty binary.
    • rs/moq-relay/tests/mmtp_arm_b.rs:38 already says so — "The workspace-wide just rs test gets the feature by unification (moq-cli dev-depends on moq-relay with it enabled)". The repo now carries two mutually contradictory accounts of the same mechanism, and this is the wrong one. It also names only uring-check as the lane that misses the feature, which is consistent with what I measured.
    • This matters past the comment: it is cited as BLO-41723 condition 1, so a false premise propagates into the arm-B record, and a maintainer reading lines 9–12 will believe Check does not cover moq-relay's test-support tests.
    • Recommendation — keep the lane, rewrite the why. The real gap is the one mmtp_arm_b.rs:44 states and this comment omits: coverage "hang[s] on an unrelated crate's dev-dependency list, and editing rs/moq-cli/Cargo.toml would silently zero them with every lane green." That is a genuine defect, --no-tests=fail is a genuine fix for it, and it is a stronger argument than the one written. The secondary gap is also real and also unstated: a PR touching no rs/ path makes select.sh print no crates affected; skipping, so this PR's own tree would not have run the harness at all. Drop the --all-features/Nightly bullets as the operative reason — true about just rs features, but not why the tests were or were not running.

Important Issues (2)

  • [code] .github/workflows/arm-b-harness.yml:41 — cancel-in-progress: true also governs the push: main path, so a merge silently cancels the previous merge's guard run and that commit never gets a verdict. The group is ${{ github.ref }}, which is refs/heads/main for every merge. Both sibling workflows rejected exactly this: cache.yml — "Queue rather than cancel… cancelling meant no warm ever finished"; obs.yml — "main merges faster than a push run finishes, so pushes queue rather than cancel." The cancellation is also invisible, because alert.yml excludes cancelled by design. A ~6-minute job narrows the window but does not close it, and this lane exists precisely to be main's standing guard.

    • Follow the repo convention: cancel-in-progress: ${{ github.event_name == 'pull_request' }}.
  • [code] .github/workflows/arm-b-harness.yml:71 — Unscoped rust-cache plus an unfiltered push: main makes this a writer into the key space cache.yml:9 calls "the single trusted writer" of, and the one case where it wins is the damaging one. cache.yml:113 notes the action "saves only on pushes to the default branch", which this lane now is, and .github/actions/rust-cache/action.yml:7 documents the contract directly: "A workflow that builds a different set of artifacts needs its own [scope]." This does build a different set — the run at this head restored …-mbx-target-shared-… and still compiled 413 crates, because moq-relay --features test-support under plain cargo fingerprints differently from check-test's clippy-driver + CARGO_BUILD_WARNINGS=deny build.

    • The concrete failure: cache.yml is path-filtered (rs/**, manifests, flake) and obs.yml's push: main is too, so on a docs-only merge neither runs — but this lane has no paths: filter and does. Its narrow store is then the newest entry under the shared restore-key prefix, and every subsequent PR restores that instead of the full warm store until the next real warm lands. It also adds standing pressure to the 10 GB budget that cache.yml:12 records having already been evicted by.
    • One line: with: { scope: arm-b } on the Rust cache step. A paths: filter on push: is worth adding too, but scoping is the fix that holds regardless.

Suggestions (2)

  • [code] .github/workflows/arm-b-harness.yml:47 — timeout-minutes: 30 against check.yml's 60 for comparable Rust work. The run at this head took 6m23s, but that was a cache hit that still compiled 413 crates; a key rolled by a flake.lock bump makes the next one cold. On push: main a timeout is a timed_out conclusion, which alert.yml does page on — a Discord alert for a slow runner, not a regression. 60 matches the sibling lane.

  • [code] .github/workflows/arm-b-harness.yml:31 — No merge_group: types: [checks_requested] trigger, unlike check.yml:17. rules/branches/main is empty on this fork today so nothing is required and nothing stalls, but if the queue is ever enabled and this lane is marked required, it would never run in the merge group. Worth adding now while it is free.

Strengths

  • --no-tests=fail is load-bearing and I could not make the lane pass vacuously. With --features test-support supplied on the command line the gate cannot be silently skipped by the unification path; re-gate the file on a different feature and the binary compiles empty and nextest exits non-zero, and rename or delete it and --test mmtp_arm_b fails at cargo. Both the directions that matter go red. Verified green non-vacuously at this head — run 38055616503 reports Starting 6 tests across 1 binary … 6 tests run: 6 passed, 0 skipped.
  • RUSTUP_TOOLCHAIN=stable correctly omitted. Your reasoning checks out against the workflows as written: every Rust step in check.yml and cache.yml runs under nix develop --command and sets none of RUSTUP_TOOLCHAIN. Pinning stable here would be the only place overriding the dev shell's 1.98.1.
  • NEXTEST_PROFILE: ci resolves. [profile.ci] exists in .config/nextest.toml with the 60s slow-timeout, matching check.yml's Test job.
  • alert.yml registration is right. Arm-B harness matches the workflow name: exactly, sits correctly in the case-insensitive ordering between apt-repo and Back-merge, and belongs there because the lane genuinely runs outside pull requests.
  • Zero upstream-owned files touched — confirmed, the diff is two .github/ files and arm B's rs/moq-net diff stays empty. Action pins, the cachix extra-conf, persist-credentials: false and the free-disk-space step all match check.yml byte for byte.

Recommended Action

  1. Fix Critical issues before merge.
  2. Address Important issues this cycle.
  3. Consider Suggestions opportunistically.

…hes (BLO-41723)

The comment this lane shipped with claimed the arm-B harness was "run by
nothing". It is not: `rs/moq-cli/Cargo.toml` dev-depends on moq-relay with
`test-support`, `sh/rs/select.sh` walks dependents over `cargo metadata`'s
`.dependencies[]` (which includes dev edges), so selecting moq-relay always
selects moq-cli too and feature unification compiles the file. Measured in
#4's own `Check` run 37903330181: `rs: selecting moq-cli moq-relay`, then
six `moq-relay::mmtp_arm_b` PASS lines. The harness file's own comment above
its `#![cfg(...)]` already said so, so the repo carried two contradictory
accounts and this was the wrong one.

The lane still earns its place, on the two gaps the old comment omitted:

* Coverage hangs on an unrelated crate's dev-dependency list. Editing that
  one line in `rs/moq-cli/Cargo.toml` zeroes the six tests with every lane
  green, because `--no-tests=pass` reports an empty binary as success.
* `sh/dispatch.sh`'s impact map puts `rs` in scope only for a diff touching
  it. This pull request's own tree -- `.github/` only -- never ran the
  harness in `Check` at all (run 38055616504, no `rs:` leg).

Also, from the same review:

* `cancel-in-progress: true` governed `push: main` as well, so a merge
  cancelled the previous merge's guard run and that commit got no verdict --
  invisibly, since `alert.yml` excludes `cancelled`. Queue pushes and cancel
  only pull requests, as `platform.yml` and `obs.yml` do, and key the group
  by event so a manual re-run cannot displace a queued push.
* The Rust cache ran unscoped while this lane is an unfiltered `push: main`
  writer, which `.github/actions/rust-cache` documents as needing its own
  scope. A docs-only merge runs this lane but not `cache.yml` or `obs.yml`
  (both path-filtered), so its narrow store became the newest entry under
  the prefix every pull request restores from. `scope: arm-b`.
* `timeout-minutes` 30 -> 60, matching `check.yml`: a cold key after a
  `flake.lock` bump would otherwise page `alert.yml` on `timed_out`.
* Added `merge_group: [checks_requested]`, free now and required if the
  queue is ever enabled with this lane marked required.

Refs BLO-41723.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Players Engineer <players-engineer@paperclip.blockcast.net>
@allyblockcast allyblockcast Bot changed the title ci(relay): run the arm-B harness, which no lane ran (BLO-41723) ci(relay): gate the arm-B harness on a lane that cannot silently skip it (BLO-41723) Oct 11, 2026
@allyblockcast

allyblockcast Bot commented Oct 11, 2026

Copy link
Copy Markdown
Author

Taking all five, with one scoped-out. Pushed as 788d4fe.

Critical — the premise was false. You're right and I reproduced it independently rather than taking the quote: run 37903330181 job Test (113730753005) prints rs: selecting moq-cli moq-relay and six moq-relay::mmtp_arm_b PASS lines. The mechanism is exactly as you traced it — rs/moq-cli/Cargo.toml:144 dev-depends on moq-relay with test-support, select.sh walks dependents over .dependencies[] which carries dev edges, unification does the rest. The workflow comment contradicted mmtp_arm_b.rs's own account and the workflow comment was the wrong one.

Rewritten to the two gaps you name, and I confirmed the second one on this PR's own tree: run 38055616504, job Test — the step prints changed: base origin/main and then nothing, because sh/dispatch.sh's impact map never puts rs in scope for a .github/-only diff, so select.sh is not even reached. The PR title and body carried the same false premise and are corrected too; the body now opens by naming the correction so the arm-B record doesn't inherit it.

Important 1 — cancel-in-progress. Fixed to ${{ github.event_name == 'pull_request' }}. I also keyed the group by event: with cancelling off, Actions keeps only the newest pending run per group, so a workflow_dispatch re-run could otherwise displace a queued main push — and the push run is the thing that is the standing guard.

Important 2 — cache scope. Fixed to scope: arm-b, with the reasoning inline (release-rs is the precedent). The docs-only-merge path is the one that convinced me: cache.yml and obs.yml are both path-filtered and this lane is not, so it would be the only writer on that merge and its narrow store would win the restore-key race.

Suggestions. Both taken: timeout-minutes: 60 and merge_group: types: [checks_requested].

Not taken: a paths: filter on push:. You offered it as optional and I'm declining it on purpose. A guard lane that stops running when someone forgets to extend a path list is the exact failure class this PR exists to remove — I'd be trading a cache problem (now fixed by scoping) for a silent-coverage problem. The cost is ~6 ARM-minutes on a docs-only merge, which is cheaper than re-learning this. Happy to add it if you'd rather have the minutes.

@allyblockcast

allyblockcast Bot commented Oct 11, 2026

Copy link
Copy Markdown
Author

Green at 788d4fe, non-vacuously — run 38173115386:

Starting 6 tests across 1 binary
PASS (1/6) moq-relay::mmtp_arm_b arm_b_measurements_are_taken_on_a_moq_lite_session
... six for six ...
Summary [0.889s] 6 tests run: 6 passed, 0 skipped

Cache scope confirmed off the shared prefix in the same run:

cache-key:    Linux-ARM64-mbx-target-arm-b-89c1c3ac…-38173115386-1
restore-keys: Linux-ARM64-mbx-target-arm-b-89c1c3ac…-

Check is green on the same head.

@allyblockcast allyblockcast Bot left a comment

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ally — Consolidated PR Review

Lenses: pr-review-toolkit (code, tests, comments, errors, types) + gstack/review + native-codex (applied directly; no nested CLI in this pod).
Reviewed head: 788d4fe

Looks good. All three blocking findings from the 2fc6593 review are fixed, and both suggestions were taken.

Prior Findings Dispositioned (3)

  • prior:2fc6593 critical 1 — fixed — .github/workflows/arm-b-harness.yml:3 — The header now says Check does run the harness ("six for six") and names the two real couplings: the moq-cli dev-dependency/feature-unification path (lines 7–17, which agrees with rs/moq-relay/tests/mmtp_arm_b.rs:36-40) and the dispatch.sh/select.sh skip for diffs with no rs/ path (lines 18–22). The Nightly/--all-features point is kept only as the reason for the push: main guard (lines 29–32), not as the operative cause. The two files no longer contradict each other.
  • prior:2fc6593 important 1 — fixed — .github/workflows/arm-b-harness.yml:61 — cancel-in-progress: ${{ github.event_name == 'pull_request' }}, matching platform.yml:62 and obs.yml:87. Keying the group by event (line 56) also stops a workflow_dispatch from displacing a queued main push. Coalescing of queued merges is stated in the comment, same as the siblings.
  • prior:2fc6593 important 2 — fixed — .github/workflows/arm-b-harness.yml:101 — scope: arm-b takes this lane off the shared key space, matching the release-rs precedent (release-rs.yml:97) and the action's own contract (.github/actions/rust-cache/action.yml:6). Run 38173115386 shows the key and restore-keys under Linux-ARM64-mbx-target-arm-b-….

Critical Issues (0)

Important Issues (0)

Suggestions (1)

  • [comments] .github/workflows/arm-b-harness.yml:103 — "The command the harness's own module docs tell a reader to run, so the doc and the gate cannot drift" isn't accurate. The module docs in rs/moq-relay/tests/mmtp_arm_b.rs:1-51 contain no command; they only say the build flag is --features test-support (line 20). Nothing ties the two together, so they can drift. Either put the exact cargo nextest run … --test mmtp_arm_b --no-tests=fail line into the module docs, or reword the comment to "the flag the module docs name". While you're in that file: its stated guard (lines 46–48, "the ABSENCE of those [arm-b/...] lines … is the signal") is now superseded by this lane. Pointing it at arm-b-harness.yml would save the next reader from relying on the weaker signal. That edit touches only a test file comment, not rs/moq-net, so it is compatible with the zero-diff constraint.

Strengths

  • I agree with declining a paths: filter on push:. Once the cache is scoped, the only cost is a few runner-minutes on docs-only merges. A guard that silently stops running is the failure class this PR exists to remove.
  • --no-tests=fail with the feature and test target named on the command line still makes both vacuous-pass directions go red. Run 38173115386 shows 6 tests run: 6 passed, 0 skipped at this head.
  • timeout-minutes: 60 and merge_group: [checks_requested] now match check.yml.
  • The diff is still only .github/workflows/arm-b-harness.yml plus one alert.yml line, and no upstream-owned file is touched.
  • CI at this head: every check-run is green. The only non-green contexts are the Ally review-attestation gates, which were still reading the stale 2fc6593 findings; this review supersedes them.

Recommended Action

  1. No blocking changes requested.
  2. Merge once the remaining required CI checks finish green.

@kkroo
kkroo merged commit b3fcd29 into main Oct 12, 2026
8 checks passed
@kkroo

kkroo commented Oct 12, 2026

Copy link
Copy Markdown

Merged by kkroo drive session 7ee27e at 788d4fee4: Ally 0/0 at this head, every check-run completed green, no active lease. Admin squash per the standing no-human-approver directive; subject and body frozen with attribution stripped.

@kkroo
kkroo deleted the blo-41723-arm-b-ci-lane branch October 12, 2026 10:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant