Files
jobtrackingapp/docs/redesign/phase-5/p5-15/p5-15-01/ROUTE_RESULTS.md
T

70 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# P5-15-01 route results
**Current R-03 successor:** The [bounded Analytics authentication repair](analytics-auth-repair/README.md) passes the unchanged original AUTH-01 assertion in isolation and the final ordinary browser run, plus all five new native authentication-return cases. Requested `/analytics?months=6` returns to exactly that destination and selects six months. [Fresh final validation](analytics-auth-repair/evidence/validation.json) records **134/134 ordinary cases**, zero failures/skips/flaky/retries, and separate diagnostics2/2. The full census passes all **32 patterns / 192 entry-refresh observations**, with **98 expected native GET observations / zero500s**. All117 inherited, five audit, three saved-search, four Rules and five new auth cases remain passing; subset reruns are not added twice.
The supported Analytics query remains `months`:6 or24, otherwise12. [Native proof](analytics-auth-repair/evidence/auth-proof.json) preserves encoded `%36`, fragments, absent/invalid periods, authenticated direct entry, refresh, Back/Forward, failed-login retry and expiry return. Deliberate logout/account disposal still clears the prior return context and subsequent login uses Dashboard. Another owned `/jobs/{id}?section=documents#documents` destination survives sign-in/reload; a different account receives native404, with owner readback unchanged. Client-supplied protocol-relative and encoded external targets fall back to Dashboard. Actual Google/Microsoft authentication remains NOT VERIFIED; their existing completion/cancellation contracts have component fixtures only. The shared completion validates internal targets and safe existing context without persistent URL storage or altered identity-provider contracts.
**Current broader route-workflow disposition: 32 PARTIAL / 0 FAIL.** All finite entry/read criteria pass; no complete route workflow earns PASS from this bounded repair. Original31 patterns plus Analytics, existing legacy aliases and every historical table cell below remain unchanged. Named AUTH-01 and saved-search failures are superseded only by their independently documented repairs; original failed observations remain historical. Every route still retains missing long-tail/provider/manual/device evidence in the preservation matrix. No production health/deployment, human AT, physical touch/software keyboard or complete zoom/reflow acceptance is implied. Production remains NO-GO; P5-15-02 has not begun.
**Historical R-01 successor:** [native saved-search repair](saved-search-repair/README.md) reruns all32 patterns/192 entry-refresh observations. The four normal/admin Discover reads now return200, with98 selected native reads and no remaining500. All entry-refresh assertions pass; the separately asserted sign-in query return still fails. Current broader workflow disposition is31PARTIAL/1FAIL (Login), not32 fully accepted workflows. The original01 table, failed observations and30PARTIAL/2FAIL outcome below remain historical.
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.