feat(verify): census the whole-crate verification steps (weak evidence, #262) - #344
Open
avrabe wants to merge 4 commits into
Open
feat(verify): census the whole-crate verification steps (weak evidence, #262)#344avrabe wants to merge 4 commits into
avrabe wants to merge 4 commits into
Conversation
#262) The whole-crate step count is REGRESSING: ~54 at the 2026-07 traceability audit, 70 measured today. #262 anticipated this and proposed warn-then-fail; this is the warn half. A whole-crate `cargo test -p X` step asserts "something in this crate passes", not "THIS test verifies THIS requirement". It is also the one step shape that cannot detect evidence drift: the existing guard (`cargo_tests_passed(...) == 0`, pulseengine.eu#89) needs a name to check against, so under a whole-crate step a test that is renamed, deleted, or `#[ignore]`d leaves the step green. That is not hypothetical. FV-FALCON-NOTCH-001 runs `cargo test -p falcon-core` as its closed-loop evidence for NOTCH-P01, and the only notch test in that crate is `#[ignore]`d pending #290 — so the step runs 60 unrelated tests and reports PASS. Reported on #290. Reports, does not fail. The backlog is 70 steps; failing now would block unrelated work. The goal is to stop the count drifting up, and to make it visible on GREEN runs — a gate that only speaks when it fails cannot show a backlog shrinking. Convert to a hard failure once the backlog is worked down. Verified locally: $ python3 scripts/run-falcon-verification.py --filter '(has-tag "wasm-pipeline")' [ PASS] (0.16s) FV-FALCON-PIPELINE-001: cargo test -p relay-mix-quad — WHOLE-CRATE step: names no test (#262) [ PASS] (0.13s) FV-FALCON-PIPELINE-001: cargo test -p relay-rate — WHOLE-CRATE step: names no test (#262) [ PASS] (0.11s) FV-FALCON-PIPELINE-001: cargo test -p falcon-sitl-hover — WHOLE-CRATE step: names no test (#262) # 3 whole-crate step(s) — weak evidence, name the verifying test(s) (#262) EXIT=0 Pass/fail behaviour is unchanged: steps still PASS and the run still exits 0. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HvusAXYbHLyv3uTzfBcMbG
avrabe
enabled auto-merge (squash)
August 7, 2026 19:05
The gate reads Verify-Filter from github.event.pull_request.body — the EVENT payload — so editing the body alone does not change what a queued run sees. A synchronize event is required. Squash-merge drops this commit. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HvusAXYbHLyv3uTzfBcMbG
avrabe
added a commit
that referenced
this pull request
Aug 8, 2026
…350) The sweep has grown into its own ceiling. Measured across one day, same 156-artifact sweep: #340 ~63m success #344 1h30m21s FAILURE — killed at timeout-minutes: 90 #344 (earlier) cancelled #342 failed twice the same way #343 success twice Variance now exceeds headroom, so a REQUIRED check is decided by runner load rather than by whether anything is wrong. And a timeout surfaces as `fail`, indistinguishable from a real failure unless you read the duration — which already cost a diagnosis cycle. Worst of all, it was blocking the two PRs meant to improve this gate (#342 fail-open fix, #343 sweep speedup). Raising the ceiling does not weaken the gate: it is being KILLED, not failing. Landing it here because this PR already owns this file and is itself blocked by the timeout it fixes. THIS IS A STOPGAP and the third reactive bump (60 -> 90 -> 150). The trend is the real problem: 45m in July, >=90m now. #350 tracks it, and names the next measurement — the compile-vs-test split ON the runner. The sweep spans 64 crates with 29 `--release` steps, so compilation is the likely dominant cost; whole-crate -> named conversion (#343/#262) is right for traceability but, measured, will not close a 30-minute gap on its own (the non-falcon-core offenders run in 0-5s). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HvusAXYbHLyv3uTzfBcMbG
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Verify-Filter: (has-tag "oci")
The warn half of #262’s warn-then-fail proposal. Reports; does not fail.
Why now
The whole-crate step count is regressing: ~54 at the 2026-07 traceability audit, 70 measured today. Without a signal it drifts back up as fast as it is worked down.
What a whole-crate step costs
cargo test -p Xwith no test named asserts "something in this crate passes", not "this test verifies this requirement".It is also the one step shape that cannot detect evidence drift. The existing guard (
cargo_tests_passed(...) == 0, pulseengine.eu#89) needs a name to check against — so under a whole-crate step, a test that is renamed, deleted, or#[ignore]d leaves the step green.That is not hypothetical.
FV-FALCON-NOTCH-001runscargo test -p falcon-coreas its closed-loop evidence for NOTCH-P01, and the only notch test in that crate is#[ignore]d pending #290. The step runs 60 unrelated tests and reports PASS. Reported on #290.Behaviour
Why warn and not fail
The backlog is 70 steps; failing immediately would block unrelated work. Convert to a hard failure once it is worked down — #343 starts that (70 → 65).
🤖 Generated with Claude Code
https://claude.ai/code/session_01HvusAXYbHLyv3uTzfBcMbG