feat(settings): complete privacy usage and data recovery presentation

This commit is contained in:
cesnimda
2026-10-20 09:58:46 +02:00
parent 36fc5d54e7
commit 8af9168014
18 changed files with 1757 additions and 74 deletions
@@ -0,0 +1,39 @@
# P7-09 — Privacy, usage and backup presentation
**Implemented CONDITIONAL GO; final hygiene and publication pending.** Preferences/Connections and the separate [import prerequisite](IMPORT_COMPATIBILITY.md) are already published. This closes the remaining approved second boundary without enabling billing, deletion, restore, provider grants or P5-13.
## Contracts and confirmed findings
Privacy retains the authenticated `/ai/settings` GET/PUT owner and its exact two-boolean write payload. Availability, effective policy and provider remain server-owned. The previous card had no read recovery, could overwrite newer edits on save acknowledgement, and could report success after unmount or in the previous language. Its new six-case regression recorded five ordinary failures and one pass before repair. An earlier mock-setup failure is retained but is not product RED evidence.
Usage retains independent `/ai/usage` and `/billing/status` GET owners, server values/limits and existing capability-gated checkout/portal endpoints. The previous card lost its heading after a read failure, silently hid billing read errors and formatted numbers in the browser host's locale. Focused RED recorded five failures and two passes. No statistics or entitlements are invented; zero limits remain server values rather than inferred eligibility.
Backup retains readable account ZIP and encrypted backup formats, filenames/content-disposition, recent-auth enforcement and exact server-provided deletion confirmation. An unavailable lifecycle read previously looked disabled. Synchronous competing downloads and late disposal also failed the new four-case regression. No backend/schema, deletion flag or restore behavior changes.
Quick Capture already uses the shared section and an accessible read-only/manual-code alternative to dragging. Preserve its origin, encoded source URL, bookmarklet and click hint. Verify it rather than rebuilding it.
## Changes and finite evidence
Privacy has GET-only Retry, truthful read versus save errors, draft/discard state, submitted-snapshot acknowledgement, synchronous save admission and session/unmount disposal. Current-locale completion feedback uses the existing notification owner. Historical external consent can still be revoked even when new external processing is unavailable. Retry focus has a named landing target; later edits are not discarded or silently saved.
Usage preserves its heading/loading/error shell and independently retries failed reads without replaying writes or resetting the other resource. Numbers and byte units follow the selected English/Bokmål locale; zero storage limits produce finite progress. Checkout/portal admission and late-response guards preserve the existing server redirect contract. They do not activate billing or qualify real billing navigation.
Backup distinguishes loading, unknown/error, explicitly disabled, available and pending states. Downloads and deletion confirmation share synchronous admission; callbacks check the immutable session/lifetime before downloading, notifying or acting on a prompt result. Existing server error/recent-auth feedback remains. Readable export is the primary action; encrypted backup remains a secondary action. The card remains lazy and disposable on its existing Settings tab boundary. A review-found Retry focus loss failed an ordinary additional regression before correction.
Affected frontend **47 cases / six suites PASS** on 20 October 2026: six privacy, ten usage, four backup lifetime, four existing account-data export, two Settings lifetime and 21 existing Settings cases. Backend **22 existing cases PASS** across privacy policy, account export/deletion and billing contracts, using the unchanged Release test binary. These are focused results, not a fresh whole-suite claim. New cases derive frontend inventory **855/99** from the last full **837/97** baseline; four added browser cases derive **339** from 335. Final gate timestamps/export/source identities and exact native results must be appended below before acceptance.
## Preservation and qualifications
The final native Settings suite passes **9/9**, zero skips/retries/flaky outcomes, **07:52:55–07:54:24 UTC**. Four cases are new: actual privacy persistence/isolation/recovery, eight-width privacy/backup/Quick Capture, independent actual Free usage/billing read recovery, and actual protected ZIP byte identity/lifecycle/disposal. It retains all five existing Preferences/Connections cases. Import four, actual CSV consumer one and ordinary P2-D01 one also pass on the final export. Fresh Rules/Settings eight-case consumer completion is recorded in the final results before publication.
There are **37 PNGs and 37 all-enabled axe scans**, zero violations, **141 incomplete nodes**: 37 invisible zero-count badge text checks, 99 overlapping-background contrast checks, and five closing MUI menu portal focus checks. Raw rule/node contexts are retained without exclusions. The latter portals are marked `aria-hidden` while the closing option remains mounted; native section selection restores focus, but settled tabbing and human AT acceptance remain qualified. Fixed chrome/snackbar and scrolled control overlap prevents automated background determination; contextual contrast/manual obligations remain. No incomplete is relabelled a passing contrast or reader check.
Six final PNGs were actually inspected: 320px Bokmål dark Backup and dirty Privacy, 768px Bokmål light Privacy, 390px English light usage recovery and real export, and 1440px English light Privacy. Other images are retained automated evidence. The added geometry checks initially identified MUI Switch's intentionally transparent 300%-wide input; only unpainted opacity-zero input proxies are excluded from painted-control bounds. Their visible labels/controls, root overflow and all-enabled axe checks remain tested. This is fixture triage, not a product overflow fix or accessibility exclusion.
The [portable final results](evidence/data-privacy-backup-results.json) record exact commands, result hashes, final export identity, during-run source observation and matching post-run identities. The observation is explicitly not represented as preceding command start. Earlier candidates, ordinary REDs, setup failures and their builds remain historical evidence.
Final export **`TUs6Z9wfC6aEYGOeW_UZ-`** passes app/browser TypeScript, lint and build plus **23/23 native cases**, zero skips/retries/flaky outcomes: Settings nine, import four, CSV one, ordinary P2-D01 one and fresh Rules/Settings consumers eight. The consumer lane completed **07:57:22 UTC**. This supersedes the pending-consumer observations above. All nine observed source identities still match after the runs. Final hygiene and publication are recorded in the ledger; no whole-suite, deployed or human acceptance is inferred from these gates.
All 57 preservation groups remain **56 PARTIAL / C11 DEFERRED**, with 33 routes. S03/S04/S05/J10/E09/W11 receive bounded presentation, lifecycle and persistence evidence. Existing Rules ownership, language/local preferences, notification delivery and provider controls remain separate. Backend ownership, actual deletion availability and recent-auth checks are not replaced by UI state.
Account deletion is not executed in native tests. Unit tests exercise its existing exact-phrase and disposal guards with mocks. A downloaded ZIP is not backup/restore proof. Real billing/provider/SMTP/model/deletion/restore operations, human screen-reader, physical touch/software keyboard, actual browser zoom, production fonts/photos/print and all retained reliability/production debts remain unverified. P5-13 stays withheld, followMode stays deferred, Phase 8 implementation has not started. Production readiness remains NO-GO despite the owner's separate authorization to deploy the existing release.
@@ -0,0 +1,42 @@
# Owner-authorized main promotion — 2026-10-17
**The owner authorized one main promotion despite the recorded NO-GO qualifications. Deployment has been triggered; live deployment is not yet verified.** This authorization does not convert technical release readiness into GO.
The owner first requested a push to main, then explicitly accepted the outstanding NO-GOs/pending items and asked for the completed work to go live. This later decision supersedes the earlier instruction to keep main unchanged for this one promotion. The authorization and exact command are retained in the [portable receipt](evidence/owner-authorized-release.json), with hashed original observations.
## Promoted revision and boundaries
The root agent pushed only the latest completed, already published development commit, **`e7dba9a2f776c55e3c4f4df7ef59076f93fa92df`** (`feat(settings): preserve drafts and connection recovery`), to `refs/heads/main`. The normal push ran **2026-10-17 13:54:33.243078–13:54:35.214338 UTC** and exited 0.
Direct verification at **13:54:35.567674 UTC** recorded local/origin/live main and development HEAD/live development at that revision. Main previously referenced `27657f31131cd95d42f0e1290853ec9c9b3959a4`. Historical statements that main remained at that earlier revision are valid for their recorded observation times; the standing main revision after this promotion is e7dba9a.
The pending import compatibility repair, General lifetime foundation, backend company-create prerequisite, associated tests and unfinished documentation were **excluded**. The recorded working-tree path lists match before and after the push; remote revision equality does not mean the worktree was clean. No unfinished change was committed or included merely to deploy it.
## Deployment observation
Read-only Gitea API observations identify [run 820, number 401](https://git.cesnimda.uk/cesnimda/jobtrackingapp/actions/runs/820), triggered by a main push for the exact e7dba9a revision.
| Observation UTC | Recorded state |
|---|---|
| `13:55:16.507277` | Run 820 `in_progress`, conclusion absent. |
| `13:56:07.968311` | Run still `in_progress`; test job 1699 `in_progress`; deploy job 1700 `waiting`; neither has a conclusion. |
These observations prove the trigger and workflow identity. They do not prove successful deployment, deployed runtime identity, authenticated smoke behavior or production health. The root agent will append the eventual CI/deployment outcome when supported by evidence. This report performs no additional push or deployment action.
## Qualifications remain
The [debt register](../DEBT.md) and [preservation matrix](../PRESERVATION.md) remain authoritative. Production ingress/topology, complete backup/restore, effective schema/configuration, tested rollback, deployed revision/smoke/monitoring and applicable human/device/provider/output qualifications remain open. P5-13 stays withheld; Phase 8 has not started. P7-09's remaining data/privacy/plan/backup work is still pending.
**Technical production readiness: NO-GO qualifications retained. Owner-authorized promotion: pushed. Deployment/live verification: pending.** This was a one-time override for e7dba9a, not authorization to promote later development commits automatically or to mark outstanding requirements complete. Further main promotion needs separate owner authorization and an explicit evidence-based release decision.
## Authorized repair continuation — 20 October 2026
The owner subsequently reported the failed deployment, supplied runner SSH access and explicitly instructed continued investigation and pushes to main. This authorizes coherent release repairs; it does not automatically promote unfinished Phase 7 work or close release qualifications. The specific dev-only braces advisory exception through 31 October 2026 was separately owner-approved. It does not cover other advisories or production dependencies.
Main now references **`cc7977131a4f991578f29d83eec17a242a858fca`**, directly verified against the remote. The chronological repair chain is dependency/audit policy `2278473`, visible browser diagnostics `32bc65c`, approved-route census `f9bf31c`, portable Python fixtures `e5aba4c`, confirmation keyboard scroll `985c719`, shared login-fixture capacity `9234d0a`, and exact notification-caption locator `cc79771`. Each repair has its own infrastructure record, focused verification and normal push. No force push or production database operation was used.
Diagnostic [run 828](https://git.cesnimda.uk/cesnimda/jobtrackingapp/actions/runs/828) passed backend 1054, frontend 824/95 and sidecar 49, then failed its browser lane with **274 passed / 57 failed**. All 57 cases are accounted for: 35 shared-fixture login 429, 15 missing local wrapper in Linux seed fixtures, four nonexact caption queries matching a live announcement, two stale route assertions and one actual scrollable confirmation keyboard barrier. The corresponding targeted fixes preserve assertions, ownership, rate-limit contracts and accessibility checks. Its complete 2,143-entry browser artifact was downloaded and ZIP CRC-checked, SHA256 `e9059617eb3a784de94695b0497227fd1f5f5f1ad10c1e40c9b6019c288c0847`.
The corrected [run 831](https://git.cesnimda.uk/cesnimda/jobtrackingapp/actions/runs/831) is queued behind older runs as of 07:47 UTC. Existing Git-token authentication cannot cancel web-only queued runs through a supported API; no sessions or server records were forged or altered. Deployment, deployed source identity and live smoke remain **unverified**. The last verified healthy live source remains the older `7d641ed` revision. The separately downloaded Qwen 3.5 candidate has not been activated; P5-13 remains withheld.
Development independently published company repair `5addcde` and import prerequisite `3028d81`; neither was silently included in the release. The normal development merge **`36fc5d54e781dcad077c2064edc5c5adef1d4e24`**, pushed and directly verified **07:50:40 UTC**, incorporates the release repairs while preserving every intervening working-file hash. Privacy/usage/backup changes remain a separate unfinished boundary at this observation. Technical production readiness remains NO-GO under the existing operator/manual gates despite explicit owner authorization to deploy the release.
+7 -1
View File
@@ -35,4 +35,10 @@ The [separate sender repair](OAUTH_SENDER.md) is published asdac2927, directly v
The [import compatibility boundary](IMPORT_COMPATIBILITY.md) is implemented **CONDITIONAL GO**: fresh full frontend 837/97, full backend 1057, native 25 and type/lint/build gates pass; 11 all-enabled scans have zero violations with contextual incompletes retained. The independent company contract repair is published as `5addcde1e22e9625d1b39df037a05b24c69c9cde`, remote verified 07:16:14 UTC. Import's 13 new frontend cases/two suites and four browser cases derive inventory 837/97 and 335 respectively. These do not claim a complete 335-case browser acceptance.
**P7-09 acceptance: PENDING.** Privacy, usage/plan presentation, Quick Capture and backup/data lifecycle remain next within the approved second boundary. Each needs meaningful regression, applicable native/visual evidence, preservation reconciliation, hygiene, commit and normal push/direct verification. Main was separately owner-authorized for deployment despite retained NO-GO qualifications; current release CI is being repaired, with no deployment success claimed.
## Remaining data presentation completion — 20 October 2026
[Privacy, usage and backup](DATA_PRIVACY_BACKUP.md) now have 47 affected frontend cases/six suites, 22 existing backend contracts, final native Settings nine, import four, CSV one and ordinary P2-D01 one PASS. Types/lint/build pass; fresh Rules/Settings eight-case consumer completion and final hygiene/publication are recorded before exit. Quick Capture's manual code remains accessible and is verified rather than rebuilt. The 37 final axe scans report zero violations and 141 contextually triaged incomplete nodes; six actual final PNGs were inspected. Inventory becomes frontend **855/99**, browser **339**, backend **1057**; fresh whole integrated acceptance remains P7-12.
Final Rules/Settings consumer eight PASS at **07:57:22 UTC**, bringing the final export's focused native total to **23/23**, zero skipped/flaky/retries. Export `TUs6Z9wfC6aEYGOeW_UZ-` and all observed source identities match the [final portable evidence](evidence/data-privacy-backup-results.json).
**P7-09 implemented acceptance: CONDITIONAL GO, publication pending.** The two approved presentation boundaries and independent sender/import/company repairs are complete within their bounded scope. All 57-group/manual/provider/output/reliability/production qualifications remain. P5-13 is withheld and followMode deferred. [Owner-authorized release continuation](OWNER_AUTHORIZED_RELEASE.md) is separate; current main `cc79771` has a queued corrected release run, with no deployment success claimed. P7-10 Users, Audit and System follows in three separate commits after publication.
@@ -0,0 +1,851 @@
{
"observedUtc": "2026-10-20T07:57:41.951973+00:00",
"sourceObservation": {
"observedUtc": "2026-10-20T07:51:59.477231+00:00",
"scope": "Captured during validation command, before browser lane; not before command start",
"sources": {
"src/components/AiPrivacySettingsCard.tsx": "7534422effa4b8720e27ee34e3ff1c9fb5c74e6d5d6db3fe3810028aff7d1e7e",
"src/components/AiUsageCard.tsx": "0592eea7ea9c43f72a9685e03a2e9911f96dc760e8d60ba17ac754956f9d700e",
"src/components/BackupCard.tsx": "b356961a48d35a4631f145f3b34cf7997bba20f4a1d2bb25508b2305e7e7b111",
"src/components/QuickCaptureCard.tsx": "0b0da2d773a7323a3341f082a803e6cd3cef8079d7c2101100b706b64c305bbb",
"src/i18n/translations.ts": "62094ca66c7da22670d2a886430d838059e8c9f8a8f45fdf0236566dbbc3116a",
"src/ai-privacy-settings.test.tsx": "a53eda1c305cc9e3ab16a4f52603a8cb6d881aa58e88a22e112eb33103c5a404",
"src/ai-usage-card.test.tsx": "922d3c18cce51df0ed0ba89bf1dd383bc8611f2323fbcb51677c3562808a87a9",
"src/backup-lifetime.test.tsx": "e67d22d13a5edaedc29d57e3afc36614cdf4844d510d1ecd661d5254d39e2ca3",
"e2e/phase7-settings-preferences.spec.ts": "6269a229d0caecc5b248490bfd7e1c820220494c278f204cca3085db2096f9cc"
}
},
"allObservedSourcesStillMatch": true,
"buildId": "TUs6Z9wfC6aEYGOeW_UZ-",
"gates": {
"typecheck": {
"commandReport": ".artifacts/phase7/current/ui/typecheck-command.json",
"commandReportSha256": "cba98f83767f45cf39eedafd58267565a61b694316880b020d813e0cd82ab3f6",
"name": "typecheck",
"command": [
"rtk",
"proxy",
"npm.cmd",
"run",
"typecheck"
],
"startedUtc": "2026-10-20T07:51:49.264976+00:00",
"finishedUtc": "2026-10-20T07:52:03.819879+00:00",
"exitCode": 0
},
"browser-typecheck": {
"commandReport": ".artifacts/phase7/current/ui/browser-typecheck-command.json",
"commandReportSha256": "63f0ed813c9aa30f3b5a70fe8d39c463e5cdd8a39231807b021be16f3bd6e2d6",
"name": "browser-typecheck",
"command": [
"rtk",
"proxy",
"npm.cmd",
"exec",
"tsc",
"--",
"--project",
"../.artifacts/phase7/e2e-tsconfig.json",
"--noEmit"
],
"startedUtc": "2026-10-20T07:52:03.822905+00:00",
"finishedUtc": "2026-10-20T07:52:11.243170+00:00",
"exitCode": 0
},
"lint": {
"commandReport": ".artifacts/phase7/current/ui/lint-command.json",
"commandReportSha256": "d8355db8535887672d6a9c9ac1bf03dd7e7500ba92f0ea20f8f1a358816f9558",
"name": "lint",
"command": [
"rtk",
"proxy",
"npm.cmd",
"run",
"lint"
],
"startedUtc": "2026-10-20T07:52:11.245684+00:00",
"finishedUtc": "2026-10-20T07:52:39.638127+00:00",
"exitCode": 0
},
"build": {
"commandReport": ".artifacts/phase7/current/ui/build-command.json",
"commandReportSha256": "82e051d76a20c7b0703dae5a4ae9d131d373eb6dd24e3e3cd5c5bb193216717e",
"name": "build",
"command": [
"rtk",
"proxy",
"npm.cmd",
"run",
"build"
],
"startedUtc": "2026-10-20T07:52:39.641167+00:00",
"finishedUtc": "2026-10-20T07:52:54.735129+00:00",
"exitCode": 0
},
"settings-preferences": {
"commandReport": ".artifacts/phase7/current/ui/settings-preferences-command.json",
"commandReportSha256": "4903b52856e3b86b0e53660d9b54de0b8d90280a304f497084be93e29853950d",
"name": "settings-preferences",
"command": [
"rtk",
"proxy",
"node",
"node_modules/@playwright/test/cli.js",
"test",
"e2e/phase7-settings-preferences.spec.ts",
"--retries=0",
"--reporter=list,json",
"--output=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\phase7\\current\\ui\\settings-preferences-results"
],
"startedUtc": "2026-10-20T07:52:54.742749+00:00",
"finishedUtc": "2026-10-20T07:54:24.305964+00:00",
"exitCode": 0,
"stats": {
"startTime": "2026-10-20T07:52:55.385Z",
"duration": 88851.89600000001,
"expected": 9,
"skipped": 0,
"unexpected": 0,
"flaky": 0
},
"resultSha256": "a0e30d00df58f5465b95cfefca3cd8e82802beec9bc895f1217c0760ab72d614"
},
"job-import": {
"commandReport": ".artifacts/phase7/current/ui/job-import-command.json",
"commandReportSha256": "f706aee3a938f2e3fc8aaba38be945e6f7c78d64453b850b4966bd3c9bd5f68d",
"name": "job-import",
"command": [
"rtk",
"proxy",
"node",
"node_modules/@playwright/test/cli.js",
"test",
"e2e/phase7-job-import.spec.ts",
"--retries=0",
"--reporter=list,json",
"--output=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\phase7\\current\\ui\\job-import-results"
],
"startedUtc": "2026-10-20T07:54:24.313711+00:00",
"finishedUtc": "2026-10-20T07:54:59.006743+00:00",
"exitCode": 0,
"stats": {
"startTime": "2026-10-20T07:54:24.872Z",
"duration": 34086.384000000005,
"expected": 4,
"skipped": 0,
"unexpected": 0,
"flaky": 0
},
"resultSha256": "732de69d2276c76608f535fd86d31f21e229d0be0ba27cc061d9c1cfbabbafe6"
},
"job-import-consumers": {
"commandReport": ".artifacts/phase7/current/ui/job-import-consumers-command.json",
"commandReportSha256": "a169eafb28425afccd9c9861ec52417f608ee3a27e7fd2b7bc06f663df7ed7d0",
"name": "job-import-consumers",
"command": [
"rtk",
"proxy",
"node",
"node_modules/@playwright/test/cli.js",
"test",
"e2e/csv-export.spec.ts",
"--retries=0",
"--reporter=list,json",
"--output=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\phase7\\current\\ui\\job-import-consumers-results"
],
"startedUtc": "2026-10-20T07:54:59.013133+00:00",
"finishedUtc": "2026-10-20T07:55:12.280125+00:00",
"exitCode": 0,
"stats": {
"startTime": "2026-10-20T07:54:59.656Z",
"duration": 12588.025,
"expected": 1,
"skipped": 0,
"unexpected": 0,
"flaky": 0
},
"resultSha256": "f16ea2fc807bcdd05e755c7dedf9f633865017c4eca62eda40361c54fd90c093"
},
"application-p2d01": {
"commandReport": ".artifacts/phase7/current/ui/application-p2d01-command.json",
"commandReportSha256": "dfaa2bf42db6504a403ac1ec06746f22674401a0cf8ea39343a5d2e6615c8b98",
"name": "application-p2d01",
"command": [
"rtk",
"proxy",
"node",
"node_modules/@playwright/test/cli.js",
"test",
"e2e/redesign-preservation.spec.ts",
"--grep",
"legacy workspace preserves frozen documents",
"--retries=0",
"--reporter=list,json",
"--output=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\phase7\\current\\ui\\application-p2d01-results"
],
"startedUtc": "2026-10-20T07:55:12.288185+00:00",
"finishedUtc": "2026-10-20T07:55:26.008529+00:00",
"exitCode": 0,
"stats": {
"startTime": "2026-10-20T07:55:12.844Z",
"duration": 13127.508999999998,
"expected": 1,
"skipped": 0,
"unexpected": 0,
"flaky": 0
},
"resultSha256": "f738c9c39dd238b42bb96bfd977e85a628414198b54ecd2fe255992a650420e5"
},
"settings-consumers": {
"commandReport": ".artifacts/phase7/current/ui/settings-consumers-command.json",
"commandReportSha256": "fa49a9c14bdf1d709e1066b951857c608cadcf63ecc7d4db6b340395fe238a3d",
"name": "settings-consumers",
"command": [
"rtk",
"proxy",
"node",
"node_modules/@playwright/test/cli.js",
"test",
"e2e/rules-draft-repair.spec.ts",
"e2e/settings-page-layout.spec.ts",
"--retries=0",
"--reporter=list,json",
"--output=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\phase7\\current\\ui\\settings-consumers-results"
],
"startedUtc": "2026-10-20T07:55:36.638831+00:00",
"finishedUtc": "2026-10-20T07:57:22.106599+00:00",
"exitCode": 0,
"stats": {
"startTime": "2026-10-20T07:55:37.208Z",
"duration": 104857.419,
"expected": 8,
"skipped": 0,
"unexpected": 0,
"flaky": 0
},
"resultSha256": "59c6302f99df8046ac42e95a4aac0bc7ce6a438386704e589b63dada6f9faa43"
}
},
"nativeImages": [
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/privacy-controlled-save-failure-en-light-390.png",
"sha256": "139925c538543e15efb2d15cb859627b1ad64bfeb6f7b8c42c96d3dce18a8e55"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/privacy-dirty-320-nb-dark.png",
"sha256": "c2a3519ddd1b30223286483fc79121343089f1bc95fe5aca480811ca8f6c21c0"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/backup-disabled-320-nb-dark.png",
"sha256": "f4bc27cdb9ba16d772c52e63d30377428d5c619acbfad8a83d63191f6903b1c5"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/privacy-dirty-360-en-light.png",
"sha256": "2e69bc285dcfcb78d36f55f598697fc2f8c817525800b2fd0a6e1e609d90c21a"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/backup-disabled-360-en-light.png",
"sha256": "9e38c3f9507e9485400c760d7fb57d80d17743c3a017b8c8657133f3de71e327"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/privacy-dirty-390-en-dark.png",
"sha256": "7771f2ed991d1fd17d16995a34b0deb61567210e24f1a69696676c95d2689a99"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/backup-disabled-390-en-dark.png",
"sha256": "da4a80368f93fe89d054d2e6583ba61c3f27ace5d53e4348935d25cdacd71c1a"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/privacy-dirty-768-nb-light.png",
"sha256": "d444084d22e91a57fd3a08405965f4186110c79701842f79627715b4436a88c9"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/backup-disabled-768-nb-light.png",
"sha256": "8f35df7e2aa318499f5ed6d201e06168ad54e06cb5bde400541229a1290070d8"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/privacy-dirty-1024-en-dark.png",
"sha256": "15b54068e58a44638891e0573fcf9caa49010ae98e9667660fab4ce6a4b92cb0"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/backup-disabled-1024-en-dark.png",
"sha256": "ba068b0fc45d7dbd2240589f669f79a1714beef59d3cdf5117ed61678172b42d"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/privacy-dirty-1280-nb-light.png",
"sha256": "b401fab54e29ba0f2298acd4cd24cd5b3a8b5c2d6164e64bb2348ed7a4d35dfd"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/backup-disabled-1280-nb-light.png",
"sha256": "c3631f902190ddea4601eab491ceb612b9fce08783cdf6901397cad0a2708b6a"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/privacy-dirty-1440-en-light.png",
"sha256": "aefa978879a29b9f30b6481c996d31caa919ecc8a117f7a1f3195a23eff087f8"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/backup-disabled-1440-en-light.png",
"sha256": "14862f226bd8b9a36ac116e050e7675798ea928ee3e852eff729f7643f636a60"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/privacy-dirty-1920-nb-dark.png",
"sha256": "025b0ab5cdd183e2e4406afdb54b45fa5096dd24a14f23f8c942ac99f1fa9a36"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/backup-disabled-1920-nb-dark.png",
"sha256": "81297950588804aa22e62c2d41d14b95a577e6953896fb2329504a9e5769c42b"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/usage-actual-free-independent-read-recovery-en-light-390.png",
"sha256": "451348584b261a771b4cec4af500a47cb6b0d16caed992f12c34e8a51ca2a662"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/backup-actual-readonly-lifecycle-and-protected-export-en-light-390.png",
"sha256": "c93faa707992d628f863115fc7ebc02156966c2905ff305813ad3e9995fd2a44"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/held-notification-newer-draft-nb-390.png",
"sha256": "d46c2208b584a8c32cf739066446ebdf66789c24061cc9d01a434483802774ec"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/controlled-notification-initial-get503-en-320.png",
"sha256": "d9731d0cf9c9a370469632304c78c64bff1e294a77cdc5178ffeadc6bd3d3123"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/controlled-notification-save503-draft-en-320.png",
"sha256": "abd2216196c750e807835e8e396b82aa2e0a20f6ce13fc64601458f43990a8f8"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/controlled-gmail-status503-independent-providers-en-390.png",
"sha256": "55b5e520ff8f1020490a4e517a71ed8950f6bd1bb3482703d8a250a1db36e9a4"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/notifications-320-nb-dark.png",
"sha256": "cf8dd8bb1c6da172ca10f8899eab003475296f7f83bc3940c0122d234ecebef8"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/controlled-long-address-connections-320-nb-dark.png",
"sha256": "b4af4840485e32dbb879b156aa21f15c58a3ee38e2adb6707ee40c39d7ab95d0"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/notifications-390-en-light.png",
"sha256": "735c650b55c81d319527ed51f45b2186df6072647f6d2192ccf6d130fa3e3b89"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/controlled-long-address-connections-390-en-light.png",
"sha256": "d6e41504799bbc96ce7079be82d0499dd7034c2e580dbe75c4b778f445b710d8"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/notifications-768-nb-light.png",
"sha256": "a4f30556036141f50df8c96cdbb70d58663c1f12b9fa77af1de49e8363a83e64"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/controlled-long-address-connections-768-nb-light.png",
"sha256": "331f3464838c1b4dd3a77aef2991d15b84d7a2f667ad687e75b0ca4ba62419ea"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/notifications-1024-en-dark.png",
"sha256": "f97b5e2591c50d8cc908f8130c8f7cb44c3f0864155c2e3d6b066592e5c5b451"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/controlled-long-address-connections-1024-en-dark.png",
"sha256": "64b5b82c7b8e75aa253b07e265c3d8aa8e78cf007919028cf05feaf791d56a03"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/notifications-1280-nb-dark.png",
"sha256": "2749d3a3f21d775db59fd7f26386b4dcbfaed7c541a2a22cfa708720fd469d16"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/controlled-long-address-connections-1280-nb-dark.png",
"sha256": "c6c8a179fc69ab19f2ec657e3a651cd31c2b8e5c5dfd3a09f6c696f26db78880"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/notifications-1440-en-light.png",
"sha256": "9c2b65ee148d251760689646712c27ab8c7612c08662cd155b70f63b7545d2c0"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/controlled-long-address-connections-1440-en-light.png",
"sha256": "72847c1d419003c96401a1361add8cd732ff448d4809f7668e4f9c7b8eeda76e"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/notifications-1920-en-dark.png",
"sha256": "ac64333c28ee74ac4cf97a367145aef9c1d041aa34691a1e0b979194f1714381"
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/controlled-long-address-connections-1920-en-dark.png",
"sha256": "335ae0e61ece476bc2cbbef4e9d1e6df00528a1a430b60921f3557e3d4a6f737"
}
],
"axe": [
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/privacy-controlled-save-failure-en-light-390-axe.json",
"sha256": "93d46aeaeefb653bc7a669f3d3793a16967e6a0e78afd309acfb0a851de55b8c",
"violations": 0,
"incompleteGroups": 1,
"incompleteNodes": 7,
"incompleteRules": [
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/privacy-dirty-320-nb-dark-axe.json",
"sha256": "625c49c7d6f3abb2ee1c84ce2d4b78c4fcd5782de3e1351c4d588be3dc2c8349",
"violations": 0,
"incompleteGroups": 1,
"incompleteNodes": 6,
"incompleteRules": [
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/backup-disabled-320-nb-dark-axe.json",
"sha256": "70df2d0d0ba9cb54b28830a68d99b99c3315ae863218f213216f1305d8aee9c1",
"violations": 0,
"incompleteGroups": 2,
"incompleteNodes": 3,
"incompleteRules": [
"aria-hidden-focus",
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/privacy-dirty-360-en-light-axe.json",
"sha256": "c73d5f410960ba78703f2b5dd59747902a4597635460a771a6c2e47b31818c96",
"violations": 0,
"incompleteGroups": 1,
"incompleteNodes": 6,
"incompleteRules": [
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/backup-disabled-360-en-light-axe.json",
"sha256": "e7e783564764d8970eee7ef06d13261d39116b60a9d0504cb2a4124850d9ec2b",
"violations": 0,
"incompleteGroups": 2,
"incompleteNodes": 3,
"incompleteRules": [
"aria-hidden-focus",
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/privacy-dirty-390-en-dark-axe.json",
"sha256": "dfba0e2d83eb0521f8137866054a35e93a21c689ae274750dd001f59c547b425",
"violations": 0,
"incompleteGroups": 1,
"incompleteNodes": 6,
"incompleteRules": [
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/backup-disabled-390-en-dark-axe.json",
"sha256": "e7e783564764d8970eee7ef06d13261d39116b60a9d0504cb2a4124850d9ec2b",
"violations": 0,
"incompleteGroups": 2,
"incompleteNodes": 3,
"incompleteRules": [
"aria-hidden-focus",
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/privacy-dirty-768-nb-light-axe.json",
"sha256": "eb1ad502af6635bfde32e2a26811645a694715f2ee0f96ed2b208f0fbb05420b",
"violations": 0,
"incompleteGroups": 1,
"incompleteNodes": 5,
"incompleteRules": [
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/backup-disabled-768-nb-light-axe.json",
"sha256": "8cedfafb85b72ea79df3954030df769da226aeecb8d7e91f92905246eec951a7",
"violations": 0,
"incompleteGroups": 1,
"incompleteNodes": 2,
"incompleteRules": [
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/privacy-dirty-1024-en-dark-axe.json",
"sha256": "04bb23b453e6a78f8f0d85aa07d2244f3cb46c57a08fc7f1a9c9f598dc153b54",
"violations": 0,
"incompleteGroups": 1,
"incompleteNodes": 5,
"incompleteRules": [
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/backup-disabled-1024-en-dark-axe.json",
"sha256": "8cedfafb85b72ea79df3954030df769da226aeecb8d7e91f92905246eec951a7",
"violations": 0,
"incompleteGroups": 1,
"incompleteNodes": 2,
"incompleteRules": [
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/privacy-dirty-1280-nb-light-axe.json",
"sha256": "0feabcf543b5433507ca4578033d691a038692f67e9b7fc567e9ed37f84da46f",
"violations": 0,
"incompleteGroups": 1,
"incompleteNodes": 5,
"incompleteRules": [
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/backup-disabled-1280-nb-light-axe.json",
"sha256": "8cedfafb85b72ea79df3954030df769da226aeecb8d7e91f92905246eec951a7",
"violations": 0,
"incompleteGroups": 1,
"incompleteNodes": 2,
"incompleteRules": [
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/privacy-dirty-1440-en-light-axe.json",
"sha256": "ed63686ec7dc957368edbe79329445eb400f0fcd2a9e8f2e6cb5785895b22b2d",
"violations": 0,
"incompleteGroups": 1,
"incompleteNodes": 5,
"incompleteRules": [
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/backup-disabled-1440-en-light-axe.json",
"sha256": "8cedfafb85b72ea79df3954030df769da226aeecb8d7e91f92905246eec951a7",
"violations": 0,
"incompleteGroups": 1,
"incompleteNodes": 2,
"incompleteRules": [
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/privacy-dirty-1920-nb-dark-axe.json",
"sha256": "0736d0e4d8bc11c10181cae84f871d159a676a57cb9254904a79b44a87128a4f",
"violations": 0,
"incompleteGroups": 1,
"incompleteNodes": 5,
"incompleteRules": [
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/backup-disabled-1920-nb-dark-axe.json",
"sha256": "8cedfafb85b72ea79df3954030df769da226aeecb8d7e91f92905246eec951a7",
"violations": 0,
"incompleteGroups": 1,
"incompleteNodes": 2,
"incompleteRules": [
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/usage-actual-free-independent-read-recovery-en-light-390-axe.json",
"sha256": "c73d5f410960ba78703f2b5dd59747902a4597635460a771a6c2e47b31818c96",
"violations": 0,
"incompleteGroups": 1,
"incompleteNodes": 6,
"incompleteRules": [
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/backup-actual-readonly-lifecycle-and-protected-export-en-light-390-axe.json",
"sha256": "0ff42db4e9e427373beca84fca5f2acef60e7bd120760b505f985dd30d8cefe4",
"violations": 0,
"incompleteGroups": 1,
"incompleteNodes": 3,
"incompleteRules": [
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/held-notification-newer-draft-nb-390-axe.json",
"sha256": "883e8ec56809f9252c959d0b629c6cf1a79107f6ac8a394fbc581c25a9f619b9",
"violations": 0,
"incompleteGroups": 1,
"incompleteNodes": 3,
"incompleteRules": [
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/controlled-notification-initial-get503-en-320-axe.json",
"sha256": "7fca66307879c302a9789fd8b18e50e7446aaaa93c6494ca2939d157eb484d8b",
"violations": 0,
"incompleteGroups": 2,
"incompleteNodes": 3,
"incompleteRules": [
"aria-hidden-focus",
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/controlled-notification-save503-draft-en-320-axe.json",
"sha256": "7fca66307879c302a9789fd8b18e50e7446aaaa93c6494ca2939d157eb484d8b",
"violations": 0,
"incompleteGroups": 2,
"incompleteNodes": 3,
"incompleteRules": [
"aria-hidden-focus",
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/controlled-gmail-status503-independent-providers-en-390-axe.json",
"sha256": "505b7cad594f5ea8d48edd2974020f9d17626b2b1cd3a3e8ee9caa9b4ff3c389",
"violations": 0,
"incompleteGroups": 1,
"incompleteNodes": 5,
"incompleteRules": [
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/notifications-320-nb-dark-axe.json",
"sha256": "4ebfa00c4389905c8ec6580fa86299c605388a2a80599c306361bb6f080c831b",
"violations": 0,
"incompleteGroups": 1,
"incompleteNodes": 2,
"incompleteRules": [
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/controlled-long-address-connections-320-nb-dark-axe.json",
"sha256": "8a2c88c22638ec87e930799a201d6f92998dbd908570dfbd7f951f91dcdd764b",
"violations": 0,
"incompleteGroups": 1,
"incompleteNodes": 5,
"incompleteRules": [
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/notifications-390-en-light-axe.json",
"sha256": "df10ac73cf443967575a4dfedc3536d418b69298c8b17bbbac660cc220a261ca",
"violations": 0,
"incompleteGroups": 1,
"incompleteNodes": 2,
"incompleteRules": [
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/controlled-long-address-connections-390-en-light-axe.json",
"sha256": "8a2c88c22638ec87e930799a201d6f92998dbd908570dfbd7f951f91dcdd764b",
"violations": 0,
"incompleteGroups": 1,
"incompleteNodes": 5,
"incompleteRules": [
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/notifications-768-nb-light-axe.json",
"sha256": "e0d372ebdd5ba5ac1c9586f97f497f17ad8ebbb8b368e4b877c81e080985d91d",
"violations": 0,
"incompleteGroups": 1,
"incompleteNodes": 2,
"incompleteRules": [
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/controlled-long-address-connections-768-nb-light-axe.json",
"sha256": "8a2c88c22638ec87e930799a201d6f92998dbd908570dfbd7f951f91dcdd764b",
"violations": 0,
"incompleteGroups": 1,
"incompleteNodes": 5,
"incompleteRules": [
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/notifications-1024-en-dark-axe.json",
"sha256": "e0d372ebdd5ba5ac1c9586f97f497f17ad8ebbb8b368e4b877c81e080985d91d",
"violations": 0,
"incompleteGroups": 1,
"incompleteNodes": 2,
"incompleteRules": [
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/controlled-long-address-connections-1024-en-dark-axe.json",
"sha256": "56f9f9728201d4e792e0783a88950dbc0f4263c05a3fb131d9b094c5e801306a",
"violations": 0,
"incompleteGroups": 1,
"incompleteNodes": 5,
"incompleteRules": [
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/notifications-1280-nb-dark-axe.json",
"sha256": "e0d372ebdd5ba5ac1c9586f97f497f17ad8ebbb8b368e4b877c81e080985d91d",
"violations": 0,
"incompleteGroups": 1,
"incompleteNodes": 2,
"incompleteRules": [
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/controlled-long-address-connections-1280-nb-dark-axe.json",
"sha256": "56f9f9728201d4e792e0783a88950dbc0f4263c05a3fb131d9b094c5e801306a",
"violations": 0,
"incompleteGroups": 1,
"incompleteNodes": 5,
"incompleteRules": [
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/notifications-1440-en-light-axe.json",
"sha256": "e0d372ebdd5ba5ac1c9586f97f497f17ad8ebbb8b368e4b877c81e080985d91d",
"violations": 0,
"incompleteGroups": 1,
"incompleteNodes": 2,
"incompleteRules": [
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/controlled-long-address-connections-1440-en-light-axe.json",
"sha256": "56f9f9728201d4e792e0783a88950dbc0f4263c05a3fb131d9b094c5e801306a",
"violations": 0,
"incompleteGroups": 1,
"incompleteNodes": 5,
"incompleteRules": [
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/notifications-1920-en-dark-axe.json",
"sha256": "e0d372ebdd5ba5ac1c9586f97f497f17ad8ebbb8b368e4b877c81e080985d91d",
"violations": 0,
"incompleteGroups": 1,
"incompleteNodes": 2,
"incompleteRules": [
"color-contrast"
]
},
{
"path": ".artifacts/phase7/p7-09/data-final-20261020/controlled-long-address-connections-1920-en-dark-axe.json",
"sha256": "56f9f9728201d4e792e0783a88950dbc0f4263c05a3fb131d9b094c5e801306a",
"violations": 0,
"incompleteGroups": 1,
"incompleteNodes": 5,
"incompleteRules": [
"color-contrast"
]
}
],
"focusedFrontend": {
"report": ".artifacts/phase7/current/unit/data-final-focused-20261020T074922Z-command.json",
"sha256": "4c7204b5e4e8f293a6ddd32c81484aeb518706f46dcb07af4c9d189faf885ff8",
"command": [
"rtk",
"proxy",
"npm.cmd",
"test",
"--",
"--runInBand",
"--watchAll=false",
"--json",
"--outputFile=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\phase7\\current\\unit\\data-final-focused-20261020T074922Z.json",
"src/ai-privacy-settings.test.tsx",
"src/ai-usage-card.test.tsx",
"src/backup-lifetime.test.tsx",
"src/account-data-export.test.tsx",
"src/settings-import-lifetime.test.tsx",
"src/settings-view.test.tsx"
],
"startedUtc": "2026-10-20T07:49:22.892045+00:00",
"finishedUtc": "2026-10-20T07:49:52.920162+00:00",
"exitCode": 0,
"counts": {
"numPassedTests": 47,
"numFailedTests": 0,
"numPendingTests": 0,
"numTodoTests": 0,
"numPassedTestSuites": 6,
"numFailedTestSuites": 0
}
},
"existingBackendContracts": {
"report": ".artifacts/phase7/current/backend-career/p709-data-contracts-20261020T074451Z/command.json",
"sha256": "622fe0542faa7a43f047a7bae2c1f03741f21e43a2aa20a7f55f223713e64366",
"command": [
"rtk",
"proxy",
"C:/Users/Connor/.dotnet/dotnet.exe",
"test",
"JobTrackerApi.Tests/JobTrackerApi.Tests.csproj",
"--configuration",
"Release",
"--no-build",
"--filter",
"FullyQualifiedName~AiPrivacyPolicyTests|FullyQualifiedName~AccountDataExportTests|FullyQualifiedName~AccountDeletionTests|FullyQualifiedName~BillingControllerTests",
"--logger",
"trx;LogFileName=career.trx",
"--results-directory",
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\phase7\\current\\backend-career\\p709-data-contracts-20261020T074451Z"
],
"startedUtc": "2026-10-20T07:44:51.950856+00:00",
"finishedUtc": "2026-10-20T07:44:55.839722+00:00",
"exitCode": 0,
"logSha256": "8d53bf5c33de39b9d7c3b7d29a12b50351428dbabbcc68271565dbe81acc9088",
"counts": {
"total": 22,
"passed": 22,
"failed": 0,
"notExecuted": 0
},
"resultSha256": "47b7f946d574a3bff6328e201700d62e4602d85957c6c8751e7cf4d15449fd08"
},
"inventory": {
"frontendTests": 855,
"frontendSuites": 99,
"browserTests": 339,
"backendTests": 1057,
"fullSuiteClaim": false
},
"visualInspection": {
"newImagesReviewed": [
"backup-disabled-320-nb-dark",
"privacy-dirty-768-nb-light",
"usage-actual-free-independent-read-recovery-en-light-390",
"privacy-dirty-320-nb-dark",
"backup-actual-readonly-lifecycle-and-protected-export-en-light-390",
"privacy-dirty-1440-en-light"
],
"scope": "Six actual PNGs inspected. Other retained PNGs are automated evidence. Human/device/zoom/output acceptance remains pending."
},
"incompleteTriage": {
"color-contrast:shortTextContent": {
"nodes": 37,
"context": "Invisible aria-hidden zero-count badges; not a passing contrast claim."
},
"color-contrast:bgOverlap": {
"nodes": 99,
"context": "Fixed chrome, focused/scrolled controls and snackbar overlap prevents background determination; contextual contrast/manual requirements retained."
},
"aria-hidden-focus:focusable-modal-open": {
"nodes": 5,
"context": "Closing MUI section-selector menu portals marked aria-hidden, with option still mounted during transition. Keyboard selector focus recovery passes; settled tabbing and human AT acceptance remain qualified. No axe exclusion."
}
}
}
@@ -0,0 +1,104 @@
{
"schemaVersion": 1,
"checkpoint": "p7-09",
"status": "PASS",
"checkedUtc": "2026-10-20T07:58:14.045820+00:00",
"commands": [
{
"name": "secret-scan",
"command": [
"rtk",
"proxy",
"C:\\Users\\Connor\\AppData\\Local\\Programs\\Python\\Python312\\python.exe",
"-X",
"utf8",
"scripts/supply-chain.py",
"scan-secrets"
],
"startedUtc": "2026-10-20T07:58:09.739974+00:00",
"finishedUtc": "2026-10-20T07:58:12.899975+00:00",
"exitCode": 0,
"log": ".artifacts/phase7/current/static/20261020T075809Z/secret-scan.log",
"logSha256Raw": "be5119e6057287d397e87759f855c91e634e3bfac61c8be7584d05592ba2dfcd"
},
{
"name": "working-whitespace",
"command": [
"rtk",
"proxy",
"git",
"diff",
"--check"
],
"startedUtc": "2026-10-20T07:58:12.899975+00:00",
"finishedUtc": "2026-10-20T07:58:13.025608+00:00",
"exitCode": 0,
"log": ".artifacts/phase7/current/static/20261020T075809Z/working-whitespace.log",
"logSha256Raw": "398baedb3d20830c4a35d0dba3a14da19716bd138bdd645c8f4fcca9c6ef2737"
},
{
"name": "staged-whitespace",
"command": [
"rtk",
"proxy",
"git",
"diff",
"--cached",
"--check"
],
"startedUtc": "2026-10-20T07:58:13.026116+00:00",
"finishedUtc": "2026-10-20T07:58:13.120188+00:00",
"exitCode": 0,
"log": ".artifacts/phase7/current/static/20261020T075809Z/staged-whitespace.log",
"logSha256Raw": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"name": "phase7-whitespace",
"command": [
"rtk",
"proxy",
"git",
"diff",
"--check",
"b5319981ad3d1bd635daff861453d23c0de5320b"
],
"startedUtc": "2026-10-20T07:58:13.120188+00:00",
"finishedUtc": "2026-10-20T07:58:13.345018+00:00",
"exitCode": 0,
"log": ".artifacts/phase7/current/static/20261020T075809Z/phase7-whitespace.log",
"logSha256Raw": "afcd01be43a972cd44330f1452b03e04f3c1f09e189ecb95b85e6cce9b8b1989"
}
],
"untrackedSecretScan": {
"files": 6,
"findings": 0
},
"documentation": {
"files": 30,
"relativeLinks": 621,
"errors": []
},
"preservation": {
"groups": 57,
"statuses": {
"PARTIAL": 56,
"PASS": 0,
"FAIL": 0,
"DEFERRED": 1
},
"originalRoutesPreserved": true,
"currentConcreteRoutes": 33
},
"production": {
"main": "cc7977131a4f991578f29d83eec17a242a858fca",
"originMain": "cc7977131a4f991578f29d83eec17a242a858fca",
"status": "NO-GO",
"qualification": "Local fetched refs; direct push observation recorded separately."
},
"hashPolicy": "Portable JSON UTF8 LF; raw log hashes measure exact saved bytes.",
"limits": [
"Pattern scanner skips binary and files over2MiB; not historical Git/production secrets.",
"Local links check target existence, not URL/heading anchors.",
"Static evidence is not runtime/manual/device/provider/production acceptance."
]
}
@@ -0,0 +1,201 @@
{
"schemaVersion": 1,
"scope": "One owner-authorized promotion of completed published e7dba9a; this receipt does not certify deployment or technical readiness.",
"authorization": {
"source": "Direct owner instruction in parent conversation, recorded in original push receipt",
"chronology": [
"Owner requested main promotion.",
"Owner explicitly accepted recorded NO-GOs and pending items and requested live now.",
"Root promoted only the latest completed published revision; unfinished work was excluded."
],
"recordedText": "Owner explicitly requested main push and accepted recorded NO-GOs/pending items on 2026-10-17. One promotion of latest completed published development commit only; unfinished import/backend work excluded; no future automatic deployment authorization.",
"futureAutomaticMainPromotionAuthorized": false
},
"promotion": {
"command": [
"rtk",
"proxy",
"git",
"push",
"origin",
"e7dba9a2f776c55e3c4f4df7ef59076f93fa92df:refs/heads/main"
],
"startedUtc": "2026-10-17T13:54:33.243078+00:00",
"finishedUtc": "2026-10-17T13:54:35.214338+00:00",
"exitCode": 0,
"previousMain": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
"candidate": "e7dba9a2f776c55e3c4f4df7ef59076f93fa92df"
},
"directRefs": {
"observedUtc": "2026-10-17T13:54:35.567674+00:00",
"localMain": "e7dba9a2f776c55e3c4f4df7ef59076f93fa92df",
"originMain": "e7dba9a2f776c55e3c4f4df7ef59076f93fa92df",
"liveRemoteMain": "e7dba9a2f776c55e3c4f4df7ef59076f93fa92df",
"developmentHead": "e7dba9a2f776c55e3c4f4df7ef59076f93fa92df",
"liveRemoteDevelopment": "e7dba9a2f776c55e3c4f4df7ef59076f93fa92df",
"qualification": "Remote-ref equality is not deployed runtime identity and does not imply a clean worktree."
},
"excludedWork": {
"description": "Unfinished import compatibility, Settings lifetime, backend company-create prerequisite, associated tests and documentation were not included.",
"pendingPathsBefore": [
"M JobTrackerApi/Controllers/CompaniesController.cs",
" M docs/redesign/phase-7/COMMITS.md",
" M docs/redesign/phase-7/PRESERVATION.md",
" M docs/redesign/phase-7/README.md",
" M docs/redesign/phase-7/p7-09/PREFERENCES.md",
" M docs/redesign/phase-7/p7-09/README.md",
" M docs/redesign/phase-7/p7-09/evidence/preferences-results.json",
" M job-tracker-ui/e2e/csv-export.spec.ts",
" M job-tracker-ui/src/components/ImportExportJobs.tsx",
" M job-tracker-ui/src/components/SettingsView.tsx",
" M job-tracker-ui/src/i18n/translations.ts",
"?? JobTrackerApi.Tests/CompanyCreateCompatibilityTests.cs",
"?? docs/redesign/phase-7/p7-09/IMPORT_COMPATIBILITY.md",
"?? job-tracker-ui/e2e/phase7-job-import.spec.ts",
"?? job-tracker-ui/src/job-import.test.tsx",
"?? job-tracker-ui/src/settings-import-lifetime.test.tsx"
],
"pendingPathsAfter": [
"M JobTrackerApi/Controllers/CompaniesController.cs",
" M docs/redesign/phase-7/COMMITS.md",
" M docs/redesign/phase-7/PRESERVATION.md",
" M docs/redesign/phase-7/README.md",
" M docs/redesign/phase-7/p7-09/PREFERENCES.md",
" M docs/redesign/phase-7/p7-09/README.md",
" M docs/redesign/phase-7/p7-09/evidence/preferences-results.json",
" M job-tracker-ui/e2e/csv-export.spec.ts",
" M job-tracker-ui/src/components/ImportExportJobs.tsx",
" M job-tracker-ui/src/components/SettingsView.tsx",
" M job-tracker-ui/src/i18n/translations.ts",
"?? JobTrackerApi.Tests/CompanyCreateCompatibilityTests.cs",
"?? docs/redesign/phase-7/p7-09/IMPORT_COMPATIBILITY.md",
"?? job-tracker-ui/e2e/phase7-job-import.spec.ts",
"?? job-tracker-ui/src/job-import.test.tsx",
"?? job-tracker-ui/src/settings-import-lifetime.test.tsx"
],
"pathListsUnchanged": true
},
"ciObservations": [
{
"observedUtc": "2026-10-17T13:55:16.507277+00:00",
"method": "GET",
"httpStatus": 200,
"matchingRuns": [
{
"id": 820,
"name": null,
"head_branch": "main",
"head_sha": "e7dba9a2f776c55e3c4f4df7ef59076f93fa92df",
"event": "push",
"status": "in_progress",
"conclusion": null,
"html_url": "https://git.cesnimda.uk/cesnimda/jobtrackingapp/actions/runs/820",
"created_at": null,
"updated_at": null,
"run_number": 401
}
]
},
{
"observedUtc": "2026-10-17T13:56:07.968311+00:00",
"method": "GET",
"httpStatus": 200,
"matchingRuns": [
{
"id": 820,
"name": null,
"head_branch": "main",
"head_sha": "e7dba9a2f776c55e3c4f4df7ef59076f93fa92df",
"event": "push",
"status": "in_progress",
"conclusion": null,
"html_url": "https://git.cesnimda.uk/cesnimda/jobtrackingapp/actions/runs/820",
"created_at": null,
"updated_at": null,
"run_number": 401,
"jobs": [
{
"id": 1699,
"name": "test",
"status": "in_progress",
"conclusion": null,
"started_at": "2026-10-17T13:55:05Z",
"completed_at": "1970-01-01T00:00:00Z"
},
{
"id": 1700,
"name": "deploy",
"status": "waiting",
"conclusion": null,
"started_at": "1970-01-01T00:00:00Z",
"completed_at": "1970-01-01T00:00:00Z"
}
]
}
]
}
],
"decisions": {
"technicalProductionReadiness": "NO-GO qualifications retained",
"ownerAuthorizedPromotion": "PUSHED",
"deploymentVerification": "PENDING",
"verifiedLiveRuntime": false,
"unfinishedP709DataBoundary": "PENDING",
"phase8": "NOT STARTED"
},
"remainingRequirements": [
"Production ingress/topology and trusted peer evidence",
"Complete backup/restore recovery set",
"Effective schema/configuration/secrets verification",
"Tested rollback",
"Deployed runtime revision, authenticated smoke and monitoring",
"Applicable human screen-reader, physical device, provider and output qualifications",
"P5-13 remains withheld"
],
"report": {
"path": "docs/redesign/phase-7/p7-09/OWNER_AUTHORIZED_RELEASE.md",
"sha256": "4a21780015104ea82fa57cb9e5b0c024b8f707672c48029167c3e30d8f6203f4",
"wordCount": 758,
"historicalWorkerReportSha256": "4601cd09e090183f2c2b403ece631324ad44e40c757d4927d44b6f4dce308f21",
"historicalWorkerWordCount": 412,
"continuationScope": "Root appended the separately authorized 20 October release repair observations; original promotion and CI observations below remain historical."
},
"rawReferences": [
{
"path": ".artifacts/phase7/p7-09/owner-authorized-main-push.json",
"sha256": "8374142c7bac98e2861d74404167a8a4ec6e7f68b8178f972a4c41f9e6f813b8",
"bytes": 3180
},
{
"path": ".artifacts/phase7/p7-09/owner-authorized-main-push.log",
"sha256": "2095817c619ba1fb6bfdda68809aec2d428dcf77b221fe1a38a1922ff2fd4c9d",
"bytes": 293
},
{
"path": ".artifacts/phase7/p7-09/main-ci/20261017T135515Z/observation.json",
"sha256": "65fa31fcf38a9e494263210f19fed2ba81a732b3f4fa1d28cdb6c395c97091d0",
"bytes": 711
},
{
"path": ".artifacts/phase7/p7-09/main-ci/20261017T135515Z/response.json",
"sha256": "ce9f25974b94a28ef5a585c2842532104efc693af523a6f6e3a4df86c8f4e006",
"bytes": 58756
},
{
"path": ".artifacts/phase7/p7-09/main-ci/20261017T135607Z/jobs-820.json",
"sha256": "75e9d80bbac0c4b33c2867228f64b65dc39ae387fddf990537688528c2eaba24",
"bytes": 6818
},
{
"path": ".artifacts/phase7/p7-09/main-ci/20261017T135607Z/observation.json",
"sha256": "1b81e386d4e099d75d8063b10326568d44d341a556756f9ddea88542fe44a656",
"bytes": 1213
},
{
"path": ".artifacts/phase7/p7-09/main-ci/20261017T135607Z/response.json",
"sha256": "ce9f25974b94a28ef5a585c2842532104efc693af523a6f6e3a4df86c8f4e006",
"bytes": 58756
}
],
"provenance": "Derived from existing root-agent push and read-only CI artifacts; this worker issued no Git push, API/network request, build, test or deployment. Later CI/deployment outcomes must be appended with their own observations."
}