Found reviewing #253.
The guard in audit-derived-reports fires when a research block is rendered and research/traits is untracked. It tests the directory as a whole — a single tracked file satisfies git ls-files research/traits | head -1 — and with 353 reports committed that condition is now effectively unreachable.
The divergence it describes still has a reachable form. A curator runs a new sweep, renders, and commits pages/ without committing the new report:
- locally,
just qc passes — the fresh render and pages/ agree, both see the untracked report
- in CI, the fresh render has no block for that trait,
pages/ has one
- result: a STALE with the guard silent
That is precisely the "unexplained STALE rather than a cause" outcome the guard's comment says it prevents, reached through an untracked file rather than an untracked directory.
Not corrupting — the gate still fails, it just fails uninformatively, and the fix (git add research/) is not the one the STALE message suggests.
Fix: also fire when git ls-files --others --exclude-standard research/traits is non-empty, and name which of the two cases fired, since the remedy differs — track the directory, versus commit the reports you just generated.
Found reviewing #253.
The guard in
audit-derived-reportsfires when a research block is rendered andresearch/traitsis untracked. It tests the directory as a whole — a single tracked file satisfiesgit ls-files research/traits | head -1— and with 353 reports committed that condition is now effectively unreachable.The divergence it describes still has a reachable form. A curator runs a new sweep, renders, and commits
pages/without committing the new report:just qcpasses — the fresh render andpages/agree, both see the untracked reportpages/has oneThat is precisely the "unexplained STALE rather than a cause" outcome the guard's comment says it prevents, reached through an untracked file rather than an untracked directory.
Not corrupting — the gate still fails, it just fails uninformatively, and the fix (
git add research/) is not the one the STALE message suggests.Fix: also fire when
git ls-files --others --exclude-standard research/traitsis non-empty, and name which of the two cases fired, since the remedy differs — track the directory, versus commit the reports you just generated.