docs(redesign): complete P5-15-01 preservation audit
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
# P5-15-01 route results
|
||||
|
||||
Fresh disposable Chromium/Development API census at unchanged application source `932b962b9038ddb5ad59b982c0199475bfb50454`, 2026-10-09. [Portable execution](evidence/browser-summary.json) contains all raw entry/refresh destinations/statuses, times, command/report/test hashes and limits. [Original/source route plan](../ROUTE_ACCEPTANCE.md) retains owner/query/navigation mappings; [57-group result](PRES_RESULTS.md) records capability scope.
|
||||
|
||||
**32 current patterns = all31 original patterns + Analytics.** Current source has35 route declarations including wildcard/duplicate-root infrastructure,32 concrete patterns,29 pages/3redirects. No current original pattern is removed. For each pattern, anonymous, ordinary account and administrator each perform entry and hard refresh: **192 observations**. All192 reach the expected URL/heading/config state; **188 route observations satisfy all asserted conditions / 4 fail** on saved-search500s. Selected native GET observations are **98:94 expected statuses /4 failed**; the other94 route observations have no selected GET. Separately, a real anonymous→login return loses `months=6`, despite reaching Analytics.
|
||||
|
||||
The finite entry/refresh criterion passes31 patterns and fails1 (`/discover`). The broader workflow-status column is **30 PARTIAL / 2 FAIL** (`/login` return context and `/discover` list): native entry is not an exhaustive functional journey. Meaningful query loss is not normalized as a passed workflow. Public missing-token/config-disabled and provider-not-connected states are intentional limitations, not failures. The route census does not submit every form or exercise live providers.
|
||||
|
||||
## Complete concrete-pattern inventory
|
||||
|
||||
Every identity cell applies to both entry and refresh; selected native GETs are the current page read, not HTTP200 from a static shell. Public cases assert their actual named missing-link/config state. Scope IDs inherit the unchanged original plan.
|
||||
|
||||
| Pattern | Original/current disposition | PRES scope | Anonymous entry + refresh | Normal entry + refresh | Admin entry + refresh | Finite entry/read | Full workflow status / remaining proof |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| `/` | Preserved public page | E01/E02/E07/E08 | Public plans | Dashboard redirect | Dashboard redirect | PASS (bounded) | PARTIAL; full action/provider/manual criteria in PRES matrix |
|
||||
| `/login` | Preserved public page | E02–E05/E09 | Named public/config/token state | Named public/config/token state | Named public/config/token state | PASS (bounded) | FAIL AUTH-01; query lost on actual sign-in return |
|
||||
| `/register` | Preserved public page | E02/E03 | Named public/config/token state | Named public/config/token state | Named public/config/token state | PASS (bounded) | PARTIAL; full action/provider/manual criteria in PRES matrix |
|
||||
| `/forgot-password` | Preserved public page | E02 | Named public/config/token state | Named public/config/token state | Named public/config/token state | PASS (bounded) | PARTIAL; full action/provider/manual criteria in PRES matrix |
|
||||
| `/reset-password` | Preserved public page | E02 | Named public/config/token state | Named public/config/token state | Named public/config/token state | PASS (bounded) | PARTIAL; full action/provider/manual criteria in PRES matrix |
|
||||
| `/verify-email` | Preserved public page | E02 | Named public/config/token state | Named public/config/token state | Named public/config/token state | PASS (bounded) | PARTIAL; full action/provider/manual criteria in PRES matrix |
|
||||
| `/confirm-email-change` | Preserved public page | E06 | Named public/config/token state | Named public/config/token state | Named public/config/token state | PASS (bounded) | PARTIAL; full action/provider/manual criteria in PRES matrix |
|
||||
| `/microsoft-legacy-relink` | Preserved public page | E03 | Named public/config/token state | Named public/config/token state | Named public/config/token state | PASS (bounded) | PARTIAL; full action/provider/manual criteria in PRES matrix |
|
||||
| `/cv/:slug` | Preserved public page | C05/C12 | Unpublished public CV404 | Unpublished public CV404 | Unpublished public CV404 | PASS (bounded) | PARTIAL; full action/provider/manual criteria in PRES matrix |
|
||||
| `/dashboard` | Enhanced original page — P5-06 | S01/S02/E07–E09 | Landing redirect; private main absent | Native GET200 | Native GET200 | PASS (bounded) | PARTIAL; full action/provider/manual criteria in PRES matrix |
|
||||
| `/analytics` | Added enhanced page — P5-07 | S01/S02/E07–E09/J05/J09 | Landing redirect; private main absent | Native GET200 | Native GET200 | PASS (bounded) | PARTIAL; full action/provider/manual criteria in PRES matrix; direct months=6 retained, login-return loss tracked AUTH-01 |
|
||||
| `/discover` | Preserved page; Jobs secondary entry | J01/J02 | Landing redirect; private main absent | Native GET500 | Native GET500 | FAIL DISCOVERY-01 | FAIL DISCOVERY-01; saved searches/control recovery blocked |
|
||||
| `/jobs` | Enhanced original page — P5-03/P5-04b | J03–J07/W01/S03 | Landing redirect; private main absent | Native GET200 | Native GET200 | PASS (bounded) | PARTIAL; full action/provider/manual criteria in PRES matrix |
|
||||
| `/jobs/:id` | Enhanced original page — P5-08a/b | W01–W12/M01/M02/E07–E09 | Landing redirect; private main absent | Native GET200 | Native GET200 | PASS (bounded) | PARTIAL; full action/provider/manual criteria in PRES matrix |
|
||||
| `/reminders` | Preserved page; Jobs secondary entry | W10/W11 | Landing redirect; private main absent | Native GET200 | Native GET200 | PASS (bounded) | PARTIAL; full action/provider/manual criteria in PRES matrix |
|
||||
| `/operations` | Preserved page; utility entry | W12/S02 | Landing redirect; private main absent | Native GET200 | Native GET200 | PASS (bounded) | PARTIAL; full action/provider/manual criteria in PRES matrix |
|
||||
| `/kanban` | Legacy original pattern; redirect after P5-04b | J07/W01/E07 | Landing redirect; private main absent | Native GET200 | Native GET200 | PASS (bounded) | PARTIAL; full action/provider/manual criteria in PRES matrix |
|
||||
| `/companies` | Preserved page; Jobs secondary entry | J08 | Landing redirect; private main absent | Native GET200 | Native GET200 | PASS (bounded) | PARTIAL; full action/provider/manual criteria in PRES matrix |
|
||||
| `/offers` | Preserved page; Jobs secondary entry | J09/S01 | Landing redirect; private main absent | Native GET200 | Native GET200 | PASS (bounded) | PARTIAL; full action/provider/manual criteria in PRES matrix |
|
||||
| `/correspondence` | Preserved primary page | M01–M06 | Landing redirect; private main absent | Native GET200 | Native GET200 | PASS (bounded) | PARTIAL; full action/provider/manual criteria in PRES matrix |
|
||||
| `/correspondence/review` | Preserved legacy redirect | M05 | Landing redirect; private main absent | Gmail not connected409 + warning | Gmail not connected409 + warning | PASS (bounded) | PARTIAL; full action/provider/manual criteria in PRES matrix |
|
||||
| `/profile` | Preserved page; Settings/account entry | E04–E06 | Landing redirect; private main absent | Native GET200 | Native GET200 | PASS (bounded) | PARTIAL; full action/provider/manual criteria in PRES matrix |
|
||||
| `/applications/:id` | Preserved legacy redirect | W01/E07 | Landing redirect; private main absent | Native GET200 | Native GET200 | PASS (bounded) | PARTIAL; full action/provider/manual criteria in PRES matrix |
|
||||
| `/career` | Preserved page; Career Profile entry | C01–C04 | Landing redirect; private main absent | Native GET200 | Native GET200 | PASS (bounded) | PARTIAL; full action/provider/manual criteria in PRES matrix |
|
||||
| `/career/builder` | Preserved page; CVs entry | C05 | Landing redirect; private main absent | Native GET200 | Native GET200 | PASS (bounded) | PARTIAL; full action/provider/manual criteria in PRES matrix |
|
||||
| `/career/builder/:id` | Enhanced original editor — P5-09–12/P5-14 | C06–C12/W05/E07–E09 | Landing redirect; private main absent | Native GET200 | Native GET200 | PASS (bounded) | PARTIAL; full action/provider/manual criteria in PRES matrix |
|
||||
| `/admin/audit` | Preserved authorized admin page | A02 | Landing redirect; private main absent | Server403; role denied | Native GET200 | PASS (bounded) | PARTIAL; full action/provider/manual criteria in PRES matrix |
|
||||
| `/admin/users` | Preserved authorized admin page | A01 | Landing redirect; private main absent | Server403; role denied | Native GET200 | PASS (bounded) | PARTIAL; full action/provider/manual criteria in PRES matrix |
|
||||
| `/admin/system` | Preserved authorized admin page | A03 | Landing redirect; private main absent | Server403; role denied | Native GET200 | PASS (bounded) | PARTIAL; full action/provider/manual criteria in PRES matrix |
|
||||
| `/trash` | Enhanced original page — P5-03 | J06/S03 | Landing redirect; private main absent | Native GET200 | Native GET200 | PASS (bounded) | PARTIAL; full action/provider/manual criteria in PRES matrix |
|
||||
| `/settings` | Preserved page; Account entry | S03–S05/J10/E08 | Landing redirect; private main absent | Native GET200 | Native GET200 | PASS (bounded) | PARTIAL; full action/provider/manual criteria in PRES matrix |
|
||||
| `/settings/connected-accounts` | Preserved page; Settings secondary entry | M06/E03 | Landing redirect; private main absent | Native GET200 | Native GET200 | PASS (bounded) | PARTIAL; full action/provider/manual criteria in PRES matrix |
|
||||
|
||||
## Compatibility and navigation actually exercised
|
||||
|
||||
- `/kanban?q=Acceptance&status=Saved#board` becomes `/jobs?q=Acceptance&status=Saved&view=board#board`: query/hash retained, real matching card appears; existing integration fixture adds filter/history/keyboard behavior.
|
||||
- `/applications/{id}?section=documents&followMode=waiting-update#workspace` becomes `/jobs/{id}?section=documents&followMode=waiting-update`: section/followMode survive, incoming hash does not. The approved exception remains **metadata only**, not implemented compose UI. Existing navigation fixtures separately exercise routed state, all seven canonical/legacy sections, Back/Forward/reload and dirty Cancel/Discard.
|
||||
- `/correspondence/review?route=all#review` becomes `/correspondence?view=review`; extra query/hash are discarded by the existing alias. In this unconnected fixture the native API returns deliberate409 `gmail_not_connected` with the named warning. This is compatibility characterization, not real Gmail qualification.
|
||||
- Native normal/admin Dashboard→Jobs via existing navigation, browser Back/Forward and admin metadata distinction pass after the full census; normal-account Admin APIs deny403. The denial checks additionally assert absence of one synthetic bootstrap identity, not exhaustive redaction.
|
||||
- Additional owned/foreign-account setup tests Job/CV missing and foreign direct entry+refresh: **eight genuine404s**, no foreign job title/private CV-name control, safe Job back action/legacy metadata. The generic `alert.first()` may match the Next route announcer; it does not prove specific error feedback. No unsafe dependent mutation is attempted.
|
||||
- Existing inherited117 browser cases cover named Jobs→Job→Back focus, independent loading/errors/retry, dirty navigation, CV draft recovery, publication revoke, keyboard menus/dialogs and responsive mode transitions. Some deliberately inject responses; [journey report](JOURNEYS_AND_CONTROLS.md) identifies setup, mocks/faults and end-to-end limits.
|
||||
|
||||
## Reachability and outstanding evidence
|
||||
|
||||
Grouped navigation preserves Jobs/Discover/Companies/Offers/Trash, Career Profile/CV library, Analytics, Settings/account/mail and role-gated Admin destinations at their approved primary/secondary/utility entry points. The source navigation mapping and inherited command/search fixtures remain; no original capability is removed here. This is not proof that every control completes its workflow: saved-search-dependent controls are inaccessible after the failed load; successful Admin AuditUndo, every security/draft/provider mutation and real reset-mail/2FA/OAuth remain NOT VERIFIED. The API, not hidden UI, enforces observed denials.
|
||||
|
||||
No wildcard/RouteErrorPage is counted as a33rd concrete pattern. No production deep-link/deployment health, production provider authorization, human screen-reader, real-device/software-keyboard, complete zoom/reflow or new quick-preview host is claimed. Production remains NO-GO. The P1 saved-search defect and P2 sign-in context defect require their separate repairs before acceptance; no routes or semantics were changed in this audit.
|
||||
Reference in New Issue
Block a user