Outcome ledger review tier trivial handling
Seen on dev (Task 12443): a coder runner declared `review_tier = trivial` (a tier `tasks.review_tier` and the code-review policy accept, `apps/api/app/models/tasks.py:47`). Its `task_outcomes` row stored `unknown`, because the ledger's closed set (`apps/api/app/outcome_ledger/dimensions.py::REVIEW_TIERS`, check `ck_task_outcomes_review_tier`) omits `trivial`. `tests/test_task_outcomes.py::test_the_declared_review_tier_reaches_the_row_and_one_outside_the_set_is_refused` pins the fold. As a result the Outcome panel's Review chip reads "—" for the most common small-change tier, and performance strata lump trivial changes in with undeclared ones.
Ask: decide whether the ledger keeps `trivial` as its own tier (widen the set and its check constraint additively, then update the pinned test) or maps it on purpose; record the decision where the vocabulary lives.
Out of scope: any other ledger dimension.
Done means:
- A trivial declaration shows as "Trivial" on the Outcome panel, or the decision not to is recorded with its reason beside `REVIEW_TIERS`.
- Required checks: ./dc check quick, changed-area tests, merge lane full gate.
Outcome
Ledger now keeps `trivial` as its own review tier, and the Outcome chip reads "Trivial". Sets derive from tasks.REVIEW_TIERS; additive migration widens the CHECK. Quick gate and changed-area tests green; PR #7699 queued. Memory: none applied.
Artifacts
Activity
- Created
- Run
- Runner started
- Runner ended (done)