fix(operations): preserve task state and accessible recovery

This commit is contained in:
cesnimda
2026-10-17 04:03:50 +02:00
parent 40cfe04df5
commit c5176e3251
16 changed files with 5466 additions and 129 deletions
+27 -8
View File
@@ -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.