diff --git a/docs/redesign/phase-5/p5-15/PRESERVATION_ACCEPTANCE.md b/docs/redesign/phase-5/p5-15/PRESERVATION_ACCEPTANCE.md index 859b862..3d900b9 100644 --- a/docs/redesign/phase-5/p5-15/PRESERVATION_ACCEPTANCE.md +++ b/docs/redesign/phase-5/p5-15/PRESERVATION_ACCEPTANCE.md @@ -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 diff --git a/docs/redesign/phase-5/p5-15/README.md b/docs/redesign/phase-5/p5-15/README.md index 103a62f..39dfec9 100644 --- a/docs/redesign/phase-5/p5-15/README.md +++ b/docs/redesign/phase-5/p5-15/README.md @@ -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. diff --git a/docs/redesign/phase-5/p5-15/p5-15-01/DEFECTS.md b/docs/redesign/phase-5/p5-15/p5-15-01/DEFECTS.md index 47fb9d5..9c8ef97 100644 --- a/docs/redesign/phase-5/p5-15/p5-15-01/DEFECTS.md +++ b/docs/redesign/phase-5/p5-15/p5-15-01/DEFECTS.md @@ -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. diff --git a/docs/redesign/phase-5/p5-15/p5-15-01/INTERMITTENT_FAILURES.md b/docs/redesign/phase-5/p5-15/p5-15-01/INTERMITTENT_FAILURES.md index ae1f144..7c3d0e6 100644 --- a/docs/redesign/phase-5/p5-15/p5-15-01/INTERMITTENT_FAILURES.md +++ b/docs/redesign/phase-5/p5-15/p5-15-01/INTERMITTENT_FAILURES.md @@ -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. diff --git a/docs/redesign/phase-5/p5-15/p5-15-01/PRES_RESULTS.md b/docs/redesign/phase-5/p5-15/p5-15-01/PRES_RESULTS.md index 97ca113..4e12075 100644 --- a/docs/redesign/phase-5/p5-15/p5-15-01/PRES_RESULTS.md +++ b/docs/redesign/phase-5/p5-15/p5-15-01/PRES_RESULTS.md @@ -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. diff --git a/docs/redesign/phase-5/p5-15/p5-15-01/README.md b/docs/redesign/phase-5/p5-15/p5-15-01/README.md index a2a8190..d2f1c3d 100644 --- a/docs/redesign/phase-5/p5-15/p5-15-01/README.md +++ b/docs/redesign/phase-5/p5-15/p5-15-01/README.md @@ -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. diff --git a/docs/redesign/phase-5/p5-15/p5-15-01/ROUTE_RESULTS.md b/docs/redesign/phase-5/p5-15/p5-15-01/ROUTE_RESULTS.md index e665852..e55133d 100644 --- a/docs/redesign/phase-5/p5-15/p5-15-01/ROUTE_RESULTS.md +++ b/docs/redesign/phase-5/p5-15/p5-15-01/ROUTE_RESULTS.md @@ -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. diff --git a/docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/README.md b/docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/README.md index a1c8f3b..f00f187 100644 --- a/docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/README.md +++ b/docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/README.md @@ -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. diff --git a/docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/analytics-auth-en-dark-768.png b/docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/analytics-auth-en-dark-768.png new file mode 100644 index 0000000..17694f6 Binary files /dev/null and b/docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/analytics-auth-en-dark-768.png differ diff --git a/docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/analytics-auth-en-light-1440.png b/docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/analytics-auth-en-light-1440.png new file mode 100644 index 0000000..332e178 Binary files /dev/null and b/docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/analytics-auth-en-light-1440.png differ diff --git a/docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/analytics-auth-nb-dark-390.png b/docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/analytics-auth-nb-dark-390.png new file mode 100644 index 0000000..fe6370d Binary files /dev/null and b/docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/analytics-auth-nb-dark-390.png differ diff --git a/docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/analytics-auth-nb-light-320.png b/docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/analytics-auth-nb-light-320.png new file mode 100644 index 0000000..aa7b1bf Binary files /dev/null and b/docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/analytics-auth-nb-light-320.png differ diff --git a/docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/auth-proof.json b/docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/auth-proof.json new file mode 100644 index 0000000..3027571 --- /dev/null +++ b/docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/auth-proof.json @@ -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." + ] +} diff --git a/docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/repository-validation.json b/docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/repository-validation.json new file mode 100644 index 0000000..711cf87 --- /dev/null +++ b/docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/repository-validation.json @@ -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." + ] +} diff --git a/docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/validation.json b/docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/validation.json new file mode 100644 index 0000000..6be54b3 --- /dev/null +++ b/docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/validation.json @@ -0,0 +1,1160 @@ +{ + "sourceCheckpoint": "339e3ba591c91dcd3590d4cbc451ad31268f1aec", + "codeCheckpoint": "68437671762aa9a4d93036a23a06810f1f47dd57", + "recordedUtc": "2026-10-10T12:55:39.343945+00:00", + "scope": "Actual completed local regression; no production, live external-provider or human/device certification.", + "backend": [ + { + "name": "api-release-build", + "command": [ + "rtk", + "proxy", + "C:/Users/Connor/.dotnet/dotnet.exe", + "build", + "JobTrackerApi/JobTrackerApi.csproj", + "--configuration", + "Release", + "--no-restore", + "-warnaserror" + ], + "startedUtc": "2026-10-10T12:26:11.959230+00:00", + "finishedUtc": "2026-10-10T12:26:13.223552+00:00", + "exitCode": 0, + "logSha256": "85fa83d41f509f7d022515a7aadd911f04225a5e9526700218c64be81553a1e2" + }, + { + "name": "backend-full", + "command": [ + "rtk", + "proxy", + "C:/Users/Connor/.dotnet/dotnet.exe", + "test", + "JobTrackerApi.Tests/JobTrackerApi.Tests.csproj", + "--configuration", + "Release", + "--no-build", + "--logger", + "trx;LogFileName=backend-full.trx", + "--results-directory", + ".artifacts/p5-15-01R-03/backend/full", + "--", + "xUnit.parallelizeTestCollections=false", + "xUnit.maxParallelThreads=1" + ], + "startedUtc": "2026-10-10T12:26:13.224557+00:00", + "finishedUtc": "2026-10-10T12:26:30.085220+00:00", + "exitCode": 0, + "logSha256": "690c72a01cce0dc7337bf9817e1ac276e3094e9aa510060d3e476c0abaf53752", + "total": 1033, + "passed": 1033, + "failed": 0, + "resultSha256": "0bf5b18a853c30b4754b0a7c4a13f2935ffc56ec1e98318334c0b1b533d25d03" + }, + { + "name": "backend-test-project-release-build", + "command": [ + "rtk", + "proxy", + "C:/Users/Connor/.dotnet/dotnet.exe", + "build", + "JobTrackerApi.Tests/JobTrackerApi.Tests.csproj", + "--configuration", + "Release", + "--no-restore", + "-warnaserror" + ], + "startedUtc": "2026-10-10T12:26:30.104318+00:00", + "finishedUtc": "2026-10-10T12:26:31.858044+00:00", + "exitCode": 0, + "logSha256": "9a7d9db3199f8a68aded902957925df70b032a1b189d9ebba335cf1bc5282d03" + }, + { + "name": "cv-revision", + "command": [ + "rtk", + "proxy", + "C:/Users/Connor/.dotnet/dotnet.exe", + "test", + "JobTrackerApi.Tests/JobTrackerApi.Tests.csproj", + "--configuration", + "Release", + "--no-build", + "--filter", + "FullyQualifiedName~CvRevisionReadinessTests", + "--logger", + "trx;LogFileName=cv-revision.trx", + "--results-directory", + ".artifacts/p5-15-01R-03/backend/full", + "--", + "xUnit.parallelizeTestCollections=false", + "xUnit.maxParallelThreads=1" + ], + "startedUtc": "2026-10-10T12:26:31.859097+00:00", + "finishedUtc": "2026-10-10T12:26:35.929873+00:00", + "exitCode": 0, + "logSha256": "bdf5c64a01e584464905b291e63eb9a5dfd5571eb4bf7b99dd2741e1c850a171", + "total": 5, + "passed": 5, + "failed": 0, + "resultSha256": "633f56fb9f124e3e3b31210ac0d2f928859cb35af9e5be8613d6e084a6893dff" + }, + { + "name": "focused-ai", + "command": [ + "rtk", + "proxy", + "C:/Users/Connor/.dotnet/dotnet.exe", + "test", + "JobTrackerApi.Tests/JobTrackerApi.Tests.csproj", + "--configuration", + "Release", + "--no-build", + "--filter", + "FullyQualifiedName~CvAi|FullyQualifiedName~AiWorkspace|FullyQualifiedName~AiPrivacyPolicy|FullyQualifiedName~MeteredSummarizerService", + "--logger", + "trx;LogFileName=focused-ai.trx", + "--results-directory", + ".artifacts/p5-15-01R-03/backend/full", + "--", + "xUnit.parallelizeTestCollections=false", + "xUnit.maxParallelThreads=1" + ], + "startedUtc": "2026-10-10T12:26:35.934372+00:00", + "finishedUtc": "2026-10-10T12:26:42.413319+00:00", + "exitCode": 0, + "logSha256": "f205505531ee0c9d192219275d4778451f0623505ac3fefd72192468e8ce9681", + "total": 108, + "passed": 108, + "failed": 0, + "resultSha256": "9e2fc175b6153c91188dd10e30d27ea268fea22518f7920e35f738be7c1e38dd" + }, + { + "name": "sidecar", + "command": [ + "rtk", + "proxy", + "tools/summarizer/.venv/Scripts/python.exe", + "-m", + "pytest", + "tools/summarizer/tests", + "-q", + "-o", + "cache_dir=E:/Storage/Projects/Active/Job tracker/.artifacts/p5-15-01R-03/backend/full/helpers/pytest-cache", + "--basetemp=E:/Storage/Projects/Active/Job tracker/.artifacts/p5-15-01R-03/backend/full/helpers/pytest-tmp", + "--junitxml=E:/Storage/Projects/Active/Job tracker/.artifacts/p5-15-01R-03/backend/full/helpers/sidecar.xml" + ], + "startedUtc": "2026-10-10T12:26:42.416333+00:00", + "finishedUtc": "2026-10-10T12:26:51.521727+00:00", + "exitCode": 0, + "logSha256": "a9c69b640adc4a855a0c26a8ed59c70b7c66bf85aacdf3644d723dffb885b34a", + "expectedPassed": 49 + }, + { + "name": "configuration-tests", + "command": [ + "rtk", + "proxy", + "C:/Users/Connor/.cache/codex-runtimes/codex-primary-runtime/dependencies/python/python.exe", + "-X", + "utf8", + "scripts/test-ingress.py" + ], + "startedUtc": "2026-10-10T12:26:51.522725+00:00", + "finishedUtc": "2026-10-10T12:26:52.416140+00:00", + "exitCode": 0, + "logSha256": "c5263087107d51c68fc076fc619de0d5ba1a155e135c93c4c18f76bce6a4d081", + "expectedPassed": 3 + }, + { + "name": "supply-chain-tests", + "command": [ + "rtk", + "proxy", + "C:/Users/Connor/.cache/codex-runtimes/codex-primary-runtime/dependencies/python/python.exe", + "-X", + "utf8", + "scripts/test-supply-chain.py" + ], + "startedUtc": "2026-10-10T12:26:52.417156+00:00", + "finishedUtc": "2026-10-10T12:26:52.672735+00:00", + "exitCode": 0, + "logSha256": "a3e442c48171d1f76063ba47529e1627f3d8fe35ecb2c459a87d540c2a31f5d6", + "expectedPassed": 3 + }, + { + "name": "offline-evaluation-tests", + "command": [ + "rtk", + "proxy", + "C:/Users/Connor/.cache/codex-runtimes/codex-primary-runtime/dependencies/python/python.exe", + "-X", + "utf8", + "scripts/test-ollama-evaluation.py" + ], + "startedUtc": "2026-10-10T12:26:52.673744+00:00", + "finishedUtc": "2026-10-10T12:26:53.076550+00:00", + "exitCode": 0, + "logSha256": "a089fd0e44422432a768e7ae7fcbdb03c49555562d98d8f7a6790dddb0eeeeb1", + "expectedPassed": 5 + }, + { + "name": "extension-tests", + "command": [ + "rtk", + "proxy", + "node", + "--test", + "browser-extension/tests/capture-url.test.mjs" + ], + "startedUtc": "2026-10-10T12:26:53.082062+00:00", + "finishedUtc": "2026-10-10T12:26:53.303846+00:00", + "exitCode": 0, + "logSha256": "d86b091e90da09d19ec4c9ca012e0475d3101e6dcb2a0e41d893a2790ad73f55", + "expectedPassed": 3 + } + ], + "offlineHelpers": { + "configuration-tests": { + "passed": 3, + "failed": 0, + "log": { + "path": ".artifacts/p5-15-01R-03/backend/full/configuration-tests.log", + "sha256": "c5263087107d51c68fc076fc619de0d5ba1a155e135c93c4c18f76bce6a4d081" + } + }, + "supply-chain-tests": { + "passed": 3, + "failed": 0, + "log": { + "path": ".artifacts/p5-15-01R-03/backend/full/supply-chain-tests.log", + "sha256": "a3e442c48171d1f76063ba47529e1627f3d8fe35ecb2c459a87d540c2a31f5d6" + } + }, + "offline-evaluation-tests": { + "passed": 5, + "failed": 0, + "log": { + "path": ".artifacts/p5-15-01R-03/backend/full/offline-evaluation-tests.log", + "sha256": "a089fd0e44422432a768e7ae7fcbdb03c49555562d98d8f7a6790dddb0eeeeb1" + } + }, + "extension-tests": { + "passed": 3, + "failed": 0, + "log": { + "path": ".artifacts/p5-15-01R-03/backend/full/extension-tests.log", + "sha256": "d86b091e90da09d19ec4c9ca012e0475d3101e6dcb2a0e41d893a2790ad73f55" + } + } + }, + "sidecar": { + "passed": 49, + "result": { + "path": ".artifacts/p5-15-01R-03/backend/full/helpers/sidecar.xml", + "sha256": "c47b37d1a85e4663cea69f91881fbf19925d9b5a2ced83e6afb4c90e25f4286b" + } + }, + "frontend": { + "passed": 490, + "failed": 0, + "total": 490, + "suites": 82, + "addedCases": 18, + "commands": [ + { + "name": "frontend-full", + "command": [ + "rtk", + "proxy", + "npm.cmd", + "test", + "--", + "--runInBand", + "--watchAll=false", + "--json", + "--outputFile=../.artifacts/p5-15-01R-03/frontend/jest.json" + ], + "startedUtc": "2026-10-10T12:26:12.177187+00:00", + "finishedUtc": "2026-10-10T12:29:17.984236+00:00", + "exitCode": 0 + }, + { + "name": "app-typescript", + "command": [ + "rtk", + "proxy", + "npm.cmd", + "run", + "typecheck" + ], + "startedUtc": "2026-10-10T12:25:00.878037+00:00", + "finishedUtc": "2026-10-10T12:25:11.216023+00:00", + "exitCode": 0 + }, + { + "name": "frontend-lint", + "command": [ + "rtk", + "proxy", + "npm.cmd", + "run", + "lint" + ], + "startedUtc": "2026-10-10T12:25:11.216528+00:00", + "finishedUtc": "2026-10-10T12:25:27.656112+00:00", + "exitCode": 0 + }, + { + "name": "frontend-production-build", + "command": [ + "rtk", + "proxy", + "npm.cmd", + "run", + "build" + ], + "startedUtc": "2026-10-10T12:25:27.657154+00:00", + "finishedUtc": "2026-10-10T12:25:40.871096+00:00", + "exitCode": 0 + } + ] + }, + "ordinaryBrowser": { + "passed": 134, + "failed": 0, + "total": 134, + "inheritedPassing": 117, + "categories": { + "audit": { + "passed": 5, + "failed": 0, + "cases": [ + "[P5-15-01 E02 E07 A01] all 32 routes retain native entry, refresh and anonymous permissions", + "[P5-15-01 E02 E07 A01] all 32 routes retain native entry, refresh and normal permissions", + "[P5-15-01 E02 E07 A01] all 32 routes retain native entry, refresh and admin permissions", + "[P5-15-01 W01 C07 A01] foreign and missing workspace deep links deny data through entry and refresh", + "[P5-15-01 J05 J07] a finite 250-job Board preserves the complete matching Table population" + ] + }, + "savedSearchRepair": { + "passed": 3, + "failed": 0, + "cases": [ + "[P5-15-01R-01] native saved NAV search survives Jobs navigation, reload, apply, pause/resume and delete", + "[P5-15-01R-01] native owner filters and crafted saved-search mutations deny foreign and anonymous access", + "[P5-15-01R-01] saved-list faults retry a native GET without resetting discovery across EN/Bokmål, themes and widths" + ] + }, + "rulesRepair": { + "passed": 4, + "failed": 0, + "cases": [ + "[P5-15-01R-02 PRES-S03 W11] unsaved Rules draft survives an internal tab round trip without saving", + "[P5-15-01R-02] native Rules save, validation, failure/retry and discard across themes/locales/viewports", + "[P5-15-01R-02] delayed native Rules reads and save completion do not reset a newer session draft", + "[P5-15-01R-02 PRES-E09] Rules API ignores forged owners and account switching disposes the previous draft" + ] + }, + "analyticsAuthRepair": { + "passed": 5, + "failed": 0, + "cases": [ + "[P5-15-01R-03 AUTH-01] native sign-in restores the non-default Analytics period", + "[P5-15-01R-03] Analytics encoded period, fragment and existing defaults survive native sign-in across locales/themes", + "[P5-15-01R-03] failed local sign-in preserves the destination; default, history, refresh and authenticated links stay correct", + "[P5-15-01R-03] expired browser cookie retains the report return path; deliberate logout clears it", + "[P5-15-01R-03 PRES-E09] another protected section keeps its destination without bypassing ownership or unsafe-target validation" + ] + } + }, + "addedCases": 5, + "previousOrdinaryFailureNowPassing": "AUTH-01", + "skipped": 0, + "expectedFailures": 0, + "stats": { + "startTime": "2026-10-10T12:31:26.454Z", + "duration": 1376926.967, + "expected": 134, + "skipped": 0, + "unexpected": 0, + "flaky": 0 + } + }, + "diagnostics": { + "passed": 2, + "failed": 0, + "total": 2, + "rulesDraft": { + "original": 14, + "draft": 5, + "visibleDraft": "5", + "persisted": 14, + "ruleWrites": 0, + "readbackStatus": 200 + }, + "stats": { + "startTime": "2026-10-10T12:55:04.134Z", + "duration": 12884.249, + "expected": 2, + "skipped": 0, + "unexpected": 0, + "flaky": 0 + } + }, + "P2D01": { + "status": "Ordinary passing native regression, not an expected failure.", + "proof": { + "packageId": 5, + "version": 1, + "cvVariantId": 81, + "cvVariantVersion": 1, + "attachment": { + "name": "evidence.txt", + "sha256": "4a89d7c5a8430781d00cb8a09550fe69c5dac43f571a8a83843347a5d69d9366", + "bytes": 31 + }, + "immutableReadback": true, + "canonicalAndVariantAndLetterAndAnswerMutated": true, + "liveAttachmentDeleted": true, + "siblingUnchanged": true, + "detachPreservedVariant": true + } + }, + "securityHttp": { + "http": { + "startTime": "2026-10-10T12:54:24.792Z", + "duration": 13337.530999999999, + "expected": 2, + "skipped": 0, + "unexpected": 0, + "flaky": 0 + }, + "rate-limit": { + "startTime": "2026-10-10T12:54:38.677Z", + "duration": 9878.394, + "expected": 9, + "skipped": 0, + "unexpected": 0, + "flaky": 0 + }, + "ingress": { + "startTime": "2026-10-10T12:54:49.109Z", + "duration": 6285.59, + "expected": 6, + "skipped": 0, + "unexpected": 0, + "flaky": 0 + }, + "pdf-admission": { + "startTime": "2026-10-10T12:54:55.964Z", + "duration": 7623.555, + "expected": 1, + "skipped": 0, + "unexpected": 0, + "flaky": 0 + } + }, + "fidelity": { + "fidelity": { + "passed": 16, + "total": 16, + "previewPages": 36, + "pdfPages": 36, + "tolerances": { + "pageDimensionMm": 0.5, + "positionMm": 2, + "fontPt": 0.5, + "rgbComponent": 0.00392156862745098, + "pageCountAndMembership": "exact" + }, + "measurements": { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/measurements.json", + "sha256": "17e2f7dccf052f364b1797ebd75894c8f172586ebb5474e349e9fb5f4a602687" + }, + "results": { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/fidelity-results.json", + "sha256": "98abd84d63708f1c632e29c8b8d37e1083811979365162ffea2e4e1bf48ea373" + }, + "nativeFiles": [ + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/default-modern/render.html", + "sha256": "8e768156c7ffd4ad8dae6914a6a57baa5114668dc53a861f3925e0be8cffb8aa" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/default-modern/export.pdf", + "sha256": "c459bba6cf607fcd055912a14659c96bac2ce1166833a64db6693a6793f9dc61" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/default-minimal/render.html", + "sha256": "26bd74195f0f5ed917751ec5aeb0321ef156f93f105e889cea3fa67b2952bb1c" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/default-minimal/export.pdf", + "sha256": "b3197d39c8b9c441d78fb98b830dbc9fdb4d07def3de2fd517ade6a717e58619" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/default-executive/render.html", + "sha256": "d57da767c7c6cf446fe351fd381d33b95b555423db21feb84c9c1346775d8c48" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/default-executive/export.pdf", + "sha256": "9f7f8e791e1f097256cd5673f2c94cac91dac0aa9d1cddc0aceac3b6adb19797" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/default-technical/render.html", + "sha256": "681554ff60e68efa848e0a9e0ea6c2776526ea6a2017a05952ef724b08fc9e95" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/default-technical/export.pdf", + "sha256": "c52e82002e0f210b116cd083b10844cafbda65d698c984ef2ec1a07f5936b56c" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/default-ats-classic/render.html", + "sha256": "f290eeef533983ea8a46c536e9747c0d88ee2cb7275f94366561c89645dc947b" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/default-ats-classic/export.pdf", + "sha256": "0842b72c7ff45b6822f9e51a623b227f1a680ccb0a444a23590a2e1820841487" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/default-nordic/render.html", + "sha256": "361c0d55d3596a6e56d03b02bdecd9c9dbf6b48b7cb0a4add7d75382ca3e2958" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/default-nordic/export.pdf", + "sha256": "ddec6e6cca4ad20c3b041c5e0e448b7693d898d6db3f2b746ee956e4492c41f6" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/default-elegant/render.html", + "sha256": "816163e97d55be1fd726228fad0f7da471c707ca7879f0fbb036a1324dbdea47" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/default-elegant/export.pdf", + "sha256": "aa952cc2e8a228669fa157ebde90ecee627f3e7736a227c93f961056a2c9c048" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/default-creative/render.html", + "sha256": "1cd723eb101ac3d06f87b4c2f8fa28e53252075a0f3ff5aa6002d6f6c2be6799" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/default-creative/export.pdf", + "sha256": "5c3e45c8b1946498e9d728803b2140db8169c121967bec086a0d32bf9ed87616" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/default-code/render.html", + "sha256": "579dbd0e1c14afdee09f29f652e7742f5082c22e2de5f7c7ed06b954a2568d35" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/default-code/export.pdf", + "sha256": "4ae136bc0b4e87e2e779bab6d040661a1ae976fbc769e7edef2e91806d41e784" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/long-en-minimal/render.html", + "sha256": "2506bfc9473a1096e29f643b6d2958ff941e226e91ee67b7f05323dd28646a6a" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/long-en-minimal/export.pdf", + "sha256": "e43cdc503fcf65f9aaee8254a390791764d86e378332adc0d4613016be82f14e" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/long-nb-code/render.html", + "sha256": "48bcca5d8713960e7543d4f150bf1c7cc96e7227d9b04b69ed063241dbbc68df" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/long-nb-code/export.pdf", + "sha256": "5025b72665babfaa3d5190a049d5bee3db5d1cf68e762f26ff1ae48b636c9228" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/compact-8mm-letter/render.html", + "sha256": "515fbd6d8e0d031d86fa4cf08dc71c8c508fb84ea385aa19116f6cf13c9c7567" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/compact-8mm-letter/export.pdf", + "sha256": "9b379a8a04248c4aeaf8bc16352f231363782128772140592555b1bf8bd28daa" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/roomy-28mm-nb/render.html", + "sha256": "cc0052318c874c2600ea0c137bd377411c0f6cd1c0115c1ed65c0d1173a3f1b9" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/roomy-28mm-nb/export.pdf", + "sha256": "009134872250010a43740fea0c8cc7c658e8744870d709fe3edb3dcf2aa16550" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/grid-and-bubbles/render.html", + "sha256": "1e5fc270a8ecf02a6e6bd7ac7b0d1d50c9f15baa00fb4c37a39b7ab3c141de37" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/grid-and-bubbles/export.pdf", + "sha256": "78661b015b9c975cdcbab8499cdc9421a2bbe3136247e1db9ef88e74ea930c04" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/long-sidebar-nb/render.html", + "sha256": "823db293254304db0d8ca2a9bf249af6dd343de959d4a965e741ae4cde633590" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/long-sidebar-nb/export.pdf", + "sha256": "a888088faa42a232d84dc552e570d00816807a45176062b1e7693d34143aa776" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/unbreakable-and-boundary/render.html", + "sha256": "3faf425eb9ecf0be7e5294b5f60859133f24276df9a9d6ed2e569c3cd7069978" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity/unbreakable-and-boundary/export.pdf", + "sha256": "ba2cb908b4ddeb84ef3e747cd0da37e5d70a50227259e2d90619784d62285d3e" + } + ] + }, + "settings-fidelity": { + "passed": 8, + "total": 8, + "previewPages": 24, + "pdfPages": 24, + "tolerances": { + "pageDimensionMm": 0.5, + "positionMm": 2, + "fontPt": 0.5, + "rgbComponent": 0.00392156862745098, + "pageCountAndMembership": "exact" + }, + "measurements": { + "path": ".artifacts/p5-15-01R-03/browser/settings-fidelity/measurements.json", + "sha256": "44179e0f4fff031bccde30269877731abd834853dfc83f689af73d2b0bcc5556" + }, + "results": { + "path": ".artifacts/p5-15-01R-03/browser/settings-fidelity/fidelity-results.json", + "sha256": "baf25ba3f32119734b6aacf541648df6d74474274346b7f8d5db256cd0bdbcd9" + }, + "nativeFiles": [ + { + "path": ".artifacts/p5-15-01R-03/browser/settings-fidelity/dark-en-before/render.html", + "sha256": "846199be1b9e432aa9acfc0836a258e7e349a59f7ae2f199284e276c2a94f159" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/settings-fidelity/dark-en-before/export.pdf", + "sha256": "c6899b9ea863b41f4241afa46f68eac5d0240736a850b251a0d1de28e60a2d46" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/settings-fidelity/dark-en-after/render.html", + "sha256": "fc201751536f5f853fafafffe8d3ab6d6801a54fd561f2325b984044b292ae3c" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/settings-fidelity/dark-en-after/export.pdf", + "sha256": "8f454c7d258b1e86487d3e82db01c76c6a0cf933732a2701abe9bc6f6e830f76" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/settings-fidelity/dark-nb-before/render.html", + "sha256": "b5972b49c6b2d19f22af90b1ab72088aac0548e068695f301764f24ca1b362e2" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/settings-fidelity/dark-nb-before/export.pdf", + "sha256": "f9ec8b0dc44fd96ff904e72ef4e14f367dfdde8e4e06f7bc57591971f156d26c" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/settings-fidelity/dark-nb-after/render.html", + "sha256": "6922fe87ff0a6bcd83500fbb12bccd1d6091f35486aa39a8fc6b9c358817e64d" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/settings-fidelity/dark-nb-after/export.pdf", + "sha256": "7568d7b52ce5a472c5bc64b720a046bb4e5c80942f4016007addae0899f77859" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/settings-fidelity/light-en-before/render.html", + "sha256": "846199be1b9e432aa9acfc0836a258e7e349a59f7ae2f199284e276c2a94f159" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/settings-fidelity/light-en-before/export.pdf", + "sha256": "f05036b5d866504b51368ad24b559828e1c0e853919b93c5e2d524c37d17b40c" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/settings-fidelity/light-en-after/render.html", + "sha256": "fc201751536f5f853fafafffe8d3ab6d6801a54fd561f2325b984044b292ae3c" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/settings-fidelity/light-en-after/export.pdf", + "sha256": "df86207ba2e0a1798abab0c1f0c5e4aadfaf20a5fa5c6ebe3e5927a4d7d26328" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/settings-fidelity/light-nb-before/render.html", + "sha256": "b5972b49c6b2d19f22af90b1ab72088aac0548e068695f301764f24ca1b362e2" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/settings-fidelity/light-nb-before/export.pdf", + "sha256": "109964787ea1a0dba340f74f68a701c62154c2064d6e7299be331df9c9c97037" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/settings-fidelity/light-nb-after/render.html", + "sha256": "6922fe87ff0a6bcd83500fbb12bccd1d6091f35486aa39a8fc6b9c358817e64d" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/settings-fidelity/light-nb-after/export.pdf", + "sha256": "6ba8a5186591ddc0e291edccdd42dcd1853e0b0e02794f96dcd827fd76764eb0" + } + ] + } + }, + "axe": { + "counts": { + "scans": 267, + "violationEntries": 0, + "incompleteNodeOccurrences": 2041 + }, + "incompleteRules": { + "color-contrast": 1769, + "aria-hidden-focus": 41, + "aria-prohibited-attr": 209, + "aria-valid-attr-value": 18, + "th-has-data-cells": 4 + }, + "acceptance": "Automated only; incompletes remain open for manual classification, not full accessibility acceptance." + }, + "focusedResultsAreSubsets": [ + "5 native Analytics/auth cases are included in134 ordinary browser cases.", + "1 original AUTH-01 GREEN rerun is included in134 ordinary browser cases.", + "108 focused AI and5 revision cases are subsets of1,033 backend cases." + ], + "routes": { + "patterns": 32, + "original": 31, + "analyticsAdded": 1, + "selectedReads": 98, + "failed500Reads": 0, + "loginQueryFailureRemains": false + }, + "preservationRecommendation": { + "PASS": 0, + "PARTIAL": 56, + "FAIL": 0, + "DEFERRED": 1, + "BLOCKED": 0, + "NOT VERIFIED": 0, + "total": 57, + "scope": "AUTH-01 scoped repair supports E02 FAIL toPARTIAL; final documentation matrix reconciliation remains a separate root check." + }, + "rawEvidence": [ + { + "path": ".artifacts/p5-15-01R-03/browser/commands.json", + "sha256": "fe3660012804835354b8a6730ebddd7cea46685976c25b024921e9a4d2afaa16" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/fidelity-commands.json", + "sha256": "dca18caa5e0d8255204a11d1bc4bb99eac19cb0e11c5bc563c28f76813c2d4ad" + }, + { + "path": ".artifacts/p5-15-01R-03/frontend/summary.json", + "sha256": "bf631f08e87ed6f5d601ec4042bffc8633f94a6375a4b9610851d98a6ea5d63b" + }, + { + "path": ".artifacts/p5-15-01R-03/frontend/jest.json", + "sha256": "d617af6990373f86dbbbf559672b10841073afd5b40ad81fbcbbf44b42c86d87" + }, + { + "path": ".artifacts/p5-15-01R-03/frontend/case-loop-red-command.json", + "sha256": "af95254f42b15b14efbbd092694d3f440c9877bb0fcdaec5dfc2c387f4285fc8" + }, + { + "path": ".artifacts/p5-15-01R-03/backend/full/summary.json", + "sha256": "c00b6d5e763b97789f2d337ca3992e23aa8195d641e000f4bd83998742c73bc8" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/auth-original-red.json", + "sha256": "19c33361fecea68fbec97e47e754c36e3efe9ac62dbe284e6722775d3bb42172" + }, + { + "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" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/main.json", + "sha256": "fdf09ffb0e2e92dff823b72beaabaa2242831cec84e9cd018c1c63a6f07bdc10" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/diagnostics.json", + "sha256": "e9868fa2989e5eb5edac1d7b25861fc213620711e73baf9259dedbd9eaf019c6" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/http.json", + "sha256": "d6da7242b19190c0b3c6ebeb4d4a779a87626f07b3885a4b92104535ab16cbee" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/rate-limit.json", + "sha256": "ab9ce293c034f8a5ae5498f8b33d83d18956b3ee72e88b5c60b0be9c967d3a62" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/ingress.json", + "sha256": "489589b4602efd5a1e2446ffdcdf5853245b7bf3882327f01c93cb59cc7d8910" + }, + { + "path": ".artifacts/p5-15-01R-03/browser/pdf-admission.json", + "sha256": "d15105d80450b3bf760fcdd01ffd7009b462aa8f22684c58d22e9e033bd25046" + }, + { + "path": ".artifacts/p5-15-01R-03/backend/full/backend-full.trx", + "sha256": "0bf5b18a853c30b4754b0a7c4a13f2935ffc56ec1e98318334c0b1b533d25d03" + }, + { + "path": ".artifacts/p5-15-01R-03/backend/full/cv-revision.trx", + "sha256": "633f56fb9f124e3e3b31210ac0d2f928859cb35af9e5be8613d6e084a6893dff" + }, + { + "path": ".artifacts/p5-15-01R-03/backend/full/focused-ai.trx", + "sha256": "9e2fc175b6153c91188dd10e30d27ea268fea22518f7920e35f738be7c1e38dd" + }, + { + "path": ".artifacts/p5-15-01R-03/backend/full/api-release-build.log", + "sha256": "85fa83d41f509f7d022515a7aadd911f04225a5e9526700218c64be81553a1e2" + }, + { + "path": ".artifacts/p5-15-01R-03/backend/full/backend-full.log", + "sha256": "690c72a01cce0dc7337bf9817e1ac276e3094e9aa510060d3e476c0abaf53752" + }, + { + "path": ".artifacts/p5-15-01R-03/backend/full/backend-test-project-release-build.log", + "sha256": "9a7d9db3199f8a68aded902957925df70b032a1b189d9ebba335cf1bc5282d03" + }, + { + "path": ".artifacts/p5-15-01R-03/backend/full/cv-revision.log", + "sha256": "bdf5c64a01e584464905b291e63eb9a5dfd5571eb4bf7b99dd2741e1c850a171" + }, + { + "path": ".artifacts/p5-15-01R-03/backend/full/focused-ai.log", + "sha256": "f205505531ee0c9d192219275d4778451f0623505ac3fefd72192468e8ce9681" + }, + { + "path": ".artifacts/p5-15-01R-03/backend/full/sidecar.log", + "sha256": "a9c69b640adc4a855a0c26a8ed59c70b7c66bf85aacdf3644d723dffb885b34a" + }, + { + "path": ".artifacts/p5-15-01R-03/backend/full/configuration-tests.log", + "sha256": "c5263087107d51c68fc076fc619de0d5ba1a155e135c93c4c18f76bce6a4d081" + }, + { + "path": ".artifacts/p5-15-01R-03/backend/full/supply-chain-tests.log", + "sha256": "a3e442c48171d1f76063ba47529e1627f3d8fe35ecb2c459a87d540c2a31f5d6" + }, + { + "path": ".artifacts/p5-15-01R-03/backend/full/offline-evaluation-tests.log", + "sha256": "a089fd0e44422432a768e7ae7fcbdb03c49555562d98d8f7a6790dddb0eeeeb1" + }, + { + "path": ".artifacts/p5-15-01R-03/backend/full/extension-tests.log", + "sha256": "d86b091e90da09d19ec4c9ca012e0475d3101e6dcb2a0e41d893a2790ad73f55" + } + ], + "browserCommandHistory": [ + { + "name": "auth-original-red", + "command": [ + "rtk", + "proxy", + "node", + "node_modules/@playwright/test/cli.js", + "test", + "e2e/functional-acceptance.spec.ts", + "--grep", + "anonymous permissions", + "--retries=0", + "--reporter=list,json", + "--output=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p5-15-01R-03\\browser\\auth-original-red-results" + ], + "startedUtc": "2026-10-10T12:16:17.208370+00:00", + "finishedUtc": "2026-10-10T12:16:59.512080+00:00", + "exitCode": 1, + "stats": { + "startTime": "2026-10-10T12:16:17.843Z", + "duration": 41636.266, + "expected": 0, + "skipped": 0, + "unexpected": 1, + "flaky": 0 + } + }, + { + "name": "auth-focused", + "command": [ + "rtk", + "proxy", + "node", + "node_modules/@playwright/test/cli.js", + "test", + "e2e/analytics-auth-repair.spec.ts", + "--retries=0", + "--reporter=list,json", + "--output=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p5-15-01R-03\\browser\\auth-focused-results" + ], + "startedUtc": "2026-10-10T12:26:12.432258+00:00", + "finishedUtc": "2026-10-10T12:26:43.817528+00:00", + "exitCode": 1, + "stats": { + "startTime": "2026-10-10T12:26:12.986Z", + "duration": 30801.587, + "expected": 4, + "skipped": 0, + "unexpected": 1, + "flaky": 0 + } + }, + { + "name": "auth-original-green", + "command": [ + "rtk", + "proxy", + "node", + "node_modules/@playwright/test/cli.js", + "test", + "e2e/functional-acceptance.spec.ts", + "--grep", + "anonymous permissions", + "--retries=0", + "--reporter=list,json", + "--output=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p5-15-01R-03\\browser\\auth-original-green-results" + ], + "startedUtc": "2026-10-10T12:26:43.818527+00:00", + "finishedUtc": "2026-10-10T12:27:20.861644+00:00", + "exitCode": 0, + "stats": { + "startTime": "2026-10-10T12:26:44.366Z", + "duration": 36464.388, + "expected": 1, + "skipped": 0, + "unexpected": 0, + "flaky": 0 + } + }, + { + "name": "auth-focused", + "command": [ + "rtk", + "proxy", + "node", + "node_modules/@playwright/test/cli.js", + "test", + "e2e/analytics-auth-repair.spec.ts", + "--retries=0", + "--reporter=list,json", + "--output=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p5-15-01R-03\\browser\\auth-focused-results" + ], + "startedUtc": "2026-10-10T12:27:50.578985+00:00", + "finishedUtc": "2026-10-10T12:28:19.588415+00:00", + "exitCode": 0, + "stats": { + "startTime": "2026-10-10T12:27:51.075Z", + "duration": 28486.097, + "expected": 5, + "skipped": 0, + "unexpected": 0, + "flaky": 0 + } + }, + { + "name": "main", + "command": [ + "rtk", + "proxy", + "node", + "node_modules/@playwright/test/cli.js", + "test", + "--retries=0", + "--reporter=list,json", + "--output=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p5-15-01R-03\\browser\\main-results" + ], + "startedUtc": "2026-10-10T12:31:25.952095+00:00", + "finishedUtc": "2026-10-10T12:54:24.241757+00:00", + "exitCode": 0, + "stats": { + "startTime": "2026-10-10T12:31:26.454Z", + "duration": 1376926.967, + "expected": 134, + "skipped": 0, + "unexpected": 0, + "flaky": 0 + } + }, + { + "name": "http", + "command": [ + "rtk", + "proxy", + "node", + "node_modules/@playwright/test/cli.js", + "test", + "--config=playwright.cv-ai.config.ts", + "--retries=0", + "--reporter=list,json", + "--output=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p5-15-01R-03\\browser\\http-results" + ], + "startedUtc": "2026-10-10T12:54:24.260939+00:00", + "finishedUtc": "2026-10-10T12:54:38.159739+00:00", + "exitCode": 0, + "stats": { + "startTime": "2026-10-10T12:54:24.792Z", + "duration": 13337.530999999999, + "expected": 2, + "skipped": 0, + "unexpected": 0, + "flaky": 0 + } + }, + { + "name": "rate-limit", + "command": [ + "rtk", + "proxy", + "node", + "node_modules/@playwright/test/cli.js", + "test", + "--config=playwright.rate-limits.config.ts", + "--retries=0", + "--reporter=list,json", + "--output=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p5-15-01R-03\\browser\\rate-limit-results" + ], + "startedUtc": "2026-10-10T12:54:38.160734+00:00", + "finishedUtc": "2026-10-10T12:54:48.587103+00:00", + "exitCode": 0, + "stats": { + "startTime": "2026-10-10T12:54:38.677Z", + "duration": 9878.394, + "expected": 9, + "skipped": 0, + "unexpected": 0, + "flaky": 0 + } + }, + { + "name": "ingress", + "command": [ + "rtk", + "proxy", + "node", + "node_modules/@playwright/test/cli.js", + "test", + "--config=playwright.ingress.config.ts", + "--retries=0", + "--reporter=list,json", + "--output=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p5-15-01R-03\\browser\\ingress-results" + ], + "startedUtc": "2026-10-10T12:54:48.588102+00:00", + "finishedUtc": "2026-10-10T12:54:55.433005+00:00", + "exitCode": 0, + "stats": { + "startTime": "2026-10-10T12:54:49.109Z", + "duration": 6285.59, + "expected": 6, + "skipped": 0, + "unexpected": 0, + "flaky": 0 + } + }, + { + "name": "pdf-admission", + "command": [ + "rtk", + "proxy", + "node", + "node_modules/@playwright/test/cli.js", + "test", + "--config=playwright.pdf.config.ts", + "--retries=0", + "--reporter=list,json", + "--output=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p5-15-01R-03\\browser\\pdf-admission-results" + ], + "startedUtc": "2026-10-10T12:54:55.434519+00:00", + "finishedUtc": "2026-10-10T12:55:03.627762+00:00", + "exitCode": 0, + "stats": { + "startTime": "2026-10-10T12:54:55.964Z", + "duration": 7623.555, + "expected": 1, + "skipped": 0, + "unexpected": 0, + "flaky": 0 + } + }, + { + "name": "diagnostics", + "command": [ + "rtk", + "proxy", + "node", + "node_modules/@playwright/test/cli.js", + "test", + "--config=../docs/redesign/phase-5/p5-15/p5-15-01/diagnostics/playwright.config.ts", + "--retries=0", + "--reporter=list,json", + "--output=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p5-15-01R-03\\browser\\diagnostics-results" + ], + "startedUtc": "2026-10-10T12:55:03.628764+00:00", + "finishedUtc": "2026-10-10T12:55:17.050139+00:00", + "exitCode": 0, + "stats": { + "startTime": "2026-10-10T12:55:04.134Z", + "duration": 12884.249, + "expected": 2, + "skipped": 0, + "unexpected": 0, + "flaky": 0 + } + } + ], + "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": {} + } + ], + "intermittentCvUnsaved": "OPEN; passing current suites do not establish cause or repair.", + "production": { + "decision": "NO-GO", + "branch": "main", + "expectedUnchangedRevision": "27657f31131cd95d42f0e1290853ec9c9b3959a4", + "verification": "Final Git/remote/repository hygiene is independently verified by root, not asserted by this collector." + }, + "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." + ] +} diff --git a/docs/roadmap/todo.md b/docs/roadmap/todo.md index e5ce521..836e49d 100644 --- a/docs/roadmap/todo.md +++ b/docs/roadmap/todo.md @@ -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.