# Journey Scan Problems

Audience: AI coding agents first.

| ID | Classification | Scope | Finding | Blocks |
|---|---|---|---|---|
| SP-001 | coverage-omission | read-only admin pages | Dashboard, analytics, history, and page rendering have no durable actor outcome. Cover through UI matrix. | none |
| SP-002 | coverage-omission | frontend switcher | Language selection is navigation without a plugin-owned durable mutation. Cover through UI matrix and existing switcher E2E. | none |
| SP-003 | missing-fault-seam | remote translation and licensing failures | Deterministic downstream failure injection must reuse or extend existing request interception. | UJ-003, UJ-004, UJ-005, UJ-007 |
| SP-004 | missing-fixture | non-admin permission boundary | Existing global setup creates administrator storage only. Add lower-capability authenticated fixture. | UJ-001 through UJ-008 permission branches |
| SP-005 | implementation-defect | history retry | Retry UI calls `/system-translate/generate-all` instead of registered per-job retry; content sends unsupported `type:post`, strings retry entire source. | retry journey |
| SP-006 | implementation-defect | bulk string delete | UI issues `DELETE /system-translate/strings/{id}/translations/{lang}`, but no matching REST route exists. | bulk-delete journey |
| SP-007 | implementation-defect | team invite | Dashboard renders Invite Translator without handler or matching member mutation route. | invite journey |
| SP-008 | coverage-omission | workflow and timers | Workflow transition, assignment, and team timer mutation endpoints have no reachable current UI trigger. | none |
| SP-009 | implementation-defect | migration rollback | Rollback manager exists, but migration UI and REST controller expose no rollback trigger. | rollback journey |
| SP-010 | coverage-omission | language reorder | Reorder endpoint exists, but current languages page provides sorting only and issues no reorder mutation. | none |
| SP-011 | source-conflict | UJ-007 reset response and UI | Contract requires reset `data:<default-settings>` and success toast; controller requires `confirm`, returns `data:null`, and UI sends no confirm then rejects falsy data. | UJ-007 |
| SP-012 | source-conflict | UJ-017 migration route | Contract prefixes migration with `/wp-json/international-press-zone/v1/mpz/v1`; controller and UI register/use `/wp-json/mpz/v1`. | UJ-017 |
| SP-013 | source-conflict | authenticated lower-capability branches | UJ-010 through UJ-016, UJ-019, and UJ-020 specify `401`; authenticated WordPress REST requests with boolean permission callbacks resolve to `403` (custom controller errors remain `403`). | listed journeys |
| SP-014 | implementation-defect | UJ-013 no-missing-pairs UI | Bulk action disables `Translate Selected` when no target pairs exist, so the contract-required `None of the selected posts need translation.` toast cannot be reached through a real click. | UJ-013 |
| SP-015 | missing-fixture | UJ-018 populated cache | Cache statistics are request-local and no supported deterministic fixture endpoint populates the same `CacheManager` instance before `/settings/cache-stats`. | UJ-018 |
