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
Back to roadmap
Implemented

The story's coverage + integration gate — the assembled selector, end to end from a generation pass

Sub-taskopened by Zhu YueMOTIR-3901

The per-repo gate for motir-ai, run after the story's code subtasks merge. It measures their real merged coverage and adds the assembled-seam assertions no single subtask can make, because each of them owns one layer of a selector that is only correct as a whole.

What it asserts that its producers cannot

  • End to end from a real pass, not from the resolver. Drive runGenerationPass so the skeleton proposes a task with a type and the deepen session composes; assert the type's packs are in the DEEPEN session's system message. Every subtask can prove its own layer while the composed prompt still carries the wrong rules — that is exactly how the original defect survived, and the resolver-level test passed throughout.
  • The negative, per type. For each of the 14 type cells and the 3 deepen-kind cells, assert the composed string contains no discharge that cell cannot fire. The patterns are code facts, so they carry their command in the test.
  • The sum, not the product. A deepen cell resolves kind packs or type packs, never both; the enumerated space matches the arithmetic.
  • No rule stopped firing, over the whole move rather than per subtask: every segment in the old corpus is reachable from at least one cell in the new one, and the PR names any that is not, with the reason it was retired.

Coverage for the individual layers rides with its own subtask; this card tops the story's changed surface up to the per-file floor and adds only the seam.

Acceptance criteria

  • The suite drives a generation pass and asserts on the composed DEEPEN system message, with the skeleton having supplied the type.
  • Per-cell negative assertions exist for every type that cannot fire a datastore, seam or design discharge, and each names the pattern it searched.
  • The old corpus's segments are enumerated and each is shown reachable in the new one, or listed as deliberately retired.
  • The story's changed surface meets the project's per-file coverage floor, measured at merge rather than enumerated at plan time.
  • Real Postgres where the suite touches it; no assertion depends on a stub of the module under test.

Context refs

  • motir-ai tests/planningRuleRouting.test.ts, tests/planningRulePacks.test.ts, tests/plannerPromptAssemblyGate.test.ts — the existing guards this assembles over.
  • motir-ai tests/treeGeneration.test.ts — the generation-pass harness and its runToolSession mock.
  • MOTIR-3896 / MOTIR-3897 / MOTIR-3898 / MOTIR-3899 / MOTIR-3900 — the producers whose merged surface this measures.

This story is NOT user-facing — a rule corpus has no surface a person watches — so it plans no acceptance video and no E2E, and accepts on its tests alone.

Comments (0)

No comments yet — be the first to weigh in.

Sign in to comment

Reading is open to everyone; posting needs a Motir account.

Sign in