Skip to content

moooon

Motir

Vibe your whole project. Bring an idea — Motir's three AI layers plan it, track it, and ship it, end to end. You're looking at Motir, built in Motir.

  • Vibe Project
  • Open Source
  • AI Agent
  • AI Loop
1
requests
0
upvotes
145
planned
1,361
shipped

Motir · Work items

MOTIR-2659Done

(motir-meta) Establish `plan-rules/fixtures/` + the evidence-tag form, and compress the per-card gate checklist

Repo: motir-meta. One PR. The first execution card under MOTIR-2642's COMPRESSION.md. It builds the mechanics the other three compression cards lift, and applies them to the single most expensive region of the corpus.

COMPRESSION.md decides the rule; it deliberately cuts nothing. This card cuts, and the region it cuts is the one where a line costs the most: core.md's per-card gate checklist — 307 lines, 43.9% of core.md, delivered to every planning pass of every phase, kind and type.

Three deliverables, and the first two are what the siblings lift

  1. prompts/plan-rules/fixtures/ — one file per pack, listed in MANIFEST.md with the disposition CORPUS-MAINTENANCE.md already has: loaded by NO planning pass. A fixtures file a pass loads saves nothing; its reader is the rule-authoring path and anyone re-litigating a rule.
  2. The evidence tag, in the fixed form COMPRESSION.md § Decision 1 states, applied to every one of the 16 numbered gates that carries warrant.
  3. A guard on split.py — see below. It is in this card because this card is the one that makes the hazard live.

⚠️ split.py becomes destructive the moment this card lands

split.py regenerates every pack from the pre-split corpus at f7d5723. Today that is a safe no-op — re-running it reproduces the packs byte-identically. After this card's compression it does not fail, it silently reverts the corpus and prints success. verify.py at least goes red; this one does not. Fixing it is part of this card because this card creates the exposure.

The rule being applied (do not re-derive it — read § Decision 1)

A rule is TRIGGER + DIRECTIVE + WARRANT. Only WARRANT moves. The discriminator is mechanical: delete the span and ask whether the rule still FIRES. Changes when it fires ⇒ trigger, it stays, whatever incident it cites. Changes only whether a reader BELIEVES it ⇒ warrant, it moves.

Gate 1's lexical tells ("a second repo's FILE or SYMBOL named anywhere inside an acceptance criterion") are TRIGGER and stay inline in full. Gate 1's "Three instances in two days … (MOTIR-2057, notes.html #215 … MOTIR-1983, #216)" is WARRANT and moves.

Acceptance criteria

  1. prompts/plan-rules/fixtures/core.md exists and holds, verbatim, every warrant span this card removes from prompts/plan-rules/core.md, each under an anchor the inline tag points at.
  2. MANIFEST.md lists fixtures/ in its "The files" table with loaded when = never — no planning pass loads these, in the same words CORPUS-MAINTENANCE.md carries. The row is added in split.py, which generates that table — a hand-edit to MANIFEST.md alone drifts on the next regeneration.
  3. Every one of the 16 numbered gates that carried warrant carries exactly one evidence tag in COMPRESSION.md § Decision 1's four-slot form, and no gate's trigger or directive text is re-worded.
  4. Gate numbering is untouched — 16 gates, same numbers, same order, one runnable list in core.md. No gate moves to another pack (§ Decision 2 is settled; this card does not reopen it).
  5. python3 prompts/plan-rules/COMPRESSION.measure.py reports the checklist region below 200 lines, down from 307. AMENDED 2026-08-11 during this card's run — the number was unreachable under § Decision 1, and the target gives way, not the rule (§ Decision 4). The replacement: every attributable warrant span in the region is moved and the residue is REPORTED with its arithmeticCOMPRESSION.measure.py prints the region's new size, and the PR body states what stayed and why.
    • The evidence. COMPRESSION.md measures the corpus-wide warrant share and takes the SENTENCE grain as its working figure (29.9%). This criterion carried that proportion across to a region it had never been measured on. The record's own classifier, scoped to core.md lines 31–337, returns 103 lines of 307 — so 307 − 103 = 204, above 200 before one tag line is inserted, and § Decision 1 mandates one tag per compressed rule. The only grain that reaches under 200 is the BLOCK grain (258 lines), which removes triggers and directives along with the evidence.
    • Delivered: 307 → 278, 4 258 characters of warrant moved to fixtures/core.md in 19 spans across 5 gates. The gap to 103 is that the classifier marks any sentence containing a citation, which sweeps in pure triggers that happen to cite.
    • Amended per run.md's calendar rule: COMPRESSION.md merged at 14:29, this card was authored at 14:0014:07, so the record outranks the card and a contradicted clause is amended on the record rather than dropped. Planning bug: MOTIR-2687. Lesson: notes.html #258 — renumbered from #257 when motir-meta PR #170 merged first and took that number; #257 (MOTIR-2686) is the sibling instance of the same family, and #258 cross-links it.
  6. WARRANT CONSERVATION is proved in the PR body (COMPRESSION.md § Decision 1, invariant C): the diff against the pre-compression tree contains only (a) deletions whose text appears verbatim in fixtures/core.md and (b) inserted tag lines matching the fixed form. Nothing else.
  7. split.py refuses to overwrite a compressed pack: it compares what it would write against what is on disk and exits non-zero naming the divergent packs, unless --force is passed. Proved by running it and showing it declines.
  8. prompts/plan-rules.md, DECISION.md and CLASSIFICATION.md are not edited — they are records of what was measured and decided, not of the corpus's current line counts.

Context refs

  • prompts/plan-rules/COMPRESSION.md — § Decision 1 (the tag form + the deletion test), § Decision 2 (why the checklist is not split), invariant C, and the split.py hazard in § Consequences.
  • prompts/plan-rules/COMPRESSION.measure.py — the measurement, re-runnable; --check asserts the caps.
  • prompts/plan-rules/split.py — the generator; it authors MANIFEST.md and would revert the packs.
  • prompts/plan-rules/core.md lines 31–337 — the checklist.