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 |
||
|---|---|---|
| .. | ||
| analytics | ||
| brain | ||
| contract-gate | ||
| specifics-bank | ||
| trends | ||
| check-model-consistency.mjs | ||
| check-replace-safety.mjs | ||
| test-runner.sh | ||