decisions/PHASE0_LESSONS.md
Working-memory surface for the Phase-0 execution (per ROADMAP §7 "give it a
memory surface"). Append per workstream; keep entries short and factual.
STATUS.md carries the session narrative; this file carries what the NEXT
worker needs to not re-learn.
cases): F1 expected-diff baseline (exact set match, stale entries fail),
F2 vacuity guard, F3 fullmatch-anchored tokens, F4 coverage floors.
Plus F5 PKs, F6 utf-8 guards via gatelib, F7 scanner→gate with baseline,
F8 over-wide rows, F9 extra registries, F10 version-agnostic base-name
resolution (exact match wins; a stale duplicate version dir surfaces as an
undeclared extra registry, not ambiguity — test asserts that exact
semantic).
harness/run_gates.py + harness/gates_config.json. Exit 0 iff all non-skipped gates pass. targets: [] = loud SKIP, never silent
green. Verified: overall exit 1 while topography is unpopulated; subset
--only stress,fidelity,scan exits 0.
A,C,E,NP,RF,RP (matched [A-Z]+, keys \d{2} exact); FK floors 644/644/62;
chapter_number orders Prologue 0.0 → Epilogue 78.0; the faithful dump has
36 over-wide rows (baselined) and 2 placeholder thread-anchor cells
(Pro/Epi rows — reported, skipped).
live Chapter_Index CSV — dominant_combat_mode (canon enum, gate is
value-agnostic), intensity (peak|standard|valley|relief),
mode_variety_check (combat=Y;puzzle=N;learning=Y;character=Y;transformation=N,
all five keys — R4 requires ALL FIVE Y per CVD 4.5/16.2 verbatim, waivable
per-chapter; combat=Y is separately mandatory and NEVER waivable, R6).
Column additions must be declared in docs/fidelity_baseline.json
added_columns in the same commit AND their content pinned via
extension_hashes (refresh with --emit-baseline, review in git diff), or
the fidelity gate fails. Same for row additions (Boss/School/Link-Graph
population → added_rows + hash).
[SRC: doc-base], [SRC: doc-base # heading fragment], [SRC: registry/tab @ ROW_KEY] —
defined in harness/check_source_anchors.py.
docs/scan_baseline.json blesses 2,060 pre-existing structural signatures in the frozen _source corpus as observed-and-baselined. They are NOT all
reviewed-clean: the 0.F sweep reviews those files; any signature that turns
out to be real corruption becomes a grounded repair and the baseline
shrinks in the repair commit.
--emit-baseline) make theallowlist reviewable in git diff instead of hand-typed. Never run them to
"fix" a red gate without reading why it went red.
confirmed 22 defects in the freshly-hardened harness — including silent-pass
paths in exactly the classes the hardening targeted (spill cells never
compared, raw-token collisions, scan text-key masking, run_gates --only
vacuity, Gate A missing the combat mandate entirely). All fixed; stress
suite grew 53 → 79 cases, seeded from the critics' own reproductions.
cannot.** The gates' author self-tested 53 cases and still shipped 8
critical holes. Fresh-context adversarial review before trust is not
optional process overhead — it is where the actual defects surface. Keep it
for every DRAFT→ACTIVE flip and every gate/contract change.
(cell diffs, over-wide, added registries/tabs/columns/rows, extension
hashes, scan counts, topography waivers) fails BOTH on undeclared observed
AND on declared unobserved. If a baseline never shrinks, it is masking.
--exclude-pro-epi: do Prologue/Epilogue count in pacing windows?Default currently IN (they are nodes in the 79-node arc). Ledger item 7.
verbatim, thrice-stated) with per-chapter waivers; the weaker reading is
'no single-mode dominance' (CVD line ~239). Josh confirms which binds.
T1 docs); §20's letter says 'prose paragraphs'. Confirm or tighten.
throttled + edited, resume wf_b232aa0d-31f), and a deep BPC-fidelity critic
pass on docs/PIPELINE_ADAPTER.md (lints clean; its claims all route through
the ledger before any edit lands, so exposure is bounded).