Field discovery (2026-07-22, made while running the BE-3657 gates): mando’s CI test gate compiles and runs ONLY lib unit tests. */tests/ integration targets are never built by the pipeline and can rot silently. Concrete rot found the same day: mando-bess/tests/flight_end_to_end.rs fails to compile on develop itself.
The gate
.gitlab/scripts/test.shonorigin/developrunscargo test --all-features --release --lib -- --test-threads=1. The--libis real and easy to miss.- It arrived with commit
7278f36a“feat: add integration tests for archiver using gitlab runners for containers”, the same change that introduced the separate “Integration Test Linux Dev” job. - That integration job covers ONLY the mando-lib archiver Postgres suite (
mando-lib/tests/,.gitlab/scripts/integration-test.sh, needsTEST_PG_HOST). Every other*/tests/target in the workspace has zero CI coverage: never compiled, never run.
Consequence
Any
tests/integration target outside the archiver suite can break silently, including failing to COMPILE, and CI stays green. The only thing that notices is a full localcargo testwithout--lib.
Concrete rot: flight_end_to_end.rs
mando-bess/tests/flight_end_to_end.rsfails to compile ON DEVELOP ITSELF with E0603: line 18 importsDataPointUpdateInfoviamando_lib::service, where it is only a privateusesince the mando-repository crate split (commitb3ce27a8“feat: move repository-related code to its own crate”).- A full local
cargo testwithout--libbuilds this target and dies on the compile error, which looks like your branch broke something when develop is equally broken. - Pending one-liner fix: import
DataPointUpdateInfofrommando_core::model::datapointdirectly. To be its OWN change on Andras’s explicit yes, NOT part of BE-3657.
Local gate parity
Run the gate exactly as CI does
rtk proxy cargo test --all-features --release --lib -- --test-threads=1The--libgives CI parity;rtk proxyavoids the RTK hook turning--test-threads=1into a test-name filter (see Field landmine (2026-07-13): the RTK hook guts cargo test). Confirm the summed passed totals are nonzero. On 2026-07-22 the BE-3657 branch gate was 516 passed / 0 failed at lib scope; on 2026-07-23 the phase 3 branch gate ate0184bc3was 574 passed / 0 failed.
Companion lesson (2026-07-23): per-crate task gates miss consumer crates
Same blind-spot family, opposite axis, found during the BE-3657 phase 3 execution (14 subagent tasks on feature/BE-3657-phase3): every per-task gate compiled -p mando_lib only. The final whole-branch review then caught a Critical no task gate could see: the mando-simulator CONSUMER crate still had 2 tuple-syntax construction sites for variants the branch had restructured; nothing at task level ever compiled that crate.
Rule
Workspace-wide
cargo clippy --release --all-features(no-p) is the only gate that catches cross-crate fallout. Scoped-pgates are fine per task, but the branch-level gate must always be workspace-wide before claiming green.
For Agents
AGENTS.md(the untracked master guide at the mando repo root) was updated 2026-07-22 in 4 places (section 2 non-negotiable 4, the section 10 pre-push checklist command and its RTK warning, the section 13.5 gate list) plus a new landmine row “CI test gate is--lib-only”. Mando AGENTS Guide (mirror) resynced the same day.
Related
- Mando CI-CD - pipeline reference; Quality Gates section corrected 2026-07-22
- Mando AGENTS.md Master Guide - provenance + the other field landmines this compounds with
- BE-3657 error_stack Adoption - the gate runs that surfaced this
- mando-known-flaky-tests-2026-07-15 - the other class of misleading CI test signal
- be-1595-flight-execution-id-parity-2026-06-17 - lineage of the Flight end-to-end test that rotted
- Agent Context