<?xml version="1.0" encoding="UTF-8"?>
<spec xmlns="https://vibevm.org/spec/1">
  <title id="root">HARVEST — &lt;feature, reader-facing name&gt;</title>
  <status stage="spec" state="done" comment="B2 2026-07-24: template in force since Phase A (campaign writes cards from it); fact grain from birth"/>
  <list ordered="false" p="1">
    <item><fact id="CARD-ONE-PROMISE" status="spec/done">One card = one promise worth telling a reader about.</fact></item>
    <item><fact id="CARD-WRITTEN-HOT" status="spec/done">Written in the minute the knowledge is hot (verification or fix just
  done); polished later, in the documentation stage — never now.</fact></item>
  </list>
  <list ordered="false" p="2">
    <item><fact id="FIELD-UNIT" status="spec/done">**Unit:** `spec://…#anchor`</fact></item>
    <item><fact id="FIELD-AUDIENCE" status="spec/done">**Audience:** user | author (CSV allowed)</fact></item>
    <item><fact id="FIELD-PROMISE" status="spec/done">**Promise (reader's register, one sentence):** what the reader can do,
  not what the system must. E.g. "You can pin a dependency to a local
  checkout with one manifest line."</fact></item>
    <item><fact id="FIELD-PROVEN-EXAMPLE" status="spec/done">**Proven example:** command + real output, captured from the verification
  run (this is the doc fixture — it was actually executed):</fact></item>
  </list>
  <fence p="3">  $ vibe &lt;…&gt;
  &lt;real output&gt;</fence>
  <list ordered="false" p="4">
    <item><fact id="FIELD-GOTCHAS" status="spec/done">**Gotchas / edge cases:** what surprised us; what the reader will trip on.</fact></item>
    <item><fact id="FIELD-STABILITY" status="spec/done">**Stability:** freeze-candidate | still-moving (`still-moving` cards wait;
  a chapter is written only from stable cards).</fact></item>
    <item><fact id="FIELD-VERDICT-REF" status="spec/done">**Source verdict ref:** &lt;cache/baseline pointer&gt;</fact></item>
  </list>
</spec>
