fix(notifications): preserve action state and accessible recovery

This commit is contained in:
cesnimda
2026-10-16 23:14:33 +02:00
parent 9dfea1226f
commit 40cfe04df5
22 changed files with 5963 additions and 66 deletions
+16 -8
View File
@@ -1,14 +1,14 @@
# P7-08 — Existing notifications and operations
**Status: separate UTC compatibility repair validated locally; recent/count presentation remains in progress after its 49-case GREEN candidate. Final UI/native/publication acceptance is 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: 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.
## Entry and publication qualification
[P7-07 local acceptance](../p7-07/README.md) and its [Documents interface report](../p7-07/UI.md) establish the preceding bounded work. Documents code is committed locally as `5a67ec3d3d5dc27298814b0a3f46540cb54ea3a3`; publication documentation is committed as `84350b71a67400cd62730e46bf05f06176bcd733`. Neither local commit is evidence of publication.
Two actual normal development pushes fail because the configured Git host cannot be reached on port 443. The latest attempt runs **2026-10-16 16:31:50.187856–16:32:11.434629 UTC**, exit **128**, retained under `.artifacts/phase7/p7-07/ui-publication-attempt-2/`. The earlier verified development remote at `8e4db12` is historical, not current live identity. Local `main` remains `27657f31131cd95d42f0e1290853ec9c9b3959a4`; this work does not push it. P7-07 publication remains blocked.
Two actual normal development pushes fail because the configured Git host cannot be reached on port 443. The second attempt runs **2026-10-16 16:31:50.187856–16:32:11.434629 UTC**, exit **128**, retained under `.artifacts/phase7/p7-07/ui-publication-attempt-2/`. Publication is blocked at that observation; cached `8e4db12` is not current live identity. These failures remain in the [publication chronology](../p7-07/evidence/ui-publication.json).
Independent P7-08 contract review, baseline checks and bounded safe work can proceed locally. The remote-access failure does not waive normal publication: each completed boundary still requires commit, push and fresh HEAD/remote verification. P7-12 cannot accept unpublished slices. After the **20:52 UTC** resumption, a fetch at **20:53:25–20:53:46** also exits 128 for the same connection failure; no new remote identity or execution during the usage pause is inferred.
Independent P7-08 contract review and bounded safe work proceed while publication is blocked. After the **20:52 UTC** resumption, a fetch at **20:53:25–20:53:46** again exits128; no execution during the pause is inferred. A later normal push **21:00:51.343381–21:00:53.589287** succeeds. At **21:01:11.788733**, HEAD/origin/direct development all equal **`9dfea1226f57ba12b944e05e0e83fb2fea846131`**, publishing Documents `5a67ec3`, publication documentation `84350b7` and the separate UTC repair. Local/origin/live main remain `27657f31131cd95d42f0e1290853ec9c9b3959a4`. Immutable receipt `.artifacts/phase7/p7-08/utc-push-receipt.json`, SHA256 `12f339239dfb6ef458d31ca6918555e4eb4ce35bc5dacfa3acd33cd34ebffd65`, records known presentation WIP: synchronized refs do not mean a clean checkout or publication of that WIP. Each later completed slice still requires its own normal push; P7-12 cannot accept unpublished work.
## Two bounded presentation boundaries
@@ -58,18 +58,26 @@ Operations inspection records additional review targets: polling and list reads
## Separate UTC repair and native evidence plan
The [UTC repair report](UTC_TRANSPORT.md) and [portable results](evidence/utc-results.json) record ordinary **3 pass / 1 fail RED**, then **4/4 GREEN** and **73/73 related consumers**. Seven DTO projections now label stored UTC ticks without conversion, data writes or schema/auth/queue changes. This proves real SQLite plus direct-controller Web JSON serialization, **not hosted HTTP**; actual Program/cookie transport evidence remains pending. The repair is separate from presentation acceptance.
The [UTC repair report](UTC_TRANSPORT.md) and [portable results](evidence/utc-results.json) record ordinary **3 pass / 1 fail RED**, then **4/4 GREEN** and **73/73 related consumers**. Seven DTO projections label stored UTC ticks without conversion, data writes or schema/auth/queue changes. This gate proves real SQLite/direct-controller Web JSON. Later actual Program/cookie native cases additionally observe available operation/notification UTC fields over HTTP; null hosted fields do not establish all-seven-field coverage. The published repair remains separate from presentation acceptance.
The guarded operation-only helper passes **29 self-checks**, **20:55:29.159474–20:55:29.645478**, using only its own temporary directory; its captured source remains held. This is not native/hosted evidence: actual CLI/schema execution and an existing cancel transition producing a notification remain pending. The Career seeder stays unchanged. Do not enable an operation handler, AI/model/provider worker or external grant to manufacture fixture content. Setup and actual domain-transition evidence must remain distinguishable from presentation fixtures.
The guarded operation-only helper passes **29 self-checks**, **20:55:29.159474–20:55:29.645478**, using only its own temporary directory. It is then used by actual native setup for an inert queued operation; existing real cancel/retry/read/dismiss endpoints own the persisted transitions. No handler, provider/model worker or external grant is enabled, and the Career seeder stays unchanged. Actual terminal notices have no result link; controlled internal-link/long-message GET projections are labelled presentation evidence, not new producer capabilities.
Required native evidence includes real local-cookie read/dismiss/unread/reload and owner isolation, known/unknown count recovery, existing result/context links, failure/Retry/cancel, disconnect/reconnect recovery and no duplicate starts. Exercise keyboard/focus, bounded scroll containers, long English/Bokmål text and both themes across finite mobile/tablet/desktop samples. Record exact routes and writes, preserve every axe incomplete context and inspect actual images before drawing visual conclusions. No native, visual, axe or human acceptance is claimed at this entry checkpoint.
Required native evidence includes real local-cookie read/dismiss/unread/reload and owner isolation, known/unknown count recovery, existing context links, failure/Retry/cancel, reconnect recovery and no duplicate starts. Preserve keyboard/focus, bounded scrolling, long English/Bokmål text and both themes across finite sizes. Exact routes/writes, every axe incomplete context and actual image review remain required. The initial entry claimed no native evidence; the finite final run is recorded below and supplies no human or production acceptance.
## Preservation, counts and remaining work
All **57 preservation groups remain 56 PARTIAL / C11 DEFERRED**; [preservation](../PRESERVATION.md) and [debt](../DEBT.md) remain binding. Keep **33 current routes**, comprising the original 32 plus Documents. Existing canonical Career Profile data, CV overrides/revisions, frozen packages, attachment bytes and provider/tenant boundaries remain protected. Notification read/dismiss must not alter those resource owners.
Entry inventory is **frontend 755/95, browser 312, backend 1,053** from P7-07. The one new UTC Fact derives backend **1,054**; 18 new frontend cases with no new suites derive **773/95**. The earlier 772/95 candidate count precedes the final Retry-focus case. These are inventories, not fresh integrated pass counts or final whole-checkpoint counts. Browser inventory stays 312 until native additions are executed and reconciled. Preserve all ordinary failures; no skip or expected-failure marker may conceal one. P7-12 owns the fresh integrated suite; its last full backend baseline remains 1,033.
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.
Complete UTC repair hygiene and its separate commit, finish recent/count regressions and native/visual evidence, then validate the distinct Operations boundary. Each completed logical repair needs automated evidence, preservation reconciliation, hygiene, commit and normal push, with manual/native qualifications recorded honestly. Publication remains an actual network blocker; do not claim current synchronization from old refs.
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.
## Recent popover and shell — final finite evidence
[Recent-slice report](RECENT.md) and [portable recent results](evidence/recent-results.json) record final **49 cases / six suites PASS**, **21:06:55.374107–21:07:11.749777 UTC**, and **six native cases PASS**, **21:07:45.451559–21:08:28.257520**, with no skipped/unexpected/flaky native result or retry. Lint, app/browser TypeScript and build all pass **21:06:41.264525–21:07:45.444153**; final build is **`lIzSurm9WwMhPbE11MvC9`**. Earlier candidate results remain chronological evidence, not substitutes for this run.
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.**
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.**