feat(lane): one guard for both Rust lanes, and the proof it catches a red run
Dimension 8.2. `test-integration-rustd` and `test-coverage-rustd` each carried
their own copy of the shell that decides whether a run passed. Two copies of a
guard is one guard and one thing that looks like a guard — and neither copy had
a test, because a green lane proves the happy path and says nothing about
whether a red one would be noticed.
`scripts/rustd_lane_result.py` is now the single decision, and it answers the
two ways a lane reports success it did not earn:
- **Cargo failed and the pipe swallowed it.** The recipe pipes through `tee`,
so `$?` is `tee`'s. The status is captured separately and handed in.
- **Nothing ran.** A `--ignored` selection matching nothing exits 0 and prints
`0 passed`, which reads exactly like a pass.
Eight self-tests in `scripts/rustd_lane_result_test.py`, picked up by the
existing `*_test.py` discovery in `lint-scripts`. The one that matters is
`test_a_failure_wins_even_when_tests_passed_before_it`: forty-five green
binaries and one red must be red, and a tally-only check would call it a pass.
Proven end to end rather than argued, with a seeded failing test in the real
lane against live services:
test test_seeded_failure_for_dimension_8_2 ... FAILED
make test-integration-rustd → exit 2 (45 other tests passing)
and green again once the seed was removed:
✓ [rustd] Integration suite passed (45 tests) → exit 0
A first attempt at the seed failed to COMPILE (missing_docs), which proved
compile-failure propagation and not the dimension; the recorded run is the
second, where the binary builds and the test panics at runtime.
`concurrency.md` no longer spells the milestone ids for deferred rows.
`check-architecture-doc` resolves cited milestones against `done/` and
`active/`, and M177/M178 are still in `pending/` — so the ids live in
`THREAD_MAP` alone, where `tests/daemon.rs` already asserts each deferral names
one. One source instead of two, and the doc stops being able to go stale.
§7 and §8 dimensions marked DONE; spec Status → DONE. All four declared gates:
make harness-verify → ALL GATES GREEN
make lint-all → ✓ All lint checks passed
make test-unit-all → ✓ All unit lanes passed
make check-version → ✓ all versions match 0.26.2
make test-integration-rustd → 45 tests against live services
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> K
Kishore Kumar committed
682a8b53eb4b833972710e764e9f98305fd184d9
Parent: 00d33a7