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.sh on origin/develop runs cargo test --all-features --release --lib -- --test-threads=1. The --lib is 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, needs TEST_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 local cargo test without --lib.

Concrete rot: flight_end_to_end.rs

  • mando-bess/tests/flight_end_to_end.rs fails to compile ON DEVELOP ITSELF with E0603: line 18 imports DataPointUpdateInfo via mando_lib::service, where it is only a private use since the mando-repository crate split (commit b3ce27a8 “feat: move repository-related code to its own crate”).
  • A full local cargo test without --lib builds 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 DataPointUpdateInfo from mando_core::model::datapoint directly. 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=1 The --lib gives CI parity; rtk proxy avoids the RTK hook turning --test-threads=1 into 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 at e0184bc3 was 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 -p gates 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.