<?xml version="1.0" encoding="UTF-8"?>
<spec xmlns="https://vibevm.org/spec/1">
  <title id="root">SPEC-NNN — &lt;one-line goal: which documents converge on what&gt;</title>
  <status stage="spec" state="done" comment="B2 2026-07-24: template in force since Phase A; the task&apos;s own document marker is the fenced example below"/>
  <fence p="1">&lt;status stage="spec" state="plan" ref="SPEC-NNN"/&gt;</fence>
  <p p="2"><fact id="status-legend" status="spec/done">**Status:** queued | in-progress | review | done | returned</fact></p>
  <p p="3"><fact id="EXECUTOR-SPLIT" status="spec/done">**Executor:** Fable when budget allows, otherwise Opus. **Reviewer:** Fable
always (normative text is judgment territory).</fact></p>
  <p p="4"><fact id="wave-field" status="spec/done">**Wave:** &lt;stitching wave number&gt;</fact></p>
  <section id="goal" title="1. Goal">
    <p p="5"><fact id="goal-format" status="spec/done">One sentence: which incoming obligations this task closes.</fact></p>
  </section>
  <section id="obligations" title="2. Incoming obligations">
    <p p="6"><fact id="obligations-source" status="spec/done">From the findings ledger, verbatim rows:</fact></p>
    <fence p="7">| id | from | to | type |
|---|---|---|---|
| F-NNN | `spec://…#anchor` | `spec://…#anchor` | contradiction | duplication | missing-support | terminology | relocation | reality-mismatch |</fence>
  </section>
  <section id="rules" title="3. Rules of engagement">
    <list ordered="false" p="8">
      <item><fact id="RULE-GENRE-FIRST" status="spec/done">**Genre first:** name the genre of every document touched; contract wins
  over lore; normative language never enters design docs.</fact></item>
      <item><fact id="RULE-ANCHORS-IMMUTABLE" status="spec/done">**Anchors are immutable:** a relocated unit leaves a tombstone
  (`&lt;!-- RETIRED: superseded by #new-anchor --&gt;`); never rename or reuse.</fact></item>
      <item><fact id="RULE-SINGLE-SOURCE" status="spec/done">**Single source:** a duplicated norm survives in exactly one anchor; the
  other side becomes a citation.</fact></item>
      <item><fact id="RULE-REALITY-MISMATCH-FLOW" status="spec/done">**`reality-mismatch` closes via the sync-from-code flow** — draft the spec
  diff, surface for owner approval, never apply silently.</fact></item>
      <item><fact id="RULE-NO-SILENT-REPAIRS" status="spec/done">**No silent repairs beyond scope:** discover a problem in a unit not named
  in §2 → record a NEW obligation in the ledger; do not fix it here. Sprawl
  of work is forbidden; sprawl of records is mandatory.</fact></item>
      <item><fact id="RULE-UPDATE-MARKERS" status="spec/done">Update the `&lt;status&gt;` markers of every touched unit in the same edit.</fact></item>
    </list>
  </section>
  <section id="acceptance" title="4. Acceptance">
    <list ordered="false" p="9">
      <item><fact id="ACC-CHECK-GREEN" status="spec/done">`vibe progress check` green on all touched files.</fact></item>
      <item><fact id="ACC-OBLIGATIONS-RESOLVED" status="spec/done">Every §2 obligation status = resolved in the ledger, with the resolving
  edit referenced.</fact></item>
      <item><fact id="ACC-NO-NEW-CONTRADICTION" status="spec/done">No NEW contradiction against the neighbour documents listed here: &lt;list&gt;.</fact></item>
      <item><fact id="ACC-MARKERS-COMMITS" status="spec/done">Markers updated; commit(s) atomic, conventional, no AI attribution.</fact></item>
    </list>
  </section>
  <section id="stop" title="5. Stop rule">
    <p p="10"><fact id="STOP-TWO-WAVES" status="spec/done">A conflict that resists two waves (the counter for this doc pair did not
fall) is conceptual, not editorial: STOP, set `returned`, escalate to the
owner with both readings stated fairly.</fact></p>
  </section>
  <section id="log" title="6. Log">
    <p p="11"><fact id="log-format" status="spec/done">claimed &lt;ts&gt; · notes · resolved obligations · done &lt;ts&gt;</fact></p>
  </section>
</spec>
