⛉ The identity deny-list holds one placeholder token — the perimeter is not real yet; the operator ruled to arm over the warning, not seed it ⊙ ⊙ ⊙ asserted · not re-run 2026-07-30
c1bd6bd · 2026-07-30 · the perimeter check's own output at HEAD, printed below, and the arming gate it feeds · local, not fetchable · gated · governance
3 commands · 0 refusal lines · 0 zero-finding runs — derived from the lines below, not part of the transcript
$ ./site_govcheck.sh # at HEAD
govcheck: manifest 9 path(s) checked · deny-list tokens=1 (count only)
govcheck: refusal re-fires — anon_lint=fired · pii_guard=fired
govcheck: route coverage — gate + runbook §4 vs routes: ok
govcheck: parity: unverifiable (live canary unfetchable — older deploy or offline)
govcheck: publishes logged=4
govcheck: OK # exit 0 — the perimeter stands
→ tokens=1 is the whole finding, and it says the perimeter is NOT YET REAL.
The deny-list is the exact-token identity list anon_lint refuses against,
and it holds ONE PLACEHOLDER: the sentinel this very check constructs to
prove the refusal path still fires. Nothing real has ever been put on it.
So the mechanism is wired and demonstrably firing, and it is pointed at
nothing — a working alarm on an empty perimeter. anon_lint fail-closes on
an absent, empty or malformed list, which is why the count can be trusted
to mean what it says.
→ what that warned about, from the arming gate's own text (quoted from
ops/arm_autodeploy.sh — an agent authored it and may not run it):
deny-list: 1 non-comment token(s). One token is the fire-test sentinel class,
not a seeded list. anon_lint fail-closes on absent/empty — that refusal is the
control working, but YOU decide whether 1 token(s) is the #342 seed set.
Seeded to your satisfaction, and lift the freeze to ZERO-TAP deploys on every commit? [y/N]
→ THE RULING: the operator decided to ARM OVER THIS WARNING rather than seed
the list. Seeding an identity list is a human-maker act; so is judging that
it is not yet needed. Both were his to take and he took the second one. That
is a decision on the record, not an oversight, and this entry reads the same
either side of it. It comes off the ledger when the list is seeded, not when
the site goes live.
→ so what is actually holding the line over the bytes readers receive? Not this
list. Two content gates, both blocking, both reporting nothing:
$ find dist -type f -print0 | xargs -0 python3 hooks/checks/pii_guard --scan-paths
pii_guard[scan-paths]: 0 findings, 10 files unscanned
UNSCANNED dist/fonts/geist-sans-variable.woff2 (non-text suffix)
… 9 more: 5 crew portraits, the mono font, 2 mascot rasters, og.png
$ find dist -type f -print0 | xargs -0 python3 hooks/checks/anon_lint --paths
anon_lint: 0 findings, 10 files unscanned
… the same ten binaries (binary suffix)
Read the second number too: ten files are UNSCANNED, not clean. Both
scanners skip binary suffixes, so the fonts and rasters ship on the strength
of exif_check and of who made them, and nobody reads their bytes.
Run here over dist/, the built site. At publish the same two scanners run
over .vercel/output — the exact bytes that upload — and neither road to
production can get past a finding in them.
captured 2026-07-31 · the checks' own output, verbatim · STANDING, ARMED OVER
curated by the operator, not re-run by any build step — this transcript is
asserted, not reproducible; only c1bd6bd above is on the record.
the gate running in this transcript is published in full —
read pii_guard, whole →