PHASE0_LESSONS.md

decisions/PHASE0_LESSONS.md

Phase 0 — Lessons & Working Memory (Session 5, Fable 5)

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.

0.A Harness hardening (landed this session)

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).

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 # heading fragment], [SRC: registry/tab @ ROW_KEY]

defined in harness/check_source_anchors.py.

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.

allowlist reviewable in git diff instead of hand-typed. Never run them to

"fix" a red gate without reading why it went red.

Re-hardening round (same session, commit 77482e4)

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.

Open knobs recorded for the ledger

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).

Generated by harness/site/structure_site.py — the URL path is the repo path. review root