From c5176e3251c869e13284b994b59b2f7aa9220eb1 Mon Sep 17 00:00:00 2001 From: cesnimda Date: Sat, 17 Oct 2026 04:03:50 +0200 Subject: [PATCH] fix(operations): preserve task state and accessible recovery --- docs/redesign/phase-7/COMMITS.md | 9 + docs/redesign/phase-7/DEBT.md | 9 + docs/redesign/phase-7/PRESERVATION.md | 9 + docs/redesign/phase-7/README.md | 11 +- docs/redesign/phase-7/p7-08/OPERATIONS.md | 87 + docs/redesign/phase-7/p7-08/README.md | 35 +- docs/redesign/phase-7/p7-08/RECENT.md | 3 + .../p7-08/evidence/operations-entry.json | 121 + .../p7-08/evidence/operations-results.json | 4580 +++++++++++++++++ .../evidence/operations-static-checks.json | 104 + .../p7-08/evidence/recent-results.json | 34 +- docs/roadmap/todo.md | 5 +- job-tracker-ui/e2e/phase7-operations.spec.ts | 143 + job-tracker-ui/src/i18n/translations.ts | 26 + job-tracker-ui/src/operations-page.test.tsx | 174 +- job-tracker-ui/src/views/OperationsPage.tsx | 245 +- 16 files changed, 5466 insertions(+), 129 deletions(-) create mode 100644 docs/redesign/phase-7/p7-08/OPERATIONS.md create mode 100644 docs/redesign/phase-7/p7-08/evidence/operations-entry.json create mode 100644 docs/redesign/phase-7/p7-08/evidence/operations-results.json create mode 100644 docs/redesign/phase-7/p7-08/evidence/operations-static-checks.json create mode 100644 job-tracker-ui/e2e/phase7-operations.spec.ts diff --git a/docs/redesign/phase-7/COMMITS.md b/docs/redesign/phase-7/COMMITS.md index 730a041..b3838ab 100644 --- a/docs/redesign/phase-7/COMMITS.md +++ b/docs/redesign/phase-7/COMMITS.md @@ -122,3 +122,12 @@ P7-07 implemented scope is **CONDITIONAL GO and published**. UTC transport repai ### P7-08 recent notifications — final bounded observation [Recent report](p7-08/RECENT.md) and [portable results](p7-08/evidence/recent-results.json):49/6 affected frontend, four type/lint/build gates, native6+Documents8+CV4+ordinaryP2-D01=19/19 PASS on lIzSurm9WwMhPbE11MvC9. All21 finite inputs held; unchanged API/test DLLs. All16 final notification PNGs actually reviewed;14 all-enabled scans0 violations/102 contextually triaged incompletes. Meaningful REDs/failed external-font guard attempt retained; known font CSS remains aborted. +18frontend/0suites derives773/95; +6browser derives318; separate UTC Fact derives1054backend. Last whole573/89,1033,sidecar49 remain inherited. Implemented first presentation CONDITIONAL GO pending final staged hygiene/normal push; Operations second boundary remains. All57groups56PARTIAL/C11DEFERRED,33routes, P513withheld/followModedeferred/mainunchanged/productionNO-GO/Phase8notstarted. + + +Recent-notification presentation committed and normally pushed **40cfe04df51654c5ab9a073c13c8d67e0d90dcae**; direct refs verified **2026-10-16T21:15:02.899052UTC**, clean HEAD=origin=live development and local/origin/live main27657f3 unchanged. First presentation boundary remains implemented **CONDITIONAL GO**; Operations is the next independent boundary. Earlier pending-push statements are chronological observations superseded by this receipt. No production or Phase8 action. + +### P7-08 Operations — final bounded gate + +[Operations report](p7-08/OPERATIONS.md) and [portable results](p7-08/evidence/operations-results.json) record fresh **77/7 frontend cases**, app/browser TypeScript, lint and build PASS on **YBJ6UzKUv_ZeDjZzgO3Gh**. Actual Operations5 + Notifications6 + ordinaryP2-D01 = **12/12 native PASS**; no skip/flaky/retry. All25 finite inputs held through2026-10-17T01:59:10.798235UTC; API/testDLLunchanged. All14 Operations PNGs plus one frozen-package PNG actually reviewed (15/31 final retained images); notification16 remain retained with their earlier review distinguished. Operations12 all-enabled axe scans0violations/3incompletes and notification14scans0/102 are contextually triaged, without human/device/zoom/font acceptance. Peer fixes remove the task UUID from its accessible name and restore focus only when an accepted poll removes the focused control. All ordinary REDs, candidate evidence and the test-only typing failure remain retained. + +Eighteen new Operations cases derive **791/95 frontend**; five browser cases derive **323**. Backend stays **1054**, with last whole frontend573/89, backend1033 and sidecar49 inherited untilP7-12. BothP7-08 presentation boundaries are implemented **CONDITIONAL GO**, with Operations final staged hygiene/normal push pending. Recent40cfe04 is already pushed and directly verified. All57groups56PARTIAL/C11DEFERRED and33routes remain; F20/RD11/RD12/RD13/RD21/manual/provider/output/release debt stays. P513withheld/followModedeferred/mainunchanged/productionNO-GO/Phase8notstarted. P7-09 preferences/Connections then data/privacy/plan/backup follows the approved order. diff --git a/docs/redesign/phase-7/DEBT.md b/docs/redesign/phase-7/DEBT.md index 2b1fb6a..7c618e7 100644 --- a/docs/redesign/phase-7/DEBT.md +++ b/docs/redesign/phase-7/DEBT.md @@ -212,3 +212,12 @@ P7-07 implemented scope is **CONDITIONAL GO and published**. UTC transport repai ### P7-08 recent notifications — final bounded observation [Recent report](p7-08/RECENT.md) and [portable results](p7-08/evidence/recent-results.json):49/6 affected frontend, four type/lint/build gates, native6+Documents8+CV4+ordinaryP2-D01=19/19 PASS on lIzSurm9WwMhPbE11MvC9. All21 finite inputs held; unchanged API/test DLLs. All16 final notification PNGs actually reviewed;14 all-enabled scans0 violations/102 contextually triaged incompletes. Meaningful REDs/failed external-font guard attempt retained; known font CSS remains aborted. +18frontend/0suites derives773/95; +6browser derives318; separate UTC Fact derives1054backend. Last whole573/89,1033,sidecar49 remain inherited. Implemented first presentation CONDITIONAL GO pending final staged hygiene/normal push; Operations second boundary remains. All57groups56PARTIAL/C11DEFERRED,33routes, P513withheld/followModedeferred/mainunchanged/productionNO-GO/Phase8notstarted. + + +Recent-notification presentation committed and normally pushed **40cfe04df51654c5ab9a073c13c8d67e0d90dcae**; direct refs verified **2026-10-16T21:15:02.899052UTC**, clean HEAD=origin=live development and local/origin/live main27657f3 unchanged. First presentation boundary remains implemented **CONDITIONAL GO**; Operations is the next independent boundary. Earlier pending-push statements are chronological observations superseded by this receipt. No production or Phase8 action. + +### P7-08 Operations — final bounded gate + +[Operations report](p7-08/OPERATIONS.md) and [portable results](p7-08/evidence/operations-results.json) record fresh **77/7 frontend cases**, app/browser TypeScript, lint and build PASS on **YBJ6UzKUv_ZeDjZzgO3Gh**. Actual Operations5 + Notifications6 + ordinaryP2-D01 = **12/12 native PASS**; no skip/flaky/retry. All25 finite inputs held through2026-10-17T01:59:10.798235UTC; API/testDLLunchanged. All14 Operations PNGs plus one frozen-package PNG actually reviewed (15/31 final retained images); notification16 remain retained with their earlier review distinguished. Operations12 all-enabled axe scans0violations/3incompletes and notification14scans0/102 are contextually triaged, without human/device/zoom/font acceptance. Peer fixes remove the task UUID from its accessible name and restore focus only when an accepted poll removes the focused control. All ordinary REDs, candidate evidence and the test-only typing failure remain retained. + +Eighteen new Operations cases derive **791/95 frontend**; five browser cases derive **323**. Backend stays **1054**, with last whole frontend573/89, backend1033 and sidecar49 inherited untilP7-12. BothP7-08 presentation boundaries are implemented **CONDITIONAL GO**, with Operations final staged hygiene/normal push pending. Recent40cfe04 is already pushed and directly verified. All57groups56PARTIAL/C11DEFERRED and33routes remain; F20/RD11/RD12/RD13/RD21/manual/provider/output/release debt stays. P513withheld/followModedeferred/mainunchanged/productionNO-GO/Phase8notstarted. P7-09 preferences/Connections then data/privacy/plan/backup follows the approved order. diff --git a/docs/redesign/phase-7/PRESERVATION.md b/docs/redesign/phase-7/PRESERVATION.md index 4ed1c34..75f01f6 100644 --- a/docs/redesign/phase-7/PRESERVATION.md +++ b/docs/redesign/phase-7/PRESERVATION.md @@ -220,3 +220,12 @@ P7-07 implemented scope is **CONDITIONAL GO and published**. UTC transport repai ### P7-08 recent notifications — final bounded observation [Recent report](p7-08/RECENT.md) and [portable results](p7-08/evidence/recent-results.json):49/6 affected frontend, four type/lint/build gates, native6+Documents8+CV4+ordinaryP2-D01=19/19 PASS on lIzSurm9WwMhPbE11MvC9. All21 finite inputs held; unchanged API/test DLLs. All16 final notification PNGs actually reviewed;14 all-enabled scans0 violations/102 contextually triaged incompletes. Meaningful REDs/failed external-font guard attempt retained; known font CSS remains aborted. +18frontend/0suites derives773/95; +6browser derives318; separate UTC Fact derives1054backend. Last whole573/89,1033,sidecar49 remain inherited. Implemented first presentation CONDITIONAL GO pending final staged hygiene/normal push; Operations second boundary remains. All57groups56PARTIAL/C11DEFERRED,33routes, P513withheld/followModedeferred/mainunchanged/productionNO-GO/Phase8notstarted. + + +Recent-notification presentation committed and normally pushed **40cfe04df51654c5ab9a073c13c8d67e0d90dcae**; direct refs verified **2026-10-16T21:15:02.899052UTC**, clean HEAD=origin=live development and local/origin/live main27657f3 unchanged. First presentation boundary remains implemented **CONDITIONAL GO**; Operations is the next independent boundary. Earlier pending-push statements are chronological observations superseded by this receipt. No production or Phase8 action. + +### P7-08 Operations — final bounded gate + +[Operations report](p7-08/OPERATIONS.md) and [portable results](p7-08/evidence/operations-results.json) record fresh **77/7 frontend cases**, app/browser TypeScript, lint and build PASS on **YBJ6UzKUv_ZeDjZzgO3Gh**. Actual Operations5 + Notifications6 + ordinaryP2-D01 = **12/12 native PASS**; no skip/flaky/retry. All25 finite inputs held through2026-10-17T01:59:10.798235UTC; API/testDLLunchanged. All14 Operations PNGs plus one frozen-package PNG actually reviewed (15/31 final retained images); notification16 remain retained with their earlier review distinguished. Operations12 all-enabled axe scans0violations/3incompletes and notification14scans0/102 are contextually triaged, without human/device/zoom/font acceptance. Peer fixes remove the task UUID from its accessible name and restore focus only when an accepted poll removes the focused control. All ordinary REDs, candidate evidence and the test-only typing failure remain retained. + +Eighteen new Operations cases derive **791/95 frontend**; five browser cases derive **323**. Backend stays **1054**, with last whole frontend573/89, backend1033 and sidecar49 inherited untilP7-12. BothP7-08 presentation boundaries are implemented **CONDITIONAL GO**, with Operations final staged hygiene/normal push pending. Recent40cfe04 is already pushed and directly verified. All57groups56PARTIAL/C11DEFERRED and33routes remain; F20/RD11/RD12/RD13/RD21/manual/provider/output/release debt stays. P513withheld/followModedeferred/mainunchanged/productionNO-GO/Phase8notstarted. P7-09 preferences/Connections then data/privacy/plan/backup follows the approved order. diff --git a/docs/redesign/phase-7/README.md b/docs/redesign/phase-7/README.md index b31d939..0867113 100644 --- a/docs/redesign/phase-7/README.md +++ b/docs/redesign/phase-7/README.md @@ -17,7 +17,7 @@ The entry commit is `b5319981ad3d1bd635daff861453d23c0de5320b` on `codex/ui-rede | [P7-06](p7-06/README.md) | Remaining Application forms and global correspondence | All three boundaries implemented CONDITIONAL GO: forms4c325/inboxa791 normally pushed; [compose](p7-06/COMPOSE.md) Compose affected52/5 and fresh backend25 PASS; native10+inbox8+ordinaryP2-D01=19 PASS on LFCrTZzDtX5hNBSRBj5Xx; app/browser TypeScript, lint and build PASS. Actual image review 47/47; all-enabled44scans0violations/330incompletes triaged, human/device/provider qualifications remain. +10front/+0suites,+10browser,+7backend derive739/94,301,1041 only; no integrated full-suite claim. Hygiene PASS and normal223dcf5 push directly verified11:03:15UTC;06Fdeferred/57groups32routes/main unchanged; P7-07 contract first next | | P7-06F | Deferred `followMode` reviewed composer | Optional separately reviewed mail slice; **DEFERRED** until mode→draft/review action and fallback are explicitly decided | | [P7-07](p7-07/README.md) | Documents owner-scoped index | Implemented CONDITIONAL GO; contract/UI published and directly verified through9dfea12 at21:01:11UTC. Final affected86/8, native8+CV4+ordinaryP2-D01/types/lint/build PASS;18 reviewed PNGs,15axe0/101 qualified. Original32+Documents=33routes; actual MariaDB/human/device/production qualifications remain | -| [P7-08](p7-08/README.md) | Existing notifications and operations | UTC repair9dfea12 published/directly verified,4/4+73 backend PASS. Recent/count presentation final validation ongoing; Operations remains next. Existing store/routes only, F20/no new enabled producers retained | +| [P7-08](p7-08/README.md) | Existing notifications and operations | Both presentation boundaries implemented CONDITIONAL GO. UTC9dfea/recent40cfe04 published; Operations77/7+native12/types/lint/build PASS,14Ops+1P2images reviewed,12Opsaxe0/3 and14notifaxe0/102 qualified. Final Operations hygiene/normal push pending;57groups33routes/F20 preserved. P7-09 next | | P7-09 | Remaining Settings, Connections and data lifecycle | Existing independent save scopes and sensitive-action guards; planned | | P7-10 | Admin operational presentation | Existing distinct Users/Audit/System routes and server authorization; planned | | P7-11 | Remaining Analytics/error/empty/dialog integration | Inventory-confirmed residual presentation only; existing reports remain; planned | @@ -98,3 +98,12 @@ P7-07 implemented scope is **CONDITIONAL GO and published**. UTC transport repai ### P7-08 recent notifications — final bounded observation [Recent report](p7-08/RECENT.md) and [portable results](p7-08/evidence/recent-results.json):49/6 affected frontend, four type/lint/build gates, native6+Documents8+CV4+ordinaryP2-D01=19/19 PASS on lIzSurm9WwMhPbE11MvC9. All21 finite inputs held; unchanged API/test DLLs. All16 final notification PNGs actually reviewed;14 all-enabled scans0 violations/102 contextually triaged incompletes. Meaningful REDs/failed external-font guard attempt retained; known font CSS remains aborted. +18frontend/0suites derives773/95; +6browser derives318; separate UTC Fact derives1054backend. Last whole573/89,1033,sidecar49 remain inherited. Implemented first presentation CONDITIONAL GO pending final staged hygiene/normal push; Operations second boundary remains. All57groups56PARTIAL/C11DEFERRED,33routes, P513withheld/followModedeferred/mainunchanged/productionNO-GO/Phase8notstarted. + + +Recent-notification presentation committed and normally pushed **40cfe04df51654c5ab9a073c13c8d67e0d90dcae**; direct refs verified **2026-10-16T21:15:02.899052UTC**, clean HEAD=origin=live development and local/origin/live main27657f3 unchanged. First presentation boundary remains implemented **CONDITIONAL GO**; Operations is the next independent boundary. Earlier pending-push statements are chronological observations superseded by this receipt. No production or Phase8 action. + +### P7-08 Operations — final bounded gate + +[Operations report](p7-08/OPERATIONS.md) and [portable results](p7-08/evidence/operations-results.json) record fresh **77/7 frontend cases**, app/browser TypeScript, lint and build PASS on **YBJ6UzKUv_ZeDjZzgO3Gh**. Actual Operations5 + Notifications6 + ordinaryP2-D01 = **12/12 native PASS**; no skip/flaky/retry. All25 finite inputs held through2026-10-17T01:59:10.798235UTC; API/testDLLunchanged. All14 Operations PNGs plus one frozen-package PNG actually reviewed (15/31 final retained images); notification16 remain retained with their earlier review distinguished. Operations12 all-enabled axe scans0violations/3incompletes and notification14scans0/102 are contextually triaged, without human/device/zoom/font acceptance. Peer fixes remove the task UUID from its accessible name and restore focus only when an accepted poll removes the focused control. All ordinary REDs, candidate evidence and the test-only typing failure remain retained. + +Eighteen new Operations cases derive **791/95 frontend**; five browser cases derive **323**. Backend stays **1054**, with last whole frontend573/89, backend1033 and sidecar49 inherited untilP7-12. BothP7-08 presentation boundaries are implemented **CONDITIONAL GO**, with Operations final staged hygiene/normal push pending. Recent40cfe04 is already pushed and directly verified. All57groups56PARTIAL/C11DEFERRED and33routes remain; F20/RD11/RD12/RD13/RD21/manual/provider/output/release debt stays. P513withheld/followModedeferred/mainunchanged/productionNO-GO/Phase8notstarted. P7-09 preferences/Connections then data/privacy/plan/backup follows the approved order. diff --git a/docs/redesign/phase-7/p7-08/OPERATIONS.md b/docs/redesign/phase-7/p7-08/OPERATIONS.md new file mode 100644 index 0000000..7bf2e8a --- /dev/null +++ b/docs/redesign/phase-7/p7-08/OPERATIONS.md @@ -0,0 +1,87 @@ +# P7-08 — Operations page + +This is the second presentation boundary in the [approved checkpoint](README.md). **Operations implemented scope: CONDITIONAL GO; final staged hygiene, commit and normal push remain pending.** The [recent-notification slice](RECENT.md) is committed and normally pushed as **`40cfe04df51654c5ab9a073c13c8d67e0d90dcae`**. Direct verification at **2026-10-16 21:15:02.899052 UTC** proves local HEAD = origin = live development, a clean worktree at entry and unchanged local/origin/live `main` (`27657f31131cd95d42f0e1290853ec9c9b3959a4`). The exact receipt is `.artifacts/phase7/p7-08/recent-push-receipt.json`; it does not publish later Operations work. + +## Baseline and bounded scope + +Fresh existing Operations tests pass **3 cases / 1 suite**, **21:15:20.042688–21:15:23.807296 UTC**, `p708-operations-entry-20261016T211520Z`. All 21 finite inputs match in `operations-entry-pre/source.json` and `operations-entry-post/source.json`, observed **21:15:19.506584→21:15:27.667333 UTC**. The [portable entry](evidence/operations-entry.json) retains the raw commands, three ordinary case names and source/push receipts. The prior recent slice's 49/6 and native19 remain separate evidence. + +Keep the existing `/operations` route and shell H1, two list reads bounded at 50, 15-second polling, explicit Refresh, notification read/dismiss and server-admitted Cancel/Retry. Reuse shared section/theme/feedback primitives and the existing operation DTO. No API/schema/provider/model/worker/route owner changes belong to this boundary. Canonical Profile facts, CV overrides/revisions, frozen packages and original PDF geometry remain owned elsewhere. + +## Confirmed source findings and required proof + +| Finding | Bounded correction / required regression | +|---|---| +| Locale callback changes restart reads/polling and old responses are unsequenced | Keep the load owner stable, abort/invalidate obsolete reads, reject stale completions and dispose callbacks; locale changes format cached data without another GET | +| State-only busy flag permits same-turn competing actions | Reserve writes synchronously; preserve server `canCancel` / `canRetry` authority and the captured operation ID | +| A poll can overwrite a newer committed action | Invalidate the pre-write read and adopt the actual returned operation DTO or acknowledged notice change; reconcile with a new snapshot | +| A committed write followed by failed refresh looks like an ordinary action error | Distinguish read recovery from write failure; Retry must perform GET only, with no replay or stale enabled action | +| Initial read failure also shows empty lists | Establish emptiness only after a successful snapshot; retain known rows on failed refresh | +| Removed/disabled initiating controls lose focus | Use a stable named activity region during the action and a section-heading fallback when removed; respect deliberate focus elsewhere | +| Raw known status/task codes, created date labelled Started and faded read cards | Localize supported known codes, retain honest unknown metadata, label the actual created date and keep readable surfaces/semantic read state | +| Real Cancel creates a notice but the shell event is omitted | Emit the existing change event after a committed mutation even when its follow-up read fails; preserve notification/task separation | + +Add ordinary unit REDs before repair, affected consumer tests, actual local authenticated lifecycle/owner/recovery workflows and finite responsive/theme/language/keyboard/axe evidence. Controlled metadata/progress/link/error projections must remain labelled and must not imply worker or result-contract qualification. Never activate a handler to manufacture a working-state fixture. + +## Ordinary regressions and bounded changes + +Times in this section are **2026-10-16 UTC**. Raw commands and ordinary Jest reports remain under `.artifacts/phase7/current/unit/`; named source observations remain under `.artifacts/phase7/p7-08/`. + +| Observation | Actual result and qualification | +|---|---| +| First Operations RED | **3 pass / 17 fail of 20**, **21:17:55.099112–21:18:04.281849**, `p708-operations-red-agent-20261016T211755Z`; ordinary runtime/DOM failures, with no pending/todo cases. All 21 inputs match in `operations-red-agent-pre/post/source.json` | +| Unknown-metadata RED | **19 pass / 1 fail of 20**, **21:21:38.717718–21:21:44.554603**, `p708-operations-metadata-red-20261016T212138Z`; the `toString` task identifier exercises an inherited-property lookup rather than a supported task mapping | +| Paired-read abort RED | **19 pass / 1 fail of 20**, **21:22:49.957266–21:22:55.672446**, `p708-operations-pair-red-20261016T212249Z`; initial failed-read recovery must abort its outstanding sibling read | +| First affected candidate | **73 cases / 6 suites PASS**, **21:23:03.108059–21:23:18.069912**, `p708-operations-verified-green-20261016T212303Z`; this includes the ten sidebar-active-navigation cases | +| Separate shell-navigation consumer | **3 cases / 1 suite PASS**, **21:24:10.940417–21:24:15.838318**, `p708-operations-navigation-consumer-20261016T212410Z`; the disjoint affected total is **76/7**, not 66 | +| Peer-review RED | **19 pass / 2 fail of 21**, **21:27:51.031680–21:27:59.380417**, `p708-operations-peer-red-20261016T212751Z`; an existing assertion requires a human task name, and one new case demonstrates focus lost to BODY when an accepted poll removes the focused control. All 25 peer-RED inputs match | +| Peer repair candidate | **74/6 PASS**, **21:28:36.894486–21:28:51.898001**, `p708-operations-peer-green-20261016T212836Z`, with all 25 peer-GREEN inputs held; separate shell navigation **3/1 PASS**, **21:29:39.234703–21:29:44.379120**, `p708-operations-final-navigation-20261016T212939Z`. The affected total is **77/7**; runtime success alone does not establish interface acceptance | + +The presentation uses the existing shared page sections, density padding, theme and localization. Read ownership now reserves one active load, invalidates obsolete responses, aborts paired reads on failure and disposes polling on unmount. Language changes reformat cached rows. Actions reserve a synchronous guard, capture the original ID, retain server eligibility and invalidate earlier polls. Returned operation DTOs or acknowledged notice changes remain visible if the follow-up read fails; the resulting recovery performs GET only and blocks mutation replay. Successful mutations still emit the existing notification-change event. + +Empty states require a successful snapshot. Known task/status mappings use own-property checks; unknown values remain visible. Dates describe creation, read notices retain readable surfaces, actions wrap with responsive target sizes, and the activity region supports stable focus. Peer corrections give operation articles a human task name while retaining `data-operation-id` for exact test identity, and restore the heading only when a poll removed the focused control and focus fell to BODY. Surviving controls and deliberate focus elsewhere keep focus. These changes do not alter backend admission, DTO fields, storage, workers or result contracts. + +## First native candidate and its limits + +The focused native RED uses the prior recent-slice export **`lIzSurm9WwMhPbE11MvC9`**, before Operations changes. It fails **1/1**, **21:22:15.983984–21:22:31.840570**, because the new named activity region is absent. Root's actual review of the failed PNG also observes an error and false empty state together. The test stops before the held-poll/cancellation assertions; this RED does **not** prove those later assertions failed. Capsule `.artifacts/phase7/p7-08/operations-native-red/results.json` has SHA256 `afd166cb00ecc656c28029ba01bfaa5652cd98c8d75a02244824c4362a5c8aa8`. + +The first candidate capsule `.artifacts/phase7/p7-08/operations-candidate-verified/results.json`, SHA256 `734d0fecbeac66f977ced1aaf9d1ccc1d444d8d00637d49becac60ea01ebb370`, retains the **76/7** unit evidence, four passing gates and build **`U-xpRaXrf8JBPqE2QoR9B`**. Lint/app TypeScript/browser TypeScript/build pass **21:23:40.110553–21:24:42.415744**. Native Operations **5/5** passes **21:24:42.416270–21:25:38.901271**; notification consumers **6/6** pass **21:25:38.908326–21:26:22.058289**; ordinary **P2-D01 1/1** passes **21:26:22.064846–21:26:35.660951**. All 12 pass without skip, unexpected result, flaky result or retry. + +That candidate records **12 Operations axe scans: 0 violations / 3 incomplete nodes**, and **14 notification scans: 0 / 102**. Its **31 retained images have not been accepted as an actual visual review**. All 25 inputs match from `operations-final-pre` through `operations-candidate-post`, observed through **21:26:53 UTC**. This evidence predates the peer corrections and cannot accept their later build. Controlled progress, unknown metadata, errors and navigation projections remain distinguished from real authenticated local mutations; no handler or provider/model is enabled to create fixture states. + +## Later gate failure and pause + +After the peer runtime pass, the next gate batch passes lint **21:29:28–21:29:56**, then fails app TypeScript **21:29:56–21:30:10**: test line 83 supplies `exact: true` to an installed `ByRoleOptions` type that does not support it. Capsule `.artifacts/phase7/p7-08/operations-peer-types-failed/results.json`, SHA256 `2d46184762d5712ae2bdf168962a1a536d4bc6d07d96058265d1d6183ca94d78`, freezes these actual gate receipts. No successful build/native run on the peer-corrected source follows from that batch. The later correction removes only the unsupported test option, preserving the literal name, explicit accessible-name assertion, data-ID checks and API assertions; production code remains unchanged. + +All 25 frozen inputs remain unchanged across the pause through **2026-10-17 01:55:29.881309 UTC**. No execution during the pause is inferred. The resumed fetch succeeds at **01:55 UTC**, with HEAD/origin at the already published `40cfe04` and unchanged `main`; Operations presentation work remains uncommitted at that observation. Fresh post-correction proof follows. + +## Final finite evidence — 2026-10-17 UTC + +The [portable Operations results](evidence/operations-results.json) retain all ordinary history, the failed/superseded capsules and the final manifests. Final capsule `.artifacts/phase7/p7-08/operations-final-verified/results.json` has SHA256 `b65047355b75e12fc739e3a12c32b16448b01194f84eb1f06480d42198c914aa`; the separate consumer capsule `.artifacts/phase7/p7-08/operations-final-consumers/results.json` has SHA256 `dfafa88a02b9d33cc38ac1cf483631cc9748d9c72dbc81475d7c56ea16cf4c25`. + +| Final command | Actual result and UTC interval | +|---|---| +| Affected frontend | **77 cases / 7 suites PASS**, **01:56:05.783220–01:56:21.237302**, zero failed/pending/todo | +| Lint | Exit **0**, **01:56:15.965185–01:56:38.079229** | +| App TypeScript | Exit **0**, **01:56:38.081256–01:56:48.967183** | +| Browser TypeScript | Exit **0**, **01:56:48.970700–01:57:01.477286** | +| Production build | Exit **0**, **01:57:01.479288–01:57:09.154781**; build **`YBJ6UzKUv_ZeDjZzgO3Gh`** | +| Native Operations | **5/5 PASS**, **01:57:09.159317–01:58:02.566772** | +| Native notification consumers | **6/6 PASS**, **01:58:02.572799–01:58:42.574608** | +| Ordinary P2-D01 | **1/1 PASS**, **01:58:42.582126–01:58:55.731272** | + +All **12 native cases** pass with zero skips, unexpected or flaky results and zero retries. All **25 finite source inputs** match from `operations-types-final-pre` at **01:56:05.282845** through `operations-types-final-post` at **01:59:10.798235**; API and test DLLs remain unchanged. The actual local Program/cookie journeys preserve same-ID cancel/retry and read/dismiss persistence, owner/anonymous boundaries and ordinary P2-D01. The held-poll, failed-read and long/unknown presentation projections remain explicitly controlled evidence, rather than provider/worker execution. + +All **14 final Operations PNGs are actually reviewed**, seven by root and seven by peer; root also reviews the final P2-D01 image. Thus **15 of 31 retained final images** receive actual review. The other **16 notification-consumer images are retained**, without a new review claim; the prior recent-slice review remains separate. The finite Operations evidence covers responsive sizes, English/Bokmål, themes and keyboard behavior without establishing human assistive-technology or device acceptance. + +Final Operations axe records **12 scans, 0 violations / 3 incomplete occurrences**: two short badge-text contrast contexts and one overlapping-background language-button context. Notification consumers independently record **14 scans, 0 / 102**: 14 modal-root focus contexts, four short badge-text contexts, 83 overlapping-background contexts and one partially obscured Dashboard label. All rule/node vectors remain retained; precise contrast and manual acceptance remain qualified. No rule is waived to produce the passing result. + +The preliminary [static-check receipt](evidence/operations-static-checks.json) passes at **02:02:20.371383 UTC**: 23 documents, 566 local links, 57 preservation groups, 33 routes and four secret/whitespace commands exiting 0. An earlier preliminary documentation check correctly failed while this named manifest did not yet exist; creating the required manifest resolves the missing target without weakening checks. Final staged hygiene and canonical source comparison, commit, normal development push and direct remote verification remain pending. + +## Preservation and current decision + +Operations implemented scope is **CONDITIONAL GO**, pending final staged hygiene, commit and verified normal publication. Both P7-08 presentation boundaries are now implemented conditionally; the recent slice is already published. The 21 Operations cases include **18 additions** over its three-case entry, with no new frontend suite: the derived inventory becomes **frontend 791/95** from the recent slice's 773/95, and five new browser cases derive **323** from 318. Backend remains **1,054** from the separate UTC repair. These are inventories, not fresh integrated runs or publication evidence; full frontend 573/89, backend 1,033 and sidecar 49 remain inherited until P7-12. + +All 57 groups remain **56 PARTIAL / C11 DEFERRED**, with 33 current route patterns. F20 and existing reliability debt, human screen-reader, real zoom, physical touch/software keyboard, production font/photo/print, actual MariaDB/provider execution and PDF-corpus qualifications remain open. P5-13 is withheld with zero qualification calls; followMode is deferred. Production is **NO-GO**, main is unchanged and Phase 8 implementation has not started. Settings follows this boundary in the approved sequence. + +Final staged hygiene passes **2026-10-17T02:03:25.900686UTC**: four secret/whitespace gates, 23 documents/568 local links, 57 groups and 33 routes. All 25 staged canonical-LF hashes match final as-run sources. Operations commit and normal development push follow; no production action. diff --git a/docs/redesign/phase-7/p7-08/README.md b/docs/redesign/phase-7/p7-08/README.md index 6da7110..5fecc99 100644 --- a/docs/redesign/phase-7/p7-08/README.md +++ b/docs/redesign/phase-7/p7-08/README.md @@ -1,6 +1,6 @@ # P7-08 — Existing notifications and operations -**Status: UTC repair published; recent popover/shell slice implemented CONDITIONAL GO with final staged hygiene, commit and its own normal push pending. Operations migration remains pending.** This checkpoint migrates existing notification and operation interfaces under the [approved handoff](../../phase-6/p6-05/PHASE7_HANDOFF.md#migration-order-and-commit-boundaries) and [implementation plan](../../IMPLEMENTATION_PLAN.md). It preserves the existing stores, routes, permissions and operation lifecycle. +**Status: both presentation boundaries implemented CONDITIONAL GO. UTC repair and the recent popover/shell slice are published; Operations final staged hygiene, commit and normal push remain pending.** This checkpoint migrates existing notification and operation interfaces under the [approved handoff](../../phase-6/p6-05/PHASE7_HANDOFF.md#migration-order-and-commit-boundaries) and [implementation plan](../../IMPLEMENTATION_PLAN.md). It preserves the existing stores, routes, permissions and operation lifecycle. ## Entry and publication qualification @@ -33,13 +33,13 @@ All times below are UTC on **2026-10-16**. Exact commands/reports remain under ` | Expanded focus/GET RED | **12 pass / 17 fail of 29**, **16:35:03.956545–16:35:15.226833**; four new ordinary focus/GET cases add one passing and three failing observations. The 13 captured frontend inputs match. The broader 18-input snapshot includes a separate backend DTO edit after this command ended; do not claim all 18 were held | | First presentation candidate | **48/6 PASS**, **16:38:36.709407–16:38:50.647886**; affected popover, shell, Operations, navigation, quick-command and i18n cases, zero failed/pending/todo. All 18 candidate inputs are held before/after; subsequent additional GET/Retry focus coverage remains pending | | GET/Retry focus RED | **20 pass / 1 fail of 21**, **20:53:41.526191–20:53:48.271873**; the new ordinary popover case observes meaningful focus loss to BODY after GET recovery. All 18 captured inputs match before/after | -| Latest presentation candidate | **49/6 PASS**, **20:54:23.214108–20:54:37.797995**; the added focus case and existing affected suites pass, zero failed/pending/todo. All 18 inputs in `retry-focus-green-pre/post` are held; actual native/visual evidence remains pending | +| Retry-focus presentation candidate | **49/6 PASS**, **20:54:23.214108–20:54:37.797995**; the added focus case and existing affected suites pass, zero failed/pending/todo. All 18 inputs in `retry-focus-green-pre/post` are held; native/visual evidence is pending at this observation | The first RED adds **13 ordinary cases**: ten popover and three shell cases. An existing shell count assertion is also strengthened; its failure does not represent an extra test. Four later focus/GET cases and the final Retry-focus case bring the candidate's additions to 18. The small recovery correction remembers the initiating Retry focus, waits for loading completion and preserves its original target while using the stable fallback. Retain every RED; a focused GREEN is not final interface acceptance. The first candidate's app/browser TypeScript, lint and production build pass between **16:38:46 and 16:39:49 UTC**, with observed build identity **`33Og4QvWi-VvlxXRjUnvY`**. Old command/log receipts remain under `.artifacts/phase7/current/ui/attempts/`; that full static export was not separately copied. These are historical candidate gates, not native/visual or later-source acceptance. -Latest lint **20:54:33.381477–20:55:00.917580**, app TypeScript **20:55:00.919594–20:55:14.103408**, browser TypeScript **20:55:14.105415–20:55:20.863722** and build **20:55:20.865736–20:55:28.793130** all exit 0. Current build identity is **`-A-T31QuUMNqWVSxMqUu7`**. Frozen-source candidate checks do not close actual HTTP, native journeys, screenshots or final presentation acceptance. +The Retry-focus candidate's lint **20:54:33.381477–20:55:00.917580**, app TypeScript **20:55:00.919594–20:55:14.103408**, browser TypeScript **20:55:14.105415–20:55:20.863722** and build **20:55:20.865736–20:55:28.793130** all exit 0, with build identity **`-A-T31QuUMNqWVSxMqUu7`**. These historical gates do not close actual HTTP, native journeys, screenshots or final presentation acceptance. ## Findings and bounded repair requirements @@ -52,9 +52,9 @@ Latest lint **20:54:33.381477–20:55:00.917580**, app TypeScript **20:55:00.919 | Shell count starts at 0 and maps read failure to 0 | Distinguish known positive count, explicit known zero and unknown/unavailable count; do not announce a fabricated zero | | Shell interval/event reads have no ordering guard | A stale completion cannot overwrite the latest count or publish after unmount/account change; prove bounded single-flight/recovery behavior | -The notification trigger keeps its accessible name **“Notifications” / “Varsler”**. Count availability belongs in a localized `aria-describedby` description: known 3, known 0 and absent/unknown are distinct states. Preserve keyboard activation, close/focus restoration and the existing navigation/dirty guards. Latest candidate regressions include the GET/Retry focus repair; actual native evidence is still required. +The notification trigger keeps its accessible name **“Notifications” / “Varsler”**. Count availability belongs in a localized `aria-describedby` description: known 3, known 0 and absent/unknown are distinct states. Preserve keyboard activation, close/focus restoration and the existing navigation/dirty guards. Candidate regressions include the GET/Retry focus repair; the later final native evidence is recorded below. -Operations inspection records additional review targets: polling and list reads depend on translation callbacks; busy protection is state-only; two resources share a load/error path; task/status/failure values are displayed from raw identifiers. These are source findings to validate in the second boundary, not claims that an Operations migration or repair has executed. +Operations inspection records additional review targets: polling and list reads depend on translation callbacks; busy protection is state-only; two resources share a load/error path; task/status/failure values are displayed from raw identifiers. The [Operations report](OPERATIONS.md) records the separate regressions, bounded changes and final conditional acceptance. ## Separate UTC repair and native evidence plan @@ -70,7 +70,7 @@ All **57 preservation groups remain 56 PARTIAL / C11 DEFERRED**; [preservation]( Entry inventory is **frontend 755/95, browser 312, backend 1,053** from P7-07. One new UTC Fact derives backend **1,054**; 18 new frontend cases with no new suites derive **773/95**, and six new native cases derive browser **318**. Earlier 772/95 precedes the final Retry-focus case. These are inventories, not fresh integrated counts: last full frontend **573/89**, backend **1,033** and sidecar **49** remain inherited. Preserve all ordinary failures without skip/expected-failure masking. P7-12 owns fresh integrated regression. -UTC repair hygiene/commit/publication are complete. Recent-slice images are reviewed; finish staged hygiene and its separate commit/normal push, retaining contextual/manual qualifications, then implement the distinct Operations boundary. Remote recovery of earlier commits does not publish presentation WIP. Each later logical boundary still needs its own evidence, preservation reconciliation and verified publication. +UTC repair and recent-slice hygiene/commit/publication are complete. Operations final runtime/visual evidence is complete within its qualifications; staged hygiene, commit and its own verified normal publication remain. Earlier pushes do not publish later presentation WIP. ## Recent popover and shell — final finite evidence @@ -78,6 +78,25 @@ UTC repair hygiene/commit/publication are complete. Recent-slice images are revi Final consumers independently pass **Documents 8/8**, **21:08:28.263615–21:09:23.407862**; **CV frame 4/4**, **21:09:23.415937–21:10:54.533727**; **ordinary P2-D01 1/1**, **21:10:54.543299–21:11:08.177981**. Consumer capsule `recent-final-consumers/results.json` SHA256 is `d651e02c416023bccb84ab00d6cfe1222865819899f14417577f946667a1632c`. All 21 captured sources hold **21:06:33.992833→21:11:29.899599**; API/test DLLs remain unchanged. -All **16 final notification PNGs** are actually reviewed, eight by root and eight by peer. The **14 enabled axe/target-size scans record 0 violations / 102 incomplete nodes**, retained for contextual/manual qualification. Preliminary hygiene passes at **21:12:44 UTC**: 22 documents, 538 local links, all 57 groups and 33 routes. Final staged hygiene, commit and normal push remain pending. Real local API transitions and controlled projections remain distinguished; no all-seven-date hosted, human screen-reader, physical-device or production qualification follows. **First presentation slice: implemented CONDITIONAL GO, pending staged hygiene/commit/push. Whole P7-08: ongoing; Operations migration remains pending.** +All **16 final notification PNGs** are actually reviewed, eight by root and eight by peer. The **14 enabled axe/target-size scans record 0 violations / 102 incomplete nodes**, retained for contextual/manual qualification. Preliminary hygiene passes at **21:12:44 UTC**: 22 documents, 538 local links, all 57 groups and 33 routes. Staged hygiene, commit and normal push are still pending at that observation and are subsequently completed as recorded below. Real local API transitions and controlled projections remain distinguished; no all-seven-date hosted, human screen-reader, physical-device or production qualification follows. **First presentation slice: implemented CONDITIONAL GO. Whole P7-08 remains ongoing.** -Human screen-reader, real zoom, physical touch/software keyboard, production font/photo/print, actual MariaDB/provider execution and existing reliability debt remain qualified. P5-13 stays withheld with zero model qualification calls; followMode stays deferred. Production ingress, backup/restore, schema/configuration and tested rollback remain open release gates. **P7-08 acceptance: PENDING. Production: NO-GO; main not pushed. Phase 8: no implementation.** +Human screen-reader, real zoom, physical touch/software keyboard, production font/photo/print, actual MariaDB/provider execution and existing reliability debt remain qualified. P5-13 stays withheld with zero model qualification calls; followMode stays deferred. Production ingress, backup/restore, schema/configuration and tested rollback remain open release gates. **P7-08 implemented scope: CONDITIONAL GO, pending Operations staged hygiene and publication. Production: NO-GO; main not pushed. Phase 8: no implementation.** + + +Recent-notification presentation is committed and normally pushed as **`40cfe04df51654c5ab9a073c13c8d67e0d90dcae`**. Direct refs verified **2026-10-16 21:15:02.899052 UTC** prove clean HEAD = origin = live development and unchanged local/origin/live `main` (`27657f31131cd95d42f0e1290853ec9c9b3959a4`). Receipt `.artifacts/phase7/p7-08/recent-push-receipt.json` supersedes the earlier pending-publication observations for that first presentation boundary. No production or Phase 8 action follows. + +## Operations — separate boundary and final finite evidence + +The [Operations report](OPERATIONS.md) and [portable entry](evidence/operations-entry.json) establish a fresh **3 cases / 1 suite PASS** baseline at **21:15:20.042688–21:15:23.807296 UTC**, with all 21 entry inputs held. The ordinary Operations RED then records **3 pass / 17 fail of 20**, **21:17:55.099112–21:18:04.281849**, with those 21 inputs held. Further ordinary REDs retain the unknown/prototype metadata mapping failure and paired-read abort failure, each **19 pass / 1 fail of 20**. None is hidden with pending, skip or expected-failure markers. + +The first candidate records **73/6** affected cases plus a disjoint **3/1** shell-navigation consumer, totaling **76/7**; the 73 already include ten sidebar-navigation cases. Four gates pass and build **`U-xpRaXrf8JBPqE2QoR9B`** passes native Operations **5/5**, notifications **6/6** and ordinary P2-D01 **1/1**, without retry/skip/flaky results. The retained capsule is `.artifacts/phase7/p7-08/operations-candidate-verified/results.json`, SHA256 `734d0fecbeac66f977ced1aaf9d1ccc1d444d8d00637d49becac60ea01ebb370`. Its 12 Operations axe scans record **0 violations / 3 incomplete nodes**; 14 notification scans record **0 / 102**. Its 31 retained images are not claimed as an actual visual review. These results precede the later peer corrections. + +The focused native RED against the prior published export fails before its poll/cancellation race assertions because the new named activity region is absent. Root actually observes simultaneous error/false-empty presentation in its failure PNG. Peer review later demonstrates an operation article using its identifier as an accessible name and focus lost when an accepted poll removes the active control: **19 pass / 2 fail of 21**, **21:27:51.031680–21:27:59.380417**. The bounded corrections use a human task name plus a separate data-ID, and a heading fallback only after removed focus falls to BODY, preserving surviving or deliberately moved focus. + +Peer runtime repairs pass **74/6**, **21:28:36.894486–21:28:51.898001**, plus separate navigation **3/1**, **21:29:39.234703–21:29:44.379120**: **77/7** affected cases. The following batch passes lint but fails app TypeScript **21:29:56–21:30:10** on one unsupported test-only `ByRoleOptions.exact` option. It supplies no passing peer-build/native evidence. All 25 frozen inputs remain held through **2026-10-17 01:55:29.881309 UTC**, with no execution inferred during the pause. The resumed fetch succeeds with HEAD/origin still at published `40cfe04` and `main` unchanged. The narrow correction removes only that unsupported option, preserving strict name/data-ID/API assertions and production code. + +Fresh **2026-10-17 UTC** evidence in the [portable Operations results](evidence/operations-results.json) records **77/7 PASS**, **01:56:05.783220–01:56:21.237302**. Lint, app/browser TypeScript and build all pass **01:56:15.965185–01:57:09.154781**, with build **`YBJ6UzKUv_ZeDjZzgO3Gh`**. Native Operations **5/5** passes **01:57:09.159317–01:58:02.566772**; notifications **6/6** pass **01:58:02.572799–01:58:42.574608**; ordinary P2-D01 **1/1** passes **01:58:42.582126–01:58:55.731272**. All 12 native cases have zero skip/unexpected/flaky results and retries. All 25 inputs match **01:56:05.282845→01:59:10.798235**, and API/test DLLs remain unchanged. Final manifests and raw capsule hashes are retained in the linked report. + +All **14 final Operations PNGs are actually reviewed** by root/peer, plus root's final P2-D01 image: **15 of 31 final images reviewed**. The 16 notification-consumer images are retained without a fresh review claim. Operations axe records **12 scans, 0 violations / 3 incomplete occurrences** (two short badge-text and one overlapping-background language-button contrast context); notification consumers independently record **14 scans, 0 / 102**, all retained and qualified. These finite checks establish no human screen-reader, physical-device, precise incomplete-contrast or production acceptance. The preliminary [static-check receipt](evidence/operations-static-checks.json) passes at **02:02:20.371383 UTC**: 23 documents, 566 local links, 57 groups, 33 routes and four secret/whitespace commands exiting 0. Final staged hygiene/canonical comparison, commit and verified normal push remain pending. + +The 21 Operations cases add **18** over its three-case baseline without a new suite, deriving frontend **791/95** from 773/95. Five new browser cases derive **323** from 318; backend remains **1,054**. These are inventories, not fresh integrated counts or proof of publication; full frontend **573/89**, backend **1,033** and sidecar **49** remain inherited until P7-12. All 57 preservation statuses and 33 routes remain unchanged. **Both P7-08 presentation boundaries: implemented CONDITIONAL GO, with Operations staged hygiene/commit/publication pending.** Settings remains the next approved checkpoint, and Phase 8 remains separate. diff --git a/docs/redesign/phase-7/p7-08/RECENT.md b/docs/redesign/phase-7/p7-08/RECENT.md index f198a7e..3baa333 100644 --- a/docs/redesign/phase-7/p7-08/RECENT.md +++ b/docs/redesign/phase-7/p7-08/RECENT.md @@ -37,3 +37,6 @@ The added 15 popover and three shell cases derive frontend **773/95** from 755/9 Operations presentation still requires its separate implementation, regression, native/visual evidence and push. F20, RD11/RD21, existing reliability/manual/provider/output debts, withheld P5-13 and deferred followMode remain open. Production is **NO-GO**; `main` is unchanged. Phase 8 implementation has not started. Final staged hygiene passes at **21:14:03.863578 UTC**: secret and working/staged/whole-phase whitespace checks, 22 documents/550 local links, 57 groups and 33 routes. All 21 staged canonical-LF source hashes match the final as-run capture. Normal development push remains the next step. + + +Recent-notification presentation committed and normally pushed **40cfe04df51654c5ab9a073c13c8d67e0d90dcae**; direct refs verified **2026-10-16T21:15:02.899052UTC**, clean HEAD=origin=live development and local/origin/live main27657f3 unchanged. First presentation boundary remains implemented **CONDITIONAL GO**; Operations is the next independent boundary. Earlier pending-push statements are chronological observations superseded by this receipt. No production or Phase8 action. diff --git a/docs/redesign/phase-7/p7-08/evidence/operations-entry.json b/docs/redesign/phase-7/p7-08/evidence/operations-entry.json new file mode 100644 index 0000000..1d4cef7 --- /dev/null +++ b/docs/redesign/phase-7/p7-08/evidence/operations-entry.json @@ -0,0 +1,121 @@ +{ + "schemaVersion": 1, + "checkpoint": "P7-08", + "slice": "Operations presentation entry", + "recordedUtc": "2026-10-16T21:17:47.457308+00:00", + "precedingPush": { + "command": [ + "rtk", + "proxy", + "git", + "push", + "origin", + "HEAD:refs/heads/codex/ui-redesign-phase4" + ], + "startedUtc": "2026-10-16T21:15:00.935670+00:00", + "finishedUtc": "2026-10-16T21:15:02.680152+00:00", + "exitCode": 0, + "head": "40cfe04df51654c5ab9a073c13c8d67e0d90dcae", + "log": ".artifacts/phase7/p7-08/recent-push-receipt.log", + "logSha256": "4a63523f136df7e831dc5a9cb0f3787b3069c71e252d8ec03c2df965a3a48388", + "observedUtc": "2026-10-16T21:15:02.899052+00:00", + "originDevelopment": "40cfe04df51654c5ab9a073c13c8d67e0d90dcae", + "liveDevelopment": "40cfe04df51654c5ab9a073c13c8d67e0d90dcae", + "main": "27657f31131cd95d42f0e1290853ec9c9b3959a4", + "originMain": "27657f31131cd95d42f0e1290853ec9c9b3959a4", + "liveMain": "27657f31131cd95d42f0e1290853ec9c9b3959a4", + "pendingPaths": [], + "workingTreeClean": true, + "raw": { + "path": ".artifacts/phase7/p7-08/recent-push-receipt.json", + "bytes": 857, + "sha256": "d618bb702a6eac60257ad0f8107daaaf7f8eb5ab1e9579fc83deff6e35c82616" + } + }, + "baseline": { + "command": { + "command": [ + "rtk", + "proxy", + "npm.cmd", + "test", + "--", + "--runInBand", + "--watchAll=false", + "--json", + "--outputFile=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\phase7\\current\\unit\\p708-operations-entry-20261016T211520Z.json", + "src/operations-page.test.tsx" + ], + "startedUtc": "2026-10-16T21:15:20.042688+00:00", + "finishedUtc": "2026-10-16T21:15:23.807296+00:00", + "exitCode": 0, + "counts": { + "numPassedTests": 3, + "numFailedTests": 0, + "numPendingTests": 0, + "numTodoTests": 0, + "numPassedTestSuites": 1, + "numFailedTestSuites": 0 + } + }, + "commandRaw": { + "path": ".artifacts/phase7/current/unit/p708-operations-entry-20261016T211520Z-command.json", + "bytes": 643, + "sha256": "d989b50af6ba3969248902c687b216c6b24c1b7ec6b3da183d4fc72fc535657a" + }, + "reportRaw": { + "path": ".artifacts/phase7/current/unit/p708-operations-entry-20261016T211520Z.json", + "bytes": 1819, + "sha256": "0afc9e0d6ba0a2367d95c7f80dacb7160d7b8363fcb8fcf0ad9439924398d425" + }, + "logRaw": { + "path": ".artifacts/phase7/current/unit/p708-operations-entry-20261016T211520Z.log", + "bytes": 573, + "sha256": "9fc0f70b98dd7e0057f2a69b010033a91149e0e49ecbcba59fcc51b8042e888c" + }, + "counts": { + "passed": 3, + "failed": 0, + "pending": 0, + "suites": 1 + }, + "cases": [ + "shows persistent operation and notification states with accessible actions", + "shows honest empty and failure states", + "localizes operation controls and empty states in Norwegian Bokmål" + ] + }, + "sourceBoundary": { + "before": { + "path": ".artifacts/phase7/p7-08/operations-entry-pre/source.json", + "bytes": 5785, + "sha256": "3580808f4f8780b2328511bc666e621dc2ac4f43622f8269bc98d87f04b8e48d" + }, + "after": { + "path": ".artifacts/phase7/p7-08/operations-entry-post/source.json", + "bytes": 5786, + "sha256": "6a58f1734209c043bf6ac2c09ca7f83e2386e5c85514d634c7a458280f1d78f6" + }, + "inputs": 21, + "unchanged": true, + "beforeUtc": "2026-10-16T21:15:19.506584+00:00", + "afterUtc": "2026-10-16T21:15:27.667333+00:00" + }, + "decisions": { + "operations": "PENDING_IMPLEMENTATION_VALIDATION", + "recent": "CONDITIONAL GO_AND_PUSHED", + "production": "NO-GO", + "phase8": "NOT_STARTED" + }, + "preservation": { + "groups": 57, + "partial": 56, + "deferred": "C11", + "routes": 33 + }, + "limits": [ + "Baseline3 passing tests do not demonstrate absence of race/focus/error defects; new ordinary regressions required.", + "No new handler,producer,model,provider,API,schema or result contract.", + "No manual/human/device/production acceptance." + ] +} diff --git a/docs/redesign/phase-7/p7-08/evidence/operations-results.json b/docs/redesign/phase-7/p7-08/evidence/operations-results.json new file mode 100644 index 0000000..ff8f11a --- /dev/null +++ b/docs/redesign/phase-7/p7-08/evidence/operations-results.json @@ -0,0 +1,4580 @@ +{ + "schemaVersion": 1, + "checkpoint": "P7-08", + "slice": "Operations page", + "recordedUtc": "2026-10-17T02:00:33.397472+00:00", + "decisions": { + "implementedScope": "CONDITIONAL GO; final runtime/visual/peer/staged hygiene PASS; normal push pending", + "wholeCheckpoint": "Both presentation boundaries implemented CONDITIONAL GO; final Operations normal push pending", + "production": "NO-GO", + "phase8": "NOT STARTED" + }, + "entry": { + "path": "docs/redesign/phase-7/p7-08/evidence/operations-entry.json", + "bytes": 4126, + "sha256": "f9697f51a27322400b6f5d0131f50dd8e16150e3d640026192268f716d602f97", + "hashPolicy": "Exact raw bytes" + }, + "capsules": [ + { + "path": ".artifacts/phase7/p7-08/operations-final-verified/results.json", + "bytes": 139112, + "sha256": "b65047355b75e12fc739e3a12c32b16448b01194f84eb1f06480d42198c914aa", + "hashPolicy": "Exact raw bytes" + }, + { + "path": ".artifacts/phase7/p7-08/operations-final-consumers/results.json", + "bytes": 153165, + "sha256": "dfafa88a02b9d33cc38ac1cf483631cc9748d9c72dbc81475d7c56ea16cf4c25", + "hashPolicy": "Exact raw bytes" + } + ], + "sources": { + "before": { + "path": ".artifacts/phase7/p7-08/operations-types-final-pre/source.json", + "bytes": 6869, + "sha256": "1792b9b6e183823e1e5879307dfaa3e989a6404e744b12d5837eb054293e5485", + "hashPolicy": "Exact raw bytes" + }, + "after": { + "path": ".artifacts/phase7/p7-08/operations-types-final-post/source.json", + "bytes": 6870, + "sha256": "5c9cfccdb3b38ec44e2bcbe2f808d9a0725314d2d974ebb5e33aee9f8d05368f", + "hashPolicy": "Exact raw bytes" + }, + "beforeUtc": "2026-10-17T01:56:05.282845+00:00", + "afterUtc": "2026-10-17T01:59:10.798235+00:00", + "inputs": 25, + "unchanged": true, + "records": [ + { + "path": "job-tracker-ui/src/components/NotificationsPopover.tsx", + "bytes": 9856, + "sha256": "68de79aeafac5dba9e1688678ef92c3a8a77b03dfaf72cc51a4019762641d20e", + "canonicalLfSha256": "db9150fc46a70df83d56fb559c8d6dd50cd86b5bd71bd9b121320091970513d6" + }, + { + "path": "job-tracker-ui/src/layout/AppShell.tsx", + "bytes": 30733, + "sha256": "2f44ee808e598c2d766d9c90cabe56382caa32905c64a6cb2a57f24400e84512", + "canonicalLfSha256": "d922e7629dcbf664138ae6e6e5a83ce484d93b853035dc7432a096fb3e08c224" + }, + { + "path": "job-tracker-ui/src/App.tsx", + "bytes": 29229, + "sha256": "8d1762a5685324090249876d9c1695eadd82a7a43a3101484aaefcc434886014", + "canonicalLfSha256": "ffa49851132c518cab1e1d984c064034ad9332b8553424fa9e3237d9e6178c51" + }, + { + "path": "job-tracker-ui/src/i18n/translations.ts", + "bytes": 328864, + "sha256": "39b41e7b6ecec3ad2cd73f1f8037d6fc5ddc10f3a2093388f7e1983e0a8cae0b", + "canonicalLfSha256": "39b41e7b6ecec3ad2cd73f1f8037d6fc5ddc10f3a2093388f7e1983e0a8cae0b" + }, + { + "path": "job-tracker-ui/src/notifications.ts", + "bytes": 414, + "sha256": "3a688a7ef6c394c4a810b6b0c2fc4d20be61ec8e7737b3b3a2c30ac54c882a22", + "canonicalLfSha256": "118f08f1c90d50ce52fb03baaf7df15c47a26d6de42457a5ecf2746502f86aab" + }, + { + "path": "job-tracker-ui/src/notifications-popover.test.tsx", + "bytes": 19815, + "sha256": "c654a00f312a98c0a74cbe2058f9550e84621731cb018287bca2e9888ed471c7", + "canonicalLfSha256": "5af75c9d910da518cfbc552c73b5af355b6071bc2bdb75448eacc475ac261db6" + }, + { + "path": "job-tracker-ui/src/app-shell-notifications.test.tsx", + "bytes": 6046, + "sha256": "d6d61701f55f1ca250c9793f2f9775aa17ef88ac86f1a4586a70c0c050212060", + "canonicalLfSha256": "58297a722965400de0774ffde1dce0ccdaa3b9956ee289b94ec8856f3f577a45" + }, + { + "path": "job-tracker-ui/src/views/OperationsPage.tsx", + "bytes": 12326, + "sha256": "8cff1e08b2009ff683957849af71d6e76916a28ae218e647d9e3c04a12ad5f9b", + "canonicalLfSha256": "b35c793fd33dcd0638d47df2aa3bfb2926879a8fa709880983b64c1a1309bb98" + }, + { + "path": "job-tracker-ui/src/operations-page.test.tsx", + "bytes": 22959, + "sha256": "eb4292aff41866206c97d39caf84d4247da4bd8aafba7c1c88b63c5cd717e22c", + "canonicalLfSha256": "700d6a69327dba86c3fe5680a4f5aec652647bd1dca1054f45f42328314f4734" + }, + { + "path": "job-tracker-ui/src/auth.ts", + "bytes": 4822, + "sha256": "0282a19bf34a915d6c4cd3bb32c041103206b1741b737e8a5e7b3f083a839acb", + "canonicalLfSha256": "1cbdd59f73c5a961613b2569679f96630cded407974876a4ca8abccf28780b0e" + }, + { + "path": "job-tracker-ui/src/theme.ts", + "bytes": 21733, + "sha256": "bcfc98ee692fda1d03ed23b952d2b2de35b16a45388bc43ad9885b6882df0302", + "canonicalLfSha256": "17b74ad41e4c3b41b0efa6a6b5296c326519383a9bcada40ca393ea3dcc912bf" + }, + { + "path": "job-tracker-ui/src/api.ts", + "bytes": 4948, + "sha256": "bec8dc665fef61f3c88938e9a61dda786a16008d6af9bc7688bdd615e7ba337c", + "canonicalLfSha256": "f75ac7be07a743396843ddad5fd3371e2d5fd3d9c5d933e09e26fae2159f2378" + }, + { + "path": "job-tracker-ui/src/sessionBoundary.ts", + "bytes": 2248, + "sha256": "09edca77c98294818d2ad0c409ce595f1b6ca0c1f60419fc1078b70f96f5b7b9", + "canonicalLfSha256": "09edca77c98294818d2ad0c409ce595f1b6ca0c1f60419fc1078b70f96f5b7b9" + }, + { + "path": "JobTrackerApi/Controllers/OperationsController.cs", + "bytes": 5810, + "sha256": "a2a38aee1d23c36f3cec617f1537f73d35639542087d4c1e5e7fb65f227440e2", + "canonicalLfSha256": "b1dacc6acf74dc3219bb7b5f13517d2e7edd7b9eb93297e8823dc1a90e0cbbd4" + }, + { + "path": "JobTrackerApi.Tests/OperationsControllerTests.cs", + "bytes": 14599, + "sha256": "06d6f91b70af4e1e98fe67246a76a9084d22a4050667295349a14c4d520c8e75", + "canonicalLfSha256": "0b174f8f28ce98e1a7dacb121e80ca53e851bebced088f9388f7ce716af71800" + }, + { + "path": "JobTrackerApi/Services/UserOperationStore.cs", + "bytes": 30755, + "sha256": "83721ad7bc99d70b9d4b55e0381e51e7449ff1c08a0005a36341d31b52a42693", + "canonicalLfSha256": "34b172fd520e7271ca94fe20042b0618fa015d03c24c719a446eb37343b1ed3e" + }, + { + "path": "JobTrackerApi/Services/UserNotificationStore.cs", + "bytes": 2465, + "sha256": "befd2179c46acd0d09d583d83afbc9288b43485a01e3292c3bef6aa798a2e984", + "canonicalLfSha256": "c2fc0c25cf786440fa7b63ae5045eb7a1315f96f1d32a9ddbb051cf9c5fe2a31" + }, + { + "path": "JobTrackerApi/Services/AiOperationQueue.cs", + "bytes": 13573, + "sha256": "dc16f5cb057f5958f0b557d78168ec749b6d58a1659431422c6e0d880a24278f", + "canonicalLfSha256": "0b3c41ca32faef14af64e483c2894410e242e4a764c721b8e96ce5372477e4d4" + }, + { + "path": "job-tracker-ui/e2e/phase7-notifications.spec.ts", + "bytes": 34215, + "sha256": "bd08124f7ff1de9c50cf943945c43fb4efd6a49071755311b215b502d6af3c8b", + "canonicalLfSha256": "bd08124f7ff1de9c50cf943945c43fb4efd6a49071755311b215b502d6af3c8b" + }, + { + "path": "job-tracker-ui/e2e/helpers/seed-operation.py", + "bytes": 12836, + "sha256": "0b6fd306e88bbb81207b89ed90594141634037ac6879d4e2dac4c3686db1fda6", + "canonicalLfSha256": "0b6fd306e88bbb81207b89ed90594141634037ac6879d4e2dac4c3686db1fda6" + }, + { + "path": "job-tracker-ui/playwright.config.ts", + "bytes": 2669, + "sha256": "01840494c782b2cc3c4c639dd2978a98ffa685b656e6a61fe4c503aeac6798f3", + "canonicalLfSha256": "bcf1dc87bd573f251ab3030088801fa5966907c86fdb90c701003c180ed969d3" + }, + { + "path": "job-tracker-ui/e2e/phase7-operations.spec.ts", + "bytes": 36289, + "sha256": "e40d42bf84d7f26bc529734b74b012b404425fae62816dade3474cd35769a2f2", + "canonicalLfSha256": "e40d42bf84d7f26bc529734b74b012b404425fae62816dade3474cd35769a2f2" + }, + { + "path": "job-tracker-ui/src/layout/PageLayout.tsx", + "bytes": 2330, + "sha256": "9d7d8b3df0f533cc608c8b44519e12f1c9a8547fe91401c45023c6d2c34e111d", + "canonicalLfSha256": "31c7510446382039cd24b96e5709d5d8dfd00a0b84fd319a53183d1da6c2efa4" + }, + { + "path": "job-tracker-ui/src/components/ViewStateNotice.tsx", + "bytes": 2340, + "sha256": "fd4bb314346a1603d9e01a15fd02f01576b9fd959e83f8ff0b1dfe5ec94378e9", + "canonicalLfSha256": "7b6c3e6c311860897eb5327936dbb129e860781929cfd9a4d4e17f81c607c70c" + }, + { + "path": "job-tracker-ui/src/types.ts", + "bytes": 13452, + "sha256": "a45779b0b7868c4a69ed4a17316899074416fc8c6f8f6c083827e949f790d7b1", + "canonicalLfSha256": "d7b551f669415f752fdc38850367fd89257e3f6d6c9d8b459cbf1a1ad91f6a85" + } + ], + "qualification": "Final finite source bytes held through77 unit cases, four gates and12 ordinary native cases; staged canonical-LF comparison recorded separately." + }, + "units": [ + { + "raw": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/unit/p708-operations-final-20261017T015605Z.json", + "sha256": "5757efb0b738c8ec09c03c76eaf4cdb5c5f5bca669f7a8284e902857367bce5f", + "bytes": 33728, + "hashPolicy": "Exact measured raw bytes" + }, + "startedUnixMs": 1792202166865, + "passed": 77, + "failed": 0, + "pending": 0, + "total": 77, + "suites": 7, + "cases": [ + { + "name": "shows persistent operation and notification states with accessible actions", + "status": "passed" + }, + { + "name": "shows honest empty and failure states", + "status": "passed" + }, + { + "name": "localizes operation controls and empty states in Norwegian Bokmål", + "status": "passed" + }, + { + "name": "[P7-08 operations] initial failure offers single-flight GET Retry without false empty or writes", + "status": "passed" + }, + { + "name": "[P7-08 operations] cached refresh failure preserves known rows and does not fabricate empty results", + "status": "passed" + }, + { + "name": "[P7-08 operations] same-render duplicate Cancel reserves exactly one mutation and blocks competing work", + "status": "passed" + }, + { + "name": "[P7-08 operations] same-render duplicate Retry reserves exactly one mutation and blocks competing work", + "status": "passed" + }, + { + "name": "[P7-08 operations] same-render duplicate Mark read reserves exactly one mutation and blocks competing work", + "status": "passed" + }, + { + "name": "[P7-08 operations] same-render duplicate Dismiss reserves exactly one mutation and blocks competing work", + "status": "passed" + }, + { + "name": "[P7-08 operations] language and ordinary rerenders reformat cached data without refetch or polling restart", + "status": "passed" + }, + { + "name": "[P7-08 operations] 15-second polling is single-flight and resumes after the held pair completes", + "status": "passed" + }, + { + "name": "[P7-08 operations] mutation invalidates a held old poll before adopting the returned same-ID DTO", + "status": "passed" + }, + { + "name": "[P7-08 operations] committed cancel plus failed refresh announces truth and GET Retry cannot replay or unlock stale writes", + "status": "passed" + }, + { + "name": "[P7-08 operations] committed204 Mark read updates notices locally even when refresh fails without completing a task", + "status": "passed" + }, + { + "name": "[P7-08 operations] committed204 Dismiss updates notices locally even when refresh fails without completing a task", + "status": "passed" + }, + { + "name": "[P7-08 operations] failed POST preserves eligibility and current-locale recovery without false commit or new GET", + "status": "passed" + }, + { + "name": "[P7-08 operations] server action admission overrides displayed status and unknown metadata remains honest", + "status": "passed" + }, + { + "name": "[P7-08 operations] unmount aborts a pending read and late completion cannot fetch or publish", + "status": "passed" + }, + { + "name": "[P7-08 operations] unmount during a write prevents its late follow-up GET, event and focus effects", + "status": "passed" + }, + { + "name": "[P7-08 operations] removing the initiating control restores meaningful focus while deliberate focus elsewhere stays put", + "status": "passed" + }, + { + "name": "[P7-08 operations] accepted background polls preserve surviving and deliberate focus and recover removed focused controls", + "status": "passed" + }, + { + "name": "[PRES-E07] command search opens Nordlys AS - Platform engineer at its existing destination", + "status": "passed" + }, + { + "name": "[PRES-E07] command search opens Nordlys AS at its existing destination", + "status": "passed" + }, + { + "name": "[PRES-E07 PRES-J04] the capture command opens review without creating a job, and closing clears search", + "status": "passed" + }, + { + "name": "[P5-00 PRES-E07] command and empty results use valid list semantics", + "status": "passed" + }, + { + "name": "[P5-02 PRES-E07] search failure is distinct from no matches and Retry recovers", + "status": "passed" + }, + { + "name": "[P5-02 PRES-E09] closed and superseded searches cannot display stale account results", + "status": "passed" + }, + { + "name": "[P5-02 PRES-E07] a slower old query cannot replace the newer matching results", + "status": "passed" + }, + { + "name": "[P5-02 PRES-E07] arrows, Home, End and Enter activate one existing command; composition does not", + "status": "passed" + }, + { + "name": "[P5-02 PRES-E07] arrowing from a focused result keeps focus and activation on the same item", + "status": "passed" + }, + { + "name": "[P7-07 PRES-E07] the Documents command is localized and opens its owner index without fetching bodies", + "status": "passed" + }, + { + "name": "[P5-01 PRES-E07 E08] grouped navigation exposes the current child without marking the parent as the page", + "status": "passed" + }, + { + "name": "[P5-01 PRES-E07 E08] collapsed secondary destinations remain keyboard-operable", + "status": "passed" + }, + { + "name": "[P5-01 PRES-E08] successful shell navigation focuses the new route heading and exposes a skip link", + "status": "passed" + }, + { + "name": "shows notifications and updates read and dismissed state in place", + "status": "passed" + }, + { + "name": "opens a notification destination instead of routing the bell itself", + "status": "passed" + }, + { + "name": "shows an honest empty state", + "status": "passed" + }, + { + "name": "[P5-02 PRES-E09] a closed notification request cannot populate a later account's panel", + "status": "passed" + }, + { + "name": "[P5-02 PRES-E09] a delayed read cannot navigate from a closed earlier-account panel", + "status": "passed" + }, + { + "name": "[P5-02 PRES-S02] failed notification load offers Retry without claiming an empty inbox", + "status": "passed" + }, + { + "name": "[P7-08 notifications] same-render duplicate Open starts one mutation", + "status": "passed" + }, + { + "name": "[P7-08 notifications] same-render duplicate Mark read starts one mutation", + "status": "passed" + }, + { + "name": "[P7-08 notifications] same-render duplicate Dismiss starts one mutation", + "status": "passed" + }, + { + "name": "[P7-08 notifications] Open cannot navigate while another notification mutation is pending", + "status": "passed" + }, + { + "name": "[P7-08 notifications] failed Open retains its unread notification and GET Retry cannot repeat the write or navigate", + "status": "passed" + }, + { + "name": "[P7-08 notifications] changing language during a held read does not reload or suppress its current successful Open", + "status": "passed" + }, + { + "name": "[P7-08 notifications] a held action failure uses the current language and preserves unread recovery without a locale refetch", + "status": "passed" + }, + { + "name": "[P7-08 notifications] Bokmål notification dates follow selected UI language rather than browser default", + "status": "passed" + }, + { + "name": "[P7-08 notifications] an older closed-panel write cannot mutate or unlock a reopened panel's pending Open", + "status": "passed" + }, + { + "name": "[P7-08 notifications] an unmounted pending Open cannot publish changes, close, navigate or refetch", + "status": "passed" + }, + { + "name": "[P7-08 notifications] same-render GET Retry is single-flight and cannot issue a notification write", + "status": "passed" + }, + { + "name": "[P7-08 notifications] removing the focused Mark read action leaves focus on a meaningful panel target", + "status": "passed" + }, + { + "name": "[P7-08 notifications] removing the focused Dismiss action leaves focus on a meaningful panel target", + "status": "passed" + }, + { + "name": "[P7-08 notifications] completing an action preserves deliberate focus on Close", + "status": "passed" + }, + { + "name": "[P7-08 notifications] successful focused GET Retry leaves focus on a meaningful panel target after its notice disappears", + "status": "passed" + }, + { + "name": "notification bell exposes its unread count and keyboard-accessible action", + "status": "passed" + }, + { + "name": "shows build metadata only when the caller supplies the admin-only badge", + "status": "passed" + }, + { + "name": "shell icon controls expose accessible names", + "status": "passed" + }, + { + "name": "[P7-08 notifications] an unavailable unread count stays unknown and its description follows the UI language", + "status": "passed" + }, + { + "name": "[P7-08 notifications] a recorded zero unread count has a truthful separate description", + "status": "passed" + }, + { + "name": "[P7-08 notifications] the known unread count is described in Bokmål without changing the bell action's name", + "status": "passed" + }, + { + "name": "migrates the legacy Norwegian code and persists Bokmål using nb-NO", + "status": "passed" + }, + { + "name": "hydrates an authenticated server preference without writing it back", + "status": "passed" + }, + { + "name": "a failed account language save keeps the local choice and offers a localized retry: Norsk", + "status": "passed" + }, + { + "name": "a failed account language save keeps the local choice and offers a localized retry: English", + "status": "passed" + }, + { + "name": "a delayed language-save failure cannot offer a retry for a newer successful choice", + "status": "passed" + }, + { + "name": "a previously delivered language retry cannot reverse a newer choice", + "status": "passed" + }, + { + "name": "sidebar active nav ownership /career activates Career Workspace only", + "status": "passed" + }, + { + "name": "sidebar active nav ownership /career/builder activates CV Builder only, not Career Workspace", + "status": "passed" + }, + { + "name": "sidebar active nav ownership /career/builder/{id} activates CV Builder only (the reported bug)", + "status": "passed" + }, + { + "name": "sidebar active nav ownership a plain child of /career (not /builder) still belongs to Career Workspace", + "status": "passed" + }, + { + "name": "sidebar active nav ownership unrelated routes are unaffected and exact matches win", + "status": "passed" + }, + { + "name": "sidebar active nav ownership a path owned by no nav item activates nothing", + "status": "passed" + }, + { + "name": "sidebar active nav ownership exactly one item is ever active (no double highlight)", + "status": "passed" + }, + { + "name": "grouped sidebar ownership non-nested Jobs destinations select their actual secondary owner", + "status": "passed" + }, + { + "name": "grouped sidebar ownership legacy application details retain Jobs ownership", + "status": "passed" + }, + { + "name": "grouped sidebar ownership CV editor routes never select Career Profile", + "status": "passed" + } + ], + "commandRaw": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/unit/p708-operations-final-20261017T015605Z-command.json", + "sha256": "68db800979d510ce241ac199ba7107f248460d68b029c493dcea76abd92370e6", + "bytes": 896, + "hashPolicy": "Exact measured raw bytes" + }, + "logRaw": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/unit/p708-operations-final-20261017T015605Z.log", + "sha256": "2d3a61ed9064619d108dc8e75e377a2cb7ac42f26db26ecf3f503f1ddc242791", + "bytes": 1001, + "hashPolicy": "Exact measured raw bytes" + }, + "qualification": "Raw executed outcome; source bytes are not inferred retroactively. Passing subset is not slice acceptance." + } + ], + "gates": [ + { + "command": { + "name": "lint", + "command": [ + "rtk", + "proxy", + "npm.cmd", + "run", + "lint" + ], + "startedUtc": "2026-10-17T01:56:15.965185+00:00", + "finishedUtc": "2026-10-17T01:56:38.079229+00:00", + "exitCode": 0 + }, + "commandRaw": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/gates/lint-command.json", + "sha256": "f1d1528b808c4c1ff35c47ab917cda0975eb325984680001ebeb78b49696908c", + "bytes": 237, + "hashPolicy": "Exact measured raw bytes" + }, + "logRaw": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/gates/lint.log", + "sha256": "b040dbeca9b4adb3f6f4c25ac49de0d37e921375b2d9b57e87b542a10f599913", + "bytes": 136, + "hashPolicy": "Exact measured raw bytes" + } + }, + { + "command": { + "name": "typecheck", + "command": [ + "rtk", + "proxy", + "npm.cmd", + "run", + "typecheck" + ], + "startedUtc": "2026-10-17T01:56:38.081256+00:00", + "finishedUtc": "2026-10-17T01:56:48.967183+00:00", + "exitCode": 0 + }, + "commandRaw": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/gates/typecheck-command.json", + "sha256": "977ecb92295805de49176a90436b5a7ed6983fd319eba45bbc197586049ebf0f", + "bytes": 247, + "hashPolicy": "Exact measured raw bytes" + }, + "logRaw": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/gates/typecheck.log", + "sha256": "89b0ec97b537eca6560c13ca2dfea9e3a97dd1bb35580c4ff39d2462db25e080", + "bytes": 148, + "hashPolicy": "Exact measured raw bytes" + } + }, + { + "command": { + "name": "browser-typecheck", + "command": [ + "rtk", + "proxy", + "npm.cmd", + "exec", + "tsc", + "--", + "--project", + "../.artifacts/phase7/e2e-tsconfig.json", + "--noEmit" + ], + "startedUtc": "2026-10-17T01:56:48.970700+00:00", + "finishedUtc": "2026-10-17T01:57:01.477286+00:00", + "exitCode": 0 + }, + "commandRaw": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/gates/browser-typecheck-command.json", + "sha256": "9620951b500f9503f21a1a2a22c7c3615bcd8773cf1e7d48d536d9fd2488686e", + "bytes": 343, + "hashPolicy": "Exact measured raw bytes" + }, + "logRaw": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/gates/browser-typecheck.log", + "sha256": "d2993bc68ad9a63f711c8f5473155e2ba00fdcd461220cc3849185f2f9ad93e6", + "bytes": 78, + "hashPolicy": "Exact measured raw bytes" + } + }, + { + "command": { + "name": "build", + "command": [ + "rtk", + "proxy", + "npm.cmd", + "run", + "build" + ], + "startedUtc": "2026-10-17T01:57:01.479288+00:00", + "finishedUtc": "2026-10-17T01:57:09.154781+00:00", + "exitCode": 0 + }, + "commandRaw": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/gates/build-command.json", + "sha256": "4129ada16668525d15c82c7ff2b4dec2e04b704d5df092604d7a3babee2b9185", + "bytes": 239, + "hashPolicy": "Exact measured raw bytes" + }, + "logRaw": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/gates/build.log", + "sha256": "b3d1cdf88ee803a4aa2703b6497a2295e4d1a740f028793c47cf18e85e3a6134", + "bytes": 670, + "hashPolicy": "Exact measured raw bytes" + } + } + ], + "native": { + "operations": { + "command": { + "name": "operations", + "command": [ + "rtk", + "proxy", + "node", + "node_modules/@playwright/test/cli.js", + "test", + "e2e/phase7-operations.spec.ts", + "--retries=0", + "--reporter=list,json", + "--output=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\phase7\\current\\ui\\operations-results" + ], + "startedUtc": "2026-10-17T01:57:09.159317+00:00", + "finishedUtc": "2026-10-17T01:58:02.566772+00:00", + "exitCode": 0 + }, + "commandRaw": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/operations-command.json", + "sha256": "3100d1b210b3e6dba900a8e621537fdc84438b2c1ddabe3352cf4b9b60ff8490", + "bytes": 473, + "hashPolicy": "Exact measured raw bytes" + }, + "reportRaw": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/operations.json", + "sha256": "6bddc03ed451fd7c125ee6c297f4aa75c75c23b4fc233bf1738d7e3cfedc09f5", + "bytes": 1891817, + "hashPolicy": "Exact measured raw bytes" + }, + "logRaw": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/operations.log", + "sha256": "a5233e45f5a42935ef8d19369fdb0d877d054db0119b056091f1710b3ce611ad", + "bytes": 1469, + "hashPolicy": "Exact measured raw bytes" + }, + "stats": { + "startTime": "2026-10-17T01:57:09.762Z", + "duration": 52759.765999999996, + "expected": 5, + "skipped": 0, + "unexpected": 0, + "flaky": 0 + }, + "cases": [ + { + "title": "[P7-08 operations] actual UI cancellation creates a notice and retry preserves the task identity before a new cancellation notice", + "file": "phase7-operations.spec.ts", + "line": 79, + "expectedStatus": "passed", + "project": "chromium", + "resultStatuses": [ + "passed" + ], + "retries": [ + 0 + ], + "errors": [ + [] + ], + "durationMs": 3434 + }, + { + "title": "[P7-08 operations] actual read and dismiss persist through reload while the underlying cancelled task remains unchanged", + "file": "phase7-operations.spec.ts", + "line": 92, + "expectedStatus": "passed", + "project": "chromium", + "resultStatuses": [ + "passed" + ], + "retries": [ + 0 + ], + "errors": [ + [] + ], + "durationMs": 4309 + }, + { + "title": "[P7-08 operations] controlled failed read and held old poll cannot revert a committed cancellation or replay it during GET-only recovery", + "file": "phase7-operations.spec.ts", + "line": 101, + "expectedStatus": "passed", + "project": "chromium", + "resultStatuses": [ + "passed" + ], + "retries": [ + 0 + ], + "errors": [ + [] + ], + "durationMs": 17737 + }, + { + "title": "[P7-08 operations] actual owner and anonymous boundaries plus sign-out prevent earlier task and notice exposure", + "file": "phase7-operations.spec.ts", + "line": 117, + "expectedStatus": "passed", + "project": "chromium", + "resultStatuses": [ + "passed" + ], + "retries": [ + 0 + ], + "errors": [ + [] + ], + "durationMs": 3596 + }, + { + "title": "[P7-08 operations] eight finite bilingual theme widths retain long controlled metadata and reachable focused actions with complete axe vectors", + "file": "phase7-operations.spec.ts", + "line": 132, + "expectedStatus": "passed", + "project": "chromium", + "resultStatuses": [ + "passed" + ], + "retries": [ + 0 + ], + "errors": [ + [] + ], + "durationMs": 15298 + } + ], + "audit": { + "scans": [ + { + "test": "[P7-08 operations] actual UI cancellation creates a notice and retry preserves the task identity before a new cancellation notice", + "attachment": "p708-operations-en-light-1440-900-actual-ui-cancel-retry-same-id-audit", + "geometry": { + "viewport": { + "width": 1440, + "height": 900 + }, + "rootOverflow": 0, + "region": { + "left": 286, + "right": 1408, + "top": 190, + "bottom": 769.5, + "scrollWidth": 1122, + "clientWidth": 1122 + }, + "focused": { + "tag": "H2", + "text": "Recent activity", + "insideRegion": true, + "rect": { + "left": 286, + "right": 1312.703125, + "top": 190, + "bottom": 214 + } + } + }, + "engine": { + "name": "axe-core", + "version": "4.13.0" + }, + "toolOptions": { + "rules": { + "target-size": { + "enabled": true + } + }, + "reporter": "v1" + }, + "violationNodes": 0, + "incompleteNodes": 0, + "raw": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/embedded/operations/001-p708-operations-en-light-1440-900-actual-ui-cancel-retry-same-id-audit.json", + "sha256": "6beafc4e3bbc4ac88155c5df7c5e7d22945e2ef8a17ede718f437ac2a40bcaa7", + "bytes": 7283, + "hashPolicy": "Exact measured raw bytes" + }, + "originalEmbeddedReport": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/operations.json", + "sha256": "6bddc03ed451fd7c125ee6c297f4aa75c75c23b4fc233bf1738d7e3cfedc09f5", + "bytes": 1891817, + "hashPolicy": "Exact measured raw bytes" + }, + "context": { + "sample": { + "language": "en", + "theme": "light", + "width": 1440, + "height": 900 + }, + "state": "actual-ui-cancel-retry-same-id", + "boundary": "Operations-page native workflows use the actual Program, local Identity cookies/CSRF, free owner accounts and isolated temporary SQLite. A guarded test-only helper inserts exactly one inert queued native-offline-fixture task; no registered producer/handler, AI entitlement, subject, provider/model, lease, usage or result is created. Actual cancel/retry/read/dismiss endpoints own every recorded persistent transition. Actual terminal notices have operationId and linkPath=null: no result/Open capability is inferred. Explicitly labelled controlled GET projections qualify only long-text and internal-link presentation. Controlled precommit503/held GET responses qualify UI recovery/race handling, not uncertain delivery. Every external request is aborted. Only existing HTTPS GET stylesheet requests to fonts.googleapis.com/css2 are classified separately as blocked font resources; every occurrence is retained, no font is fetched, and other external/provider/model requests remain an ordinary failing assertion. Font-resource counts are separate from forbidden provider/model counts; these captures do not qualify production fonts. No production/main/deployment, worker activation, Docker/model qualification, provider grant/send/sync, renderer or Phase8 action. Finite local Chromium/axe evidence does not establish human screen-reader, physical touch/software keyboard, actual zoom, live MariaDB, real worker execution, production font/photo or production readiness.", + "controlledProjection": null, + "qualifications": [ + "Finite local Chromium screenshots/geometry only; human AT, physical touch, software keyboard, zoom and production acceptance remain pending.", + "Controlled metadata is labelled explicitly and does not claim current producer output or execute an operation handler.", + "Full-page sticky captures are not viewport-obstruction evidence; focused-control geometry is recorded before and after explicit scroll restoration." + ] + }, + "rules": [] + }, + { + "test": "[P7-08 operations] actual read and dismiss persist through reload while the underlying cancelled task remains unchanged", + "attachment": "p708-operations-en-light-1440-900-actual-read-dismiss-task-unchanged-audit", + "geometry": { + "viewport": { + "width": 1440, + "height": 900 + }, + "rootOverflow": 0, + "region": { + "left": 286, + "right": 1408, + "top": 190, + "bottom": 620.5, + "scrollWidth": 1122, + "clientWidth": 1122 + }, + "focused": { + "tag": "BODY", + "text": "You need to enable JavaScript to run this app.Unread notifications: 0Skip to main contentENNO0Quick SearchCtrl+KPOp708-operations-1792202241097-ne9ne2t674@example.testUserJobbjaktTrack your huntDashboardJob searchJob ApplicationsDiscover jobsRemindersCompaniesCompare offersTrashJob emailCareerCareer profileCV BuilderDocumentsInsightsAnalyticsAccountSettingsProfileConnected accountsHome/OperationsOperationsRecent activityBackground work survives navigation and refresh.RefreshShows up to 50 recent notifications and 50 recent operations.NotificationsNo notifications.Operationsnative-offline-fixtureCancelledCreated 17/10/2026, 03:57:21Retry(self.__next_f=self.__next_f||[]).push([0])self.__next_f.push([1,\"1:\\\"$Sreact.fragment\\\"\\n2:I[79520,[\\\"/_next/static/chunks/2vlttipo05xfv.js\\\"],\\\"\\\"]\\n5:I[39756,[\\\"/_next/static/chunks/2vlttipo05xfv.js\\\"],\\\"default\\\"]\\n6:I[37457,[\\\"/_next/static/chunks/2vlttipo05xfv.js\\\"],\\\"default\\\"]\\n7:I[37284,[\\\"/_next/static/chunks/2vlttipo05xfv.js\\\",\\\"/_next/static/chunks/42jsdma3kddfw.js\\\"],\\\"default\\\"]\\n8:I[97367,[\\\"/_next/static/chunks/2vlttipo05xfv.js\\\"],\\\"OutletBoundary\\\"]\\n9:\\\"$Sreact.suspense\\\"\\nb:I[97367,[\\\"/_next/static/chunks/2vlttipo05xfv.js\\\"],\\\"ViewportBoundary\\\"]\\nd:I[97367,[\\\"/_next/static/chunks/2vlttipo05xfv.js\\\"],\\\"MetadataBoundary\\\"]\\nf:I[68027,[\\\"/_next/static/chunks/2vlttipo05xfv.js\\\"],\\\"default\\\",1]\\n:HL[\\\"/_next/static/chunks/1xwc-b795syag.css\\\",\\\"style\\\"]\\n:HL[\\\"https://fonts.googleapis.com/css2?family=Archivo:wght@400;500;600;700;800\\u0026display=swap\\\",\\\"style\\\"]\\n3:T46f,(() =\\u003e {\\n try {\\n const read = (key) =\\u003e {\\n const value = window.localStorage.getItem(key);\\n return value === \\\"light\\\" || value === \\\"dark\\\" || value === \\\"system\\\" ? value : null;\\n };\\n const userKey = window.localStorage.getItem(\\\"authUserKey\\\") || \\\"anon\\\";\\n const legacyPreference = read(\\\"themeMode:\\\" + userKey) || (userKey !== \\\"anon\\\" ? read(\\\"themeMode:anon\\\") : null);\\n const preference = read(\\\"jobtracker.themeMode\\\") || legacyPreference || \\\"system\\\";\\n if (!read(\\\"jobtracker.themeMode\\\") \\u0026\\u0026 legacyPreference) window.localStorage.setItem(\\\"jobtracker.themeMode\\\", legacyPreference);\\n const mode = preference === \\\"dark\\\" || (preference === \\\"system\\\" \\u0026\\u0026 window.matchMedia(\\\"(prefers-color-scheme: dark)\\\").matches) ? \\\"dark\\\" : \\\"light\\\";\\n document.documentElement.setAttribute(\\\"data-color-scheme\\\", mode);\\n document.documentElement.style.colorScheme = mode;\\n } catch {\\n const mode = window.matchMedia \\u0026\\u0026 window.matchMedia(\\\"(prefers-color-scheme: dark)\\\").matches ? \\\"dark\\\" : \\\"light\\\";\\n document.documentElement.setAttribute(\\\"data-color-scheme\\\", mode);\\n document.documentElement.style.colorScheme = mode;\\n }\\n})();4:\\\"You need to enable JavaScript to run this app.\\\"\\n0:{\\\"P\\\":null,\\\"c\\\":[\\\"\\\",\\\"\\\"],\\\"q\\\":\\\"\\\",\\\"i\\\":false,\\\"f\\\":[[[\\\"\\\",{\\\"children\\\":[\\\"__PAGE__\\\",{},\\\"$undefined\\\",\\\"$undefined\\\",4608]},\\\"$undefined\\\",\\\"$undefined\\\",4624],[[\\\"$\\\",\\\"$1\\\",\\\"c\\\",{\\\"children\\\":[[[\\\"$\\\",\\\"link\\\",\\\"0\\\",{\\\"rel\\\":\\\"stylesheet\\\",\\\"href\\\":\\\"/_next/static/chunks/1xwc-b795syag.css\\\",\\\"precedence\\\":\\\"next\\\",\\\"crossOrigin\\\":\\\"$undefined\\\",\\\"nonce\\\":\\\"$undefined\\\"}],[\\\"$\\\",\\\"script\\\",\\\"script-0\\\",{\\\"src\\\":\\\"/_next/static/chunks/2vlttipo05xfv.js\\\",\\\"async\\\":true,\\\"nonce\\\":\\\"$undefined\\\"}]],[\\\"$\\\",\\\"html\\\",null,{\\\"lang\\\":\\\"en\\\",\\\"suppressHydrationWarning\\\":true,\\\"children\\\":[[\\\"$\\\",\\\"head\\\",null,{\\\"children\\\":[[\\\"$\\\",\\\"$L2\\\",null,{\\\"id\\\":\\\"jobtracker-theme-bootstrap\\\",\\\"strategy\\\":\\\"beforeInteractive\\\",\\\"dangerouslySetInnerHTML\\\":{\\\"__html\\\":\\\"$3\\\"}}],[\\\"$\\\",\\\"link\\\",null,{\\\"rel\\\":\\\"preconnect\\\",\\\"href\\\":\\\"https://fonts.googleapis.com\\\"}],[\\\"$\\\",\\\"link\\\",null,{\\\"rel\\\":\\\"preconnect\\\",\\\"href\\\":\\\"https://fonts.gstatic.com\\\",\\\"crossOrigin\\\":\\\"anonymous\\\"}],[\\\"$\\\",\\\"link\\\",null,{\\\"href\\\":\\\"https://fonts.googleapis.com/css2?family=Archivo:wght@400;500;600;700;800\\u0026display=swap\\\",\\\"rel\\\":\\\"stylesheet\\\"}]]}],[\\\"$\\\",\\\"body\\\",null,{\\\"children\\\":[[\\\"$\\\",\\\"noscript\\\",null,{\\\"children\\\":\\\"You need to enable JavaScript to run this app.\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"id\\\":\\\"root\\\",\\\"children\\\":[\\\"$\\\",\\\"$L5\\\",null,{\\\"parallelRouterKey\\\":\\\"children\\\",\\\"error\\\":\\\"$undefined\\\",\\\"errorStyles\\\":\\\"$undefined\\\",\\\"errorScripts\\\":\\\"$undefined\\\",\\\"template\\\":[\\\"$\\\",\\\"$L6\\\",null,{}],\\\"templateStyles\\\":\\\"$undefined\\\",\\\"templateScripts\\\":\\\"$undefined\\\",\\\"notFound\\\":[[[\\\"$\\\",\\\"title\\\",null,{\\\"children\\\":\\\"404: This page could not be found.\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"style\\\":{\\\"fontFamily\\\":\\\"system-ui,\\\\\\\"Segoe UI\\\\\\\",Roboto,Helvetica,Arial,sans-serif,\\\\\\\"Apple Color Emoji\\\\\\\",\\\\\\\"Segoe UI Emoji\\\\\\\"\\\",\\\"height\\\":\\\"100vh\\\",\\\"textAlign\\\":\\\"center\\\",\\\"display\\\":\\\"flex\\\",\\\"flexDirection\\\":\\\"column\\\",\\\"alignItems\\\":\\\"center\\\",\\\"justifyContent\\\":\\\"center\\\"},\\\"children\\\":[\\\"$\\\",\\\"div\\\",null,{\\\"children\\\":[[\\\"$\\\",\\\"style\\\",null,{\\\"dangerouslySetInnerHTML\\\":{\\\"__html\\\":\\\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\\\"}}],[\\\"$\\\",\\\"h1\\\",null,{\\\"className\\\":\\\"next-error-h1\\\",\\\"style\\\":{\\\"display\\\":\\\"inline-block\\\",\\\"margin\\\":\\\"0 20px 0 0\\\",\\\"padding\\\":\\\"0 23px 0 0\\\",\\\"fontSize\\\":24,\\\"fontWeight\\\":500,\\\"verticalAlign\\\":\\\"top\\\",\\\"lineHeight\\\":\\\"49px\\\"},\\\"children\\\":404}],[\\\"$\\\",\\\"div\\\",null,{\\\"style\\\":{\\\"display\\\":\\\"inline-block\\\"},\\\"children\\\":[\\\"$\\\",\\\"h2\\\",null,{\\\"style\\\":{\\\"fontSize\\\":14,\\\"fontWeight\\\":400,\\\"lineHeight\\\":\\\"49px\\\",\\\"margin\\\":0},\\\"children\\\":\\\"This page could not be found.\\\"}]}]]}]}]],[]],\\\"forbidden\\\":\\\"$undefined\\\",\\\"unauthorized\\\":\\\"$undefined\\\"}]}]]}]]}]]}],{\\\"children\\\":[[\\\"$\\\",\\\"$1\\\",\\\"c\\\",{\\\"children\\\":[[\\\"$\\\",\\\"$L7\\\",null,{}],[[\\\"$\\\",\\\"script\\\",\\\"script-0\\\",{\\\"src\\\":\\\"/_next/static/chunks/42jsdma3kddfw.js\\\",\\\"async\\\":true,\\\"nonce\\\":\\\"$undefined\\\"}]],[\\\"$\\\",\\\"$L8\\\",null,{\\\"children\\\":[\\\"$\\\",\\\"$9\\\",null,{\\\"name\\\":\\\"Next.MetadataOutlet\\\",\\\"children\\\":\\\"$@a\\\"}]}]]}],{},null,false,null]},null,false,null],[\\\"$\\\",\\\"$1\\\",\\\"h\\\",{\\\"children\\\":[null,[\\\"$\\\",\\\"$Lb\\\",null,{\\\"children\\\":\\\"$Lc\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"hidden\\\":true,\\\"children\\\":[\\\"$\\\",\\\"$Ld\\\",null,{\\\"children\\\":[\\\"$\\\",\\\"$9\\\",null,{\\\"name\\\":\\\"Next.Metadata\\\",\\\"children\\\":\\\"$Le\\\"}]}]}],null]}],false]],\\\"m\\\":\\\"$undefined\\\",\\\"G\\\":[\\\"$f\\\",[[\\\"$\\\",\\\"link\\\",\\\"0\\\",{\\\"rel\\\":\\\"stylesheet\\\",\\\"href\\\":\\\"/_next/static/chunks/1xwc-b795syag.css\\\",\\\"precedence\\\":\\\"next\\\",\\\"crossOrigin\\\":\\\"$undefined\\\",\\\"nonce\\\":\\\"$undefined\\\"}]]],\\\"S\\\":true,\\\"h\\\":null,\\\"r\\\":\\\"$undefined\\\",\\\"s\\\":\\\"$undefined\\\",\\\"a\\\":\\\"$undefined\\\",\\\"l\\\":\\\"$undefined\\\",\\\"p\\\":\\\"$undefined\\\",\\\"d\\\":\\\"$undefined\\\",\\\"b\\\":\\\"YBJ6UzKUv_ZeDjZzgO3Gh\\\"}\\nc:[[\\\"$\\\",\\\"meta\\\",\\\"0\\\",{\\\"charSet\\\":\\\"utf-8\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"1\\\",{\\\"name\\\":\\\"viewport\\\",\\\"content\\\":\\\"width=device-width, initial-scale=1\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"2\\\",{\\\"name\\\":\\\"theme-color\\\",\\\"content\\\":\\\"#15803d\\\"}]]\\n10:I[27201,[\\\"/_next/static/chunks/2vlttipo05xfv.js\\\"],\\\"IconMark\\\"]\\na:null\\ne:[[\\\"$\\\",\\\"title\\\",\\\"0\\\",{\\\"children\\\":\\\"Jobbjakt\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"1\\\",{\\\"name\\\":\\\"description\\\",\\\"content\\\":\\\"Jobbjakt — track and manage job applications\\\"}],[\\\"$\\\",\\\"link\\\",\\\"2\\\",{\\\"rel\\\":\\\"manifest\\\",\\\"href\\\":\\\"/manifest.json\\\",\\\"crossOrigin\\\":\\\"$undefined\\\"}],[\\\"$\\\",\\\"link\\\",\\\"3\\\",{\\\"rel\\\":\\\"icon\\\",\\\"href\\\":\\\"/favicon.svg\\\",\\\"type\\\":\\\"image/svg+xml\\\"}],[\\\"$\\\",\\\"link\\\",\\\"4\\\",{\\\"rel\\\":\\\"icon\\\",\\\"href\\\":\\\"/favicon.ico\\\"}],[\\\"$\\\",\\\"link\\\",\\\"5\\\",{\\\"rel\\\":\\\"apple-touch-icon\\\",\\\"href\\\":\\\"/logo192.png\\\"}],[\\\"$\\\",\\\"$L10\\\",\\\"6\\\",{}]]\\n\"])JobbjaktTrack your huntDashboardJob searchJob ApplicationsDiscover jobsRemindersCompaniesCompare offersTrashJob emailCareerCareer profileCV BuilderDocumentsInsightsAnalyticsAccountSettingsProfileConnected accounts", + "insideRegion": false, + "rect": { + "left": 0, + "right": 1440, + "top": 0, + "bottom": 900 + } + } + }, + "engine": { + "name": "axe-core", + "version": "4.13.0" + }, + "toolOptions": { + "rules": { + "target-size": { + "enabled": true + } + }, + "reporter": "v1" + }, + "violationNodes": 0, + "incompleteNodes": 1, + "raw": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/embedded/operations/005-p708-operations-en-light-1440-900-actual-read-dismiss-task-unchanged-audit.json", + "sha256": "e692f75ede8f36c8a7fa7dbd42e87c52184f4fd76b9be5dc2bb1d8d8fe0c819d", + "bytes": 17518, + "hashPolicy": "Exact measured raw bytes" + }, + "originalEmbeddedReport": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/operations.json", + "sha256": "6bddc03ed451fd7c125ee6c297f4aa75c75c23b4fc233bf1738d7e3cfedc09f5", + "bytes": 1891817, + "hashPolicy": "Exact measured raw bytes" + }, + "context": { + "sample": { + "language": "en", + "theme": "light", + "width": 1440, + "height": 900 + }, + "state": "actual-read-dismiss-task-unchanged", + "boundary": "Operations-page native workflows use the actual Program, local Identity cookies/CSRF, free owner accounts and isolated temporary SQLite. A guarded test-only helper inserts exactly one inert queued native-offline-fixture task; no registered producer/handler, AI entitlement, subject, provider/model, lease, usage or result is created. Actual cancel/retry/read/dismiss endpoints own every recorded persistent transition. Actual terminal notices have operationId and linkPath=null: no result/Open capability is inferred. Explicitly labelled controlled GET projections qualify only long-text and internal-link presentation. Controlled precommit503/held GET responses qualify UI recovery/race handling, not uncertain delivery. Every external request is aborted. Only existing HTTPS GET stylesheet requests to fonts.googleapis.com/css2 are classified separately as blocked font resources; every occurrence is retained, no font is fetched, and other external/provider/model requests remain an ordinary failing assertion. Font-resource counts are separate from forbidden provider/model counts; these captures do not qualify production fonts. No production/main/deployment, worker activation, Docker/model qualification, provider grant/send/sync, renderer or Phase8 action. Finite local Chromium/axe evidence does not establish human screen-reader, physical touch/software keyboard, actual zoom, live MariaDB, real worker execution, production font/photo or production readiness.", + "controlledProjection": null, + "qualifications": [ + "Finite local Chromium screenshots/geometry only; human AT, physical touch, software keyboard, zoom and production acceptance remain pending.", + "Controlled metadata is labelled explicitly and does not claim current producer output or execute an operation handler.", + "Full-page sticky captures are not viewport-obstruction evidence; focused-control geometry is recorded before and after explicit scroll restoration." + ] + }, + "rules": [ + { + "kind": "incomplete", + "id": "color-contrast", + "nodes": 1 + } + ] + }, + { + "test": "[P7-08 operations] controlled failed read and held old poll cannot revert a committed cancellation or replay it during GET-only recovery", + "attachment": "p708-operations-nb-light-1440-900-controlled-postcommit-get-only-recovery-audit", + "geometry": { + "viewport": { + "width": 1440, + "height": 900 + }, + "rootOverflow": 0, + "region": { + "left": 286, + "right": 1408, + "top": 190, + "bottom": 769.5, + "scrollWidth": 1122, + "clientWidth": 1122 + }, + "focused": { + "tag": "H2", + "text": "Nylig aktivitet", + "insideRegion": true, + "rect": { + "left": 286, + "right": 1299.203125, + "top": 190, + "bottom": 214 + } + } + }, + "engine": { + "name": "axe-core", + "version": "4.13.0" + }, + "toolOptions": { + "rules": { + "target-size": { + "enabled": true + } + }, + "reporter": "v1" + }, + "violationNodes": 0, + "incompleteNodes": 1, + "raw": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/embedded/operations/009-p708-operations-nb-light-1440-900-controlled-postcommit-get-only-recovery-audit.json", + "sha256": "52149966ae6e23888908b7f27c46d2013cf6186f80d72e80493fab84efd573ef", + "bytes": 8741, + "hashPolicy": "Exact measured raw bytes" + }, + "originalEmbeddedReport": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/operations.json", + "sha256": "6bddc03ed451fd7c125ee6c297f4aa75c75c23b4fc233bf1738d7e3cfedc09f5", + "bytes": 1891817, + "hashPolicy": "Exact measured raw bytes" + }, + "context": { + "sample": { + "language": "nb", + "theme": "light", + "width": 1440, + "height": 900 + }, + "state": "controlled-postcommit-get-only-recovery", + "boundary": "Operations-page native workflows use the actual Program, local Identity cookies/CSRF, free owner accounts and isolated temporary SQLite. A guarded test-only helper inserts exactly one inert queued native-offline-fixture task; no registered producer/handler, AI entitlement, subject, provider/model, lease, usage or result is created. Actual cancel/retry/read/dismiss endpoints own every recorded persistent transition. Actual terminal notices have operationId and linkPath=null: no result/Open capability is inferred. Explicitly labelled controlled GET projections qualify only long-text and internal-link presentation. Controlled precommit503/held GET responses qualify UI recovery/race handling, not uncertain delivery. Every external request is aborted. Only existing HTTPS GET stylesheet requests to fonts.googleapis.com/css2 are classified separately as blocked font resources; every occurrence is retained, no font is fetched, and other external/provider/model requests remain an ordinary failing assertion. Font-resource counts are separate from forbidden provider/model counts; these captures do not qualify production fonts. No production/main/deployment, worker activation, Docker/model qualification, provider grant/send/sync, renderer or Phase8 action. Finite local Chromium/axe evidence does not establish human screen-reader, physical touch/software keyboard, actual zoom, live MariaDB, real worker execution, production font/photo or production readiness.", + "controlledProjection": "Initial operations GET503; actual15s poll held with an actual queued snapshot; actual cancel POST200; follow-up operations GET503. Old queued response is released after cancellation. Recovery is GET-only and actual persisted task remains cancelled. No provider, worker, fabricated result or uncertain delivery claim.", + "qualifications": [ + "Finite local Chromium screenshots/geometry only; human AT, physical touch, software keyboard, zoom and production acceptance remain pending.", + "Controlled metadata is labelled explicitly and does not claim current producer output or execute an operation handler.", + "Full-page sticky captures are not viewport-obstruction evidence; focused-control geometry is recorded before and after explicit scroll restoration." + ] + }, + "rules": [ + { + "kind": "incomplete", + "id": "color-contrast", + "nodes": 1 + } + ] + }, + { + "test": "[P7-08 operations] actual owner and anonymous boundaries plus sign-out prevent earlier task and notice exposure", + "attachment": "p708-operations-en-light-1440-900-actual-other-owner-empty-audit", + "geometry": { + "viewport": { + "width": 1440, + "height": 900 + }, + "rootOverflow": 0, + "region": { + "left": 286, + "right": 1408, + "top": 190, + "bottom": 507, + "scrollWidth": 1122, + "clientWidth": 1122 + }, + "focused": { + "tag": "BODY", + "text": "You need to enable JavaScript to run this app.Unread notifications: 0Skip to main contentENNO0Quick SearchCtrl+KPOp708-operations-1792202263526-emcycqqdse6@example.testUserJobbjaktTrack your huntDashboardJob searchJob ApplicationsDiscover jobsRemindersCompaniesCompare offersTrashJob emailCareerCareer profileCV BuilderDocumentsInsightsAnalyticsAccountSettingsProfileConnected accountsHome/OperationsOperationsRecent activityBackground work survives navigation and refresh.RefreshShows up to 50 recent notifications and 50 recent operations.NotificationsNo notifications.OperationsNo background operations yet.(self.__next_f=self.__next_f||[]).push([0])self.__next_f.push([1,\"1:\\\"$Sreact.fragment\\\"\\n2:I[79520,[\\\"/_next/static/chunks/2vlttipo05xfv.js\\\"],\\\"\\\"]\\n5:I[39756,[\\\"/_next/static/chunks/2vlttipo05xfv.js\\\"],\\\"default\\\"]\\n6:I[37457,[\\\"/_next/static/chunks/2vlttipo05xfv.js\\\"],\\\"default\\\"]\\n7:I[37284,[\\\"/_next/static/chunks/2vlttipo05xfv.js\\\",\\\"/_next/static/chunks/42jsdma3kddfw.js\\\"],\\\"default\\\"]\\n8:I[97367,[\\\"/_next/static/chunks/2vlttipo05xfv.js\\\"],\\\"OutletBoundary\\\"]\\n9:\\\"$Sreact.suspense\\\"\\nb:I[97367,[\\\"/_next/static/chunks/2vlttipo05xfv.js\\\"],\\\"ViewportBoundary\\\"]\\nd:I[97367,[\\\"/_next/static/chunks/2vlttipo05xfv.js\\\"],\\\"MetadataBoundary\\\"]\\nf:I[68027,[\\\"/_next/static/chunks/2vlttipo05xfv.js\\\"],\\\"default\\\",1]\\n:HL[\\\"/_next/static/chunks/1xwc-b795syag.css\\\",\\\"style\\\"]\\n:HL[\\\"https://fonts.googleapis.com/css2?family=Archivo:wght@400;500;600;700;800\\u0026display=swap\\\",\\\"style\\\"]\\n3:T46f,(() =\\u003e {\\n try {\\n const read = (key) =\\u003e {\\n const value = window.localStorage.getItem(key);\\n return value === \\\"light\\\" || value === \\\"dark\\\" || value === \\\"system\\\" ? value : null;\\n };\\n const userKey = window.localStorage.getItem(\\\"authUserKey\\\") || \\\"anon\\\";\\n const legacyPreference = read(\\\"themeMode:\\\" + userKey) || (userKey !== \\\"anon\\\" ? read(\\\"themeMode:anon\\\") : null);\\n const preference = read(\\\"jobtracker.themeMode\\\") || legacyPreference || \\\"system\\\";\\n if (!read(\\\"jobtracker.themeMode\\\") \\u0026\\u0026 legacyPreference) window.localStorage.setItem(\\\"jobtracker.themeMode\\\", legacyPreference);\\n const mode = preference === \\\"dark\\\" || (preference === \\\"system\\\" \\u0026\\u0026 window.matchMedia(\\\"(prefers-color-scheme: dark)\\\").matches) ? \\\"dark\\\" : \\\"light\\\";\\n document.documentElement.setAttribute(\\\"data-color-scheme\\\", mode);\\n document.documentElement.style.colorScheme = mode;\\n } catch {\\n const mode = window.matchMedia \\u0026\\u0026 window.matchMedia(\\\"(prefers-color-scheme: dark)\\\").matches ? \\\"dark\\\" : \\\"light\\\";\\n document.documentElement.setAttribute(\\\"data-color-scheme\\\", mode);\\n document.documentElement.style.colorScheme = mode;\\n }\\n})();4:\\\"You need to enable JavaScript to run this app.\\\"\\n0:{\\\"P\\\":null,\\\"c\\\":[\\\"\\\",\\\"\\\"],\\\"q\\\":\\\"\\\",\\\"i\\\":false,\\\"f\\\":[[[\\\"\\\",{\\\"children\\\":[\\\"__PAGE__\\\",{},\\\"$undefined\\\",\\\"$undefined\\\",4608]},\\\"$undefined\\\",\\\"$undefined\\\",4624],[[\\\"$\\\",\\\"$1\\\",\\\"c\\\",{\\\"children\\\":[[[\\\"$\\\",\\\"link\\\",\\\"0\\\",{\\\"rel\\\":\\\"stylesheet\\\",\\\"href\\\":\\\"/_next/static/chunks/1xwc-b795syag.css\\\",\\\"precedence\\\":\\\"next\\\",\\\"crossOrigin\\\":\\\"$undefined\\\",\\\"nonce\\\":\\\"$undefined\\\"}],[\\\"$\\\",\\\"script\\\",\\\"script-0\\\",{\\\"src\\\":\\\"/_next/static/chunks/2vlttipo05xfv.js\\\",\\\"async\\\":true,\\\"nonce\\\":\\\"$undefined\\\"}]],[\\\"$\\\",\\\"html\\\",null,{\\\"lang\\\":\\\"en\\\",\\\"suppressHydrationWarning\\\":true,\\\"children\\\":[[\\\"$\\\",\\\"head\\\",null,{\\\"children\\\":[[\\\"$\\\",\\\"$L2\\\",null,{\\\"id\\\":\\\"jobtracker-theme-bootstrap\\\",\\\"strategy\\\":\\\"beforeInteractive\\\",\\\"dangerouslySetInnerHTML\\\":{\\\"__html\\\":\\\"$3\\\"}}],[\\\"$\\\",\\\"link\\\",null,{\\\"rel\\\":\\\"preconnect\\\",\\\"href\\\":\\\"https://fonts.googleapis.com\\\"}],[\\\"$\\\",\\\"link\\\",null,{\\\"rel\\\":\\\"preconnect\\\",\\\"href\\\":\\\"https://fonts.gstatic.com\\\",\\\"crossOrigin\\\":\\\"anonymous\\\"}],[\\\"$\\\",\\\"link\\\",null,{\\\"href\\\":\\\"https://fonts.googleapis.com/css2?family=Archivo:wght@400;500;600;700;800\\u0026display=swap\\\",\\\"rel\\\":\\\"stylesheet\\\"}]]}],[\\\"$\\\",\\\"body\\\",null,{\\\"children\\\":[[\\\"$\\\",\\\"noscript\\\",null,{\\\"children\\\":\\\"You need to enable JavaScript to run this app.\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"id\\\":\\\"root\\\",\\\"children\\\":[\\\"$\\\",\\\"$L5\\\",null,{\\\"parallelRouterKey\\\":\\\"children\\\",\\\"error\\\":\\\"$undefined\\\",\\\"errorStyles\\\":\\\"$undefined\\\",\\\"errorScripts\\\":\\\"$undefined\\\",\\\"template\\\":[\\\"$\\\",\\\"$L6\\\",null,{}],\\\"templateStyles\\\":\\\"$undefined\\\",\\\"templateScripts\\\":\\\"$undefined\\\",\\\"notFound\\\":[[[\\\"$\\\",\\\"title\\\",null,{\\\"children\\\":\\\"404: This page could not be found.\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"style\\\":{\\\"fontFamily\\\":\\\"system-ui,\\\\\\\"Segoe UI\\\\\\\",Roboto,Helvetica,Arial,sans-serif,\\\\\\\"Apple Color Emoji\\\\\\\",\\\\\\\"Segoe UI Emoji\\\\\\\"\\\",\\\"height\\\":\\\"100vh\\\",\\\"textAlign\\\":\\\"center\\\",\\\"display\\\":\\\"flex\\\",\\\"flexDirection\\\":\\\"column\\\",\\\"alignItems\\\":\\\"center\\\",\\\"justifyContent\\\":\\\"center\\\"},\\\"children\\\":[\\\"$\\\",\\\"div\\\",null,{\\\"children\\\":[[\\\"$\\\",\\\"style\\\",null,{\\\"dangerouslySetInnerHTML\\\":{\\\"__html\\\":\\\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\\\"}}],[\\\"$\\\",\\\"h1\\\",null,{\\\"className\\\":\\\"next-error-h1\\\",\\\"style\\\":{\\\"display\\\":\\\"inline-block\\\",\\\"margin\\\":\\\"0 20px 0 0\\\",\\\"padding\\\":\\\"0 23px 0 0\\\",\\\"fontSize\\\":24,\\\"fontWeight\\\":500,\\\"verticalAlign\\\":\\\"top\\\",\\\"lineHeight\\\":\\\"49px\\\"},\\\"children\\\":404}],[\\\"$\\\",\\\"div\\\",null,{\\\"style\\\":{\\\"display\\\":\\\"inline-block\\\"},\\\"children\\\":[\\\"$\\\",\\\"h2\\\",null,{\\\"style\\\":{\\\"fontSize\\\":14,\\\"fontWeight\\\":400,\\\"lineHeight\\\":\\\"49px\\\",\\\"margin\\\":0},\\\"children\\\":\\\"This page could not be found.\\\"}]}]]}]}]],[]],\\\"forbidden\\\":\\\"$undefined\\\",\\\"unauthorized\\\":\\\"$undefined\\\"}]}]]}]]}]]}],{\\\"children\\\":[[\\\"$\\\",\\\"$1\\\",\\\"c\\\",{\\\"children\\\":[[\\\"$\\\",\\\"$L7\\\",null,{}],[[\\\"$\\\",\\\"script\\\",\\\"script-0\\\",{\\\"src\\\":\\\"/_next/static/chunks/42jsdma3kddfw.js\\\",\\\"async\\\":true,\\\"nonce\\\":\\\"$undefined\\\"}]],[\\\"$\\\",\\\"$L8\\\",null,{\\\"children\\\":[\\\"$\\\",\\\"$9\\\",null,{\\\"name\\\":\\\"Next.MetadataOutlet\\\",\\\"children\\\":\\\"$@a\\\"}]}]]}],{},null,false,null]},null,false,null],[\\\"$\\\",\\\"$1\\\",\\\"h\\\",{\\\"children\\\":[null,[\\\"$\\\",\\\"$Lb\\\",null,{\\\"children\\\":\\\"$Lc\\\"}],[\\\"$\\\",\\\"div\\\",null,{\\\"hidden\\\":true,\\\"children\\\":[\\\"$\\\",\\\"$Ld\\\",null,{\\\"children\\\":[\\\"$\\\",\\\"$9\\\",null,{\\\"name\\\":\\\"Next.Metadata\\\",\\\"children\\\":\\\"$Le\\\"}]}]}],null]}],false]],\\\"m\\\":\\\"$undefined\\\",\\\"G\\\":[\\\"$f\\\",[[\\\"$\\\",\\\"link\\\",\\\"0\\\",{\\\"rel\\\":\\\"stylesheet\\\",\\\"href\\\":\\\"/_next/static/chunks/1xwc-b795syag.css\\\",\\\"precedence\\\":\\\"next\\\",\\\"crossOrigin\\\":\\\"$undefined\\\",\\\"nonce\\\":\\\"$undefined\\\"}]]],\\\"S\\\":true,\\\"h\\\":null,\\\"r\\\":\\\"$undefined\\\",\\\"s\\\":\\\"$undefined\\\",\\\"a\\\":\\\"$undefined\\\",\\\"l\\\":\\\"$undefined\\\",\\\"p\\\":\\\"$undefined\\\",\\\"d\\\":\\\"$undefined\\\",\\\"b\\\":\\\"YBJ6UzKUv_ZeDjZzgO3Gh\\\"}\\nc:[[\\\"$\\\",\\\"meta\\\",\\\"0\\\",{\\\"charSet\\\":\\\"utf-8\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"1\\\",{\\\"name\\\":\\\"viewport\\\",\\\"content\\\":\\\"width=device-width, initial-scale=1\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"2\\\",{\\\"name\\\":\\\"theme-color\\\",\\\"content\\\":\\\"#15803d\\\"}]]\\n10:I[27201,[\\\"/_next/static/chunks/2vlttipo05xfv.js\\\"],\\\"IconMark\\\"]\\na:null\\ne:[[\\\"$\\\",\\\"title\\\",\\\"0\\\",{\\\"children\\\":\\\"Jobbjakt\\\"}],[\\\"$\\\",\\\"meta\\\",\\\"1\\\",{\\\"name\\\":\\\"description\\\",\\\"content\\\":\\\"Jobbjakt — track and manage job applications\\\"}],[\\\"$\\\",\\\"link\\\",\\\"2\\\",{\\\"rel\\\":\\\"manifest\\\",\\\"href\\\":\\\"/manifest.json\\\",\\\"crossOrigin\\\":\\\"$undefined\\\"}],[\\\"$\\\",\\\"link\\\",\\\"3\\\",{\\\"rel\\\":\\\"icon\\\",\\\"href\\\":\\\"/favicon.svg\\\",\\\"type\\\":\\\"image/svg+xml\\\"}],[\\\"$\\\",\\\"link\\\",\\\"4\\\",{\\\"rel\\\":\\\"icon\\\",\\\"href\\\":\\\"/favicon.ico\\\"}],[\\\"$\\\",\\\"link\\\",\\\"5\\\",{\\\"rel\\\":\\\"apple-touch-icon\\\",\\\"href\\\":\\\"/logo192.png\\\"}],[\\\"$\\\",\\\"$L10\\\",\\\"6\\\",{}]]\\n\"])JobbjaktTrack your huntDashboardJob searchJob ApplicationsDiscover jobsRemindersCompaniesCompare offersTrashJob emailCareerCareer profileCV BuilderDocumentsInsightsAnalyticsAccountSettingsProfileConnected accounts", + "insideRegion": false, + "rect": { + "left": 0, + "right": 1440, + "top": 0, + "bottom": 900 + } + } + }, + "engine": { + "name": "axe-core", + "version": "4.13.0" + }, + "toolOptions": { + "rules": { + "target-size": { + "enabled": true + } + }, + "reporter": "v1" + }, + "violationNodes": 0, + "incompleteNodes": 1, + "raw": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/embedded/operations/013-p708-operations-en-light-1440-900-actual-other-owner-empty-audit.json", + "sha256": "866690df0c260be7a5bd42b7cfd5058340fc039adb7cb9b3cad263a0ab56f1f6", + "bytes": 17338, + "hashPolicy": "Exact measured raw bytes" + }, + "originalEmbeddedReport": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/operations.json", + "sha256": "6bddc03ed451fd7c125ee6c297f4aa75c75c23b4fc233bf1738d7e3cfedc09f5", + "bytes": 1891817, + "hashPolicy": "Exact measured raw bytes" + }, + "context": { + "sample": { + "language": "en", + "theme": "light", + "width": 1440, + "height": 900 + }, + "state": "actual-other-owner-empty", + "boundary": "Operations-page native workflows use the actual Program, local Identity cookies/CSRF, free owner accounts and isolated temporary SQLite. A guarded test-only helper inserts exactly one inert queued native-offline-fixture task; no registered producer/handler, AI entitlement, subject, provider/model, lease, usage or result is created. Actual cancel/retry/read/dismiss endpoints own every recorded persistent transition. Actual terminal notices have operationId and linkPath=null: no result/Open capability is inferred. Explicitly labelled controlled GET projections qualify only long-text and internal-link presentation. Controlled precommit503/held GET responses qualify UI recovery/race handling, not uncertain delivery. Every external request is aborted. Only existing HTTPS GET stylesheet requests to fonts.googleapis.com/css2 are classified separately as blocked font resources; every occurrence is retained, no font is fetched, and other external/provider/model requests remain an ordinary failing assertion. Font-resource counts are separate from forbidden provider/model counts; these captures do not qualify production fonts. No production/main/deployment, worker activation, Docker/model qualification, provider grant/send/sync, renderer or Phase8 action. Finite local Chromium/axe evidence does not establish human screen-reader, physical touch/software keyboard, actual zoom, live MariaDB, real worker execution, production font/photo or production readiness.", + "controlledProjection": null, + "qualifications": [ + "Finite local Chromium screenshots/geometry only; human AT, physical touch, software keyboard, zoom and production acceptance remain pending.", + "Controlled metadata is labelled explicitly and does not claim current producer output or execute an operation handler.", + "Full-page sticky captures are not viewport-obstruction evidence; focused-control geometry is recorded before and after explicit scroll restoration." + ] + }, + "rules": [ + { + "kind": "incomplete", + "id": "color-contrast", + "nodes": 1 + } + ] + }, + { + "test": "[P7-08 operations] eight finite bilingual theme widths retain long controlled metadata and reachable focused actions with complete axe vectors", + "attachment": "p708-operations-en-light-320-740-controlled-long-metadata-keyboard-audit", + "geometry": { + "viewport": { + "width": 320, + "height": 740 + }, + "rootOverflow": 0, + "region": { + "left": 16, + "right": 304, + "top": -980, + "bottom": 627.5, + "scrollWidth": 288, + "clientWidth": 288 + }, + "focused": { + "tag": "BUTTON", + "text": "Retry", + "insideRegion": true, + "rect": { + "left": 50, + "right": 114, + "top": 549.5, + "bottom": 593.5 + } + } + }, + "engine": { + "name": "axe-core", + "version": "4.13.0" + }, + "toolOptions": { + "rules": { + "target-size": { + "enabled": true + } + }, + "reporter": "v1" + }, + "violationNodes": 0, + "incompleteNodes": 0, + "raw": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/embedded/operations/017-p708-operations-en-light-320-740-controlled-long-metadata-keyboard-audit.json", + "sha256": "10852b8a3cd5beadb01403d6cfeed48b0eb78d1d9521030a9a727b9b97b4dbe3", + "bytes": 7830, + "hashPolicy": "Exact measured raw bytes" + }, + "originalEmbeddedReport": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/operations.json", + "sha256": "6bddc03ed451fd7c125ee6c297f4aa75c75c23b4fc233bf1738d7e3cfedc09f5", + "bytes": 1891817, + "hashPolicy": "Exact measured raw bytes" + }, + "context": { + "sample": { + "language": "en", + "theme": "light", + "width": 320, + "height": 740 + }, + "state": "controlled-long-metadata-keyboard", + "boundary": "Operations-page native workflows use the actual Program, local Identity cookies/CSRF, free owner accounts and isolated temporary SQLite. A guarded test-only helper inserts exactly one inert queued native-offline-fixture task; no registered producer/handler, AI entitlement, subject, provider/model, lease, usage or result is created. Actual cancel/retry/read/dismiss endpoints own every recorded persistent transition. Actual terminal notices have operationId and linkPath=null: no result/Open capability is inferred. Explicitly labelled controlled GET projections qualify only long-text and internal-link presentation. Controlled precommit503/held GET responses qualify UI recovery/race handling, not uncertain delivery. Every external request is aborted. Only existing HTTPS GET stylesheet requests to fonts.googleapis.com/css2 are classified separately as blocked font resources; every occurrence is retained, no font is fetched, and other external/provider/model requests remain an ordinary failing assertion. Font-resource counts are separate from forbidden provider/model counts; these captures do not qualify production fonts. No production/main/deployment, worker activation, Docker/model qualification, provider grant/send/sync, renderer or Phase8 action. Finite local Chromium/axe evidence does not establish human screen-reader, physical touch/software keyboard, actual zoom, live MariaDB, real worker execution, production font/photo or production readiness.", + "controlledProjection": "Controlled GET metadata only: one actual cancelled native-offline-fixture task keeps its unknown taskType/id/status/capability/timestamp fields, with progressStage and progressPercent=42 projected solely for layout. Its actual notice keeps id/operationId/timestamps/read state/absent link, with only title/message replaced by controlled long text. No operation handler or long-message producer is claimed.", + "qualifications": [ + "Finite local Chromium screenshots/geometry only; human AT, physical touch, software keyboard, zoom and production acceptance remain pending.", + "Controlled metadata is labelled explicitly and does not claim current producer output or execute an operation handler.", + "Full-page sticky captures are not viewport-obstruction evidence; focused-control geometry is recorded before and after explicit scroll restoration." + ] + }, + "rules": [] + }, + { + "test": "[P7-08 operations] eight finite bilingual theme widths retain long controlled metadata and reachable focused actions with complete axe vectors", + "attachment": "p708-operations-nb-dark-360-844-controlled-long-metadata-keyboard-audit", + "geometry": { + "viewport": { + "width": 360, + "height": 844 + }, + "rootOverflow": 0, + "region": { + "left": 16, + "right": 344, + "top": -657, + "bottom": 731.5, + "scrollWidth": 328, + "clientWidth": 328 + }, + "focused": { + "tag": "BUTTON", + "text": "Prøv igjen", + "insideRegion": true, + "rect": { + "left": 50, + "right": 130.078125, + "top": 653.5, + "bottom": 697.5 + } + } + }, + "engine": { + "name": "axe-core", + "version": "4.13.0" + }, + "toolOptions": { + "rules": { + "target-size": { + "enabled": true + } + }, + "reporter": "v1" + }, + "violationNodes": 0, + "incompleteNodes": 0, + "raw": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/embedded/operations/021-p708-operations-nb-dark-360-844-controlled-long-metadata-keyboard-audit.json", + "sha256": "d01d6ffe1db9c25d9d6cfcd41743a6ba99a757c8692383a30bd2e064b646d372", + "bytes": 7853, + "hashPolicy": "Exact measured raw bytes" + }, + "originalEmbeddedReport": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/operations.json", + "sha256": "6bddc03ed451fd7c125ee6c297f4aa75c75c23b4fc233bf1738d7e3cfedc09f5", + "bytes": 1891817, + "hashPolicy": "Exact measured raw bytes" + }, + "context": { + "sample": { + "language": "nb", + "theme": "dark", + "width": 360, + "height": 844 + }, + "state": "controlled-long-metadata-keyboard", + "boundary": "Operations-page native workflows use the actual Program, local Identity cookies/CSRF, free owner accounts and isolated temporary SQLite. A guarded test-only helper inserts exactly one inert queued native-offline-fixture task; no registered producer/handler, AI entitlement, subject, provider/model, lease, usage or result is created. Actual cancel/retry/read/dismiss endpoints own every recorded persistent transition. Actual terminal notices have operationId and linkPath=null: no result/Open capability is inferred. Explicitly labelled controlled GET projections qualify only long-text and internal-link presentation. Controlled precommit503/held GET responses qualify UI recovery/race handling, not uncertain delivery. Every external request is aborted. Only existing HTTPS GET stylesheet requests to fonts.googleapis.com/css2 are classified separately as blocked font resources; every occurrence is retained, no font is fetched, and other external/provider/model requests remain an ordinary failing assertion. Font-resource counts are separate from forbidden provider/model counts; these captures do not qualify production fonts. No production/main/deployment, worker activation, Docker/model qualification, provider grant/send/sync, renderer or Phase8 action. Finite local Chromium/axe evidence does not establish human screen-reader, physical touch/software keyboard, actual zoom, live MariaDB, real worker execution, production font/photo or production readiness.", + "controlledProjection": "Controlled GET metadata only: one actual cancelled native-offline-fixture task keeps its unknown taskType/id/status/capability/timestamp fields, with progressStage and progressPercent=42 projected solely for layout. Its actual notice keeps id/operationId/timestamps/read state/absent link, with only title/message replaced by controlled long text. No operation handler or long-message producer is claimed.", + "qualifications": [ + "Finite local Chromium screenshots/geometry only; human AT, physical touch, software keyboard, zoom and production acceptance remain pending.", + "Controlled metadata is labelled explicitly and does not claim current producer output or execute an operation handler.", + "Full-page sticky captures are not viewport-obstruction evidence; focused-control geometry is recorded before and after explicit scroll restoration." + ] + }, + "rules": [] + }, + { + "test": "[P7-08 operations] eight finite bilingual theme widths retain long controlled metadata and reachable focused actions with complete axe vectors", + "attachment": "p708-operations-en-dark-390-844-controlled-long-metadata-keyboard-audit", + "geometry": { + "viewport": { + "width": 390, + "height": 844 + }, + "rootOverflow": 0, + "region": { + "left": 16, + "right": 374, + "top": -556, + "bottom": 731.5, + "scrollWidth": 358, + "clientWidth": 358 + }, + "focused": { + "tag": "BUTTON", + "text": "Retry", + "insideRegion": true, + "rect": { + "left": 50, + "right": 114, + "top": 653.5, + "bottom": 697.5 + } + } + }, + "engine": { + "name": "axe-core", + "version": "4.13.0" + }, + "toolOptions": { + "rules": { + "target-size": { + "enabled": true + } + }, + "reporter": "v1" + }, + "violationNodes": 0, + "incompleteNodes": 0, + "raw": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/embedded/operations/024-p708-operations-en-dark-390-844-controlled-long-metadata-keyboard-audit.json", + "sha256": "0a6582807be9fd885cbcfb06fb3bbde13ae63ca6a42e29f3179a54f5068f04e5", + "bytes": 7829, + "hashPolicy": "Exact measured raw bytes" + }, + "originalEmbeddedReport": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/operations.json", + "sha256": "6bddc03ed451fd7c125ee6c297f4aa75c75c23b4fc233bf1738d7e3cfedc09f5", + "bytes": 1891817, + "hashPolicy": "Exact measured raw bytes" + }, + "context": { + "sample": { + "language": "en", + "theme": "dark", + "width": 390, + "height": 844 + }, + "state": "controlled-long-metadata-keyboard", + "boundary": "Operations-page native workflows use the actual Program, local Identity cookies/CSRF, free owner accounts and isolated temporary SQLite. A guarded test-only helper inserts exactly one inert queued native-offline-fixture task; no registered producer/handler, AI entitlement, subject, provider/model, lease, usage or result is created. Actual cancel/retry/read/dismiss endpoints own every recorded persistent transition. Actual terminal notices have operationId and linkPath=null: no result/Open capability is inferred. Explicitly labelled controlled GET projections qualify only long-text and internal-link presentation. Controlled precommit503/held GET responses qualify UI recovery/race handling, not uncertain delivery. Every external request is aborted. Only existing HTTPS GET stylesheet requests to fonts.googleapis.com/css2 are classified separately as blocked font resources; every occurrence is retained, no font is fetched, and other external/provider/model requests remain an ordinary failing assertion. Font-resource counts are separate from forbidden provider/model counts; these captures do not qualify production fonts. No production/main/deployment, worker activation, Docker/model qualification, provider grant/send/sync, renderer or Phase8 action. Finite local Chromium/axe evidence does not establish human screen-reader, physical touch/software keyboard, actual zoom, live MariaDB, real worker execution, production font/photo or production readiness.", + "controlledProjection": "Controlled GET metadata only: one actual cancelled native-offline-fixture task keeps its unknown taskType/id/status/capability/timestamp fields, with progressStage and progressPercent=42 projected solely for layout. Its actual notice keeps id/operationId/timestamps/read state/absent link, with only title/message replaced by controlled long text. No operation handler or long-message producer is claimed.", + "qualifications": [ + "Finite local Chromium screenshots/geometry only; human AT, physical touch, software keyboard, zoom and production acceptance remain pending.", + "Controlled metadata is labelled explicitly and does not claim current producer output or execute an operation handler.", + "Full-page sticky captures are not viewport-obstruction evidence; focused-control geometry is recorded before and after explicit scroll restoration." + ] + }, + "rules": [] + }, + { + "test": "[P7-08 operations] eight finite bilingual theme widths retain long controlled metadata and reachable focused actions with complete axe vectors", + "attachment": "p708-operations-nb-light-768-1024-controlled-long-metadata-keyboard-audit", + "geometry": { + "viewport": { + "width": 768, + "height": 1024 + }, + "rootOverflow": 0, + "region": { + "left": 24, + "right": 744, + "top": 25, + "bottom": 903.5, + "scrollWidth": 720, + "clientWidth": 720 + }, + "focused": { + "tag": "BUTTON", + "text": "Prøv igjen", + "insideRegion": true, + "rect": { + "left": 66, + "right": 146.078125, + "top": 825.5, + "bottom": 861.5 + } + } + }, + "engine": { + "name": "axe-core", + "version": "4.13.0" + }, + "toolOptions": { + "rules": { + "target-size": { + "enabled": true + } + }, + "reporter": "v1" + }, + "violationNodes": 0, + "incompleteNodes": 0, + "raw": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/embedded/operations/027-p708-operations-nb-light-768-1024-controlled-long-metadata-keyboard-audit.json", + "sha256": "9bf8f17649f8f1718f2258b632fbd8919bdd4aea677d477ab568af4c9f083490", + "bytes": 7853, + "hashPolicy": "Exact measured raw bytes" + }, + "originalEmbeddedReport": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/operations.json", + "sha256": "6bddc03ed451fd7c125ee6c297f4aa75c75c23b4fc233bf1738d7e3cfedc09f5", + "bytes": 1891817, + "hashPolicy": "Exact measured raw bytes" + }, + "context": { + "sample": { + "language": "nb", + "theme": "light", + "width": 768, + "height": 1024 + }, + "state": "controlled-long-metadata-keyboard", + "boundary": "Operations-page native workflows use the actual Program, local Identity cookies/CSRF, free owner accounts and isolated temporary SQLite. A guarded test-only helper inserts exactly one inert queued native-offline-fixture task; no registered producer/handler, AI entitlement, subject, provider/model, lease, usage or result is created. Actual cancel/retry/read/dismiss endpoints own every recorded persistent transition. Actual terminal notices have operationId and linkPath=null: no result/Open capability is inferred. Explicitly labelled controlled GET projections qualify only long-text and internal-link presentation. Controlled precommit503/held GET responses qualify UI recovery/race handling, not uncertain delivery. Every external request is aborted. Only existing HTTPS GET stylesheet requests to fonts.googleapis.com/css2 are classified separately as blocked font resources; every occurrence is retained, no font is fetched, and other external/provider/model requests remain an ordinary failing assertion. Font-resource counts are separate from forbidden provider/model counts; these captures do not qualify production fonts. No production/main/deployment, worker activation, Docker/model qualification, provider grant/send/sync, renderer or Phase8 action. Finite local Chromium/axe evidence does not establish human screen-reader, physical touch/software keyboard, actual zoom, live MariaDB, real worker execution, production font/photo or production readiness.", + "controlledProjection": "Controlled GET metadata only: one actual cancelled native-offline-fixture task keeps its unknown taskType/id/status/capability/timestamp fields, with progressStage and progressPercent=42 projected solely for layout. Its actual notice keeps id/operationId/timestamps/read state/absent link, with only title/message replaced by controlled long text. No operation handler or long-message producer is claimed.", + "qualifications": [ + "Finite local Chromium screenshots/geometry only; human AT, physical touch, software keyboard, zoom and production acceptance remain pending.", + "Controlled metadata is labelled explicitly and does not claim current producer output or execute an operation handler.", + "Full-page sticky captures are not viewport-obstruction evidence; focused-control geometry is recorded before and after explicit scroll restoration." + ] + }, + "rules": [] + }, + { + "test": "[P7-08 operations] eight finite bilingual theme widths retain long controlled metadata and reachable focused actions with complete axe vectors", + "attachment": "p708-operations-en-dark-1024-768-controlled-long-metadata-keyboard-audit", + "geometry": { + "viewport": { + "width": 1024, + "height": 768 + }, + "rootOverflow": 0, + "region": { + "left": 278, + "right": 1000, + "top": -231, + "bottom": 647.5, + "scrollWidth": 722, + "clientWidth": 722 + }, + "focused": { + "tag": "BUTTON", + "text": "Retry", + "insideRegion": true, + "rect": { + "left": 320, + "right": 384, + "top": 569.5, + "bottom": 605.5 + } + } + }, + "engine": { + "name": "axe-core", + "version": "4.13.0" + }, + "toolOptions": { + "rules": { + "target-size": { + "enabled": true + } + }, + "reporter": "v1" + }, + "violationNodes": 0, + "incompleteNodes": 0, + "raw": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/embedded/operations/030-p708-operations-en-dark-1024-768-controlled-long-metadata-keyboard-audit.json", + "sha256": "948ba6bfe2cef1601ffb904f9dc88c635ea67d63a2a3f31b9773b383d60d4e2f", + "bytes": 9418, + "hashPolicy": "Exact measured raw bytes" + }, + "originalEmbeddedReport": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/operations.json", + "sha256": "6bddc03ed451fd7c125ee6c297f4aa75c75c23b4fc233bf1738d7e3cfedc09f5", + "bytes": 1891817, + "hashPolicy": "Exact measured raw bytes" + }, + "context": { + "sample": { + "language": "en", + "theme": "dark", + "width": 1024, + "height": 768 + }, + "state": "controlled-long-metadata-keyboard", + "boundary": "Operations-page native workflows use the actual Program, local Identity cookies/CSRF, free owner accounts and isolated temporary SQLite. A guarded test-only helper inserts exactly one inert queued native-offline-fixture task; no registered producer/handler, AI entitlement, subject, provider/model, lease, usage or result is created. Actual cancel/retry/read/dismiss endpoints own every recorded persistent transition. Actual terminal notices have operationId and linkPath=null: no result/Open capability is inferred. Explicitly labelled controlled GET projections qualify only long-text and internal-link presentation. Controlled precommit503/held GET responses qualify UI recovery/race handling, not uncertain delivery. Every external request is aborted. Only existing HTTPS GET stylesheet requests to fonts.googleapis.com/css2 are classified separately as blocked font resources; every occurrence is retained, no font is fetched, and other external/provider/model requests remain an ordinary failing assertion. Font-resource counts are separate from forbidden provider/model counts; these captures do not qualify production fonts. No production/main/deployment, worker activation, Docker/model qualification, provider grant/send/sync, renderer or Phase8 action. Finite local Chromium/axe evidence does not establish human screen-reader, physical touch/software keyboard, actual zoom, live MariaDB, real worker execution, production font/photo or production readiness.", + "controlledProjection": "Controlled GET metadata only: one actual cancelled native-offline-fixture task keeps its unknown taskType/id/status/capability/timestamp fields, with progressStage and progressPercent=42 projected solely for layout. Its actual notice keeps id/operationId/timestamps/read state/absent link, with only title/message replaced by controlled long text. No operation handler or long-message producer is claimed.", + "qualifications": [ + "Finite local Chromium screenshots/geometry only; human AT, physical touch, software keyboard, zoom and production acceptance remain pending.", + "Controlled metadata is labelled explicitly and does not claim current producer output or execute an operation handler.", + "Full-page sticky captures are not viewport-obstruction evidence; focused-control geometry is recorded before and after explicit scroll restoration." + ] + }, + "rules": [] + }, + { + "test": "[P7-08 operations] eight finite bilingual theme widths retain long controlled metadata and reachable focused actions with complete axe vectors", + "attachment": "p708-operations-nb-light-1280-320-controlled-long-metadata-keyboard-audit", + "geometry": { + "viewport": { + "width": 1280, + "height": 320 + }, + "rootOverflow": 0, + "region": { + "left": 278, + "right": 1256, + "top": -587, + "bottom": 199.5, + "scrollWidth": 978, + "clientWidth": 978 + }, + "focused": { + "tag": "BUTTON", + "text": "Prøv igjen", + "insideRegion": true, + "rect": { + "left": 320, + "right": 400.078125, + "top": 121.5, + "bottom": 157.5 + } + } + }, + "engine": { + "name": "axe-core", + "version": "4.13.0" + }, + "toolOptions": { + "rules": { + "target-size": { + "enabled": true + } + }, + "reporter": "v1" + }, + "violationNodes": 0, + "incompleteNodes": 0, + "raw": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/embedded/operations/033-p708-operations-nb-light-1280-320-controlled-long-metadata-keyboard-audit.json", + "sha256": "192f22243537cc6d572f5b23ef02ce5510113eb0f83a7f5dffaf8a72179c7ac6", + "bytes": 9473, + "hashPolicy": "Exact measured raw bytes" + }, + "originalEmbeddedReport": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/operations.json", + "sha256": "6bddc03ed451fd7c125ee6c297f4aa75c75c23b4fc233bf1738d7e3cfedc09f5", + "bytes": 1891817, + "hashPolicy": "Exact measured raw bytes" + }, + "context": { + "sample": { + "language": "nb", + "theme": "light", + "width": 1280, + "height": 320 + }, + "state": "controlled-long-metadata-keyboard", + "boundary": "Operations-page native workflows use the actual Program, local Identity cookies/CSRF, free owner accounts and isolated temporary SQLite. A guarded test-only helper inserts exactly one inert queued native-offline-fixture task; no registered producer/handler, AI entitlement, subject, provider/model, lease, usage or result is created. Actual cancel/retry/read/dismiss endpoints own every recorded persistent transition. Actual terminal notices have operationId and linkPath=null: no result/Open capability is inferred. Explicitly labelled controlled GET projections qualify only long-text and internal-link presentation. Controlled precommit503/held GET responses qualify UI recovery/race handling, not uncertain delivery. Every external request is aborted. Only existing HTTPS GET stylesheet requests to fonts.googleapis.com/css2 are classified separately as blocked font resources; every occurrence is retained, no font is fetched, and other external/provider/model requests remain an ordinary failing assertion. Font-resource counts are separate from forbidden provider/model counts; these captures do not qualify production fonts. No production/main/deployment, worker activation, Docker/model qualification, provider grant/send/sync, renderer or Phase8 action. Finite local Chromium/axe evidence does not establish human screen-reader, physical touch/software keyboard, actual zoom, live MariaDB, real worker execution, production font/photo or production readiness.", + "controlledProjection": "Controlled GET metadata only: one actual cancelled native-offline-fixture task keeps its unknown taskType/id/status/capability/timestamp fields, with progressStage and progressPercent=42 projected solely for layout. Its actual notice keeps id/operationId/timestamps/read state/absent link, with only title/message replaced by controlled long text. No operation handler or long-message producer is claimed.", + "qualifications": [ + "Finite local Chromium screenshots/geometry only; human AT, physical touch, software keyboard, zoom and production acceptance remain pending.", + "Controlled metadata is labelled explicitly and does not claim current producer output or execute an operation handler.", + "Full-page sticky captures are not viewport-obstruction evidence; focused-control geometry is recorded before and after explicit scroll restoration." + ] + }, + "rules": [] + }, + { + "test": "[P7-08 operations] eight finite bilingual theme widths retain long controlled metadata and reachable focused actions with complete axe vectors", + "attachment": "p708-operations-en-light-1440-900-controlled-long-metadata-keyboard-audit", + "geometry": { + "viewport": { + "width": 1440, + "height": 900 + }, + "rootOverflow": 0, + "region": { + "left": 286, + "right": 1408, + "top": 2, + "bottom": 771.5, + "scrollWidth": 1122, + "clientWidth": 1122 + }, + "focused": { + "tag": "BUTTON", + "text": "Retry", + "insideRegion": true, + "rect": { + "left": 328, + "right": 392, + "top": 693.5, + "bottom": 729.5 + } + } + }, + "engine": { + "name": "axe-core", + "version": "4.13.0" + }, + "toolOptions": { + "rules": { + "target-size": { + "enabled": true + } + }, + "reporter": "v1" + }, + "violationNodes": 0, + "incompleteNodes": 0, + "raw": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/embedded/operations/037-p708-operations-en-light-1440-900-controlled-long-metadata-keyboard-audit.json", + "sha256": "3029fcc4d126cb31dbea5ffdc873176f0d5f0539329595b928a567cd9410e811", + "bytes": 9418, + "hashPolicy": "Exact measured raw bytes" + }, + "originalEmbeddedReport": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/operations.json", + "sha256": "6bddc03ed451fd7c125ee6c297f4aa75c75c23b4fc233bf1738d7e3cfedc09f5", + "bytes": 1891817, + "hashPolicy": "Exact measured raw bytes" + }, + "context": { + "sample": { + "language": "en", + "theme": "light", + "width": 1440, + "height": 900 + }, + "state": "controlled-long-metadata-keyboard", + "boundary": "Operations-page native workflows use the actual Program, local Identity cookies/CSRF, free owner accounts and isolated temporary SQLite. A guarded test-only helper inserts exactly one inert queued native-offline-fixture task; no registered producer/handler, AI entitlement, subject, provider/model, lease, usage or result is created. Actual cancel/retry/read/dismiss endpoints own every recorded persistent transition. Actual terminal notices have operationId and linkPath=null: no result/Open capability is inferred. Explicitly labelled controlled GET projections qualify only long-text and internal-link presentation. Controlled precommit503/held GET responses qualify UI recovery/race handling, not uncertain delivery. Every external request is aborted. Only existing HTTPS GET stylesheet requests to fonts.googleapis.com/css2 are classified separately as blocked font resources; every occurrence is retained, no font is fetched, and other external/provider/model requests remain an ordinary failing assertion. Font-resource counts are separate from forbidden provider/model counts; these captures do not qualify production fonts. No production/main/deployment, worker activation, Docker/model qualification, provider grant/send/sync, renderer or Phase8 action. Finite local Chromium/axe evidence does not establish human screen-reader, physical touch/software keyboard, actual zoom, live MariaDB, real worker execution, production font/photo or production readiness.", + "controlledProjection": "Controlled GET metadata only: one actual cancelled native-offline-fixture task keeps its unknown taskType/id/status/capability/timestamp fields, with progressStage and progressPercent=42 projected solely for layout. Its actual notice keeps id/operationId/timestamps/read state/absent link, with only title/message replaced by controlled long text. No operation handler or long-message producer is claimed.", + "qualifications": [ + "Finite local Chromium screenshots/geometry only; human AT, physical touch, software keyboard, zoom and production acceptance remain pending.", + "Controlled metadata is labelled explicitly and does not claim current producer output or execute an operation handler.", + "Full-page sticky captures are not viewport-obstruction evidence; focused-control geometry is recorded before and after explicit scroll restoration." + ] + }, + "rules": [] + }, + { + "test": "[P7-08 operations] eight finite bilingual theme widths retain long controlled metadata and reachable focused actions with complete axe vectors", + "attachment": "p708-operations-nb-dark-1920-1080-controlled-long-metadata-keyboard-audit", + "geometry": { + "viewport": { + "width": 1920, + "height": 1080 + }, + "rootOverflow": 0, + "region": { + "left": 427, + "right": 1747, + "top": 190, + "bottom": 908.5, + "scrollWidth": 1320, + "clientWidth": 1320 + }, + "focused": { + "tag": "BUTTON", + "text": "Prøv igjen", + "insideRegion": true, + "rect": { + "left": 469, + "right": 549.078125, + "top": 830.5, + "bottom": 866.5 + } + } + }, + "engine": { + "name": "axe-core", + "version": "4.13.0" + }, + "toolOptions": { + "rules": { + "target-size": { + "enabled": true + } + }, + "reporter": "v1" + }, + "violationNodes": 0, + "incompleteNodes": 0, + "raw": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/embedded/operations/040-p708-operations-nb-dark-1920-1080-controlled-long-metadata-keyboard-audit.json", + "sha256": "927b4a52b0879b433de2953ca740b93dc20ec01b9e55baec76cf2bbf1c75f762", + "bytes": 9429, + "hashPolicy": "Exact measured raw bytes" + }, + "originalEmbeddedReport": { + "path": ".artifacts/phase7/p7-08/operations-final-verified/operations.json", + "sha256": "6bddc03ed451fd7c125ee6c297f4aa75c75c23b4fc233bf1738d7e3cfedc09f5", + "bytes": 1891817, + "hashPolicy": "Exact measured raw bytes" + }, + "context": { + "sample": { + "language": "nb", + "theme": "dark", + "width": 1920, + "height": 1080 + }, + "state": "controlled-long-metadata-keyboard", + "boundary": "Operations-page native workflows use the actual Program, local Identity cookies/CSRF, free owner accounts and isolated temporary SQLite. A guarded test-only helper inserts exactly one inert queued native-offline-fixture task; no registered producer/handler, AI entitlement, subject, provider/model, lease, usage or result is created. Actual cancel/retry/read/dismiss endpoints own every recorded persistent transition. Actual terminal notices have operationId and linkPath=null: no result/Open capability is inferred. Explicitly labelled controlled GET projections qualify only long-text and internal-link presentation. Controlled precommit503/held GET responses qualify UI recovery/race handling, not uncertain delivery. Every external request is aborted. Only existing HTTPS GET stylesheet requests to fonts.googleapis.com/css2 are classified separately as blocked font resources; every occurrence is retained, no font is fetched, and other external/provider/model requests remain an ordinary failing assertion. Font-resource counts are separate from forbidden provider/model counts; these captures do not qualify production fonts. No production/main/deployment, worker activation, Docker/model qualification, provider grant/send/sync, renderer or Phase8 action. Finite local Chromium/axe evidence does not establish human screen-reader, physical touch/software keyboard, actual zoom, live MariaDB, real worker execution, production font/photo or production readiness.", + "controlledProjection": "Controlled GET metadata only: one actual cancelled native-offline-fixture task keeps its unknown taskType/id/status/capability/timestamp fields, with progressStage and progressPercent=42 projected solely for layout. Its actual notice keeps id/operationId/timestamps/read state/absent link, with only title/message replaced by controlled long text. No operation handler or long-message producer is claimed.", + "qualifications": [ + "Finite local Chromium screenshots/geometry only; human AT, physical touch, software keyboard, zoom and production acceptance remain pending.", + "Controlled metadata is labelled explicitly and does not claim current producer output or execute an operation handler.", + "Full-page sticky captures are not viewport-obstruction evidence; focused-control geometry is recorded before and after explicit scroll restoration." + ] + }, + "rules": [] + } + ], + "violationNodes": 0, + "incompleteNodes": 3, + "checkContexts": [ + { + "kind": "incomplete", + "rule": "color-contrast", + "check": "color-contrast", + "message": "Element content is too short to determine if it is actual text content", + "occurrences": 2, + "representativeContexts": [ + { + "attachment": "p708-operations-en-light-1440-900-actual-read-dismiss-task-unchanged-audit", + "target": [ + ".MuiBadge-badge" + ], + "data": { + "contrastRatio": 0, + "fontSize": "9.0pt (12px)", + "fontWeight": "normal", + "messageKey": "shortTextContent", + "expectedContrastRatio": "4.5:1" + }, + "relatedNodes": [] + }, + { + "attachment": "p708-operations-en-light-1440-900-actual-other-owner-empty-audit", + "target": [ + ".MuiBadge-badge" + ], + "data": { + "contrastRatio": 0, + "fontSize": "9.0pt (12px)", + "fontWeight": "normal", + "messageKey": "shortTextContent", + "expectedContrastRatio": "4.5:1" + }, + "relatedNodes": [] + } + ] + }, + { + "kind": "incomplete", + "rule": "color-contrast", + "check": "color-contrast", + "message": "Element's background color could not be determined because it is overlapped by another element", + "occurrences": 1, + "representativeContexts": [ + { + "attachment": "p708-operations-nb-light-1440-900-controlled-postcommit-get-only-recovery-audit", + "target": [ + ".MuiButton-contained" + ], + "data": { + "contrastRatio": 0, + "fontSize": "9.8pt (13px)", + "fontWeight": "bold", + "messageKey": "bgOverlap", + "expectedContrastRatio": "4.5:1" + }, + "relatedNodes": [] + } + ] + } + ], + "qualification": "Every violation/incomplete category counted; complete node/check vectors remain exact raw report and extracted JSON. Parent contextual triage pending." + } + }, + "notifications": { + "command": { + "name": "notifications", + "command": [ + "rtk", + "proxy", + "node", + "node_modules/@playwright/test/cli.js", + "test", + "e2e/phase7-notifications.spec.ts", + "--retries=0", + "--reporter=list,json", + "--output=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\phase7\\current\\ui\\notifications-results" + ], + "startedUtc": "2026-10-17T01:58:02.572799+00:00", + "finishedUtc": "2026-10-17T01:58:42.574608+00:00", + "exitCode": 0 + }, + "commandRaw": { + "path": ".artifacts/phase7/p7-08/operations-final-consumers/notifications-command.json", + "sha256": "d45adddf2e02fbc2ab3f25b9b6e82e00cb66e61992b21f97d02152660fcd5b22", + "bytes": 482, + "hashPolicy": "Exact measured raw bytes" + }, + "reportRaw": { + "path": ".artifacts/phase7/p7-08/operations-final-consumers/notifications.json", + "sha256": "a0697967682cf65a06e1f440becb3880f9c89c2f6a68844ae5aa663d126fc726", + "bytes": 2404580, + "hashPolicy": "Exact measured raw bytes" + }, + "logRaw": { + "path": ".artifacts/phase7/p7-08/operations-final-consumers/notifications.log", + "sha256": "00b0c61ed7de66166a0504d59f645fb6f2a087d48aeca56384368aec87cd8764", + "bytes": 1694, + "hashPolicy": "Exact measured raw bytes" + }, + "stats": { + "startTime": "2026-10-17T01:58:03.168Z", + "duration": 39356.414000000004, + "expected": 6, + "skipped": 0, + "unexpected": 0, + "flaky": 0 + }, + "cases": [ + { + "title": "[P7-08 notifications] actual cancelled notice persists read/dismiss independently of task and retry keeps the same task identity", + "file": "phase7-notifications.spec.ts", + "line": 66, + "expectedStatus": "passed", + "project": "chromium", + "resultStatuses": [ + "passed" + ], + "retries": [ + 0 + ], + "errors": [ + [] + ], + "durationMs": 3572 + }, + { + "title": "[P7-08 notifications] actual owner/anonymous denials and sign-out prevent cached notice exposure across accounts", + "file": "phase7-notifications.spec.ts", + "line": 74, + "expectedStatus": "passed", + "project": "chromium", + "resultStatuses": [ + "passed" + ], + "retries": [ + 0 + ], + "errors": [ + [] + ], + "durationMs": 3559 + }, + { + "title": "[P7-08 notifications] failed count stays unknown and GET Retry/close/reopen rejects a held stale response without false empty state", + "file": "phase7-notifications.spec.ts", + "line": 82, + "expectedStatus": "passed", + "project": "chromium", + "resultStatuses": [ + "passed" + ], + "retries": [ + 0 + ], + "errors": [ + [] + ], + "durationMs": 2825 + }, + { + "title": "[P7-08 notifications] failed mutation serializes activation and read-only Retry recovers in each locale without replay or task mutation", + "file": "phase7-notifications.spec.ts", + "line": 89, + "expectedStatus": "passed", + "project": "chromium", + "resultStatuses": [ + "passed" + ], + "retries": [ + 0 + ], + "errors": [ + [] + ], + "durationMs": 3714 + }, + { + "title": "[P7-08 notifications] labelled internal-link GET projection respects existing dirty-workspace Cancel before explicit navigation", + "file": "phase7-notifications.spec.ts", + "line": 96, + "expectedStatus": "passed", + "project": "chromium", + "resultStatuses": [ + "passed" + ], + "retries": [ + 0 + ], + "errors": [ + [] + ], + "durationMs": 3724 + }, + { + "title": "[P7-08 notifications] eight finite bilingual theme widths retain dialog focus scroll/footer and complete axe vectors with labelled long metadata", + "file": "phase7-notifications.spec.ts", + "line": 103, + "expectedStatus": "passed", + "project": "chromium", + "resultStatuses": [ + "passed" + ], + "retries": [ + 0 + ], + "errors": [ + [] + ], + "durationMs": 13768 + } + ], + "audit": { + "scans": [ + { + "test": "[P7-08 notifications] actual cancelled notice persists read/dismiss independently of task and retry keeps the same task identity", + "attachment": "p708-notifications-en-light-1440-900-actual-read-task-unchanged-audit", + "geometry": { + "viewport": { + "width": 1440, + "height": 900 + }, + "rootOverflow": 0, + "dialog": { + "left": 320, + "right": 740, + "top": 63, + "bottom": 332.5, + "width": 420, + "height": 269.5, + "scrollWidth": 420, + "clientWidth": 420 + }, + "content": { + "scrollHeight": 149, + "clientHeight": 149, + "scrollTop": 0 + }, + "focusInside": true + }, + "engine": { + "name": "axe-core", + "version": "4.13.0" + }, + "toolOptions": { + "rules": { + "target-size": { + "enabled": true + } + }, + "reporter": "v1" + }, + "violationNodes": 0, + "incompleteNodes": 8, + "raw": { + "path": ".artifacts/phase7/p7-08/operations-final-consumers/embedded/notifications/001-p708-notifications-en-light-1440-900-actual-read-task-unchanged-audit.json", + "sha256": "f361a992254eabb97aedc4bea4f21e84d8df616c7a505a1709c5d2ad468ad790", + "bytes": 23281, + "hashPolicy": "Exact measured raw bytes" + }, + "originalEmbeddedReport": { + "path": ".artifacts/phase7/p7-08/operations-final-consumers/notifications.json", + "sha256": "a0697967682cf65a06e1f440becb3880f9c89c2f6a68844ae5aa663d126fc726", + "bytes": 2404580, + "hashPolicy": "Exact measured raw bytes" + }, + "context": { + "sample": { + "language": "en", + "theme": "light", + "width": 1440, + "height": 900 + }, + "state": "actual-read-task-unchanged", + "boundary": "Actual Program, local Identity cookies/CSRF, free owner accounts and isolated temporary SQLite. A guarded test-only helper inserts exactly one inert queued native-offline-fixture task; no registered producer/handler, AI entitlement, subject, provider/model, lease, usage or result is created. Actual cancel/retry/read/dismiss endpoints own every recorded persistent transition. Actual terminal notices have operationId and linkPath=null: no result/Open capability is inferred. Explicitly labelled controlled GET projections qualify only long-text and internal-link presentation. Controlled precommit503/held GET responses qualify UI recovery/race handling, not uncertain delivery. Every external request is aborted. Only existing HTTPS GET stylesheet requests to fonts.googleapis.com/css2 are classified separately as blocked font resources; every occurrence is retained, no font is fetched, and other external/provider/model requests remain an ordinary failing assertion. Font-resource counts are separate from forbidden provider/model counts; these captures do not qualify production fonts. No production/main/deployment, worker activation, Docker/model qualification, provider grant/send/sync, renderer or Phase8 action. Finite local Chromium/axe evidence does not establish human screen-reader, physical touch/software keyboard, actual zoom, live MariaDB, real worker execution, production font/photo or production readiness.", + "controlledProjection": null, + "qualifications": [ + "Finite Chromium states only; human AT, physical devices, software keyboard and real zoom remain pending.", + "Controlled projections are UI contract fixtures, not current producer output.", + "Full-page captures may move scroll; strict action geometry is measured before capture and after explicit restoration." + ] + }, + "rules": [ + { + "kind": "incomplete", + "id": "aria-hidden-focus", + "nodes": 1 + }, + { + "kind": "incomplete", + "id": "color-contrast", + "nodes": 7 + } + ] + }, + { + "test": "[P7-08 notifications] actual owner/anonymous denials and sign-out prevent cached notice exposure across accounts", + "attachment": "p708-notifications-en-light-1440-900-actual-second-owner-empty-audit", + "geometry": { + "viewport": { + "width": 1440, + "height": 900 + }, + "rootOverflow": 0, + "dialog": { + "left": 320, + "right": 740, + "top": 63, + "bottom": 298.5, + "width": 420, + "height": 235.5, + "scrollWidth": 420, + "clientWidth": 420 + }, + "content": { + "scrollHeight": 115, + "clientHeight": 115, + "scrollTop": 0 + }, + "focusInside": true + }, + "engine": { + "name": "axe-core", + "version": "4.13.0" + }, + "toolOptions": { + "rules": { + "target-size": { + "enabled": true + } + }, + "reporter": "v1" + }, + "violationNodes": 0, + "incompleteNodes": 8, + "raw": { + "path": ".artifacts/phase7/p7-08/operations-final-consumers/embedded/notifications/005-p708-notifications-en-light-1440-900-actual-second-owner-empty-audit.json", + "sha256": "d8dc22ac699985e18391a0f222761f531879c3cc861b30f386ab216d7dc7c01d", + "bytes": 23239, + "hashPolicy": "Exact measured raw bytes" + }, + "originalEmbeddedReport": { + "path": ".artifacts/phase7/p7-08/operations-final-consumers/notifications.json", + "sha256": "a0697967682cf65a06e1f440becb3880f9c89c2f6a68844ae5aa663d126fc726", + "bytes": 2404580, + "hashPolicy": "Exact measured raw bytes" + }, + "context": { + "sample": { + "language": "en", + "theme": "light", + "width": 1440, + "height": 900 + }, + "state": "actual-second-owner-empty", + "boundary": "Actual Program, local Identity cookies/CSRF, free owner accounts and isolated temporary SQLite. A guarded test-only helper inserts exactly one inert queued native-offline-fixture task; no registered producer/handler, AI entitlement, subject, provider/model, lease, usage or result is created. Actual cancel/retry/read/dismiss endpoints own every recorded persistent transition. Actual terminal notices have operationId and linkPath=null: no result/Open capability is inferred. Explicitly labelled controlled GET projections qualify only long-text and internal-link presentation. Controlled precommit503/held GET responses qualify UI recovery/race handling, not uncertain delivery. Every external request is aborted. Only existing HTTPS GET stylesheet requests to fonts.googleapis.com/css2 are classified separately as blocked font resources; every occurrence is retained, no font is fetched, and other external/provider/model requests remain an ordinary failing assertion. Font-resource counts are separate from forbidden provider/model counts; these captures do not qualify production fonts. No production/main/deployment, worker activation, Docker/model qualification, provider grant/send/sync, renderer or Phase8 action. Finite local Chromium/axe evidence does not establish human screen-reader, physical touch/software keyboard, actual zoom, live MariaDB, real worker execution, production font/photo or production readiness.", + "controlledProjection": null, + "qualifications": [ + "Finite Chromium states only; human AT, physical devices, software keyboard and real zoom remain pending.", + "Controlled projections are UI contract fixtures, not current producer output.", + "Full-page captures may move scroll; strict action geometry is measured before capture and after explicit restoration." + ] + }, + "rules": [ + { + "kind": "incomplete", + "id": "aria-hidden-focus", + "nodes": 1 + }, + { + "kind": "incomplete", + "id": "color-contrast", + "nodes": 7 + } + ] + }, + { + "test": "[P7-08 notifications] failed count stays unknown and GET Retry/close/reopen rejects a held stale response without false empty state", + "attachment": "p708-notifications-en-light-1440-900-controlled-get503-unknown-count-audit", + "geometry": { + "viewport": { + "width": 1440, + "height": 900 + }, + "rootOverflow": 0, + "dialog": { + "left": 303, + "right": 723, + "top": 63, + "bottom": 257.5, + "width": 420, + "height": 194.5, + "scrollWidth": 420, + "clientWidth": 420 + }, + "content": { + "scrollHeight": 74, + "clientHeight": 74, + "scrollTop": 0 + }, + "focusInside": true + }, + "engine": { + "name": "axe-core", + "version": "4.13.0" + }, + "toolOptions": { + "rules": { + "target-size": { + "enabled": true + } + }, + "reporter": "v1" + }, + "violationNodes": 0, + "incompleteNodes": 8, + "raw": { + "path": ".artifacts/phase7/p7-08/operations-final-consumers/embedded/notifications/008-p708-notifications-en-light-1440-900-controlled-get503-unknown-count-audit.json", + "sha256": "dc8ba3d0f825f40f60ebe974c849b04e5375adf80e37fb07e97aa7b5f3e009ac", + "bytes": 23217, + "hashPolicy": "Exact measured raw bytes" + }, + "originalEmbeddedReport": { + "path": ".artifacts/phase7/p7-08/operations-final-consumers/notifications.json", + "sha256": "a0697967682cf65a06e1f440becb3880f9c89c2f6a68844ae5aa663d126fc726", + "bytes": 2404580, + "hashPolicy": "Exact measured raw bytes" + }, + "context": { + "sample": { + "language": "en", + "theme": "light", + "width": 1440, + "height": 900 + }, + "state": "controlled-get503-unknown-count", + "boundary": "Actual Program, local Identity cookies/CSRF, free owner accounts and isolated temporary SQLite. A guarded test-only helper inserts exactly one inert queued native-offline-fixture task; no registered producer/handler, AI entitlement, subject, provider/model, lease, usage or result is created. Actual cancel/retry/read/dismiss endpoints own every recorded persistent transition. Actual terminal notices have operationId and linkPath=null: no result/Open capability is inferred. Explicitly labelled controlled GET projections qualify only long-text and internal-link presentation. Controlled precommit503/held GET responses qualify UI recovery/race handling, not uncertain delivery. Every external request is aborted. Only existing HTTPS GET stylesheet requests to fonts.googleapis.com/css2 are classified separately as blocked font resources; every occurrence is retained, no font is fetched, and other external/provider/model requests remain an ordinary failing assertion. Font-resource counts are separate from forbidden provider/model counts; these captures do not qualify production fonts. No production/main/deployment, worker activation, Docker/model qualification, provider grant/send/sync, renderer or Phase8 action. Finite local Chromium/axe evidence does not establish human screen-reader, physical touch/software keyboard, actual zoom, live MariaDB, real worker execution, production font/photo or production readiness.", + "controlledProjection": null, + "qualifications": [ + "Finite Chromium states only; human AT, physical devices, software keyboard and real zoom remain pending.", + "Controlled projections are UI contract fixtures, not current producer output.", + "Full-page captures may move scroll; strict action geometry is measured before capture and after explicit restoration." + ] + }, + "rules": [ + { + "kind": "incomplete", + "id": "aria-hidden-focus", + "nodes": 1 + }, + { + "kind": "incomplete", + "id": "color-contrast", + "nodes": 7 + } + ] + }, + { + "test": "[P7-08 notifications] failed mutation serializes activation and read-only Retry recovers in each locale without replay or task mutation", + "attachment": "p708-notifications-en-light-1440-900-controlled-action503-get-only-recovery-audit", + "geometry": { + "viewport": { + "width": 1440, + "height": 900 + }, + "rootOverflow": 0, + "dialog": { + "left": 326, + "right": 746, + "top": 63, + "bottom": 350.5, + "width": 420, + "height": 287.5, + "scrollWidth": 420, + "clientWidth": 420 + }, + "content": { + "scrollHeight": 167, + "clientHeight": 167, + "scrollTop": 0 + }, + "focusInside": true + }, + "engine": { + "name": "axe-core", + "version": "4.13.0" + }, + "toolOptions": { + "rules": { + "target-size": { + "enabled": true + } + }, + "reporter": "v1" + }, + "violationNodes": 0, + "incompleteNodes": 7, + "raw": { + "path": ".artifacts/phase7/p7-08/operations-final-consumers/embedded/notifications/011-p708-notifications-en-light-1440-900-controlled-action503-get-only-recovery-audit.json", + "sha256": "fb55c971cd36cede86cf61bc989f425119737535d55b8b69c9cbe1fd5cee5952", + "bytes": 22622, + "hashPolicy": "Exact measured raw bytes" + }, + "originalEmbeddedReport": { + "path": ".artifacts/phase7/p7-08/operations-final-consumers/notifications.json", + "sha256": "a0697967682cf65a06e1f440becb3880f9c89c2f6a68844ae5aa663d126fc726", + "bytes": 2404580, + "hashPolicy": "Exact measured raw bytes" + }, + "context": { + "sample": { + "language": "en", + "theme": "light", + "width": 1440, + "height": 900 + }, + "state": "controlled-action503-get-only-recovery", + "boundary": "Actual Program, local Identity cookies/CSRF, free owner accounts and isolated temporary SQLite. A guarded test-only helper inserts exactly one inert queued native-offline-fixture task; no registered producer/handler, AI entitlement, subject, provider/model, lease, usage or result is created. Actual cancel/retry/read/dismiss endpoints own every recorded persistent transition. Actual terminal notices have operationId and linkPath=null: no result/Open capability is inferred. Explicitly labelled controlled GET projections qualify only long-text and internal-link presentation. Controlled precommit503/held GET responses qualify UI recovery/race handling, not uncertain delivery. Every external request is aborted. Only existing HTTPS GET stylesheet requests to fonts.googleapis.com/css2 are classified separately as blocked font resources; every occurrence is retained, no font is fetched, and other external/provider/model requests remain an ordinary failing assertion. Font-resource counts are separate from forbidden provider/model counts; these captures do not qualify production fonts. No production/main/deployment, worker activation, Docker/model qualification, provider grant/send/sync, renderer or Phase8 action. Finite local Chromium/axe evidence does not establish human screen-reader, physical touch/software keyboard, actual zoom, live MariaDB, real worker execution, production font/photo or production readiness.", + "controlledProjection": null, + "qualifications": [ + "Finite Chromium states only; human AT, physical devices, software keyboard and real zoom remain pending.", + "Controlled projections are UI contract fixtures, not current producer output.", + "Full-page captures may move scroll; strict action geometry is measured before capture and after explicit restoration." + ] + }, + "rules": [ + { + "kind": "incomplete", + "id": "aria-hidden-focus", + "nodes": 1 + }, + { + "kind": "incomplete", + "id": "color-contrast", + "nodes": 6 + } + ] + }, + { + "test": "[P7-08 notifications] failed mutation serializes activation and read-only Retry recovers in each locale without replay or task mutation", + "attachment": "p708-notifications-nb-dark-1440-900-controlled-action503-get-only-recovery-audit", + "geometry": { + "viewport": { + "width": 1440, + "height": 900 + }, + "rootOverflow": 0, + "dialog": { + "left": 345, + "right": 765, + "top": 63, + "bottom": 350.5, + "width": 420, + "height": 287.5, + "scrollWidth": 420, + "clientWidth": 420 + }, + "content": { + "scrollHeight": 167, + "clientHeight": 167, + "scrollTop": 0 + }, + "focusInside": true + }, + "engine": { + "name": "axe-core", + "version": "4.13.0" + }, + "toolOptions": { + "rules": { + "target-size": { + "enabled": true + } + }, + "reporter": "v1" + }, + "violationNodes": 0, + "incompleteNodes": 7, + "raw": { + "path": ".artifacts/phase7/p7-08/operations-final-consumers/embedded/notifications/013-p708-notifications-nb-dark-1440-900-controlled-action503-get-only-recovery-audit.json", + "sha256": "627b58c6a1b52ac11acf474529e6fc4a262bef328d83da95ada5a973fdfd00aa", + "bytes": 22621, + "hashPolicy": "Exact measured raw bytes" + }, + "originalEmbeddedReport": { + "path": ".artifacts/phase7/p7-08/operations-final-consumers/notifications.json", + "sha256": "a0697967682cf65a06e1f440becb3880f9c89c2f6a68844ae5aa663d126fc726", + "bytes": 2404580, + "hashPolicy": "Exact measured raw bytes" + }, + "context": { + "sample": { + "language": "nb", + "theme": "dark", + "width": 1440, + "height": 900 + }, + "state": "controlled-action503-get-only-recovery", + "boundary": "Actual Program, local Identity cookies/CSRF, free owner accounts and isolated temporary SQLite. A guarded test-only helper inserts exactly one inert queued native-offline-fixture task; no registered producer/handler, AI entitlement, subject, provider/model, lease, usage or result is created. Actual cancel/retry/read/dismiss endpoints own every recorded persistent transition. Actual terminal notices have operationId and linkPath=null: no result/Open capability is inferred. Explicitly labelled controlled GET projections qualify only long-text and internal-link presentation. Controlled precommit503/held GET responses qualify UI recovery/race handling, not uncertain delivery. Every external request is aborted. Only existing HTTPS GET stylesheet requests to fonts.googleapis.com/css2 are classified separately as blocked font resources; every occurrence is retained, no font is fetched, and other external/provider/model requests remain an ordinary failing assertion. Font-resource counts are separate from forbidden provider/model counts; these captures do not qualify production fonts. No production/main/deployment, worker activation, Docker/model qualification, provider grant/send/sync, renderer or Phase8 action. Finite local Chromium/axe evidence does not establish human screen-reader, physical touch/software keyboard, actual zoom, live MariaDB, real worker execution, production font/photo or production readiness.", + "controlledProjection": null, + "qualifications": [ + "Finite Chromium states only; human AT, physical devices, software keyboard and real zoom remain pending.", + "Controlled projections are UI contract fixtures, not current producer output.", + "Full-page captures may move scroll; strict action geometry is measured before capture and after explicit restoration." + ] + }, + "rules": [ + { + "kind": "incomplete", + "id": "aria-hidden-focus", + "nodes": 1 + }, + { + "kind": "incomplete", + "id": "color-contrast", + "nodes": 6 + } + ] + }, + { + "test": "[P7-08 notifications] labelled internal-link GET projection respects existing dirty-workspace Cancel before explicit navigation", + "attachment": "p708-notifications-en-light-1440-900-controlled-internal-link-dirty-cancel-audit", + "geometry": { + "viewport": { + "width": 1440, + "height": 900 + }, + "rootOverflow": 0, + "dialog": { + "left": 234, + "right": 654, + "top": 63, + "bottom": 332.5, + "width": 420, + "height": 269.5, + "scrollWidth": 420, + "clientWidth": 420 + }, + "content": { + "scrollHeight": 149, + "clientHeight": 149, + "scrollTop": 0 + }, + "focusInside": true + }, + "engine": { + "name": "axe-core", + "version": "4.13.0" + }, + "toolOptions": { + "rules": { + "target-size": { + "enabled": true + } + }, + "reporter": "v1" + }, + "violationNodes": 0, + "incompleteNodes": 7, + "raw": { + "path": ".artifacts/phase7/p7-08/operations-final-consumers/embedded/notifications/016-p708-notifications-en-light-1440-900-controlled-internal-link-dirty-cancel-audit.json", + "sha256": "f450862c122563927d45dba164fdb0ddce23bb3fcdfef5152086f1eb1ec2c819", + "bytes": 25079, + "hashPolicy": "Exact measured raw bytes" + }, + "originalEmbeddedReport": { + "path": ".artifacts/phase7/p7-08/operations-final-consumers/notifications.json", + "sha256": "a0697967682cf65a06e1f440becb3880f9c89c2f6a68844ae5aa663d126fc726", + "bytes": 2404580, + "hashPolicy": "Exact measured raw bytes" + }, + "context": { + "sample": { + "language": "en", + "theme": "light", + "width": 1440, + "height": 900 + }, + "state": "controlled-internal-link-dirty-cancel", + "boundary": "Actual Program, local Identity cookies/CSRF, free owner accounts and isolated temporary SQLite. A guarded test-only helper inserts exactly one inert queued native-offline-fixture task; no registered producer/handler, AI entitlement, subject, provider/model, lease, usage or result is created. Actual cancel/retry/read/dismiss endpoints own every recorded persistent transition. Actual terminal notices have operationId and linkPath=null: no result/Open capability is inferred. Explicitly labelled controlled GET projections qualify only long-text and internal-link presentation. Controlled precommit503/held GET responses qualify UI recovery/race handling, not uncertain delivery. Every external request is aborted. Only existing HTTPS GET stylesheet requests to fonts.googleapis.com/css2 are classified separately as blocked font resources; every occurrence is retained, no font is fetched, and other external/provider/model requests remain an ordinary failing assertion. Font-resource counts are separate from forbidden provider/model counts; these captures do not qualify production fonts. No production/main/deployment, worker activation, Docker/model qualification, provider grant/send/sync, renderer or Phase8 action. Finite local Chromium/axe evidence does not establish human screen-reader, physical touch/software keyboard, actual zoom, live MariaDB, real worker execution, production font/photo or production readiness.", + "controlledProjection": "Only linkPath=/documents is projected on an actual owned notice; actual producer API is asserted linkPath=null before and after. Existing unsaved-workspace guard is exercised.", + "qualifications": [ + "Finite Chromium states only; human AT, physical devices, software keyboard and real zoom remain pending.", + "Controlled projections are UI contract fixtures, not current producer output.", + "Full-page captures may move scroll; strict action geometry is measured before capture and after explicit restoration." + ] + }, + "rules": [ + { + "kind": "incomplete", + "id": "aria-hidden-focus", + "nodes": 1 + }, + { + "kind": "incomplete", + "id": "color-contrast", + "nodes": 6 + } + ] + }, + { + "test": "[P7-08 notifications] eight finite bilingual theme widths retain dialog focus scroll/footer and complete axe vectors with labelled long metadata", + "attachment": "p708-notifications-en-light-320-740-controlled-long-text-keyboard-audit", + "geometry": { + "viewport": { + "width": 320, + "height": 740 + }, + "rootOverflow": 0, + "dialog": { + "left": 16, + "right": 304, + "top": 113, + "bottom": 631, + "width": 288, + "height": 518, + "scrollWidth": 288, + "clientWidth": 288 + }, + "content": { + "scrollHeight": 1835, + "clientHeight": 398, + "scrollTop": 0 + }, + "focusInside": true + }, + "engine": { + "name": "axe-core", + "version": "4.13.0" + }, + "toolOptions": { + "rules": { + "target-size": { + "enabled": true + } + }, + "reporter": "v1" + }, + "violationNodes": 0, + "incompleteNodes": 7, + "raw": { + "path": ".artifacts/phase7/p7-08/operations-final-consumers/embedded/notifications/019-p708-notifications-en-light-320-740-controlled-long-text-keyboard-audit.json", + "sha256": "f62554f33ee2e541d01cce51608ed675733d61b9387b27d814fe9d99a0def67c", + "bytes": 18150, + "hashPolicy": "Exact measured raw bytes" + }, + "originalEmbeddedReport": { + "path": ".artifacts/phase7/p7-08/operations-final-consumers/notifications.json", + "sha256": "a0697967682cf65a06e1f440becb3880f9c89c2f6a68844ae5aa663d126fc726", + "bytes": 2404580, + "hashPolicy": "Exact measured raw bytes" + }, + "context": { + "sample": { + "language": "en", + "theme": "light", + "width": 320, + "height": 740 + }, + "state": "controlled-long-text-keyboard", + "boundary": "Actual Program, local Identity cookies/CSRF, free owner accounts and isolated temporary SQLite. A guarded test-only helper inserts exactly one inert queued native-offline-fixture task; no registered producer/handler, AI entitlement, subject, provider/model, lease, usage or result is created. Actual cancel/retry/read/dismiss endpoints own every recorded persistent transition. Actual terminal notices have operationId and linkPath=null: no result/Open capability is inferred. Explicitly labelled controlled GET projections qualify only long-text and internal-link presentation. Controlled precommit503/held GET responses qualify UI recovery/race handling, not uncertain delivery. Every external request is aborted. Only existing HTTPS GET stylesheet requests to fonts.googleapis.com/css2 are classified separately as blocked font resources; every occurrence is retained, no font is fetched, and other external/provider/model requests remain an ordinary failing assertion. Font-resource counts are separate from forbidden provider/model counts; these captures do not qualify production fonts. No production/main/deployment, worker activation, Docker/model qualification, provider grant/send/sync, renderer or Phase8 action. Finite local Chromium/axe evidence does not establish human screen-reader, physical touch/software keyboard, actual zoom, live MariaDB, real worker execution, production font/photo or production readiness.", + "controlledProjection": "Only title/message of one actual owned terminal notice are replaced by controlled long UI contract text. Its identity, ownership, UTC timestamps, operationId and absent link stay actual; this does not claim a long-message producer.", + "qualifications": [ + "Finite Chromium states only; human AT, physical devices, software keyboard and real zoom remain pending.", + "Controlled projections are UI contract fixtures, not current producer output.", + "Full-page captures may move scroll; strict action geometry is measured before capture and after explicit restoration." + ] + }, + "rules": [ + { + "kind": "incomplete", + "id": "aria-hidden-focus", + "nodes": 1 + }, + { + "kind": "incomplete", + "id": "color-contrast", + "nodes": 6 + } + ] + }, + { + "test": "[P7-08 notifications] eight finite bilingual theme widths retain dialog focus scroll/footer and complete axe vectors with labelled long metadata", + "attachment": "p708-notifications-nb-dark-360-844-controlled-long-text-keyboard-audit", + "geometry": { + "viewport": { + "width": 360, + "height": 844 + }, + "rootOverflow": 0, + "dialog": { + "left": 16, + "right": 344, + "top": 113, + "bottom": 703.796875, + "width": 328, + "height": 590.796875, + "scrollWidth": 328, + "clientWidth": 328 + }, + "content": { + "scrollHeight": 1818, + "clientHeight": 470, + "scrollTop": 0 + }, + "focusInside": true + }, + "engine": { + "name": "axe-core", + "version": "4.13.0" + }, + "toolOptions": { + "rules": { + "target-size": { + "enabled": true + } + }, + "reporter": "v1" + }, + "violationNodes": 0, + "incompleteNodes": 7, + "raw": { + "path": ".artifacts/phase7/p7-08/operations-final-consumers/embedded/notifications/023-p708-notifications-nb-dark-360-844-controlled-long-text-keyboard-audit.json", + "sha256": "59fe36d52b7d5c1d4a99ea843b6600d7716abae3890ed78f729d89f7950cd8d4", + "bytes": 18176, + "hashPolicy": "Exact measured raw bytes" + }, + "originalEmbeddedReport": { + "path": ".artifacts/phase7/p7-08/operations-final-consumers/notifications.json", + "sha256": "a0697967682cf65a06e1f440becb3880f9c89c2f6a68844ae5aa663d126fc726", + "bytes": 2404580, + "hashPolicy": "Exact measured raw bytes" + }, + "context": { + "sample": { + "language": "nb", + "theme": "dark", + "width": 360, + "height": 844 + }, + "state": "controlled-long-text-keyboard", + "boundary": "Actual Program, local Identity cookies/CSRF, free owner accounts and isolated temporary SQLite. A guarded test-only helper inserts exactly one inert queued native-offline-fixture task; no registered producer/handler, AI entitlement, subject, provider/model, lease, usage or result is created. Actual cancel/retry/read/dismiss endpoints own every recorded persistent transition. Actual terminal notices have operationId and linkPath=null: no result/Open capability is inferred. Explicitly labelled controlled GET projections qualify only long-text and internal-link presentation. Controlled precommit503/held GET responses qualify UI recovery/race handling, not uncertain delivery. Every external request is aborted. Only existing HTTPS GET stylesheet requests to fonts.googleapis.com/css2 are classified separately as blocked font resources; every occurrence is retained, no font is fetched, and other external/provider/model requests remain an ordinary failing assertion. Font-resource counts are separate from forbidden provider/model counts; these captures do not qualify production fonts. No production/main/deployment, worker activation, Docker/model qualification, provider grant/send/sync, renderer or Phase8 action. Finite local Chromium/axe evidence does not establish human screen-reader, physical touch/software keyboard, actual zoom, live MariaDB, real worker execution, production font/photo or production readiness.", + "controlledProjection": "Only title/message of one actual owned terminal notice are replaced by controlled long UI contract text. Its identity, ownership, UTC timestamps, operationId and absent link stay actual; this does not claim a long-message producer.", + "qualifications": [ + "Finite Chromium states only; human AT, physical devices, software keyboard and real zoom remain pending.", + "Controlled projections are UI contract fixtures, not current producer output.", + "Full-page captures may move scroll; strict action geometry is measured before capture and after explicit restoration." + ] + }, + "rules": [ + { + "kind": "incomplete", + "id": "aria-hidden-focus", + "nodes": 1 + }, + { + "kind": "incomplete", + "id": "color-contrast", + "nodes": 6 + } + ] + }, + { + "test": "[P7-08 notifications] eight finite bilingual theme widths retain dialog focus scroll/footer and complete axe vectors with labelled long metadata", + "attachment": "p708-notifications-en-dark-390-844-controlled-long-text-keyboard-audit", + "geometry": { + "viewport": { + "width": 390, + "height": 844 + }, + "rootOverflow": 0, + "dialog": { + "left": 16, + "right": 374, + "top": 113, + "bottom": 703.796875, + "width": 358, + "height": 590.796875, + "scrollWidth": 358, + "clientWidth": 358 + }, + "content": { + "scrollHeight": 1427, + "clientHeight": 470, + "scrollTop": 0 + }, + "focusInside": true + }, + "engine": { + "name": "axe-core", + "version": "4.13.0" + }, + "toolOptions": { + "rules": { + "target-size": { + "enabled": true + } + }, + "reporter": "v1" + }, + "violationNodes": 0, + "incompleteNodes": 7, + "raw": { + "path": ".artifacts/phase7/p7-08/operations-final-consumers/embedded/notifications/026-p708-notifications-en-dark-390-844-controlled-long-text-keyboard-audit.json", + "sha256": "6e9242dda2129cf6b9df5c87c6c2e87e72fd67025e6187434d646f5b0eba029c", + "bytes": 18163, + "hashPolicy": "Exact measured raw bytes" + }, + "originalEmbeddedReport": { + "path": ".artifacts/phase7/p7-08/operations-final-consumers/notifications.json", + "sha256": "a0697967682cf65a06e1f440becb3880f9c89c2f6a68844ae5aa663d126fc726", + "bytes": 2404580, + "hashPolicy": "Exact measured raw bytes" + }, + "context": { + "sample": { + "language": "en", + "theme": "dark", + "width": 390, + "height": 844 + }, + "state": "controlled-long-text-keyboard", + "boundary": "Actual Program, local Identity cookies/CSRF, free owner accounts and isolated temporary SQLite. A guarded test-only helper inserts exactly one inert queued native-offline-fixture task; no registered producer/handler, AI entitlement, subject, provider/model, lease, usage or result is created. Actual cancel/retry/read/dismiss endpoints own every recorded persistent transition. Actual terminal notices have operationId and linkPath=null: no result/Open capability is inferred. Explicitly labelled controlled GET projections qualify only long-text and internal-link presentation. Controlled precommit503/held GET responses qualify UI recovery/race handling, not uncertain delivery. Every external request is aborted. Only existing HTTPS GET stylesheet requests to fonts.googleapis.com/css2 are classified separately as blocked font resources; every occurrence is retained, no font is fetched, and other external/provider/model requests remain an ordinary failing assertion. Font-resource counts are separate from forbidden provider/model counts; these captures do not qualify production fonts. No production/main/deployment, worker activation, Docker/model qualification, provider grant/send/sync, renderer or Phase8 action. Finite local Chromium/axe evidence does not establish human screen-reader, physical touch/software keyboard, actual zoom, live MariaDB, real worker execution, production font/photo or production readiness.", + "controlledProjection": "Only title/message of one actual owned terminal notice are replaced by controlled long UI contract text. Its identity, ownership, UTC timestamps, operationId and absent link stay actual; this does not claim a long-message producer.", + "qualifications": [ + "Finite Chromium states only; human AT, physical devices, software keyboard and real zoom remain pending.", + "Controlled projections are UI contract fixtures, not current producer output.", + "Full-page captures may move scroll; strict action geometry is measured before capture and after explicit restoration." + ] + }, + "rules": [ + { + "kind": "incomplete", + "id": "aria-hidden-focus", + "nodes": 1 + }, + { + "kind": "incomplete", + "id": "color-contrast", + "nodes": 6 + } + ] + }, + { + "test": "[P7-08 notifications] eight finite bilingual theme widths retain dialog focus scroll/footer and complete axe vectors with labelled long metadata", + "attachment": "p708-notifications-nb-light-768-1024-controlled-long-text-keyboard-audit", + "geometry": { + "viewport": { + "width": 768, + "height": 1024 + }, + "rootOverflow": 0, + "dialog": { + "left": 16, + "right": 436, + "top": 113, + "bottom": 713, + "width": 420, + "height": 600, + "scrollWidth": 420, + "clientWidth": 420 + }, + "content": { + "scrollHeight": 1392, + "clientHeight": 480, + "scrollTop": 0 + }, + "focusInside": true + }, + "engine": { + "name": "axe-core", + "version": "4.13.0" + }, + "toolOptions": { + "rules": { + "target-size": { + "enabled": true + } + }, + "reporter": "v1" + }, + "violationNodes": 0, + "incompleteNodes": 7, + "raw": { + "path": ".artifacts/phase7/p7-08/operations-final-consumers/embedded/notifications/029-p708-notifications-nb-light-768-1024-controlled-long-text-keyboard-audit.json", + "sha256": "25177b768295a2bc2439dc51123ecf4e246f5d5ad30ee0302ad1ea3e86c5b511", + "bytes": 18006, + "hashPolicy": "Exact measured raw bytes" + }, + "originalEmbeddedReport": { + "path": ".artifacts/phase7/p7-08/operations-final-consumers/notifications.json", + "sha256": "a0697967682cf65a06e1f440becb3880f9c89c2f6a68844ae5aa663d126fc726", + "bytes": 2404580, + "hashPolicy": "Exact measured raw bytes" + }, + "context": { + "sample": { + "language": "nb", + "theme": "light", + "width": 768, + "height": 1024 + }, + "state": "controlled-long-text-keyboard", + "boundary": "Actual Program, local Identity cookies/CSRF, free owner accounts and isolated temporary SQLite. A guarded test-only helper inserts exactly one inert queued native-offline-fixture task; no registered producer/handler, AI entitlement, subject, provider/model, lease, usage or result is created. Actual cancel/retry/read/dismiss endpoints own every recorded persistent transition. Actual terminal notices have operationId and linkPath=null: no result/Open capability is inferred. Explicitly labelled controlled GET projections qualify only long-text and internal-link presentation. Controlled precommit503/held GET responses qualify UI recovery/race handling, not uncertain delivery. Every external request is aborted. Only existing HTTPS GET stylesheet requests to fonts.googleapis.com/css2 are classified separately as blocked font resources; every occurrence is retained, no font is fetched, and other external/provider/model requests remain an ordinary failing assertion. Font-resource counts are separate from forbidden provider/model counts; these captures do not qualify production fonts. No production/main/deployment, worker activation, Docker/model qualification, provider grant/send/sync, renderer or Phase8 action. Finite local Chromium/axe evidence does not establish human screen-reader, physical touch/software keyboard, actual zoom, live MariaDB, real worker execution, production font/photo or production readiness.", + "controlledProjection": "Only title/message of one actual owned terminal notice are replaced by controlled long UI contract text. Its identity, ownership, UTC timestamps, operationId and absent link stay actual; this does not claim a long-message producer.", + "qualifications": [ + "Finite Chromium states only; human AT, physical devices, software keyboard and real zoom remain pending.", + "Controlled projections are UI contract fixtures, not current producer output.", + "Full-page captures may move scroll; strict action geometry is measured before capture and after explicit restoration." + ] + }, + "rules": [ + { + "kind": "incomplete", + "id": "aria-hidden-focus", + "nodes": 1 + }, + { + "kind": "incomplete", + "id": "color-contrast", + "nodes": 6 + } + ] + }, + { + "test": "[P7-08 notifications] eight finite bilingual theme widths retain dialog focus scroll/footer and complete axe vectors with labelled long metadata", + "attachment": "p708-notifications-en-dark-1024-768-controlled-long-text-keyboard-audit", + "geometry": { + "viewport": { + "width": 1024, + "height": 768 + }, + "rootOverflow": 0, + "dialog": { + "left": 16, + "right": 436, + "top": 63, + "bottom": 600.59375, + "width": 420, + "height": 537.59375, + "scrollWidth": 420, + "clientWidth": 420 + }, + "content": { + "scrollHeight": 1392, + "clientHeight": 417, + "scrollTop": 0 + }, + "focusInside": true + }, + "engine": { + "name": "axe-core", + "version": "4.13.0" + }, + "toolOptions": { + "rules": { + "target-size": { + "enabled": true + } + }, + "reporter": "v1" + }, + "violationNodes": 0, + "incompleteNodes": 8, + "raw": { + "path": ".artifacts/phase7/p7-08/operations-final-consumers/embedded/notifications/032-p708-notifications-en-dark-1024-768-controlled-long-text-keyboard-audit.json", + "sha256": "90819808c744a3145dc3a1c6285e6bed1596a367a6ee4c2deb71c0f7e1727030", + "bytes": 27817, + "hashPolicy": "Exact measured raw bytes" + }, + "originalEmbeddedReport": { + "path": ".artifacts/phase7/p7-08/operations-final-consumers/notifications.json", + "sha256": "a0697967682cf65a06e1f440becb3880f9c89c2f6a68844ae5aa663d126fc726", + "bytes": 2404580, + "hashPolicy": "Exact measured raw bytes" + }, + "context": { + "sample": { + "language": "en", + "theme": "dark", + "width": 1024, + "height": 768 + }, + "state": "controlled-long-text-keyboard", + "boundary": "Actual Program, local Identity cookies/CSRF, free owner accounts and isolated temporary SQLite. A guarded test-only helper inserts exactly one inert queued native-offline-fixture task; no registered producer/handler, AI entitlement, subject, provider/model, lease, usage or result is created. Actual cancel/retry/read/dismiss endpoints own every recorded persistent transition. Actual terminal notices have operationId and linkPath=null: no result/Open capability is inferred. Explicitly labelled controlled GET projections qualify only long-text and internal-link presentation. Controlled precommit503/held GET responses qualify UI recovery/race handling, not uncertain delivery. Every external request is aborted. Only existing HTTPS GET stylesheet requests to fonts.googleapis.com/css2 are classified separately as blocked font resources; every occurrence is retained, no font is fetched, and other external/provider/model requests remain an ordinary failing assertion. Font-resource counts are separate from forbidden provider/model counts; these captures do not qualify production fonts. No production/main/deployment, worker activation, Docker/model qualification, provider grant/send/sync, renderer or Phase8 action. Finite local Chromium/axe evidence does not establish human screen-reader, physical touch/software keyboard, actual zoom, live MariaDB, real worker execution, production font/photo or production readiness.", + "controlledProjection": "Only title/message of one actual owned terminal notice are replaced by controlled long UI contract text. Its identity, ownership, UTC timestamps, operationId and absent link stay actual; this does not claim a long-message producer.", + "qualifications": [ + "Finite Chromium states only; human AT, physical devices, software keyboard and real zoom remain pending.", + "Controlled projections are UI contract fixtures, not current producer output.", + "Full-page captures may move scroll; strict action geometry is measured before capture and after explicit restoration." + ] + }, + "rules": [ + { + "kind": "incomplete", + "id": "aria-hidden-focus", + "nodes": 1 + }, + { + "kind": "incomplete", + "id": "color-contrast", + "nodes": 7 + } + ] + }, + { + "test": "[P7-08 notifications] eight finite bilingual theme widths retain dialog focus scroll/footer and complete axe vectors with labelled long metadata", + "attachment": "p708-notifications-nb-light-1280-320-controlled-long-text-keyboard-audit", + "geometry": { + "viewport": { + "width": 1280, + "height": 320 + }, + "rootOverflow": 0, + "dialog": { + "left": 178, + "right": 598, + "top": 63, + "bottom": 287, + "width": 420, + "height": 224, + "scrollWidth": 420, + "clientWidth": 420 + }, + "content": { + "scrollHeight": 1392, + "clientHeight": 104, + "scrollTop": 0 + }, + "focusInside": true + }, + "engine": { + "name": "axe-core", + "version": "4.13.0" + }, + "toolOptions": { + "rules": { + "target-size": { + "enabled": true + } + }, + "reporter": "v1" + }, + "violationNodes": 0, + "incompleteNodes": 7, + "raw": { + "path": ".artifacts/phase7/p7-08/operations-final-consumers/embedded/notifications/035-p708-notifications-nb-light-1280-320-controlled-long-text-keyboard-audit.json", + "sha256": "653b389e92c4946685eb18881a5e7fdd896c78c22159ae2959f233cdd4e4147e", + "bytes": 26618, + "hashPolicy": "Exact measured raw bytes" + }, + "originalEmbeddedReport": { + "path": ".artifacts/phase7/p7-08/operations-final-consumers/notifications.json", + "sha256": "a0697967682cf65a06e1f440becb3880f9c89c2f6a68844ae5aa663d126fc726", + "bytes": 2404580, + "hashPolicy": "Exact measured raw bytes" + }, + "context": { + "sample": { + "language": "nb", + "theme": "light", + "width": 1280, + "height": 320 + }, + "state": "controlled-long-text-keyboard", + "boundary": "Actual Program, local Identity cookies/CSRF, free owner accounts and isolated temporary SQLite. A guarded test-only helper inserts exactly one inert queued native-offline-fixture task; no registered producer/handler, AI entitlement, subject, provider/model, lease, usage or result is created. Actual cancel/retry/read/dismiss endpoints own every recorded persistent transition. Actual terminal notices have operationId and linkPath=null: no result/Open capability is inferred. Explicitly labelled controlled GET projections qualify only long-text and internal-link presentation. Controlled precommit503/held GET responses qualify UI recovery/race handling, not uncertain delivery. Every external request is aborted. Only existing HTTPS GET stylesheet requests to fonts.googleapis.com/css2 are classified separately as blocked font resources; every occurrence is retained, no font is fetched, and other external/provider/model requests remain an ordinary failing assertion. Font-resource counts are separate from forbidden provider/model counts; these captures do not qualify production fonts. No production/main/deployment, worker activation, Docker/model qualification, provider grant/send/sync, renderer or Phase8 action. Finite local Chromium/axe evidence does not establish human screen-reader, physical touch/software keyboard, actual zoom, live MariaDB, real worker execution, production font/photo or production readiness.", + "controlledProjection": "Only title/message of one actual owned terminal notice are replaced by controlled long UI contract text. Its identity, ownership, UTC timestamps, operationId and absent link stay actual; this does not claim a long-message producer.", + "qualifications": [ + "Finite Chromium states only; human AT, physical devices, software keyboard and real zoom remain pending.", + "Controlled projections are UI contract fixtures, not current producer output.", + "Full-page captures may move scroll; strict action geometry is measured before capture and after explicit restoration." + ] + }, + "rules": [ + { + "kind": "incomplete", + "id": "aria-hidden-focus", + "nodes": 1 + }, + { + "kind": "incomplete", + "id": "color-contrast", + "nodes": 6 + } + ] + }, + { + "test": "[P7-08 notifications] eight finite bilingual theme widths retain dialog focus scroll/footer and complete axe vectors with labelled long metadata", + "attachment": "p708-notifications-en-light-1440-900-controlled-long-text-keyboard-audit", + "geometry": { + "viewport": { + "width": 1440, + "height": 900 + }, + "rootOverflow": 0, + "dialog": { + "left": 319, + "right": 739, + "top": 63, + "bottom": 663, + "width": 420, + "height": 600, + "scrollWidth": 420, + "clientWidth": 420 + }, + "content": { + "scrollHeight": 1392, + "clientHeight": 480, + "scrollTop": 0 + }, + "focusInside": true + }, + "engine": { + "name": "axe-core", + "version": "4.13.0" + }, + "toolOptions": { + "rules": { + "target-size": { + "enabled": true + } + }, + "reporter": "v1" + }, + "violationNodes": 0, + "incompleteNodes": 7, + "raw": { + "path": ".artifacts/phase7/p7-08/operations-final-consumers/embedded/notifications/039-p708-notifications-en-light-1440-900-controlled-long-text-keyboard-audit.json", + "sha256": "557ca8b3f9d780f3775dc8d03958331a7968308f886ee6be39a99bc1a35bd8e3", + "bytes": 26618, + "hashPolicy": "Exact measured raw bytes" + }, + "originalEmbeddedReport": { + "path": ".artifacts/phase7/p7-08/operations-final-consumers/notifications.json", + "sha256": "a0697967682cf65a06e1f440becb3880f9c89c2f6a68844ae5aa663d126fc726", + "bytes": 2404580, + "hashPolicy": "Exact measured raw bytes" + }, + "context": { + "sample": { + "language": "en", + "theme": "light", + "width": 1440, + "height": 900 + }, + "state": "controlled-long-text-keyboard", + "boundary": "Actual Program, local Identity cookies/CSRF, free owner accounts and isolated temporary SQLite. A guarded test-only helper inserts exactly one inert queued native-offline-fixture task; no registered producer/handler, AI entitlement, subject, provider/model, lease, usage or result is created. Actual cancel/retry/read/dismiss endpoints own every recorded persistent transition. Actual terminal notices have operationId and linkPath=null: no result/Open capability is inferred. Explicitly labelled controlled GET projections qualify only long-text and internal-link presentation. Controlled precommit503/held GET responses qualify UI recovery/race handling, not uncertain delivery. Every external request is aborted. Only existing HTTPS GET stylesheet requests to fonts.googleapis.com/css2 are classified separately as blocked font resources; every occurrence is retained, no font is fetched, and other external/provider/model requests remain an ordinary failing assertion. Font-resource counts are separate from forbidden provider/model counts; these captures do not qualify production fonts. No production/main/deployment, worker activation, Docker/model qualification, provider grant/send/sync, renderer or Phase8 action. Finite local Chromium/axe evidence does not establish human screen-reader, physical touch/software keyboard, actual zoom, live MariaDB, real worker execution, production font/photo or production readiness.", + "controlledProjection": "Only title/message of one actual owned terminal notice are replaced by controlled long UI contract text. Its identity, ownership, UTC timestamps, operationId and absent link stay actual; this does not claim a long-message producer.", + "qualifications": [ + "Finite Chromium states only; human AT, physical devices, software keyboard and real zoom remain pending.", + "Controlled projections are UI contract fixtures, not current producer output.", + "Full-page captures may move scroll; strict action geometry is measured before capture and after explicit restoration." + ] + }, + "rules": [ + { + "kind": "incomplete", + "id": "aria-hidden-focus", + "nodes": 1 + }, + { + "kind": "incomplete", + "id": "color-contrast", + "nodes": 6 + } + ] + }, + { + "test": "[P7-08 notifications] eight finite bilingual theme widths retain dialog focus scroll/footer and complete axe vectors with labelled long metadata", + "attachment": "p708-notifications-nb-dark-1920-1080-controlled-long-text-keyboard-audit", + "geometry": { + "viewport": { + "width": 1920, + "height": 1080 + }, + "rootOverflow": 0, + "dialog": { + "left": 818, + "right": 1238, + "top": 63, + "bottom": 663, + "width": 420, + "height": 600, + "scrollWidth": 420, + "clientWidth": 420 + }, + "content": { + "scrollHeight": 1392, + "clientHeight": 480, + "scrollTop": 0 + }, + "focusInside": true + }, + "engine": { + "name": "axe-core", + "version": "4.13.0" + }, + "toolOptions": { + "rules": { + "target-size": { + "enabled": true + } + }, + "reporter": "v1" + }, + "violationNodes": 0, + "incompleteNodes": 7, + "raw": { + "path": ".artifacts/phase7/p7-08/operations-final-consumers/embedded/notifications/042-p708-notifications-nb-dark-1920-1080-controlled-long-text-keyboard-audit.json", + "sha256": "5b94c946bb12ad43a11489eb24ac1a9a688cea24de3d486a1932bd7d7285bf7c", + "bytes": 26621, + "hashPolicy": "Exact measured raw bytes" + }, + "originalEmbeddedReport": { + "path": ".artifacts/phase7/p7-08/operations-final-consumers/notifications.json", + "sha256": "a0697967682cf65a06e1f440becb3880f9c89c2f6a68844ae5aa663d126fc726", + "bytes": 2404580, + "hashPolicy": "Exact measured raw bytes" + }, + "context": { + "sample": { + "language": "nb", + "theme": "dark", + "width": 1920, + "height": 1080 + }, + "state": "controlled-long-text-keyboard", + "boundary": "Actual Program, local Identity cookies/CSRF, free owner accounts and isolated temporary SQLite. A guarded test-only helper inserts exactly one inert queued native-offline-fixture task; no registered producer/handler, AI entitlement, subject, provider/model, lease, usage or result is created. Actual cancel/retry/read/dismiss endpoints own every recorded persistent transition. Actual terminal notices have operationId and linkPath=null: no result/Open capability is inferred. Explicitly labelled controlled GET projections qualify only long-text and internal-link presentation. Controlled precommit503/held GET responses qualify UI recovery/race handling, not uncertain delivery. Every external request is aborted. Only existing HTTPS GET stylesheet requests to fonts.googleapis.com/css2 are classified separately as blocked font resources; every occurrence is retained, no font is fetched, and other external/provider/model requests remain an ordinary failing assertion. Font-resource counts are separate from forbidden provider/model counts; these captures do not qualify production fonts. No production/main/deployment, worker activation, Docker/model qualification, provider grant/send/sync, renderer or Phase8 action. Finite local Chromium/axe evidence does not establish human screen-reader, physical touch/software keyboard, actual zoom, live MariaDB, real worker execution, production font/photo or production readiness.", + "controlledProjection": "Only title/message of one actual owned terminal notice are replaced by controlled long UI contract text. Its identity, ownership, UTC timestamps, operationId and absent link stay actual; this does not claim a long-message producer.", + "qualifications": [ + "Finite Chromium states only; human AT, physical devices, software keyboard and real zoom remain pending.", + "Controlled projections are UI contract fixtures, not current producer output.", + "Full-page captures may move scroll; strict action geometry is measured before capture and after explicit restoration." + ] + }, + "rules": [ + { + "kind": "incomplete", + "id": "aria-hidden-focus", + "nodes": 1 + }, + { + "kind": "incomplete", + "id": "color-contrast", + "nodes": 6 + } + ] + } + ], + "violationNodes": 0, + "incompleteNodes": 102, + "checkContexts": [ + { + "kind": "incomplete", + "rule": "aria-hidden-focus", + "check": "focusable-modal-open", + "message": "Check that focusable elements are not tabbable in the current state", + "occurrences": 14, + "representativeContexts": [ + { + "attachment": "p708-notifications-en-light-1440-900-actual-read-task-unchanged-audit", + "target": [ + "#root" + ], + "data": null, + "relatedNodes": [ + { + "html": "Skip to main content", + "target": [ + "a" + ] + }, + { + "html": "", + "target": [ + ".css-11kar8v" + ] + }, + { + "html": "
", + "target": [ + ".MuiDrawer-paperAnchorDockedLeft > .css-1vpgucn > .css-184269b.MuiBox-root > .css-6zugs3.MuiBox-root > .css-r91acf.MuiBox-root:nth-child(1) > .MuiList-padding.css-k1qkeu[aria-label=\"Navigation\"] > .css-hapf9j.MuiListItem-root.MuiListItem-gutters > .css-j56oom.MuiListItemButton-root[aria-label=\"Dashboard\"]" + ] + }, + { + "html": "
", + "target": [ + ".MuiDrawer-paperAnchorDockedLeft > .css-1vpgucn > .css-184269b.MuiBox-root > .css-6zugs3.MuiBox-root > .css-r91acf.MuiBox-root:nth-child(2) > .MuiList-padding.css-k1qkeu[aria-label=\"Job search\"] > .css-hapf9j.MuiListItem-root.MuiListItem-gutters:nth-child(1) > .css-j56oom.MuiListItemButton-root[aria-label=\"Job Applications\"]" + ] + }, + { + "html": "
", + "target": [ + ".MuiDrawer-paperAnchorDockedLeft > .css-1vpgucn > .css-184269b.MuiBox-root > .css-6zugs3.MuiBox-root > .css-r91acf.MuiBox-root:nth-child(2) > .MuiList-padding.css-k1qkeu[aria-label=\"Job search\"] > .css-hapf9j.MuiListItem-root.MuiListItem-gutters:nth-child(1) > .css-1rv7atp[aria-label=\"Job Applications\"] > .css-1ohqk82.MuiListItem-root.MuiListItem-gutters:nth-child(1) > .css-m9zpd7.MuiListItemButton-root.MuiListItemButton-gutters" + ] + }, + { + "html": "
", + "target": [ + ".MuiDrawer-paperAnchorDockedLeft > .css-1vpgucn > .css-184269b.MuiBox-root > .css-6zugs3.MuiBox-root > .css-r91acf.MuiBox-root:nth-child(2) > .MuiList-padding.css-k1qkeu[aria-label=\"Job search\"] > .css-hapf9j.MuiListItem-root.MuiListItem-gutters:nth-child(1) > .css-1rv7atp[aria-label=\"Job Applications\"] > .css-1ohqk82.MuiListItem-root.MuiListItem-gutters:nth-child(2) > .css-m9zpd7.MuiListItemButton-root.MuiListItemButton-gutters" + ] + }, + { + "html": "
", + "target": [ + ".MuiDrawer-paperAnchorDockedLeft > .css-1vpgucn > .css-184269b.MuiBox-root > .css-6zugs3.MuiBox-root > .css-r91acf.MuiBox-root:nth-child(2) > .MuiList-padding.css-k1qkeu[aria-label=\"Job search\"] > .css-hapf9j.MuiListItem-root.MuiListItem-gutters:nth-child(1) > .css-1rv7atp[aria-label=\"Job Applications\"] > .css-1ohqk82.MuiListItem-root.MuiListItem-gutters:nth-child(3) > .css-m9zpd7.MuiListItemButton-root.MuiListItemButton-gutters" + ] + }, + { + "html": "
", + "target": [ + ".MuiDrawer-paperAnchorDockedLeft > .css-1vpgucn > .css-184269b.MuiBox-root > .css-6zugs3.MuiBox-root > .css-r91acf.MuiBox-root:nth-child(2) > .MuiList-padding.css-k1qkeu[aria-label=\"Job search\"] > .css-hapf9j.MuiListItem-root.MuiListItem-gutters:nth-child(1) > .css-1rv7atp[aria-label=\"Job Applications\"] > .css-1ohqk82.MuiListItem-root.MuiListItem-gutters:nth-child(4) > .css-m9zpd7.MuiListItemButton-root.MuiListItemButton-gutters" + ] + }, + { + "html": "
", + "target": [ + ".MuiDrawer-paperAnchorDockedLeft > .css-1vpgucn > .css-184269b.MuiBox-root > .css-6zugs3.MuiBox-root > .css-r91acf.MuiBox-root:nth-child(2) > .MuiList-padding.css-k1qkeu[aria-label=\"Job search\"] > .css-hapf9j.MuiListItem-root.MuiListItem-gutters:nth-child(1) > .css-1rv7atp[aria-label=\"Job Applications\"] > .css-1ohqk82.MuiListItem-root.MuiListItem-gutters:nth-child(5) > .css-m9zpd7.MuiListItemButton-root.MuiListItemButton-gutters" + ] + }, + { + "html": "
", + "target": [ + ".MuiDrawer-paperAnchorDockedLeft > .css-1vpgucn > .css-184269b.MuiBox-root > .css-6zugs3.MuiBox-root > .css-r91acf.MuiBox-root:nth-child(2) > .MuiList-padding.css-k1qkeu[aria-label=\"Job search\"] > .css-hapf9j.MuiListItem-root.MuiListItem-gutters:nth-child(2) > .css-j56oom.MuiListItemButton-root[aria-label=\"Job email\"]" + ] + }, + { + "html": "
", + "target": [ + ".MuiDrawer-paperAnchorDockedLeft > .css-1vpgucn > .css-184269b.MuiBox-root > .css-6zugs3.MuiBox-root > .css-r91acf.MuiBox-root:nth-child(3) > .MuiList-padding.css-k1qkeu[aria-label=\"Career\"] > .css-hapf9j.MuiListItem-root.MuiListItem-gutters:nth-child(1) > .css-j56oom.MuiListItemButton-root[aria-label=\"Career profile\"]" + ] + }, + { + "html": "
", + "target": [ + ".MuiDrawer-paperAnchorDockedLeft > .css-1vpgucn > .css-184269b.MuiBox-root > .css-6zugs3.MuiBox-root > .css-r91acf.MuiBox-root:nth-child(3) > .MuiList-padding.css-k1qkeu[aria-label=\"Career\"] > .css-hapf9j.MuiListItem-root.MuiListItem-gutters:nth-child(2) > .css-j56oom.MuiListItemButton-root[aria-label=\"CV Builder\"]" + ] + }, + { + "html": "
", + "target": [ + ".MuiDrawer-paperAnchorDockedLeft > .css-1vpgucn > .css-184269b.MuiBox-root > .css-6zugs3.MuiBox-root > .css-r91acf.MuiBox-root:nth-child(3) > .MuiList-padding.css-k1qkeu[aria-label=\"Career\"] > .css-hapf9j.MuiListItem-root.MuiListItem-gutters:nth-child(3) > .Mui-selected[aria-label=\"Documents\"][aria-current=\"page\"]" + ] + }, + { + "html": "
", + "target": [ + ".MuiDrawer-paperAnchorDockedLeft > .css-1vpgucn > .css-184269b.MuiBox-root > .css-6zugs3.MuiBox-root > .css-r91acf.MuiBox-root:nth-child(4) > .MuiList-padding.css-k1qkeu[aria-label=\"Insights\"] > .css-hapf9j.MuiListItem-root.MuiListItem-gutters > .css-j56oom.MuiListItemButton-root[aria-label=\"Analytics\"]" + ] + }, + { + "html": "
", + "target": [ + ".MuiDrawer-paperAnchorDockedLeft > .css-1vpgucn > .css-6zugs3.MuiBox-root > .css-r91acf.MuiBox-root > .MuiList-padding.css-k1qkeu[aria-label=\"Account\"] > .css-hapf9j.MuiListItem-root.MuiListItem-gutters > .css-j56oom.MuiListItemButton-root[aria-label=\"Settings\"]" + ] + }, + { + "html": "
", + "target": [ + ".MuiDrawer-paperAnchorDockedLeft > .css-1vpgucn > .css-6zugs3.MuiBox-root > .css-r91acf.MuiBox-root > .MuiList-padding.css-k1qkeu[aria-label=\"Account\"] > .css-hapf9j.MuiListItem-root.MuiListItem-gutters > .css-1rv7atp[aria-label=\"Settings\"] > .css-1ohqk82.MuiListItem-root.MuiListItem-gutters:nth-child(1) > .css-m9zpd7.MuiListItemButton-root.MuiListItemButton-gutters" + ] + }, + { + "html": "
", + "target": [ + ".MuiDrawer-paperAnchorDockedLeft > .css-1vpgucn > .css-6zugs3.MuiBox-root > .css-r91acf.MuiBox-root > .MuiList-padding.css-k1qkeu[aria-label=\"Account\"] > .css-hapf9j.MuiListItem-root.MuiListItem-gutters > .css-1rv7atp[aria-label=\"Settings\"] > .css-1ohqk82.MuiListItem-root.MuiListItem-gutters:nth-child(2) > .css-m9zpd7.MuiListItemButton-root.MuiListItemButton-gutters" + ] + }, + { + "html": "", + "target": [ + ".css-11kar8v" + ] + }, + { + "html": "
", + "target": [ + ".MuiDrawer-paperAnchorDockedLeft > .css-1vpgucn > .css-184269b.MuiBox-root > .css-6zugs3.MuiBox-root > .css-r91acf.MuiBox-root:nth-child(1) > .MuiList-padding.css-k1qkeu[aria-label=\"Navigation\"] > .css-hapf9j.MuiListItem-root.MuiListItem-gutters > .css-j56oom.MuiListItemButton-root[aria-label=\"Dashboard\"]" + ] + }, + { + "html": "
", + "target": [ + ".MuiDrawer-paperAnchorDockedLeft > .css-1vpgucn > .css-184269b.MuiBox-root > .css-6zugs3.MuiBox-root > .css-r91acf.MuiBox-root:nth-child(2) > .MuiList-padding.css-k1qkeu[aria-label=\"Job search\"] > .css-hapf9j.MuiListItem-root.MuiListItem-gutters:nth-child(1) > .css-j56oom.MuiListItemButton-root[aria-label=\"Job Applications\"]" + ] + }, + { + "html": "
", + "target": [ + ".MuiDrawer-paperAnchorDockedLeft > .css-1vpgucn > .css-184269b.MuiBox-root > .css-6zugs3.MuiBox-root > .css-r91acf.MuiBox-root:nth-child(2) > .MuiList-padding.css-k1qkeu[aria-label=\"Job search\"] > .css-hapf9j.MuiListItem-root.MuiListItem-gutters:nth-child(1) > .css-1rv7atp[aria-label=\"Job Applications\"] > .css-1ohqk82.MuiListItem-root.MuiListItem-gutters:nth-child(1) > .css-m9zpd7.MuiListItemButton-root.MuiListItemButton-gutters" + ] + }, + { + "html": "
", + "target": [ + ".MuiDrawer-paperAnchorDockedLeft > .css-1vpgucn > .css-184269b.MuiBox-root > .css-6zugs3.MuiBox-root > .css-r91acf.MuiBox-root:nth-child(2) > .MuiList-padding.css-k1qkeu[aria-label=\"Job search\"] > .css-hapf9j.MuiListItem-root.MuiListItem-gutters:nth-child(1) > .css-1rv7atp[aria-label=\"Job Applications\"] > .css-1ohqk82.MuiListItem-root.MuiListItem-gutters:nth-child(2) > .css-m9zpd7.MuiListItemButton-root.MuiListItemButton-gutters" + ] + }, + { + "html": "
", + "target": [ + ".MuiDrawer-paperAnchorDockedLeft > .css-1vpgucn > .css-184269b.MuiBox-root > .css-6zugs3.MuiBox-root > .css-r91acf.MuiBox-root:nth-child(2) > .MuiList-padding.css-k1qkeu[aria-label=\"Job search\"] > .css-hapf9j.MuiListItem-root.MuiListItem-gutters:nth-child(1) > .css-1rv7atp[aria-label=\"Job Applications\"] > .css-1ohqk82.MuiListItem-root.MuiListItem-gutters:nth-child(3) > .css-m9zpd7.MuiListItemButton-root.MuiListItemButton-gutters" + ] + }, + { + "html": "
", + "target": [ + ".MuiDrawer-paperAnchorDockedLeft > .css-1vpgucn > .css-184269b.MuiBox-root > .css-6zugs3.MuiBox-root > .css-r91acf.MuiBox-root:nth-child(2) > .MuiList-padding.css-k1qkeu[aria-label=\"Job search\"] > .css-hapf9j.MuiListItem-root.MuiListItem-gutters:nth-child(1) > .css-1rv7atp[aria-label=\"Job Applications\"] > .css-1ohqk82.MuiListItem-root.MuiListItem-gutters:nth-child(4) > .css-m9zpd7.MuiListItemButton-root.MuiListItemButton-gutters" + ] + }, + { + "html": "
", + "target": [ + ".MuiDrawer-paperAnchorDockedLeft > .css-1vpgucn > .css-184269b.MuiBox-root > .css-6zugs3.MuiBox-root > .css-r91acf.MuiBox-root:nth-child(2) > .MuiList-padding.css-k1qkeu[aria-label=\"Job search\"] > .css-hapf9j.MuiListItem-root.MuiListItem-gutters:nth-child(1) > .css-1rv7atp[aria-label=\"Job Applications\"] > .css-1ohqk82.MuiListItem-root.MuiListItem-gutters:nth-child(5) > .css-m9zpd7.MuiListItemButton-root.MuiListItemButton-gutters" + ] + }, + { + "html": "
", + "target": [ + ".MuiDrawer-paperAnchorDockedLeft > .css-1vpgucn > .css-184269b.MuiBox-root > .css-6zugs3.MuiBox-root > .css-r91acf.MuiBox-root:nth-child(2) > .MuiList-padding.css-k1qkeu[aria-label=\"Job search\"] > .css-hapf9j.MuiListItem-root.MuiListItem-gutters:nth-child(2) > .css-j56oom.MuiListItemButton-root[aria-label=\"Job email\"]" + ] + }, + { + "html": "
", + "target": [ + ".MuiDrawer-paperAnchorDockedLeft > .css-1vpgucn > .css-184269b.MuiBox-root > .css-6zugs3.MuiBox-root > .css-r91acf.MuiBox-root:nth-child(3) > .MuiList-padding.css-k1qkeu[aria-label=\"Career\"] > .css-hapf9j.MuiListItem-root.MuiListItem-gutters:nth-child(1) > .css-j56oom.MuiListItemButton-root[aria-label=\"Career profile\"]" + ] + }, + { + "html": "
", + "target": [ + ".MuiDrawer-paperAnchorDockedLeft > .css-1vpgucn > .css-184269b.MuiBox-root > .css-6zugs3.MuiBox-root > .css-r91acf.MuiBox-root:nth-child(3) > .MuiList-padding.css-k1qkeu[aria-label=\"Career\"] > .css-hapf9j.MuiListItem-root.MuiListItem-gutters:nth-child(2) > .css-j56oom.MuiListItemButton-root[aria-label=\"CV Builder\"]" + ] + }, + { + "html": "
", + "target": [ + ".MuiDrawer-paperAnchorDockedLeft > .css-1vpgucn > .css-184269b.MuiBox-root > .css-6zugs3.MuiBox-root > .css-r91acf.MuiBox-root:nth-child(3) > .MuiList-padding.css-k1qkeu[aria-label=\"Career\"] > .css-hapf9j.MuiListItem-root.MuiListItem-gutters:nth-child(3) > .Mui-selected[aria-label=\"Documents\"][aria-current=\"page\"]" + ] + }, + { + "html": "
", + "target": [ + ".MuiDrawer-paperAnchorDockedLeft > .css-1vpgucn > .css-184269b.MuiBox-root > .css-6zugs3.MuiBox-root > .css-r91acf.MuiBox-root:nth-child(4) > .MuiList-padding.css-k1qkeu[aria-label=\"Insights\"] > .css-hapf9j.MuiListItem-root.MuiListItem-gutters > .css-j56oom.MuiListItemButton-root[aria-label=\"Analytics\"]" + ] + }, + { + "html": "
", + "target": [ + ".MuiDrawer-paperAnchorDockedLeft > .css-1vpgucn > .css-6zugs3.MuiBox-root > .css-r91acf.MuiBox-root > .MuiList-padding.css-k1qkeu[aria-label=\"Account\"] > .css-hapf9j.MuiListItem-root.MuiListItem-gutters > .css-j56oom.MuiListItemButton-root[aria-label=\"Settings\"]" + ] + }, + { + "html": "
", + "target": [ + ".MuiDrawer-paperAnchorDockedLeft > .css-1vpgucn > .css-6zugs3.MuiBox-root > .css-r91acf.MuiBox-root > .MuiList-padding.css-k1qkeu[aria-label=\"Account\"] > .css-hapf9j.MuiListItem-root.MuiListItem-gutters > .css-1rv7atp[aria-label=\"Settings\"] > .css-1ohqk82.MuiListItem-root.MuiListItem-gutters:nth-child(1) > .css-m9zpd7.MuiListItemButton-root.MuiListItemButton-gutters" + ] + }, + { + "html": "
", + "target": [ + ".MuiDrawer-paperAnchorDockedLeft > .css-1vpgucn > .css-6zugs3.MuiBox-root > .css-r91acf.MuiBox-root > .MuiList-padding.css-k1qkeu[aria-label=\"Account\"] > .css-hapf9j.MuiListItem-root.MuiListItem-gutters > .css-1rv7atp[aria-label=\"Settings\"] > .css-1ohqk82.MuiListItem-root.MuiListItem-gutters:nth-child(2) > .css-m9zpd7.MuiListItemButton-root.MuiListItemButton-gutters" + ] + }, + { + "html": " - + const locked = busyKey !== null || error?.kind === "committed"; + const taskLabel = (task: string) => Object.hasOwn(taskKeys, task) ? t(taskKeys[task]) : task; + const dateLabel = (value: string) => notificationDateLabel(value, language === "nb" ? "nb-NO" : "en-GB"); + const errorTitle = error ? t(error.kind === "committed" ? "operationsCommittedRefreshFailed" : error.kind === "action" ? "operationsActionFailed" : "operationsLoadFailed") : ""; + const errorDetail = error ? getApiErrorMessage(error.cause, errorTitle) : ""; - {error ? {error} : null} - {loading ? : null} - - - {t("notifications")} - {notifications.length === 0 && !loading ? {t("operationsNoNotifications")} : null} - - {notifications.map((notification) => ( - - {notification.title} - {notification.message} - {notificationDateLabel(notification.createdAtUtc, language === "nb" ? "nb-NO" : "en")} - - {!notification.readAtUtc ? ( - - ) : null} - - - - ))} + return + {t("refresh")}} /> + {t("operationsRecentHelp")} + {error ? {t("retry")}}> + {errorTitle} + {errorDetail !== errorTitle ? {errorDetail} : null} + : null} + {loading ? : null} + + {hasLoaded && notifications.length === 0 ? {t("operationsNoNotifications")} : null} + {notifications.map(notification => + {notification.title} + {!notification.readAtUtc ? {t("notificationsUnread")} : null} + {notification.message} + {dateLabel(notification.createdAtUtc)} + + {!notification.readAtUtc ? : null} + - - - - {t("operations")} - {operations.length === 0 && !loading ? {t("operationsEmpty")} : null} - - {operations.map((operation) => ( - - - {operation.taskType} - - - {t("operationsStarted", { date: notificationDateLabel(operation.createdAtUtc, language === "nb" ? "nb-NO" : "en") })} - {operation.progressStage ? {operation.progressStage} : null} - {operation.progressPercent != null ? : null} - {operation.cancellationRequestedAtUtc ? {t("operationsCancellationRequested")} : null} - {operation.failureCategory ? {t("operationsFailed", { category: statusLabel(operation.failureCategory) })} : null} - - {operation.canCancel ? ( - - ) : null} - {operation.canRetry ? ( - - ) : null} - - - ))} + )} + + + {hasLoaded && operations.length === 0 ? {t("operationsEmpty")} : null} + {operations.map(operation => + + {taskLabel(operation.taskType)} + + + {t("operationsCreated", { date: dateLabel(operation.createdAtUtc) })} + {operation.progressStage ? {operation.progressStage} : null} + {operation.progressPercent != null ? : null} + {operation.cancellationRequestedAtUtc ? {t("operationsCancellationRequested")} : null} + {operation.failureCategory ? {t("operationsFailed", { category: operation.failureCategory.replaceAll("_", " ") })} : null} + + {operation.canCancel ? : null} + {operation.canRetry ? : null} - - - ); + )} + + ; }