---
status: walked + e2e-covered
coverage_depth: deep
last_walked:
  '2026-07-02 by Codex — reconciled against current Playwright coverage:
  user-flag-to-review.spec.ts.'
specs:
  - apps/oshun/web/e2e/user-flag-to-review.spec.ts
source: WALKTHROUGH/journeys/user-flag-to-review.md
---

# Journey result: User flag → review

- **Walked**: 2026-05-29 by Claude (Opus 4.8) against commit `bf12b0f7d8`;
  coverage reconciled 2026-07-02 by Codex against current real-dev-infra
  Playwright.
- **Verdict**: **pass / deep E2E covered for shipped report-to-review core** —
  the shared customer report affordance, real user-report intake, moderation
  workspace read-back, operator decision route, audit search, reporter receipt,
  `/profile/safety` read-back, and `/messages` decision notification are covered
  against the real dev stack.
- **Walker**: `/tmp/claude-oshun-lt-2-walkthrough/walk.mjs user-flag-to-review`

## Observations

- The Veritas lead article, Veritas claim-detail, Tara sitting player, Nisaba
  passage, Metis lesson, and Metis tutor surfaces expose the shared
  `TrustSafetyFlagButton` with stable target kind/id/label metadata and 44 px
  report-button targets where applicable.
- The dialog renders the 10 canonical `ADMIN_REPORT_CATEGORIES`, enforces the
  10-500 character rationale gate, and blocks under-length rationales without
  routing a report.
- A Nisaba report is submitted through the same-origin `/api/trust-safety/flags`
  route into real `POST /v1/user-reports`; the admin moderation workspace reads
  the resulting live `cust-ur-*` report from
  `GET /v1/admin/workspaces/moderation`.
- The real BFF decision leg creates a live report, proves reporter-scoped
  `GET /v1/user-reports/mine` isolation, records a moderator `content_removed`
  decision through `POST /v1/admin/user-reports/:reportId/decision`, and reads
  the actioned reporter receipt back.
- `/profile/safety` renders the actioned submitted-report row for the reporter;
  `/messages` renders the in-app decision notification with delivery receipts;
  following the notification returns to `/profile/safety?reportId=<id>` and
  records a clicked receipt in the customer message inbox.
- The decision emits `trust_safety.user_report.decided`, verified through
  `/v1/admin/search?facets=auditEvents`.

## Current boundaries

- Actor suspension, second-reviewer signoff, external push/email delivery,
  appeal filing, crisis/severity classification, brigade/rate-limit handling,
  explicit context-bundle capture, and origin surfaces outside the current
  Veritas/Nisaba/Tara/Metis mounts remain documented product gaps. They are not
  faked by the current suite.
