# Journey result: Themis assessment appeal

- **Walked**: 2026-06-26 by Codex against commit HEAD
- **Verdict**: **deep, real-infra covered through verdict outcome controls** —
  customer submit → Themis adjudication, learner appeal, audit-detail read-back,
  operator queue read, operator outcome decision, terminal gradebook correction,
  and `/messages` decision notification are now exercised against the real BFF.

## Current Evidence

- `apps/oshun/web/e2e/metis-assessment-submit.spec.ts` covers learner
  `/metis/assessment` submit through `POST /v1/metis/assessment-submissions` and
  handoff into `/integrity/<verdictId>/appeal`.
- `apps/oshun/web/e2e/integrity-appeal.spec.ts` covers appeal filing,
  fail-closed states, teacher override/uphold HTTP contracts, and learner-safe
  audit rationale/evidence/classifier read-back.
- `apps/oshun/web/e2e/operator-metis-themis-review.spec.ts` covers
  `/operator/metis` live appeal queue rendering, Uphold / Revise / Dismiss /
  Escalate verdict controls, browser-driven
  `POST /v1/metis/integrity/appeals/:appealId/decision` with no raw
  `teacherOverride`, upheld verdict read-back, then opens `/messages` as the
  appealed learner and verifies the real in-app decision row, appeal-record
  follow link, clicked receipt, and mark-read read-back. It also renders the
  gradebook correction in the operator row and reads back
  `GET /v1/metis/gradebook/<assessmentId>/latest`.
- `apps/oshun/bff/src/__tests__/metis-integrity-route.test.ts` covers the BFF
  adjudicate, audit, appeal-open, appeal-list, workspace-read, resolve, and
  outcome-decision contracts, including uphold without a client
  `teacherOverride`, dismiss/revise/escalate outcome mapping, the Themis
  decision → customer message store bridge, and gradebook `pending` →
  terminal-verdict correction.

## Remaining Gaps

- None currently tracked for this journey.
