6.7.1 Reporting-shaped corpus — `db:seed:reporting` time-spread 10k-issue seed + saved filters/dashboard/rules through the shipped services (+ helpers, CI-lane cap)
Estimate: 28m · Depends on: 6.2, 6.3, 6.6, 5.3.3, 5.4.2
The fixture gap (the 4.7.1 / 5.6.1 precedent): no existing large seed builds reporting-shaped data. A scripts/seed-reporting.ts (+ pnpm db:seed:reporting) constructing the corpus through the shipped services (the no-raw-inserts rule, doubling as a bulk smoke test of every Epic-6 write path), with ONE recorded deviation: a documented timestamp back-dating pass (created/resolved/revision timestamps are server-set and no service accepts them; the pass is confined to this script, touches timestamps only, and the self-check asserts the resulting spread).
The corpus: 10k issues (cap-parameterised env var; the CI lane runs reduced — the board-at-scale cap precedent) spread across ~26 weeks of created/resolved history with realistic weekly variance (the created-vs-resolved report needs real buckets), full spread over status/priority/assignee/kind, label + component + all five custom-field types valued on meaningful subsets (the 6.1 predicates need selective matches, not all-or-nothing), a long-tail of resolved issues for the status-distribution report. Plus the Epic-6 entities: 5+ named saved filters (6.2) spanning enum/negation/date-window/CF predicates, one populated dashboard (6.3) whose widgets consume them, and 3+ enabled automation rules (6.6) over the built-in action set. Deterministic (the FNV-hash convention — no Date.now/random; stable across reseeds). Fixture helpers (tests/e2e/_helpers/reporting.ts): accessors for the corpus counts AND the expected aggregates (weekly created-vs-resolved buckets, the status distribution) computed independently from the deterministic spread — the values the 6.7.3 report asserts compare against.
Acceptance criteria
pnpm db:seed:reportingbuilds the corpus + saved filters + dashboard + rules idempotently through the shipped services (re-run converges; any service error fails loudly), deterministic, cap-parameterised with the CI lane reduced.- The seeded shape matches the spec sheet (time spread with weekly variance, field spread, selective predicate matches, the Epic-6 entities) — asserted by a fixture self-check, including that the timestamp pass produced the intended distribution.
- The back-dating deviation is documented in the script header (what, why, scope) and touches nothing but timestamps.
- Helpers expose counts + independently-computed expected aggregates; existing seeds and suites untouched and green;
pnpm test:coverageholds on shared helpers.
Context refs
- The fixture lineage:
db:seed:large(2.5.16),seedLargeBoard(3.5.1), the 4.7.1 sprint seed,db:seed:collab(5.6.1) — the cap/CI-lane + determinism patterns - The Epic-6 services as they land (6.2 saved filters, 6.3 dashboards, 6.6 rules) — the only write paths besides the timestamp pass
- 5.3.3 / 5.4.2 (custom-field + label write paths for the predicate spread)
- The no-raw-inserts seed rule (MOTIR.md Plan seed §) + the recorded deviation in the Story 6.7 header