kind-leaf.md and kind-bug.md restated — the repo-claim family and the bug-parenting family
The two leaf-kind packs a pass loads for any task / bug / subtask. Measured with REGISTER.count.py at origin/main a9caaa1:
| pack | lines | cautionary | prescriptive | ratio |
|---|---|---|---|---|
kind-leaf.md | 142 | 7 | 3 | 2.3x |
kind-bug.md | 176 | 6 | 0 | ∞ |
| total | 318 | 13 | 3 | 4.3x |
kind-bug.md at 6 cautionary against 0 prescriptive is the corpus's clearest case of a pack that only ever tells the planner what went wrong. It is also short, coherent and about a single decision — where a bug hangs — so it is the cheapest place to demonstrate that a zero-prescriptive pack can become an instruction without losing anything.
kind-leaf.md carries the repo-claim family — derive the (repo) tag from the deliverable list; a card that declares its own split in prose has not split; the tell is lexical, so run it structurally criterion by criterion; a fold-in's premise is a (repo) claim in disguise — plus the design-content workflow rule, the decision-amendment-spawns-a-design rule, and the planning-time design gate with its the other card must be OTHER limb.
kind-bug.md carries three: a bug is parented by its finding story, design included; if that parent is done the bug goes forward instead; and a measured mechanism may not motivate an acceptance criterion.
Two things to keep in their positive form regardless of how the register reads them:
- The structural repo check — go criterion by criterion and name the repo each one is discharged in; two repos in that column is a split — is a procedure, not a warning, and it is what the pack's own text says to use instead of grepping for phrases.
- The we-only-plan-forward rule is the whole reason
kind-bug.mdexists in its current shape and the one instruction that prevents a status cascade nobody can undo. State it as hang it off the nearest not-doneancestor and carry the trace withrelates_to, not as an account of what adoneparent does when it is handed a child.
Both packs carry > **Warrant:** blocks with → [fixtures/…] pointers already, so a large share of the migration is deleting a pointer to prose that has already left.
Acceptance criteria
RESTATEMENT.mdgains one section per pack, each with a table row per unit or named limb carrying its disposition, before/after line count, and for a migrate the destinationsourceRef.kind-bug.mdends with a non-zero prescriptive count — the pack states what to DO — and the PR body quotes its before and after figures beside the whole-corpus method.- The structural repo check and the we-only-plan-forward rule survive as instructions with their decision content intact.
- Every migrated paragraph is verbatim under
#restatementinprompts/plan-rules/fixtures/kind-leaf.mdandfixtures/kind-bug.mdrespectively. python3 prompts/plan-rules/REGISTER.count.py kind-leaf kind-bugat this card's base and again on the result, both sets of figures and the base ref in the PR body.- No rule moves between the two packs; a rule that belongs to leaf kinds generally stays in
kind-leaf.mdeven where its worked example is a bug. COMPRESSION.conserve.pyis expected to FAIL on both; quote it, cite MOTIR-3377, and change no rule text to chase it.- The change lands via a branch and a PR against
main; no direct commit.
Context refs
motir-metaprompts/plan-rules/kind-leaf.md·kind-bug.md.motir-metaprompts/plan-rules/fixtures/kind-leaf.md·fixtures/kind-bug.md.motir-metaprompts/plan-rules/RESTATEMENT.md·REGISTER.count.py.motir-metaprompts/log-bug.md— the filing protocol these rules are the plan-time half of; the restated wording must not contradict it.- MOTIR-3308 — the worked example of the table and the restated voice.