Planning bug: the corpus routes 13 live citations to `plan-rules/op-replan.md`, which MOTIR-3869 DELETED — including one that says "stated in full there; do not restate it here"
Opened by Zhu Yue ·
Found while reading the rules for a re-plan of MOTIR-3942 (2026-09-02), following run.md's instruction to read plan-rules.md in full before touching a card. The pack it sent me to does not exist.
The defect
prompts/plan-rules/op-replan.md was retired by MOTIR-3869 / MOTIR-3870 — "the OPERATION axis is retired: replan IS plan" — and its rules were merged into core.md. MANIFEST.md records that correctly. The files a planning pass actually LOADS were not swept, and still route to the deleted path.
Measured — the command, its scope and its reading:
$ ls prompts/plan-rules/op-replan.md
ls: cannot access …: No such file or directory
$ grep -c op-replan prompts/_shared.md prompts/run.md prompts/plan-procedure.md \
prompts/plan-rules/core.md prompts/plan-rules/kind-story.md
prompts/plan-procedure.md:5 prompts/plan-rules/core.md:4
prompts/plan-rules/kind-story.md:1 prompts/_shared.md:1 prompts/run.md:2
→ 13 citations, in the five files a pass loads or is told to read
⚠️ The worst one, and why this is not cosmetic
core.md — the pack every planning pass loads — carries this, in gate 8's fourth-arrow limb:
"Stated in full, with its direction check and its prose signal, in
op-replan.mdlimb (2); do not restate it here."
A reader following that instruction finds no file, and cannot tell from the citation alone whether the rule was lost in the merge or merely moved. I checked: the content SURVIVED — the SCOPE IS NOT STATIC / THE TAKER INHERITS THE DONOR'S BLOCKERS limb is in core.md's own reconcile section, a few hundred lines below the citation. So this is a broken pointer, not a lost rule. That is exactly what makes it worth filing rather than shrugging at: the next reader has to do that verification too, and the cheap failure is to conclude the rule is gone and re-derive it — which is how one rule becomes two copies that drift.
The others are ordinary routing: core.md's gate index sends gate 8 to op-replan.md; run.md twice tells a blocked run that its re-plan rules "live in plan-rules/op-replan.md"; plan-procedure.md cites it five times including inside THE REPLAN ACTION's own steps; _shared.md's pack list describes it as a live pack.
Scope BOUNDARY
- IN: the 13 citations in the five files above — repointed to where each rule actually lives (
core.md's reconcile rules section for the merged limbs,MANIFEST.mdfor the routing). - OUT: the HISTORICAL and MEASUREMENT files.
RESTATEMENT.md(21),COMPRESSION.md(4),ASSIGNMENT.md(1),DECISION.md(1),MANIFEST.md(1) and the three.pygenerators nameop-replanas a RECORD of the split and its retirement. Those are correct as they stand and must not be swept — a record of a deleted thing is not a broken pointer. - OUT: re-wording any rule. This is a citation repair. A rule that changes wording here is a defect, not a deliverable.
- OUT:
motir-ai— verified, not assumed (core.mdgate 19, the TWO HOMES).git grep -c op-replan origin/main -- srcreturns 2, both inplanningRulePacks.ts, and both are PROVENANCE comments rather than routing: a pre-split line-mapping note (:448) and the retirement's own explanation (:838).SHARED_PLANNING_RULESencodes rule TEXT, not pack paths, so the shipped planner has nothing to repoint. This is a single-home card, and that grep is why.
Acceptance criteria
grep -rn op-replanover the five live files returns 0, and every one of the 13 sites names a destination that exists.core.md's "do not restate it here" citation resolves — it points at the section ofcore.mdthat actually carries the taker-inherits-the-donor's-blockers limb, so a reader can reach the rule without a search.- The historical files are UNCHANGED — asserted by diff: the change touches exactly the five files named IN, and no other.
- No rule text is re-worded. Asserted by a word-diff over the touched hunks showing only citation paths changing.
Context refs
motir-metaprompts/plan-rules/MANIFEST.md— the retirement, stated correctly, and the routing every repointed citation should agree with.motir-metaprompts/plan-rules/core.md— The reconcile rules — MERGED HERE FROMop-replan.md, the section the merged limbs actually live in.motir-metaprompts/plan-rules/COMPRESSION.md§ Consequences — whyverify.pyis red onmainand why a reassembly proof cannot be used to check this.- MOTIR-3869 / MOTIR-3870 — the cards that retired the operation axis.
Discussion
No comments yet.
Adding to this discussion signs you in on app.motir.co and brings you back to this request.