Operant Studio
OPER-201

HV-5: Smiley UI in qa-inbox-ui (internal-verifier flag only)

Suggested
Justin Cooke

Body

---
feature_id: FEAT-studio-qa
size: M
module: qa
phi_in_scope: true
has_migration: false
write_sets:
  - packages/qa-inbox-ui/src/smiley-panel.tsx
  - packages/qa-inbox-ui/src/dossier-view.tsx
  - packages/qa-inbox-ui/src/probe-modal.tsx
---

## Context

Parent: OPER-196.

HappyOrNot-style 4-smiley UI: BROKEN / MEH / GOOD / DELIGHTFUL. One tap for the primary verdict; progressive disclosure fires only on MEH (3 chips generated from feature type) and BROKEN (mandatory 5-word text field, auto-attach last 15s of qa-inbox trace pointer). After-feature panel renders two smiley bars: expected + time-saving (UMUX-Lite reformulated as faces).

Machine-triggered retrospective probe modal replays a 3-second trace clip and asks "what were you thinking?" -- this is the ONLY free-text field. Value goes to `HumanVerification.probeText` (PHI-annotated, redacted at write, audit-logged on read per HV-1).

Jordan dissent from the PDT memo: internal-verifier feature flag only. No exposure to Fiesta/Portico end-users -- that is a separate PDT. Ships behind `qa.humanVerification.enabled` feature flag scoped to Studio verifier accounts.

## Acceptance Criteria

- `<SmileyPanel />` renders 4 faces, primary verdict is one tap, progressive disclosure appears only on MEH or BROKEN
- `<ProbeModal />` replays trace clip and posts to `HumanVerification` write endpoint
- Feature flag `qa.humanVerification.enabled` gates every render path
- No Fiesta/Portico end-user surface touched
- Playwright coverage: BROKEN path (mandatory text + trace attach), MEH path (chips shown), GOOD/DELIGHTFUL path (single-tap complete)
- Storybook stories for each smiley state

---
<!-- 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…