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-257Done

4.7.1 At-scale Scrum fixture — sprint-shaped large seed (active sprint + points) + helpers

Estimate: 25m · Depends on: 3.5.1, 4.1, 4.3.3

The harness the two journey specs build on — a sprint-shaped large dataset (a large active sprint holding board-shaped issues with a point spread) plus the reused test-only env seam over the load-model bounds, so the at-scale Scrum states are reachable deterministically and cheaply. Test infrastructure only (a dev seed extension + e2e helpers) — it changes NO UI, so the design gate does not fire.

Sprint-shaped large seed. seedLargeBoard (3.5.1, scripts/seedLargeBoard.ts, driven by SEED_SHAPE=board) spreads issues across every status (column), many assignees, every priority, several epics, and a Done-age spread — but its issues are NOT associated with a sprint, so the Scrum projection (4.5.2) returns sprint: null over it. Add a SEED_SHAPE=scrum mode (a sibling seedLargeScrumSprint the script calls, composing the existing board-shaped distribution — keep it idempotent + service-routed like the original, NO raw inserts that skip the kind-parent triggers) that, on top of the board-shaped spread, (a) creates an active sprint in the BIG project (via the shipped sprint service/repo from Story 4.1 — start it, or DB-set state=active + the window in the fixture the way 4.5.4 sets active-sprint state directly, since the lifecycle UI is Story 4.4); (b) associates a large bounded set of the board-shaped issues with that sprint (sprintId) so the Scrum board is at scale — spanning every column (incl. the tall one), every group-by lane, and the Done-age spread; (c) leaves a slice of issues OUTSIDE the sprint (still in the backlog) so a scope test can assert they are absent from the Scrum board; (d) gives the sprint issues a story-point spread (storyPoints via the 4.3.3 field — some estimated, some NULL) so the header committed/completed/remaining + per-column point pills are at scale and the unestimated-→0 path is covered; and (e) creates a planned carry-over target sprint in the same project (the 4.7.3 complete-with-carry-over journey needs a non-backlog target). Tunable via the existing SEED_* envs (e.g. SEED_SPRINT_ISSUE_COUNT).

Cap + Done-age test seam (reused). The BOARD_ISSUE_CAP (5,000) / DONE_AGE_WINDOW_DAYS (14) env seam already exists from 3.5.1 (resolved at the boardsService boundary, falling back to the shipped constants when unset, wired only into the Playwright webServer / vitest env). The Scrum projection scopes the SAME getBoard to the sprint, so the seam governs the sprint-scoped board unchanged — this subtask REUSES it (no new seam), and a unit test confirms the unset-env default is still the shipped 5,000 / 14.

E2E helper extensions. Extend tests/e2e/_helpers/board.ts (the 3.5.1 at-scale helpers) with the Scrum-specific helpers the journey specs need (sign in as the sprint-seed owner, open the project's Scrum board, read the sprint header points + per-column point pill, assert an issue is/ isn't in the active sprint scope) — additive, no change to the existing 3.5.1/4.5.4 helpers.

Acceptance criteria

  • SEED_SHAPE=scrum pnpm db:seed:large seeds the BIG project with a large active sprint whose issues span every column (one tall enough to virtualize), every group-by lane + catch-all, a Done-age spread in the terminal column, and a story-point spread (some NULL); a slice of issues stays OUTSIDE the sprint; a planned carry-over target sprint exists in the same project. Idempotent + routed through the shipped sprint/work-item services (no raw inserts), refusing to run under NODE_ENV=production like the original.
  • The fixture REUSES the 3.5.1 cap + Done-age env seam (no new seam); a vitest test asserts the unset-env default still equals the shipped BOARD_ISSUE_CAP (5,000) / DONE_AGE_WINDOW_DAYS (14) (no production behaviour change).
  • tests/e2e/_helpers/board.ts gains the Scrum at-scale helpers (sprint-seed sign-in, Scrum-board open, sprint-header points read, in-sprint-scope assertion) without altering the existing helpers; a focused vitest asserts the sprint-shaped seed yields the documented active-sprint / column / lane / Done-age / point distribution and that the Scrum projection (getBoard) over it returns the sprint summary + the scoped set.
  • No migration, no UI change, no new product surface — dev seed extension + reused seam + test helpers only.

Context refs

  • scripts/seedLargeBoard.ts (3.5.1) + scripts/seed-large.ts (SEED_SHAPE switch, 2.5.16/3.5.1) — the board-shaped seed + its SEED_* knobs + idempotent service-routed pattern to extend with the sprint dimension
  • lib/services/sprintsService.ts + lib/repositories/sprintRepository.ts (Story 4.1 — sprint entity + issue→sprint association) + the workItem.sprintId field; storyPoints (4.3.3) — the model the seed associates + estimates
  • lib/services/boardsService.tsBOARD_ISSUE_CAP / DONE_AGE_WINDOW_DAYS / the 3.5.1 env seam + the 4.5.2 scrum-scoped getBoard the seed feeds
  • tests/e2e/_helpers/board.ts (3.5.1 at-scale helpers) + tests/e2e/_helpers/{workflow,shell-session,db-reset}.ts; tests/helpers/db.ts; motir-core/CLAUDE.md (real Postgres, no mocks, service-routed seeds)