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
+7 -3
View File
@@ -1,6 +1,6 @@
# P7-07 — Documents owner-scoped index
**Implemented local scope: CONDITIONAL GO; final hygiene PASS.** The backend contract was normally pushed as `8e4db12`; the separate [Documents interface](UI.md) now passes its affected component, native, build and finite visual checks. The configured Git host is currently unreachable, so publication is pending and this checkpoint is not closed or reported synchronized. Follow the exact [Phase 6 handoff](../../phase-6/p6-05/PHASE7_HANDOFF.md#migration-order-and-commit-boundaries) and [Documents architecture](../../phase-3/DOCUMENTS_UX.md). The contract was pushed before interface implementation.
**Implemented scope: CONDITIONAL GO; final hygiene PASS; Documents publication verified.** The backend contract was normally pushed as `8e4db12`; the separate [Documents interface](UI.md) passes its affected component, native, build and finite visual checks. A later normal push publishes its implementation/documentation together with the separate UTC repair; direct development refs match at **2026-10-16 21:01:11.788733 UTC**. Known P7-08 presentation work remains uncommitted, so this does not claim a clean checkout or full Phase 7 acceptance. Follow the exact [Phase 6 handoff](../../phase-6/p6-05/PHASE7_HANDOFF.md#migration-order-and-commit-boundaries) and [Documents architecture](../../phase-3/DOCUMENTS_UX.md). The contract was pushed before interface implementation.
The preceding compose commit `223dcf57d26bab624261994b61a46f2d3e2dd5b2` was normally pushed and directly verified at **2026-10-14 11:03:15.576853 UTC**: clean HEAD = origin = live development; local/origin/live main remains `27657f31131cd95d42f0e1290853ec9c9b3959a4`. [Entry evidence](evidence/entry.json) records the receipt and fresh existing-contract baseline: **37 passing cases**, unchanged Release DLL, with all20 captured sources unchanged before/after. This is an existing-contract subset, not a Documents endpoint or full-suite execution.
@@ -43,10 +43,14 @@ All **18 final images** were actually reviewed: 17 Documents states/layouts and
The original 32 routes remain; `/documents` adds a supported 33rd route. All 57 preservation groups remain 56 PARTIAL / C11 DEFERRED. Added coverage derives frontend **755/95**, browser **312**, backend **1,053**; these are inventories, not a fresh integrated regression result. P7-12 still owns that run. P5-13 remains withheld, followMode deferred and production NO-GO. `main` is unchanged; Phase 8 has not started.
The configured Git host refused port-443 connections during the later recorded fetch attempts. Commit/push outcome will be recorded after the actual attempt. P7-08 through P7-12 remain; their approved order and dependencies are unchanged.
The configured Git host refused port-443 connections during the earlier recorded fetch attempts; those failures remain historical evidence. Actual publication recovery is recorded below. P7-08 through P7-12 remain; their approved order and dependencies are unchanged.
Final [static checks](evidence/ui-static-checks.json) passed at **2026-10-16 16:21 UTC**: secret scan and working/staged/phase whitespace checks, 19 documents / 518 local links, all 57 preservation groups and 33 current routes. Static checks verify local main/origin-main refs only; they do not establish current remote or production state.
## Actual local commit and failed publication — 2026-10-16
Documents interface commit **`5a67ec3d3d5dc27298814b0a3f46540cb54ea3a3`** is safely recorded locally. Its [actual publication receipt](evidence/ui-publication.json) records the normal development push **16:22:30.090899–16:22:51.339211 UTC**, exit **128**, because `git.cesnimda.uk:443` could not be reached. No synchronization or remote acceptance is claimed. The previously verified remote development commit remains `8e4db12`; that is historical evidence. Main was not pushed. Implemented local scope remains CONDITIONAL GO; P7-07 publication is blocked. Independent P7-08 contract review and baseline checks can proceed, while P7-12 still requires every executed slice to be pushed before integrated acceptance.
Documents interface commit **`5a67ec3d3d5dc27298814b0a3f46540cb54ea3a3`** is safely recorded locally. Its [publication chronology](evidence/ui-publication.json) retains the failed normal push **16:22:30.090899–16:22:51.339211 UTC**, exit **128**, because `git.cesnimda.uk:443` could not be reached. A second normal push of publication-documentation commit **`84350b71a67400cd62730e46bf05f06176bcd733`** also fails at **16:31:50.187856–16:32:11.434629**, exit 128. At those observations publication is blocked and cached `8e4db12` is not current live identity. Main is not pushed; the failed attempts are not removed by the later recovery.
## Verified publication recovery — 2026-10-16
The normal development push **21:00:51.343381–21:00:53.589287 UTC** succeeds, exit 0, publishing **`5a67ec3`**, **`84350b7`** and the separate UTC repair **`9dfea1226f57ba12b944e05e0e83fb2fea846131`**. At **21:01:11.788733**, local HEAD, origin development and the directly queried development ref all equal `9dfea1226f57ba12b944e05e0e83fb2fea846131`; local/origin/live main all remain `27657f31131cd95d42f0e1290853ec9c9b3959a4`. The immutable `.artifacts/phase7/p7-08/utc-push-receipt.json` is **1,680 bytes**, SHA256 `12f339239dfb6ef458d31ca6918555e4eb4ce35bc5dacfa3acd33cd34ebffd65`, linked in the portable publication chronology. Separate notification presentation/tests/native helpers are known unstaged work at that observation: refs are synchronized, but a clean working tree is not claimed. **P7-07 publication: verified; implemented scope remains CONDITIONAL GO. Production: NO-GO; no main push or deployment.**
+7 -5
View File
@@ -1,6 +1,6 @@
# P7-07 — Documents interface
**Status: implemented-scope CONDITIONAL GO locally; latest affected frontend and native 13/13 pass, all 18 final images are reviewed and final hygiene passes. Commit and normal push follow.** This is the second boundary in the [approved handoff](../../phase-6/p6-05/PHASE7_HANDOFF.md#migration-order-and-commit-boundaries), following the [metadata contract](CONTRACT.md). It reuses existing resource owners and the Phase 4–6 design system.
**Status: implemented-scope CONDITIONAL GO; affected frontend and native 13/13 pass, all 18 final images are reviewed, hygiene passes and Documents publication is verified.** Separate P7-08 presentation work remains uncommitted; no clean-checkout or full-phase acceptance is implied. This is the second boundary in the [approved handoff](../../phase-6/p6-05/PHASE7_HANDOFF.md#migration-order-and-commit-boundaries), following the [metadata contract](CONTRACT.md). It reuses existing resource owners and the Phase 4–6 design system.
## Entry and bounded scope
@@ -8,7 +8,7 @@ The metadata contract was committed and normally pushed as `8e4db121ae0ec3f1637c
On **2026-10-16**, a fresh fetch confirmed development HEAD/origin still `8e4db12`, with only the untracked null-return `DocumentsPage.tsx` scaffold. No execution or product changes are inferred during the pause. Existing focused frontend regression runs precede implementation. The authoritative last full frontend run remains 573/89; the derived inventory before this interface is frontend739/94, browser304, backend1053. These are inventories, not new full-suite passing counts.
Later fetches at **15:52 and 15:55 UTC** fail because the configured remote host on port 443 is unreachable. The third fetch, **16:12:35.608743–16:12:56.824123**, exits **128** for the same connection failure; `remote-retry-20261016-1613/fetch-command.json` and `fetch.log` retain it. Fresh remote verification remains pending. The earlier entry receipt is not a claim of current remote identity; normal push and remote verification remain required.
Fetches at **15:52 and 15:55 UTC** fail because the configured remote host on port 443 is unreachable. The third fetch, **16:12:35.608743–16:12:56.824123**, exits **128** for the same connection failure; `remote-retry-20261016-1613/fetch-command.json` and `fetch.log` retain it. Remote verification is pending at those observations. The later verified recovery below supplies a separate dated receipt; cached refs are not substituted for it.
The authenticated `/documents` page sits under Career, with a new entry in the existing command palette and paired English/Bokmål labels. The approved index adds one route, bringing the inventory to **33 while preserving the original 32**. It uses the existing shell heading, semantic sections, table/mobile-card patterns, shared theme tokens and feedback infrastructure. No new renderer, editor, generic Document store, account upload bucket, mail persistence or dependency is introduced.
@@ -92,12 +92,14 @@ Required finite samples remain 320, 360, 390, 768, 1024, 1280, 1440 and 1920px,
## Preservation and remaining work
The additions derive frontend inventory **755/95** from **739/94**: 15 new Documents cases and one command case, one new suite. The earlier **754/95** inventory preceded the new query regression case. Eight new native cases pass the finite current-build run and derive browser inventory **312** from **304**; publication remains pending. Backend inventory stays **1,053**, inherited from the pushed contract. These are inventory calculations, not fresh full-suite pass counts; P7-12 retains the integrated acceptance run.
The additions derive frontend inventory **755/95** from **739/94**: 15 new Documents cases and one command case, one new suite. The earlier **754/95** inventory preceded the new query regression case. Eight new native cases pass the finite current-build run and derive browser inventory **312** from **304**; these Documents additions are now published. Backend inventory stays **1,053** at this checkpoint, inherited from the pushed contract. These are inventory calculations, not fresh full-suite pass counts; P7-12 retains the integrated acceptance run.
All **57 PRES groups remain 56 PARTIAL / C11 DEFERRED**. Preserve the original 32 routes alongside the approved new route, owner/tenant authorization, canonical Career Profile data, CV overrides/revisions, one-job CV associations and immutable package content/files. Fresh P2-D01 passes as an ordinary case on latest H6; neither the earlier contract nor prior bDQ run is substituted for it.
Final [static checks](evidence/ui-static-checks.json) pass at **2026-10-16 16:21 UTC**: secret scan, working/staged/phase whitespace, 19 documents / 518 local links, all57 groups and33 routes. Commit and verify the normal development push once remote access recovers. Retain every triaged contrast/manual qualification and the P7-11 missing-source copy finding. No actual MariaDB runtime, external provider delivery or fresh PDF corpus qualification is supplied by these UI tests. P5-13 remains withheld with **zero model qualification calls**; followMode stays deferred. Phase 8 is not implemented. **UI implemented-scope acceptance: CONDITIONAL GO locally; hygiene PASS, commit/push follow. P7-07 publication: pending. Production: NO-GO; main unchanged.**
Final [static checks](evidence/ui-static-checks.json) pass at **2026-10-16 16:21 UTC**: secret scan, working/staged/phase whitespace, 19 documents / 518 local links, all 57 groups and 33 routes. Subsequent commit/publication outcomes are recorded below. Retain every triaged contrast/manual qualification and the P7-11 missing-source copy finding. No actual MariaDB runtime, external provider delivery or fresh PDF corpus qualification is supplied by these UI tests. P5-13 remains withheld with **zero model qualification calls**; followMode stays deferred. Phase 8 is not implemented. **UI implemented-scope acceptance: CONDITIONAL GO; hygiene PASS and publication verified. Production: NO-GO; main unchanged.**
## Actual local commit and failed publication — 2026-10-16
Documents interface commit **`5a67ec3d3d5dc27298814b0a3f46540cb54ea3a3`** is safely recorded locally. Its [actual publication receipt](evidence/ui-publication.json) records the normal development push **16:22:30.090899–16:22:51.339211 UTC**, exit **128**, because `git.cesnimda.uk:443` could not be reached. No synchronization or remote acceptance is claimed. The previously verified remote development commit remains `8e4db12`; that is historical evidence. Main was not pushed. Implemented local scope remains CONDITIONAL GO; P7-07 publication is blocked. Independent P7-08 contract review and baseline checks can proceed, while P7-12 still requires every executed slice to be pushed before integrated acceptance.
Documents interface commit **`5a67ec3d3d5dc27298814b0a3f46540cb54ea3a3`** is recorded locally before its [first normal publication attempt](evidence/ui-publication.json), **16:22:30.090899–16:22:51.339211 UTC**, fails with exit 128 because `git.cesnimda.uk:443` is unreachable. The second attempt at **16:31:50.187856–16:32:11.434629** also fails with exit 128. Publication is blocked at those observations; historical `8e4db12` is not treated as current live identity. Both exact failed attempts remain in the chronology.
The later normal push **21:00:51.343381–21:00:53.589287** succeeds. At **21:01:11.788733 UTC**, direct development verification records local HEAD = origin development = live development = **`9dfea1226f57ba12b944e05e0e83fb2fea846131`**, containing implementation `5a67ec3`, publication documentation `84350b7` and the separate UTC repair. Local/origin/live main remain `27657f31131cd95d42f0e1290853ec9c9b3959a4`. The portable publication receipt retains the exact raw recovery path/hash. Known P7-08 notification presentation/native files remain unstaged work; synchronized refs do not mean a clean working tree or publication of that WIP. **P7-07 publication is verified; conditional manual/production qualifications remain.**
@@ -2,7 +2,7 @@
"schemaVersion": 1,
"checkpoint": "P7-07",
"recordedUtc": "2026-10-16T16:31:07.130956+00:00",
"status": "NORMAL_DEVELOPMENT_PUSH_FAILED_REMOTE_UNREACHABLE",
"status": "NORMAL_DEVELOPMENT_PUSH_RECOVERY_VERIFIED",
"localImplementationCommit": "5a67ec3d3d5dc27298814b0a3f46540cb54ea3a3",
"attempt": {
"branch": "codex/ui-redesign-phase4",
@@ -36,6 +36,86 @@
"main": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
"originMain": "27657f31131cd95d42f0e1290853ec9c9b3959a4"
},
"qualification": "Push fails before connecting to configured Git host port443. Cached refs are not current live identity. No main/force/deployment action. Source and finite evidence are safely committed; normal push/direct verification remains mandatory.",
"independentContinuation": "P7-08 read-only contract review and existing12/3 frontend baseline proceed safely. Presentation regression tests are in flight; no new producer/model/provider activation."
"qualification": "Both failed normal pushes and their exact raw evidence remain historical. A later normal push succeeds and direct development refs match at 2026-10-16T21:01:11.788733+00:00. Main remains unchanged. Separate presentation WIP means a clean working tree is not claimed.",
"independentContinuation": "P7-08 read-only contract review and existing12/3 frontend baseline proceed safely. Presentation regression tests are in flight; no new producer/model/provider activation.",
"initialStatus": "NORMAL_DEVELOPMENT_PUSH_FAILED_REMOTE_UNREACHABLE",
"updatedUtc": "2026-10-16T21:01:11.788733+00:00",
"subsequentFailedAttempts": [
{
"attempt": {
"head": "84350b71a67400cd62730e46bf05f06176bcd733",
"command": [
"rtk",
"proxy",
"git",
"push",
"origin",
"HEAD:refs/heads/codex/ui-redesign-phase4"
],
"startedUtc": "2026-10-16T16:31:50.187856+00:00",
"finishedUtc": "2026-10-16T16:32:11.434629+00:00",
"exitCode": 128,
"workingTreeQualification": "Uncommitted P7-08 regression tests are separate in-flight work; only the two P7-07 commits are being pushed."
},
"raw": [
{
"path": ".artifacts/phase7/p7-07/ui-publication-attempt-2/push-command.json",
"sha256": "1ad60dce0c76557ed1dbc82fe6084d5c6260bc4edc91b87e750350688cff6557",
"bytes": 466
},
{
"path": ".artifacts/phase7/p7-07/ui-publication-attempt-2/push.log",
"sha256": "0a7b0eafce9de8d8f7000dea9395e946d8064addbab3e455f88cb8b80d7935d8",
"bytes": 243
}
]
}
],
"publicationRecovery": {
"observedUtc": "2026-10-16T21:01:11.788733+00:00",
"receipt": {
"path": ".artifacts/phase7/p7-08/utc-push-receipt.json",
"sha256": "12f339239dfb6ef458d31ca6918555e4eb4ce35bc5dacfa3acd33cd34ebffd65",
"bytes": 1680
},
"publishedCommits": [
"5a67ec3d3d5dc27298814b0a3f46540cb54ea3a3",
"84350b71a67400cd62730e46bf05f06176bcd733",
"9dfea1226f57ba12b944e05e0e83fb2fea846131"
],
"localHead": "9dfea1226f57ba12b944e05e0e83fb2fea846131",
"originDevelopment": "9dfea1226f57ba12b944e05e0e83fb2fea846131",
"liveDevelopment": "9dfea1226f57ba12b944e05e0e83fb2fea846131",
"main": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
"originMain": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
"liveMain": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
"pushAttempt": {
"head": "9dfea1226f57ba12b944e05e0e83fb2fea846131",
"command": [
"rtk",
"proxy",
"git",
"push",
"origin",
"HEAD:refs/heads/codex/ui-redesign-phase4"
],
"startedUtc": "2026-10-16T21:00:51.343381+00:00",
"finishedUtc": "2026-10-16T21:00:53.589287+00:00",
"exitCode": 0,
"qualification": "Only completedDocuments/UTCcommits are pushed; presentation/native work remains unstaged. No main/force/deployment action."
},
"workingTreeAtObservation": [
" M job-tracker-ui/src/App.tsx",
" M job-tracker-ui/src/app-shell-notifications.test.tsx",
" M job-tracker-ui/src/components/NotificationsPopover.tsx",
" M job-tracker-ui/src/i18n/translations.ts",
" M job-tracker-ui/src/layout/AppShell.tsx",
" M job-tracker-ui/src/notifications-popover.test.tsx",
"?? job-tracker-ui/e2e/helpers/seed-operation.py",
"?? job-tracker-ui/e2e/phase7-notifications.spec.ts"
],
"cleanWorkingTree": false,
"qualification": "Committed Documents implementation, publication documentation and separate UTC repair are published. Development refs match at the recorded observation; separate notification presentation/native work remains unstaged WIP. This is not a clean-worktree, full Phase7, production or deployment acceptance."
},
"chronologyQualification": "recordedUtc, attempt, raw, cachedRefs and independentContinuation describe the initial failed publication. initialStatus preserves that decision; updatedUtc/publicationRecovery record the verified successor. Receipt paths/hashes identify immutable raw observations."
}