Review path · evidence
How this repository proves what it says
The senior-reviewer path: not what the system does, but how each statement about it is validated — and where validation deliberately stops.
The chain: claim → requirement → implementation → test → measurement → limitation
Every measured claim resolves through this chain. Example — abstention: US-003 (route uncertain requests to humans) → FR-004 (validation-only threshold policy) → src/intentguard/threshold.py → test_threshold.py and API integration tests → the persisted threshold and selective-prediction figures in the evaluation run → the limitation that the threshold must be read relative to the transformer's observed confidence range. Walk it in the evidence-chain graph
Traceability is a maintained table, not an aspiration
The specification maintains a requirement→AC→validation matrix with an explicit maintenance rule (“agents must not add orphan behavior that has no requirement and no validation”), and the backlog maintains a second, identifier-level matrix mapping every FR/NFR/AC to its owning epic, implementation path, and validation command. Spec traceability · Primary traceability
The acceptance gate measures itself honestly
make acceptance classifies 44 rows over 42 identifiers. Its history is the most instructive evidence in the repository: it printed FAIL truthfully while U08 was incomplete; four circular causes (the gate measuring itself) were removed as circular, not as fixed; its first version had a defect that passed file-presence over declared status, and the fix is documented; and continue-on-error was removed only after a clean-runner PASS, because keeping it would hide regressions. The verdict section
Environment-dependence is modeled, not ignored
The audit reaches the same PASS verdict in three environments — fully evidenced local, degraded local, and clean CPU CI — while routing artifact-backed rows to explicit environmental gaps when the sealed bundle is absent. Suite counts are pinned to the tree they were measured on, because carrying counts across trees is exactly how stale figures happen (and the repository documents the incident where they did). Suite-count reconciliation
Negative results and non-reproducing sections stay visible
The transformer losing by 0.2034 macro-F1 is presented in the README's first screen. Latency is quoted as a range because it is the one non-reproducing report section. The curated fixture's 12/12 abstention rate is refused OOD status. None of this was smoothed for presentation — and this portal preserves that refusal. Limitations
Where evidence deliberately stops
GPU/CUDA compatibility is unverified (CI is intentionally CPU-only). The demo is local-only by decision D39 — a CI-trained model would carry a different threshold and be a different artifact. Docker is POST-WEEKEND. The Claim Ledger keeps these as Unsupported and Planned with their evidence absence explicit, because absence is part of what the repository says. Claim Ledger