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,366
shipped

Motir · Roadmap

MOTIR-3900Done

Re-cut 3 of 3 — the TYPE packs: what each of the 14 types receives, and what it must not

Opened by Zhu Yue ·

The cut that answers the question the story exists for: a translate card must not be told to run pg_policies.

The material to place

VERIFY_EVERY_PRECONDITION alone carries, by subject mention: HTTP seam 24, design asset 23, datastore 11, test lane 9. Those runs land on the types whose cards can fire them — the datastore discharges (pg_policies, pg_roles, information_schema, row_security_active(), uniqueness and tenancy constraints, policy-read-from-the-migration) on code / migration / chore / deploy; the seam runs (routes, DTOs, response-body-vs-storage, auth surface, callable-in-state, operation cardinality, method-is-not-a-path) on code and test; the allocation sweep on design; the lane and expected-results material on test.

The remaining types receive their own bar and the cross-cutting set, and nothing else. Where a type has no rule of its own that is an implementation gap rather than evidence it needs none, and the rule is AUTHORED here — the same call the per-type bars took, and the reason MOTIR-3866 authored nine of them.

Acceptance criteria

  • Every one of the 14 types resolves to at least one pack whose content its cards can act on, and the PR states per type where its rules came from: moved, authored, or already present.
  • A translate, copy, legal, research, review or content cell contains no datastore, HTTP-seam or design-asset discharge. Asserted by pattern over the composed cell — pg_policies, pg_roles, information_schema, row_security_active, AUTH surface, response body, ALLOCATION A DESIGN'S ALLOCATION TAKES AS WELL AS GIVES — not reviewed by eye.

⚠️ AMENDED 2026-08-29 (this card's own run) — the ALLOCATION pattern was too coarse, and following it literally would have moved a rule that belongs where it is. Measured after the cut: the bare word still reaches a quiet cell, and its source is the CROSS-CUTTING allocation-table rule — "AND AN ALLOCATION TABLE THAT NAMES AN ACTION OWES A LINE ABOUT THE SUBSTRATE THAT ACTION WRITES TO … an architecture decision record's ownership grid, a design note's panel list, a permissions matrix" — which a legal or content card can absolutely author, and which is precisely the kind of card that authors one. The criterion's INTENT is no DESIGN-ASSET discharge, and the pattern that expresses it is the design sweep's own wording (A DESIGN'S ALLOCATION TAKES AS WELL AS GIVES), which after the cut is in type-design and reaches the design cell only. pg_roles is ADDED to the list for the same reason in reverse — it is part of the same datastore run and the card's list happened to omit it. The criterion is asserted mechanically as amended, and it is GREEN.

  • A code cell keeps every discharge it has today; the routing baseline proves it lost nothing.
  • The composed size of each of the 14 type cells is stated before and after, with the largest reduction and any increase both named.
  • No pack is declared empty, and every type pack is reachable.
  • Authored rules are prescriptive: the register ratchet holds, and any rise is defended per marker in the PR.

Context refs

  • motir-ai src/llm/planningRulePacks.ts — the type-* packs and PACKS_BY_TYPE.
  • motir-ai tests/planningRuleRouting.test.ts — the superset proof per moved clause.
  • MOTIR-3898 — the cross-cutting set this is the complement of. MOTIR-3897 — the selector.
  • MOTIR-3866 / motir-ai#329 — the per-type bars already shipped, which these preconditions sit beside rather than restate.

⚠️ At the estimation gate at 8 points. It stays one card because the acceptance criterion that matters — a translate cell containing no datastore discharge — is only true once ALL the type-scoped material has been placed. Splitting it by type family would leave that criterion unassertable on every part.

Discussion

No comments yet.

Adding to this discussion signs you in on app.motir.co and brings you back to this request.

Add a comment