OPER-211
OPER-QA-3 [Parent] Signal + TriageResult + RiskFactors + DecisionTask + PayoffLink primitive
Suggested
Justin Cooke
Body
--- feature_id: FEAT-studio-qa size: L module: intake write_sets: - packages/database/prisma/schema/signals.prisma - packages/database/prisma/schema/tasks.prisma - packages/rbac/src/policies/signals.ts phi_in_scope: true has_migration: true verification_cmd: pnpm --filter @operant/database db:migrate && pnpm --filter @operant/database test --- ## Context Ratified [REDACTED-DOB] via PDT. Introduces the Signal primitive with autonomous triage and risk-tiered promotion. See project wiki `concepts/signal-triage-primitive.md` for the full spec. This is the parent for the triage-automation ticket family: - OPER-QA-3 (this) - Prisma models + RLS + AuditLog wiring - OPER-QA-4 - triage agent implementation - OPER-QA-5 - Insights project-scoped surface with Signals + Decisions views + shadow-mode audit dashboard ## Acceptance Criteria - New Prisma models: Signal, TriageResult, RiskFactors (typed sub-model, not jsonb), DecisionTask (extends Task with kind=DECISION), PayoffLink - Every model uses cuid() PKs and snake_case via @map() - Every model is org-scoped via organization_id column with Postgres RLS per POR-291 pattern - Fields that could carry PHI carry /// @PHI annotations (Signal.payload jsonb flagged; TriageResult.memo_markdown flagged) - Every mutation writes an AuditLog row - Migration is reversible and includes RLS policy grants - Tests confirm cross-tenant reads return zero rows via getOrgScopedDb() --- <!-- admission-passed-on-patch --> **Admission re-checked on PATCH: PASS** -- feature FEAT-studio-qa admitted to product studio --- <!-- planner-rescope: phi_no_reviewer --> **Planner rescope (phi_no_reviewer):** Task has phiInScope=true but no PHI-eligible reviewer is available. Register a reviewer worker advertising the `phi` capability before admitting PHI work.
Attachments
Loading attachments…
Comments
Loading comments…