MotirBuilding in public
MOTIR · moooon
onMotir
You’re viewing a public project. Anyone can view it — no account needed. Sign in to submit, upvote, or comment on requests.View-only — you can’t edit work items
MOTIR-3397

Planning bug: the MID-SENTENCE WIDENING sweep is owed AGAIN — three packs red for the third time, so MOTIR-2966's remedy collects the debt without stopping it accruing

Done
Description

Repo: motir-meta. One PR. Surfaced 2026-08-21 by the motir run MOTIR-3377 execution, under notes.html #27 (an out-of-scope defect found mid-card is logged, never absorbed).

The defect

MOTIR-2966 swept exactly this shape on 2026-08-18 and reached 0 violations. Three packs are red again, and they are not the same three. Measured on a pristine detached worktree at 2d3c93eee2c3 — which is MOTIR-3377's own named base, i.e. this was already true before that card was filed:

$ python3 prompts/plan-rules/COMPRESSION.conserve.py
[FAIL] core.md               [FAIL] kind-bug.md              [FAIL] kind-leaf-deepen.md
3 pack(s) violate invariant C

Every one is COMPRESSION.md § Decision 1's MID-SENTENCE WIDENING — a sharpening that edited INSIDE a surviving sentence rather than appending one. The two shapes present:

core.md, kind-leaf-deepen.md   REPLACE  expected 'verce'   got 'f'
                               REPLACE  expected 'v'       got 'fly s'
                               REPLACE  expected 'l env'   got 'ts'
kind-bug.md                    INSERT   got ' ### ⚠️ …AND IF THAT PARENT IS `done`, THE BUG DOES NOT GO THERE …'

The first is the Vercel → Fly migration written in place (vercel env lsfly status / fly secrets list) across two packs — a real re-wording of surviving rule text, which is precisely what invariant C is for. The second is an inserted ### heading whose run carries no clean sentence start, so is_addition clause (3) rejects it.

Why it is a card, and a DIFFERENT card from MOTIR-2966

MOTIR-2966's own explanation named the general failure exactly: "a cost accepted per-edit accumulates into a state nobody owns … Debt like this cannot be collected by the rule that created it, because that rule addresses one author at one moment; it needs a card." It needed a card, it got one, and three days later it needs another. That is the finding: the remedy MOTIR-2966 executed is a debt COLLECTOR, and nothing stops the debt accruing.

conserve.py's docstring uses THREE as its own threshold — "red for a benign reason on three packs and counting is a check nobody reads." The corpus has now hit three, twice.

Do not read this as an argument to loosen is_addition. MOTIR-2934, MOTIR-2969 and MOTIR-3377 each declined that in turn, and the vercelfly case here is a genuine re-wording — the check is right about it. The question this card owes is the SECOND one: what makes the next author record the span at the moment of the edit, rather than a sweep card three packs later.

Acceptance criteria

  1. python3 prompts/plan-rules/COMPRESSION.conserve.py is run and quoted BEFORE any edit, on a pristine origin/main worktree, so the fix is measured against the recorded red and not a re-derived one.
  2. For EACH of the three packs, the original span is recorded verbatim in prompts/plan-rules/fixtures/<pack>.md under its own anchored section, following the non-warrant-span convention MOTIR-2934 established at fixtures/core.md#gate-8-counted-lead-in.
  3. NO rule text is re-worded to chase green. Any pack where § Decision 1's escape hatch is spent instead is named in COMPRESSION.md with the reason.
  4. python3 prompts/plan-rules/COMPRESSION.conserve.py is re-run over every pack afterwards and its verdict quoted: 0 packs violate invariant C, or the PR body names each survivor and why the escape hatch was right for it. phase-deepen.md is [PASS] as a RESTATEMENT once MOTIR-3377 merges and is NOT in this card's scope.
  5. --self-test still reports 21/21 PASS, proving the exemption was not widened to reach these.
  6. The recurrence is answered, not only swept. CORPUS-MAINTENANCE.md and/or COMPRESSION.md § Decision 1 gain the AUTHOR-side instruction that makes the next widening record its own span at the moment it is made — the shape MOTIR-2966 diagnosed and did not write. Whatever is chosen is recorded with the reason; "a third sweep card" is not an answer.
  7. COMPRESSION.measure.py --check is quoted before and after; fixtures files are not measured, so the expected delta is zero — quote it rather than assume it.

Context refs

  • motir-meta prompts/plan-rules/COMPRESSION.md § Decision 1 — the intended-cost sentence, the escape hatch, and the amendment blocks MOTIR-2934 / MOTIR-2969 / MOTIR-3377 added.
  • motir-meta prompts/plan-rules/fixtures/core.md#gate-8-counted-lead-in — the worked precedent for a non-warrant span.
  • motir-meta prompts/plan-rules/CORPUS-MAINTENANCE.md — where the author-side half of AC 6 most likely belongs.
  • MOTIR-2966 — the same sweep, three days earlier; its explanation is this card's diagnosis.
  • MOTIR-3377 — the run that measured this. Its PR removes phase-deepen.md from the red set as a RESTATEMENT and changes this script's output format, so run this card after that merges.