OPER-154
[OPER-QA-14 CORRECT] Split stalled qa-inbox-ui PR #296 into 4 landable stages (~500 LOC each)
Band
MEDIUM
Suggested
Justin Cooke
Body
feature_id: FEAT-studio-qa-projects verify_cmd: pnpm --filter @operant/qa-inbox-ui build && pnpm --filter @operant/qa-inbox-ui test ## Context PR #296 (`feat(qa-inbox-ui): @operant/qa-inbox-ui package + publish pipeline + purity gate (OPER-130)`) is currently open on `agent/oper-130-oper-qa-14-operant-qa-inbox-ui-npm-package-publish-pipeline-purity-gate` against `main` — 1,897 additions / 99 deletions across 18 files (net ~1,996 LOC). That exceeds every size band in `.claude/rules/pr-size-budget.md` and has been stalled long enough to block the Fiesta UAT loop, which cannot land its Portico mount (POR-771 `[POR-QA-2] Mount @operant/qa-inbox-ui at /qa/inbox`, IN_REVIEW) until the package is publishable. OPER-130 was prematurely marked DONE in Ledger while the underlying PR remained open — a status/reality drift the earlier OPER-9D correction attempted to address (AWAITING_HUMAN) but did not resolve. This ticket splits PR #296 into four stack-friendly stages under ~500 LOC each so the package can actually land and unblock POR-771 → POR-772 → POR-773 → Fiesta UAT. Proposed 4-stage split (stack-over-mega per `pr-size-budget.md`): 1. **Stage 1 — package skeleton + tsconfig + build pipeline.** Just the `package.json`, `tsconfig.json`, `tsup`/`tsc` build config, publish workflow, and the empty barrel exports. No React. Verifies the pipeline before any UI lands. 2. **Stage 2 — primitive UI (list, item, empty state) + purity gate.** The React components with zero Portico coupling and zero PHI-touching props, plus the purity-gate lint/CI check that rejects any import outside the package's declared surface. 3. **Stage 3 — client hooks + Studio API contract types.** `useInbox`, `useAssignment`, and the shared type surface for Studio ↔ package. No network code in the package itself — the consumer (Portico) supplies the fetcher. 4. **Stage 4 — publish trigger + version-bump automation + downstream consumer smoke test.** The workflow that actually pushes to GitHub Packages on merge, the version-bump automation, and a smoke test that consumes the published tag from a scratch consumer. Each stage opens its own PR, stacked on the previous, sized within band, reviewable independently, and landable in order. Close PR #296 with a pointer to Stage 1 rather than force-pushing it into shape. The earlier OPER-9D (AWAITING_HUMAN) attempt to publish `@operant-health/qa-inbox-ui` was premature — the package can't be published while its own PR won't merge. That ticket is superseded by this split. References: - PR https://github.com/operant-health/operant-studio/pull/296 (open, 18 files, +1897 -99) - OPER-130 (DONE, incorrectly) — [OPER-QA-14] @operant/qa-inbox-ui NPM package + publish pipeline + purity gate - OPER-9D (AWAITING_HUMAN) — supersede - POR-771 (IN_REVIEW) — [POR-QA-2] Mount @operant/qa-inbox-ui - POR-772 (IN_PROGRESS) — [POR-QA-3] Evidence writeback - POR-773 (IN_REVIEW) — [POR-QA-4] Fiesta UAT seed data - .claude/rules/pr-size-budget.md — stack-over-mega, XS/S/M caps ## Acceptance Criteria - [ ] PR #296 closed with a comment pointing to Stage 1 PR (do not force-push #296 in place). - [ ] 4 stacked PRs opened, each within the PR Size Budget (M cap or below), each with a green `/review` verdict. - [ ] Stage 1 lands first, unblocking the pipeline; Stages 2–4 land in order. - [ ] After Stage 4 lands, a published `@operant/qa-inbox-ui` tag exists in GitHub Packages consumable by POR-771. - [ ] POR-771 unblocked (visible as a status change from IN_REVIEW to READY-to-merge, or successful merge). - [ ] OPER-130 status corrected in Ledger post-merge (currently DONE while PR open — reconcile once Stage 4 lands). - [ ] OPER-9D closed as superseded by this ticket. - [ ] Body carries `verify_cmd: pnpm --filter @operant/qa-inbox-ui build && pnpm --filter @operant/qa-inbox-ui test` frontmatter. verify_cmd: pnpm --filter @operant/qa-inbox-ui build && pnpm --filter @operant/qa-inbox-ui test
Attachments
Loading attachments…
Comments
Loading comments…