docs(okf-check): body-text emitters are now ZERO — okr migrated too

029ffb8 (this session, hours ago) said one emitter remained. okr migrated the
same day, so that is already stale. Both emitters are gone:
- linkedin-studio at its bc47c18 (scaffold.ts)
- okr at its 1da9dd8 — okf-index.mjs now emits okf_version via writeFrontmatter
  ahead of the `# heading`; only okf_layout stays in body text.

Verified read-only against okr e662196 rather than taken from their notice.

The fallback stays, but its justification changed with them: it now covers
bundles already written in the old form, not emitters still producing it. okr
made its own checker tolerant (049259d) BEFORE moving the emitter (1da9dd8), so
nothing forces a simultaneous migration and the parity signature does not split.
Re-measured after the change: check-okf-parity 9/9 green, okf-check 25/25.

Removal condition restated honestly: only once every bundle in the wild has been
rewritten — which nothing tracks today.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RDSiMcgLMpEETwtkc86Nym
This commit is contained in:
Kjell Tore Guttormsen 2026-08-02 21:22:05 +02:00
commit c6c82b358e

View file

@ -80,14 +80,18 @@ function unquote(value) {
// single carved exception to "index files contain no frontmatter" (okf/SPEC.md §8:509-510 +
// §12:773-775, read at 3fcbb9f). This convention previously said the opposite.
//
// The pre-0.3 body-text form is still READ and still passes. That is deliberate, not leftover:
// ONE marketplace emitter still writes it (okr scripts/okf-index.mjs:204 — body text, emitted
// after the `# heading` line with no `---` delimiters; measured 2026-08-02 at okr d634385), and
// check-okf-parity compares this very value against okr's LIVE checker. Reading frontmatter alone
// would report null here and 0.1 there, splitting the parity signature on every body-text bundle.
// So placement is DECLARED, not enforced: the gate reports which form it found and moves on.
// linkedin-studio was the second emitter; it migrated to root frontmatter at its bc47c18
// (scaffold.ts, measured 2026-08-02). The fallback becomes removable only once okr migrates too.
// The pre-0.3 body-text form is still READ and still passes. As of 2026-08-02 that is no longer
// about live emitters: ZERO marketplace emitters write body text now. Both migrated the same day —
// linkedin-studio at its bc47c18 (scaffold.ts), okr at its 1da9dd8 (okf-index.mjs now emits via
// writeFrontmatter before the `# heading`; okf_layout alone stays in body text). Verified read-only
// against okr e662196, not taken from the notice.
//
// The fallback stays anyway, and the reason CHANGED with them: it now covers bundles already on
// disk in the old form, not emitters still producing it. Nothing forces a simultaneous migration —
// okr deliberately made its own checker tolerant (049259d) BEFORE moving its emitter (1da9dd8), so
// old bundles keep validating on both sides and the check-okf-parity signature does not split.
// Remove the fallback only when every bundle in the wild has been rewritten, which nothing tracks
// today. So placement is DECLARED, not enforced: the gate reports which form it found and moves on.
//
// okf_layout is deliberately NOT read here. §12 (v0.3) keeps it in body text, because upstream's
// exception is enumerated to ONE key ("an okf_version key"); this convention's own extension