docs(redesign): record Rules draft repair acceptance

This commit is contained in:
cesnimda
2026-10-09 19:35:07 +02:00
parent 30f513d0c9
commit 339e3ba591
28 changed files with 1406 additions and 90 deletions
@@ -1,10 +1,16 @@
# P5-15 preservation acceptance — 57 original groups
## Current P5-15-01R-01 reconciliation
## Current 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.
Current totals: **PASS0 / PARTIAL55 / FAIL1 / DEFERRED1 / BLOCKED0 / NOT VERIFIED0 =57**. E02 Analytics sign-in query loss remains FAIL; C11 remains approved DEFERRED/unqualified/Production-withheld. All original00/01/R-01 columns and failed observations remain historical. Fresh R-02 full ordinary browser128pass/1fail, diagnostics2/2, backend1,033/frontend472, security and unchanged native fidelity prove the named repair/regression scopes, not complete Phase5 acceptance. [Final evidence](p5-15-01/rules-draft-repair/evidence/validation.json). Production NO-GO and the stop before P5-15-02 remain unchanged.
## Historical P5-15-01R-01 reconciliation
The [bounded saved-search repair](p5-15-01/saved-search-repair/README.md) supersedes only DISCOVERY-01. Its native SQLite listing, persistence, owner denials and localized error/retry proof change **PRES-J02 from FAIL to PARTIAL**. Scheduler delivery, live providers and human/device checks remain unverified; no entire group is promoted to PASS.
Current totals: **PASS0 / PARTIAL54 / FAIL2 / DEFERRED1 / BLOCKED0 / NOT VERIFIED0 =57**. E02 (Analytics sign-in query loss) and S03 (unsaved Rules draft loss) remain FAIL. C11 remains approved DEFERRED/Production-withheld. Zero wholly NOT VERIFIED groups does not close the unverified sub-workflows in every PARTIAL row. The original00 and01 columns and failed audit evidence are preserved; the new successor column shows current status. Production remains NO-GO and P5-15-02 has not begun.
Totals at R-01: **PASS0 / PARTIAL54 / FAIL2 / DEFERRED1 / BLOCKED0 / NOT VERIFIED0 =57**. E02 (Analytics sign-in query loss) and S03 (unsaved Rules draft loss) remain FAIL. C11 remains approved DEFERRED/Production-withheld. Zero wholly NOT VERIFIED groups does not close the unverified sub-workflows in every PARTIAL row. The original00 and01 columns and failed audit evidence are preserved; the new successor column shows current status. Production remains NO-GO and P5-15-02 has not begun.
## Historical P5-15-01 reconciliation
@@ -33,65 +39,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 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) | 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) |**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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) | 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) |**Fresh01:** SETTINGS-01 unsaved tab-draft loss; [register](p5-15-01/DEFECTS.md). P4-04-O02 recorded SQLite notification saves had 2/10 HTTP 500/database-locked attempts; isolated rules 500 remains unconfirmed. P5-06-O01 language-preference 500 and rule drafts lost on tab unmount stay open; sequential success does not establish concurrency safety. | Settings/API/identity owner; H — investigate P4-04-O02 concurrent notification 500 and P5-06-O01 language-save 500; audit rule draft/tab lifecycle, unknown route/preferences. |
| **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) | 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) | 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) | 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) | 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) | 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 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. |
## Source disagreements resolved without closing acceptance
@@ -31,7 +31,7 @@ Owners below are responsible roles, not invented assignees. Each next checkpoint
| **RD10 production Linux/fonts/photos/print/other browsers — UNVERIFIED.** Local 16/16 standard (36=36 pages) and 8/8 settings (24=24) unchanged fidelity are finite. Photo/wrapped-line/template/font/native-print qualification remains open. | **B** for full affected CV acceptance; **A** for release environment font/data smoke | CV/rendering + release reviewer; isolated production-equivalent render checkpoint | Effective Linux/browser/fonts/image revisions; native preview/private/public PDF/photo/non-ASCII/long-line/template checks at unchanged tolerances and manual readability/print; supported alternate-browser/device evidence. Do not infer missing production fonts from local success or alter tolerances. |
| **RD11 P5-06-O01 language preference 500 — OPEN, root cause unproven.** Actual PUT `/api/auth/preferences/language` uses `UserManager.UpdateAsync`; source caller applies UI/localStorage first and swallows failed PUT. This can silently leave server preference stale; concurrent Dashboard reads accompany the historical 500, not a proved root cause. | **B** for reliable affected Settings/locale acceptance; **A** if reproduced on intended production provider/workflow; **D** only for independent presentation scope | Backend/identity + i18n owner; scoped reliability investigation before locale persistence acceptance | Reproduce overlapping native path on disposable intended provider with sanitized exception/status/correlation and before/after preference; verify failure feedback and recovery, successful readback/relogin, account isolation and regression. Fixture sequencing/204 on later saves does not close original 500 or swallowed failure. |
| **RD12 P4-04-O02 notification-setting contention — OPEN.** Native PUT `/api/notification-settings` through `UserManager.UpdateAsync` produced SQLite error 5/DB locked in **2/10**; readback retained old value. Settings currently retains draft and in-page error; sequential success is not a contention fix. | **B** for complete affected settings reliability; **A** if intended deployed provider reproduces; **D** for unchanged independent UI | Backend/identity owner; scoped concurrent API reproduction before more polling/writes | Trace exact locking/transaction/provider cause and bounded fix, concurrent success/failure/draft/retry/readback evidence on real disposable DB. Never treat GET 200 as PUT success or hide a 500 with generic retries. |
| **RD13 P2-O01 rules-save 500 — historical unconfirmed, still OPEN.** Rules GET can create per-user settings; PUT gets/creates then `SaveChangesAsync`. Creation-race catch/reload exists, but does not prove the historical failure cause. Save error is currently transient toast; draft remains. | **D** conditional reliability; **B** if recurrence/failure feedback prevents affected flow acceptance; **A** if deployed critical persistence fails | Backend/rules + Settings owner; scoped triage if recurring and M07 error acceptance | Retain trace/status/exception and native before/after rule values; investigate actual concurrent/create/save path. Prove accessible actionable error and deliberate successful recovery; do not equate this unproven cause with notification locking. |
| **RD13 P2-O01 rules-save 500 — historical unconfirmed, still OPEN.** Rules GET can create per-user settings; PUT gets/creates then `SaveChangesAsync`. Creation-race catch/reload exists, but does not prove the historical failure cause. R-02 provides persistent in-page save feedback, explicit retry/discard and internal draft retention; the historical server500 cause remains unknown/open. | **D** conditional reliability; **B** if recurrence/failure feedback prevents affected flow acceptance; **A** if deployed critical persistence fails | Backend/rules + Settings owner; scoped triage if recurring and M07 error acceptance | Retain trace/status/exception and native before/after rule values; investigate actual concurrent/create/save path. Prove accessible actionable error and deliberate successful recovery; do not equate this unproven cause with notification locking. |
| **RD14 command/dialog focus observations P5-04b-R01/P5-07-O01 — OPEN.** Command focus gained/lost around entry; attachment Shift+Tab failed while existing `onEntered` refocused Cancel. Unchanged focused reruns passed; transition race is not instrumented/proven. | **B** affected shared focus acceptance | Shared dialog/shell owner; targeted instrumented investigation plus M02/M05/M09 | Preserve failed observations; reproduce/instrument entry/exit focus ownership, keyboard trap and return under normal/reduced motion and AT, then bounded fix/retest if warranted. Rerun alone does not close it. |
| **RD15 P5-04b-R02 CV section expansion — cause unproven.** One unchanged full-run smoke failed before PDF; three unchanged focused runs passed. | **D** baseline investigation; **B** if recurring affected CV preservation failure | CV readiness owner; targeted expansion reproduction before broader CV acceptance | Actual event/focus/expanded-state trace and retained assertion, diagnosis or bounded reproduction-backed disposition. Keep original failure; do not mark fixed from later broad pass. |
| **RD16 P4-02-D02 company error outside modal — OPEN.** Failed save retains draft, but transient toast is outside modal's accessible subtree. P5-00 bottom feedback placement does not repair this. | **B** for full affected dialog acceptance; **D** for unrelated local P5 slices | Company form/Phase 7 owner; M07/M09 targeted accessibility checkpoint | Durable visible/spoken in-modal failure, retained draft, retry/recovery and focus/return evidence without disabling background isolation. No universal dialog pass while this counterexample remains. |
+11 -3
View File
@@ -1,8 +1,16 @@
# P5-15 — Phase 5 final acceptance
## P5-15-01R-01 — Current bounded saved-search successor
## P5-15-01R-02 — Current bounded Rules successor
[Saved-search repair and evidence](p5-15-01/saved-search-repair/README.md) resolves the native SQLite GET500 and hidden error. PRES-J02 moves FAIL→PARTIAL; current57 totals are **0PASS/54PARTIAL/2FAIL/1DEFERRED/0BLOCKED/0NOT VERIFIED**. The01 audit remains historical below. AUTH-01 Analytics query loss and SETTINGS-01 Rules draft loss stay open/failing; no automatic P2 repair or P5-15-02 progression is authorized. Production remains NO-GO; `main` is unchanged. P5-13 stays deferred/unqualified/Production-withheld with0/366calls,0human reviews and no review UI.
[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.
Completed repair commit `30f513d0c993800ec5d5583329ed65dc7ec9a8d4` is independently pushed. **R-02: GO for the bounded Rules repair.** Fresh backend1,033 / frontend472(+8) / ordinary browser128pass+1fail(+4cases) / standalone diagnostics2pass+0fail. All117inherited, four Rules and three saved-search repair browser cases pass; AUTH-01 remains the one ordinary failure. Sidecar49, focusedAI108, realHTTP2, revision5, standard fidelity16/16(36=36), settings exports8/8(24=24) and security/config9/6/1/3 pass. [Exact results and limits](p5-15-01/rules-draft-repair/README.md#fresh-validation-and-diagnostic-reconciliation) distinguish subsets and local proof. Full267axe scans have0reported violations and2,040incomplete node occurrences; human/device acceptance remains open. [Intermittent CV observation](p5-15-01/INTERMITTENT_FAILURES.md) remains OPEN despite fresh passing frontend/native runs. Final documentation/repository check evidence is retained with the repair.
**Production remains NO-GO; main unchanged. P5-15-02 is neither started nor cleared.** No Analytics, P5-13, Docker, B07 or deployment work. P5-13 remains deferred/unqualified/Production-withheld:0/366qualification calls,0human reviews, no review UI.
## Historical P5-15-01R-01 — Saved-search successor
[Saved-search repair and evidence](p5-15-01/saved-search-repair/README.md) resolves the native SQLite GET500 and hidden error. PRES-J02 moves FAIL→PARTIAL; totals at R-01 were **0PASS/54PARTIAL/2FAIL/1DEFERRED/0BLOCKED/0NOT VERIFIED**. The01 audit remains historical below. AUTH-01 Analytics query loss and SETTINGS-01 Rules draft loss remained open/failing at R-01; no automatic P2 repair or P5-15-02 progression was authorized. Production remains NO-GO; `main` is unchanged. P5-13 stays deferred/unqualified/Production-withheld with0/366calls,0human reviews and no review UI.
R-01 fresh results: **backend1,033 / frontend464 / ordinary browser124pass+1fail / separate diagnostics1pass+1fail**. All117 inherited browser cases pass; three new repair cases pass and the original normal/admin saved-search failures are resolved. Sidecar49, focusedAI108, realHTTP2, revision5, fidelity16/16(36=36), settings8/8(24=24) and security/config9/6/1/3 pass. Fresh251axe scans have0reported violations and**1,880incomplete node occurrences**; no human/device acceptance is implied. [Current evidence and limits](p5-15-01/saved-search-repair/README.md#fresh-validation-and-diagnostic-reconciliation) supersede only the named outcomes, not mandatory acceptance scope.
@@ -11,7 +19,7 @@ R-01 fresh results: **backend1,033 / frontend464 / ordinary browser124pass+1fail
**NO-GO for P5-15-02 under its current entry criteria; Production remains NO-GO. Phase5 is not complete.** Audit from `932b962b9038ddb5ad59b982c0199475bfb50454` on the development branch,2026-10-09. [Final01 report](p5-15-01/README.md), [all57 before/after results](p5-15-01/PRES_RESULTS.md), [32-route native census](p5-15-01/ROUTE_RESULTS.md), [journeys/control limits](p5-15-01/JOURNEYS_AND_CONTROLS.md) and [defects](p5-15-01/DEFECTS.md) supersede the **verification status**, not the original contracts or historical evidence, below.
Exact PRES totals at the01 audit: **0PASS /53PARTIAL /3FAIL /1DEFERRED /0BLOCKED /0NOT VERIFIED =57**. FAIL:E02 sign-in return query loss;J02 saved-search SQLite read500/silent empty list;S03 unsaved Rules draft loss on tab change. These were native failures at that checkpoint, not56 assumed defects or an assertion that the audit introduced them. The successor above supersedes J02 only. Other groups retain evidenced sub-behaviors plus explicit long-tail/human/provider gaps.
Exact PRES totals at the01 audit: **0PASS /53PARTIAL /3FAIL /1DEFERRED /0BLOCKED /0NOT VERIFIED =57**. FAIL:E02 sign-in return query loss;J02 saved-search SQLite read500/silent empty list;S03 unsaved Rules draft loss on tab change. These were native failures at that checkpoint, not56 assumed defects or an assertion that the audit introduced them. R-01 supersedes J02; R-02 supersedes S03 for its verified bounded scope. Other groups retain evidenced sub-behaviors plus explicit long-tail/human/provider gaps.
All32patterns reached expected entry/refresh states for three identities (**192observations**);188route observations satisfy all asserted conditions/4fail on Discover. Of98selected native GET observations,94meet expected statuses/4fail;94route observations have no selected GET. Broader route workflow disposition30PARTIAL/2FAIL includes Login query return. A route/header is not full workflow acceptance. P1 DISCOVERY-01 blocks dependent progression until a separately authorized, individually pushed owner repair/native regression. P2 AUTH-01/SETTINGS-01 need their own remediation dispositions. No repair is hidden in01.
@@ -1,6 +1,8 @@
# P5-15-01 functional defect register
**R-01 current 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 remain P2/OPEN; current reproduced open counts areP0=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.
**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.
**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.
Audit source `932b962b9038ddb5ad59b982c0199475bfb50454`. Findings use synthetic accounts and disposable local data; no production account, provider or infrastructure is exercised. An audit finding is not automatically a regression introduced by Phase 5. Application source is unchanged here; neither source inspection nor an InMemory pass can override a native failure.
@@ -45,7 +47,7 @@ P0 means serious security/data loss; P1 an important broken workflow; P2 limited
## P5-15-01-SETTINGS-01 — Unsaved Rules draft disappears on tab change
**Confirmed P2 / OPEN.** PRES-S03; `/settings` Follow-ups→Notifications→Follow-ups. The original preservation ledger already recorded this risk; native execution now establishes the failure. This is silent loss of an in-progress edit, not deletion or corruption of persisted rules.
**Confirmed P2 at audit / CLOSED by R-02 for the verified Settings-session draft/save/error scope.** PRES-S03; `/settings` Follow-ups→Notifications→Follow-ups. The original failed observation below remains historical. R-02 retains the single draft above the unmounting tabs and proves explicit Save/error/retry/discard/account behaviour; unknown backend500 causes and other Settings acceptance stay open. This was silent loss of an in-progress edit, not deletion or corruption of persisted rules.
| Field | Evidence-based finding |
|---|---|
@@ -66,7 +68,7 @@ The two standalone [preference diagnostics](diagnostics/README.md) assert intend
| Item | Current disposition / required action |
|---|---|
| Unsaved Rules draft on tab change | Confirmed P2 SETTINGS-01 above; native failure is not normalized into a pass |
| Unsaved Rules draft on tab change | Original native P2 SETTINGS-01 is retained historically; R-02 proves the scoped repair without closing unrelated persistence reliability |
| Language/notification preference writes | Three native overlap rounds succeeded, including six writes, twelve concurrent reads, persisted readback and reload. Historical language PUT500 and notification SQLite/concurrency failures remain open; **not reproduced in this bounded run** is not fixed. No cause for the historical language500 is established; overlapping Identity writes remain a hypothesis |
| Company modal failure feedback; command/attachment initial focus races | Earlier finite failure observations remain open. Current passing keyboard/modal fixtures do not prove the historical race or outside-modal feedback debt closed; P5-15-02 triage and 04 owner repair as needed |
| Board scaling and physical touch | Finite 250-ID parity is functional evidence only; full-result memory/request/DOM growth and real device drag remain unqualified. No arbitrary capacity threshold is invented |
@@ -76,4 +78,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**. Current open reproduced totals after R-01: **P0 0 / P1 0 / P2 2 / P3 0**. These are three distinct failures, not the same count as failing browser cases: normal/admin cases share DISCOVERY-01; AUTH-01 occupies the anonymous case; SETTINGS-01 is 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**; 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.
@@ -0,0 +1,9 @@
# P5-15-01 intermittent observations
## IF-CV-UNSAVED-01 — Preview exit “Unsaved” assertion
**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).
The unchanged case passed in isolation and an unchanged complete rerun passed464/464. Those later passes do not establish a cause or close the observation. [R-01 portable report/fingerprints](saved-search-repair/evidence/validation.json) retain `.artifacts/p5-15-01R-01/frontend-final/attempt1-jest.json`, `attempt1-command.json`, `cv-preview-diagnostic.json`, `jest.json` and `command.json`. The additional `attempt1-jest.log` remains a local diagnostic; it is not fingerprinted in that original portable manifest.
R-02's fresh complete frontend472/472 includes this unchanged case; its complete ordinary browser run is128pass/1unrelated Analytics failure, with all117inherited cases passing. No assertion, timeout, skip, retry or CV implementation is changed to obtain those results. [R-02 results](rules-draft-repair/evidence/validation.json) record those separate lanes; neither passing lane diagnoses this intermittent assertion. Ownership remains CV/test-reliability review at the appropriate acceptance checkpoint, if recurrence or targeted investigation justifies it. Preserve a failing trace and pending draft/focus state before any bounded fix; do not widen the Rules repair into a speculative CV change.
@@ -1,6 +1,8 @@
# P5-15-01 functional preservation results
**Successor R-01:** [saved-search repair](saved-search-repair/README.md) verifies the native SQLite/list feedback repair. J02 is now PARTIAL; current57 totals are54PARTIAL/2FAIL/1DEFERRED in the [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.
**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.
**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.
Audit source **`932b962b9038ddb5ad59b982c0199475bfb50454`**, branch `codex/ui-redesign-phase4`, 2026-10-09. This document compares every original protected capability with actual current API/owner, frontend reach action, read/write boundary, inspected tests and outstanding evidence. It is a functional evidence record; no application repair, provider/model call, production operation, Docker recovery or B07 work belongs to it.
@@ -1,6 +1,9 @@
# P5-15-01 — Functional and preservation audit
**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 parent matrix now records54PARTIAL/2FAIL/1DEFERRED; Analytics AUTH-01 and Rules SETTINGS-01 remain open ordinary failures. R-01 does not authorize P5-15-02 or production.
**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.
**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.
**NO-GO for proceeding to P5-15-02 under its current entry criteria. Production remains NO-GO. Phase 5 is not complete.** The P1 saved-search workflow fails on the supported local SQLite path. Two P2 context/draft failures also require separately scoped remediation. No application repair, new redesign, production access, `main` change, P5-13 qualification/UI, Docker recovery or B07 occurred.
@@ -1,28 +1,146 @@
# P5-15-01R-02 — Rules draft preservation
Source: `c8e32238ef628f34c6ae8f64c6cb40ca5d8c68ac`, development `codex/ui-redesign-phase4`. Production `main` remains unchanged/NO-GO. This checkpoint owns SETTINGS-01 only; Analytics, P5-13, P5-15-02, Docker and B07 are excluded.
Source: `c8e32238ef628f34c6ae8f64c6cb40ca5d8c68ac`; development `codex/ui-redesign-phase4`. This checkpoint repairs **P5-15-01-SETTINGS-01 only**. Production `main` remains unchanged at `27657f31131cd95d42f0e1290853ec9c9b3959a4` and **NO-GO**. No Analytics repair, saved-search application change, P5-15-02, P5-13, Docker, B07 or deployment.
## Demonstrated reproduction before implementation
**P5-15-01R-02: GO for the bounded Rules draft repair.** Native retention, explicit save/discard/validation/retry, reload and account checks pass; all final applicable suites below have fresh results. The full ordinary browser command still exits1 for the separately retained AUTH-01 Analytics query-state defect. This is not an all-green application acceptance or production GO.
The new ordinary browser regression uses a disposable authenticated SQLite application. Seed the existing six-field Rules configuration (Applied follow-up14); edit it to5; switch Follow-ups→Notifications→Follow-ups. The entered5 becomes14, the persisted value remains14, and zero Rules PUTs occur. The run fails on the actual visible value (`expected5, received14`), not a mocked server or missing selector. Raw trace/report: ignored `.artifacts/p5-15-01R-02/browser/rules-red.*`.
## Reproduction and demonstrated root cause
`SettingsView.TabPanel` returns null for inactive sections, unmounting `RulesSettingsCard`. The card's local `s` state is both its initially fetched data and edited draft. Returning creates a new card, performs a new GET and initializes from persisted14. This is destruction of editing-session state, not a backend write or deletion.
A disposable authenticated Development/SQLite application seeds the actual six-field Rules record with Applied follow-up14. Edit that field to5, change Follow-ups→Notifications→Follow-ups. Before implementation, the browser observes14 on return while the database remains14 and zero Rules PUTs occur. The ordinary regression fails on the visible value: expected5, received14. It is not a mocked persistence response or missing-selector failure. [Before/after native proof and fingerprints](evidence/rules-proof.json).
## Bounded repair contract
The former `SettingsView.TabPanel` returned null for inactive sections, unmounting `RulesSettingsCard`. Its component-local `s` held both fetched data and the unsaved draft. Returning mounted a new card, fetched persisted14 and replaced the destroyed draft. This is an editing-session ownership defect, not deletion/corruption of persisted rules. No evidence establishes which historical release introduced it.
- Move the single Rules draft, persisted baseline and load/save/error state into the existing Settings parent. Inactive forms may still unmount; no keep-all-tabs-mounted workaround, browser storage, cross-session draft or automatic save.
- Preserve the existing per-account six-field atomic GET/PUT contract: Applied, Offer and Feedback are separate scenarios within one configuration, not three separately saved records. PUT returns204; the API clamps integer day values to1–365 and has no revision/ETag contract.
- Internal tab/phone-section changes preserve pending fields/errors. Save submits one validated snapshot; failure retains it; later edits during a pending save must stay dirty. Explicit discard returns to the latest successful baseline without a write.
- Clearly communicate the in-memory Settings-session boundary. Existing authentication/session disposal remains authoritative; no global draft store or second identity boundary.
- Keep S03 and W11 traceability, E07/E08/E09 reachability/accessibility/account protection. Full-group acceptance requires other retained sub-workflows; this repair alone cannot grant PASS.
The new ordinary browser regression was committed/pushed **before application changes** as `5b5dcd0b80aa0713545ecf1fdab079fb9dec28ee`. Lower-level tests then reproduced the missing parent ownership/error/discard/race contract: a clean pre-fix Settings run had6passes/6failures. The old five tests and teardown case passed; six new desired-behaviour cases failed. The final Settings file now has13passing cases, including eight new cases over the inherited five:
## Checkpoint plan / current status
1. Preserve independent pending fields through tab unmounts, without PUT.
2. Retain failed-save draft/error through tabs and explicit retry.
3. Retain blank/out-of-range input and associated validation through tabs.
4. Explicit Discard resets to the saved baseline without PUT.
5. Pending save acknowledges5 while preserving newer dirty6.
6. Old instance completion cannot affect a new Settings session.
7. Changing UI language while Rules is hidden preserves its draft/no refetch.
8. Rules editing leaves unrelated notification preference loading unchanged.
- [x] Trace and reproduce the exact native draft loss.
- [x] Add the ordinary failing browser regression before application changes.
- [x] Repair and validate controlled draft/save/discard/error ownership.
- [x] Complete focused native/browser, localisation/responsive and account evidence.
- [ ] Run the fresh full baseline and reconcile ordinary failures/counts.
- [ ] Update acceptance/defect evidence, commit/push each completed unit and verify clean remote equality.
## Actual workflow and persistence contract
The reproducer was committed/pushed as `5b5dcd0b80aa0713545ecf1fdab079fb9dec28ee` before implementation. The bounded implementation now passes all four native SQLite browser journeys and all472 frontend tests (464+8 focused behavioural cases), TypeScript, lint and the production build. Backend1,033, focused AI108, revision5 and sidecar49 have fresh passing runs. The complete browser/security/document run is in progress; no final browser count or repair acceptance is claimed here. The original audit and R-01 evidence remain unchanged. Production NO-GO and all deferred qualification obligations remain open.
- Route `/settings`, Follow-ups tab or phone section selector. General, Follow-ups, Notifications and Backup are internal sections of the same Settings instance.
- Authenticated local-account `GET/PUT /api/rules`, owned `UserRuleSettings`, `RulesController`. The current user comes from authenticated context; client record IDs/forged owner fields do not choose another user's record.
- One atomic six-field configuration: `appliedFollowUpDays`, `appliedGhostDays`, `offerFollowUpDays`, `offerGhostDays`, `feedbackFollowUpDays`, `feedbackGhostDays`. Applied/Offer/Feedback are independent scenarios within one save, not three separately persisted rules.
- GET retrieves/initializes the owner's configuration. PUT returns204 and clamps integer day values to1–365. The unchanged API has **no revision/ETag or multi-client write-conflict contract**.
- Persisted baseline, unsaved session draft, pending save, validation/save errors, successfully acknowledged snapshot and explicitly discarded values remain distinct.
- Internal section navigation retains the draft. **Leaving Settings ends its in-memory session and discards unsaved changes**, deliberately stated in the visible localized scope notice. No new cross-session recovery, automatic saving or browser storage is introduced.
## Smallest responsible repair
| File/component | Change and reason |
|---|---|
| [SettingsView](../../../../../../job-tracker-ui/src/components/SettingsView.tsx) | Owns one Rules draft/baseline/load/save/error state above the existing unmounting panels; both tabs and phone selector use the same entry action. A single pending load is retained across transitions; loaded drafts are not refetched/reinitialized on tab return or locale change |
| [RulesSettingsCard](../../../../../../job-tracker-ui/src/components/RulesSettingsCard.tsx) | Controlled six-field form; retains existing labels/layout; explicit Save, bounded Discard, associated validation and durable localized load/save feedback. No API call or second local draft |
| [Translations](../../../../../../job-tracker-ui/src/i18n/translations.ts) | Three concise EN/Bokmål strings for successful save, integer day validation and the Settings-session draft boundary; existing Save/Discard/error labels reused |
| [Settings regressions](../../../../../../job-tracker-ui/src/settings-view.test.tsx) | Eight behavioural cases added; original five retained |
| [Native browser regressions](../../../../../../job-tracker-ui/e2e/rules-draft-repair.spec.ts) | Four ordinary cases using actual SQLite persistence/account APIs; no CSS class assertions, expected failures, skipped tests or live providers |
Only three application-code files change. Settings is the shared owner; Rules is its sole form caller; translations are required for user-visible behaviour. No unrelated application file, backend, model, migration, API contract, dependency, renderer or deployment configuration changes.
Save validates all six strings as required whole numbers1–365 before PUT. This preserves blank/out-of-range input for correction rather than silently converting it to0/default or accepting the server clamp as successful input. Per-field helper text is associated with the input. Save submits a captured snapshot and acknowledges only that snapshot; if the user edits5→6 while5 is saving, completion records persisted5 while preserving dirty6. One pending submission is enforced. Discard returns to the last acknowledged baseline and writes nothing; it is disabled while a save is pending.
Failed save leaves all pending values and dirty state available, shows a durable in-page error, and permits explicit Save retry. No stack trace/provider text is exposed and no success is announced for failure. Invalid input/errors survive section changes. Existing authenticated-session invalidation and app/provider disposal remain authoritative; async completions from an unmounted Settings instance cannot set state/toast in a new instance. No second concurrency or identity system is added.
## Behavioural evidence
| Journey | Fresh observed result |
|---|---|
| Original edit→tab→return | **PASS:**14→5→return5; persisted14; zero PUTs, proving retention is not autosave |
| All six fields / repeated internal switches | **PASS:**5/40/9/20/11/25 retained through two round trips in each of four variants; no cross-scenario draft substitution |
| Validation / internal return | **PASS:**blank Applied and Offer366 retained with named associated errors; zero PUTs; correction permits normal save |
| Save failure / retry | **PASS:**declared one-shot synthetic PUT500 retains draft/error across tabs; next real SQLite PUT204 persists all six values; dirty clears only after acknowledgement |
| Successful save / reload | **PASS:**native GET and browser reload show the acknowledged values; all scenarios remain distinct |
| Explicit discard | **PASS:**new Applied6/Offer10 returns to persisted5/9; no data mutation or implicit save |
| Delayed loading | **PASS:**one held real GET across repeated transitions; loading is named; release initializes once, not over a newer draft |
| Pending save / newer edit | **PASS:**submitted5, newer draft6, returned204, persisted5, dirty6; Discard restores5 |
| Leave Settings / re-enter | **PASS:**visible session warning; unsaved8 discarded deliberately; re-entry retrieves persisted5 |
| Account switch / crafted owner / anonymous | **PASS:**A persisted14/draft9; B forged owner/ID request updates only B22; A remains14; old page disposed and B displays22 without A draft; anonymous GET/PUT401 |
| Locale switch / unrelated settings | **PASS:**lower-level hidden Rules draft survives locale change without a new Rules GET; editing Rules does not trigger unrelated notification-preference refetch |
The four focused browser cases pass4/4 with zero retries/skips/flaky/expected failures. Fault injection is limited to the explicitly declared PUT500 and held native reads/writes; ownership, persistence and readback exercise the real SQLite API. No server conflict semantics are invented.
## Accessibility, localisation and responsive evidence
Actual variants: **EN/light1440**, **Bokmål/dark768**, **EN/dark390**, **Bokmål/light320**, height900. Desktop/tablet use keyboard activation of selected tabs; phones use keyboard section-selector opening/selection/focus return. Save/Discard activation, labelled numeric inputs, associated validation, non-colour dirty text and alert/status semantics are asserted. Reduced-motion is enabled for the matrix. Reflow checks test visible controls/text bounds, not specific CSS classes.
Focused evidence includes **16 screenshots and16axe scans;0reported violations;150incomplete node occurrences**:142contrast and8hidden-focus. These are repeated occurrences, not150distinct defects or accepted checks. A coding-agent visual review inspected genuine EN desktop/light and phone/dark drafts, Bokmål dark tablet error, and320px Bokmål validation/discard images: fields, error text and actions remain readable, focus is visible, narrow content wraps. This does **not** certify human screen-reader announcements, physical touch/software keyboard, broader zoom or complete accessibility.
Representative images (all16 are in [proof manifest](evidence/rules-proof.json)):
- [Desktop EN/light draft and focused navigation](evidence/rules-draft-en-light-1440.png)
- [Tablet Bokmål/dark save failure](evidence/rules-save-error-nb-dark-768.png)
- [Phone EN/dark draft](evidence/rules-draft-en-dark-390.png)
- [Narrow phone Bokmål/light validation](evidence/rules-validation-nb-light-320.png)
- [Narrow phone explicit discard](evidence/rules-discard-nb-light-320.png)
## Preservation traceability
| Contract | Existing behaviour → repair → evidence | Current complete-group disposition |
|---|---|---|
| **PRES-S03** | Separate Rules/preferences scopes and explicit Save → parent session draft, associated validation, durable failure/retry/discard →13Settings cases +4native journeys +original diagnostic | **FAIL→PARTIAL**, not PASS; notification contention/language persistence and full human/provider acceptance remain open |
| **PRES-W11** | Owned follow-up/ghosting configuration → same six-field atomic API/save and no auto-write → native six-value readback, forged-owner/anonymous cases, unchanged RulesEngineProspect backend regressions | **PARTIAL unchanged**; scheduling/calendar/provider delivery and historical500 cause not qualified here |
| **PRES-E07/E08** | Reachable Settings navigation, locale/theme and feedback → shared tab/phone session entry, localized status/errors →four keyboard/reflow/theme/locale variants | **PARTIAL unchanged**; broad human AT/device/zoom scope remains open |
| **PRES-E09** | Account-private draft disposal and stale-session rejection → retain existing API/session owner and suppress obsolete instance completion →native A/B/forged-owner/401 +component teardown | **PARTIAL unchanged**; not a complete deployed/BFCache/session certification |
All57 original contracts stay unchanged. Current complete-group totals after the scoped repair are **PASS0 / PARTIAL55 / FAIL1 / DEFERRED1 / BLOCKED0 / NOT VERIFIED0 =57**. E02 Analytics sign-in query loss remains FAIL; C11/P5-13 remains DEFERRED/Production-withheld. Original00,01 andR-01 statuses are retained in [parent matrix](../../PRESERVATION_ACCEPTANCE.md). A PARTIAL group still contains unverified sub-workflows.
## Fresh validation and diagnostic reconciliation
Backend1,033/1,033; frontend472/472 in82suites; revision5/5 and focusedAI108/108 are backend subsets; sidecar49 and configuration3 are fresh. TypeScript, lint, frontend production build and API/test-project Release builds pass. Frontend count464→472 is exactly eight new Settings behavioural cases. Backend count is unchanged; no backend test/model/contract changes.
All rows below are **fresh after the final application change**, not inherited success. [Portable validation, exact commands/times, fingerprints and limits](evidence/validation.json), [native proof](evidence/rules-proof.json) and [final repository checks](evidence/repository-validation.json) distinguish ordinary cases, subsets and independent suites.
| Suite/check | Fresh result | Reconciliation |
|---|---|---|
| Backend full | **1,033/1,033** | Unchanged count; no backend production/test change |
| Frontend full | **472/472**,82suites |464+8new behavioural Settings cases; no failures/pending |
| Ordinary browser | **128pass /1fail /129total** | R-01's125cases +4new Rules cases;117inherited,4audit,3saved-search and4Rules cases pass; AUTH-01 is the one real failure |
| Standalone preference diagnostics | **2pass /0fail /2total** | Previously1pass/1fail; original Rules assertion now verifies retained5/persisted14/zero PUTs |
| Focused Rules native browser | **4/4** | Subset rerun, not four additional full-suite passes |
| Sidecar | **49/49** | Native JUnit; unchanged |
| Focused AI | **108/108** | Backend subset; deterministic, no configured-model qualification |
| Real HTTP | **2/2** | Actual API grounding/stale/account and Production withholding before provider/write; unrelated AI available |
| Revision safety | **5/5** | Backend subset; source/override/history/frozen references preserved |
| Standard fidelity | **16/16;36preview=36PDF pages** | Same16fixtures, native output and unchanged predeclared tolerances |
| Settings exports | **8/8;24preview=24PDF pages** | Same8exports/settings and unchanged tolerances |
| Rate-limit / ingress / PDF admission / configuration | **9/6/1/3** | Fresh separate local suites; not live F04/production evidence |
| Additional offline helpers | **Supply-chain3 / evaluation5 / extension3** | Unchanged deterministic parser/config regressions; no Docker/provider execution |
| App/E2E TypeScript, lint, frontend production/API/test Release builds | **PASS** | Fresh static/build commands, zero exit codes; no renderer/deployment changes |
| Secrets, whitespace, docs/57-group/32-route hygiene | **PASS**; [final repository result](evidence/repository-validation.json) | Actual final checks exit0; original contracts/main unchanged and remote equals the pushed code checkpoint before the final documentation commit |
The full browser command exits1 specifically at `functional-acceptance.spec.ts:154`: sign-in reaches `/analytics` without the requested `?months=6`. No expectation was weakened, skipped or relabelled. **P2-D01 passes normally**. The original normal/admin saved-search failures and all three R-01 native repair cases remain passing; no saved-search code is touched. Both original diagnostic assertions now pass. Counts are not combined across overlapping suites/subsets.
All32route census patterns retain expected native entry/refresh/read states;98selected native GET observations include zero500s. The login query-continuity failure remains separate from entry/refresh and authorization. This repair does not reclassify full route-workflow acceptance.
Full-suite axe evidence is **267scans /0reported violations /2,040incomplete node occurrences**: contrast1,768; hidden-focus41; prohibited-attribute209; valid-value18; table-header4. Focused16scans/150incompletes overlap and must not be added to the full totals. These are incomplete repeated occurrences, not passes or distinct confirmed defects. Human AT/device/zoom requirements remain open.
The prior R-01 CV “Unsaved” assertion passes in this unchanged full frontend run; native CV workflows also pass. It remains OPEN because its cause is unestablished. No CV assertion, timeout, implementation or renderer was altered to obtain a pass.
Intermediate tooling findings are retained separately: the first post-fix prebuilt browser attempt used API5202 while the disposable API was5302; correcting the test build environment resolved that harness issue. Two subsequent selectors were corrected to scope the existing Settings navigation and observe actual session-disposal navigation. No production code or product expectations changed to accept those failures. A required-input marker briefly changed exact labels; moving the native required attribute to the input restored existing accessible names. Final runs use the original required behaviour with retries0.
## Outstanding obligations and risk
- **AUTH-01 Analytics sign-in query loss:** ordinary known failure, untouched; remains before P5-15-02 progression is reconciled.
- **CV “Unsaved” intermittent assertion:** prior R-01 failure has no demonstrated cause/fix; subsequent passing runs do not close it. [Intermittent register](../INTERMITTENT_FAILURES.md).
- Historical language-preference500, notification SQLite-lock contention and Rules-save500 root causes remain open. R-02 qualifies draft/error recovery, not a backend reliability repair.
- Production provider and multi-client conflict qualification remain separate; native evidence here uses SQLite, not deployed MariaDB. No backend API conflict/version semantics are added.
- Human screen reader, incomplete axe review, physical touch/software keyboard, production font/photo, broader pointer/reflow and Board scaling/touch debt remain open.
- Production F04 ingress, current complete backup/tested restore, configuration/schema/secrets and tested rollback remain release blockers.
- P5-05, P5-13 qualification/reviewUI and followMode compose UI remain explicitly deferred; unqualified AI Production withholding remains active, zero qualification calls/reviews performed.
## Immediate commit/push ledger and stopping point
| Completed logical unit | Commit / boundary |
|---|---|
| Native RED regression, reproduction contract and bounded TODO | `5b5dcd0b80aa0713545ecf1fdab079fb9dec28ee`; pushed before implementation |
| Parent-owned Rules repair, eight component regressions, four native journeys and focused proof | `30f513d0c993800ec5d5583329ed65dc7ec9a8d4`; pushed after focused browser/full frontend/backend/static validation; remote equality and clean tree verified |
| Final acceptance/evidence reconciliation | This documentation/evidence checkpoint; commit/push immediately after final repository checks. Its exact resulting hash and final remote/tree equality are reported to the owner after commit (no circular self-hash in this file) |
Read-only subagent review found no actionable correctness/security issue; it inspected the sole caller, actual API/session disposal and snapshot/validation tests, and did not claim test execution or human acceptance.
**P5-15-01R-02: GO for the bounded repair; Production remains NO-GO. P5-15-02 is not cleared by this checkpoint while AUTH-01 remains an unreconciled ordinary failure.** Stop before Analytics repair, P5-15-02, P5-13, Docker, B07 and deployment.
@@ -0,0 +1,243 @@
{
"status": "PASS for repository/static/document checks only; Analytics remains an ordinary browser failure.",
"sourceCheckpoint": "c8e32238ef628f34c6ae8f64c6cb40ca5d8c68ac",
"codeCheckpoint": "30f513d0c993800ec5d5583329ed65dc7ec9a8d4",
"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-09T17:28:47.581112+00:00",
"finishedUtc": "2026-10-09T17:28:49.905362+00:00",
"exitCode": 0,
"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-09T17:28:49.905871+00:00",
"finishedUtc": "2026-10-09T17:28:50.594724+00:00",
"exitCode": 0,
"logSha256": "d7e21b0205bf5b75e240c936b5dfd2e1e9eb6aa040d2736e3f49d266f79c67f5"
},
{
"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-09T17:28:50.594724+00:00",
"finishedUtc": "2026-10-09T17:28:52.471864+00:00",
"exitCode": 0,
"logSha256": "da6efdc7fe0b34b8658c000c05ed2eaa8fdaf0dd62756adf51f7a770d5a4485f"
},
{
"name": "working-whitespace",
"command": [
"rtk",
"proxy",
"git",
"diff",
"--check"
],
"startedUtc": "2026-10-09T17:28:52.472338+00:00",
"finishedUtc": "2026-10-09T17:28:52.585557+00:00",
"exitCode": 0,
"logSha256": "a4ed4c2c830adf807283a578ea7ee8b2f659416a86da69815d6147237e7d7f36"
},
{
"name": "staged-whitespace",
"command": [
"rtk",
"proxy",
"git",
"diff",
"--cached",
"--check"
],
"startedUtc": "2026-10-09T17:28:52.586056+00:00",
"finishedUtc": "2026-10-09T17:28:52.709489+00:00",
"exitCode": 0,
"logSha256": "a4ed4c2c830adf807283a578ea7ee8b2f659416a86da69815d6147237e7d7f36"
},
{
"name": "checkpoint-whitespace",
"command": [
"rtk",
"proxy",
"git",
"diff",
"c8e32238ef628f34c6ae8f64c6cb40ca5d8c68ac",
"--check"
],
"startedUtc": "2026-10-09T17:28:52.709489+00:00",
"finishedUtc": "2026-10-09T17:28:52.850299+00:00",
"exitCode": 0,
"logSha256": "a4ed4c2c830adf807283a578ea7ee8b2f659416a86da69815d6147237e7d7f36"
},
{
"name": "checkpoint-files",
"command": [
"rtk",
"proxy",
"git",
"diff",
"c8e32238ef628f34c6ae8f64c6cb40ca5d8c68ac",
"--name-only"
],
"startedUtc": "2026-10-09T17:28:52.850810+00:00",
"finishedUtc": "2026-10-09T17:28:52.971644+00:00",
"exitCode": 0,
"logSha256": "54ac5ce336b086d9d3967ed4c120c0fb34b461742fdb7e5415055ddcfbaa9afd"
},
{
"name": "original-contracts-unchanged",
"command": [
"rtk",
"proxy",
"git",
"diff",
"c8e32238ef628f34c6ae8f64c6cb40ca5d8c68ac",
"--",
"docs/redesign/phase-2",
"docs/redesign/audit/ROUTE_MAP.md"
],
"startedUtc": "2026-10-09T17:28:52.971644+00:00",
"finishedUtc": "2026-10-09T17:28:53.080130+00:00",
"exitCode": 0,
"logSha256": "a4ed4c2c830adf807283a578ea7ee8b2f659416a86da69815d6147237e7d7f36"
},
{
"name": "main-revision",
"command": [
"rtk",
"proxy",
"git",
"rev-parse",
"main"
],
"startedUtc": "2026-10-09T17:28:53.080633+00:00",
"finishedUtc": "2026-10-09T17:28:53.186130+00:00",
"exitCode": 0,
"logSha256": "897066df123bc63e82a45f42fe9b6dbc9dd0aeff602dd814ffdf3ffd8de8ec2c"
},
{
"name": "code-head",
"command": [
"rtk",
"proxy",
"git",
"rev-parse",
"HEAD"
],
"startedUtc": "2026-10-09T17:28:53.186623+00:00",
"finishedUtc": "2026-10-09T17:28:53.288041+00:00",
"exitCode": 0,
"logSha256": "9c323d9843d528486dc2159d8b84ec68b1169107a80fbe8690f9e72ab05aaded"
},
{
"name": "remote-branches",
"command": [
"rtk",
"proxy",
"git",
"ls-remote",
"origin",
"refs/heads/main",
"refs/heads/codex/ui-redesign-phase4"
],
"startedUtc": "2026-10-09T17:28:53.288541+00:00",
"finishedUtc": "2026-10-09T17:28:53.569582+00:00",
"exitCode": 0,
"logSha256": "5c9e2be9ffb93e7f783193ddea324b5c9c871dfe4df7cc7f4f1c4163bc291f25"
}
],
"changedTrackedFiles": [
"docs/redesign/phase-5/p5-15/PRESERVATION_ACCEPTANCE.md",
"docs/redesign/phase-5/p5-15/READINESS_DEBT.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/rules-draft-repair/README.md",
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/repository-validation.json",
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-discard-en-dark-390.png",
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-discard-en-light-1440.png",
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-discard-nb-dark-768.png",
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-discard-nb-light-320.png",
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-draft-en-dark-390.png",
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-draft-en-light-1440.png",
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-draft-nb-dark-768.png",
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-draft-nb-light-320.png",
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-proof.json",
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-save-error-en-dark-390.png",
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-save-error-en-light-1440.png",
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-save-error-nb-dark-768.png",
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-save-error-nb-light-320.png",
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-validation-en-dark-390.png",
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-validation-en-light-1440.png",
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-validation-nb-dark-768.png",
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-validation-nb-light-320.png",
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/validation.json",
"docs/roadmap/todo.md",
"job-tracker-ui/e2e/rules-draft-repair.spec.ts",
"job-tracker-ui/src/components/RulesSettingsCard.tsx",
"job-tracker-ui/src/components/SettingsView.tsx",
"job-tracker-ui/src/i18n/translations.ts",
"job-tracker-ui/src/settings-view.test.tsx"
],
"preservation": {
"total": 57,
"before": {
"PARTIAL": 56,
"DEFERRED": 1
},
"audit": {
"PARTIAL": 53,
"FAIL": 3,
"DEFERRED": 1
},
"R01": {
"PARTIAL": 54,
"FAIL": 2,
"DEFERRED": 1
},
"current": {
"PARTIAL": 55,
"FAIL": 1,
"DEFERRED": 1
},
"originalIdsUnchanged": true
},
"routePatterns": 32,
"balancedMarkdown": true,
"limits": [
"No deployed-provider, human AT/physical-device or production acceptance.",
"No Analytics/P5-15-02/P5-13/Docker/B07 work."
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

@@ -0,0 +1,193 @@
{
"before": {
"initial": 14,
"entered": 5,
"afterReturn": "14",
"persisted": 14,
"writes": 0
},
"after": {
"initial": 14,
"entered": 5,
"afterReturn": "5",
"persisted": 14,
"writes": 0
},
"saveSnapshot": {
"initial": 14,
"submitted": 5,
"newerDraft": 6,
"persisted": 5,
"reads": 1
},
"accountBoundary": {
"accountAUnchanged": 14,
"accountB": 22,
"oldDraft": 9,
"oldPageDisposed": true,
"anonymous": [
401,
401
]
},
"focusedBrowser": {
"startTime": "2026-10-09T16:56:46.876Z",
"duration": 39904.021,
"expected": 4,
"skipped": 0,
"unexpected": 0,
"flaky": 0
},
"focusedAxe": {
"counts": {
"scans": 16,
"violationEntries": 0,
"incompleteNodeOccurrences": 150
},
"incompleteRules": {
"color-contrast": 142,
"aria-hidden-focus": 8
}
},
"source": "c8e32238ef628f34c6ae8f64c6cb40ca5d8c68ac",
"reproducerCommit": "5b5dcd0b80aa0713545ecf1fdab079fb9dec28ee",
"repairCommit": "30f513d0c993800ec5d5583329ed65dc7ec9a8d4",
"nativeContract": "Authenticated per-account GET/PUT /api/rules, six fields, atomic PUT204; no schema/API/server conflict changes.",
"faultsAndGates": "Only the declared synthetic PUT500 and deterministic delayed GET/PUT are intercepted; persistence/readback/account checks use the native SQLite API.",
"rawEvidence": [
{
"path": ".artifacts/p5-15-01R-02/browser/rules-red.json",
"sha256": "0182e9cd6f0f1e0f7d6a7c3d8ed3f9777196ce4c6c564e5f894ad4621f226251"
},
{
"path": ".artifacts/p5-15-01R-02/browser/rules-focused.json",
"sha256": "811719ac1e11730080fed0bc1298b3520f706d5919a4b55a2742f298a3097182"
},
{
"path": ".artifacts/p5-15-01R-02/browser/commands.json",
"sha256": "da2d87cee5ed2ae15f7d5ffd8a457cd3b33f3f940c6ecc51bd7ae0352b08274d"
},
{
"path": ".artifacts/p5-15-01R-02/frontend-red-clean.json",
"sha256": "610556e5cc35c01e517bc836322060bd6a02a4fca1283512cabd64349d2f3d5e"
},
{
"path": ".artifacts/p5-15-01R-02/frontend-focused-2.json",
"sha256": "104d9c81d08b2b57986e6c4b6ccfb92f9bf65258a15dfcdc7d7abe6fcf2c1477"
}
],
"screenshots": [
{
"name": "rules-draft-en-light-1440",
"file": "rules-draft-en-light-1440.png",
"path": ".artifacts/p5-15-01R-02/browser/rules-focused-results/rules-draft-repair--P5-15--0595c-ss-themes-locales-viewports-chromium/attachments/rules-draft-en-light-1440-2eccc41ef61c25a5d9e8b1f20839831a89a82e89.png",
"sha256": "790284a213e0110945f8e9f778caefba7dccbfd7efa39643c1908648b3dd417d"
},
{
"name": "rules-validation-en-light-1440",
"file": "rules-validation-en-light-1440.png",
"path": ".artifacts/p5-15-01R-02/browser/rules-focused-results/rules-draft-repair--P5-15--0595c-ss-themes-locales-viewports-chromium/attachments/rules-validation-en-light-1440-71c03f2b08484154136c85a24bfce4f432c4b6f2.png",
"sha256": "7b16b20e27b787c55ff9b0e730051ea75cae0e6c0d039ac07f2eb7af9fe005cc"
},
{
"name": "rules-save-error-en-light-1440",
"file": "rules-save-error-en-light-1440.png",
"path": ".artifacts/p5-15-01R-02/browser/rules-focused-results/rules-draft-repair--P5-15--0595c-ss-themes-locales-viewports-chromium/attachments/rules-save-error-en-light-1440-c390e1e1ec5fa54ab8e0d725f2715a885c8bae89.png",
"sha256": "cfe6a051b9026e46195a65ad4a681e0bf1c6ad61a33f1422d5ec1e1e5b689502"
},
{
"name": "rules-discard-en-light-1440",
"file": "rules-discard-en-light-1440.png",
"path": ".artifacts/p5-15-01R-02/browser/rules-focused-results/rules-draft-repair--P5-15--0595c-ss-themes-locales-viewports-chromium/attachments/rules-discard-en-light-1440-bf549d758d59f678a362438bcfe784b4efed233f.png",
"sha256": "46cccc211271b34aacf5c197626c9fd09694de5ada65738c92b0669a0a79c672"
},
{
"name": "rules-draft-nb-dark-768",
"file": "rules-draft-nb-dark-768.png",
"path": ".artifacts/p5-15-01R-02/browser/rules-focused-results/rules-draft-repair--P5-15--0595c-ss-themes-locales-viewports-chromium/attachments/rules-draft-nb-dark-768-a8f57558d507ae626c5053663dcd23292df86b17.png",
"sha256": "8ddbc70f569c4b50e7eb5129b0b03ca18bd52ecae246e08b0c27635344ef3ff4"
},
{
"name": "rules-validation-nb-dark-768",
"file": "rules-validation-nb-dark-768.png",
"path": ".artifacts/p5-15-01R-02/browser/rules-focused-results/rules-draft-repair--P5-15--0595c-ss-themes-locales-viewports-chromium/attachments/rules-validation-nb-dark-768-da06302836733bbee986e85da0d97fed775534f1.png",
"sha256": "4eec3a7f4587498ad8034b8e2dedfd97b9c8e1cb276530973d283fc69be19985"
},
{
"name": "rules-save-error-nb-dark-768",
"file": "rules-save-error-nb-dark-768.png",
"path": ".artifacts/p5-15-01R-02/browser/rules-focused-results/rules-draft-repair--P5-15--0595c-ss-themes-locales-viewports-chromium/attachments/rules-save-error-nb-dark-768-608ec82392ad20655ef5215336fd2e4df0270883.png",
"sha256": "abab8931f60f98892af427d7fa6aed168061c9ec0b0e8be9adc01148c668e751"
},
{
"name": "rules-discard-nb-dark-768",
"file": "rules-discard-nb-dark-768.png",
"path": ".artifacts/p5-15-01R-02/browser/rules-focused-results/rules-draft-repair--P5-15--0595c-ss-themes-locales-viewports-chromium/attachments/rules-discard-nb-dark-768-eb7f88ef82508ea52feffef67dcf769df67de3dc.png",
"sha256": "26c54370ebf0393670944b86615a1ba93c02eaf1343d5a539ecf4ce08f9b94a4"
},
{
"name": "rules-draft-en-dark-390",
"file": "rules-draft-en-dark-390.png",
"path": ".artifacts/p5-15-01R-02/browser/rules-focused-results/rules-draft-repair--P5-15--0595c-ss-themes-locales-viewports-chromium/attachments/rules-draft-en-dark-390-047037663461f9c9b3e073309f8d08b6d19895e6.png",
"sha256": "8e3e615cb0be06792c404da1be9ca9dcc2ee1eaf69fa7b78dfeb39d58b4c17ea"
},
{
"name": "rules-validation-en-dark-390",
"file": "rules-validation-en-dark-390.png",
"path": ".artifacts/p5-15-01R-02/browser/rules-focused-results/rules-draft-repair--P5-15--0595c-ss-themes-locales-viewports-chromium/attachments/rules-validation-en-dark-390-8f37e36f08a8780336c3d757dd7495ea611d9d1e.png",
"sha256": "a15745a3b2bf2011c27ca2006d96948354030db34cbbd2f60c5f83c7554138b3"
},
{
"name": "rules-save-error-en-dark-390",
"file": "rules-save-error-en-dark-390.png",
"path": ".artifacts/p5-15-01R-02/browser/rules-focused-results/rules-draft-repair--P5-15--0595c-ss-themes-locales-viewports-chromium/attachments/rules-save-error-en-dark-390-c504bf10e82909e402c276f57ec50e311e288f7f.png",
"sha256": "bf03396d5e9431dfee090a3e0d6f99302c9ce3a4eaa6a2ab43c0881605370786"
},
{
"name": "rules-discard-en-dark-390",
"file": "rules-discard-en-dark-390.png",
"path": ".artifacts/p5-15-01R-02/browser/rules-focused-results/rules-draft-repair--P5-15--0595c-ss-themes-locales-viewports-chromium/attachments/rules-discard-en-dark-390-6775d161f579c3224d1bbd17bcc57b2e19da672b.png",
"sha256": "0d10359372f7affc91827aaefe2cb1f5f6a5df6fd9d9c86cc92cbcac1a6c5257"
},
{
"name": "rules-draft-nb-light-320",
"file": "rules-draft-nb-light-320.png",
"path": ".artifacts/p5-15-01R-02/browser/rules-focused-results/rules-draft-repair--P5-15--0595c-ss-themes-locales-viewports-chromium/attachments/rules-draft-nb-light-320-ec6bf8bcdcc9c98a0b82a86b97674ea43cdb43c6.png",
"sha256": "1e3de08d4ec4c108ae490ed78d52c3237a4c6779480bd606d4c8e4189954d1ab"
},
{
"name": "rules-validation-nb-light-320",
"file": "rules-validation-nb-light-320.png",
"path": ".artifacts/p5-15-01R-02/browser/rules-focused-results/rules-draft-repair--P5-15--0595c-ss-themes-locales-viewports-chromium/attachments/rules-validation-nb-light-320-7cb3ded822daac872ce47f6ddc050ca995eab332.png",
"sha256": "bb22835105f461e27e72a9003b74dc4c3ee709721faa5d486d3d58da7fe3bcdd"
},
{
"name": "rules-save-error-nb-light-320",
"file": "rules-save-error-nb-light-320.png",
"path": ".artifacts/p5-15-01R-02/browser/rules-focused-results/rules-draft-repair--P5-15--0595c-ss-themes-locales-viewports-chromium/attachments/rules-save-error-nb-light-320-8999ce51b36a07879126edd078a6495992a1c51b.png",
"sha256": "06ef9eb1ece1ce1b7dc277287a39fb145c8eaa11436651682c7c3598270bd75f"
},
{
"name": "rules-discard-nb-light-320",
"file": "rules-discard-nb-light-320.png",
"path": ".artifacts/p5-15-01R-02/browser/rules-focused-results/rules-draft-repair--P5-15--0595c-ss-themes-locales-viewports-chromium/attachments/rules-discard-nb-light-320-74fe06e2c5dde99cee1a0f55b14f840859a13e45.png",
"sha256": "c060f02ccbf1e573408c721dd61df13643a268cf2f22f982d949e2e6d0c1cb26"
}
],
"visualInspection": {
"type": "Coding-agent review of genuine screenshots; not human AT/device acceptance.",
"reviewed": [
"rules-draft-en-light-1440",
"rules-draft-en-dark-390",
"rules-save-error-nb-dark-768",
"rules-validation-nb-light-320",
"rules-discard-nb-light-320"
],
"outcome": "Fields, scope notice, errors and Save/Discard remain readable; visible focus and narrow-screen wrapping retained."
},
"limits": [
"No live production provider/physical touch/software keyboard/human screen reader qualification.",
"Historical Rules500, notification contention and language-save500 causes remain open.",
"Existing Rules API has no multi-client revision/ETag conflict semantics."
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

@@ -0,0 +1,732 @@
{
"sourceCheckpoint": "c8e32238ef628f34c6ae8f64c6cb40ca5d8c68ac",
"codeCheckpoint": "30f513d0c993800ec5d5583329ed65dc7ec9a8d4",
"recordedUtc": "2026-10-09T17:25:11.947964+00:00",
"scope": "Fresh complete local regression after final application change; AUTH-01 remains a genuine ordinary browser failure. No production/real-provider/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-09T16:55:50.041155+00:00",
"finishedUtc": "2026-10-09T16:55:59.316357+00:00",
"exitCode": 0,
"logSha256": "18a0ff1a0db85cda51e74548c1f61705012988858aa0f1a061f0623210c93977"
},
{
"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-02/backend/full",
"--",
"xUnit.parallelizeTestCollections=false",
"xUnit.maxParallelThreads=1"
],
"startedUtc": "2026-10-09T16:55:59.317863+00:00",
"finishedUtc": "2026-10-09T16:56:15.191455+00:00",
"exitCode": 0,
"logSha256": "ca9f2e4c933fbcaf5ab5f4c74f57e31ba543a38ec364138a0a090c95c35108fb",
"total": 1033,
"passed": 1033,
"failed": 0,
"resultSha256": "15ce8fc8dfd9948a39aac7d51cfea4cb44454b3d17332807987916394fc4e94a"
},
{
"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-09T16:56:15.207999+00:00",
"finishedUtc": "2026-10-09T16:56:21.210057+00:00",
"exitCode": 0,
"logSha256": "81cad34336d4ff953e784387c7028e85fbcfd0ab43f1a103611cbe61dd1f0639"
},
{
"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-02/backend/full",
"--",
"xUnit.parallelizeTestCollections=false",
"xUnit.maxParallelThreads=1"
],
"startedUtc": "2026-10-09T16:56:21.211066+00:00",
"finishedUtc": "2026-10-09T16:56:24.813157+00:00",
"exitCode": 0,
"logSha256": "de3914a4c6a8a15f351ad7080e995ea5a76656afde75dc38c3a1b1c2e7fc6e7f",
"total": 5,
"passed": 5,
"failed": 0,
"resultSha256": "34ed2f283602af3fa17aa9e1362ae695bb7d8551676f203fba8dbf111bd91da1"
},
{
"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-02/backend/full",
"--",
"xUnit.parallelizeTestCollections=false",
"xUnit.maxParallelThreads=1"
],
"startedUtc": "2026-10-09T16:56:24.815169+00:00",
"finishedUtc": "2026-10-09T16:56:29.762555+00:00",
"exitCode": 0,
"logSha256": "8bca9df96aa5c6d8b2391db64663afd9e910c44069551f311798368bde66738f",
"total": 108,
"passed": 108,
"failed": 0,
"resultSha256": "1aef564a23bb1b696794914f0c3d9a72567072dd22e8830b33d7daebea14194b"
},
{
"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-02/backend/full/helpers/pytest-cache",
"--basetemp=E:/Storage/Projects/Active/Job tracker/.artifacts/p5-15-01R-02/backend/full/helpers/pytest-tmp",
"--junitxml=E:/Storage/Projects/Active/Job tracker/.artifacts/p5-15-01R-02/backend/full/helpers/sidecar.xml"
],
"startedUtc": "2026-10-09T16:56:29.766104+00:00",
"finishedUtc": "2026-10-09T16:56:41.600367+00:00",
"exitCode": 0,
"logSha256": "a6e9102a862dbffbdbdc1e62ff174487e03b1efcda26080506e8ac150c5fb610",
"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-09T16:56:41.600852+00:00",
"finishedUtc": "2026-10-09T16:56:42.779826+00:00",
"exitCode": 0,
"logSha256": "9cfed5c1f3ce16658f4dea648a884804e0c5919c4fbaf37ca1a5949b605962d5",
"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-09T16:56:42.780840+00:00",
"finishedUtc": "2026-10-09T16:56:42.993801+00:00",
"exitCode": 0,
"logSha256": "793f0c09a167a39e5144a39ae38be08a57ebca38d72ba8b0aa6d59c347064306",
"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-09T16:56:42.994802+00:00",
"finishedUtc": "2026-10-09T16:56:43.756967+00:00",
"exitCode": 0,
"logSha256": "90e7c2bc7745e2ccac4d1be53db420fef0cb336d604577671801745ed9c3d216",
"expectedPassed": 5
},
{
"name": "extension-tests",
"command": [
"rtk",
"proxy",
"node",
"--test",
"browser-extension/tests/capture-url.test.mjs"
],
"startedUtc": "2026-10-09T16:56:43.757932+00:00",
"finishedUtc": "2026-10-09T16:56:43.959775+00:00",
"exitCode": 0,
"logSha256": "1dde54fa45f4d9e5a9f830d362990fbdf9b0b3559249bf75fc00bf3193f28126",
"expectedPassed": 3
}
],
"offlineHelpers": {
"configuration-tests": {
"passed": 3,
"failed": 0,
"log": {
"path": ".artifacts/p5-15-01R-02/backend/full/configuration-tests.log",
"sha256": "9cfed5c1f3ce16658f4dea648a884804e0c5919c4fbaf37ca1a5949b605962d5"
}
},
"supply-chain-tests": {
"passed": 3,
"failed": 0,
"log": {
"path": ".artifacts/p5-15-01R-02/backend/full/supply-chain-tests.log",
"sha256": "793f0c09a167a39e5144a39ae38be08a57ebca38d72ba8b0aa6d59c347064306"
}
},
"offline-evaluation-tests": {
"passed": 5,
"failed": 0,
"log": {
"path": ".artifacts/p5-15-01R-02/backend/full/offline-evaluation-tests.log",
"sha256": "90e7c2bc7745e2ccac4d1be53db420fef0cb336d604577671801745ed9c3d216"
}
},
"extension-tests": {
"passed": 3,
"failed": 0,
"log": {
"path": ".artifacts/p5-15-01R-02/backend/full/extension-tests.log",
"sha256": "1dde54fa45f4d9e5a9f830d362990fbdf9b0b3559249bf75fc00bf3193f28126"
}
}
},
"sidecar": {
"passed": 49,
"result": {
"path": ".artifacts/p5-15-01R-02/backend/full/helpers/sidecar.xml",
"sha256": "25d09e742060ddb377db319a7888c3b396f6042d676b6d20af5b4e6e59f705fe"
}
},
"frontend": {
"passed": 472,
"failed": 0,
"total": 472,
"suites": 82,
"commands": [
{
"name": "frontend-full",
"command": [
"rtk",
"proxy",
"npm.cmd",
"test",
"--",
"--runInBand",
"--watchAll=false",
"--json",
"--outputFile=../.artifacts/p5-15-01R-02/frontend/jest.json"
],
"startedUtc": "2026-10-09T16:54:50.394930+00:00",
"finishedUtc": "2026-10-09T16:57:46.363795+00:00",
"exitCode": 0
},
{
"name": "app-typescript",
"command": [
"rtk",
"proxy",
"npm.cmd",
"run",
"typecheck"
],
"startedUtc": "2026-10-09T16:57:46.364288+00:00",
"finishedUtc": "2026-10-09T16:57:55.062608+00:00",
"exitCode": 0
},
{
"name": "frontend-lint",
"command": [
"rtk",
"proxy",
"npm.cmd",
"run",
"lint"
],
"startedUtc": "2026-10-09T16:57:55.063108+00:00",
"finishedUtc": "2026-10-09T16:58:11.353504+00:00",
"exitCode": 0
},
{
"name": "frontend-production-build",
"command": [
"rtk",
"proxy",
"npm.cmd",
"run",
"build"
],
"startedUtc": "2026-10-09T16:58:11.354004+00:00",
"finishedUtc": "2026-10-09T16:58:17.157367+00:00",
"exitCode": 0
}
]
},
"ordinaryBrowser": {
"passed": 128,
"failed": 1,
"total": 129,
"inheritedPassing": 117,
"auditPassing": 4,
"auditFailing": 1,
"savedSearchPassing": 3,
"rulesRepairPassing": 4,
"skipped": 0,
"expectedFailures": 0,
"failedCases": [
"[P5-15-01 E02 E07 A01] all 32 routes retain native entry, refresh and anonymous permissions"
],
"stats": {
"startTime": "2026-10-09T17:00:36.643Z",
"duration": 1373356.458,
"expected": 128,
"skipped": 0,
"unexpected": 1,
"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-09T17:24:11.085Z",
"duration": 13071.493,
"expected": 2,
"skipped": 0,
"unexpected": 0,
"flaky": 0
}
},
"securityHttp": {
"http": {
"startTime": "2026-10-09T17:23:30.643Z",
"duration": 13563.922999999999,
"expected": 2,
"skipped": 0,
"unexpected": 0,
"flaky": 0
},
"rate-limit": {
"startTime": "2026-10-09T17:23:44.793Z",
"duration": 10295.717,
"expected": 9,
"skipped": 0,
"unexpected": 0,
"flaky": 0
},
"ingress": {
"startTime": "2026-10-09T17:23:55.717Z",
"duration": 6415.7210000000005,
"expected": 6,
"skipped": 0,
"unexpected": 0,
"flaky": 0
},
"pdf-admission": {
"startTime": "2026-10-09T17:24:02.723Z",
"duration": 7773.563999999999,
"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-02/browser/fidelity/measurements.json",
"sha256": "a312365d1b657028e42a3d04b545d5ffca0625f57a9c821a15a3dd6add62a86c"
},
"results": {
"path": ".artifacts/p5-15-01R-02/browser/fidelity/fidelity-results.json",
"sha256": "98abd84d63708f1c632e29c8b8d37e1083811979365162ffea2e4e1bf48ea373"
},
"nativeFiles": [
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-modern/render.html",
"sha256": "8e768156c7ffd4ad8dae6914a6a57baa5114668dc53a861f3925e0be8cffb8aa"
},
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-modern/export.pdf",
"sha256": "daac7db4085eab095fde83cf966fc88b81e72f14729cb1d74ec30a5258f8bfec"
},
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-minimal/render.html",
"sha256": "26bd74195f0f5ed917751ec5aeb0321ef156f93f105e889cea3fa67b2952bb1c"
},
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-minimal/export.pdf",
"sha256": "40a35e13336482d2883b0c755630501a186c857b76a5e73c23927f130ea90836"
},
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-executive/render.html",
"sha256": "d57da767c7c6cf446fe351fd381d33b95b555423db21feb84c9c1346775d8c48"
},
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-executive/export.pdf",
"sha256": "29faeb7a9de36d95cfb9a4b906c7a6b7515507893001bda38f4cc6c4208d5dbd"
},
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-technical/render.html",
"sha256": "681554ff60e68efa848e0a9e0ea6c2776526ea6a2017a05952ef724b08fc9e95"
},
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-technical/export.pdf",
"sha256": "f8d0238497db12d6a78054b3d8e339181fbef2563cbf483e88fba272e2a88163"
},
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-ats-classic/render.html",
"sha256": "f290eeef533983ea8a46c536e9747c0d88ee2cb7275f94366561c89645dc947b"
},
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-ats-classic/export.pdf",
"sha256": "ac2e6bf973ee61d4bf768e5dac0093e0aa72fa4f8d218e67aa370aeda41f61fa"
},
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-nordic/render.html",
"sha256": "361c0d55d3596a6e56d03b02bdecd9c9dbf6b48b7cb0a4add7d75382ca3e2958"
},
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-nordic/export.pdf",
"sha256": "3e32bbe86c66d43afaaa619fb02a5e889fc51bf2ed59efb16600c1d6f65546fb"
},
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-elegant/render.html",
"sha256": "816163e97d55be1fd726228fad0f7da471c707ca7879f0fbb036a1324dbdea47"
},
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-elegant/export.pdf",
"sha256": "a5b0676270205a2c8bc01b46c26cbe47df104af4227ce9f6ffb9231de49bcea5"
},
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-creative/render.html",
"sha256": "1cd723eb101ac3d06f87b4c2f8fa28e53252075a0f3ff5aa6002d6f6c2be6799"
},
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-creative/export.pdf",
"sha256": "a2cb73a6670d971f008b4c93be48c01e9b5ed7f555025fcb4a156e5312c57f7e"
},
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-code/render.html",
"sha256": "579dbd0e1c14afdee09f29f652e7742f5082c22e2de5f7c7ed06b954a2568d35"
},
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-code/export.pdf",
"sha256": "ef55b43bf8b71e385b8c7885e8dbeaa438704be979bc9862c8531a2249012043"
},
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity/long-en-minimal/render.html",
"sha256": "2506bfc9473a1096e29f643b6d2958ff941e226e91ee67b7f05323dd28646a6a"
},
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity/long-en-minimal/export.pdf",
"sha256": "b0658a8c46f5b26a0f8a545e7df7de0f0c21720d9c33462b9fea3b9d126a862e"
},
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity/long-nb-code/render.html",
"sha256": "48bcca5d8713960e7543d4f150bf1c7cc96e7227d9b04b69ed063241dbbc68df"
},
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity/long-nb-code/export.pdf",
"sha256": "41dde4ddcdb5b77fb20d7fadacab998d554d049483333be45a41fad711a5c3d9"
},
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity/compact-8mm-letter/render.html",
"sha256": "515fbd6d8e0d031d86fa4cf08dc71c8c508fb84ea385aa19116f6cf13c9c7567"
},
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity/compact-8mm-letter/export.pdf",
"sha256": "e15a654623c634f5048ffef6bd1692c11e171f2389c16d20e79a44f464ac8756"
},
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity/roomy-28mm-nb/render.html",
"sha256": "cc0052318c874c2600ea0c137bd377411c0f6cd1c0115c1ed65c0d1173a3f1b9"
},
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity/roomy-28mm-nb/export.pdf",
"sha256": "912ac6b6bc0071565357c71fe83c7d738392b54b7c8d62fc900e1b5486967f8f"
},
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity/grid-and-bubbles/render.html",
"sha256": "1e5fc270a8ecf02a6e6bd7ac7b0d1d50c9f15baa00fb4c37a39b7ab3c141de37"
},
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity/grid-and-bubbles/export.pdf",
"sha256": "ee7f422f35e9fece8cdd1d58aa1e0bb734434d7ac5f7f970b365de4ed99d5849"
},
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity/long-sidebar-nb/render.html",
"sha256": "823db293254304db0d8ca2a9bf249af6dd343de959d4a965e741ae4cde633590"
},
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity/long-sidebar-nb/export.pdf",
"sha256": "a5677143477c8c244fb23e9a3408763bc605866d5e561906b0668b31ade5f279"
},
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity/unbreakable-and-boundary/render.html",
"sha256": "3faf425eb9ecf0be7e5294b5f60859133f24276df9a9d6ed2e569c3cd7069978"
},
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity/unbreakable-and-boundary/export.pdf",
"sha256": "bbf2b82a2da55c5516a4cd955878a9e5619376ea83bf64541acce3b4c7993a35"
}
]
},
"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-02/browser/settings-fidelity/measurements.json",
"sha256": "e48ac171aa1915d305514d29f45182974e8fc993015f5c3dd5e9a262fa0d98a4"
},
"results": {
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/fidelity-results.json",
"sha256": "baf25ba3f32119734b6aacf541648df6d74474274346b7f8d5db256cd0bdbcd9"
},
"nativeFiles": [
{
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/dark-en-before/render.html",
"sha256": "846199be1b9e432aa9acfc0836a258e7e349a59f7ae2f199284e276c2a94f159"
},
{
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/dark-en-before/export.pdf",
"sha256": "8af35e81c00ad671d2a8f6a26e1ab85d883dba86add2bb2e550f8d977dea2428"
},
{
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/dark-en-after/render.html",
"sha256": "fc201751536f5f853fafafffe8d3ab6d6801a54fd561f2325b984044b292ae3c"
},
{
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/dark-en-after/export.pdf",
"sha256": "13a5ce2e8db75650d57fe2bbe95eef27e5eeac12190bc179c2c6c8b7ff834c3f"
},
{
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/dark-nb-before/render.html",
"sha256": "b5972b49c6b2d19f22af90b1ab72088aac0548e068695f301764f24ca1b362e2"
},
{
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/dark-nb-before/export.pdf",
"sha256": "0a0eac828be4e257bf32542a8ddfdd962fbb85f96945ea3b7ca464f11804d8d6"
},
{
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/dark-nb-after/render.html",
"sha256": "6922fe87ff0a6bcd83500fbb12bccd1d6091f35486aa39a8fc6b9c358817e64d"
},
{
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/dark-nb-after/export.pdf",
"sha256": "11e61a5065c9674e09480107752cfc5d332a4d089429a30b33e8900dc1bf8508"
},
{
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/light-en-before/render.html",
"sha256": "846199be1b9e432aa9acfc0836a258e7e349a59f7ae2f199284e276c2a94f159"
},
{
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/light-en-before/export.pdf",
"sha256": "e8ca1f134e000c7cb236980bb6f1e1c437fcc3d60145552513c757063367b3e2"
},
{
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/light-en-after/render.html",
"sha256": "fc201751536f5f853fafafffe8d3ab6d6801a54fd561f2325b984044b292ae3c"
},
{
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/light-en-after/export.pdf",
"sha256": "a15eaedfdd0887149acc541fc8ed7be3cf1247e28a391c48c398c8703e5a5bad"
},
{
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/light-nb-before/render.html",
"sha256": "b5972b49c6b2d19f22af90b1ab72088aac0548e068695f301764f24ca1b362e2"
},
{
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/light-nb-before/export.pdf",
"sha256": "3fa0ac334833ba74dce2c079d792d59a75e855e2c823c6e80ae41a08ec2c3a8f"
},
{
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/light-nb-after/render.html",
"sha256": "6922fe87ff0a6bcd83500fbb12bccd1d6091f35486aa39a8fc6b9c358817e64d"
},
{
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/light-nb-after/export.pdf",
"sha256": "f35ee49717c3e5cce7958d7661c45687f57d3afd4feb2bdefe7315b179fc0eed"
}
]
}
},
"axe": {
"counts": {
"scans": 267,
"violationEntries": 0,
"incompleteNodeOccurrences": 2040
},
"incompleteRules": {
"color-contrast": 1768,
"aria-hidden-focus": 41,
"aria-prohibited-attr": 209,
"aria-valid-attr-value": 18,
"th-has-data-cells": 4
}
},
"routes": {
"patterns": 32,
"original": 31,
"analyticsAdded": 1,
"selectedReads": 98,
"failed500Reads": 0,
"loginQueryFailureRemains": true
},
"preservationCurrent": {
"PASS": 0,
"PARTIAL": 55,
"FAIL": 1,
"DEFERRED": 1,
"BLOCKED": 0,
"NOT VERIFIED": 0,
"total": 57
},
"rawEvidence": [
{
"path": ".artifacts/p5-15-01R-02/browser/commands.json",
"sha256": "da2d87cee5ed2ae15f7d5ffd8a457cd3b33f3f940c6ecc51bd7ae0352b08274d"
},
{
"path": ".artifacts/p5-15-01R-02/browser/fidelity-commands.json",
"sha256": "768a5e677c7752f38a3e88c3e211b0011135957569e3babd901de03d169c7f1e"
},
{
"path": ".artifacts/p5-15-01R-02/frontend/summary.json",
"sha256": "d286487cb6b997c21f4b7f99d51e54f3149e3aaf0dbea426a5b265ecd07c413b"
},
{
"path": ".artifacts/p5-15-01R-02/frontend/jest.json",
"sha256": "25610151a05492618e10e115d69e455365819968176ada0c84ef744bb5186d25"
},
{
"path": ".artifacts/p5-15-01R-02/backend/full/summary.json",
"sha256": "fc7824f7efe1338e3ccb4c3c7a21b95dab8a36b2d55a3d8a1afffaa564ae7d94"
},
{
"path": ".artifacts/p5-15-01R-02/browser/main.json",
"sha256": "88eeb286eb2bbf20aaba593d612fdaf06dadbd8c354cd1b6eb4cf1261fb31bc8"
},
{
"path": ".artifacts/p5-15-01R-02/browser/diagnostics.json",
"sha256": "f6ef8ec5f23c384778474541d151e1f6914e8dba8c4d8a808ab5a34cfe9018f4"
},
{
"path": ".artifacts/p5-15-01R-02/browser/http.json",
"sha256": "feb309dfaa4bc3f06457594dbcc18db4c86a831366383387ec326a24492b2000"
},
{
"path": ".artifacts/p5-15-01R-02/browser/rate-limit.json",
"sha256": "0645f91bb3fc1e690701a2a2ebadad369c46847a5426794439e1a538be6c99fe"
},
{
"path": ".artifacts/p5-15-01R-02/browser/ingress.json",
"sha256": "b9f88f967de2d36fd47290a2922a08e3d5fe4eb8878721533982be3a1e5267ef"
},
{
"path": ".artifacts/p5-15-01R-02/browser/pdf-admission.json",
"sha256": "d4942a055191685d8cf56be085f0ceed23341c2f739ef4b6baf1dfca5373b5b0"
}
],
"intermediateBrowserAttempts": "Initial four-case post-fix attempt used prebuilt API5202 instead of5302; after correcting the build environment two harness selectors failed; final focused four-case run and complete run retain actual zero-retry results.",
"intermittentCvUnsaved": "Prior R-01 unexplained assertion remains OPEN; current full frontend/browser pass does not establish a cause or repair.",
"production": {
"decision": "NO-GO",
"branch": "main",
"revision": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
"modified": false
},
"limits": [
"No live production provider/physical touch/software keyboard/human screen reader qualification.",
"Historical Rules500, notification contention and language-save500 causes remain open.",
"Existing Rules API has no multi-client revision/ETag conflict semantics.",
"AUTH-01 remains OPEN; no Analytics or P5-15-02 work.",
"F04, complete current backup/restore, production configuration/schema and tested rollback remain release blockers.",
"P5-13 stays deferred/unqualified/Production-withheld; no model calls/UI/activation."
]
}
+1 -1
View File
@@ -4,7 +4,7 @@ Status reconciled: 2026-10-09.
## Current repository work
- **P5-15-01R-02 — bounded Rules draft repair in progress:** [record](../redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/README.md). Native RED reproduces unsaved14→5→tab round trip→14, persisted14/zero writes. Preserve the Settings-session draft, explicit save/discard/error semantics and account boundary; full regression and acceptance evidence pending. Analytics repair/P5-15-02/P5-13/B07/production remain outside this checkpoint.
- **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.