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-2630

(motir-meta) Write the missing per-type authoring bars — `chore`, plus one per newly-admitted type

Done
Description

Repo: motir-meta. One PR. The one card in this cluster that writes NEW rule text — deliberately carved out of the pack split, whose whole guarantee is that it re-words nothing.

Two gaps close here:

  1. chore has no authoring bar. It is the one shipped work type the playbook never taught, and it is the most-used type on this project's own planning-bug cards. Its type-chore.md pack would otherwise ship empty — which would fail the pack-split story's own "no pack file is empty" criterion. (Amended — see below: there is no type-chore.md, by decision.)
  2. Each newly-admitted type needs its bar checked, not assumed. The playbook already teaches doc, spike, copy, translate, legal and verification, so those packs are populated by the verbatim move — but the ADR amendment may have collapsed one or two of them into an existing type, in which case the surviving pack's bar must absorb what the collapsed one carried rather than losing it.

⚠️ AC AMENDMENT (2026-08-11, at run time) — the pack layout this card assumed is not the one that shipped

Trigger: the calendar check (run.md, a done design blocker that merged AFTER the card was authored OUTRANKS the card). This card was created 2026-08-10T20:38Z. Its blocker MOTIR-2619 merged its decision record and its split after that: 80e1e10 (DECISION.md) at 2026-08-10T22:33Z and 5b32d96 (the split) at 2026-08-10T22:36Z. The record decides the very thing clauses 1–3 assume, and it decides it the other way.

Rung-2 evidence — prompts/plan-rules/DECISION.md § Decision 1, verbatim on origin/main:

But the type axis is subject to a 40-line floor. Split maximally, type yields fourteen files, of which eight are two lines or fewer — one of them a single bullet. […] a type value whose guidance is under the floor does not get its own file. Four type packs survive it; the remainder go to one type-bars.md loaded on every leaf deepen.

The floor is not only economics — the corpus forbids the alternative. […] That rule needs the complete list visible. Splitting the list into fourteen files, each delivered only to a card that already has that type, destroys the sweep the sentence above it demands.

So type-chore.md must not exist: one file per type is refused twice over — on cost, and because it would destroy the sweep the COMPLETE set rule that the bar sits underneath. The shipped tree confirms it: type-bars.md · type-code.md · type-design.md · type-test.md · type-migration.md, and nothing else.

Nothing about the DELIVERABLE changes — write the chore bar, collapse doc/spike to aliases, fix the type list. Only the file the bar lands in changes, so this is an amendment on the record and not a re-plan. Clauses 1–3 are re-stated below; 4 is unchanged; 5 is widened, with its reason.

Acceptance criteria

  1. prompts/plan-rules/type-chore.md carries an authoring bar…prompts/plan-rules/type-bars.md carries a chore authoring bar in the same shape and register as the existing per-type bars — not a placeholder, and not longer than its neighbours. type-bars.md is where DECISION.md § Decision 1 sends every type under the 40-line floor, and it is loaded on every leaf deepen, which is what keeps the complete set visible to the sweep.
  2. Every type packEvery one of the fourteen admitted types carries a bar somewhere in the pack tree, and no pack is empty. (codetype-code.md, designtype-design.md, testtype-test.md; the other eleven → type-bars.md.)
  3. If the ADR amendment collapsed a type, that type's pack does not exist…The two collapsed names carry no bar of their own and are marked as ALIASES on the surviving member's bulletdoc on content, spike on research — with nothing they taught dropped in the merge. Neither ever had a pack; the collapse is expressed in the bar's text, which is where the two names were readable as two types.
  4. The complete-type-set sweep in the story-composition rule lists exactly the admitted set, with no type named that cannot be set and none settable that is not named. (unchanged)
  5. …the diff touches type packs and the type list, nothing else. → This is the ONLY card in this cluster that changes rule text; the diff touches type-bars.md and every statement of the type list, nothing else. Widened at run time: the set is stated in three places, not one — plan-rules/kind-story.md (the sweep), plan-procedure.md (the procedure step that issues the sweep instruction, and the one a planner actually reads first), and _shared.md (the card data model). All three name doc and spike as members and all three omit chore. Fixing only the first leaves the instruction that drives the sweep still wrong, which defeats AC 4 outright.

The bar to write

Match the shape of the existing per-type bars — each says what a card of that type must SPECIFY, in one or two lines, concrete enough to check. For chore: what the maintenance/housekeeping work is, what "done" looks like when there is no user-visible outcome, and how it differs from code (which ships behaviour) and from research (which produces a finding).

Context refs

  • prompts/plan-rules/ — the pack tree; do not start before it exists.
  • prompts/plan-rules/DECISION.md § Decision 1 — the 40-line floor that fixes WHICH type packs exist.
  • prompts/plan-rules.md's per-type authoring bar (pre-split) — the shape to match; it now lives in type-bars.md, with the header in kind-leaf-deepen.md and the code/design/test bullets in their own packs.
  • motir-core docs/decisions/work-item-type-taxonomy.md Amendment 1 — the amendment that fixes the final admitted set at fourteen.