| OPER-216 | Post-incident: queue_liveness triggered 2026-09-16T02:45:08.415Z | CANCELED | — | — | 9/16/2026, 3:40:08 AM |
| OPER-192 | Post-incident: queue_liveness triggered 2026-09-11T02:10:08.964Z | CANCELED | — | — | 9/15/2026, 9:35:09 PM |
| OPER-210 | Post-incident: queue_liveness triggered 2026-09-14T02:40:09.146Z | CANCELED | — | — | 9/15/2026, 9:35:08 PM |
| OPER-204 | Post-incident: queue_liveness triggered 2026-09-13T02:30:08.166Z | CANCELED | — | — | 9/15/2026, 9:35:08 PM |
| OPER-203 | Post-incident: queue_liveness triggered 2026-09-12T02:15:08.475Z | CANCELED | — | — | 9/15/2026, 9:35:08 PM |
| OPER-215 | Post-incident: queue_liveness triggered 2026-09-15T02:45:08.257Z | CANCELED | — | — | 9/15/2026, 9:35:08 PM |
| OPER-172 | Post-incident: queue_liveness triggered 2026-09-10T02:10:08.186Z | CANCELED | — | — | 9/15/2026, 9:35:08 PM |
| OPER-144 | Post-incident: queue_liveness triggered 2026-09-09T02:05:11.194Z | CANCELED | — | — | 9/9/2026, 1:05:34 PM |
| OPER-116 | Post-incident: pipeline_throughput_below_target triggered 2026-09-08T13:20:08.294Z | AWAITING_HUMAN | — | — | 9/8/2026, 1:20:08 PM |
| OPER-24 | Relocate autonomous-engine workflows from portico → operant-studio (reusable workflows pattern) | DONE | — | — | 9/7/2026, 11:10:18 AM |
| OPER-97 | Dispatcher dominant error: workflow_dispatch_failed (100% for 24h) | AWAITING_HUMAN | S | — | 9/7/2026, 11:10:18 AM |
| OPE-1 | Post-incident: stall_detector_stall_no_pr_redispatched triggered 2026-07-18T05:10:13.419Z | CANCELED | — | — | 9/7/2026, 11:10:18 AM |
| OPE-3 | Post-incident: queue_liveness triggered 2026-07-20T18:45:12.573Z | CANCELED | — | — | 9/7/2026, 11:10:18 AM |
| OPER-10A | Auto-run prisma migrate deploy on merge to main | DONE | — | — | 9/7/2026, 11:10:18 AM |
| OPER-50 | Post-incident: deadman_pipeline_health_stale triggered 2026-07-25T20:26:05.954Z | CANCELED | — | — | 9/7/2026, 11:10:18 AM |
| OPE-2 | Post-incident: queue_liveness triggered 2026-07-19T18:45:02.764Z | CANCELED | — | — | 9/7/2026, 11:10:18 AM |
| OPER-7A | Pipeline self-heal Phase A: detection + metrics + alerts (DOC-approved) | DONE | — | — | 9/7/2026, 11:10:18 AM |
| OPER-11A | Ensure agent branch exists at claim-time (fix ghost-branch pipeline deadlock) | DONE | — | — | 9/7/2026, 11:10:18 AM |
| OPER-13A | Fix Operant-team dispatcher PAT scope (403 on branch create) | DONE | — | — | 9/7/2026, 11:10:18 AM |
| OPER-14A | worker-reaper failing to release IN_PROGRESS tasks whose workflow completed | DONE | — | — | 9/7/2026, 11:10:18 AM |
| OPER-37 | Forge Reliability Loop: sensor + runbook framework (umbrella) | DONE | L | — | 9/7/2026, 11:10:18 AM |
| OPE-4 | Post-incident: queue_liveness triggered 2026-07-23T12:35:14.418Z | CANCELED | — | — | 9/7/2026, 11:10:18 AM |
| OPER-36 | Portico agent-dispatch.yml missing agent_model input causes 100% dispatch 422 failures | DONE | S | — | 9/7/2026, 11:10:18 AM |
| OPER-19 | Stall Detection & Auto-Heal Loop for IN_PROGRESS tasks | DONE | — | — | 9/7/2026, 11:10:18 AM |
| OPER-180 | docs(plans): add plan docs for OPER-176, OPER-177, POR-778 | IN_PROGRESS | — | SMALL | 9/20/2026, 6:57:49 AM |
| OPER-179 | docs(rules): add admission-contract.md + ticket-filing-checklist.md | IN_PROGRESS | — | SMALL | 9/20/2026, 6:56:49 AM |
| OPER-209 | Nightly queue_liveness incidents recurring + Slack alerts silently broken 5 days | DONE | M | — | 9/14/2026, 6:24:22 AM |
| OPER-205 | C9 milestone watcher: cron detects first Fiesta UAT close OR Piper DX SaMD event | DONE | M | — | 9/14/2026, 3:48:50 AM |
| OPER-182 | fix(ci): migrate-prod silently skips bot-merged migration PRs | DONE | — | MEDIUM | 9/10/2026, 8:30:23 PM |
| OPER-177 | AI triage writer + AiTriageClassPolicy + AiTriageLog + auto-demote/promote | DONE | — | LARGE | 9/10/2026, 6:46:23 PM |
| OPER-175 | [OPER-QA-5] QA re-run loop (rerun.ts watcher) | DONE | — | — | 9/10/2026, 6:38:22 PM |
| OPER-176 | Add Task.risk_tier enum column for AI-triage auto-dispatch policy | DONE | — | MEDIUM | 9/10/2026, 6:20:23 PM |
| OPER-148 | Provenance guard for merged-PR precheck (OPER-D1 hardening) — D-26 next action 1 | DONE | M | LARGE | 9/9/2026, 1:10:22 PM |
| OPER-154 | [OPER-QA-14 CORRECT] Split stalled qa-inbox-ui PR #296 into 4 landable stages (~500 LOC each) | CANCELED | — | MEDIUM | 9/9/2026, 1:04:08 PM |
| KNUCK-A036b | KNUCK-A036: evidence-artifact gate for empirical claims in PR bodies + commits + migrations | NEEDS_RESCOPE | — | — | 9/8/2026, 11:28:10 AM |
| KNUCK-A036 | KNUCK-A036: evidence-artifact gate for empirical claims in PR bodies + commits + migrations | CANCELED | — | — | 9/8/2026, 11:25:13 AM |
| OPER-57 | Ledger to Linear body sync truncates specs at 500 chars | DONE | M | — | 9/7/2026, 1:07:45 PM |
| OPER-56 | Generalized reap-streak parker (guardrail) | DONE | M | — | 9/7/2026, 11:10:19 AM |
| OPER-40 | Forge sensor: clean_pr_not_merging nudge or merge | DONE | S | — | 9/7/2026, 11:10:19 AM |
| OPER-46 | Forge runbook: stall_detector_other | DONE | S | — | 9/7/2026, 11:10:18 AM |
| OPER-47 | ship repo_secrets_expiring reliability sensor (state 3.7) | DONE | S | — | 9/7/2026, 11:10:18 AM |
| OPER-7B | Pipeline self-heal Phase B: auto-heal ghost IN_PROGRESS tasks | DONE | — | — | 9/7/2026, 11:10:18 AM |
| OPER-15A | Agent-completion callback: delete branches + emit task-lifecycle events on PR merge | DONE | — | — | 9/7/2026, 11:10:18 AM |
| OPER-41 | Forge sensor: dispatcher_dominant_error auto-file diagnostic | DONE | S | — | 9/7/2026, 11:10:18 AM |
| OPER-83 | Recover P3009 on 20260802120000_oper_80_phi_harm_scan; unblock all prod deploys | DONE | S | — | 9/7/2026, 11:10:18 AM |
| OPER-23 | Serialize schema-touching tickets in the dispatcher (writeSets policy) | DONE | — | — | 9/7/2026, 11:10:18 AM |
| OPER-9 | decide: ticket taxonomy convention (module column + labels + projectId) | DONE | — | — | 9/7/2026, 11:10:18 AM |
| OPER-12 | feat(ledger): PHI-redaction pass on Task.body + LogEntry, and ingestion body validator | DONE | — | — | 9/7/2026, 11:10:18 AM |
| OPER-43 | Forge sensor: pipeline_alert_slack_broken retry + escalate | DONE | M | — | 9/7/2026, 11:10:18 AM |
| OPER-44 | Forge: executable runbook framework | DONE | M | — | 9/7/2026, 11:10:18 AM |
| OPER-94 | sync-product-checksums workflow + drift-check + admission metric (PDT 2026-08-20) | DONE | S | SMALL | 9/7/2026, 11:10:18 AM |
| OPER-16A | Widen agent-automerge to include operant-cron/* branches | DONE | — | — | 9/7/2026, 11:10:18 AM |
| OPER-39 | Forge sensor: dispatch_retry_storm auto-bounce | DONE | S | — | 9/7/2026, 11:10:18 AM |
| OPER-38 | Forge: reliability-loop cron route + ReliabilityEvent model | DONE | M | — | 9/7/2026, 11:10:18 AM |
| OPER-42 | Forge sensor: status_advanced_without_pr integrity repair | DONE | S | — | 9/7/2026, 11:10:18 AM |
| OPER-49 | Right-size Prisma connection pool for the reliability loop | DONE | S | — | 9/7/2026, 11:10:18 AM |
| OPER-48 | Fix `dispatch_retry_storm` body update — Prisma 6 validation regression | DONE | S | — | 9/7/2026, 11:10:18 AM |
| OPER-45 | Forge runbook: queue_liveness auto-heal | DONE | S | — | 9/7/2026, 11:10:18 AM |
| OPER-5 | feat(auth): per-user API tokens (not per-team bearers) | DONE | L | LARGE | 9/7/2026, 11:09:31 AM |
| OPER-1 | feat(tasks): assignee inline control + "assign to me" palette verb + bulk-edit assignee | DONE | S | SMALL | 9/7/2026, 11:09:30 AM |
| OPER-218 | queue_liveness false-positive-on-idle: fires when dispatcher is provably healthy | CANCELED | — | — | 9/16/2026, 5:24:02 PM |
| OPER-214 | First-class blocked-by dependency field (retire label conventions + reduce NEEDS_RESCOPE) | DONE | M | — | 9/14/2026, 7:18:22 AM |
| OPER-206 | Auto-derive verificationCmd from writeSets to eliminate silent rescopes | DONE | S | — | 9/14/2026, 5:50:22 AM |
| OPER-194 | Admission accepts future_feature_id for tickets that add a new FEAT | DONE | M | — | 9/13/2026, 9:56:23 PM |
| OPER-189 | D-30: freeze QATaskInboxProps as v1.0.0 public ABI | DONE | S | — | 9/13/2026, 9:56:23 PM |
| OPER-190 | D-30: extract Portico BFF pattern into @operant/qa-bff | DONE | S | — | 9/13/2026, 9:42:24 PM |
| OPER-186 | D-29: WRITE_TEST kind added to notify vocabulary | DONE | S | — | 9/13/2026, 6:24:22 PM |
| OPER-188 | D-29: promotion-stage coverage gate at Ledger admission | DONE | S | — | 9/13/2026, 5:00:22 PM |
| OPER-185 | D-29: autogen confidence-tier auto-promote DRAFT->READY | DONE | S | — | 9/13/2026, 4:38:23 PM |
| OPER-191 | D-30: publish pipeline for @operant/qa-* packages | DONE | S | — | 9/13/2026, 3:32:22 PM |
| OPER-193 | Admission auto-reheal on PATCH that resolves rejection | DONE | S | — | 9/13/2026, 2:12:24 PM |
| OPER-207 | Persist NEEDS_RESCOPE reason to ticket body + sticky label | DONE | S | — | 9/13/2026, 1:58:22 PM |
| OPER-187 | D-29: qa-run-scheduler cron symmetric to qa-freshness | DONE | M | — | 9/13/2026, 1:46:24 PM |
| OPER-208 | Fix CreateTask 500 on full-payload POST (retire narrow-POST-then-PATCH workaround) | DONE | M | — | 9/13/2026, 12:36:23 PM |
| OPER-184 | D-29: required_coverage frontmatter + PHI inference | DONE | S | — | 9/13/2026, 12:16:22 PM |
| OPER-183 | fix(ci): drift-check job conflates pending migrations with real drift | DONE | — | SMALL | 9/10/2026, 10:14:23 PM |
| OPER-174 | writeSet-path validation at admission — reject phantom paths that can never ship | DONE | S | SMALL | 9/10/2026, 9:26:22 PM |
| OPER-181 | Frontmatter-Not-Persisted-To-Task-Row: hydrate size/module/writeSets/phi/migration from body frontmatter on POST/PATCH | DONE | S | SMALL | 9/10/2026, 8:18:23 PM |
| OPER-178 | /qa/live-fixes canvas + /qa/triage-log page in Operant Studio | DONE | — | MEDIUM | 9/10/2026, 6:34:22 PM |
| OPER-173 | Stacked-PR parent-merge detection — trigger rescue immediately on parent squash-merge | DONE | S | SMALL | 9/10/2026, 3:12:22 PM |
| OPER-146 | Ticket-filing helper (OPER-58 admission-contract enforcement, agent-side) — D-25 next action 1 | DONE | M | MEDIUM | 9/10/2026, 3:54:17 AM |
| OPER-162 | OPER-KNUCK-RESCOPE-1: Declare 10 missing Studio feature_ids so 92 KNUCK-P tickets can re-admit | DONE | — | — | 9/9/2026, 9:56:22 PM |
| OPER-163 | OPER-KNUCK-RESCOPE-2: Bulk-repair routing metadata on 239 NEEDS_RESCOPE KNUCK-P tickets and re-run admission | DONE | — | — | 9/9/2026, 8:32:22 PM |
| OPER-155 | Support `target_repo:` frontmatter in team-repo-routing (retire noop-PR convention) — D-27 next action 1 | DONE | M | LARGE | 9/9/2026, 7:22:22 PM |
| OPER-169 | OPER: sync-product-checksums never fires on GITHUB_TOKEN merges; close the anti-recursion gap | DONE | S | SMALL | 9/9/2026, 5:16:23 PM |
| OPER-153 | [OPER-QA-17] Agent capability catalog — (agentWorkerId, testKind) eligibility rows | CANCELED | — | MEDIUM | 9/9/2026, 1:04:08 PM |
| OPER-152 | [OPER-QA-16] AgentWorker as QaTestProjectMember — extend resolver to fan out to agents | CANCELED | — | MEDIUM | 9/9/2026, 1:04:07 PM |
| OPER-121 | Promote ported governance gates to portico required-status-checks (child of KNUCK-A045) | DONE | XS | — | 9/9/2026, 5:36:22 AM |
| OPER-120 | Port check-ticket-trailer to portico (child of KNUCK-A045) | DONE | S | — | 9/9/2026, 12:24:25 AM |
| OPER-119 | Port guard-inventory self-test to portico (child of KNUCK-A045) | DONE | M | — | 9/9/2026, 12:24:23 AM |
| OPER-100 | [OPER-QA-2] Test Projects + Phases + Members over the QA primitive | DONE | M | LARGE | 9/8/2026, 11:12:23 PM |
| OPER-117 | Port studio governance gates to portico (parent) | DONE | XS | — | 9/8/2026, 9:12:22 PM |
| OPER-118 | Port fabricated-evidence tripwire to portico (child of KNUCK-A045) | DONE | M | — | 9/8/2026, 8:51:41 PM |
| KNUCK-A045d | Promote ported governance gates to portico required-status-checks | CANCELED | — | — | 9/8/2026, 2:51:08 PM |
| KNUCK-A045c | Port check-ticket-trailer to portico | CANCELED | — | — | 9/8/2026, 2:51:07 PM |
| KNUCK-A045b | Port guard-inventory self-test to portico | CANCELED | — | — | 9/8/2026, 2:51:06 PM |
| KNUCK-A045a | Port fabricated-evidence tripwire to portico | CANCELED | — | — | 9/8/2026, 2:51:06 PM |
| KNUCK-A045 | Port studio governance gates to portico (parent) | CANCELED | — | — | 9/8/2026, 2:51:05 PM |
| KNUCK-A039b | KNUCK-A039: extend writer-audit script to cover upsert, createMany, createManyAndReturn | NEEDS_RESCOPE | — | — | 9/8/2026, 11:27:10 AM |
| KNUCK-A038b | KNUCK-A038: whitespace-fixture lint -- forbid hardcoded multi-space fixtures in scripts tests | NEEDS_RESCOPE | — | — | 9/8/2026, 11:27:10 AM |
| KNUCK-A037b | KNUCK-A037: schema-scope gate -- fail PRs touching multiple .prisma files without wide-format label | NEEDS_RESCOPE | — | — | 9/8/2026, 11:27:10 AM |
| KNUCK-A042 | KNUCK-A042: PHI redactor context-awareness -- allow ISO dates in engineering-labeled task bodies | NEEDS_RESCOPE | — | — | 9/8/2026, 11:26:10 AM |
| KNUCK-A039 | KNUCK-A039: extend writer-audit script to cover upsert, createMany, createManyAndReturn | CANCELED | — | — | 9/8/2026, 11:25:13 AM |
| KNUCK-A038 | KNUCK-A038: whitespace-fixture lint -- forbid hardcoded multi-space fixtures in scripts tests | CANCELED | — | — | 9/8/2026, 11:25:13 AM |
| KNUCK-A037 | KNUCK-A037: schema-scope gate -- fail PRs touching multiple .prisma files without wide-format label | CANCELED | — | — | 9/8/2026, 11:25:13 AM |
| OPER-8A | Pipeline observability dashboard UI | DONE | — | — | 9/7/2026, 11:10:18 AM |
| OPER-98 | [OPER-QA-2] Test Projects + Phases + Members over the existing QA primitive | CANCELED | — | MEDIUM | 9/7/2026, 11:10:18 AM |
| OPER-99 | [OPER-QA-2] Test Projects + Phases + Members over the QA primitive | CANCELED | — | MEDIUM | 9/7/2026, 11:10:18 AM |
| OPER-60 | Ship admission gate v0.1 (validator + PlanningRejection + NEEDS_RESCOPE enum) | DONE | L | — | 9/7/2026, 11:10:18 AM |
| OPER-73 | Classify legacy IN_PROGRESS tickets so OPER-64 gate can gate them + stuck-loop reaper | DONE | M | — | 9/7/2026, 11:10:18 AM |
| OPER-11 | chore(cron): finish migration of dispatcher-tick / auto-planner / auto-shipper / worker-reaper to operant-cron | DONE | — | — | 9/7/2026, 11:10:18 AM |
| OPER-95 | Portico Feature Map v7 restatus (re-file of POR-679) — QuickBooks P1 -> Incubating P2; Rippling/GCal to shipped; drop 5 external-tool rows | CANCELED | S | SMALL | 9/7/2026, 11:10:18 AM |
| OPER-10 | feat(dispatcher): SLO dashboard for queue latency, PR SLA, green-on-first-CI, self-recovery | DONE | — | — | 9/7/2026, 11:10:18 AM |
| OPER-9A | PAT rotation pre-expiry alerts | DONE | — | — | 9/7/2026, 11:10:18 AM |
| OPER-74 | Stop pinning github_api_degraded on missing agent-dispatch.yml (Ledger backfill for PR #52) | DONE | S | — | 9/7/2026, 11:09:36 AM |
| OPER-72 | Ledger: /tasks/[id] and /tasks/[id]/comments should resolve human identifier OR UUID | NEEDS_RESCOPE | — | — | 9/7/2026, 11:09:35 AM |
| OPER-70 | agent-size-override workflow silently skips size-XL PRs (check_run.head_sha != PR head) | NEEDS_RESCOPE | S | — | 9/7/2026, 11:09:35 AM |
| OPER-69 | Split flow must demote parent to CANCELED + close its stale PR (POR-249 caused #1257) | DONE | M | — | 9/7/2026, 11:09:35 AM |
| OPER-68 | Add hasMigration to tasks_ready_view + drift-detection check | DONE | M | — | 9/7/2026, 11:09:35 AM |
| OPER-67 | Runbook: plan_rejected_missing_fields burst — triage and rollback path | DONE | S | — | 9/7/2026, 11:09:34 AM |
| OPER-66 | Real-DB integration test for OPER-60 admission gate + composed transaction | DONE | M | — | 9/7/2026, 11:09:34 AM |
| OPER-65 | Fix 12 pre-existing flaky tests: dispatcher-blocked-by, dispatcher-claim-dispatch, workflow-reaper | NEEDS_RESCOPE | S | — | 9/7/2026, 11:09:34 AM |
| OPER-7 | extract(eslint-plugin-operant): unfork, publish as single canonical package | DONE | M | MEDIUM | 9/7/2026, 11:09:32 AM |
| OPER-6 | extract(runners): move agent-*.yml workflows from Portico to Ledger as reusable workflows | DONE | L | LARGE | 9/7/2026, 11:09:31 AM |
| OPER-4 | docs: Ledger API reference page at /docs/api | DONE | S | SMALL | 9/7/2026, 11:09:31 AM |
| OPER-2 | feat(assignment): rule-based auto-assignment on state transitions | DONE | M | MEDIUM | 9/7/2026, 11:09:30 AM |
| OPER-168 | OPER: PATCH to a frontmatter-blocker field should re-run admission, not just POST | DONE | S | SMALL | 9/11/2026, 2:16:22 AM |
| OPER-157 | OPER: teach agent-automerge to update-branch when behind, before merging | DONE | S | MEDIUM | 9/10/2026, 6:14:22 PM |
| OPER-167 | OPER: admission unknown_feature_id should tell the filer which feature_ids are valid | DONE | S | SMALL | 9/9/2026, 6:36:23 PM |
| OPER-166 | OPER: pr-size workflow crashes on update-branch race (git symmetric-difference) | NEEDS_RESCOPE | S | SMALL | 9/9/2026, 4:56:16 PM |
| OPER-161 | OPER: PATCH to a frontmatter-blocker field should re-run admission, not just POST | CANCELED | S | SMALL | 9/9/2026, 4:54:56 PM |
| OPER-160 | OPER: admission unknown_feature_id should tell the filer which feature_ids are valid | CANCELED | S | SMALL | 9/9/2026, 4:54:56 PM |
| OPER-159 | OPER: pr-size workflow crashes on update-branch race (git symmetric-difference) | CANCELED | S | SMALL | 9/9/2026, 4:54:56 PM |
| OPER-158 | OPER-9C-CUTOVER: Dispatcher cutover from GH_DISPATCH_PAT to GitHub App installation-token auth | DONE | — | — | 9/9/2026, 4:54:22 PM |
| OPER-149 | Precheck reconciliation drift monitor — D-26 next action 2 | DONE | S | MEDIUM | 9/9/2026, 4:42:22 PM |
| OPER-147 | Planning-validator template-version field awareness — D-25 next action 2 | DONE | S | MEDIUM | 9/9/2026, 4:00:23 PM |
| OPER-151 | Admission gate must run on PATCH, not only POST (contract-drift close-out) | DONE | S | MEDIUM | 9/9/2026, 3:06:22 PM |
| OPER-156 | OPER: teach agent-automerge to update-branch when behind, before merging | CANCELED | S | MEDIUM | 9/9/2026, 1:33:56 PM |
| auto-update-behind-agent-prs | OPER: teach agent-automerge to update-branch when behind, before merging | CANCELED | S | MEDIUM | 9/9/2026, 1:33:12 PM |
| OPER-150 | blocked-by.ts dispatch check must accept CANCELED as satisfied (align with admission) | DONE | S | MEDIUM | 9/9/2026, 10:18:23 AM |
| OPER-145 | Portico check-ticket-trailer.yml: add KNUCK-A032 failure-path self-test | DONE | S | — | 9/9/2026, 4:36:23 AM |
| KNUCK-A041b | KNUCK-A041: house-style banned-glyph gate -- reject arrows, checkmarks, Greek in PR body + commits | NEEDS_RESCOPE | — | — | 9/8/2026, 11:26:10 AM |
| KNUCK-A040b | KNUCK-A040: dead-fallback lint -- flag ?? on any field the Prisma schema declares non-null | NEEDS_RESCOPE | — | — | 9/8/2026, 11:26:10 AM |
| KNUCK-A041 | KNUCK-A041: house-style banned-glyph gate -- reject arrows, checkmarks, Greek in PR body + commits | CANCELED | — | — | 9/8/2026, 11:25:13 AM |
| KNUCK-A040 | KNUCK-A040: dead-fallback lint -- flag ?? on any field the Prisma schema declares non-null | CANCELED | — | — | 9/8/2026, 11:25:13 AM |
| OPER-58 | Add auto_planner_silent + pipeline_throughput_below_target invariants | DONE | — | — | 9/7/2026, 11:10:19 AM |
| OPER-13 | docs(ledger): document the 8-state Task workflow as it actually runs in prod | DONE | — | — | 9/7/2026, 11:10:18 AM |
| OPER-61 | NEEDS_RESCOPE panel in Ledger triage UI | DONE | M | — | 9/7/2026, 11:10:18 AM |
| OPER-25 | Fix broken api-keys token-mint UI (POST returns "Could not create token") | DONE | S | — | 9/7/2026, 11:10:18 AM |
| OPER-8 | extract(plop-templates): unfork, publish as create-operant-app CLI in packages/boilerplate | DONE | L | LARGE | 9/7/2026, 11:09:32 AM |
| OPER-3 | feat(assignment): classifier proposes assignee, human overrides | DONE | L | LARGE | 9/7/2026, 11:09:30 AM |
| OPER-14 | chore(ledger): investigate + normalize legacy PORT-* (4) and SENT-* (7) tickets on portico team | DONE | — | — | 9/7/2026, 11:10:18 AM |
| OPER-59 | Eliminate LEDGER_BEARER round-trip in auto-planner (in-process runPlanValidation) | DONE | — | — | 9/7/2026, 11:10:19 AM |
| OPER-220 | Shared Playwright-install retry composite action across Portico + Roster + Piper DX | AWAITING_HUMAN | M | — | 9/17/2026, 4:00:51 PM |
| OPER-219 | queue_liveness false-positive-on-idle: fires when dispatcher is provably healthy | DONE | S | — | 9/16/2026, 7:02:22 PM |
| OPER-217 | test-ping-delete-me | CANCELED | — | — | 9/16/2026, 4:03:43 PM |
| OPER-213 | OPER-QA-5 Insights project-scoped surface (Signals feed + Decisions queue + shadow audit) | NEEDS_RESCOPE | L | — | 9/14/2026, 9:45:10 AM |
| OPER-212 | OPER-QA-4 Autonomous triage agent (dedupe + classify + enrich + risk-score) | NEEDS_RESCOPE | L | — | 9/14/2026, 9:45:10 AM |
| OPER-211 | OPER-QA-3 [Parent] Signal + TriageResult + RiskFactors + DecisionTask + PayoffLink primitive | NEEDS_RESCOPE | L | — | 9/14/2026, 9:45:10 AM |
| OPER-200 | HV-4: FeatureConfidenceRollup materializer cron | DONE | S | — | 9/14/2026, 2:16:23 AM |
| OPER-PHI-1 | [OPER-PHI-1] Register PHI-eligible reviewer AgentWorker for Studio team | DONE | S | — | 9/14/2026, 12:12:23 AM |
| OPER-202 | HV-1: Schema migration -- TestRun columns + HumanVerification + FeatureConfidenceRollup | NEEDS_RESCOPE | M | — | 9/13/2026, 8:54:10 PM |
| OPER-201 | HV-5: Smiley UI in qa-inbox-ui (internal-verifier flag only) | NEEDS_RESCOPE | M | — | 9/13/2026, 8:54:10 PM |
| OPER-199 | HV-3: Charter generator -- packages/qa/src/charter.ts + nightly quality eval | NEEDS_RESCOPE | M | — | 9/13/2026, 8:54:10 PM |
| OPER-198 | HV-2: Dossier renderer -- packages/qa/src/dossier.ts + read API | NEEDS_RESCOPE | M | — | 9/13/2026, 8:53:10 PM |
| OPER-196 | Human Verification System — additive on TestRun + HumanVerification + FeatureConfidenceRollup | NEEDS_RESCOPE | L | — | 9/13/2026, 8:53:10 PM |
| OPER-197 | HV-1: Schema migration — TestRun columns + HumanVerification + FeatureConfidenceRollup | CANCELED | — | — | 9/11/2026, 6:31:37 PM |
| OPER-195 | Human Verification System — additive on TestRun + HumanVerification + FeatureConfidenceRollup | CANCELED | — | — | 9/11/2026, 6:28:54 PM |
| OPER-9D | [OPER-9D] Publish @operant-health/qa-inbox-ui to GitHub Packages | DONE | M | — | 9/11/2026, 3:14:22 PM |
| OPER-170 | check-ticket-trailer sticky comment never updates: GraphQL node id PATCHed to a REST endpoint | DONE | XS | — | 9/11/2026, 12:26:22 AM |
| OPER-9C | Replace GH_DISPATCH_PAT with GitHub App installation auth | DONE | M | MEDIUM | 9/9/2026, 6:44:53 PM |
| OPER-171 | [OPER-QA-16] AgentWorker as QaTestProjectMember (agent + human fanout) — re-file | DONE | M | — | 9/9/2026, 6:19:39 PM |
| OPER-QA-16 | [OPER-QA-16] AgentWorker as QaTestProjectMember (agent + human fanout) | CANCELED | M | — | 9/9/2026, 5:44:17 PM |
| OPER-165 | OPER-KNUCK-RESCOPE-2 follow-up: hand-triage admission fields on 239 NEEDS_RESCOPE KNUCK-P tickets | READY_FOR_PLANNING | L | — | 9/9/2026, 3:55:59 PM |
| OPER-164 | OPER-KNUCK-RESCOPE-2 follow-up: hand-triage admission fields on 239 NEEDS_RESCOPE KNUCK-P tickets | CANCELED | L | — | 9/9/2026, 3:55:48 PM |
| OPER-MONITOR-DRIFT-1 | [OPER-MONITOR-DRIFT-1] Fix queue_liveness stale-data + in_review phantom-task false alarms | DONE | M | — | 9/9/2026, 3:30:23 PM |
| OPER-QA-14-CORRECT | [OPER-QA-14-CORRECT] Split PR #296 into 4 stages; fix reconciliation logic | DONE | L | — | 9/9/2026, 1:54:23 PM |
| OPER-103 | Denormalize teamId onto QaTestPhase / QaTestProjectCase / QaTestProjectMember with @@index([teamId, ...]) | DONE | S | MEDIUM | 9/9/2026, 1:14:22 PM |
| OPER-QA-17 | [OPER-QA-17] QaAgentCapability catalog (test-kind filter for resolver) | PLANNING_VALIDATED | S | — | 9/9/2026, 12:59:50 PM |
| OPER-108 | Amend .cursor/rules/operant-boilerplate.md line 13 to describe Studio's hybrid RLS model | DONE | XS | SMALL | 9/9/2026, 12:30:23 PM |
| OPER-142 | Portico sent4-admin-merge-sentinel.yml: add KNUCK-A032 failure-path self-test | NEEDS_RESCOPE | S | — | 9/9/2026, 10:07:24 AM |
| OPER-141 | Portico rebase-strategy-guard.yml: add KNUCK-A032 failure-path self-test | NEEDS_RESCOPE | S | — | 9/9/2026, 10:07:23 AM |
| OPER-140 | Portico main-e2e-guard.yml: add KNUCK-A032 failure-path self-test | NEEDS_RESCOPE | S | — | 9/9/2026, 10:07:23 AM |
| OPER-139 | Portico check-org-scoped.yml: add KNUCK-A032 failure-path self-test | NEEDS_RESCOPE | S | — | 9/9/2026, 10:07:23 AM |
| OPER-114 | Adopt withTeamContext in 4 app-layer sites (2 api-keys routes, NextAuth adapter, server actions) | DONE | M | MEDIUM | 9/9/2026, 9:56:50 AM |
| OPER-127 | [OPER-QA-2 PR 2] Assignment resolver + state machines + API routes for QA Projects | DONE | M | MEDIUM | 9/9/2026, 7:18:49 AM |
| OPER-137 | [OPER-QA-12] E2E Fiesta UAT loop test — create project, invite, assign, complete, coverage updates | DONE | M | MEDIUM | 9/9/2026, 6:58:22 AM |
| OPER-136 | [OPER-QA-11] Test-freshness cron — mark stale CoverageCells GRAY | DONE | S | SMALL | 9/9/2026, 6:34:51 AM |
| OPER-125 | [OPER-QA-5] Re-run loop: failed TestRun opens Ledger Task; Task=DONE triggers re-run | DONE | M | MEDIUM | 9/9/2026, 5:24:51 AM |
| OPER-123 | [OPER-QA-3] TestFixtureRef writer with neverStoresPhi invariant | DONE | M | MEDIUM | 9/9/2026, 5:20:49 AM |
| OPER-133 | [OPER-QA-8] Test Library canvas — browse, filter, and edit TestCase rows | DONE | M | MEDIUM | 9/9/2026, 5:12:49 AM |
| OPER-128 | [OPER-QA-2] Tester invitation flow — invite by email, resolve to TeamMembership | DONE | S | MEDIUM | 9/9/2026, 4:42:23 AM |
| OPER-129 | [OPER-QA-2] Assignment notification — new RUN_TEST Ledger Task on assignment materialization | DONE | S | MEDIUM | 9/9/2026, 3:46:52 AM |
| OPER-106 | Add rls-required.ts + check-rls-required CI script (sensitive-field scanner for hybrid RLS enforcement) | DONE | S | MEDIUM | 9/9/2026, 1:58:23 AM |
| OPER-138 | [OPER-QA-13] Contract tests Studio <-> Portico for the QA API surface | DONE | S | SMALL | 9/9/2026, 1:56:50 AM |
| OPER-112 | Amend .claude/rules/multi-tenant-rls.md + prisma-schema.md to name Studio's teamId primitive | DONE | XS | SMALL | 9/9/2026, 1:48:22 AM |
| OPER-122 | [OPER-QA-1] Portico feature-map autogen pass to seed ~1500 DRAFT TestCase rows | DONE | M | MEDIUM | 9/9/2026, 1:38:23 AM |
| OPER-124 | [OPER-QA-4] CoverageCell materializer triggered on TestRun terminal transitions | DONE | M | MEDIUM | 9/9/2026, 1:02:49 AM |
| OPER-131 | [OPER-QA-15] Product BFF service-token pattern: issuance, rotation, tenant-scope binding, revocation | DONE | M | MEDIUM | 9/9/2026, 1:02:23 AM |
| OPER-9B | Dual-PAT failover in dispatcher + auto-requeue on PAT recovery | CANCELED | M | MEDIUM | 9/9/2026, 1:01:50 AM |