Task 3, re-scoped per the plan's honest-FAIL branch: the CPU verdict FAILED
(the ladder ran to its documented stop), so the c3 class is NOT retired —
the record instead carries the executed-and-measured ALT truth.
- budget-gates.mjs: the verdict law documents the Phase-8 outcome (ALT
EXECUTED, optimality green, CPU verdict FAIL 152.788/185.692 ms quoted
with date; L=32 probe measured worse) — the stale 'next-milestone item'
wording is gone; ROUTE_CPU_DRIFT_GUARD_MS re-anchored 200 → 400 (the
post-ALT documented band outgrew the old guard; ≈2x the worst shipped-
config run 185.692 ms); the guard stays a regression trip-wire, the 8 ms
budget stays and its FAIL still prints every run
- budget-audit.test.mjs: CPU3 pins the new law (evidence must name the
EXECUTED-in-Phase-8 verdict and must NEVER say 'next-milestone');
19/19 vectors ok (the count holds — no vector dropped)
- docs/BUDGETS.md: route-cpu row carries the Phase-8 measured numbers +
date; the c3 section is the honest post-ALT record (what changed, the
quoted gate lines, the one-directional-Lipschitz wall, the open
escalation) — staged as selective hunks; the tree's pre-existing
doc-sync edits in other sections remain uncommitted, untouched
grep law: zero 'next-milestone' hits in budget-gates.mjs + BUDGETS.md;
ROUTE_CPU_DRIFT_GUARD_MS still exported and used.
- asset-header probe reads HTTP status BEFORE interpreting headers — a
non-2xx is deployment drift (the notRun exit-2 class), never a cache
violation; the violations.length count bug fixed
- XHTML namespace URI joins the SVG spec-identifier adjudication
- probeUnavailable carries the reason only (the CLI prints NOT RUN)
- CP2/AU1 suite vectors updated to the corrected contracts
Residue note: these edits were on the tree during 07-03/07-04 execution
but escaped those plans' commits (07-04-SUMMARY residue caution).
- a missing package.json in the audit root is T-07-22's environment-drift class,
not a corpus failure — the corpora cannot even be spawned there
- AU1's flag-skip assertion matches the printed 'NOT RUN — (pass --live)' shape
- every gate must print its measurement and carry its contract id
- every gate must be able to FAIL on a synthetic violation (fixture injection)
- a skip is never a pass (notRun class; T-07-22)
- SA1-5: each source gate returns {id, pass, evidence}, passes the current
tree, and FAILS a synthetic violation via injected fixture roots
- BG1-2: production web/dist only; missing build is notRun (never a pass)
- CP1-2: probeUnavailable exact shape + credentials-absent degradation
- AU1-3: CLI exit 0/1/2 — CLEAN on this tree, FAILED on a fixture root
(PRIVACY_AUDIT_ROOT), NOT RUN for --live without credentials