---
name: thin-lane-ci-skips-integration-tests
description: "Thin-lane PR CI runs lib/bin units only — an integration test in tests/*.rs never runs there, so a 5/5 green says nothing about it."
metadata: 
  node_type: memory
  type: project
  originSessionId: d35eee0f-40f8-453d-a495-005b948d382e
  modified: 2026-08-03T07:15:37.580Z
---

`ci.yml`'s only test leg is `cargo nextest run --workspace -E 'kind(lib) + kind(bin)'`. That filter
EXCLUDES integration tests (`tests/*.rs`, `kind(test)`). So a thin-lane PR whose entire subject is an
integration test can go 5/5 green without that test ever running.

**Why:** IR-18's lane changed only `resident_service_e2e.rs` + `tests/common/reap.rs` and CI came back
all-green. Verified rather than assumed: pulled the hfenduleam job log and grepped it — `resident_service`
appeared ZERO times, summary `2432 tests run`, all lib/bin. Reporting that green as "the lane passed"
would have been the absent-leg-reads-as-pass shape. doyle's ruling: under ADR-0050 thin lanes ff on
thin CI and integration behavior enters CI at the GOLDEN run, so such a lane lands as
**"built, GOLDEN-PENDING"** — not BUILT — until the first in-pool golden green.

**How to apply:** for an integration-test lane, state the evidence split explicitly in the handoff —
CI proves compile-everywhere + traceability + lib/bin clean; LOCAL runs prove behavior. `clippy
--workspace --all-targets -D warnings` IS the pool-population check for a shared `tests/common/`
module, because it builds every integration-test target. Bound the cross-test risk by checking the
shared module's diff is purely ADDITIVE (`git diff origin/main -- <file> | grep '^-'` empty ⇒ no
existing consumer's behavior can move; only compilation mattered). Confirm what ran by grepping the
JOB LOG for the test name — never infer it from check marks.
Related: [[two-runs-per-sha-notification-trap]], [[gh-run-poll-jobs-not-status]],
[[zero-match-filter-reads-as-absent]], [[golden-respin-test]].
