Bind the long-form VOICE before prose — the discipline the line already
applies to SOURCES (validate-binding), its strongest link.
- C-1/A2-F1: voice-trainer distils a chronicle-voice-profile from the
published gold corpus (per language/format); newsletter Step 0/3a/3b bind
drafting to it, with an explicit never-silent fallback to the short-form
corpus (which the engine itself calls degrading for chronicle voice).
- C-2: Step 3a Pass 0 READS the chronicle-voice-drift-log as a negative list
(it was append-only, never consumed); Step 3b re-reads it in expansion.
- C-3: Step 1 resolves + persists the top-level edition-state.language, making
the template doc-string's "Resolved at Step 1" claim true; the Norwegian
review axis (language-reviewer / voice-scrubber) now fires when the edition
IS Norwegian instead of being silently off by default. Step 6.5 already
consumed the field — resolving it closes the axis end-to-end.
- A2-F2: Step 8 lock appends the locked edition to ingest/published
(provenance=published), so the gold corpus the profile distils from grows
one edition at a time — never the engine's drafts.
Domain-general throughout (languages/formats from the user's own corpus).
test-runner 140 -> 146 (Section 16o: 6 unconditional voice-chain greps +
non-vacuity self-test; anti-erosion floor 123 -> 129). All six suites green
(trends 300, brain 134, hooks 140, tests 35, render 60).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014bE7VbkmR3cqHFEeGfzgwb