# Exact-tree UX acceptance re-review

Use for a final read-only review where the release gate depends on visible wording, preview semantics, bounded disclosure, and browser-matrix wiring.

## Review method

1. Bind the review to the named base plus tracked and untracked candidate files; rerun status and `git diff --check` immediately before verdict.
2. Trace each acceptance phrase through producer state, UI rendering, and browser assertion. A green browser test is not enough when its assertion is vacuous or only checks nearby text.
3. Where technical inference must remain distinct from user confirmation, verify all layers:
   - producer state keeps `suggested`/`mapped_unverified` distinct from `confirmed`;
   - confirmation requires an explicit matching user action, not confidence, completeness, or catalog agreement alone;
   - bind that action to the **current exact target set**, not merely the group key/alias and selected mapping. Add a counterexample that confirms one member, then adds a technically mapped member to the same group: the expanded group must revert to `mapped_unverified` until explicitly reassigned. A current digest computed after the fact is not proof unless the durable action record stores or otherwise proves the assigned digest/count;
   - scan tracked inventory/evidence/docs too: aggregate technical mappings must not be described as “verified” or “confirmed” unless the same explicit-action proof exists;
   - status chips, summaries, detail views, and provenance never relabel technical completeness as confirmation.
4. For previews, inspect actual DOM construction. Distinct fields such as category and score must render as separate labeled values, and browser assertions should target those rows separately rather than merely find both strings somewhere in the dialog. Reject count wording such as “explicitly listed entries” when the preview displays only a count and does not enumerate those entries.
5. For bounded examples or days, verify complete distinct total, displayed slice length, truncation boolean, and visible `shown of total` disclosure together. Test truncated and non-truncated cases and deterministic ordering. Producer-only tests do not establish the visible disclosure contract; exercise both states in the browser fixture.
6. Verify browser-matrix integration in both directions:
   - a dedicated isolated selector/package command runs the feature spec with its required fixture/profile;
   - the same group appears in the default aggregate matrix and group-count reporting remains accurate.
   Run the isolated group at least once on the exact candidate.
7. Scan added runtime and documentation lines for invented domain semantics. In health UX, describing absence of a contract is acceptable; do not introduce new stress scales, medical certainty, derived health signals, personal-tolerance claims, or causal interpretations.
8. A materially false confirmation/domain claim is P1; bounded UX wording, assertion, truncation, or matrix-wiring gaps are P2. Return PASS only at P1=0 and P2=0.

## Assertion pitfalls

- Finding `Category` and `Score` text in one container does not prove separate fields; locate distinct labeled elements.
- `toHaveCount(await locator.count())` is tautological and proves nothing.
- A test title is not evidence that every behavior named in the title is asserted.
- Static presence of an isolated-group branch does not prove it is runnable; execute its public command.
- Default matrix inclusion is separate from isolated command availability.
