fix(ui): preserve inbox context and review recovery

This commit is contained in:
cesnimda
2026-10-14 07:14:50 +02:00
parent 4c3254c472
commit a791e353b0
19 changed files with 2852 additions and 227 deletions
+36 -29
View File
@@ -1,46 +1,53 @@
# P7-06 — Remaining Application forms and global correspondence
**Embedded forms: CONDITIONAL GO; final static checks and normal push pending. Overall P7-06 remains ongoing.** The [bounded forms report](FORMS.md) records repairs, meaningful failures and finite evidence, including the unchanged strict language-save HTTP500 failure (RD11). Follow the exact [approved handoff](../../phase-6/p6-05/PHASE7_HANDOFF.md#migration-order-and-commit-boundaries). P7-06 has exactly three sequential implementation commits: embedded forms, inbox/read review, then compose/send. Optional P7-06F remains **DEFERRED** until its exact mode→draft/review action and fallback are decided.
**Overall P7-06: ongoing. Embedded forms: implemented-scope CONDITIONAL GO, committed and pushed. Inbox/read review: bounded CONDITIONAL GO; final static checks and normal push pending. Compose/send: next mandatory boundary.**
[Entry evidence](evidence/entry.json) records the actual Reminders normal push `627955afa989d32fefa53f15da9ef3e0abf27038`, directly observed2026-10-13 11:49:32.473200UTC: localHEAD=origin=live development, clean worktree at observation, local/origin/live main unchanged `27657f31131cd95d42f0e1290853ec9c9b3959a4`. P7-05 implemented scope is CONDITIONAL GO. Its push adds no new runtime, human or production acceptance.
Follow the exact [approved handoff](../../phase-6/p6-05/PHASE7_HANDOFF.md#migration-order-and-commit-boundaries). P7-06 has three sequential implementation boundaries: embedded forms → inbox/read review → compose/send. Optional P7-06F remains **DEFERRED** until its exact mode→draft/review action and fallback are decided.
## Fresh pre-change baseline
## Current checkpoint status
The existing affected Jest baseline passes **39 cases/3 suites**: Application assets18, workspace overlay18 and workspace helper3, with zero failed, skipped/pending or todo cases. It ran2026-10-13 11:39:16.918910–11:39:27.061883UTC at HEAD `c723a4e3032185da623d81ace241eec748506fc7` with uncommitted Reminders work. All seven captured relevant sources remained unchanged through the run. This earlier source/run capsule is separate from the later clean627955a receipt.
Exact ignored capsule: `.artifacts/phase7/p7-06/forms/unit-baseline`. Its raw JSON report is `p706-forms-baseline-20261013-review-20261013T113916Z.json`, SHA256 `6cd3a67d35f0172d3c7de32287a72c2f1fd3aee6b6bcee15474f7ceaeff3f81e`. Portable entry retains the command, source hashes, raw report descriptors and after-run source equality. Existing mocked tests establish a baseline; they do not establish a repair or native acceptance.
## Sequential boundaries and required proof
| Order | Existing owner and bounded work | Required exit |
| Boundary | Current result | Evidence and remaining work |
|---|---|---|
| 1 — Embedded forms | `ApplicationAssets.tsx`; retain the seven-section workspace, table, routes and renderer. Correct loaded-state/error/retry/dirty/AI review presentation and synchronous operation ownership in this owner | Meaningful RED and focused unit/native proof for read error→GET-only Retry, loaded dirty save/restore failure, long letter/answers/history, dirty Cancel/Restore, locale change without resource reads/writes and held Save/AI Apply/action context. Preserve current data/readback and frozen package bytes |
| 2 — Inbox/read review | Existing CorrespondenceInboxPage/GmailReviewPage and review alias; retain list/detail/filter/page/back/provider ownership | Native populated/empty/loading/error/retry/foreign cases, filters/pages and detail→Back context, keyboard/focus/reflow and explicit review choices; no compose persistence restructuring |
| 3 — Compose/send | Existing draft revision, confirmation and delivery owners; repair the [confirmed compose safety dependency](../DEBT.md#p7-06-confirmed-compose-safety-entry-dependency) coherently at this boundary | Meaningful runtime RED, captured-identity/synchronous Save–Send protection, complete dirty fields, revision/stale-conflict recovery, explicit confirmed send, uncertain-delivery protection and deliberate definitive-failure new attempt; no automatic send/resend |
| Embedded Application forms | Implemented-scope **CONDITIONAL GO**; normal push verified | [Forms report](FORMS.md), [portable results](evidence/forms-results.json). Commit `4c3254c472871d1cac05abcef502feb4a1be435b`; RD11 and manual qualifications remain |
| Inbox/read review | Bounded **CONDITIONAL GO**; static checks and normal push pending | [Inbox report](INBOX.md), [entry evidence](evidence/inbox-entry.json). Latest affected units **42/5 PASS**, final native **8/8 PASS**, app/browser TypeScript, lint and build pass; manual/provider/reliability qualifications remain |
| Compose/send | **Not implemented at this boundary** | Repair the [confirmed safety dependency](../DEBT.md#p7-06-confirmed-compose-safety-entry-dependency) coherently after the inbox slice. Preserve draft revisions, explicit confirmation, uncertain delivery and deliberate failed-attempt recovery |
The first slice entered with confirmed code-path findings: mutation errors hide loaded dirty controls/history; initial GET failures lack Retry; locale changes trigger reads; dirty Restore has no confirmation; AI Apply during parent Save can lose edits and a mutable action can misattribute its suggestion. [FORMS.md](FORMS.md) records repairs, exact operation/identity guards and attachment recovery. Latest54/4 units pass. Current buildxyh9FYyySEw1uIao4DveJ native8/1 retains only the strict real-account language-save204→HTTP500 EN failure; keyboard PageDown passes. Fresh current Jobs5/P2-D01ordinary1 give14pass/1fail of15; previous-build CV4/Career11 extend the relevant count to29pass/1fail of30, retaining their as-run source/build qualifiers. Final static/push proof is pending; RD11 is not waived or closed.
The forms push was observed on **2026-10-13 at 21:27:19.353249 UTC**: clean local HEAD = origin = live `codex/ui-redesign-phase4`. Local/origin/live `main` remained `27657f31131cd95d42f0e1290853ec9c9b3959a4`. This receipt establishes source synchronization; it does not add human or production acceptance.
## Preserved contracts
## Completed forms evidence
- One CV variant per application; current source, association and tenant/resource boundaries.
- Cover-letter source/action and additive owned history; dirty discard remains deliberate.
- Bodyless restore without ExpectedVersion; [RD21](../DEBT.md) remains open rather than becoming a hidden concurrency rewrite.
- The two existing application answers use their current Notes encoding and clearing behavior.
- Draft/frozen packages, archived attachments and native P2-D01 byte proof remain unchanged.
- Existing shared MUI/theme/state/confirm/error/i18n owners; no generic Documents persistence or second renderer.
The forms slice preserves the seven-section workspace, CV cardinality and associations, existing letter/answer encoding, additive history, owned attachments and frozen package bytes. It adds generation/identity guards, durable GET-only recovery, deliberate dirty Restore confirmation and synchronous Save/AI Apply ownership. The later aggregate repair prevents one job's drafts from populating another job while its read is pending.
Follow EN/Bokmål, light/dark, narrow/long forms, density, keyboard/focus/error and relevant viewport/zoom requirements from the handoff. Capture exact source/run artifacts, inspect final images and triage all-enabled axe vectors without replacing applicable human/device checks.
Latest affected frontend tests pass **55 cases/4 suites**; the unchanged backend subset passes **30 cases** on the same Release DLL with `--no-build`. Final forms build `9sM6acEkOGxgN5fTRZXdE` records **9 pass/1 fail of 10** native cases. The strict actual Bokmål language save expected HTTP204 and received HTTP500: **RD11 remains an ordinary failure**. Fresh Jobs5 and ordinary P2-D01 give **15 pass/1 fail of 16** on that build. Qualified earlier-build CV4/Career11 extend the relevant observation to **30 pass/1 fail of 31**; they are not fresh current-build executions.
## Current disposition and retained gates
All **23/111 latest forms PNGs** were displayed and reviewed; the other 88 retained consumer images were not reviewed in that continuation. Across the qualified forms/Jobs/CV/Career lanes, **55 recorded axe scans** contain **0 violations/741 incomplete nodes**. Raw vectors and source/build limits remain in the forms report. Missing locale captures and changed scan scope do not establish contrast improvement. App/browser TypeScript, lint, build and finite static checks passed before the verified forms push.
All57 preservation groups remain **56 PARTIAL /PRES-C11 DEFERRED** and32 routes. Entry frontend **706/94**, browser **273** and backend **1,034** are **derived only**. Latest full frontend573/89, backend1,033 and sidecar49 remain inherited; P7-12 owns fresh integrated regression. No P7-06 additions are claimed by this baseline.
## Inbox/read scope
The forms slice adds10 frontend cases/zero suites and9 ordinary browser cases, deriving **716/94 frontend** and **282 browser cases** only. Latest affected54/4 includes existing named controls5/1, which are not counted again. Existing backend30/30 no-build and qualified RichText/workspace consumer evidence do not establish a new whole-suite run or complete forms acceptance. All22 current forms PNGs from `final-verified` were actually displayed/reviewed:22/110 total, with88 other retained images; corrected attachment-failure copy is confirmed. The earlier22/110 review remains separate. Sticky composites/scaled long images retain pixel/occlusion/zoom/device limits. Prior55 scans0/749 stay qualified; no new axe total is inferred. Final portable/static/hygiene/push records remain pending, with production NO-GO.
The second slice retains existing owner-paginated correspondence, detail/provider fallback, URL filters/pages, legacy alias and job Back context. It reuses shared surfaces, semantic headings, feedback and focus patterns. Read ownership prevents late or unrelated results from changing the active query; explicit recovery retains drafts and does not replay a saved decision POST.
The current reviewed capsule `.artifacts/phase7/p7-06/forms/final-verified/results.json` has SHA256 `28da994d574e819208d65edc756fac13eca0597a9d622bcd47a3eb488db7eea4`; captured `ApplicationAssets.tsx` has SHA256 `d3be34c85fd4ab8984356f5fdc8a5b741590120e4253f97246bf870486d027c1`. [FORMS.md](FORMS.md) retains the finite current/prior-source and visual qualifications.
The saved correspondence contract includes owned messages associated with jobs in Trash. The native oracle preserves all **56 owned messages**, exact ordering, pages **50/6**, owned trashed-message detail and foreign-resource denial. The earlier expected total 55 was a false policy assumption, retained as failed evidence rather than represented as a backend regression.
M01–M12 remain NOT VERIFIED. Actual reader/device/software keyboard/browser zoom, deployed fonts/photo/native print/other browser, provider and release qualifications remain. P5-13 stays withheld; P7-06F stays deferred; production remains **NO-GO**, main unchanged and Phase8 has no implementation. Embedded forms continue first; inbox/read review and compose/send remain separate later commits.
See [INBOX.md](INBOX.md) for meaningful RED/GREEN progression, the final-run boundary and provider-fixture limits. Compose persistence and send behavior remain the third slice.
### Final P7-06 embedded-forms observation
Final inbox build `uhKavi8_u6PrcEm2rZ1On` ran all eight native cases on 2026-10-14 at 05:09:27.486825–05:10:16.147321 UTC, with zero failed/skipped/flaky cases. All 16 captured pre/post sources match. All 20 latest PNGs were displayed and reviewed; all20 all-enabled axe scans record 0 violations/84 incomplete nodes. The incompletes require human contrast assessment, and full-page image review retains narrow/sticky/zoom/device limits. Strict real language HTTP204 passes in this fixture; separately reproduced RD11 remains intermittent and undiagnosed.
Final embedded-forms implemented scope is **CONDITIONAL GO**, normal push pending. The matching aggregate/generation repair resolves the reviewed cross-job draft leak: ordinary parent RED18/1, latest affected **55/4 PASS** and actual SPA/heldB/exact two-job readback PASS. Final parent build9sM6acEkOGxgN5fTRZXdE has **9PASS/1FAIL of10** (unchanged strict actual NB language204→500/RD11); fresh Jobs5/P2-D01ordinary1 give **15PASS/1FAIL of16**, qualified earlier CV4/Career11 give **30PASS/1FAIL relevant31**. Backend30 sameDLL/no-build; app/browser types/lint/build PASS. All23/111 current forms PNGs actually reviewed, 55 recorded axe scans0/741 (current22/154+Jobs8/89; earlierCV12/121+Career13/377), full incomplete contexts pending human qualification. See [portable forms result](evidence/forms-results.json). +11frontend/0suites derives **717/94**; +10browser derives **283**, no integrated run. All57 groups56PARTIAL/C11DEFERRED and32routes, P513withheld/06Fdeferred/main unchanged/productionNO-GO. Inbox/read and compose/send remain; Phase8 not started.
## Count reconciliation
| Inventory | Entry | Forms additions | Inbox additions | Current derived total |
|---|---:|---:|---:|---:|
| Frontend cases/suites | 706/94 | +11 cases/+0 suites | +12 cases/+0 suites | **729/94** |
| Browser cases | 273 | +10 | +8 | **291** |
| Backend cases | 1,034 | +0 | +0 | **1,034** |
These are **derived inventories**, not a fresh integrated pass count. Latest actual whole frontend **573/89**, backend **1,033** and sidecar **49** remain inherited. P7-12 requires fresh integrated regression and an explanation of every changed count.
## Preservation and remaining gates
All **57 preservation groups remain 56 PARTIAL / PRES-C11 DEFERRED**, with **32 routes** retained. Current forms and inbox evidence narrows particular workflow risks; it does not mark entire groups complete. Preserve Career Profile/CV scope, frozen packages, original paging/search semantics and server-side authorization. Bodyless restore without ExpectedVersion and partial-write behavior remain under RD21.
Compose/send must establish captured draft identity, synchronous Save–Send protection, complete dirty-field handling, revision/conflict recovery, explicit confirmed send, uncertain-delivery protection and a deliberate new attempt after definitive failure. Do not automatically send or resend. No generic Documents persistence or second renderer belongs in this boundary.
M01–M12 remain **NOT VERIFIED**. Actual screen-reader, physical touch/software keyboard, real zoom, provider, fonts/photo/native print and release evidence remain qualified. RD11 stays open; P5-13 stays withheld; P7-06F stays deferred. **Production: NO-GO; main unchanged. Phase 8 implementation: none.**
Final inbox hygiene PASS observed2026-10-14 05:14:23UTC: secret and working/staged/phase whitespace gates pass,15 docs/474 local links resolve,57 groups and32 routes retained. Normal development push pending; main unchanged.