docs(redesign): record Analytics authentication repair acceptance

This commit is contained in:
cesnimda
2026-10-10 15:03:56 +02:00
parent 6843767176
commit cf847e9b25
16 changed files with 1892 additions and 68 deletions
@@ -1,6 +1,27 @@
# P5-15 preservation acceptance — 57 original groups
## Current P5-15-01R-02 reconciliation
## Current P5-15-01R-03 reconciliation
The [bounded Analytics authentication repair](p5-15-01/analytics-auth-repair/README.md) supersedes AUTH-01 for its tested return-path scope only. The unchanged native assertion first reproduced `/analytics?months=6` returning `/analytics`; it now passes in isolation and the complete ordinary browser run. The five new native return-path cases also pass. [Native proof](p5-15-01/analytics-auth-repair/evidence/auth-proof.json) and [fresh final validation](p5-15-01/analytics-auth-repair/evidence/validation.json) identify actual reports, command results, native fixtures and hashes.
The guard retains pathname, search, hash and validated existing router context through the existing App/Landing/Login chain. The shared completion boundary validates untrusted internal targets before local, two-factor and provider-return navigation; deliberate account/session disposal continues to clear prior private context. Analytics aggregation, supported `months` semantics, provider identity contracts and server ownership rules are unchanged.
Current totals: **PASS 0 / PARTIAL 56 / FAIL 0 / DEFERRED 1 / BLOCKED 0 / NOT VERIFIED 0 = 57**. E02 alone moves FAIL→PARTIAL after the demonstrated scoped repair and final regression. No group earns PASS; all mandatory long-tail/manual/provider obligations remain. C11/P5-13 remains unqualified, Production-withheld and deferred. Every original00/01/R-01/R-02 status column and failed historical observation is retained; old gap cells describing Fresh01 failures are historical and superseded only for each named repair scope.
Fresh final results: ordinary browser **134/134** (117 inherited +5 audit +3 saved-search +4 Rules +5 new authentication cases), zero failures/skips/flaky/retries; separate diagnostics **2/2**; backend **1,033**, frontend **490**. Native route entry/refresh assertions pass for all32 patterns/192 observations with98 expected selected reads and zero500s. The scoped saved-search and Rules repairs remain green; revision/native rendering and security gates remain unchanged and passing. Automated axe reports267 scans, zero violations and **2,041 incomplete node occurrences**, not complete accessibility acceptance. Production remains **NO-GO**; P5-15-02 has not begun and requires a separate instruction.
| Affected contract | Bounded R-03 evidence / preserved boundary | Mandatory evidence still outstanding |
|---|---|---|
| PRES-E02 | Original non-default Analytics sign-in return now GREEN in isolation/full suite; failed local login retains intended destination, defaults, refresh/history and expiry/logout have native proof. | Real reset-mail delivery, configured Turnstile and complete reset-token submission are not qualified by this repair. |
| PRES-E03 | Existing Google/Microsoft completion paths use the same validated destination; retained component fixtures protect success/cancellation contracts and the full suite remains green. | Actual external-provider consent/popups, revoked grants and real sandbox relink remain NOT VERIFIED; deterministic provider fixtures are not real authentication. |
| PRES-E04 | Existing two-factor completion uses the same validated return destination, without changing challenge or trusted-device semantics; existing backend/component regressions pass. | Real authenticator/recovery and trusted-device UI traversal, keyboard/screen-reader security-form acceptance remain open. |
| PRES-E07 | Shared guard preserves complete protected-route URLs and valid existing navigation context; full route census and inherited shell regressions pass, without navigation regrouping or a new redirect store. | Every nav/command destination's full workflow, drawer/rail spoken names and inherited command/focus timing debt remain open. |
| PRES-E09 | Native expiry versus deliberate logout and owned/foreign return-resource cases preserve disposal and404 ownership denials; full account-isolation regressions remain green. | Real BFCache/offline/old-bundle and deployed multi-device variations remain unverified; frontend return validation does not replace server authorization. |
| PRES-W01 (supporting) | Existing protected `/jobs/{id}?section=documents#documents` survives login/reload; foreign-account reads retain404/no private title, owner readback unchanged; inherited workspace/focus cases pass. | Reusable overlay has no active host; approved followMode compose UI deferral and broader human AT remain open. |
| PRES-J05 (supporting) | Existing Jobs list query/row return context is validated and replayed; focused Login context and inherited Jobs/Back/filter browser cases remain green. | Full long-tail list interactions, assistive technology and real-device acceptance are not replaced by this auth repair. |
| PRES-J02 (supporting) | Saved-search implementation is untouched; all three existing native repair cases pass in the134-case run. | Scheduler/alert delivery, live source providers and mobile delete confirmation are not qualified here. |
## Historical P5-15-01R-02 reconciliation
The [bounded Rules draft repair](p5-15-01/rules-draft-repair/README.md) supersedes SETTINGS-01 only. Its genuine SQLite14→5→tab-return5/no-write, atomic Save/readback, validation/error/retry/discard and account-disposal evidence changes **PRES-S03 FAIL→PARTIAL**. Other Settings notification/language reliability, historical Rules500 and human/provider checks remain open; no whole group earns PASS.
@@ -39,65 +60,65 @@ Historical visual links describe only their recorded fixtures and review. Four t
## Reconciled matrix
| Original ID / complete-group shorthand | Current route / actual component; implemented preservation touch | Historical executable regression anchors | Inherited visual / responsive / EN-NB evidence and limit | P5-15-00 before | P5-15-01 after | P5-15-01R-01 after | P5-15-01R-02 current | Remaining limitation / gap | Required next audit / owner / priority |
|---|---|---|---|---|---|---|---|---|---|
| **PRES-E01** — Public product/plans; honest unavailable billing | `/`; [LandingPage](../../../../job-tracker-ui/src/views/LandingPage.tsx), [planCatalog](../../../../job-tracker-ui/src/planCatalog.ts). Unchanged public product/plans; [P5-01](../p5-01/README.md) route regression. | [F:landing-page](../../../../job-tracker-ui/src/landing-page.test.tsx); [F:planCatalog](../../../../job-tracker-ui/src/planCatalog.test.ts); [B:AccountPlans](../../../../JobTrackerApi.Tests/AccountPlansTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Actual checkout/billing provider availability and public mobile/keyboard acceptance remain unverified. | Public/commerce owner; M — audit loaded mobile/keyboard EN/NB plans and honest unavailable billing; provider readiness separately. |
| **PRES-E02** — Local login/register/remember, challenge, reset and verification | `/login`, `/register`, reset/verify routes; [LoginPage](../../../../job-tracker-ui/src/views/LoginPage.tsx), [ForgotPasswordPage](../../../../job-tracker-ui/src/views/ForgotPasswordPage.tsx), [ResetPasswordPage](../../../../job-tracker-ui/src/views/ResetPasswordPage.tsx), [VerifyEmailPage](../../../../job-tracker-ui/src/views/VerifyEmailPage.tsx). Entry retained by [P5-01](../p5-01/README.md); existing local auth/challenge/reset/verification owners. | [F:login-page](../../../../job-tracker-ui/src/login-page.test.tsx); [F:verify-email-page](../../../../job-tracker-ui/src/verify-email-page.test.tsx); [B:LocalAuthIdentity](../../../../JobTrackerApi.Tests/LocalAuthIdentityTests.cs); [B:AuthAndSystemController](../../../../JobTrackerApi.Tests/AuthAndSystemControllerTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **FAIL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **FAIL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **FAIL**; [01 evidence](p5-15-01/PRES_RESULTS.md) |**Fresh01:** AUTH-01 sign-in query loss; [register](p5-15-01/DEFECTS.md). Real reset-mail delivery, Turnstile/browser configuration and complete token-reset submit journey remain unverified. | Identity owner; H — trace reset request/token submit/verification/challenge errors in real App; sandbox mail/Turnstile only under later authorization. |
| **PRES-E03** — Google/Microsoft login, link, legacy relink and popup results | `/login`, `/microsoft-legacy-relink`; [GoogleAuthCard](../../../../job-tracker-ui/src/components/GoogleAuthCard.tsx), [MicrosoftAuthCard](../../../../job-tracker-ui/src/components/MicrosoftAuthCard.tsx), [relink page](../../../../job-tracker-ui/src/views/MicrosoftLegacyRelinkPage.tsx). Entry retained by [P5-01](../p5-01/README.md); provider sign-in remains separate from Connections. | [F:login-page](../../../../job-tracker-ui/src/login-page.test.tsx); [F:microsoft-legacy-relink-page](../../../../job-tracker-ui/src/microsoft-legacy-relink-page.test.tsx); [B:GoogleTokenValidator](../../../../JobTrackerApi.Tests/GoogleTokenValidatorTests.cs); [B:MicrosoftTokenValidator](../../../../JobTrackerApi.Tests/MicrosoftTokenValidatorTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Real provider consent/popups, revoked grants and sandbox outcomes remain unverified; origin/state contracts remain required. | Identity/provider owner; H — audit popup origin/state, revoke/relink and provider errors using approved sandbox; keep sign-in and mailbox grants separate. |
| **PRES-E04** — 2FA challenge/recovery/setup/disable; trusted-device revocation | `/profile`, `/login`; [TwoFactorSettingsCard](../../../../job-tracker-ui/src/components/TwoFactorSettingsCard.tsx), [challenge](../../../../job-tracker-ui/src/components/TwoFactorChallenge.tsx). Entry relocation only in [P5-01](../p5-01/README.md); Profile/login security forms unchanged. | [F:two-factor-settings](../../../../job-tracker-ui/src/two-factor-settings.test.tsx); [F:login-page](../../../../job-tracker-ui/src/login-page.test.tsx); [B:TwoFactorController](../../../../JobTrackerApi.Tests/TwoFactorControllerTests.cs); [B:SessionsController](../../../../JobTrackerApi.Tests/SessionsControllerTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Real mobile authenticator/recovery and trusted-device UI traversal remain open; no security-form acceptance inferred from navigation. | Identity/accessibility owner; H — manual keyboard/screen-reader recovery/trusted-device traversal plus real authenticator proof. |
| **PRES-E05** — Session list/current device, revoke one/others, logout | `/profile` and account Sign out; [SessionsSettingsCard](../../../../job-tracker-ui/src/components/SessionsSettingsCard.tsx), [AppShell](../../../../job-tracker-ui/src/layout/AppShell.tsx), [auth](../../../../job-tracker-ui/src/auth.ts). Direct shell logout/private utility changes in [P5-00](../p5-00/README.md)–[P5-02](../p5-02/README.md); session-list owner unchanged. | [F:session-boundary](../../../../job-tracker-ui/src/session-boundary.test.ts); [F:account-scoped-state](../../../../job-tracker-ui/src/account-scoped-state.test.tsx); [B:SessionsController](../../../../JobTrackerApi.Tests/SessionsControllerTests.cs); [B:AuthSessionRevocation](../../../../JobTrackerApi.Tests/AuthSessionRevocationTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Session-card selection/refresh after remote revocation remains open; broad device/AT acceptance is not established. | Identity/shell owner; H — audit session card remote-revoke refresh and Sign out private disposal/focus at every shell entry. |
| **PRES-E06** — Avatar, account names/headline, email change and password | `/profile`, `/confirm-email-change`; [ProfilePage](../../../../job-tracker-ui/src/views/ProfilePage.tsx), [VerifyEmailPage](../../../../job-tracker-ui/src/views/VerifyEmailPage.tsx). Account/security entry only in [P5-01](../p5-01/README.md); avatar/account identity and confirm-email-change route retained. | [F:profile-page](../../../../job-tracker-ui/src/profile-page.test.tsx); [F:verify-email-page](../../../../job-tracker-ui/src/verify-email-page.test.tsx); [B:AvatarStorage](../../../../JobTrackerApi.Tests/AvatarStorageTests.cs); [B:LocalAuthIdentity](../../../../JobTrackerApi.Tests/LocalAuthIdentityTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Avatar upload/remove and password-change browser journeys remain unverified; account identity stays distinct from Career Profile. | Identity owner; H — audit native avatar/remove/password/email-change, missing/error states and cross-account negative paths. |
| **PRES-E07** — Desktop collapse/mobile drawer, active nav and command search/actions | Private shell, Ctrl/Cmd+K; [App navigation](../../../../job-tracker-ui/src/App.tsx), [AppShell](../../../../job-tracker-ui/src/layout/AppShell.tsx), [QuickCommandDialog](../../../../job-tracker-ui/src/components/QuickCommandDialog.tsx). Direct [shell/navigation/utilities](../p5-02/README.md), [Jobs Table/Board](../p5-04b/README.md), [Analytics](../p5-07/README.md) and [workspace sections](../p5-08b/README.md). | [F:sidebar-active-nav](../../../../job-tracker-ui/src/sidebar-active-nav.test.ts); [F:app-shell-notifications](../../../../job-tracker-ui/src/app-shell-notifications.test.tsx); [B:JobApplicationsAuthorization](../../../../JobTrackerApi.Tests/JobApplicationsAuthorizationTests.cs); [B:CompanyRelationship](../../../../JobTrackerApi.Tests/CompanyRelationshipTests.cs) | [Shell/utility EN/NB × light/dark, rail/phone](../p5-02/README.md); [P5-14 shared clearance](../p5-14/README.md). Human AT/zoom incomplete. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [R-02 scoped Rules evidence](p5-15-01/rules-draft-repair/README.md), retained [01 evidence](p5-15-01/PRES_RESULTS.md) | Original route/command/drawer defects have scoped successor evidence; manual screen reader and inherited command/focus timing debt remain open. This census is not browser route acceptance. | Shell/accessibility owner; H — audit every nav/command destination, collapsed/mobile labels, route focus, dirty Cancel and manual spoken names (P5-02-D01; P5-04b-R01). |
| **PRES-E08** — Theme/system, EN/NB hydration, toast/confirm/prompt and errors | All routes/preferences; [ThemeProvider](../../../../job-tracker-ui/src/ThemeProvider.tsx), [themePrefs](../../../../job-tracker-ui/src/themePrefs.ts), [I18nProvider](../../../../job-tracker-ui/src/i18n/I18nProvider.tsx), [confirm](../../../../job-tracker-ui/src/confirm.tsx), [prompt](../../../../job-tracker-ui/src/prompt.tsx). Direct semantic theme/feedback controls in [P5-00](../p5-00/README.md); EN/Bokmål and light/dark regressions carried through [P5-12](../p5-12/README.md). | [F:theme-state](../../../../job-tracker-ui/src/theme-state.test.tsx); [F:i18n-provider](../../../../job-tracker-ui/src/i18n-provider.test.tsx); [B:LocalAuthIdentity](../../../../JobTrackerApi.Tests/LocalAuthIdentityTests.cs) | [Shell/utility EN/NB × light/dark, rail/phone](../p5-02/README.md); [P5-14 shared clearance](../p5-14/README.md). Human AT/zoom incomplete. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [R-02 scoped Rules evidence](p5-15-01/rules-draft-repair/README.md), retained [01 evidence](p5-15-01/PRES_RESULTS.md) | Full theme/locale/state/OS cross-product, spoken names/announcements, incomplete axe, zoom/forced-colours/text-spacing and shared-dialog timing remain unverified. | Shared UI/accessibility owner; H — audit loaded error/confirm/prompt states, OS theme, locale hydration, zoom/forced colours and announcements; incomplete axe remains open. |
| **PRES-E09** — Account-switch private-state disposal and stale request rejection | All private routes/account switches; [App](../../../../job-tracker-ui/src/App.tsx), [api](../../../../job-tracker-ui/src/api.ts), [sessionBoundary](../../../../job-tracker-ui/src/sessionBoundary.ts). Private-state/session boundary unchanged; new shell/utility/workspace/CV relationships regression-protected in [readiness](../p5-13-readiness/README.md). | [F:session-boundary](../../../../job-tracker-ui/src/session-boundary.test.ts); [F:account-scoped-state](../../../../job-tracker-ui/src/account-scoped-state.test.tsx); [B:SessionContextMiddleware](../../../../JobTrackerApi.Tests/SessionContextMiddlewareTests.cs); [B:CurrentUserIdLiveEvaluation](../../../../JobTrackerApi.Tests/CurrentUserIdLiveEvaluationTests.cs) | [Native account isolation](../../../../job-tracker-ui/e2e/account-isolation.spec.ts); [P5-14 owned source/sibling fixture](../p5-14/README.md). Images do not prove tenant isolation. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [R-02 scoped Rules evidence](p5-15-01/rules-draft-repair/README.md), retained [01 evidence](p5-15-01/PRES_RESULTS.md) | Real BFCache variations/long offline retries and deployed old-bundle/session behavior remain unverified; images and mocked components cannot prove tenant isolation. | Identity owner; H — rerun real account-switch/two-tab stale read/write evidence at execution checkpoint; extend BFCache/offline/old-bundle audit when authorized. |
| **PRES-J01** — NAV discovery/filter/sort/source/deadline/details | `/discover`; [JobDiscoveryPage](../../../../job-tracker-ui/src/views/JobDiscoveryPage.tsx). Entry only: [P5-01](../p5-01/README.md) groups Discover under Jobs; discovery search semantics/service retained; R-01 adds independent saved-list feedback. | [F:job-discovery](../../../../job-tracker-ui/src/job-discovery.test.tsx); [B:JobDiscoveryController](../../../../JobTrackerApi.Tests/JobDiscoveryControllerTests.cs); [B:JobOpportunitySync](../../../../JobTrackerApi.Tests/JobOpportunitySyncTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Live NAV freshness/availability and long result keyboard traversal remain open. | Discovery owner; M — audit long results/mobile keyboard/source/deadline/retry; live NAV availability separately. |
| **PRES-J02** — Saved searches, run/delete/alerts, result changes/dismissal | `/discover`; [saved-search/alert controls](../../../../job-tracker-ui/src/views/JobDiscoveryPage.tsx). Entry only in [P5-01](../p5-01/README.md); saved discovery run/alert semantics retained; R-01 repairs list loading and feedback. | [F:job-discovery](../../../../job-tracker-ui/src/job-discovery.test.tsx); [B:SavedJobSearchAlert](../../../../JobTrackerApi.Tests/SavedJobSearchAlertTests.cs); [B:JobDiscoveryController](../../../../JobTrackerApi.Tests/JobDiscoveryControllerTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **FAIL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [R-01 native proof](p5-15-01/saved-search-repair/README.md); [SQLite10cases](../../../../JobTrackerApi.Tests/SavedJobSearchSqliteTests.cs) | **PARTIAL**; [R-01 native proof](p5-15-01/saved-search-repair/README.md); [SQLite10cases](../../../../JobTrackerApi.Tests/SavedJobSearchSqliteTests.cs) | DISCOVERY-01 SQLite listing and suppressed error are repaired; native create/reload/apply UI, pause/resume/delete and owner denial have bounded proof. Provider-dependent browser output is intercepted; real SQLite runner uses a deterministic service. Scheduler-to-notification delivery, mobile delete confirmation, live MariaDB/PostgreSQL and human screen reader remain unverified. | Discovery/notifications owner; M — audit saved search delete/pause/run, mobile confirmation and scheduler-to-owned-notification chain. |
| **PRES-J03** — Reviewed manual/URL/paste job create, company/tags/dates, duplicates | Jobs/command Add; [AddJobModal](../../../../job-tracker-ui/src/components/AddJobModal.tsx). Existing reviewed Add modal shared by [P5-03](../p5-03/README.md)/[P5-04b](../p5-04b/README.md); no creation on route/view mount. | [F:quick-capture](../../../../job-tracker-ui/src/quick-capture.test.tsx); [B:JobImportService](../../../../JobTrackerApi.Tests/JobImportServiceTests.cs); [B:JobImportHttpTransport](../../../../JobTrackerApi.Tests/JobImportHttpTransportTests.cs) | [Jobs/Trash four pairs and responsive](../p5-03/README.md); [shared Table/Board](../p5-04b/README.md). Capture/provider/manual gaps remain. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Duplicate/company/date edge UI and creation-intent idempotency remain independent gaps; import network boundary evidence is separate from live site success. | Capture/API owner; H — audit reviewed duplicate/company/date boundaries and interrupted creation; creation-intent idempotency stays a separate contract. |
| **PRES-J04** — Extension/bookmarklet/share capture; post-create attachment/CV | `?add=`, `?addtext=`, Settings capture; [capture consumer](../../../../job-tracker-ui/src/App.tsx), [captureUrl](../../../../job-tracker-ui/src/captureUrl.ts), [QuickCaptureCard](../../../../job-tracker-ui/src/components/QuickCaptureCard.tsx). Capture/add/addtext review entry retained in [P5-01](../p5-01/README.md)/[P5-03](../p5-03/README.md); extension and post-create owners unchanged. | [F:captureUrl](../../../../job-tracker-ui/src/captureUrl.test.ts); [F:quick-capture](../../../../job-tracker-ui/src/quick-capture.test.tsx); [B:JobImportService](../../../../JobTrackerApi.Tests/JobImportServiceTests.cs); [B:CvBuilder](../../../../JobTrackerApi.Tests/CvBuilderTests.cs) | [Jobs/Trash four pairs and responsive](../p5-03/README.md); [shared Table/Board](../p5-04b/README.md). Capture/provider/manual gaps remain. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Installed extension permissions/share flow and optional attachment failure recovery remain unverified. | Capture owner; H — audit installed extension/share/no-replay and post-create attachment failure recovery without auto-create. |
| **PRES-J05** — Job filters/sort/page/columns, saved views and row/mobile actions | `/jobs?view=table / board`; [JobTable](../../../../job-tracker-ui/src/components/JobTable.tsx), [SavedViewsMenu](../../../../job-tracker-ui/src/components/SavedViewsMenu.tsx), [jobsQuery](../../../../job-tracker-ui/src/jobsQuery.ts). Direct [P5-03](../p5-03/README.md) Jobs/Trash presentation and [P5-04b](../p5-04b/README.md) shared complete-query view integration. | [F:application-workspace-overlay](../../../../job-tracker-ui/src/application-workspace-overlay.test.tsx); [F:account-scoped-state](../../../../job-tracker-ui/src/account-scoped-state.test.tsx); [B:JobApplicationsController](../../../../JobTrackerApi.Tests/JobApplicationsControllerTests.cs); [B:JobApplicationsEndpointBehavior](../../../../JobTrackerApi.Tests/JobApplicationsEndpointBehaviorTests.cs) | [Jobs/Trash four pairs and responsive](../p5-03/README.md); [shared Table/Board](../p5-04b/README.md). Capture/provider/manual gaps remain. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Finite saved-view/filter/Back/error/selection fixtures do not exhaust saved-view CRUD or dirty nested page-size combinations; full-array scaling remains limited. | Jobs owner; H — audit full saved-view CRUD, Back/refresh/unknown query, dirty nested page-size and all-result scaling. |
| **PRES-J06** — Bulk status/delete, soft delete/trash/restore and job edit | `/jobs`, `/trash`; [JobTable](../../../../job-tracker-ui/src/components/JobTable.tsx), [EditJobDialog](../../../../job-tracker-ui/src/components/EditJobDialog.tsx). Direct [P5-03](../p5-03/README.md) table/Trash and [P5-04b](../p5-04b/README.md) selection/view integration; CRUD/soft-delete owner retained. | [F:application-workspace-overlay](../../../../job-tracker-ui/src/application-workspace-overlay.test.tsx); [F:confirm-flow](../../../../job-tracker-ui/src/confirm-flow.test.tsx); [B:JobApplicationsController](../../../../JobTrackerApi.Tests/JobApplicationsControllerTests.cs); [B:JobApplicationsAuthorization](../../../../JobTrackerApi.Tests/JobApplicationsAuthorizationTests.cs) | [Jobs/Trash four pairs and responsive](../p5-03/README.md); [shared Table/Board](../p5-04b/README.md). Capture/provider/manual gaps remain. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Scoped native restore and bulk/mutation fixtures supersede earlier bare-confirm gaps; all bulk partial-failure/dirty-state combinations and deeper manual AT remain unverified. | Jobs/API owner; H — audit selected scope, partial bulk failures and Trash restore with native persistence/dirty protection. |
| **PRES-J07** — Kanban grouped statuses, pointer/keyboard move and precise menu | `/jobs?view=board`, `/kanban` alias; [KanbanBoard](../../../../job-tracker-ui/src/components/KanbanBoard.tsx), [pipeline](../../../../job-tracker-ui/src/pipeline.ts). Direct [P5-04a](../p5-04a/README.md)/[P5-04b](../p5-04b/README.md); complete shared query, precise status and /kanban alias retained. | [F:kanban-grouped-board](../../../../job-tracker-ui/src/kanban-grouped-board.test.tsx); [F:pipeline](../../../../job-tracker-ui/src/pipeline.test.ts); [B:JobPipeline](../../../../JobTrackerApi.Tests/JobPipelineTests.cs) | [Board four pairs/narrow keyboard](../p5-04b/README.md). Physical touch/full-scale not proven. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Physical touch/native drag, broader responsive focus/cancel combinations and full-result scaling remain open; grouped statuses are not a new pipeline. | Jobs/accessibility owner; H — audit keyboard cancel/view focus, physical touch/drag and complete filtered membership at scale; no new pipeline. |
| **PRES-J08** — Company/contact edits, pipeline dates and linked-job history | `/companies?edit=id`; [CompaniesTable](../../../../job-tracker-ui/src/components/CompaniesTable.tsx). Company/contacts/history entry only in [P5-01](../p5-01/README.md)/[P5-02](../p5-02/README.md); existing Companies form retained. | [F:companies-relationship](../../../../job-tracker-ui/src/companies-relationship.test.tsx); [F:quick-command-preservation](../../../../job-tracker-ui/src/quick-command-preservation.test.tsx); [B:CompanyRelationship](../../../../JobTrackerApi.Tests/CompanyRelationshipTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | All contact/date edits and source-URL safety browser journeys remain unverified; P4-02-D02 inaccessible modal-save error is open for its owner. | Companies/accessibility owner; H — fix and prove durable in-modal save error before form migration (P4-02-D02); audit contact/date/source links. |
| **PRES-J09** — Recorded offers/compensation/deadlines/notes and source links | `/offers`; [OfferComparisonPage](../../../../job-tracker-ui/src/views/OfferComparisonPage.tsx). Offers entry retained; report source links reviewed in [P5-06](../p5-06/README.md)/[P5-07](../p5-07/README.md); recorded offer page unchanged. | [F:offer-comparison](../../../../job-tracker-ui/src/offer-comparison.test.tsx); [B:AnalyticsSalary](../../../../JobTrackerApi.Tests/AnalyticsSalaryTests.cs); [B:JobApplicationsEndpointBehavior](../../../../JobTrackerApi.Tests/JobApplicationsEndpointBehaviorTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Mobile many-offer comparison and localized currency/date visual acceptance remain open; no new salary facts are claimed. | Offers owner; M — audit many-offer narrow layout, currency/period/date labels and safe source links across EN/NB. |
| **PRES-J10** — CSV/JSON export, JSON import and CSV-to-JSON conversion | `/settings` Data; [ImportExportJobs](../../../../job-tracker-ui/src/components/ImportExportJobs.tsx). Settings Data import/export entry retained by [P5-01](../p5-01/README.md)/[P5-03](../p5-03/README.md); serializers unchanged. | [F:csv-export](../../../../job-tracker-ui/src/csv-export.test.tsx); [B:CsvExport](../../../../JobTrackerApi.Tests/CsvExportTests.cs); [B:JobApplicationsController](../../../../JobTrackerApi.Tests/JobApplicationsControllerTests.cs) | [Inherited Settings loaded/mobile review](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [shell entry](../p5-01/README.md). No full current domain requalification. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Full JSON import/count/roundtrip browser proof and spreadsheet-client compatibility remain separately bounded; byte/formula/Unicode fixtures are not exhaustive. | Settings/data owner; H — audit native JSON import counts/roundtrip, Unicode/formula-safe bytes and target spreadsheet compatibility. |
| **PRES-W01** — Full workspace, sections, legacy links and optional reusable overlay | `/jobs/:id`, `/applications/:id`; [ApplicationWorkspace](../../../../job-tracker-ui/src/views/ApplicationWorkspacePage.tsx), [section adapter](../../../../job-tracker-ui/src/applicationWorkspace.ts), [numeric-tab helper](../../../../job-tracker-ui/src/jobWorkspaceRoute.ts). Direct dedicated workspace header/Overview [P5-08a](../p5-08a/README.md) and URL sections [P5-08b](../p5-08b/README.md); Jobs/legacy aliases retained. | [F:application-workspace-overlay](../../../../job-tracker-ui/src/application-workspace-overlay.test.tsx); [F:applicationWorkspace](../../../../job-tracker-ui/src/applicationWorkspace.test.ts); [B:ApplicationWorkspace](../../../../JobTrackerApi.Tests/ApplicationWorkspaceTests.cs) | [Seven sections EN/NB × light/dark desktop/phone](../p5-08b/README.md); [native readiness/manual limits](../p5-08b-readiness/README.md). Human AT/provider gaps retained. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Reusable overlay has no active production host; followMode metadata retained but mode-specific UI explicitly deferred to mail. Full manual AT and historical transition-capture limits remain. | Workspace/mail owner; H — audit all canonical/legacy entries and numeric navigation-helper arguments, safe query/state, dirty/Back/focus; carry followMode UI to mail phase. |
| **PRES-W02** — Detail/status/progression, recruiter/dates/description/timeline | Job Overview/Timeline; [header/detail/progress](../../../../job-tracker-ui/src/views/ApplicationWorkspacePage.tsx), [ApplicationTimeline](../../../../job-tracker-ui/src/components/ApplicationIntelligence.tsx). Direct [P5-08a](../p5-08a/README.md)/[P5-08b](../p5-08b/README.md) header/progress/detail/timeline composition with existing status/date handlers. | [F:application-intelligence](../../../../job-tracker-ui/src/application-intelligence.test.tsx); [F:workflow-trust-signals](../../../../job-tracker-ui/src/workflow-trust-signals.test.tsx); [B:JobApplicationsWorkflowSignals](../../../../JobTrackerApi.Tests/JobApplicationsWorkflowSignalsTests.cs); [B:JobApplicationsAppliedDateHistory](../../../../JobTrackerApi.Tests/JobApplicationsAppliedDateHistoryTests.cs) | [Seven sections EN/NB × light/dark desktop/phone](../p5-08b/README.md); [native readiness/manual limits](../p5-08b-readiness/README.md). Human AT/provider gaps retained. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Localized backend event/content text, timezone/reload/status-to-timeline combinations and human AT remain unverified; job revision semantics were not repaired. | Workspace/API owner; H — audit native edit/status/date-to-timeline and localized stored content/timezones; job revision debt separately. |
| **PRES-W03** — Analysis, match/gaps, strategy and reviewed status/workflow suggestions | Job Match/Overview suggestion; [analysis/match/strategy](../../../../job-tracker-ui/src/components/ApplicationIntelligence.tsx), [workflow assist](../../../../job-tracker-ui/src/components/ApplicationWorkflowAssist.tsx). Existing contextual analysis/match/strategy/status owners recomposed by [P5-08b](../p5-08b/README.md); opening does not invoke AI. | [F:application-intelligence](../../../../job-tracker-ui/src/application-intelligence.test.tsx); [F:application-workflow-assist](../../../../job-tracker-ui/src/application-workflow-assist.test.tsx); [B:ApplicationIntelligence](../../../../JobTrackerApi.Tests/ApplicationIntelligenceTests.cs); [B:StrategySnapshotOperation](../../../../JobTrackerApi.Tests/StrategySnapshotOperationTests.cs) | [Seven sections EN/NB × light/dark desktop/phone](../p5-08b/README.md); [native readiness/manual limits](../p5-08b-readiness/README.md). Human AT/provider gaps retained. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Live model truthfulness, freshness/cancelled generation and provider quality remain unverified; P5-13 production CV withholding must not disable these unrelated AI paths. | Workspace/AI owner; H — audit reviewed suggestions/error/cancel/freshness/no-write entry; qualify live factuality separately from CV exception. |
| **PRES-W04** — Checklist create/edit/complete/delete/order and next action | Job Notes & tasks; [ApplicationChecklist](../../../../job-tracker-ui/src/components/ApplicationChecklist.tsx). Existing checklist owner/ordered controls recomposed by [P5-08b](../p5-08b/README.md); manual/system/dismissed distinctions retained. | [F:application-checklist](../../../../job-tracker-ui/src/application-checklist.test.tsx); [B:ApplicationChecklist](../../../../JobTrackerApi.Tests/ApplicationChecklistTests.cs) | [Seven sections EN/NB × light/dark desktop/phone](../p5-08b/README.md); [native readiness/manual limits](../p5-08b-readiness/README.md). Human AT/provider gaps retained. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Real mobile interruption/edit/delete combinations and human AT remain open; no task due-date schema or automatic notification added. | Workspace owner; H — audit native mobile item edit/delete/reorder/interruption and manual/system/dismissed next actions. |
| **PRES-W05** — Attach/select/create/tailor CV and source context | Job Application/CV, builder job link; [ApplicationCvSection/TailoringSection](../../../../job-tracker-ui/src/components/ApplicationAssets.tsx). Existing job-CV attach/create/tailor source relationships recomposed by [P5-08b](../p5-08b/README.md); [native readiness](../p5-08b-readiness/README.md) supersedes P2-D01. | [F:application-assets](../../../../job-tracker-ui/src/application-assets.test.tsx); [F:cv-builder-deep-link](../../../../job-tracker-ui/src/cv-builder-deep-link.test.tsx); [B:ApplicationAssets](../../../../JobTrackerApi.Tests/ApplicationAssetsTests.cs); [B:CvBuilder](../../../../JobTrackerApi.Tests/CvBuilderTests.cs) | [Seven sections EN/NB × light/dark desktop/phone](../p5-08b/README.md); [native readiness/manual limits](../p5-08b-readiness/README.md). Human AT/provider gaps retained. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | P2-D01 is an ordinary passing native regression, not current expected failure. Broader attach-render combinations, provider tailoring quality and deployed restore remain unverified; CV review production exception stays distinct. | Workspace/CV owner; H — audit attach/render/detach/create/tailor with source and foreign-owner checks; retain ordinary native P2-D01 successor. |
| **PRES-W06** — Cover-letter manual/AI review, versions/restore and dirty protection | Job Application/Letter; [ApplicationCoverLetterSection](../../../../job-tracker-ui/src/components/ApplicationAssets.tsx). Existing manual/AI cover-letter/history/dirty owner recomposed in [P5-08b](../p5-08b/README.md); literal-context defect corrected in [readiness](../p5-08b-readiness/README.md). | [F:application-assets](../../../../job-tracker-ui/src/application-assets.test.tsx); [F:application-workspace-overlay](../../../../job-tracker-ui/src/application-workspace-overlay.test.tsx); [B:ApplicationAssets](../../../../JobTrackerApi.Tests/ApplicationAssetsTests.cs) | [Seven sections EN/NB × light/dark desktop/phone](../p5-08b/README.md); [native readiness/manual limits](../p5-08b-readiness/README.md). Human AT/provider gaps retained. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Native/mocked review/history evidence does not establish live-model or provider quality; full screen-reader and every reject/history sequence remain unverified. | Workspace/AI owner; H — audit native manual/AI reject/accept/save/history and dirty Cancel/Discard; actual model quality separately. |
| **PRES-W07** — Application drafts and immutable submitted package/archived binaries | Job Application/Answers/Submission and Documents; [drafts/submitted packages](../../../../job-tracker-ui/src/components/ApplicationAssets.tsx). Existing drafts/frozen submission/archive owners recomposed by [P5-08b](../p5-08b/README.md); [native SQLite/archive/ZIP proof](../p5-08b-readiness/README.md) retained. | [F:application-assets](../../../../job-tracker-ui/src/application-assets.test.tsx); [F:application-drafts](../../../../job-tracker-ui/src/application-drafts.test.ts); [B:SubmittedApplicationPackage](../../../../JobTrackerApi.Tests/SubmittedApplicationPackageTests.cs); [B:JobApplicationsApplicationPackage](../../../../JobTrackerApi.Tests/JobApplicationsApplicationPackageTests.cs) | [Seven sections EN/NB × light/dark desktop/phone](../p5-08b/README.md); [native readiness/manual limits](../p5-08b-readiness/README.md). Human AT/provider gaps retained. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Earlier P2-D01 capture expected failure is superseded by ordinary native passing evidence. Production restore/rollback and all storage/provider combinations remain unverified; capture is not external send. | Workspace/storage owner; H — retain native capture→source mutation→archive/ZIP immutable-byte regression; release owner proves restore/rollback independently. |
| **PRES-W08** — Attachments upload/category/name/AI consent/preview/download/delete | Job Documents; [Attachments](../../../../job-tracker-ui/src/components/Attachments.tsx). Existing attachments CRUD/consent/protected downloads retained; named narrow table/empty state in [P5-08b](../p5-08b/README.md), archive proof in [readiness](../p5-08b-readiness/README.md). | [F:attachments](../../../../job-tracker-ui/src/attachments.test.tsx); [B:AttachmentsController](../../../../JobTrackerApi.Tests/AttachmentsControllerTests.cs); [B:AttachmentConsistency](../../../../JobTrackerApi.Tests/AttachmentConsistencyTests.cs) | [Seven sections EN/NB × light/dark desktop/phone](../p5-08b/README.md); [native readiness/manual limits](../p5-08b-readiness/README.md). Human AT/provider gaps retained. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Archive gate is locally satisfied for recorded native fixtures; physical drag/drop, broad rename/download/manual AT and production storage behavior remain unverified. | Workspace/storage owner; H — audit upload/category/name/consent/preview/download/delete and physical drop with live/frozen identity. |
| **PRES-W09** — Interview questions/answers/ready/manual removal/AI review | Job Interview Prep; [InterviewPrep](../../../../job-tracker-ui/src/components/InterviewPrep.tsx). Existing interview questions/answers/manual removal/AI review/readiness recomposed by [P5-08b](../p5-08b/README.md). | [F:interview-prep](../../../../job-tracker-ui/src/interview-prep.test.tsx); [B:InterviewPrepPersistence](../../../../JobTrackerApi.Tests/InterviewPrepPersistenceTests.cs); [B:InterviewAiContext](../../../../JobTrackerApi.Tests/InterviewAiContextTests.cs) | [Seven sections EN/NB × light/dark desktop/phone](../p5-08b/README.md); [native readiness/manual limits](../p5-08b-readiness/README.md). Human AT/provider gaps retained. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Real-model quality, physical mobile keyboard/populated reload and manual AT remain open; prep does not establish scheduled interview data. | Workspace/AI owner; H — audit populated mobile keyboard/reload/manual removal and explicit AI review; no scheduled-interview inference. |
| **PRES-W10** — Debrief/follow-up draft/date/readiness | Job Interview Prep and follow-up links; [InterviewPrep](../../../../job-tracker-ui/src/components/InterviewPrep.tsx), [followMode producer](../../../../job-tracker-ui/src/jobWorkspaceRoute.ts). Existing debrief/follow-up draft/date/readiness owner recomposed by [P5-08b](../p5-08b/README.md); no automatic send. | [F:interview-prep](../../../../job-tracker-ui/src/interview-prep.test.tsx); [B:JobApplicationsFollowUpDraft](../../../../JobTrackerApi.Tests/JobApplicationsFollowUpDraftTests.cs); [B:InterviewPrep](../../../../JobTrackerApi.Tests/InterviewPrepTests.cs) | [Seven sections EN/NB × light/dark desktop/phone](../p5-08b/README.md); [native readiness/manual limits](../p5-08b-readiness/README.md). Human AT/provider gaps retained. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Timezone/reload chains and provider delivery remain unverified; followMode-specific compose UI is deferred rather than implemented. | Workspace/mail/calendar owner; H — audit debrief/date/reload and metadata links; defer mode-specific compose UI under recorded decision. |
| **PRES-W11** — Reminder rules/actions/notifications, ICS and Google/Outlook events | `/reminders`, Settings rules, job Notes & tasks; [RemindersView](../../../../job-tracker-ui/src/components/RemindersView.tsx), [RulesSettingsCard](../../../../job-tracker-ui/src/components/RulesSettingsCard.tsx), [calendar actions](../../../../job-tracker-ui/src/components/ApplicationCalendarActions.tsx). Reminder/calendar links retained by [P5-01](../p5-01/README.md)/[P5-02](../p5-02/README.md), Dashboard and [P5-08b](../p5-08b/README.md); calendar/rules APIs unchanged. | [F:daily-control-loop](../../../../job-tracker-ui/src/daily-control-loop.test.tsx); [F:application-calendar](../../../../job-tracker-ui/src/application-calendar.test.tsx); [B:ApplicationCalendarController](../../../../JobTrackerApi.Tests/ApplicationCalendarControllerTests.cs); [B:RulesEngineProspect](../../../../JobTrackerApi.Tests/RulesEngineProspectTests.cs) | [Shell/notification entry](../p5-02/README.md); [workspace links](../p5-08b/README.md). Dedicated full calendar/worker responsive audit absent. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [R-02 scoped Rules evidence](p5-15-01/rules-draft-repair/README.md), retained [01 evidence](p5-15-01/PRES_RESULTS.md) | F21 DST/date-only/provider timezone gap, actual Google/Outlook events, scheduler delivery and historical unconfirmed rules-save 500 remain open. | Calendar/API owner; H — investigate F21 DST/date-only semantics before event changes; audit real ICS/rules/reminder and approved provider writes. |
| **PRES-W12** — Async progress/failure/retry/cancel/notifications | `/operations`, Career processing and bell; [OperationsPage](../../../../job-tracker-ui/src/views/OperationsPage.tsx), [processing consumer](../../../../job-tracker-ui/src/views/CareerProfilePage.tsx). Operations remains reachable utility; progress/result/cancel/retry links retained by [P5-02](../p5-02/README.md)/[P5-08b](../p5-08b/README.md); store/worker unchanged. | [F:operations-page](../../../../job-tracker-ui/src/operations-page.test.tsx); [F:profile-page](../../../../job-tracker-ui/src/profile-page.test.tsx); [B:OperationsController](../../../../JobTrackerApi.Tests/OperationsControllerTests.cs); [B:UserOperationStore](../../../../JobTrackerApi.Tests/UserOperationStoreTests.cs) | [Shell/notification entry](../p5-02/README.md); [workspace links](../p5-08b/README.md). Dedicated full calendar/worker responsive audit absent. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Long disconnect/reconnect and F20 enabled worker fault containment remain operational gaps; no live job/worker recovery was certified. | Operations/worker owner; H — audit disconnect/reconnect/late-result/no-duplicate starts/cancel/retry; F20 recovery before enabling producers. |
| **PRES-C01** — Canonical structured career data and long-tail/custom sections | `/career?section=profile`; [CareerProfilePage](../../../../job-tracker-ui/src/views/CareerProfilePage.tsx), [structured sections](../../../../job-tracker-ui/src/views/career/CareerProfileSections.tsx). Career entry retained; canonical/source scope reviewed in [P5-10](../p5-10/README.md), [P5-12](../p5-12/README.md) and [AI readiness](../p5-13-readiness/README.md). | [F:profile-page](../../../../job-tracker-ui/src/profile-page.test.tsx); [B:CareerProfileController](../../../../JobTrackerApi.Tests/CareerProfileControllerTests.cs); [B:CareerProfileService](../../../../JobTrackerApi.Tests/CareerProfileServiceTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Full long-tail Career/mobile save and canonical concurrent updates remain separate; scoped CV acceptance never implies canonical-profile revision safety. | Career/API owner; H — audit every long-tail/custom field and mobile save/source isolation; canonical concurrent saves remain separate. |
| **PRES-C02** — Profile overview/completeness/import guidance/raw copy/history/restore | `/career`; [CareerWorkspacePage](../../../../job-tracker-ui/src/views/CareerWorkspacePage.tsx), [raw/history/import](../../../../job-tracker-ui/src/views/CareerProfilePage.tsx). Career overview/import/raw/history owner unchanged; source relation regression retained by [P5-10](../p5-10/README.md)/[P5-12](../p5-12/README.md). | [F:career-workspace-page](../../../../job-tracker-ui/src/career-workspace-page.test.tsx); [F:profile-page](../../../../job-tracker-ui/src/profile-page.test.tsx); [B:CareerProfileService](../../../../JobTrackerApi.Tests/CareerProfileServiceTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Clipboard/avatar and complete native profile historical restore/manual AT remain unverified; real extraction quality is separate. | Career owner; M — audit raw copy, overview/completeness/import guidance and full historical restore without silent data replacement. |
| **PRES-C03** — Upload/extract/rebuild/reprocess/diff/select/accept/discard/retry/cancel | Career import/review; [extraction/diff/review consumer](../../../../job-tracker-ui/src/views/CareerProfilePage.tsx). Entry only: existing Career upload/extraction/reprocess/diff/accept/discard/retry/cancel owners retained. | [F:profile-page](../../../../job-tracker-ui/src/profile-page.test.tsx); [B:ProfileCvController](../../../../JobTrackerApi.Tests/ProfileCvControllerTests.cs); [B:CvProfileDiffService](../../../../JobTrackerApi.Tests/CvProfileDiffServiceTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Unusual/scanned/OCR document quality and full low-confidence deselection/discard browser acceptance remain unverified; no provider certification. | Career/extraction owner; H — audit low-confidence deselect/discard/retry/cancel and corpus quality; approve provider calls separately. |
| **PRES-C04** — Evidence bank source/category/tags/add/list/delete | Career overview/evidence; [CareerEvidenceBank](../../../../job-tracker-ui/src/views/career/CareerEvidenceBank.tsx). Evidence-bank owner unchanged; job source relationships retained through [P5-08b](../p5-08b/README.md). | [F:career-evidence](../../../../job-tracker-ui/src/career-evidence.test.tsx); [B:CareerEvidenceController](../../../../JobTrackerApi.Tests/CareerEvidenceControllerTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Full delete/many-item search/keyboard browser acceptance remains open; broader Career page work stays Phase 7. | Career owner; M — audit evidence source/category/tags/delete and large-list keyboard/source navigation. |
| **PRES-C05** — CV library create/copy/delete/templates/share/publication/PDF | `/career/builder`; [CvBuilderPage](../../../../job-tracker-ui/src/views/CvBuilderPage.tsx), [template gallery](../../../../job-tracker-ui/src/components/CvTemplateGallery.tsx). Library/CRUD/public ownership retained; editor actions in [P5-09](../p5-09/README.md) and shared template gallery in [P5-12](../p5-12/README.md). | [F:cv-builder-page](../../../../job-tracker-ui/src/cv-builder-page.test.tsx); [F:cv-template-thumbnail](../../../../job-tracker-ui/src/cv-template-thumbnail.test.tsx); [B:CvBuilder](../../../../JobTrackerApi.Tests/CvBuilderTests.cs); [B:PublicCvController](../../../../JobTrackerApi.Tests/PublicCvControllerTests.cs) | [P5-09–12 CV evidence](../p5-12/README.md); [P5-14 four pairs, 320–1440/landscape, keyboard/pointer/emulated touch](../p5-14/README.md). Human/physical/zoom/production unaccepted. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Complete publish/unpublish/old-link revocation chain and every library/template combination remain unverified; library redesign is not claimed. | CV owner; H — audit create/copy/delete/gallery/share/publish/unpublish and old-public-link revocation; keep numeric/slug identity distinct. |
| **PRES-C06** — Studio tabs, preview debounce/pages/fit/save state/mobile panes | `/career/builder/:id`; [editor/preview owner](../../../../job-tracker-ui/src/views/CvBuilderEditor.tsx). Direct [P5-09](../p5-09/README.md) frame/navigation, [P5-11](../p5-11/README.md) live preview and [P5-12](../p5-12/README.md) controls; one save/preview/mobile owner. [P5-14 responsive/ownership successor](../p5-14/README.md) now supplements this record. | [F:cv-builder-deep-link](../../../../job-tracker-ui/src/cv-builder-deep-link.test.tsx); [B:CvBuilder](../../../../JobTrackerApi.Tests/CvBuilderTests.cs) | [P5-09–12 CV evidence](../p5-12/README.md); [P5-14 four pairs, 320–1440/landscape, keyboard/pointer/emulated touch](../p5-14/README.md). Human/physical/zoom/production unaccepted. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | P5-14 now supplies the integrated held-PUT pane/viewport, preview boundary-key/scroll, reachable return, canvas and hit-test successor. Physical touch/software keyboard, 200%/400% zoom, human AT, broader wrapped/short-height states and production rendering remain unaccepted. | CV/accessibility owner; H — retain P5-14 held-PUT/responsive/scroll checks; obtain physical touch/software keyboard/zoom/manual AT evidence. |
| **PRES-C07** — Visibility/order/custom sections and item/document overrides | Builder Content; [ContentTab/EntryEditor](../../../../job-tracker-ui/src/views/CvBuilderEditor.tsx), [useDragReorder](../../../../job-tracker-ui/src/hooks/useDragReorder.ts). Direct [P5-10](../p5-10/README.md) source/item/custom editing and [P5-12](../p5-12/README.md) settings retention; explicit reset/inclusion/order retained. [P5-14 responsive/ownership successor](../p5-14/README.md) now supplements this record. | [F:cv-builder-deep-link](../../../../job-tracker-ui/src/cv-builder-deep-link.test.tsx); [F:cvBuilder](../../../../job-tracker-ui/src/cvBuilder.test.ts); [B:CvBuilder](../../../../JobTrackerApi.Tests/CvBuilderTests.cs) | [P5-09–12 CV evidence](../p5-12/README.md); [P5-14 four pairs, 320–1440/landscape, keyboard/pointer/emulated touch](../p5-14/README.md). Human/physical/zoom/production unaccepted. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | P5-14 closes P5-10-O01 only for tested ownership/default-drop cases: entry/section order, inactive nested lists and foreign editable-title non-mutation. Physical touch/text selection/all-browser gestures and exhaustive saved override/reset combinations remain unqualified. | CV/accessibility owner; H — retain tested native nested ownership/default-drop checks; audit physical touch/text selection/all-browser overrides before broader claim. |
| **PRES-C08** — Capability-aware templates/typography/color/header/skills/sidebar/photo | Builder Template/Customize; [CvCustomizeTab](../../../../job-tracker-ui/src/components/cv/CvCustomizeTab.tsx), [gallery](../../../../job-tracker-ui/src/components/CvTemplateGallery.tsx). Direct [P5-12](../p5-12/README.md) nine-template capability/control presentation and [P5-11](../p5-11/README.md) preview; renderer/template IDs retained. | [F:cv-builder-deep-link](../../../../job-tracker-ui/src/cv-builder-deep-link.test.tsx); [F:cvBuilder](../../../../job-tracker-ui/src/cvBuilder.test.ts); [B:CvBuilder](../../../../JobTrackerApi.Tests/CvBuilderTests.cs) | [P5-09–12 CV evidence](../p5-12/README.md); [P5-14 four pairs, 320–1440/landscape, keyboard/pointer/emulated touch](../p5-14/README.md). Human/physical/zoom/production unaccepted. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | All-template/font/photo/wrapped-line/browser/control combinations and broad custom-colour/manual AT remain unverified; finite capability matrix and Pro locks are not exhaustive. | CV/renderer owner; M — audit capability controls/locks and broader font/photo/wrapped text; manual custom-colour names and contrast. |
| **PRES-C09** — A4/Letter/density/margins/dates/document locale/section presentation | Builder Customize/Content; [document settings](../../../../job-tracker-ui/src/components/cv/CvCustomizeTab.tsx), [settings client](../../../../job-tracker-ui/src/cvBuilder.ts). Direct [P5-12](../p5-12/README.md) A4/Letter/density/margin/date/language/columns controls; [pagination repair](../p5-09-pagination-readiness/README.md) retained. | [F:cvBuilder](../../../../job-tracker-ui/src/cvBuilder.test.ts); [F:cv-builder-deep-link](../../../../job-tracker-ui/src/cv-builder-deep-link.test.tsx); [B:CvBuilder](../../../../JobTrackerApi.Tests/CvBuilderTests.cs) | [P5-09–12 CV evidence](../p5-12/README.md); [P5-14 four pairs, 320–1440/landscape, keyboard/pointer/emulated touch](../p5-14/README.md). Human/physical/zoom/production unaccepted. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Recorded unchanged-tolerance local fidelity supersedes prior six-fixture failures; all advanced combinations, deployment fonts/photo/wrapped text and manual print inspection remain open. | CV/renderer owner; H — retain unchanged numerical oracle/settings exports; audit advanced locale/layout combinations and actual deployed print/fonts. |
| **PRES-C10** — Undo/redo, save queue, dirty guard, history restore/preview lifecycle | Builder save/undo/history; [single editor/history owner](../../../../job-tracker-ui/src/views/CvBuilderEditor.tsx). Existing save/undo/history owner retained in [P5-09](../p5-09/README.md)–[P5-12](../p5-12/README.md); [CV revision protocol](../p5-09-readiness/README.md) and stale AI guard retained. [P5-14 responsive/ownership successor](../p5-14/README.md) now supplements this record. | [F:cv-builder-deep-link](../../../../job-tracker-ui/src/cv-builder-deep-link.test.tsx); [B:CvBuilder](../../../../JobTrackerApi.Tests/CvBuilderTests.cs) | [P5-09–12 CV evidence](../p5-12/README.md); [P5-14 four pairs, 320–1440/landscape, keyboard/pointer/emulated touch](../p5-14/README.md). Human/physical/zoom/production unaccepted. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | CV stale-write/history safety has scoped native evidence; long offline/history combinations and profile/job concurrent edits remain separate. No new save owner or history store. | CV/API owner; H — audit long offline/history/conflict/undo/dirty transitions; retain downloadable draft and one save/history owner. |
| **PRES-C11** — Section and whole-document AI improve/translate/instruction/grammar review | Builder section/AI Tools; [AiSectionAssistant](../../../../job-tracker-ui/src/components/cv/AiSectionAssistant.tsx), [DocumentAiTab](../../../../job-tracker-ui/src/views/CvBuilderEditor.tsx); [Production service guard](../../../../JobTrackerApi/Program.cs). Retained existing section/document assistant affordances; [current Production service withholding](../../../../JobTrackerApi/Program.cs) and [validated historical exception](../release-readiness/README.md). P5-13 review UI remains unimplemented. | [F:ai-section-assistant](../../../../job-tracker-ui/src/ai-section-assistant.test.tsx); [F:cv-builder-deep-link](../../../../job-tracker-ui/src/cv-builder-deep-link.test.tsx); [B:AiWorkspace](../../../../JobTrackerApi.Tests/AiWorkspaceTests.cs); [B:AiPrivacyPolicy](../../../../JobTrackerApi.Tests/AiPrivacyPolicyTests.cs) ; [Production no-write checks](../../../../JobTrackerApi.Tests/CvAiReadinessTests.cs), [isolated HTTP contract](../../../../job-tracker-ui/ai-tests/cv-ai-readiness.spec.ts) | [Deterministic readiness only](../p5-13-readiness/README.md); [P5-14 exclusion](../p5-14/README.md). No qualified or responsive AI-review visual journey. | **DEFERRED** | **DEFERRED**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **DEFERRED**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **DEFERRED**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Full CV rewriting/review remains DEFERRED — BLOCKED / NOT QUALIFIED: deployed model identity unverified; frozen 32-case/366-call qualification has 0 completed calls and 0 human reviews; factuality unmeasured; P5-13 review UI unimplemented. Current Production guard returns 503 cv_ai_unavailable; safe withholding is an exception, not successful generation/review. Existing assistant affordances can report unavailable. | AI/CV/product owner; H — meet frozen model identity/corpus/rubric/human review and review-UI return conditions; retain Production 503/no-write/unrelated-AI checks. |
| **PRES-C12** — Private PDF and published anonymous CV/PDF, long searchable pages | Private builder export and `/cv/:slug`; [private export client](../../../../job-tracker-ui/src/cvBuilder.ts), [PublicCvPage](../../../../job-tracker-ui/src/views/PublicCvPage.tsx). Private/public PDF ownership and shared admission retained through [P5-11](../p5-11/README.md)/[P5-12](../p5-12/README.md); native preview/PDF corpus unchanged. | [F:public-cv-page](../../../../job-tracker-ui/src/public-cv-page.test.tsx); [B:PublicCvController](../../../../JobTrackerApi.Tests/PublicCvControllerTests.cs); [B:PdfRenderAdmission](../../../../JobTrackerApi.Tests/PdfRenderAdmissionTests.cs) | [P5-09–12 CV evidence](../p5-12/README.md); [P5-14 four pairs, 320–1440/landscape, keyboard/pointer/emulated touch](../p5-14/README.md). Human/physical/zoom/production unaccepted. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | P5-14 retains unchanged 16-fixture/36-page native preview/PDF and 8-settings/24-page export historical proof at unchanged tolerances. This is finite local evidence; deployed Chromium/Linux/fonts/photo/all-print-engine and manual print inspection remain unverified. | CV/rendering/release owner; H — audit public revoke/private denial/PDF busy recovery and deployed Linux/fonts/photos/manual print; preserve admission. |
| **PRES-M01** — Job-scoped manual correspondence/search/delete/paste import | Job Timeline/Correspondence; [Correspondence](../../../../job-tracker-ui/src/components/Correspondence.tsx). Existing job manual correspondence/search/import/delete owner recomposed by [P5-08b](../p5-08b/README.md); global entry retained. | [F:end-to-end-trust-loop](../../../../job-tracker-ui/src/end-to-end-trust-loop.test.tsx); [F:correspondence-search-context](../../../../job-tracker-ui/src/correspondence-search-context.test.ts); [B:CorrespondenceController](../../../../JobTrackerApi.Tests/CorrespondenceControllerTests.cs) | [Workspace correspondence entry](../p5-08b/README.md). Full mail/provider/mobile AT absent. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Full manual edit/delete/paste-import browser combinations and manual AT remain unverified; logging correspondence is not sending mail. | Mail/workspace owner; H — audit native log CRUD/search/paste import and no-send distinction. |
| **PRES-M02** — Gmail candidate/thread import/refresh/sync/unlink/relink/move | Job Timeline/Correspondence Gmail tools; [Correspondence](../../../../job-tracker-ui/src/components/Correspondence.tsx). Existing job Gmail candidate/thread/import/sync/move/unlink owners recomposed by [P5-08b](../p5-08b/README.md); provider/API behavior unchanged. | [F:correspondence-gmail-import](../../../../job-tracker-ui/src/correspondence-gmail-import.test.tsx); [B:GmailController](../../../../JobTrackerApi.Tests/GmailControllerTests.cs); [B:EmailOwnershipIntegration](../../../../JobTrackerApi.Tests/EmailOwnershipIntegrationTests.cs) | [Workspace correspondence entry](../p5-08b/README.md). Full mail/provider/mobile AT absent. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Live provider threads, multi-account reconnect/revoked grants and sync failures remain unverified. | Mail/provider owner; H — audit owned thread/job link/move/unlink/reconnect and approved live sync failures. |
| **PRES-M03** — Global inbox filters/page/provider/link/direction/detail/source links | `/correspondence`; [CorrespondenceInboxPage](../../../../job-tracker-ui/src/views/CorrespondenceInboxPage.tsx). Entry only via [P5-01](../p5-01/README.md); global inbox filters/page/provider/detail/source owners unchanged. | [F:correspondence-inbox-page](../../../../job-tracker-ui/src/correspondence-inbox-page.test.tsx); [B:EmailController](../../../../JobTrackerApi.Tests/EmailControllerTests.cs); [B:EmailOwnershipIntegration](../../../../JobTrackerApi.Tests/EmailOwnershipIntegrationTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Real large-mailbox/attachment-binary flows and complete native inbox/AT acceptance remain open; global inbox redesign stays Phase 7. | Mail owner; H — audit large native inbox paging/provider failure/detail/attachment binaries and manual AT. |
| **PRES-M04** — Compose/reply/provider/recipient/job; draft conflicts; confirm send/uncertainty | `/correspondence` Drafts/Compose; [draft/send owner](../../../../job-tracker-ui/src/views/CorrespondenceInboxPage.tsx). Compose/reply/revision/send/uncertainty owner unchanged; [P5-08b](../p5-08b/README.md) navigation regression only. | [F:correspondence-inbox-page](../../../../job-tracker-ui/src/correspondence-inbox-page.test.tsx); [B:EmailDraftsController](../../../../JobTrackerApi.Tests/EmailDraftsControllerTests.cs); [B:EmailDraftPersistence](../../../../JobTrackerApi.Tests/EmailDraftPersistenceTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Actual sandbox mail delivery/reconnect and every dirty/send interruption remain unverified; no automatic uncertain-send retry. followMode-specific UI remains deferred. | Mail/API owner; H — audit draft conflicts, explicit send/uncertain-new-attempt, reconnect/dirty interruption; followMode UI deferred, no automatic resend. |
| **PRES-M05** — Review proposed jobs/link/reject/keep/notes/sync/create | `/correspondence?view=review`, review alias; [GmailReviewPage](../../../../job-tracker-ui/src/views/GmailReviewPage.tsx), [inbox view adapter](../../../../job-tracker-ui/src/views/CorrespondenceInboxPage.tsx). Review alias and inbox entry retained in [P5-01](../p5-01/README.md)/[P5-08b](../p5-08b/README.md); reviewed decisions/create owner unchanged. | [F:gmail-review-page](../../../../job-tracker-ui/src/gmail-review-page.test.tsx); [F:correspondence-inbox-page](../../../../job-tracker-ui/src/correspondence-inbox-page.test.tsx); [B:GmailController](../../../../JobTrackerApi.Tests/GmailControllerTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Real provider review and complete suggested-job creation browser journey remain unverified; no automatic creation from navigation. | Mail/capture owner; H — audit review alias, proposed-job/link/reject/keep/notes/sync/create confirmation and owner boundaries. |
| **PRES-M06** — Gmail/Graph/IMAP connect/status/disconnect separate from sign-in | `/settings/connected-accounts`; [ConnectedAccountsPage](../../../../job-tracker-ui/src/views/ConnectedAccountsPage.tsx), [provider connections](../../../../job-tracker-ui/src/components/EmailProviderConnections.tsx). Connections entry retained in [P5-01](../p5-01/README.md)/[P5-02](../p5-02/README.md); existing Gmail/Graph/IMAP controls separate from sign-in. | [F:email-provider-connections](../../../../job-tracker-ui/src/email-provider-connections.test.tsx); [B:MicrosoftGraphController](../../../../JobTrackerApi.Tests/MicrosoftGraphControllerTests.cs); [B:ImapController](../../../../JobTrackerApi.Tests/ImapControllerTests.cs) | [Inherited Settings loaded/mobile review](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [shell entry](../p5-01/README.md). No full current domain requalification. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Actual provider authorization/revocation/token expiry/reconnect remain unverified; no credentials or live provider operations in this review. | Connections/provider owner; H — audit actual grants/revoke/expiry/reconnect and IMAP safety; provider sandbox authorization required. |
| **PRES-S01** — Personal metrics/activity/funnel/company/skills/stage/salary/next actions | `/dashboard`, added `/analytics`; [shared reports owner](../../../../job-tracker-ui/src/components/DashboardView.tsx), [AnalyticsPage](../../../../job-tracker-ui/src/views/AnalyticsPage.tsx). Direct accurate report labels/cohorts in [P5-06](../p5-06/README.md) and meaningful [P5-07 Analytics](../p5-07/README.md); existing server facts retained. | [F:daily-control-loop](../../../../job-tracker-ui/src/daily-control-loop.test.tsx); [F:workflow-trust-signals](../../../../job-tracker-ui/src/workflow-trust-signals.test.tsx); [B:StageAnalytics](../../../../JobTrackerApi.Tests/StageAnalyticsTests.cs); [B:AnalyticsSalary](../../../../JobTrackerApi.Tests/AnalyticsSalaryTests.cs) | [Dashboard](../p5-06/README.md), [Analytics](../p5-07/README.md) four pairs/narrow/exact-value states; [utilities](../p5-02/README.md). Human AT open. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Scoped native chart/value/population transformations supersede earlier unmapped chart gaps; server timezone/date/population limits and unsupported NEW metrics remain explicit. | Reports/API owner; M — audit exact cohort/sample/date definitions and drill-down links; retain unsupported-metric boundaries. |
| **PRES-S02** — Owner-local five visibility preferences/onboarding dismiss/notifications | Dashboard visibility/onboarding and bell; [five local flags](../../../../job-tracker-ui/src/components/DashboardView.tsx), [OnboardingChecklist](../../../../job-tracker-ui/src/components/OnboardingChecklist.tsx), [NotificationsPopover](../../../../job-tracker-ui/src/components/NotificationsPopover.tsx). Direct [P5-02](../p5-02/README.md) notifications and [P5-06](../p5-06/README.md) five owner-local Dashboard flags/onboarding; Analytics independent. | [F:onboarding-checklist](../../../../job-tracker-ui/src/onboarding-checklist.test.tsx); [F:notifications-popover](../../../../job-tracker-ui/src/notifications-popover.test.tsx); [B:JobLifecycleEvent](../../../../JobTrackerApi.Tests/JobLifecycleEventTests.cs) | [Dashboard](../p5-06/README.md), [Analytics](../p5-07/README.md) four pairs/narrow/exact-value states; [utilities](../p5-02/README.md). Human AT open. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Five owner-local Dashboard visibility flags and scoped reload/account evidence remain; order/resize/reset is deferred. Recorded P5-06-O01 generic language-preference 500 during overlapping Dashboard/setup reads has no established exception/root cause; sequential fixture setup does not close concurrent save reliability. | Dashboard/shell/identity owner; H — investigate recorded P5-06-O01 language-save 500 during reads; audit five flags A/B/reload plus bell/onboarding; order/resize/reset deferred. |
| **PRES-S03** — Rules/reminder/table/theme/language preferences and account links | Settings tabs/mobile selector and shell preferences; [SettingsView](../../../../job-tracker-ui/src/components/SettingsView.tsx), [rules](../../../../job-tracker-ui/src/components/RulesSettingsCard.tsx), [language save](../../../../job-tracker-ui/src/i18n/I18nProvider.tsx). P4 Settings controls retained; [P5-00](../p5-00/README.md) feedback/shared tokens and [P5-03](../p5-03/README.md)/[P5-04b](../p5-04b/README.md) table preferences integration. | [F:settings-view](../../../../job-tracker-ui/src/settings-view.test.tsx); [F:theme-state](../../../../job-tracker-ui/src/theme-state.test.tsx); [B:NotificationSettingsController](../../../../JobTrackerApi.Tests/NotificationSettingsControllerTests.cs); [B:RulesEngineProspect](../../../../JobTrackerApi.Tests/RulesEngineProspectTests.cs) | [Inherited Settings loaded/mobile review](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [shell entry](../p5-01/README.md). No full current domain requalification. | **PARTIAL** | **FAIL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **FAIL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [R-02 native draft/save proof](p5-15-01/rules-draft-repair/README.md) | **R-02:** SETTINGS-01 draft loss is closed for verified session/save/error/discard/account behaviour. P4-04-O02 notification locking, P5-06-O01 language-save500, historical unconfirmed Rules500 and broader human/provider acceptance remain open; this is not a backend contention fix. | Settings/API/identity owner; H — separately investigate notification/language/Rules persistence reliability and execute human/device acceptance; no automatic repair or production release. |
| **PRES-S04** — AI privacy/usage/limits/Free-Pro/server entitlement/conditional billing | Settings AI/plan and domain locks; [privacy](../../../../job-tracker-ui/src/components/AiPrivacySettingsCard.tsx), [usage](../../../../job-tracker-ui/src/components/AiUsageCard.tsx), [AccountPlanProvider](../../../../job-tracker-ui/src/accountPlan.tsx). Existing privacy/usage/entitlements/billing readiness retained; deterministic AI metering in [readiness](../p5-13-readiness/README.md); Production CV review exception only. | [F:settings-view](../../../../job-tracker-ui/src/settings-view.test.tsx); [F:ai-usage-card](../../../../job-tracker-ui/src/ai-usage-card.test.tsx); [B:AiPrivacyPolicy](../../../../JobTrackerApi.Tests/AiPrivacyPolicyTests.cs); [B:AiUsageMeter](../../../../JobTrackerApi.Tests/AiUsageMeterTests.cs) | [Inherited Settings loaded/mobile review](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [shell entry](../p5-01/README.md). No full current domain requalification. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Actual checkout/webhooks/portal and provider consent/delivery remain unverified. Production CV unavailability is temporary authorized P5-13 debt, not fulfillment or disabling other AI. | AI/commerce/API owner; H — retain entitlement/privacy/metering and bounded Production CV exception; separately prove checkout/webhooks/portal before activation. |
| **PRES-S05** — Account ZIP/encrypted backup/lifecycle/deletion confirmations | Settings Backup; [BackupCard](../../../../job-tracker-ui/src/components/BackupCard.tsx). Account ZIP/backup/deletion controls and independent saves retained; [P5-00](../p5-00/README.md) feedback clearance and [native package/ZIP evidence](../p5-08b-readiness/README.md). | [F:account-data-export](../../../../job-tracker-ui/src/account-data-export.test.tsx); [B:AccountDataExport](../../../../JobTrackerApi.Tests/AccountDataExportTests.cs); [B:BackupController](../../../../JobTrackerApi.Tests/BackupControllerTests.cs) | [Inherited Settings loaded/mobile review](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [shell entry](../p5-01/README.md). No full current domain requalification. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Actual database/account restore, verified recoverable backups, paid deletion/provider cancellation and rollback remain production release gates; no destructive rehearsal occurred. | Account lifecycle/release owner; H — audit exact confirmations/ZIP/backup gates; current recoverable restore/paid deletion/provider cancellation/rollback require authorized rehearsal. |
| **PRES-A01** — Admin user/create/roles/reset/delete/last-admin/self guards | `/admin/users`; [AdminUsersPage](../../../../job-tracker-ui/src/views/AdminUsersPage.tsx). Admin Users route/entry retained by [P5-01](../p5-01/README.md); server authorization/last-admin/self guards unchanged. | [F:admin-users-page](../../../../job-tracker-ui/src/admin-users-page.test.tsx); [B:UsersController](../../../../JobTrackerApi.Tests/UsersControllerTests.cs); [B:ApiAuthorizationPosture](../../../../JobTrackerApi.Tests/ApiAuthorizationPostureTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Mounted-view role revocation, full mutations and actual reset delivery remain unverified; hidden nav/synthetic shell never proves authorization. | Admin/identity owner; H — audit full guarded mutations, mounted-role revoke and real reset; crafted API denial remains mandatory. |
| **PRES-A02** — Audit list/detail/supported undo/job restore | `/admin/audit`; [AdminAuditPage](../../../../job-tracker-ui/src/views/AdminAuditPage.tsx). Admin Audit route/entry retained by [P5-01](../p5-01/README.md); supported server undo/restore owner unchanged. | [F:admin-audit-page](../../../../job-tracker-ui/src/admin-audit-page.test.tsx); [B:AuthAndSystemController](../../../../JobTrackerApi.Tests/AuthAndSystemControllerTests.cs); [B:ApiAuthorizationPosture](../../../../JobTrackerApi.Tests/ApiAuthorizationPostureTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Complete successful native undo/job restore browser acceptance remains open; role posture is not undo behavior proof. | Admin/API owner; H — audit persisted successful undo/job restore, unsupported actions and non-admin denial. |
| **PRES-A03** — System/build/DB/AI/mail/SMTP/test/probe/benchmark/maintenance | `/admin/system` and admin badge; [AdminSystemPage](../../../../job-tracker-ui/src/views/AdminSystemPage.tsx), [metadata disclosure](../../../../job-tracker-ui/src/layout/AppShell.tsx). Admin System route/entry/build metadata retained in [P5-00](../p5-00/README.md)/[P5-01](../p5-01/README.md); diagnostics/maintenance owner unchanged. | [F:admin-system-page](../../../../job-tracker-ui/src/admin-system-page.test.tsx); [B:AuthAndSystemController](../../../../JobTrackerApi.Tests/AuthAndSystemControllerTests.cs); [B:MaintenanceJobDispatcher](../../../../JobTrackerApi.Tests/MaintenanceJobDispatcherTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Actual production SMTP/model/probes/benchmark/maintenance and sensitive-output qualification remain unverified; no live jobs launched. | Admin/operations owner; H — audit metadata/diagnostic sensitive outputs and guarded controls; production SMTP/model/maintenance proof separately authorized. |
| Original ID / complete-group shorthand | Current route / actual component; implemented preservation touch | Historical executable regression anchors | Inherited visual / responsive / EN-NB evidence and limit | P5-15-00 before | P5-15-01 after | P5-15-01R-01 after | P5-15-01R-02 after | P5-15-01R-03 current | Remaining limitation / gap | Required next audit / owner / priority |
|---|---|---|---|---|---|---|---|---|---|---|
| **PRES-E01** — Public product/plans; honest unavailable billing | `/`; [LandingPage](../../../../job-tracker-ui/src/views/LandingPage.tsx), [planCatalog](../../../../job-tracker-ui/src/planCatalog.ts). Unchanged public product/plans; [P5-01](../p5-01/README.md) route regression. | [F:landing-page](../../../../job-tracker-ui/src/landing-page.test.tsx); [F:planCatalog](../../../../job-tracker-ui/src/planCatalog.test.ts); [B:AccountPlans](../../../../JobTrackerApi.Tests/AccountPlansTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Actual checkout/billing provider availability and public mobile/keyboard acceptance remain unverified. | Public/commerce owner; M — audit loaded mobile/keyboard EN/NB plans and honest unavailable billing; provider readiness separately. |
| **PRES-E02** — Local login/register/remember, challenge, reset and verification | `/login`, `/register`, reset/verify routes; [LoginPage](../../../../job-tracker-ui/src/views/LoginPage.tsx), [ForgotPasswordPage](../../../../job-tracker-ui/src/views/ForgotPasswordPage.tsx), [ResetPasswordPage](../../../../job-tracker-ui/src/views/ResetPasswordPage.tsx), [VerifyEmailPage](../../../../job-tracker-ui/src/views/VerifyEmailPage.tsx). Entry retained by [P5-01](../p5-01/README.md); existing local auth/challenge/reset/verification owners. | [F:login-page](../../../../job-tracker-ui/src/login-page.test.tsx); [F:verify-email-page](../../../../job-tracker-ui/src/verify-email-page.test.tsx); [B:LocalAuthIdentity](../../../../JobTrackerApi.Tests/LocalAuthIdentityTests.cs); [B:AuthAndSystemController](../../../../JobTrackerApi.Tests/AuthAndSystemControllerTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **FAIL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **FAIL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **FAIL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [R-03 native return/security proof](p5-15-01/analytics-auth-repair/evidence/auth-proof.json); original and full regressions GREEN |**Fresh01:** AUTH-01 sign-in query loss; [register](p5-15-01/DEFECTS.md). Real reset-mail delivery, Turnstile/browser configuration and complete token-reset submit journey remain unverified. | Identity owner; H — trace reset request/token submit/verification/challenge errors in real App; sandbox mail/Turnstile only under later authorization. |
| **PRES-E03** — Google/Microsoft login, link, legacy relink and popup results | `/login`, `/microsoft-legacy-relink`; [GoogleAuthCard](../../../../job-tracker-ui/src/components/GoogleAuthCard.tsx), [MicrosoftAuthCard](../../../../job-tracker-ui/src/components/MicrosoftAuthCard.tsx), [relink page](../../../../job-tracker-ui/src/views/MicrosoftLegacyRelinkPage.tsx). Entry retained by [P5-01](../p5-01/README.md); provider sign-in remains separate from Connections. | [F:login-page](../../../../job-tracker-ui/src/login-page.test.tsx); [F:microsoft-legacy-relink-page](../../../../job-tracker-ui/src/microsoft-legacy-relink-page.test.tsx); [B:GoogleTokenValidator](../../../../JobTrackerApi.Tests/GoogleTokenValidatorTests.cs); [B:MicrosoftTokenValidator](../../../../JobTrackerApi.Tests/MicrosoftTokenValidatorTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [R-03 scoped return-boundary proof](p5-15-01/analytics-auth-repair/evidence/auth-proof.json); fresh full regression GREEN | Real provider consent/popups, revoked grants and sandbox outcomes remain unverified; origin/state contracts remain required. | Identity/provider owner; H — audit popup origin/state, revoke/relink and provider errors using approved sandbox; keep sign-in and mailbox grants separate. |
| **PRES-E04** — 2FA challenge/recovery/setup/disable; trusted-device revocation | `/profile`, `/login`; [TwoFactorSettingsCard](../../../../job-tracker-ui/src/components/TwoFactorSettingsCard.tsx), [challenge](../../../../job-tracker-ui/src/components/TwoFactorChallenge.tsx). Entry relocation only in [P5-01](../p5-01/README.md); Profile/login security forms unchanged. | [F:two-factor-settings](../../../../job-tracker-ui/src/two-factor-settings.test.tsx); [F:login-page](../../../../job-tracker-ui/src/login-page.test.tsx); [B:TwoFactorController](../../../../JobTrackerApi.Tests/TwoFactorControllerTests.cs); [B:SessionsController](../../../../JobTrackerApi.Tests/SessionsControllerTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [R-03 scoped return-boundary proof](p5-15-01/analytics-auth-repair/evidence/auth-proof.json); fresh full regression GREEN | Real mobile authenticator/recovery and trusted-device UI traversal remain open; no security-form acceptance inferred from navigation. | Identity/accessibility owner; H — manual keyboard/screen-reader recovery/trusted-device traversal plus real authenticator proof. |
| **PRES-E05** — Session list/current device, revoke one/others, logout | `/profile` and account Sign out; [SessionsSettingsCard](../../../../job-tracker-ui/src/components/SessionsSettingsCard.tsx), [AppShell](../../../../job-tracker-ui/src/layout/AppShell.tsx), [auth](../../../../job-tracker-ui/src/auth.ts). Direct shell logout/private utility changes in [P5-00](../p5-00/README.md)–[P5-02](../p5-02/README.md); session-list owner unchanged. | [F:session-boundary](../../../../job-tracker-ui/src/session-boundary.test.ts); [F:account-scoped-state](../../../../job-tracker-ui/src/account-scoped-state.test.tsx); [B:SessionsController](../../../../JobTrackerApi.Tests/SessionsControllerTests.cs); [B:AuthSessionRevocation](../../../../JobTrackerApi.Tests/AuthSessionRevocationTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Session-card selection/refresh after remote revocation remains open; broad device/AT acceptance is not established. | Identity/shell owner; H — audit session card remote-revoke refresh and Sign out private disposal/focus at every shell entry. |
| **PRES-E06** — Avatar, account names/headline, email change and password | `/profile`, `/confirm-email-change`; [ProfilePage](../../../../job-tracker-ui/src/views/ProfilePage.tsx), [VerifyEmailPage](../../../../job-tracker-ui/src/views/VerifyEmailPage.tsx). Account/security entry only in [P5-01](../p5-01/README.md); avatar/account identity and confirm-email-change route retained. | [F:profile-page](../../../../job-tracker-ui/src/profile-page.test.tsx); [F:verify-email-page](../../../../job-tracker-ui/src/verify-email-page.test.tsx); [B:AvatarStorage](../../../../JobTrackerApi.Tests/AvatarStorageTests.cs); [B:LocalAuthIdentity](../../../../JobTrackerApi.Tests/LocalAuthIdentityTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Avatar upload/remove and password-change browser journeys remain unverified; account identity stays distinct from Career Profile. | Identity owner; H — audit native avatar/remove/password/email-change, missing/error states and cross-account negative paths. |
| **PRES-E07** — Desktop collapse/mobile drawer, active nav and command search/actions | Private shell, Ctrl/Cmd+K; [App navigation](../../../../job-tracker-ui/src/App.tsx), [AppShell](../../../../job-tracker-ui/src/layout/AppShell.tsx), [QuickCommandDialog](../../../../job-tracker-ui/src/components/QuickCommandDialog.tsx). Direct [shell/navigation/utilities](../p5-02/README.md), [Jobs Table/Board](../p5-04b/README.md), [Analytics](../p5-07/README.md) and [workspace sections](../p5-08b/README.md). | [F:sidebar-active-nav](../../../../job-tracker-ui/src/sidebar-active-nav.test.ts); [F:app-shell-notifications](../../../../job-tracker-ui/src/app-shell-notifications.test.tsx); [B:JobApplicationsAuthorization](../../../../JobTrackerApi.Tests/JobApplicationsAuthorizationTests.cs); [B:CompanyRelationship](../../../../JobTrackerApi.Tests/CompanyRelationshipTests.cs) | [Shell/utility EN/NB × light/dark, rail/phone](../p5-02/README.md); [P5-14 shared clearance](../p5-14/README.md). Human AT/zoom incomplete. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [R-02 scoped Rules evidence](p5-15-01/rules-draft-repair/README.md), retained [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [R-03 scoped return-boundary proof](p5-15-01/analytics-auth-repair/evidence/auth-proof.json); fresh full regression GREEN | Original route/command/drawer defects have scoped successor evidence; manual screen reader and inherited command/focus timing debt remain open. This census is not browser route acceptance. | Shell/accessibility owner; H — audit every nav/command destination, collapsed/mobile labels, route focus, dirty Cancel and manual spoken names (P5-02-D01; P5-04b-R01). |
| **PRES-E08** — Theme/system, EN/NB hydration, toast/confirm/prompt and errors | All routes/preferences; [ThemeProvider](../../../../job-tracker-ui/src/ThemeProvider.tsx), [themePrefs](../../../../job-tracker-ui/src/themePrefs.ts), [I18nProvider](../../../../job-tracker-ui/src/i18n/I18nProvider.tsx), [confirm](../../../../job-tracker-ui/src/confirm.tsx), [prompt](../../../../job-tracker-ui/src/prompt.tsx). Direct semantic theme/feedback controls in [P5-00](../p5-00/README.md); EN/Bokmål and light/dark regressions carried through [P5-12](../p5-12/README.md). | [F:theme-state](../../../../job-tracker-ui/src/theme-state.test.tsx); [F:i18n-provider](../../../../job-tracker-ui/src/i18n-provider.test.tsx); [B:LocalAuthIdentity](../../../../JobTrackerApi.Tests/LocalAuthIdentityTests.cs) | [Shell/utility EN/NB × light/dark, rail/phone](../p5-02/README.md); [P5-14 shared clearance](../p5-14/README.md). Human AT/zoom incomplete. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [R-02 scoped Rules evidence](p5-15-01/rules-draft-repair/README.md), retained [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [R-02 scoped Rules evidence](p5-15-01/rules-draft-repair/README.md), retained [01 evidence](p5-15-01/PRES_RESULTS.md) | Full theme/locale/state/OS cross-product, spoken names/announcements, incomplete axe, zoom/forced-colours/text-spacing and shared-dialog timing remain unverified. | Shared UI/accessibility owner; H — audit loaded error/confirm/prompt states, OS theme, locale hydration, zoom/forced colours and announcements; incomplete axe remains open. |
| **PRES-E09** — Account-switch private-state disposal and stale request rejection | All private routes/account switches; [App](../../../../job-tracker-ui/src/App.tsx), [api](../../../../job-tracker-ui/src/api.ts), [sessionBoundary](../../../../job-tracker-ui/src/sessionBoundary.ts). Private-state/session boundary unchanged; new shell/utility/workspace/CV relationships regression-protected in [readiness](../p5-13-readiness/README.md). | [F:session-boundary](../../../../job-tracker-ui/src/session-boundary.test.ts); [F:account-scoped-state](../../../../job-tracker-ui/src/account-scoped-state.test.tsx); [B:SessionContextMiddleware](../../../../JobTrackerApi.Tests/SessionContextMiddlewareTests.cs); [B:CurrentUserIdLiveEvaluation](../../../../JobTrackerApi.Tests/CurrentUserIdLiveEvaluationTests.cs) | [Native account isolation](../../../../job-tracker-ui/e2e/account-isolation.spec.ts); [P5-14 owned source/sibling fixture](../p5-14/README.md). Images do not prove tenant isolation. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [R-02 scoped Rules evidence](p5-15-01/rules-draft-repair/README.md), retained [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [R-03 scoped return-boundary proof](p5-15-01/analytics-auth-repair/evidence/auth-proof.json); fresh full regression GREEN | Real BFCache variations/long offline retries and deployed old-bundle/session behavior remain unverified; images and mocked components cannot prove tenant isolation. | Identity owner; H — rerun real account-switch/two-tab stale read/write evidence at execution checkpoint; extend BFCache/offline/old-bundle audit when authorized. |
| **PRES-J01** — NAV discovery/filter/sort/source/deadline/details | `/discover`; [JobDiscoveryPage](../../../../job-tracker-ui/src/views/JobDiscoveryPage.tsx). Entry only: [P5-01](../p5-01/README.md) groups Discover under Jobs; discovery search semantics/service retained; R-01 adds independent saved-list feedback. | [F:job-discovery](../../../../job-tracker-ui/src/job-discovery.test.tsx); [B:JobDiscoveryController](../../../../JobTrackerApi.Tests/JobDiscoveryControllerTests.cs); [B:JobOpportunitySync](../../../../JobTrackerApi.Tests/JobOpportunitySyncTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Live NAV freshness/availability and long result keyboard traversal remain open. | Discovery owner; M — audit long results/mobile keyboard/source/deadline/retry; live NAV availability separately. |
| **PRES-J02** — Saved searches, run/delete/alerts, result changes/dismissal | `/discover`; [saved-search/alert controls](../../../../job-tracker-ui/src/views/JobDiscoveryPage.tsx). Entry only in [P5-01](../p5-01/README.md); saved discovery run/alert semantics retained; R-01 repairs list loading and feedback. | [F:job-discovery](../../../../job-tracker-ui/src/job-discovery.test.tsx); [B:SavedJobSearchAlert](../../../../JobTrackerApi.Tests/SavedJobSearchAlertTests.cs); [B:JobDiscoveryController](../../../../JobTrackerApi.Tests/JobDiscoveryControllerTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **FAIL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [R-01 native proof](p5-15-01/saved-search-repair/README.md); [SQLite10cases](../../../../JobTrackerApi.Tests/SavedJobSearchSqliteTests.cs) | **PARTIAL**; [R-01 native proof](p5-15-01/saved-search-repair/README.md); [SQLite10cases](../../../../JobTrackerApi.Tests/SavedJobSearchSqliteTests.cs) | **PARTIAL**; [R-03 scoped return-boundary proof](p5-15-01/analytics-auth-repair/evidence/auth-proof.json); fresh full regression GREEN | DISCOVERY-01 SQLite listing and suppressed error are repaired; native create/reload/apply UI, pause/resume/delete and owner denial have bounded proof. Provider-dependent browser output is intercepted; real SQLite runner uses a deterministic service. Scheduler-to-notification delivery, mobile delete confirmation, live MariaDB/PostgreSQL and human screen reader remain unverified. | Discovery/notifications owner; M — audit saved search delete/pause/run, mobile confirmation and scheduler-to-owned-notification chain. |
| **PRES-J03** — Reviewed manual/URL/paste job create, company/tags/dates, duplicates | Jobs/command Add; [AddJobModal](../../../../job-tracker-ui/src/components/AddJobModal.tsx). Existing reviewed Add modal shared by [P5-03](../p5-03/README.md)/[P5-04b](../p5-04b/README.md); no creation on route/view mount. | [F:quick-capture](../../../../job-tracker-ui/src/quick-capture.test.tsx); [B:JobImportService](../../../../JobTrackerApi.Tests/JobImportServiceTests.cs); [B:JobImportHttpTransport](../../../../JobTrackerApi.Tests/JobImportHttpTransportTests.cs) | [Jobs/Trash four pairs and responsive](../p5-03/README.md); [shared Table/Board](../p5-04b/README.md). Capture/provider/manual gaps remain. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Duplicate/company/date edge UI and creation-intent idempotency remain independent gaps; import network boundary evidence is separate from live site success. | Capture/API owner; H — audit reviewed duplicate/company/date boundaries and interrupted creation; creation-intent idempotency stays a separate contract. |
| **PRES-J04** — Extension/bookmarklet/share capture; post-create attachment/CV | `?add=`, `?addtext=`, Settings capture; [capture consumer](../../../../job-tracker-ui/src/App.tsx), [captureUrl](../../../../job-tracker-ui/src/captureUrl.ts), [QuickCaptureCard](../../../../job-tracker-ui/src/components/QuickCaptureCard.tsx). Capture/add/addtext review entry retained in [P5-01](../p5-01/README.md)/[P5-03](../p5-03/README.md); extension and post-create owners unchanged. | [F:captureUrl](../../../../job-tracker-ui/src/captureUrl.test.ts); [F:quick-capture](../../../../job-tracker-ui/src/quick-capture.test.tsx); [B:JobImportService](../../../../JobTrackerApi.Tests/JobImportServiceTests.cs); [B:CvBuilder](../../../../JobTrackerApi.Tests/CvBuilderTests.cs) | [Jobs/Trash four pairs and responsive](../p5-03/README.md); [shared Table/Board](../p5-04b/README.md). Capture/provider/manual gaps remain. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Installed extension permissions/share flow and optional attachment failure recovery remain unverified. | Capture owner; H — audit installed extension/share/no-replay and post-create attachment failure recovery without auto-create. |
| **PRES-J05** — Job filters/sort/page/columns, saved views and row/mobile actions | `/jobs?view=table / board`; [JobTable](../../../../job-tracker-ui/src/components/JobTable.tsx), [SavedViewsMenu](../../../../job-tracker-ui/src/components/SavedViewsMenu.tsx), [jobsQuery](../../../../job-tracker-ui/src/jobsQuery.ts). Direct [P5-03](../p5-03/README.md) Jobs/Trash presentation and [P5-04b](../p5-04b/README.md) shared complete-query view integration. | [F:application-workspace-overlay](../../../../job-tracker-ui/src/application-workspace-overlay.test.tsx); [F:account-scoped-state](../../../../job-tracker-ui/src/account-scoped-state.test.tsx); [B:JobApplicationsController](../../../../JobTrackerApi.Tests/JobApplicationsControllerTests.cs); [B:JobApplicationsEndpointBehavior](../../../../JobTrackerApi.Tests/JobApplicationsEndpointBehaviorTests.cs) | [Jobs/Trash four pairs and responsive](../p5-03/README.md); [shared Table/Board](../p5-04b/README.md). Capture/provider/manual gaps remain. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Finite saved-view/filter/Back/error/selection fixtures do not exhaust saved-view CRUD or dirty nested page-size combinations; full-array scaling remains limited. | Jobs owner; H — audit full saved-view CRUD, Back/refresh/unknown query, dirty nested page-size and all-result scaling. |
| **PRES-J06** — Bulk status/delete, soft delete/trash/restore and job edit | `/jobs`, `/trash`; [JobTable](../../../../job-tracker-ui/src/components/JobTable.tsx), [EditJobDialog](../../../../job-tracker-ui/src/components/EditJobDialog.tsx). Direct [P5-03](../p5-03/README.md) table/Trash and [P5-04b](../p5-04b/README.md) selection/view integration; CRUD/soft-delete owner retained. | [F:application-workspace-overlay](../../../../job-tracker-ui/src/application-workspace-overlay.test.tsx); [F:confirm-flow](../../../../job-tracker-ui/src/confirm-flow.test.tsx); [B:JobApplicationsController](../../../../JobTrackerApi.Tests/JobApplicationsControllerTests.cs); [B:JobApplicationsAuthorization](../../../../JobTrackerApi.Tests/JobApplicationsAuthorizationTests.cs) | [Jobs/Trash four pairs and responsive](../p5-03/README.md); [shared Table/Board](../p5-04b/README.md). Capture/provider/manual gaps remain. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Scoped native restore and bulk/mutation fixtures supersede earlier bare-confirm gaps; all bulk partial-failure/dirty-state combinations and deeper manual AT remain unverified. | Jobs/API owner; H — audit selected scope, partial bulk failures and Trash restore with native persistence/dirty protection. |
| **PRES-J07** — Kanban grouped statuses, pointer/keyboard move and precise menu | `/jobs?view=board`, `/kanban` alias; [KanbanBoard](../../../../job-tracker-ui/src/components/KanbanBoard.tsx), [pipeline](../../../../job-tracker-ui/src/pipeline.ts). Direct [P5-04a](../p5-04a/README.md)/[P5-04b](../p5-04b/README.md); complete shared query, precise status and /kanban alias retained. | [F:kanban-grouped-board](../../../../job-tracker-ui/src/kanban-grouped-board.test.tsx); [F:pipeline](../../../../job-tracker-ui/src/pipeline.test.ts); [B:JobPipeline](../../../../JobTrackerApi.Tests/JobPipelineTests.cs) | [Board four pairs/narrow keyboard](../p5-04b/README.md). Physical touch/full-scale not proven. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Physical touch/native drag, broader responsive focus/cancel combinations and full-result scaling remain open; grouped statuses are not a new pipeline. | Jobs/accessibility owner; H — audit keyboard cancel/view focus, physical touch/drag and complete filtered membership at scale; no new pipeline. |
| **PRES-J08** — Company/contact edits, pipeline dates and linked-job history | `/companies?edit=id`; [CompaniesTable](../../../../job-tracker-ui/src/components/CompaniesTable.tsx). Company/contacts/history entry only in [P5-01](../p5-01/README.md)/[P5-02](../p5-02/README.md); existing Companies form retained. | [F:companies-relationship](../../../../job-tracker-ui/src/companies-relationship.test.tsx); [F:quick-command-preservation](../../../../job-tracker-ui/src/quick-command-preservation.test.tsx); [B:CompanyRelationship](../../../../JobTrackerApi.Tests/CompanyRelationshipTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | All contact/date edits and source-URL safety browser journeys remain unverified; P4-02-D02 inaccessible modal-save error is open for its owner. | Companies/accessibility owner; H — fix and prove durable in-modal save error before form migration (P4-02-D02); audit contact/date/source links. |
| **PRES-J09** — Recorded offers/compensation/deadlines/notes and source links | `/offers`; [OfferComparisonPage](../../../../job-tracker-ui/src/views/OfferComparisonPage.tsx). Offers entry retained; report source links reviewed in [P5-06](../p5-06/README.md)/[P5-07](../p5-07/README.md); recorded offer page unchanged. | [F:offer-comparison](../../../../job-tracker-ui/src/offer-comparison.test.tsx); [B:AnalyticsSalary](../../../../JobTrackerApi.Tests/AnalyticsSalaryTests.cs); [B:JobApplicationsEndpointBehavior](../../../../JobTrackerApi.Tests/JobApplicationsEndpointBehaviorTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Mobile many-offer comparison and localized currency/date visual acceptance remain open; no new salary facts are claimed. | Offers owner; M — audit many-offer narrow layout, currency/period/date labels and safe source links across EN/NB. |
| **PRES-J10** — CSV/JSON export, JSON import and CSV-to-JSON conversion | `/settings` Data; [ImportExportJobs](../../../../job-tracker-ui/src/components/ImportExportJobs.tsx). Settings Data import/export entry retained by [P5-01](../p5-01/README.md)/[P5-03](../p5-03/README.md); serializers unchanged. | [F:csv-export](../../../../job-tracker-ui/src/csv-export.test.tsx); [B:CsvExport](../../../../JobTrackerApi.Tests/CsvExportTests.cs); [B:JobApplicationsController](../../../../JobTrackerApi.Tests/JobApplicationsControllerTests.cs) | [Inherited Settings loaded/mobile review](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [shell entry](../p5-01/README.md). No full current domain requalification. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Full JSON import/count/roundtrip browser proof and spreadsheet-client compatibility remain separately bounded; byte/formula/Unicode fixtures are not exhaustive. | Settings/data owner; H — audit native JSON import counts/roundtrip, Unicode/formula-safe bytes and target spreadsheet compatibility. |
| **PRES-W01** — Full workspace, sections, legacy links and optional reusable overlay | `/jobs/:id`, `/applications/:id`; [ApplicationWorkspace](../../../../job-tracker-ui/src/views/ApplicationWorkspacePage.tsx), [section adapter](../../../../job-tracker-ui/src/applicationWorkspace.ts), [numeric-tab helper](../../../../job-tracker-ui/src/jobWorkspaceRoute.ts). Direct dedicated workspace header/Overview [P5-08a](../p5-08a/README.md) and URL sections [P5-08b](../p5-08b/README.md); Jobs/legacy aliases retained. | [F:application-workspace-overlay](../../../../job-tracker-ui/src/application-workspace-overlay.test.tsx); [F:applicationWorkspace](../../../../job-tracker-ui/src/applicationWorkspace.test.ts); [B:ApplicationWorkspace](../../../../JobTrackerApi.Tests/ApplicationWorkspaceTests.cs) | [Seven sections EN/NB × light/dark desktop/phone](../p5-08b/README.md); [native readiness/manual limits](../p5-08b-readiness/README.md). Human AT/provider gaps retained. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [R-03 scoped return-boundary proof](p5-15-01/analytics-auth-repair/evidence/auth-proof.json); fresh full regression GREEN | Reusable overlay has no active production host; followMode metadata retained but mode-specific UI explicitly deferred to mail. Full manual AT and historical transition-capture limits remain. | Workspace/mail owner; H — audit all canonical/legacy entries and numeric navigation-helper arguments, safe query/state, dirty/Back/focus; carry followMode UI to mail phase. |
| **PRES-W02** — Detail/status/progression, recruiter/dates/description/timeline | Job Overview/Timeline; [header/detail/progress](../../../../job-tracker-ui/src/views/ApplicationWorkspacePage.tsx), [ApplicationTimeline](../../../../job-tracker-ui/src/components/ApplicationIntelligence.tsx). Direct [P5-08a](../p5-08a/README.md)/[P5-08b](../p5-08b/README.md) header/progress/detail/timeline composition with existing status/date handlers. | [F:application-intelligence](../../../../job-tracker-ui/src/application-intelligence.test.tsx); [F:workflow-trust-signals](../../../../job-tracker-ui/src/workflow-trust-signals.test.tsx); [B:JobApplicationsWorkflowSignals](../../../../JobTrackerApi.Tests/JobApplicationsWorkflowSignalsTests.cs); [B:JobApplicationsAppliedDateHistory](../../../../JobTrackerApi.Tests/JobApplicationsAppliedDateHistoryTests.cs) | [Seven sections EN/NB × light/dark desktop/phone](../p5-08b/README.md); [native readiness/manual limits](../p5-08b-readiness/README.md). Human AT/provider gaps retained. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Localized backend event/content text, timezone/reload/status-to-timeline combinations and human AT remain unverified; job revision semantics were not repaired. | Workspace/API owner; H — audit native edit/status/date-to-timeline and localized stored content/timezones; job revision debt separately. |
| **PRES-W03** — Analysis, match/gaps, strategy and reviewed status/workflow suggestions | Job Match/Overview suggestion; [analysis/match/strategy](../../../../job-tracker-ui/src/components/ApplicationIntelligence.tsx), [workflow assist](../../../../job-tracker-ui/src/components/ApplicationWorkflowAssist.tsx). Existing contextual analysis/match/strategy/status owners recomposed by [P5-08b](../p5-08b/README.md); opening does not invoke AI. | [F:application-intelligence](../../../../job-tracker-ui/src/application-intelligence.test.tsx); [F:application-workflow-assist](../../../../job-tracker-ui/src/application-workflow-assist.test.tsx); [B:ApplicationIntelligence](../../../../JobTrackerApi.Tests/ApplicationIntelligenceTests.cs); [B:StrategySnapshotOperation](../../../../JobTrackerApi.Tests/StrategySnapshotOperationTests.cs) | [Seven sections EN/NB × light/dark desktop/phone](../p5-08b/README.md); [native readiness/manual limits](../p5-08b-readiness/README.md). Human AT/provider gaps retained. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Live model truthfulness, freshness/cancelled generation and provider quality remain unverified; P5-13 production CV withholding must not disable these unrelated AI paths. | Workspace/AI owner; H — audit reviewed suggestions/error/cancel/freshness/no-write entry; qualify live factuality separately from CV exception. |
| **PRES-W04** — Checklist create/edit/complete/delete/order and next action | Job Notes & tasks; [ApplicationChecklist](../../../../job-tracker-ui/src/components/ApplicationChecklist.tsx). Existing checklist owner/ordered controls recomposed by [P5-08b](../p5-08b/README.md); manual/system/dismissed distinctions retained. | [F:application-checklist](../../../../job-tracker-ui/src/application-checklist.test.tsx); [B:ApplicationChecklist](../../../../JobTrackerApi.Tests/ApplicationChecklistTests.cs) | [Seven sections EN/NB × light/dark desktop/phone](../p5-08b/README.md); [native readiness/manual limits](../p5-08b-readiness/README.md). Human AT/provider gaps retained. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Real mobile interruption/edit/delete combinations and human AT remain open; no task due-date schema or automatic notification added. | Workspace owner; H — audit native mobile item edit/delete/reorder/interruption and manual/system/dismissed next actions. |
| **PRES-W05** — Attach/select/create/tailor CV and source context | Job Application/CV, builder job link; [ApplicationCvSection/TailoringSection](../../../../job-tracker-ui/src/components/ApplicationAssets.tsx). Existing job-CV attach/create/tailor source relationships recomposed by [P5-08b](../p5-08b/README.md); [native readiness](../p5-08b-readiness/README.md) supersedes P2-D01. | [F:application-assets](../../../../job-tracker-ui/src/application-assets.test.tsx); [F:cv-builder-deep-link](../../../../job-tracker-ui/src/cv-builder-deep-link.test.tsx); [B:ApplicationAssets](../../../../JobTrackerApi.Tests/ApplicationAssetsTests.cs); [B:CvBuilder](../../../../JobTrackerApi.Tests/CvBuilderTests.cs) | [Seven sections EN/NB × light/dark desktop/phone](../p5-08b/README.md); [native readiness/manual limits](../p5-08b-readiness/README.md). Human AT/provider gaps retained. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | P2-D01 is an ordinary passing native regression, not current expected failure. Broader attach-render combinations, provider tailoring quality and deployed restore remain unverified; CV review production exception stays distinct. | Workspace/CV owner; H — audit attach/render/detach/create/tailor with source and foreign-owner checks; retain ordinary native P2-D01 successor. |
| **PRES-W06** — Cover-letter manual/AI review, versions/restore and dirty protection | Job Application/Letter; [ApplicationCoverLetterSection](../../../../job-tracker-ui/src/components/ApplicationAssets.tsx). Existing manual/AI cover-letter/history/dirty owner recomposed in [P5-08b](../p5-08b/README.md); literal-context defect corrected in [readiness](../p5-08b-readiness/README.md). | [F:application-assets](../../../../job-tracker-ui/src/application-assets.test.tsx); [F:application-workspace-overlay](../../../../job-tracker-ui/src/application-workspace-overlay.test.tsx); [B:ApplicationAssets](../../../../JobTrackerApi.Tests/ApplicationAssetsTests.cs) | [Seven sections EN/NB × light/dark desktop/phone](../p5-08b/README.md); [native readiness/manual limits](../p5-08b-readiness/README.md). Human AT/provider gaps retained. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Native/mocked review/history evidence does not establish live-model or provider quality; full screen-reader and every reject/history sequence remain unverified. | Workspace/AI owner; H — audit native manual/AI reject/accept/save/history and dirty Cancel/Discard; actual model quality separately. |
| **PRES-W07** — Application drafts and immutable submitted package/archived binaries | Job Application/Answers/Submission and Documents; [drafts/submitted packages](../../../../job-tracker-ui/src/components/ApplicationAssets.tsx). Existing drafts/frozen submission/archive owners recomposed by [P5-08b](../p5-08b/README.md); [native SQLite/archive/ZIP proof](../p5-08b-readiness/README.md) retained. | [F:application-assets](../../../../job-tracker-ui/src/application-assets.test.tsx); [F:application-drafts](../../../../job-tracker-ui/src/application-drafts.test.ts); [B:SubmittedApplicationPackage](../../../../JobTrackerApi.Tests/SubmittedApplicationPackageTests.cs); [B:JobApplicationsApplicationPackage](../../../../JobTrackerApi.Tests/JobApplicationsApplicationPackageTests.cs) | [Seven sections EN/NB × light/dark desktop/phone](../p5-08b/README.md); [native readiness/manual limits](../p5-08b-readiness/README.md). Human AT/provider gaps retained. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Earlier P2-D01 capture expected failure is superseded by ordinary native passing evidence. Production restore/rollback and all storage/provider combinations remain unverified; capture is not external send. | Workspace/storage owner; H — retain native capture→source mutation→archive/ZIP immutable-byte regression; release owner proves restore/rollback independently. |
| **PRES-W08** — Attachments upload/category/name/AI consent/preview/download/delete | Job Documents; [Attachments](../../../../job-tracker-ui/src/components/Attachments.tsx). Existing attachments CRUD/consent/protected downloads retained; named narrow table/empty state in [P5-08b](../p5-08b/README.md), archive proof in [readiness](../p5-08b-readiness/README.md). | [F:attachments](../../../../job-tracker-ui/src/attachments.test.tsx); [B:AttachmentsController](../../../../JobTrackerApi.Tests/AttachmentsControllerTests.cs); [B:AttachmentConsistency](../../../../JobTrackerApi.Tests/AttachmentConsistencyTests.cs) | [Seven sections EN/NB × light/dark desktop/phone](../p5-08b/README.md); [native readiness/manual limits](../p5-08b-readiness/README.md). Human AT/provider gaps retained. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Archive gate is locally satisfied for recorded native fixtures; physical drag/drop, broad rename/download/manual AT and production storage behavior remain unverified. | Workspace/storage owner; H — audit upload/category/name/consent/preview/download/delete and physical drop with live/frozen identity. |
| **PRES-W09** — Interview questions/answers/ready/manual removal/AI review | Job Interview Prep; [InterviewPrep](../../../../job-tracker-ui/src/components/InterviewPrep.tsx). Existing interview questions/answers/manual removal/AI review/readiness recomposed by [P5-08b](../p5-08b/README.md). | [F:interview-prep](../../../../job-tracker-ui/src/interview-prep.test.tsx); [B:InterviewPrepPersistence](../../../../JobTrackerApi.Tests/InterviewPrepPersistenceTests.cs); [B:InterviewAiContext](../../../../JobTrackerApi.Tests/InterviewAiContextTests.cs) | [Seven sections EN/NB × light/dark desktop/phone](../p5-08b/README.md); [native readiness/manual limits](../p5-08b-readiness/README.md). Human AT/provider gaps retained. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Real-model quality, physical mobile keyboard/populated reload and manual AT remain open; prep does not establish scheduled interview data. | Workspace/AI owner; H — audit populated mobile keyboard/reload/manual removal and explicit AI review; no scheduled-interview inference. |
| **PRES-W10** — Debrief/follow-up draft/date/readiness | Job Interview Prep and follow-up links; [InterviewPrep](../../../../job-tracker-ui/src/components/InterviewPrep.tsx), [followMode producer](../../../../job-tracker-ui/src/jobWorkspaceRoute.ts). Existing debrief/follow-up draft/date/readiness owner recomposed by [P5-08b](../p5-08b/README.md); no automatic send. | [F:interview-prep](../../../../job-tracker-ui/src/interview-prep.test.tsx); [B:JobApplicationsFollowUpDraft](../../../../JobTrackerApi.Tests/JobApplicationsFollowUpDraftTests.cs); [B:InterviewPrep](../../../../JobTrackerApi.Tests/InterviewPrepTests.cs) | [Seven sections EN/NB × light/dark desktop/phone](../p5-08b/README.md); [native readiness/manual limits](../p5-08b-readiness/README.md). Human AT/provider gaps retained. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Timezone/reload chains and provider delivery remain unverified; followMode-specific compose UI is deferred rather than implemented. | Workspace/mail/calendar owner; H — audit debrief/date/reload and metadata links; defer mode-specific compose UI under recorded decision. |
| **PRES-W11** — Reminder rules/actions/notifications, ICS and Google/Outlook events | `/reminders`, Settings rules, job Notes & tasks; [RemindersView](../../../../job-tracker-ui/src/components/RemindersView.tsx), [RulesSettingsCard](../../../../job-tracker-ui/src/components/RulesSettingsCard.tsx), [calendar actions](../../../../job-tracker-ui/src/components/ApplicationCalendarActions.tsx). Reminder/calendar links retained by [P5-01](../p5-01/README.md)/[P5-02](../p5-02/README.md), Dashboard and [P5-08b](../p5-08b/README.md); calendar/rules APIs unchanged. | [F:daily-control-loop](../../../../job-tracker-ui/src/daily-control-loop.test.tsx); [F:application-calendar](../../../../job-tracker-ui/src/application-calendar.test.tsx); [B:ApplicationCalendarController](../../../../JobTrackerApi.Tests/ApplicationCalendarControllerTests.cs); [B:RulesEngineProspect](../../../../JobTrackerApi.Tests/RulesEngineProspectTests.cs) | [Shell/notification entry](../p5-02/README.md); [workspace links](../p5-08b/README.md). Dedicated full calendar/worker responsive audit absent. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [R-02 scoped Rules evidence](p5-15-01/rules-draft-repair/README.md), retained [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [R-02 scoped Rules evidence](p5-15-01/rules-draft-repair/README.md), retained [01 evidence](p5-15-01/PRES_RESULTS.md) | F21 DST/date-only/provider timezone gap, actual Google/Outlook events, scheduler delivery and historical unconfirmed rules-save 500 remain open. | Calendar/API owner; H — investigate F21 DST/date-only semantics before event changes; audit real ICS/rules/reminder and approved provider writes. |
| **PRES-W12** — Async progress/failure/retry/cancel/notifications | `/operations`, Career processing and bell; [OperationsPage](../../../../job-tracker-ui/src/views/OperationsPage.tsx), [processing consumer](../../../../job-tracker-ui/src/views/CareerProfilePage.tsx). Operations remains reachable utility; progress/result/cancel/retry links retained by [P5-02](../p5-02/README.md)/[P5-08b](../p5-08b/README.md); store/worker unchanged. | [F:operations-page](../../../../job-tracker-ui/src/operations-page.test.tsx); [F:profile-page](../../../../job-tracker-ui/src/profile-page.test.tsx); [B:OperationsController](../../../../JobTrackerApi.Tests/OperationsControllerTests.cs); [B:UserOperationStore](../../../../JobTrackerApi.Tests/UserOperationStoreTests.cs) | [Shell/notification entry](../p5-02/README.md); [workspace links](../p5-08b/README.md). Dedicated full calendar/worker responsive audit absent. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Long disconnect/reconnect and F20 enabled worker fault containment remain operational gaps; no live job/worker recovery was certified. | Operations/worker owner; H — audit disconnect/reconnect/late-result/no-duplicate starts/cancel/retry; F20 recovery before enabling producers. |
| **PRES-C01** — Canonical structured career data and long-tail/custom sections | `/career?section=profile`; [CareerProfilePage](../../../../job-tracker-ui/src/views/CareerProfilePage.tsx), [structured sections](../../../../job-tracker-ui/src/views/career/CareerProfileSections.tsx). Career entry retained; canonical/source scope reviewed in [P5-10](../p5-10/README.md), [P5-12](../p5-12/README.md) and [AI readiness](../p5-13-readiness/README.md). | [F:profile-page](../../../../job-tracker-ui/src/profile-page.test.tsx); [B:CareerProfileController](../../../../JobTrackerApi.Tests/CareerProfileControllerTests.cs); [B:CareerProfileService](../../../../JobTrackerApi.Tests/CareerProfileServiceTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Full long-tail Career/mobile save and canonical concurrent updates remain separate; scoped CV acceptance never implies canonical-profile revision safety. | Career/API owner; H — audit every long-tail/custom field and mobile save/source isolation; canonical concurrent saves remain separate. |
| **PRES-C02** — Profile overview/completeness/import guidance/raw copy/history/restore | `/career`; [CareerWorkspacePage](../../../../job-tracker-ui/src/views/CareerWorkspacePage.tsx), [raw/history/import](../../../../job-tracker-ui/src/views/CareerProfilePage.tsx). Career overview/import/raw/history owner unchanged; source relation regression retained by [P5-10](../p5-10/README.md)/[P5-12](../p5-12/README.md). | [F:career-workspace-page](../../../../job-tracker-ui/src/career-workspace-page.test.tsx); [F:profile-page](../../../../job-tracker-ui/src/profile-page.test.tsx); [B:CareerProfileService](../../../../JobTrackerApi.Tests/CareerProfileServiceTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Clipboard/avatar and complete native profile historical restore/manual AT remain unverified; real extraction quality is separate. | Career owner; M — audit raw copy, overview/completeness/import guidance and full historical restore without silent data replacement. |
| **PRES-C03** — Upload/extract/rebuild/reprocess/diff/select/accept/discard/retry/cancel | Career import/review; [extraction/diff/review consumer](../../../../job-tracker-ui/src/views/CareerProfilePage.tsx). Entry only: existing Career upload/extraction/reprocess/diff/accept/discard/retry/cancel owners retained. | [F:profile-page](../../../../job-tracker-ui/src/profile-page.test.tsx); [B:ProfileCvController](../../../../JobTrackerApi.Tests/ProfileCvControllerTests.cs); [B:CvProfileDiffService](../../../../JobTrackerApi.Tests/CvProfileDiffServiceTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Unusual/scanned/OCR document quality and full low-confidence deselection/discard browser acceptance remain unverified; no provider certification. | Career/extraction owner; H — audit low-confidence deselect/discard/retry/cancel and corpus quality; approve provider calls separately. |
| **PRES-C04** — Evidence bank source/category/tags/add/list/delete | Career overview/evidence; [CareerEvidenceBank](../../../../job-tracker-ui/src/views/career/CareerEvidenceBank.tsx). Evidence-bank owner unchanged; job source relationships retained through [P5-08b](../p5-08b/README.md). | [F:career-evidence](../../../../job-tracker-ui/src/career-evidence.test.tsx); [B:CareerEvidenceController](../../../../JobTrackerApi.Tests/CareerEvidenceControllerTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Full delete/many-item search/keyboard browser acceptance remains open; broader Career page work stays Phase 7. | Career owner; M — audit evidence source/category/tags/delete and large-list keyboard/source navigation. |
| **PRES-C05** — CV library create/copy/delete/templates/share/publication/PDF | `/career/builder`; [CvBuilderPage](../../../../job-tracker-ui/src/views/CvBuilderPage.tsx), [template gallery](../../../../job-tracker-ui/src/components/CvTemplateGallery.tsx). Library/CRUD/public ownership retained; editor actions in [P5-09](../p5-09/README.md) and shared template gallery in [P5-12](../p5-12/README.md). | [F:cv-builder-page](../../../../job-tracker-ui/src/cv-builder-page.test.tsx); [F:cv-template-thumbnail](../../../../job-tracker-ui/src/cv-template-thumbnail.test.tsx); [B:CvBuilder](../../../../JobTrackerApi.Tests/CvBuilderTests.cs); [B:PublicCvController](../../../../JobTrackerApi.Tests/PublicCvControllerTests.cs) | [P5-09–12 CV evidence](../p5-12/README.md); [P5-14 four pairs, 320–1440/landscape, keyboard/pointer/emulated touch](../p5-14/README.md). Human/physical/zoom/production unaccepted. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Complete publish/unpublish/old-link revocation chain and every library/template combination remain unverified; library redesign is not claimed. | CV owner; H — audit create/copy/delete/gallery/share/publish/unpublish and old-public-link revocation; keep numeric/slug identity distinct. |
| **PRES-C06** — Studio tabs, preview debounce/pages/fit/save state/mobile panes | `/career/builder/:id`; [editor/preview owner](../../../../job-tracker-ui/src/views/CvBuilderEditor.tsx). Direct [P5-09](../p5-09/README.md) frame/navigation, [P5-11](../p5-11/README.md) live preview and [P5-12](../p5-12/README.md) controls; one save/preview/mobile owner. [P5-14 responsive/ownership successor](../p5-14/README.md) now supplements this record. | [F:cv-builder-deep-link](../../../../job-tracker-ui/src/cv-builder-deep-link.test.tsx); [B:CvBuilder](../../../../JobTrackerApi.Tests/CvBuilderTests.cs) | [P5-09–12 CV evidence](../p5-12/README.md); [P5-14 four pairs, 320–1440/landscape, keyboard/pointer/emulated touch](../p5-14/README.md). Human/physical/zoom/production unaccepted. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | P5-14 now supplies the integrated held-PUT pane/viewport, preview boundary-key/scroll, reachable return, canvas and hit-test successor. Physical touch/software keyboard, 200%/400% zoom, human AT, broader wrapped/short-height states and production rendering remain unaccepted. | CV/accessibility owner; H — retain P5-14 held-PUT/responsive/scroll checks; obtain physical touch/software keyboard/zoom/manual AT evidence. |
| **PRES-C07** — Visibility/order/custom sections and item/document overrides | Builder Content; [ContentTab/EntryEditor](../../../../job-tracker-ui/src/views/CvBuilderEditor.tsx), [useDragReorder](../../../../job-tracker-ui/src/hooks/useDragReorder.ts). Direct [P5-10](../p5-10/README.md) source/item/custom editing and [P5-12](../p5-12/README.md) settings retention; explicit reset/inclusion/order retained. [P5-14 responsive/ownership successor](../p5-14/README.md) now supplements this record. | [F:cv-builder-deep-link](../../../../job-tracker-ui/src/cv-builder-deep-link.test.tsx); [F:cvBuilder](../../../../job-tracker-ui/src/cvBuilder.test.ts); [B:CvBuilder](../../../../JobTrackerApi.Tests/CvBuilderTests.cs) | [P5-09–12 CV evidence](../p5-12/README.md); [P5-14 four pairs, 320–1440/landscape, keyboard/pointer/emulated touch](../p5-14/README.md). Human/physical/zoom/production unaccepted. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | P5-14 closes P5-10-O01 only for tested ownership/default-drop cases: entry/section order, inactive nested lists and foreign editable-title non-mutation. Physical touch/text selection/all-browser gestures and exhaustive saved override/reset combinations remain unqualified. | CV/accessibility owner; H — retain tested native nested ownership/default-drop checks; audit physical touch/text selection/all-browser overrides before broader claim. |
| **PRES-C08** — Capability-aware templates/typography/color/header/skills/sidebar/photo | Builder Template/Customize; [CvCustomizeTab](../../../../job-tracker-ui/src/components/cv/CvCustomizeTab.tsx), [gallery](../../../../job-tracker-ui/src/components/CvTemplateGallery.tsx). Direct [P5-12](../p5-12/README.md) nine-template capability/control presentation and [P5-11](../p5-11/README.md) preview; renderer/template IDs retained. | [F:cv-builder-deep-link](../../../../job-tracker-ui/src/cv-builder-deep-link.test.tsx); [F:cvBuilder](../../../../job-tracker-ui/src/cvBuilder.test.ts); [B:CvBuilder](../../../../JobTrackerApi.Tests/CvBuilderTests.cs) | [P5-09–12 CV evidence](../p5-12/README.md); [P5-14 four pairs, 320–1440/landscape, keyboard/pointer/emulated touch](../p5-14/README.md). Human/physical/zoom/production unaccepted. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | All-template/font/photo/wrapped-line/browser/control combinations and broad custom-colour/manual AT remain unverified; finite capability matrix and Pro locks are not exhaustive. | CV/renderer owner; M — audit capability controls/locks and broader font/photo/wrapped text; manual custom-colour names and contrast. |
| **PRES-C09** — A4/Letter/density/margins/dates/document locale/section presentation | Builder Customize/Content; [document settings](../../../../job-tracker-ui/src/components/cv/CvCustomizeTab.tsx), [settings client](../../../../job-tracker-ui/src/cvBuilder.ts). Direct [P5-12](../p5-12/README.md) A4/Letter/density/margin/date/language/columns controls; [pagination repair](../p5-09-pagination-readiness/README.md) retained. | [F:cvBuilder](../../../../job-tracker-ui/src/cvBuilder.test.ts); [F:cv-builder-deep-link](../../../../job-tracker-ui/src/cv-builder-deep-link.test.tsx); [B:CvBuilder](../../../../JobTrackerApi.Tests/CvBuilderTests.cs) | [P5-09–12 CV evidence](../p5-12/README.md); [P5-14 four pairs, 320–1440/landscape, keyboard/pointer/emulated touch](../p5-14/README.md). Human/physical/zoom/production unaccepted. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Recorded unchanged-tolerance local fidelity supersedes prior six-fixture failures; all advanced combinations, deployment fonts/photo/wrapped text and manual print inspection remain open. | CV/renderer owner; H — retain unchanged numerical oracle/settings exports; audit advanced locale/layout combinations and actual deployed print/fonts. |
| **PRES-C10** — Undo/redo, save queue, dirty guard, history restore/preview lifecycle | Builder save/undo/history; [single editor/history owner](../../../../job-tracker-ui/src/views/CvBuilderEditor.tsx). Existing save/undo/history owner retained in [P5-09](../p5-09/README.md)–[P5-12](../p5-12/README.md); [CV revision protocol](../p5-09-readiness/README.md) and stale AI guard retained. [P5-14 responsive/ownership successor](../p5-14/README.md) now supplements this record. | [F:cv-builder-deep-link](../../../../job-tracker-ui/src/cv-builder-deep-link.test.tsx); [B:CvBuilder](../../../../JobTrackerApi.Tests/CvBuilderTests.cs) | [P5-09–12 CV evidence](../p5-12/README.md); [P5-14 four pairs, 320–1440/landscape, keyboard/pointer/emulated touch](../p5-14/README.md). Human/physical/zoom/production unaccepted. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | CV stale-write/history safety has scoped native evidence; long offline/history combinations and profile/job concurrent edits remain separate. No new save owner or history store. | CV/API owner; H — audit long offline/history/conflict/undo/dirty transitions; retain downloadable draft and one save/history owner. |
| **PRES-C11** — Section and whole-document AI improve/translate/instruction/grammar review | Builder section/AI Tools; [AiSectionAssistant](../../../../job-tracker-ui/src/components/cv/AiSectionAssistant.tsx), [DocumentAiTab](../../../../job-tracker-ui/src/views/CvBuilderEditor.tsx); [Production service guard](../../../../JobTrackerApi/Program.cs). Retained existing section/document assistant affordances; [current Production service withholding](../../../../JobTrackerApi/Program.cs) and [validated historical exception](../release-readiness/README.md). P5-13 review UI remains unimplemented. | [F:ai-section-assistant](../../../../job-tracker-ui/src/ai-section-assistant.test.tsx); [F:cv-builder-deep-link](../../../../job-tracker-ui/src/cv-builder-deep-link.test.tsx); [B:AiWorkspace](../../../../JobTrackerApi.Tests/AiWorkspaceTests.cs); [B:AiPrivacyPolicy](../../../../JobTrackerApi.Tests/AiPrivacyPolicyTests.cs) ; [Production no-write checks](../../../../JobTrackerApi.Tests/CvAiReadinessTests.cs), [isolated HTTP contract](../../../../job-tracker-ui/ai-tests/cv-ai-readiness.spec.ts) | [Deterministic readiness only](../p5-13-readiness/README.md); [P5-14 exclusion](../p5-14/README.md). No qualified or responsive AI-review visual journey. | **DEFERRED** | **DEFERRED**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **DEFERRED**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **DEFERRED**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **DEFERRED**; P5-13 remains unqualified/Production-withheld | Full CV rewriting/review remains DEFERRED — BLOCKED / NOT QUALIFIED: deployed model identity unverified; frozen 32-case/366-call qualification has 0 completed calls and 0 human reviews; factuality unmeasured; P5-13 review UI unimplemented. Current Production guard returns 503 cv_ai_unavailable; safe withholding is an exception, not successful generation/review. Existing assistant affordances can report unavailable. | AI/CV/product owner; H — meet frozen model identity/corpus/rubric/human review and review-UI return conditions; retain Production 503/no-write/unrelated-AI checks. |
| **PRES-C12** — Private PDF and published anonymous CV/PDF, long searchable pages | Private builder export and `/cv/:slug`; [private export client](../../../../job-tracker-ui/src/cvBuilder.ts), [PublicCvPage](../../../../job-tracker-ui/src/views/PublicCvPage.tsx). Private/public PDF ownership and shared admission retained through [P5-11](../p5-11/README.md)/[P5-12](../p5-12/README.md); native preview/PDF corpus unchanged. | [F:public-cv-page](../../../../job-tracker-ui/src/public-cv-page.test.tsx); [B:PublicCvController](../../../../JobTrackerApi.Tests/PublicCvControllerTests.cs); [B:PdfRenderAdmission](../../../../JobTrackerApi.Tests/PdfRenderAdmissionTests.cs) | [P5-09–12 CV evidence](../p5-12/README.md); [P5-14 four pairs, 320–1440/landscape, keyboard/pointer/emulated touch](../p5-14/README.md). Human/physical/zoom/production unaccepted. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | P5-14 retains unchanged 16-fixture/36-page native preview/PDF and 8-settings/24-page export historical proof at unchanged tolerances. This is finite local evidence; deployed Chromium/Linux/fonts/photo/all-print-engine and manual print inspection remain unverified. | CV/rendering/release owner; H — audit public revoke/private denial/PDF busy recovery and deployed Linux/fonts/photos/manual print; preserve admission. |
| **PRES-M01** — Job-scoped manual correspondence/search/delete/paste import | Job Timeline/Correspondence; [Correspondence](../../../../job-tracker-ui/src/components/Correspondence.tsx). Existing job manual correspondence/search/import/delete owner recomposed by [P5-08b](../p5-08b/README.md); global entry retained. | [F:end-to-end-trust-loop](../../../../job-tracker-ui/src/end-to-end-trust-loop.test.tsx); [F:correspondence-search-context](../../../../job-tracker-ui/src/correspondence-search-context.test.ts); [B:CorrespondenceController](../../../../JobTrackerApi.Tests/CorrespondenceControllerTests.cs) | [Workspace correspondence entry](../p5-08b/README.md). Full mail/provider/mobile AT absent. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Full manual edit/delete/paste-import browser combinations and manual AT remain unverified; logging correspondence is not sending mail. | Mail/workspace owner; H — audit native log CRUD/search/paste import and no-send distinction. |
| **PRES-M02** — Gmail candidate/thread import/refresh/sync/unlink/relink/move | Job Timeline/Correspondence Gmail tools; [Correspondence](../../../../job-tracker-ui/src/components/Correspondence.tsx). Existing job Gmail candidate/thread/import/sync/move/unlink owners recomposed by [P5-08b](../p5-08b/README.md); provider/API behavior unchanged. | [F:correspondence-gmail-import](../../../../job-tracker-ui/src/correspondence-gmail-import.test.tsx); [B:GmailController](../../../../JobTrackerApi.Tests/GmailControllerTests.cs); [B:EmailOwnershipIntegration](../../../../JobTrackerApi.Tests/EmailOwnershipIntegrationTests.cs) | [Workspace correspondence entry](../p5-08b/README.md). Full mail/provider/mobile AT absent. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Live provider threads, multi-account reconnect/revoked grants and sync failures remain unverified. | Mail/provider owner; H — audit owned thread/job link/move/unlink/reconnect and approved live sync failures. |
| **PRES-M03** — Global inbox filters/page/provider/link/direction/detail/source links | `/correspondence`; [CorrespondenceInboxPage](../../../../job-tracker-ui/src/views/CorrespondenceInboxPage.tsx). Entry only via [P5-01](../p5-01/README.md); global inbox filters/page/provider/detail/source owners unchanged. | [F:correspondence-inbox-page](../../../../job-tracker-ui/src/correspondence-inbox-page.test.tsx); [B:EmailController](../../../../JobTrackerApi.Tests/EmailControllerTests.cs); [B:EmailOwnershipIntegration](../../../../JobTrackerApi.Tests/EmailOwnershipIntegrationTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Real large-mailbox/attachment-binary flows and complete native inbox/AT acceptance remain open; global inbox redesign stays Phase 7. | Mail owner; H — audit large native inbox paging/provider failure/detail/attachment binaries and manual AT. |
| **PRES-M04** — Compose/reply/provider/recipient/job; draft conflicts; confirm send/uncertainty | `/correspondence` Drafts/Compose; [draft/send owner](../../../../job-tracker-ui/src/views/CorrespondenceInboxPage.tsx). Compose/reply/revision/send/uncertainty owner unchanged; [P5-08b](../p5-08b/README.md) navigation regression only. | [F:correspondence-inbox-page](../../../../job-tracker-ui/src/correspondence-inbox-page.test.tsx); [B:EmailDraftsController](../../../../JobTrackerApi.Tests/EmailDraftsControllerTests.cs); [B:EmailDraftPersistence](../../../../JobTrackerApi.Tests/EmailDraftPersistenceTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Actual sandbox mail delivery/reconnect and every dirty/send interruption remain unverified; no automatic uncertain-send retry. followMode-specific UI remains deferred. | Mail/API owner; H — audit draft conflicts, explicit send/uncertain-new-attempt, reconnect/dirty interruption; followMode UI deferred, no automatic resend. |
| **PRES-M05** — Review proposed jobs/link/reject/keep/notes/sync/create | `/correspondence?view=review`, review alias; [GmailReviewPage](../../../../job-tracker-ui/src/views/GmailReviewPage.tsx), [inbox view adapter](../../../../job-tracker-ui/src/views/CorrespondenceInboxPage.tsx). Review alias and inbox entry retained in [P5-01](../p5-01/README.md)/[P5-08b](../p5-08b/README.md); reviewed decisions/create owner unchanged. | [F:gmail-review-page](../../../../job-tracker-ui/src/gmail-review-page.test.tsx); [F:correspondence-inbox-page](../../../../job-tracker-ui/src/correspondence-inbox-page.test.tsx); [B:GmailController](../../../../JobTrackerApi.Tests/GmailControllerTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Real provider review and complete suggested-job creation browser journey remain unverified; no automatic creation from navigation. | Mail/capture owner; H — audit review alias, proposed-job/link/reject/keep/notes/sync/create confirmation and owner boundaries. |
| **PRES-M06** — Gmail/Graph/IMAP connect/status/disconnect separate from sign-in | `/settings/connected-accounts`; [ConnectedAccountsPage](../../../../job-tracker-ui/src/views/ConnectedAccountsPage.tsx), [provider connections](../../../../job-tracker-ui/src/components/EmailProviderConnections.tsx). Connections entry retained in [P5-01](../p5-01/README.md)/[P5-02](../p5-02/README.md); existing Gmail/Graph/IMAP controls separate from sign-in. | [F:email-provider-connections](../../../../job-tracker-ui/src/email-provider-connections.test.tsx); [B:MicrosoftGraphController](../../../../JobTrackerApi.Tests/MicrosoftGraphControllerTests.cs); [B:ImapController](../../../../JobTrackerApi.Tests/ImapControllerTests.cs) | [Inherited Settings loaded/mobile review](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [shell entry](../p5-01/README.md). No full current domain requalification. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Actual provider authorization/revocation/token expiry/reconnect remain unverified; no credentials or live provider operations in this review. | Connections/provider owner; H — audit actual grants/revoke/expiry/reconnect and IMAP safety; provider sandbox authorization required. |
| **PRES-S01** — Personal metrics/activity/funnel/company/skills/stage/salary/next actions | `/dashboard`, added `/analytics`; [shared reports owner](../../../../job-tracker-ui/src/components/DashboardView.tsx), [AnalyticsPage](../../../../job-tracker-ui/src/views/AnalyticsPage.tsx). Direct accurate report labels/cohorts in [P5-06](../p5-06/README.md) and meaningful [P5-07 Analytics](../p5-07/README.md); existing server facts retained. | [F:daily-control-loop](../../../../job-tracker-ui/src/daily-control-loop.test.tsx); [F:workflow-trust-signals](../../../../job-tracker-ui/src/workflow-trust-signals.test.tsx); [B:StageAnalytics](../../../../JobTrackerApi.Tests/StageAnalyticsTests.cs); [B:AnalyticsSalary](../../../../JobTrackerApi.Tests/AnalyticsSalaryTests.cs) | [Dashboard](../p5-06/README.md), [Analytics](../p5-07/README.md) four pairs/narrow/exact-value states; [utilities](../p5-02/README.md). Human AT open. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Scoped native chart/value/population transformations supersede earlier unmapped chart gaps; server timezone/date/population limits and unsupported NEW metrics remain explicit. | Reports/API owner; M — audit exact cohort/sample/date definitions and drill-down links; retain unsupported-metric boundaries. |
| **PRES-S02** — Owner-local five visibility preferences/onboarding dismiss/notifications | Dashboard visibility/onboarding and bell; [five local flags](../../../../job-tracker-ui/src/components/DashboardView.tsx), [OnboardingChecklist](../../../../job-tracker-ui/src/components/OnboardingChecklist.tsx), [NotificationsPopover](../../../../job-tracker-ui/src/components/NotificationsPopover.tsx). Direct [P5-02](../p5-02/README.md) notifications and [P5-06](../p5-06/README.md) five owner-local Dashboard flags/onboarding; Analytics independent. | [F:onboarding-checklist](../../../../job-tracker-ui/src/onboarding-checklist.test.tsx); [F:notifications-popover](../../../../job-tracker-ui/src/notifications-popover.test.tsx); [B:JobLifecycleEvent](../../../../JobTrackerApi.Tests/JobLifecycleEventTests.cs) | [Dashboard](../p5-06/README.md), [Analytics](../p5-07/README.md) four pairs/narrow/exact-value states; [utilities](../p5-02/README.md). Human AT open. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Five owner-local Dashboard visibility flags and scoped reload/account evidence remain; order/resize/reset is deferred. Recorded P5-06-O01 generic language-preference 500 during overlapping Dashboard/setup reads has no established exception/root cause; sequential fixture setup does not close concurrent save reliability. | Dashboard/shell/identity owner; H — investigate recorded P5-06-O01 language-save 500 during reads; audit five flags A/B/reload plus bell/onboarding; order/resize/reset deferred. |
| **PRES-S03** — Rules/reminder/table/theme/language preferences and account links | Settings tabs/mobile selector and shell preferences; [SettingsView](../../../../job-tracker-ui/src/components/SettingsView.tsx), [rules](../../../../job-tracker-ui/src/components/RulesSettingsCard.tsx), [language save](../../../../job-tracker-ui/src/i18n/I18nProvider.tsx). P4 Settings controls retained; [P5-00](../p5-00/README.md) feedback/shared tokens and [P5-03](../p5-03/README.md)/[P5-04b](../p5-04b/README.md) table preferences integration. | [F:settings-view](../../../../job-tracker-ui/src/settings-view.test.tsx); [F:theme-state](../../../../job-tracker-ui/src/theme-state.test.tsx); [B:NotificationSettingsController](../../../../JobTrackerApi.Tests/NotificationSettingsControllerTests.cs); [B:RulesEngineProspect](../../../../JobTrackerApi.Tests/RulesEngineProspectTests.cs) | [Inherited Settings loaded/mobile review](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [shell entry](../p5-01/README.md). No full current domain requalification. | **PARTIAL** | **FAIL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **FAIL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [R-02 native draft/save proof](p5-15-01/rules-draft-repair/README.md) | **PARTIAL**; [R-02 native draft/save proof](p5-15-01/rules-draft-repair/README.md) | **R-02:** SETTINGS-01 draft loss is closed for verified session/save/error/discard/account behaviour. P4-04-O02 notification locking, P5-06-O01 language-save500, historical unconfirmed Rules500 and broader human/provider acceptance remain open; this is not a backend contention fix. | Settings/API/identity owner; H — separately investigate notification/language/Rules persistence reliability and execute human/device acceptance; no automatic repair or production release. |
| **PRES-S04** — AI privacy/usage/limits/Free-Pro/server entitlement/conditional billing | Settings AI/plan and domain locks; [privacy](../../../../job-tracker-ui/src/components/AiPrivacySettingsCard.tsx), [usage](../../../../job-tracker-ui/src/components/AiUsageCard.tsx), [AccountPlanProvider](../../../../job-tracker-ui/src/accountPlan.tsx). Existing privacy/usage/entitlements/billing readiness retained; deterministic AI metering in [readiness](../p5-13-readiness/README.md); Production CV review exception only. | [F:settings-view](../../../../job-tracker-ui/src/settings-view.test.tsx); [F:ai-usage-card](../../../../job-tracker-ui/src/ai-usage-card.test.tsx); [B:AiPrivacyPolicy](../../../../JobTrackerApi.Tests/AiPrivacyPolicyTests.cs); [B:AiUsageMeter](../../../../JobTrackerApi.Tests/AiUsageMeterTests.cs) | [Inherited Settings loaded/mobile review](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [shell entry](../p5-01/README.md). No full current domain requalification. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Actual checkout/webhooks/portal and provider consent/delivery remain unverified. Production CV unavailability is temporary authorized P5-13 debt, not fulfillment or disabling other AI. | AI/commerce/API owner; H — retain entitlement/privacy/metering and bounded Production CV exception; separately prove checkout/webhooks/portal before activation. |
| **PRES-S05** — Account ZIP/encrypted backup/lifecycle/deletion confirmations | Settings Backup; [BackupCard](../../../../job-tracker-ui/src/components/BackupCard.tsx). Account ZIP/backup/deletion controls and independent saves retained; [P5-00](../p5-00/README.md) feedback clearance and [native package/ZIP evidence](../p5-08b-readiness/README.md). | [F:account-data-export](../../../../job-tracker-ui/src/account-data-export.test.tsx); [B:AccountDataExport](../../../../JobTrackerApi.Tests/AccountDataExportTests.cs); [B:BackupController](../../../../JobTrackerApi.Tests/BackupControllerTests.cs) | [Inherited Settings loaded/mobile review](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [shell entry](../p5-01/README.md). No full current domain requalification. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Actual database/account restore, verified recoverable backups, paid deletion/provider cancellation and rollback remain production release gates; no destructive rehearsal occurred. | Account lifecycle/release owner; H — audit exact confirmations/ZIP/backup gates; current recoverable restore/paid deletion/provider cancellation/rollback require authorized rehearsal. |
| **PRES-A01** — Admin user/create/roles/reset/delete/last-admin/self guards | `/admin/users`; [AdminUsersPage](../../../../job-tracker-ui/src/views/AdminUsersPage.tsx). Admin Users route/entry retained by [P5-01](../p5-01/README.md); server authorization/last-admin/self guards unchanged. | [F:admin-users-page](../../../../job-tracker-ui/src/admin-users-page.test.tsx); [B:UsersController](../../../../JobTrackerApi.Tests/UsersControllerTests.cs); [B:ApiAuthorizationPosture](../../../../JobTrackerApi.Tests/ApiAuthorizationPostureTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Mounted-view role revocation, full mutations and actual reset delivery remain unverified; hidden nav/synthetic shell never proves authorization. | Admin/identity owner; H — audit full guarded mutations, mounted-role revoke and real reset; crafted API denial remains mandatory. |
| **PRES-A02** — Audit list/detail/supported undo/job restore | `/admin/audit`; [AdminAuditPage](../../../../job-tracker-ui/src/views/AdminAuditPage.tsx). Admin Audit route/entry retained by [P5-01](../p5-01/README.md); supported server undo/restore owner unchanged. | [F:admin-audit-page](../../../../job-tracker-ui/src/admin-audit-page.test.tsx); [B:AuthAndSystemController](../../../../JobTrackerApi.Tests/AuthAndSystemControllerTests.cs); [B:ApiAuthorizationPosture](../../../../JobTrackerApi.Tests/ApiAuthorizationPostureTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Complete successful native undo/job restore browser acceptance remains open; role posture is not undo behavior proof. | Admin/API owner; H — audit persisted successful undo/job restore, unsupported actions and non-admin denial. |
| **PRES-A03** — System/build/DB/AI/mail/SMTP/test/probe/benchmark/maintenance | `/admin/system` and admin badge; [AdminSystemPage](../../../../job-tracker-ui/src/views/AdminSystemPage.tsx), [metadata disclosure](../../../../job-tracker-ui/src/layout/AppShell.tsx). Admin System route/entry/build metadata retained in [P5-00](../p5-00/README.md)/[P5-01](../p5-01/README.md); diagnostics/maintenance owner unchanged. | [F:admin-system-page](../../../../job-tracker-ui/src/admin-system-page.test.tsx); [B:AuthAndSystemController](../../../../JobTrackerApi.Tests/AuthAndSystemControllerTests.cs); [B:MaintenanceJobDispatcher](../../../../JobTrackerApi.Tests/MaintenanceJobDispatcherTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | Actual production SMTP/model/probes/benchmark/maintenance and sensitive-output qualification remain unverified; no live jobs launched. | Admin/operations owner; H — audit metadata/diagnostic sensitive outputs and guarded controls; production SMTP/model/maintenance proof separately authorized. |
## Source disagreements resolved without closing acceptance
+9 -1
View File
@@ -1,6 +1,14 @@
# P5-15 — Phase 5 final acceptance
## P5-15-01R-02 — Current bounded Rules successor
## P5-15-01R-03 — Current bounded Analytics authentication successor
[Analytics authentication repair](p5-15-01/analytics-auth-repair/README.md) closes AUTH-01 for the verified full internal return-path/security scope. The unchanged original failure is RED→GREEN; native period/encoding/history/expiry/logout/foreign-resource/tampering journeys pass. The reproducer `c37cab560afa2d94cc4244c09dfa7aa720563bbf` and bounded implementation `68437671762aa9a4d93036a23a06810f1f47dd57` are separately committed and pushed. **R-03: GO for the bounded repair**, with final documentation/hygiene evidence in its own immediate commit/push checkpoint. Original audit findings and earlier repair results remain historical.
Fresh complete results: **backend1,033 / frontend490(+18) / ordinary browser134pass,0fail / separate diagnostics2pass,0fail**. Five browser cases are added; the former AUTH-01 failure becomes an actual pass. All117 inherited cases, five audit cases, three saved-search and four Rules repair cases pass; P2-D01 stays ordinary passing. Sidecar49, focusedAI108, realHTTP2, revision5/5, standard fidelity16/16(36=36), settings8/8(24=24), security/config9/6/1/3, TypeScript, lint and both builds pass. [Portable results](p5-15-01/analytics-auth-repair/evidence/validation.json) distinguish subsets and retained RED/harness attempts. Full267axe scans report0violations and**2,041incomplete node occurrences**; manual accessibility is not accepted.
PRES-E02 moves FAIL→PARTIAL; all57 groups are **0PASS/56PARTIAL/0FAIL/1DEFERRED/0BLOCKED/0NOT VERIFIED**. No incomplete whole group is promoted to PASS. All three originally reproduced functional defects have scoped repair proof, while provider/human/device and recorded debt remain open. The [CV intermittent observation](p5-15-01/INTERMITTENT_FAILURES.md) is still OPEN. **Production main remains unchanged and NO-GO; P5-15-02 is not started and needs a separate owner instruction.** P5-13 stays deferred/unqualified/Production-withheld with0/366 calls,0human reviews and no review UI. F04/current backup-restore/configuration-schema-secrets/tested rollback remain release blockers.
## Historical P5-15-01R-02 — Bounded Rules successor
[Rules draft repair and native evidence](p5-15-01/rules-draft-repair/README.md) closes SETTINGS-01 for verified internal session retention, Save/readback, validation, failure/retry, Discard and account disposal. PRES-S03 moves FAIL→PARTIAL; current57 totals are **0PASS/55PARTIAL/1FAIL/1DEFERRED/0BLOCKED/0NOT VERIFIED**. AUTH-01 Analytics query loss remains open/failing. The prior audit/R-01 records below remain historical; other Settings reliability and human/provider acceptance remain open.
@@ -1,6 +1,8 @@
# P5-15-01 functional defect register
**R-02 current disposition:** [Rules draft repair](rules-draft-repair/README.md) closes SETTINGS-01 for verified internal draft retention and related Save/validation/failure/retry/Discard/account isolation. DISCOVERY-01 remains scoped CLOSED by R-01. **AUTH-01 remains P2/OPEN; current reproduced open totals:P0=0/P1=0/P2=1/P3=0.** Fresh complete R-02 ordinary browser128pass/1fail and diagnostics2/2 retain the remaining real failure. Production and P5-15-02 remain NO-GO. Unknown historical Rules/notification/language500 causes and [CV intermittent observation](INTERMITTENT_FAILURES.md) remain open.
**Current R-03 disposition:** [Analytics authentication repair](analytics-auth-repair/README.md) closes AUTH-01 for the verified complete safe return-path scope. The unchanged original assertion is RED→GREEN; all134ordinary browser cases, both separate diagnostics, safe-target/foreign404/account-disposal and existing saved-search/Rules journeys pass. Current open totals for the three original reproduced defects: **P0=0/P1=0/P2=0/P3=0**. This does not close separate debt/evidence gaps or grant whole-group PASS. Production remains NO-GO; P5-15-02 has not begun. R-02 disposition and original observed failures below remain historical.
**Historical R-02 disposition:** [Rules draft repair](rules-draft-repair/README.md) closed SETTINGS-01 for verified internal draft retention and related Save/validation/failure/retry/Discard/account isolation. DISCOVERY-01 remained scoped CLOSED by R-01. **AUTH-01 remained P2/OPEN; reproduced open totals at R-02:P0=0/P1=0/P2=1/P3=0.** Fresh complete R-02 ordinary browser128pass/1fail and diagnostics2/2 retained the remaining real failure. Production and P5-15-02 remained NO-GO. Unknown historical Rules/notification/language500 causes and [CV intermittent observation](INTERMITTENT_FAILURES.md) remain open.
**Historical R-01 disposition:** DISCOVERY-01 is **CLOSED for the verified SQLite listing/error/recovery defect** by the [bounded repair](saved-search-repair/README.md). Live deployed-provider qualification and complete PRES-J02 delivery/device acceptance remain open. AUTH-01 and SETTINGS-01 remained P2/OPEN at R-01; reproduced open counts wereP0=0/P1=0/P2=2/P3=0. Original reproduction/severity/evidence below remain historical; closing this defect does not erase release blockers or grant full-group PASS.
@@ -29,7 +31,7 @@ P0 means serious security/data loss; P1 an important broken workflow; P2 limited
## P5-15-01-AUTH-01 — Login drops protected deep-link query state
**Confirmed P2 / OPEN.** PRES-E02/E07 route continuity; representative `/analytics?months=6` → public entry → login. This recoverable context failure does not grant permissions or lose saved application content.
**Confirmed P2 at audit / CLOSED by R-03 for the verified authentication-return scope.** PRES-E02/E07 route continuity; representative `/analytics?months=6` → public entry → login. The historical failure table below remains intact. [Successor proof](analytics-auth-repair/evidence/auth-proof.json) retains the original failed URL, corrected exact destination/selected period, encoded query/hash, history/expiry/logout and native foreign404/tampered-target checks. The repair captures the complete destination at App's existing guard and validates it at Login completion; it does not change Analytics data or server authorization. Real providers, challenge/AT/device/production acceptance remain open; E02 is PARTIAL, not PASS. This recoverable context failure did not grant permissions or lose saved application content.
| Field | Evidence-based finding |
|---|---|
@@ -78,4 +80,4 @@ The two standalone [preference diagnostics](diagnostics/README.md) assert intend
**No P0 is demonstrated by the collected evidence.** That is a bounded finding, not an exhaustive security certification. At the original audit, P1 saved-search verification and dependent activity were blocked; R-01 now supplies the scoped repair proof; independent audit evidence can still be collected safely.
Original audit finding totals: **P0 0 / P1 1 / P2 2 / P3 0**. Historical open totals after R-01: **P0 0 / P1 0 / P2 2 / P3 0**; current R-02 totals are **P0 0 / P1 0 / P2 1 / P3 0**. These are three distinct original failures, not the same count as failing browser cases: normal/admin cases shared DISCOVERY-01; AUTH-01 occupies the anonymous case; SETTINGS-01 was a separate diagnostic. Carried failures/evidence gaps are additional debt, not silently closed or counted as newly reproduced defects.
Original audit finding totals: **P0 0 / P1 1 / P2 2 / P3 0**. Historical open totals after R-01: **P0 0 / P1 0 / P2 2 / P3 0**; historical R-02 totals were **P0 0 / P1 0 / P2 1 / P3 0**. These are three distinct original failures, not the same count as failing browser cases: normal/admin cases shared DISCOVERY-01; AUTH-01 occupies the anonymous case; SETTINGS-01 was a separate diagnostic. Carried failures/evidence gaps are additional debt, not silently closed or counted as newly reproduced defects.
@@ -4,6 +4,8 @@
**OPEN; cause not established; no CV repair.** PRES-C06/C10/E08. R-01's first complete frontend rerun passed463/failed1 of464. The case `[P5-11 PRES-C06 C10 E08] returning from preview focuses the existing editor without changing the pending draft` failed its `getByText('Unsaved')` assertion in `cv-builder-deep-link.test.tsx` (recorded line751).
R-03's fresh final frontend490/490 and ordinary browser134/134 pass, including the unchanged preview-exit test and existing CV journeys. [R-03 results](analytics-auth-repair/evidence/validation.json) record those distinct lanes. No CV assertion, timeout, retry or implementation changes occur in the authentication repair; these passing runs do not diagnose or close this observation.
The unchanged case passed in isolation and an unchanged complete rerun passed464/464. Those later passes do not establish a cause or close the observation. [R-01 portable report/fingerprints](saved-search-repair/evidence/validation.json) retain `.artifacts/p5-15-01R-01/frontend-final/attempt1-jest.json`, `attempt1-command.json`, `cv-preview-diagnostic.json`, `jest.json` and `command.json`. The additional `attempt1-jest.log` remains a local diagnostic; it is not fingerprinted in that original portable manifest.
R-02's fresh complete frontend472/472 includes this unchanged case; its complete ordinary browser run is128pass/1unrelated Analytics failure, with all117inherited cases passing. No assertion, timeout, skip, retry or CV implementation is changed to obtain those results. [R-02 results](rules-draft-repair/evidence/validation.json) record those separate lanes; neither passing lane diagnoses this intermittent assertion. Ownership remains CV/test-reliability review at the appropriate acceptance checkpoint, if recurrence or targeted investigation justifies it. Preserve a failing trace and pending draft/focus state before any bounded fix; do not widen the Rules repair into a speculative CV change.
@@ -1,6 +1,10 @@
# P5-15-01 functional preservation results
**Current R-02 successor:** [Rules draft repair](rules-draft-repair/README.md) closes SETTINGS-01 for its verified draft/save/error/account scope. This matrix remains the historical01 audit; the [parent successor matrix](../PRESERVATION_ACCEPTANCE.md) now records **55PARTIAL/1FAIL/1DEFERRED**, zero whole-group PASS/BLOCKED/NOT VERIFIED. Fresh R-02 full regression/native evidence is in the successor, including ordinary browser128pass/1fail and diagnostics2/2. E02/AUTH-01 stays FAIL and P5-13 remains deferred/withheld; no P5-15-02 or production GO is implied.
**Current R-03 successor:** [Analytics authentication repair](analytics-auth-repair/README.md) supersedes AUTH-01 for its proved return-path scope. The unchanged original native assertion now passes both in isolation and the final full run. [Fresh final validation](analytics-auth-repair/evidence/validation.json) records **134/134 ordinary browser cases**, zero failures/skips/flaky/retries, diagnostics2/2, backend1,033/frontend490, unchanged revision/rendering/security gates. [Native proof](analytics-auth-repair/evidence/auth-proof.json) includes the genuine RED, encoded query/fragment/default/history/expiry/logout cases, foreign resource404s and rejected unsafe return targets. The [parent current column](../PRESERVATION_ACCEPTANCE.md) records **56 PARTIAL / 1 DEFERRED**, zero PASS/FAIL/BLOCKED/NOT VERIFIED whole groups: **only E02 moves FAIL→PARTIAL**. Original audit rows, counts and failed historical observations below remain unchanged.
The affected groups are E02 (local return journey), E03 (existing provider completion boundary), E04 (existing challenge completion), E07 (shared protected navigation) and E09 (account/session disposal). W01 supplies another owned/foreign protected Job-section deep link; J02 supplies unchanged saved-search regression safety, with all three repair cases passing alongside four Rules cases and117 inherited browser cases. This evidence does not qualify real Google/Microsoft, reset-mail/Turnstile, authenticators/recovery devices, BFCache/offline/old-bundle behavior, screen readers or physical devices. Full mandatory requirements remain in the original matrix and the current parent traceability table. Automated axe267/zero violations/**2,041 incomplete node occurrences** is not full accessibility acceptance. Original followMode metadata-only deferral, C11/P5-13 withholding, historical preference500 causes, unexplained CV Unsaved intermittent assertion and production evidence blockers remain open. Production remains NO-GO; P5-15-02 is not started.
**Historical R-02 successor:** [Rules draft repair](rules-draft-repair/README.md) closes SETTINGS-01 for its verified draft/save/error/account scope. This matrix remains the historical01 audit; the [parent successor matrix](../PRESERVATION_ACCEPTANCE.md) now records **55PARTIAL/1FAIL/1DEFERRED**, zero whole-group PASS/BLOCKED/NOT VERIFIED. Fresh R-02 full regression/native evidence is in the successor, including ordinary browser128pass/1fail and diagnostics2/2. E02/AUTH-01 stays FAIL and P5-13 remains deferred/withheld; no P5-15-02 or production GO is implied.
**Historical R-01 successor:** [saved-search repair](saved-search-repair/README.md) verifies the native SQLite/list feedback repair. J02 becomes PARTIAL in R-01; its57 totals are54PARTIAL/2FAIL/1DEFERRED in the retained [parent successor column](../PRESERVATION_ACCEPTANCE.md). This01 matrix and its53PARTIAL/3FAIL/1DEFERRED totals remain the original audit outcome, not a current open-defect count. No full group has been certified PASS.
@@ -1,6 +1,8 @@
# P5-15-01 — Functional and preservation audit
**Current R-02 successor:** [Rules draft repair](rules-draft-repair/README.md) closes SETTINGS-01 for its verified draft/save/error/account scope. Original audit results below remain historical; current [parent matrix](../PRESERVATION_ACCEPTANCE.md) is **55PARTIAL/1FAIL/1DEFERRED**, zero whole-group PASS/BLOCKED/NOT VERIFIED. Fresh R-02 backend1,033/frontend472, ordinary browser128pass/1fail, diagnostics2/2, security and unchanged native fidelity are documented separately. E02/AUTH-01 stays FAIL and P5-13 stays deferred/withheld. No P5-15-02 or production GO is implied.
**Current R-03 successor:** [Analytics authentication repair](analytics-auth-repair/README.md) closes AUTH-01 for its verified safe complete return-path scope. Genuine native RED→GREEN, all134ordinary browser cases and two separate diagnostics pass; fresh backend1,033/frontend490(+18), five new native cases, security and unchanged revision/fidelity are recorded in [portable results](analytics-auth-repair/evidence/validation.json). Current57 totals are56PARTIAL/1DEFERRED, zero PASS/FAIL/BLOCKED/NOT VERIFIED. All three original demonstrated functional defects now have separately pushed scoped repairs. Original audit findings and R-02 results below remain historical; broader human/provider/debt and CV intermittent evidence remain open. Production NO-GO; no P5-15-02 is started or automatically authorized.
**Historical R-02 successor:** [Rules draft repair](rules-draft-repair/README.md) closed SETTINGS-01 for its verified draft/save/error/account scope. At R-02 the [parent matrix](../PRESERVATION_ACCEPTANCE.md) was **55PARTIAL/1FAIL/1DEFERRED**, zero whole-group PASS/BLOCKED/NOT VERIFIED. Fresh R-02 backend1,033/frontend472, ordinary browser128pass/1fail, diagnostics2/2, security and unchanged native fidelity are documented separately. E02/AUTH-01 remained FAIL and P5-13 remained deferred/withheld. No P5-15-02 or production GO was implied.
**Historical R-01 successor checkpoint:** [P5-15-01R-01](saved-search-repair/README.md) repairs DISCOVERY-01 on SQLite and visible list failure/retry. The original audit findings/counts below are preserved historically. The R-01 parent column records54PARTIAL/2FAIL/1DEFERRED; Analytics AUTH-01 and Rules SETTINGS-01 remain open ordinary failures. R-01 does not authorize P5-15-02 or production.
@@ -1,6 +1,12 @@
# P5-15-01 route results
**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.
**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.
@@ -27,4 +27,88 @@ Existing session/account invalidation intentionally disposes the previous page/p
Final application changes have fresh **1,033/1,033 backend**, **490/490 frontend**, **31/31 focused Login**, the unchanged original native AUTH-01 **1/1**, and new native return/security journeys **5/5** passing. TypeScript, lint and both builds pass. The case-insensitive login-loop gap also has separate RED evidence before correction: two failures, two selected passes and27 not selected; final31 cases pass. External identity callbacks/two-factor are component fixtures, not live provider acceptance.
The complete browser/security/fidelity reconciliation is still running. Current checkpoint status: **IN PROGRESS**, with the demonstrated AUTH-01 repaired but no final acceptance claim yet. P5-15-02 and production are not cleared. Broader human/device/font qualification, historical preference500 causes, the CV Unsaved intermittent observation and P5-13 deferral remain open.
At the separately pushed code checkpoint, full browser/security/fidelity reconciliation was still pending and no final acceptance was claimed. The final evidence below now establishes the bounded repair result. P5-15-02 is not started or automatically authorized; production remains NO-GO. Broader human/device/font qualification, historical preference500 causes, the CV Unsaved intermittent observation and P5-13 deferral remain open.
## Return-path and security contract
The existing route state remains the single transport: protected location → landing → Login → authenticated destination, using replacement navigation at the existing boundaries. No destination is persisted in localStorage, sent to an identity provider, placed in a token URL or copied into the CV/API domains. Search and fragment are preserved literally, including correctly encoded values. Analytics still interprets only `months`, with6/24 supported alternatives and12 as the established default. Multiple independent report parameters do not exist; a fragment is navigation state, not another reporting filter.
Before every completion callback, the shared helper requires a relative same-origin path, validates encoding and decoded path meaning, rejects external/protocol-relative paths, controls/backslashes and normalized `/`, `/login` or `/register` returns, and selects `/dashboard` on rejection. Repeated decoding detects nested unsafe path encodings without rewriting an accepted URL's query/fragment. Only the existing nested Jobs `from` and positive safe-integer `focusJobId` are replayed; arbitrary client state is dropped. Backend authentication/ownership remains authoritative even for a valid path containing a foreign resource ID.
Deliberate account/session disposal is distinct from an expired cookie. The existing `/login?sessionChanged=1` path abandons the old destination and context. Cookie expiry followed by reload captures the currently requested safe deep link; it does not revive another account's retained editing state. No extra history push or second concurrency/save model is introduced.
## Native journeys and evidence boundaries
| Journey | Executed assertion and result |
|---|---|
| Original AUTH-01 | Unchanged anonymous census fails before repair at `/analytics`, then passes with exact `/analytics?months=6` after real local authentication |
| Reporting parameters | Exact24, encoded `%36`→6, explicit12 and invalid3→12 survive sign-in; actual Analytics API requests return200 and selected controls match effective periods |
| Default/failure/recovery | No query→12; incorrect password401 stays at Login with error, retry restores intended destination; no premature success |
| Browser history |6→24→Back6→Back default12→Forward6; reload retains6; authenticated direct24#activity stays signed in |
| Session lifecycle | Expired `jobtracker_auth` cookie is absent and `/auth/me` returns401; reload/sign-in restores24#activity. Explicit logout204→sessionChanged→login returns dashboard |
| Other protected deep link | Owned Job Documents query/fragment survives sign-in and refresh; region is visible, preserving existing section routes |
| Account/resource isolation | A new account receives404 for both foreign workspace and Job API read, sees no private Job title, while original owner readback is unchanged |
| Client tampering | Protocol-relative and encoded protocol-relative router state falls back to dashboard after real sign-in; fourteen component target variants also fail closed |
| Existing methods | Local sign-in native; existing two-factor and Google/Microsoft completion/cancellation paths use deterministic component fixtures. Real provider/2FA infrastructure is not qualified |
Five new ordinary browser cases use the actual disposable SQLite API, cookies, CSRF/session context, synthetic accounts and supported page actions. They do not mock successful report/ownership/authentication responses. Non-local requests are blocked. Three saved-search and four Rules repair cases remain separate existing requirements in the full run. P2-D01 remains an ordinary passing requirement, never an expected failure.
The initial focused browser attempt contained four passes and one strict-locator harness failure: the toast and framework announcer both matched `role=alert`. The correction narrows the assertion to the existing Unauthorized feedback; it does not weaken the expected401/retry behavior. That attempt remains retained separately. The final focused run is5/5 with zero retries, skipped or flaky cases. The first full frontend488/488 run preceded the final two case-variant regressions; it is historical, not the final490/490 evidence.
## Preservation traceability
| Contract | Existing behavior → bounded change → regression evidence | Remaining qualification |
|---|---|---|
| PRES-E02 | Local/challenge sign-in return → full validated internal destination → original AUTH-01,31 Login cases and native retry/expiry | Real external challenge/email/reset/Turnstile combinations and broader human acceptance |
| PRES-E03 | Google/Microsoft entry/callbacks → same shared validated return → existing callback/cancellation fixtures strengthened for query/hash | Real providers, credentials, cancellation/network/redirect infrastructure |
| PRES-E04 | Existing two-factor completion → same complete destination → pending challenge fixture restores24#activity | Human/native authenticator workflows and full security-settings acceptance |
| PRES-E07 | Existing route/shell continuity → keep query/hash through guard → native Analytics and Job section, history and refresh | All manual names/focus/device and complete long-tail navigation obligations |
| PRES-E09 | Private account/session disposal and ownership → sessionChanged fallback, restricted context replay → native logout/foreign404 plus account-isolation suites | Production/assistive-technology/BFCache combinations beyond recorded fixtures |
| PRES-W01 / J05 | Job section URLs and Jobs list return context → validated existing `from`/focus replay → component context assertion, owned Documents deep link and retained Jobs/Back/filter suites | Full workspace/provider/device and long-tail Jobs list interaction qualifications |
| PRES-J02 (supporting) | Saved discovery search persistence/ownership → implementation untouched → three existing native saved-search repair cases remain passing | Scheduler/alert delivery, live source providers and human/device acceptance |
No original PRES contract, API authorization, Analytics metric/query model, provider integration, saved-search or Rules implementation is changed. E02 moves FAIL→PARTIAL for the repaired defect; the group is not granted PASS. The current reconciliation is **PASS0 / PARTIAL56 / FAIL0 / DEFERRED1 / BLOCKED0 / NOT VERIFIED0 =57**. Only E02 changes from the preceding R-02 column. Historical00/01/R-01/R-02 columns remain intact. All32 route patterns pass finite entry/refresh/read assertions:192 observations,98 selected reads and no500. Full-route acceptance remains32PARTIAL/0FAIL because long-tail/provider/human obligations are not replaced by this finite census.
## Visual and accessibility evidence
The four native captures cover EN/light1440, Bokmål/dark390, EN/dark768 and Bokmål/light320. The agent inspected their actual report headings, wrapping and selected period states; no screen reader, physical touchscreen, software keyboard or independent human review was used. The existing transient sign-in toast appears over report content in captures; broad overlay/reflow acceptance is not closed by this routing repair. This checkpoint introduces no user-facing text or visual redesign.
[Native API/URL proof, source RED results and screenshot fingerprints](evidence/auth-proof.json), [complete fresh validation](evidence/validation.json) and [repository/static checks](evidence/repository-validation.json) retain exact commands/times/result hashes and limits. Captures: [EN/light desktop](evidence/analytics-auth-en-light-1440.png), [Bokmål/dark phone](evidence/analytics-auth-nb-dark-390.png), [EN/dark tablet](evidence/analytics-auth-en-dark-768.png), [Bokmål/light narrow phone](evidence/analytics-auth-nb-light-320.png).
Full267axe scans report0violations and **2,041incomplete node occurrences**: color-contrast1,769; aria-hidden-focus41; aria-prohibited-attr209; aria-valid-attr-value18; th-has-data-cells4. These are occurrences across scans, not2,041 independently confirmed defects. Classification and human/manual acceptance stay assigned to the later accessibility audit; this checkpoint neither removes incompletes nor certifies spoken names/announcements. Zero automated violations cannot close those obligations.
## Fresh validation and count reconciliation
These results are fresh after the last application change on2026-10-10. [Portable command/report fingerprints](evidence/validation.json) distinguish original RED, intermediate harness/full-suite attempts, final GREEN and independent/subset lanes. The complete ordinary run finished at12:54:24UTC; independent security/diagnostics completed at12:55:17UTC, with zero retries, skips, unexpected or flaky outcomes in final runs.
| Gate | Fresh result | Count explanation |
|---|---|---|
| Backend |1,033/1,033 | Unchanged; no backend code/tests added |
| Frontend |490/490,82 suites |472→490:18 new Login cases, comprising14 unsafe-target variants and4 valid-context/disposal cases; two existing provider/2FA assertions strengthened |
| Focused Login |31/31 | Subset of490, not additional tests |
| Original AUTH-01 |1/1 GREEN after0/1 RED | Same original desired-state assertion, not a replacement or expected failure |
| New native auth cases |5/5 | Included in134 ordinary browser cases, not added twice |
| Complete ordinary browser |134/134,0fail |129 declared cases before repair→134 with five new cases;128pass/1fail→134pass/0fail includes the former failure becoming an actual pass |
| Separate diagnostics |2/2,0fail | Two declared existing preference/Rules diagnostic cases, outside ordinary browser totals |
| Sidecar |49/49 | Unchanged deterministic/offline suite, not configured-model qualification |
| Focused AI / revision |108/108 /5/5 | Unchanged subsets of1,033 backend tests |
| Real-HTTP / rate-limit / ingress / PDF admission |2/2 /9/9 /6/6 /1/1 | Existing independent suites; local contracts, not production evidence |
| Configuration |3/3 | Existing offline checks; production configuration remains unverified |
| Standard fidelity |16/16,36=36 pages | Exact page count/membership; unchanged0.5mm page dimension,2mm position,0.5pt font and1/255 RGB tolerances |
| Settings exports |8/8,24=24 pages | Same tolerances and fixture contents; native exports from the full browser run |
| Extra offline helpers | Supply-chain3 / evaluation5 / extension3 | Existing independent fixtures, not live provider/production calls |
| Static/build/hygiene | TypeScript, lint, frontend production and API Release builds pass; final E2E TypeScript/secret/link/whitespace proof in repository manifest | Raw logs and actual command exits are retained separately from runtime totals |
Standard/settings measurement passes were completed at12:42UTC against the final native exported files. No renderer geometry, pagination, typography, revision, canonical profile, override, frozen package, save/conflict or AI withholding implementation is changed. The original CV Unsaved intermittent observation remains OPEN despite current passing runs; this repair neither investigates nor establishes its cause.
## Immediate commit/push ledger
1. `c37cab560afa2d94cc4244c09dfa7aa720563bbf` — reproducing regression tests and initial evidence, committed/pushed before production-code changes.
2. `68437671762aa9a4d93036a23a06810f1f47dd57` — bounded App/auth/Login repair,18 additional Login cases, five browser cases and verified intermediate record; committed/pushed after final application-level validation.
3. Final acceptance evidence/documentation — this independently reviewable checkpoint; immediately commit/push after repository verification. Its exact hash, remote equality and clean-tree result are reported after creation rather than inventing a self-referential hash here.
Development remote equality is verified after each push. Local/remote production `main` remains `27657f31131cd95d42f0e1290853ec9c9b3959a4`. No production merge/push/deployment, P5-15-02, P5-13 qualification/UI, Docker recovery, B07 or unrelated repair occurs. F04/current backup+restore/production configuration-schema-secrets/tested rollback remain release blockers. P5-13 stays deferred/unqualified/Production-withheld with0/366 calls,0 human reviews and no review UI. The historical CV Unsaved intermittent observation, preference500 causes, Board scale/native touch, followMode UI and human/device/font/photo acceptance remain explicitly open.
## Decision
**P5-15-01R-03: GO for the bounded Analytics authentication redirect repair.** AUTH-01 is fixed; all required current automated/native preservation lanes are green. Existing saved-search and Rules fixes remain green, and no new major security/data-preservation regression is observed. This is not full Phase5, actual provider/human/device or production acceptance. Stop before P5-15-02, P5-13, B07 and production deployment.
Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

@@ -0,0 +1,241 @@
{
"sourceCheckpoint": "339e3ba591c91dcd3590d4cbc451ad31268f1aec",
"reproducerCheckpoint": "c37cab560afa2d94cc4244c09dfa7aa720563bbf",
"codeCheckpoint": "68437671762aa9a4d93036a23a06810f1f47dd57",
"originalRed": {
"passed": 0,
"failed": 1,
"requested": "/analytics?months=6",
"returned": "/analytics",
"case": "[P5-15-01 E02 E07 A01] all 32 routes retain native entry, refresh and anonymous permissions",
"error": "Expected pattern: /\\/analytics\\?months=6$/\nReceived string: \"http://localhost:3300/analytics\"\nTimeout: 5000ms",
"report": {
"path": ".artifacts/p5-15-01R-03/browser/auth-original-red.json",
"sha256": "19c33361fecea68fbec97e47e754c36e3efe9ac62dbe284e6722775d3bb42172"
}
},
"loginComponentRed": {
"passed": 17,
"failed": 12,
"notSelected": 0,
"declared": 29,
"failedCases": [
"LoginPage uses the safe fallback for the untrusted return target \"/\\t/evil.example\"",
"LoginPage uses the safe fallback for the untrusted return target \"/%2f%2fevil.example\"",
"LoginPage uses the safe fallback for the untrusted return target \"/%252f%252fevil.example\"",
"LoginPage uses the safe fallback for the untrusted return target \"/%5cevil.example\"",
"LoginPage uses the safe fallback for the untrusted return target \"/analytics?months=%ZZ\"",
"LoginPage uses the safe fallback for the untrusted return target \"/jobs/../login\"",
"LoginPage uses the safe fallback for the untrusted return target \"/%6cogin\"",
"LoginPage uses the safe fallback for the untrusted return target \"/register\"",
"LoginPage uses the safe fallback for the untrusted return target \"/analytics%0a\"",
"LoginPage uses the safe fallback for the untrusted return target \"/analytics?months=6\\n\"",
"LoginPage restores valid owned-workspace navigation context separately from the sign-in destination",
"LoginPage abandons prior return context on the established account/session disposal entry"
],
"result": {
"path": ".artifacts/p5-15-01R-03/frontend/login-red.json",
"sha256": "190a11b979354cbc5ca1af1e2e43532f384ff32aadf85baaad25671fd2c6c487"
}
},
"caseNormalizationRed": {
"passed": 2,
"failed": 2,
"notSelected": 27,
"declared": 31,
"failedCases": [
"LoginPage uses the safe fallback for the untrusted return target \"/LOGIN\"",
"LoginPage uses the safe fallback for the untrusted return target \"/%4cOGIN\""
],
"result": {
"path": ".artifacts/p5-15-01R-03/frontend/case-loop-red.json",
"sha256": "e8ec49ada6336b67047c9d093835c110ad80608d3b77a43068a6b43ed5552998"
}
},
"nativeReturn": {
"requested": "/analytics?months=6",
"returned": "/analytics?months=6"
},
"periodMatrix": [
{
"requested": "/analytics?months=24#activity",
"returned": "/analytics?months=24#activity",
"effectiveMonths": 24,
"language": "en",
"mode": "light",
"width": 1440
},
{
"requested": "/analytics?months=%36#rapport",
"returned": "/analytics?months=%36#rapport",
"effectiveMonths": 6,
"language": "nb",
"mode": "dark",
"width": 390
},
{
"requested": "/analytics?months=12",
"returned": "/analytics?months=12",
"effectiveMonths": 12,
"language": "en",
"mode": "dark",
"width": 768
},
{
"requested": "/analytics?months=3#rapport",
"returned": "/analytics?months=3#rapport",
"effectiveMonths": 12,
"language": "nb",
"mode": "light",
"width": 320
}
],
"historyAndAuthentication": {
"failedLogin": 401,
"retryDefault": 12,
"backPeriods": [
6,
12
],
"forwardAndRefresh": 6,
"authenticatedDirect": 24
},
"expiryAndLogout": {
"expiredCookieMe": 401,
"expiryReturn": "/analytics?months=24#activity",
"logout": 204,
"logoutSubsequentLogin": "/dashboard"
},
"ownershipAndUnsafeReturnState": {
"ownedDestination": "/jobs/1?section=documents#documents",
"foreignResource": 404,
"foreignWorkspace": 404,
"ownerReadbackUnchanged": true,
"rejectedTargets": [
"//outside.example.test/analytics",
"/%2f%2foutside.example.test/analytics"
],
"fallback": "/dashboard"
},
"focusedBrowser": {
"startTime": "2026-10-10T12:27:51.075Z",
"duration": 28486.097,
"expected": 5,
"skipped": 0,
"unexpected": 0,
"flaky": 0
},
"originalGreen": {
"startTime": "2026-10-10T12:26:44.366Z",
"duration": 36464.388,
"expected": 1,
"skipped": 0,
"unexpected": 0,
"flaky": 0
},
"nativeContract": "Real authenticated local Development/SQLite API for login, Analytics reads, account disposal and owned/foreign resources; no provider/API schema/report aggregation change.",
"supportedAnalyticsQuery": "months=6 or24 selects that period; absent/other values retain existing12-month default. Search encoding and fragment survive unchanged.",
"screenshots": [
{
"name": "analytics-auth-en-light-1440",
"file": "analytics-auth-en-light-1440.png",
"path": ".artifacts/p5-15-01R-03/browser/auth-focused-results/analytics-auth-repair--P5--c5c4a-gn-in-across-locales-themes-chromium/attachments/analytics-auth-en-light-1440-38e97c90033b4d77b5d231d23bf2ca23bd63f19f.png",
"sha256": "21cef8b34577795744e6868c3086edc471decb61b76b0d4ee61590e51e0a7724"
},
{
"name": "analytics-auth-nb-dark-390",
"file": "analytics-auth-nb-dark-390.png",
"path": ".artifacts/p5-15-01R-03/browser/auth-focused-results/analytics-auth-repair--P5--c5c4a-gn-in-across-locales-themes-chromium/attachments/analytics-auth-nb-dark-390-21d1e32701491e996c99b1c4c86814d0f566c563.png",
"sha256": "5abc521581bcf406a48566f9bd7c1f66c4e955b852d5fb042a23a119315e05aa"
},
{
"name": "analytics-auth-en-dark-768",
"file": "analytics-auth-en-dark-768.png",
"path": ".artifacts/p5-15-01R-03/browser/auth-focused-results/analytics-auth-repair--P5--c5c4a-gn-in-across-locales-themes-chromium/attachments/analytics-auth-en-dark-768-1e41ab7c1b87b0da507de99b71e0e00fd9acfe11.png",
"sha256": "5b30de0bd4291eed11f71741e328c16ef2e4766fc854e7f49beb17e45c50bcc8"
},
{
"name": "analytics-auth-nb-light-320",
"file": "analytics-auth-nb-light-320.png",
"path": ".artifacts/p5-15-01R-03/browser/auth-focused-results/analytics-auth-repair--P5--c5c4a-gn-in-across-locales-themes-chromium/attachments/analytics-auth-nb-light-320-cd3d311cb5e473ef05069561c0d0c52529c1f8a9.png",
"sha256": "329ea5665112ef15d2dfd4b29086e47a59b5d8abca26d7fed0dd6c6109d5f072"
}
],
"visualInspection": {
"type": "Coding-agent screenshot inspection only; not independent human or assistive-technology acceptance.",
"reviewed": [
"analytics-auth-en-light-1440",
"analytics-auth-nb-dark-390",
"analytics-auth-en-dark-768",
"analytics-auth-nb-light-320"
],
"status": "Recorded reviewed screenshots"
},
"rawEvidence": [
{
"path": ".artifacts/p5-15-01R-03/frontend/login-red.json",
"sha256": "190a11b979354cbc5ca1af1e2e43532f384ff32aadf85baaad25671fd2c6c487"
},
{
"path": ".artifacts/p5-15-01R-03/frontend/case-loop-red.json",
"sha256": "e8ec49ada6336b67047c9d093835c110ad80608d3b77a43068a6b43ed5552998"
},
{
"path": ".artifacts/p5-15-01R-03/browser/auth-focused.json",
"sha256": "ba69aad3d0c27e6b532abafc496928a51a4b575eb4dd782f5e503e349f1fd7a3"
},
{
"path": ".artifacts/p5-15-01R-03/browser/auth-original-green.json",
"sha256": "f28698a236d9ea82d9691e62d44df7391ffe48c912661aa9885bea4906bd2558"
}
],
"intermediateAttempts": [
{
"label": "Retained focused-browser harness attempt; Unauthorized toast/announcer selector ambiguity, corrected without changing401/retry assertions.",
"file": {
"path": ".artifacts/p5-15-01R-03/browser/attempt1-auth-focused.json",
"sha256": "36b6431e61415e19bb11ea38a1bd09939ee79e683609e0233e068559ded1cb97"
},
"log": {
"path": ".artifacts/p5-15-01R-03/browser/attempt1-auth-focused.log",
"sha256": "a86a91be2dbe58d0058039c9953d8c3908c9a4a7c0fb7f9eaef84f968fb05cd2"
},
"counts": {
"startTime": "2026-10-10T12:26:12.986Z",
"duration": 30801.587,
"expected": 4,
"skipped": 0,
"unexpected": 1,
"flaky": 0
}
},
{
"label": "Retained intermediate attempt; not final acceptance evidence.",
"file": {
"path": ".artifacts/p5-15-01R-03/frontend/attempt1-jest.json",
"sha256": "491288c010df227f78caf9ee90a468085b0e31e81da5627ccbe8012723e28c09"
},
"counts": {
"numPassedTests": 488,
"numFailedTests": 0,
"numPendingTests": 0,
"numTotalTests": 488
}
},
{
"label": "Retained intermediate attempt; not final acceptance evidence.",
"file": {
"path": ".artifacts/p5-15-01R-03/frontend/attempt1-summary.json",
"sha256": "7d5ae5f3e0c352e27a60bb6471a253e60995f9d544b7e0a1266bbd91f64daead"
},
"counts": {}
}
],
"limits": [
"No real Google/Microsoft provider authentication; existing provider return/cancellation paths have deterministic component fixtures only.",
"No human screen-reader, physical touch/software keyboard, or production font/photo qualification.",
"P5-13 remains deferred, unqualified and Production-withheld; zero qualification calls/UI activation.",
"F04, current complete backup/restore, production configuration/schema and tested rollback remain release blockers.",
"Historical preference500 causes and unexplained CV Unsaved intermittent assertion remain open."
]
}
@@ -0,0 +1,292 @@
{
"status": "PASS for repository/static/document checks; no production or complete Phase5 acceptance.",
"sourceCheckpoint": "339e3ba591c91dcd3590d4cbc451ad31268f1aec",
"codeCheckpoint": "68437671762aa9a4d93036a23a06810f1f47dd57",
"finalDocumentCommit": "This record; final commit/push/tree equality is verified afterward and reported to owner.",
"productionMain": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
"productionChanged": false,
"checks": [
{
"name": "e2e-typescript",
"command": [
"rtk",
"proxy",
"node",
"job-tracker-ui/node_modules/typescript/bin/tsc",
"--project",
".artifacts/p5-15-01/e2e-tsconfig.json",
"--noEmit",
"--incremental",
"false"
],
"startedUtc": "2026-10-10T13:03:38.885179+00:00",
"finishedUtc": "2026-10-10T13:03:41.193863+00:00",
"exitCode": 0,
"logPath": ".artifacts/p5-15-01R-03/hygiene/e2e-typescript.log",
"logSha256": "a4ed4c2c830adf807283a578ea7ee8b2f659416a86da69815d6147237e7d7f36"
},
{
"name": "document-links",
"command": [
"rtk",
"proxy",
"C:/Users/Connor/.cache/codex-runtimes/codex-primary-runtime/dependencies/python/python.exe",
"-X",
"utf8",
".artifacts/p4-04-check-doc-links.py"
],
"startedUtc": "2026-10-10T13:03:41.194362+00:00",
"finishedUtc": "2026-10-10T13:03:41.872415+00:00",
"exitCode": 0,
"logPath": ".artifacts/p5-15-01R-03/hygiene/document-links.log",
"logSha256": "ccdc000ff4b5d0eb9fb5762359fb6a7c4716dc6b9641c378c4506d80e18221cc"
},
{
"name": "secret-scan",
"command": [
"rtk",
"proxy",
"C:/Users/Connor/.cache/codex-runtimes/codex-primary-runtime/dependencies/python/python.exe",
"-X",
"utf8",
"scripts/supply-chain.py",
"scan-secrets"
],
"startedUtc": "2026-10-10T13:03:41.872915+00:00",
"finishedUtc": "2026-10-10T13:03:43.711682+00:00",
"exitCode": 0,
"logPath": ".artifacts/p5-15-01R-03/hygiene/secret-scan.log",
"logSha256": "da6efdc7fe0b34b8658c000c05ed2eaa8fdaf0dd62756adf51f7a770d5a4485f"
},
{
"name": "working-whitespace",
"command": [
"rtk",
"proxy",
"git",
"diff",
"--check"
],
"startedUtc": "2026-10-10T13:03:43.711682+00:00",
"finishedUtc": "2026-10-10T13:03:43.811370+00:00",
"exitCode": 0,
"logPath": ".artifacts/p5-15-01R-03/hygiene/working-whitespace.log",
"logSha256": "a2671a8fe8421cd6b0dd53d8b4d460271309557e5f0fc80de3d2204e468e93a7"
},
{
"name": "staged-whitespace",
"command": [
"rtk",
"proxy",
"git",
"diff",
"--cached",
"--check"
],
"startedUtc": "2026-10-10T13:03:43.811871+00:00",
"finishedUtc": "2026-10-10T13:03:43.890250+00:00",
"exitCode": 0,
"logPath": ".artifacts/p5-15-01R-03/hygiene/staged-whitespace.log",
"logSha256": "a4ed4c2c830adf807283a578ea7ee8b2f659416a86da69815d6147237e7d7f36"
},
{
"name": "checkpoint-whitespace",
"command": [
"rtk",
"proxy",
"git",
"diff",
"339e3ba591c91dcd3590d4cbc451ad31268f1aec",
"--check"
],
"startedUtc": "2026-10-10T13:03:43.890764+00:00",
"finishedUtc": "2026-10-10T13:03:43.991084+00:00",
"exitCode": 0,
"logPath": ".artifacts/p5-15-01R-03/hygiene/checkpoint-whitespace.log",
"logSha256": "a2671a8fe8421cd6b0dd53d8b4d460271309557e5f0fc80de3d2204e468e93a7"
},
{
"name": "checkpoint-files",
"command": [
"rtk",
"proxy",
"git",
"diff",
"339e3ba591c91dcd3590d4cbc451ad31268f1aec",
"--name-only"
],
"startedUtc": "2026-10-10T13:03:43.991084+00:00",
"finishedUtc": "2026-10-10T13:03:44.083847+00:00",
"exitCode": 0,
"logPath": ".artifacts/p5-15-01R-03/hygiene/checkpoint-files.log",
"logSha256": "2ab03ee5e62c936723adc1675072881fce68b5935e832b92acea6034111dcb51"
},
{
"name": "untracked-files",
"command": [
"rtk",
"proxy",
"git",
"ls-files",
"--others",
"--exclude-standard"
],
"startedUtc": "2026-10-10T13:03:44.084347+00:00",
"finishedUtc": "2026-10-10T13:03:44.180872+00:00",
"exitCode": 0,
"logPath": ".artifacts/p5-15-01R-03/hygiene/untracked-files.log",
"logSha256": "aede1cd454baa249798554e2eef09a52ede7bbdda29ac0dca34c0961f51cf468"
},
{
"name": "original-contracts-unchanged",
"command": [
"rtk",
"proxy",
"git",
"diff",
"339e3ba591c91dcd3590d4cbc451ad31268f1aec",
"--",
"docs/redesign/phase-2",
"docs/redesign/audit/ROUTE_MAP.md"
],
"startedUtc": "2026-10-10T13:03:44.181383+00:00",
"finishedUtc": "2026-10-10T13:03:44.258887+00:00",
"exitCode": 0,
"logPath": ".artifacts/p5-15-01R-03/hygiene/original-contracts-unchanged.log",
"logSha256": "a4ed4c2c830adf807283a578ea7ee8b2f659416a86da69815d6147237e7d7f36"
},
{
"name": "development-branch",
"command": [
"rtk",
"proxy",
"git",
"branch",
"--show-current"
],
"startedUtc": "2026-10-10T13:03:44.259891+00:00",
"finishedUtc": "2026-10-10T13:03:44.333341+00:00",
"exitCode": 0,
"logPath": ".artifacts/p5-15-01R-03/hygiene/development-branch.log",
"logSha256": "b6bdec29438bc83c44fd5e3e8c1a0e3379bb3b7bea701966b24ad7df2091c7b2"
},
{
"name": "main-revision",
"command": [
"rtk",
"proxy",
"git",
"rev-parse",
"main"
],
"startedUtc": "2026-10-10T13:03:44.334332+00:00",
"finishedUtc": "2026-10-10T13:03:44.404849+00:00",
"exitCode": 0,
"logPath": ".artifacts/p5-15-01R-03/hygiene/main-revision.log",
"logSha256": "897066df123bc63e82a45f42fe9b6dbc9dd0aeff602dd814ffdf3ffd8de8ec2c"
},
{
"name": "code-head",
"command": [
"rtk",
"proxy",
"git",
"rev-parse",
"HEAD"
],
"startedUtc": "2026-10-10T13:03:44.405348+00:00",
"finishedUtc": "2026-10-10T13:03:44.474005+00:00",
"exitCode": 0,
"logPath": ".artifacts/p5-15-01R-03/hygiene/code-head.log",
"logSha256": "c3b1798598a94ab2a1fcc87b6f50348014b9fa4c70358d92f6fba2f035811caf"
},
{
"name": "remote-branches",
"command": [
"rtk",
"proxy",
"git",
"ls-remote",
"origin",
"refs/heads/main",
"refs/heads/codex/ui-redesign-phase4"
],
"startedUtc": "2026-10-10T13:03:44.474005+00:00",
"finishedUtc": "2026-10-10T13:03:44.705606+00:00",
"exitCode": 0,
"logPath": ".artifacts/p5-15-01R-03/hygiene/remote-branches.log",
"logSha256": "ebdd583b225748390c82cdc34b8f053993a513cfd1f2226ecde3a56b604b6ab3"
}
],
"changedTrackedFiles": [
"docs/redesign/phase-5/p5-15/PRESERVATION_ACCEPTANCE.md",
"docs/redesign/phase-5/p5-15/README.md",
"docs/redesign/phase-5/p5-15/p5-15-01/DEFECTS.md",
"docs/redesign/phase-5/p5-15/p5-15-01/INTERMITTENT_FAILURES.md",
"docs/redesign/phase-5/p5-15/p5-15-01/PRES_RESULTS.md",
"docs/redesign/phase-5/p5-15/p5-15-01/README.md",
"docs/redesign/phase-5/p5-15/p5-15-01/ROUTE_RESULTS.md",
"docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/README.md",
"docs/roadmap/todo.md",
"job-tracker-ui/e2e/analytics-auth-repair.spec.ts",
"job-tracker-ui/src/App.tsx",
"job-tracker-ui/src/auth.ts",
"job-tracker-ui/src/login-page.test.tsx",
"job-tracker-ui/src/views/LoginPage.tsx"
],
"untrackedFilesWithinScope": [
"docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/analytics-auth-en-dark-768.png",
"docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/analytics-auth-en-light-1440.png",
"docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/analytics-auth-nb-dark-390.png",
"docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/analytics-auth-nb-light-320.png",
"docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/auth-proof.json",
"docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/repository-validation.json",
"docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/validation.json"
],
"applicationFiles": [
"job-tracker-ui/src/App.tsx",
"job-tracker-ui/src/auth.ts",
"job-tracker-ui/src/views/LoginPage.tsx"
],
"preservation": {
"total": 57,
"before": {
"PARTIAL": 56,
"DEFERRED": 1
},
"audit": {
"PARTIAL": 53,
"FAIL": 3,
"DEFERRED": 1
},
"R01": {
"PARTIAL": 54,
"FAIL": 2,
"DEFERRED": 1
},
"R02": {
"PARTIAL": 55,
"FAIL": 1,
"DEFERRED": 1
},
"current": {
"PARTIAL": 56,
"DEFERRED": 1
},
"originalIdsUnchanged": true,
"onlyE02StatusChanged": true
},
"routes": {
"patterns": 32,
"original": 31,
"analyticsAdded": 1,
"sourceDeclarationsReconciled": true
},
"balancedMarkdown": true,
"evidenceFingerprintReferencesVerified": 104,
"limits": [
"No real external-provider authentication, human AT/physical-device or production acceptance.",
"CV Unsaved intermittent cause and historical preference500 causes remain open.",
"No P5-15-02/P5-13/Docker/B07 work or production branch mutation."
]
}
+2
View File
@@ -4,6 +4,8 @@ Status reconciled: 2026-10-09.
## Current repository work
- **P5-15-01R-03 — GO for bounded Analytics authentication return repair:** [record](../redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/README.md). Original AUTH-01 is RED→GREEN; safe complete pathname/query/hash/context, local retry/history/expiry/logout and native foreign404/tampered-target journeys pass. Fresh backend1,033/frontend490(+18)/browser134(+5cases, formerfailure nowpassing)/diagnostics2; saved-search3, Rules4, P2-D01, revision5 and fidelity16/36+settings8/24 remain green. All57 groups reconcile to56PARTIAL/1DEFERRED. Reproducer and code checkpoints are pushed; final evidence receives its own immediate push. Production NO-GO/main unchanged. Stop before P5-15-02/P5-13/Docker/B07/deployment; human/provider/device, production readiness, existing debt and the CV intermittent observation remain open.
- **P5-15-01R-02 — GO for bounded Rules draft repair:** [record](../redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/README.md). Native RED→GREEN retains5 on tab return/persisted14/zero writes; Save/reload, validation/error/retry, Discard and account isolation pass. Fresh backend1,033/frontend472/browser128pass+1Analytics failure/diagnostics2pass; standard/settings fidelity16/8 and revision5 unchanged. All57 groups reconcile to55PARTIAL/1FAIL/1DEFERRED. Code checkpoints pushed; final evidence follows its immediate commit/push boundary. Analytics remains unrepaired; P5-15-02/P5-13/Docker/B07/production are not started or cleared.
- **P5-15-00 — acceptance planning only:** [final acceptance programme](../redesign/phase-5/p5-15/README.md) reconciles every Phase 5 slice, all 57 original PRES groups and retained routes, incomplete axe/manual/device qualifications, CV/native/revision boundaries and A/B/C/D debt/release gates. No new application/test change or fresh suite result; inherited 1,023 backend / 459 frontend / 117 browser remains. P5-13 deferred, full Phase 5 incomplete and production NO-GO. Push this documentation checkpoint and stop for review; each subsequently completed logical P5-15 checkpoint must be separately committed/pushed. No production `main` push, B07 or automatic 01 execution.