fix(ui): preserve application drafts and recovery states

This commit is contained in:
cesnimda
2026-10-13 23:27:16 +02:00
parent 627955afa9
commit 4c3254c472
19 changed files with 5388 additions and 118 deletions
+81
View File
@@ -0,0 +1,81 @@
# P7-06 — Embedded Application forms
**Embedded forms: CONDITIONAL GO; normal development push pending.** Latest affected55/4 PASS, native9/1 and15/1 final-build consumers retain the strict real-account language-save HTTP500 failure (RD11); it is not waived or rerun to replace the result. Overall P7-06 remains ongoing. This is the first of exactly three sequential P7-06 commits: embedded forms → inbox/read review → compose/send. No implementation hash or push receipt is assigned here. Optional P7-06F remains DEFERRED until its action/fallback decision exists.
The [entry](evidence/entry.json) retains the actual627955a Reminders receipt and the earlier fresh39/3 baseline atc723a4e with uncommitted Reminders work. Seven relevant captured sources remained unchanged through that baseline. The clean receipt and pre-change run are separate observations.
## Bounded repairs and preserved behavior
The existing `ApplicationAssets.tsx` owner retains loaded controls, dirty drafts and owned history after failed mutations. Its five initial reads expose explicit GET Retry; changing UI language retranslates without another asset GET or write. Archive Retry repeats the captured archive read; failed mutations remain deliberate original actions rather than an automatic replay.
Dirty Restore uses the shared confirmation and a synchronous mutation mutex; Cancel makes zero restore POSTs. AI Apply stays blocked while the parent Save is busy, and suggestion source/action is captured so changing the current action cannot relabel an earlier result. Five job-ID keyed children and unmount guards dispose old-job state and prevent old completions from copying into a new job, redirecting or invoking its saved callback.
The existing CV duplicate endpoint preserves `JobApplicationId` on both variants before explicit attachment. Consequently, a newer GET projection can differ from stale UI association state. When creation succeeds but attachment fails, the candidate retains that exact created ID and offers explicit attachment recovery, normalizing to one associated variant without another duplicate. This is finite local recovery, not transactionality or distributed idempotency. Actual image034 exposed misleading “could not create” copy after successful creation; the feedback now distinguishes attachment failure.
The shared RichText Tooltip is hidden only when Popper marks its reference hidden. Application forms, CV Editor and Career remain its three consumers. Final dialog work uses `DialogContent` as a named region with `tabIndex=0`, H3 subheads and both Restore Tooltips with `describeChild`, replacing the owner generic-label semantics. Latest native evidence proves keyboard PageDown scrolling. Updated scan totals are not inferred from this source change.
Retain the seven-section workspace, table, Router/history/aliases and renderer. One CV variant, letter source/action and additive owned history, bodyless restore/noExpectedVersion, the two-answer Notes encoding/clear behavior, P2-D01 frozen package bytes and archived binaries remain unchanged. No backend or schema contract was changed; RD21 last-writer/partial-write limits remain.
## Unit evidence and count provenance
| Observation | Executed outcome | Qualification |
|---|---|---|
| Pre-change baseline,11:39:16–27UTC |39/3: assets18+overlay18+helper3; no failed/pending/todo | Exact frozen entry capsule; not a clean627955a baseline |
| Eight strengthened cases,12:07:57–12:08:04UTC |Assets26:18 pass/8 fail | Meaningful RED for the existing defects; raw command/report retained in `forms/unit-red` |
| First candidate |46/47, then47/3 after scoping an old assertion | The global error locator became ambiguous because the AI read failure is now visible; the assertion retains its original intent rather than hiding the error |
| Two keyed-identity cases |49/3: assets28+overlay18+helper3 | GREEN-only additions; do not claim those two reproduced RED |
| Creation/attachment copy correction,16:56:29–48UTC |48 pass/1 fail | Strengthened existing assertion after actual visual review; raw prefix `p706-forms-copy-attachment-red-20261013-review-20261013T165629Z` |
| Corrected copy plus named controls |54/4 | Raw GREEN prefix `p706-forms-copy-attachment-green-20261013-20261013T170047Z` |
| Latest semantic candidate,17:09:04.624961–17:09:20.681746UTC |54/4: affected49/3 plus existing named controls5/1; zero failed/pending/todo | Raw prefix `p706-forms-final-semantics-green-20261013-20261013T170904Z`; no complete slice acceptance |
Raw prefixes above are under `.artifacts/phase7/current/unit`; each retains its JSON report, command and log. Ten new frontend cases/zero new suites derive **716/94**, not a fresh full frontend run. The five named-control cases already belong to the inherited whole suite and are not counted again. Nine new ordinary native cases (eight original plus a separate controlled503 case) derive **282 browser cases**, not an integrated total or282 fresh passes. Latest full573/89 frontend, backend1,033 and sidecar49 remain inherited; backend1,034 remains derived only.
## Native, backend and consumer evidence
| Run | Outcome | Retained limit |
|---|---|---|
| Native attempt1 |1 pass/7 fail | Exact failing traces/source/export in `.artifacts/phase7/p7-06/forms/attempt-1-F7dRaRLWo_pjz6zoPoAPk` |
| Native attempt2 |6 pass/2 fail | Exact capsule `attempt-2-_Hza-JrlN1-7iFYcv7mKU`; failures remain recorded |
| Native attempt3,16:48:57.993686–16:50:58.615845UTC |9/9 pass | Earlier candidate capsule `.artifacts/phase7/p7-06/forms/final/results.json`, SHA256 `4da6523e909f0a69cfead47e73cd094bb391b37d181e7efd05b5421919f6e322`; does not validate later semantic changes |
| Native attempt4,17:02:34–17:04:33UTC |8 pass/1 fail | Known real language-save HTTP500; `attempt-4-7rHcRydumjgHBrGRn7NZA/results.json`, SHA256 `5268cfd446ba5b91917c2ccc30c786584eb8d497278373f397a2e6d2c0501de1` |
| Latest semantic native,17:14:27.950279–17:16:29.233143UTC |8 pass/1 fail of9 | Build `xyh9FYyySEw1uIao4DveJ`; only unchanged strict real-account language-save204 expectation receives HTTP500 on EN (RD11). Keyboard PageDown scrolling passes; no rerun/waiver |
| Fresh current Jobs,17:19:43.987302–17:21:24.862279UTC |5 pass | Same current build; retained seven-section workspace consumer proof |
| Fresh current P2-D01,17:21:24.868267–17:21:36.805313UTC |1 ordinary pass | Same current build; native frozen-document preservation remains ordinary |
| Earlier RichText/workspace consumers,16:41:46–16:45:50UTC |Jobs5/P2-D01 ordinary1/CV4/Career11 pass | Previous build/as-run source evidence; actual CV PDF200 and unchanged RichText bytes through those lanes. CV4/Career11 are not relabelled as fresh current-build runs |
| Existing backend asset/package subset,16:18:00.184066–16:18:03.191603UTC |30/30, no-build | Same verified unchanged Release DLL; raw `.artifacts/phase7/current/backend-career/p706-forms-20261013T161800Z/command.json` and `career.trx`. No backend rebuild/full rerun |
Fresh final current-build evidence is **14 pass/1 fail of15** (forms8/1+Jobs5+P2-D01ordinary1). Including previous-build CV4 and Career11 gives **29 pass/1 fail of30 relevant cases**, with those build/source qualifiers retained. Repeated earlier Jobs/P2-D01 runs are not added again. Latest actual frontend remains54/4 at17:09UTC; these are finite affected/consumer counts, not whole-suite acceptance.
All native cases remain ordinary: no skip, expected failure, weakened real204 assertion, automatic retry or disabled rule is used. Actual HTTP500 occurred on repeated locale attempts with the unchanged DLL; the latest sole failure is EN. A passing run does not close RD11; retain diagnosis at P7-09. The separate controlled503 case proves only local dirty-draft retention, Toast feedback, exact language Retry and unchanged account language. It does not repair or replace the original real204 test.
The latest dialog semantics now have current-build native PageDown and workspace/frozen-document evidence, qualified by the retained RD11 failure. Final static/hygiene and current source/export evidence must be finalized before the normal development commit/push; no push hash or receipt is claimed here. The first forms slice is CONDITIONAL GO on that finite scope, while complete workflow human/device/provider/output and production acceptance remain unavailable.
## Visual/accessibility evidence and retained debt
The operator actually displayed/reviewed **all22 current forms PNGs** from `.artifacts/phase7/p7-06/forms/final-verified`:22/110 total images, with88 other retained images. Current creation-success/attachment-failure feedback now correctly describes the attachment failure. The earlier22/110 review that exposed the incorrect copy remains a separate observation; repeated images are not additional cases. Full-page sticky composites and the long360×5288 image scaled to139×2048 do not prove every pixel, viewport occlusion, real zoom or a physical device. Textarea autosizing remains; no short screenshot is substituted for long-form evidence.
Final verified capsule `.artifacts/phase7/p7-06/forms/final-verified/results.json` has SHA256 `28da994d574e819208d65edc756fac13eca0597a9d622bcd47a3eb488db7eea4`; captured `ApplicationAssets.tsx` has SHA256 `d3be34c85fd4ab8984356f5fdc8a5b741590120e4253f97246bf870486d027c1`. These identify the current reviewed evidence/source; final portable/static records and normal push observation remain separately pending.
Prior triage contains **55 scans,0 violations/749 incompletes**: new22 default+target-size0/162; Jobs8 WCAG0/89; CV12 WCAG0/121; Career13 default+target-size0/377. Exact vectors remain in `.artifacts/phase7/p7-06/forms/axe-triage-prior.json`, SHA256 `f24695b6deaa30798672f4c0485fb68fa536877da14fa1c4006df1fddf7f279a`. Contrast623 includes unknown ratio0 contexts and526 overlap-labelled contexts with empty related nodes; span-label, hidden-modal and frame-tested contexts retain their own conditions. Empty related nodes/ratio0 do not establish a cause, contrast ratio or AT acceptance.
Latest contextual triage is `.artifacts/phase7/p7-06/forms/axe-triage-final.json`, referenced by the [portable result](evidence/forms-results.json). The current forms **21 scans0/147** and Jobs **8 scans0/89** join earlier qualified CV12/121 and Career13/377, totaling **54 scans0/734**. Four Restore span labels and three DialogContent generic labels disappear across matched scans. The remaining eight-node reduction comes from the missing second real-locale capture after HTTP500, not improved contrast. Forty-two other generic span labels remain; modal/background, sandbox-frame and unknown contrast contexts still require manual qualification. No rule was disabled and no incomplete was treated as a pass.
The portable result verifies453 saved file references, all six pre-native sources,74 current export files and the unchanged backend DLL. A failed collector attempt with incorrectly named source paths remains an incomplete ignored `final-semantic` folder; it performed no tests and is not an acceptance capsule. `final-verified` is authoritative for this final observation. Current [static checks](evidence/forms-static-checks.json) and the separately observed successor push receipt complete the bounded evidence record.
## Parent aggregate identity repair after review
Read-only review found that the keyed answers child could still receive A's aggregate while navigating to B. This inherited parent gap allowed editing one B field to retain and later save A's other field. The original child-only tests supplied already-correct B props and did not cover that transition. A new ordinary parent/router test exposes the actual received props: its first run is18 passing/1 failing, with `43|Saved answer|Saved recruiter message` incorrectly present while B's GET is held.
The aggregate now projects only data whose ID matches the current job, the answers editor waits for that aggregate, and read generations invalidate previous job/locale/unmounted completions. Same-job refresh still retains the current editor and its dirty state. The unchanged18 parent tests plus the new case pass; all affected assets28/parent19/helper3/namedcontrols5 yield **55/4** at21:15:52.411907–21:16:08.617731UTC. An intermediate52/3 run accidentally named a nonexistent helper file; it did execute those52 cases and is retained, but is not evidence for the helper3. This one addition derives **717/94 frontend**, replacing716/94 only as a derived count.
A tenth native case exercises actual command-palette SPA navigation, a held B aggregate, absence of foreign draft fields, explicit one-field B save and real-HTTP readback of both jobs. Its final execution, export/source/static/push observations remain pending. Ten new ordinary cases would derive **283 browser**, without claiming an integrated run. Previous55-scan and latest54-scan observations above identify their actual earlier source/export; they do not prove this later parent change.
Generated Tailoring titles/details remain server English in Bokmål; raw version source/action enums remain P7-11 localisation residuals. User-authored text is not automatically translated. Existing frame-level translation-dependent reload, attachment ID0 and AI-text freshness remain separately scoped. RD21, M01–M12 human reader/device/software keyboard/zoom, fonts/photo/native print/other-browser/provider/release requirements stay open. All57 groups remain56 PARTIAL/PRES-C11 DEFERRED and32 routes; P5-13 remains withheld,06F deferred, production NO-GO/main27657f3 unchanged and Phase8 separate. Inbox/read review and confirmed compose safety work remain the next two sequential boundaries.
The first parent-change native observation is retained in `forms/attempt-6-parent-9sM6acEkOGxgN5fTRZXdE/results.json` (SHA25627517dce65e6b68e1d9c1268776df9ddc458b063701a076437ce20da2bb9d1f0):7 pass/3 fail at21:17:34.149961–21:19:12.484298UTC. The new fixture incorrectly expected201 when the company already existed (the endpoint correctly returned200); it now reuses the owned company ID and retains the job201 assertion. The frozen dialog check set scrollTop0 while keyboard PageDown animation was still running, observed8 and failed; it now verifies keyboard Home returns0 after actual PageDown. Neither changes frozen byte/persistence assertions. The third failure remains strict real locale204→500. Corrected test-only execution is pending; no failed run is discarded.
Final parent-source forms run at21:19:34.115654–21:21:37.836490UTC is **9 pass/1 fail of10**, retaining the ordinary first-Bokmål204→500 test. The new same-document navigation and exact two-job readback case passes; PageDown→Home and frozen HTML/file bytes pass. All23 current forms PNGs were actually displayed/reviewed, including the held B empty editor and saved B ownership views and the failed actual-language screenshot. Earlier22-image reviews remain separate. Affected and integrated counts remain distinct: latest frontend55/4; final count derivation717/94 and283 browser only.
The authoritative final capsule is `forms/parent-final/results.json`, SHA256e1ff6f5c9928a765630db3229b1ae88312e65cea82d24efabc16ccec6a817c1e, with23/111 final forms images actually reviewed. Final triage `forms/axe-triage-parent.json` SHA25651f6adcb2b205f0a983c73646864a53ba2b724a453217c3f5390d0520e35da67 records currentforms22/154 plus currentJobs8/89 and earlierqualifiedCV12/121,Career13/377:55scans0violations/741incomplete. Twenty matchedforms scans retain7semantic removals;2newB captures and2missingstrictlocale captures explain scope changes. This is not improved contrast. All current snapshots/74export files match;6of7pre-native files match, native fixture/Home changes explicitly qualified. Exportdigest e91f356cb09a8e828ad10e6497eb2927d5e7159b48907ddcd7132458486f9a1f. FreshJobs5 at21:21:45.248272–21:23:27.806820 andordinaryP2-D01 at21:23:27.812337–21:23:39.684013 PASS; earlier CV4/Career11 remain correct as-run qualifications. SourceWorkspace7a0fb891f2632b35a8267ca0143a68522334f20bd2b2eda57b3ed2661e357934, nativeb349b5190226b0d4b5e4cfd9a56d0bd5507c7ad5da328f11d5b38829cb271914. Final static/normal push observation is separate.
Final hygiene at21:26:32–35UTC passes tracked/untracked secret scan, working/staged/Phase7 whitespace,14document465relative-link checks,57groups and32original routes. Local development HEAD/origin still627955a after fresh fetch; main27657f3 unchanged. Normal development commit/push receipt follows in the inbox/read successor record, avoiding a self-referential commit hash. RD11 remains ordinary failing and mandatory; independent safe development can continue.
+46
View File
@@ -0,0 +1,46 @@
# 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.
[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.
## Fresh pre-change baseline
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 |
|---|---|---|
| 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 |
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.
## Preserved contracts
- 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.
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.
## Current disposition and retained gates
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.
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 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.
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.
### Final P7-06 embedded-forms observation
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.
@@ -0,0 +1,350 @@
{
"schemaVersion": 1,
"checkpoint": "P7-06",
"slice": "Embedded Application forms entry",
"acceptance": "ENTRY_RECORDED_EMBEDDED_FORMS_ONGOING_RUNTIME_ACCEPTANCE_PENDING",
"previousRemindersPush": {
"observedUtc": "2026-10-13T11:49:32.473200+00:00",
"branch": "codex/ui-redesign-phase4",
"head": "627955afa989d32fefa53f15da9ef3e0abf27038",
"originDevelopment": "627955afa989d32fefa53f15da9ef3e0abf27038",
"liveDevelopment": "627955afa989d32fefa53f15da9ef3e0abf27038",
"main": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
"originMain": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
"liveMain": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
"workingTreeClean": true,
"pendingPaths": [],
"commands": [
{
"command": [
"rtk",
"proxy",
"git",
"branch",
"--show-current"
],
"exitCode": 0,
"stdout": "codex/ui-redesign-phase4\n",
"stderr": "[rtk] /!\\ No hook installed — run `rtk init -g` for automatic token savings\n"
},
{
"command": [
"rtk",
"proxy",
"git",
"rev-parse",
"HEAD"
],
"exitCode": 0,
"stdout": "627955afa989d32fefa53f15da9ef3e0abf27038\n",
"stderr": "[rtk] /!\\ No hook installed — run `rtk init -g` for automatic token savings\n"
},
{
"command": [
"rtk",
"proxy",
"git",
"rev-parse",
"origin/codex/ui-redesign-phase4"
],
"exitCode": 0,
"stdout": "627955afa989d32fefa53f15da9ef3e0abf27038\n",
"stderr": "[rtk] /!\\ No hook installed — run `rtk init -g` for automatic token savings\n"
},
{
"command": [
"rtk",
"proxy",
"git",
"rev-parse",
"main"
],
"exitCode": 0,
"stdout": "27657f31131cd95d42f0e1290853ec9c9b3959a4\n",
"stderr": "[rtk] /!\\ No hook installed — run `rtk init -g` for automatic token savings\n"
},
{
"command": [
"rtk",
"proxy",
"git",
"rev-parse",
"origin/main"
],
"exitCode": 0,
"stdout": "27657f31131cd95d42f0e1290853ec9c9b3959a4\n",
"stderr": "[rtk] /!\\ No hook installed — run `rtk init -g` for automatic token savings\n"
},
{
"command": [
"rtk",
"proxy",
"git",
"ls-remote",
"origin",
"refs/heads/codex/ui-redesign-phase4",
"refs/heads/main"
],
"exitCode": 0,
"stdout": "627955afa989d32fefa53f15da9ef3e0abf27038\trefs/heads/codex/ui-redesign-phase4\n27657f31131cd95d42f0e1290853ec9c9b3959a4\trefs/heads/main\n",
"stderr": "[rtk] /!\\ No hook installed — run `rtk init -g` for automatic token savings\n"
},
{
"command": [
"rtk",
"proxy",
"git",
"status",
"--porcelain=v1"
],
"exitCode": 0,
"stdout": "",
"stderr": "[rtk] /!\\ No hook installed — run `rtk init -g` for automatic token savings\n"
}
]
},
"previousRemindersPushRaw": ".artifacts/phase7/p7-05/reminders/push-receipt.json",
"commitBoundaries": [
{
"order": 1,
"scope": "Embedded Application forms",
"status": "ONGOING",
"productOwner": "job-tracker-ui/src/components/ApplicationAssets.tsx"
},
{
"order": 2,
"scope": "Inbox/read review",
"status": "PENDING",
"productOwner": "Existing CorrespondenceInboxPage/GmailReviewPage owners"
},
{
"order": 3,
"scope": "Compose/send",
"status": "PENDING",
"prerequisite": "Confirm meaningful runtime RED and repair captured identity/save/delivery safeguards before acceptance"
}
],
"optionalFollowMode": {
"checkpoint": "P7-06F",
"status": "DEFERRED",
"requiredDecision": "Exact mode-to-draft/review action and fallback; never auto-send or auto-resend"
},
"baseline": {
"capturedUtc": "2026-10-13T11:39:11.302034+00:00",
"head": "c723a4e3032185da623d81ace241eec748506fc7",
"sourceCommitQualification": "This pre-change run occurred at c723a4e with uncommitted Reminders work. It is separate from the later clean 627955a push receipt; no clean-627955a baseline is claimed.",
"command": {
"command": [
"rtk",
"proxy",
"npm.cmd",
"test",
"--",
"--runInBand",
"--watchAll=false",
"--json",
"--outputFile=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\phase7\\current\\unit\\p706-forms-baseline-20261013-review-20261013T113916Z.json",
"src/application-assets.test.tsx",
"src/application-workspace-overlay.test.tsx",
"src/applicationWorkspace.test.ts"
],
"startedUtc": "2026-10-13T11:39:16.918910+00:00",
"finishedUtc": "2026-10-13T11:39:27.061883+00:00",
"exitCode": 0,
"counts": {
"numPassedTests": 39,
"numFailedTests": 0,
"numPendingTests": 0,
"numTodoTests": 0,
"numPassedTestSuites": 3,
"numFailedTestSuites": 0
}
},
"suiteCounts": [
{
"name": "application-workspace-overlay.test.tsx",
"passed": 18,
"failed": 0,
"pending": 0
},
{
"name": "application-assets.test.tsx",
"passed": 18,
"failed": 0,
"pending": 0
},
{
"name": "applicationWorkspace.test.ts",
"passed": 3,
"failed": 0,
"pending": 0
}
],
"reports": [
{
"source": ".artifacts/phase7/current/unit/p706-forms-baseline-20261013-review-20261013T113916Z.json",
"copy": ".artifacts/phase7/p7-06/forms/unit-baseline/p706-forms-baseline-20261013-review-20261013T113916Z.json",
"bytes": 15540,
"sha256": "6cd3a67d35f0172d3c7de32287a72c2f1fd3aee6b6bcee15474f7ceaeff3f81e"
},
{
"source": ".artifacts/phase7/current/unit/p706-forms-baseline-20261013-review-20261013T113916Z.log",
"copy": ".artifacts/phase7/p7-06/forms/unit-baseline/p706-forms-baseline-20261013-review-20261013T113916Z.log",
"bytes": 762,
"sha256": "627ec5ddc5b43fb6f1d36a2a6e06f8e96786b8f4efe96fab775884f60eff9a1c"
},
{
"source": ".artifacts/phase7/current/unit/p706-forms-baseline-20261013-review-20261013T113916Z-command.json",
"copy": ".artifacts/phase7/p7-06/forms/unit-baseline/p706-forms-baseline-20261013-review-20261013T113916Z-command.json",
"bytes": 753,
"sha256": "6745179da2994411470fbd8b014f5556272049699d43ecfde02c009eab497e96"
}
],
"sourceSnapshotRaw": ".artifacts/phase7/p7-06/forms/unit-baseline/source-snapshot.json",
"reportSnapshotRaw": ".artifacts/phase7/p7-06/forms/unit-baseline/report-snapshot.json",
"afterRunSourceCheckRaw": ".artifacts/phase7/p7-06/forms/unit-baseline/after-run-source-check.json",
"baselineSources": [
{
"source": "job-tracker-ui/src/components/ApplicationAssets.tsx",
"copy": ".artifacts/phase7/p7-06/forms/unit-baseline/ApplicationAssets.tsx",
"bytes": 33172,
"sha256": "69a58c2153951dfad94a42ef0dd0c662dc943f845313596dd4063e8b38f56aa6"
},
{
"source": "job-tracker-ui/src/application-assets.test.tsx",
"copy": ".artifacts/phase7/p7-06/forms/unit-baseline/application-assets.test.tsx",
"bytes": 16119,
"sha256": "971d9f5088379592b3a8d66909805a7541c1b5d531481ae79e85fb850e2af8c1"
},
{
"source": "job-tracker-ui/src/application-workspace-overlay.test.tsx",
"copy": ".artifacts/phase7/p7-06/forms/unit-baseline/application-workspace-overlay.test.tsx",
"bytes": 18663,
"sha256": "7315773906ae702f5fd93b2c941f7a46c7aeeaabdf798a963f7d38dba09b6313"
},
{
"source": "job-tracker-ui/src/applicationWorkspace.test.ts",
"copy": ".artifacts/phase7/p7-06/forms/unit-baseline/applicationWorkspace.test.ts",
"bytes": 1894,
"sha256": "bd068a208d40f782f66f77e6196378f4fa2a5be6f0eacd71e4f6271276e89362"
},
{
"source": "job-tracker-ui/src/i18n/translations.ts",
"copy": ".artifacts/phase7/p7-06/forms/unit-baseline/translations.ts",
"bytes": 321263,
"sha256": "d12724a6d4a61a15879e485316eb0227135f7218baa26ada4beaf4e12c4b9b9b"
},
{
"source": "job-tracker-ui/src/applicationWorkspace.ts",
"copy": ".artifacts/phase7/p7-06/forms/unit-baseline/applicationWorkspace.ts",
"bytes": 14534,
"sha256": "73b5b8c894e1ff053a41cc8c8beb6baf66ca03146abaec5866377602345f6981"
},
{
"source": "job-tracker-ui/src/views/ApplicationWorkspacePage.tsx",
"copy": ".artifacts/phase7/p7-06/forms/unit-baseline/ApplicationWorkspacePage.tsx",
"bytes": 31096,
"sha256": "26fc8d62b93ee3230842235d434dba97ce62b9ae1d6f38f3d735fbb4fbb749a4"
}
],
"afterRunSourceCheck": {
"checkedUtc": "2026-10-13T11:39:51.530341+00:00",
"allUnchanged": true,
"sources": [
{
"source": "job-tracker-ui/src/components/ApplicationAssets.tsx",
"beforeSha256": "69a58c2153951dfad94a42ef0dd0c662dc943f845313596dd4063e8b38f56aa6",
"afterSha256": "69a58c2153951dfad94a42ef0dd0c662dc943f845313596dd4063e8b38f56aa6",
"unchanged": true
},
{
"source": "job-tracker-ui/src/application-assets.test.tsx",
"beforeSha256": "971d9f5088379592b3a8d66909805a7541c1b5d531481ae79e85fb850e2af8c1",
"afterSha256": "971d9f5088379592b3a8d66909805a7541c1b5d531481ae79e85fb850e2af8c1",
"unchanged": true
},
{
"source": "job-tracker-ui/src/application-workspace-overlay.test.tsx",
"beforeSha256": "7315773906ae702f5fd93b2c941f7a46c7aeeaabdf798a963f7d38dba09b6313",
"afterSha256": "7315773906ae702f5fd93b2c941f7a46c7aeeaabdf798a963f7d38dba09b6313",
"unchanged": true
},
{
"source": "job-tracker-ui/src/applicationWorkspace.test.ts",
"beforeSha256": "bd068a208d40f782f66f77e6196378f4fa2a5be6f0eacd71e4f6271276e89362",
"afterSha256": "bd068a208d40f782f66f77e6196378f4fa2a5be6f0eacd71e4f6271276e89362",
"unchanged": true
},
{
"source": "job-tracker-ui/src/i18n/translations.ts",
"beforeSha256": "d12724a6d4a61a15879e485316eb0227135f7218baa26ada4beaf4e12c4b9b9b",
"afterSha256": "d12724a6d4a61a15879e485316eb0227135f7218baa26ada4beaf4e12c4b9b9b",
"unchanged": true
},
{
"source": "job-tracker-ui/src/applicationWorkspace.ts",
"beforeSha256": "73b5b8c894e1ff053a41cc8c8beb6baf66ca03146abaec5866377602345f6981",
"afterSha256": "73b5b8c894e1ff053a41cc8c8beb6baf66ca03146abaec5866377602345f6981",
"unchanged": true
},
{
"source": "job-tracker-ui/src/views/ApplicationWorkspacePage.tsx",
"beforeSha256": "26fc8d62b93ee3230842235d434dba97ce62b9ae1d6f38f3d735fbb4fbb749a4",
"afterSha256": "26fc8d62b93ee3230842235d434dba97ce62b9ae1d6f38f3d735fbb4fbb749a4",
"unchanged": true
}
]
},
"qualification": "39 passed/3 suites: assets18+overlay18+helper3, zero failed/pending/todo. All seven captured relevant sources remained unchanged through execution. Existing mocked Jest evidence is not a repair, native runtime acceptance or fresh whole-suite run."
},
"firstSliceAcceptanceRequirements": [
"Keep loaded dirty controls and owned history visible after failed save/restore; deliberate retry retains drafts.",
"Expose initial read error and explicit GET-only Retry.",
"Retranslate current locale without issuing resource reads or writes.",
"Confirm discarding dirty edits before Restore; cancellation performs no write.",
"Capture AI source/action context; synchronous Save/Apply/mutation guards prevent pending-save edit loss or suggestion misattribution."
],
"preservedContracts": [
"Existing seven-section Application workspace, routes, table and CV/document renderer.",
"One CV variant per job; current CV association and ownership semantics.",
"Cover-letter source/action and additive owned history.",
"Bodyless restore with no ExpectedVersion: retain RD21 limitations.",
"Existing two-answer Notes encoding and clearing behavior.",
"Native P2-D01/frozen package and archived binary byte contracts."
],
"confirmedComposeDependency": "Existing updateDraft clears delivery state/rotates identity; held draft save, incomplete dirty checks and Save/Send identity races require a coherent repair at the third approved boundary. Code-path findings are not passing runtime proof; no mail/provider/backend/schema change is claimed by entry.",
"countProvenance": {
"wholeFrontendDerivedOnly": "706/94",
"browserDerivedOnly": 273,
"backendDerivedOnly": 1034,
"latestWholeFrontend": "573/89 inherited",
"latestWholeBackend": "1033 inherited",
"sidecar": "49 inherited",
"integratedAcceptance": "P7-12 pending",
"p706Additions": "None claimed by this entry baseline"
},
"preservation": {
"groups": 57,
"statuses": {
"PARTIAL": 56,
"DEFERRED": 1,
"PASS": 0,
"FAIL": 0
},
"deferredGroup": "PRES-C11",
"currentRoutes": 32
},
"qualifications": [
"M01-M12 human/device acceptance remains NOT VERIFIED; M13/P5-13 is deferred and production-withheld.",
"Actual reader/device/browser zoom, deployed fonts/photo/native-print/other-browser, provider and release gates remain.",
"No first-slice native acceptance, full frontend/backend/browser rerun, model/provider/send activity, production deployment or Phase8 work is claimed."
],
"production": {
"main": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
"originMain": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
"liveMain": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
"status": "NO-GO",
"phase8": "No implementation"
},
"hashPolicy": "Baseline hashes describe exact captured raw bytes; portable entry is UTF8 LF."
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,104 @@
{
"schemaVersion": 1,
"checkpoint": "p7-06",
"status": "PASS",
"checkedUtc": "2026-10-13T21:26:35.976163+00:00",
"commands": [
{
"name": "secret-scan",
"command": [
"rtk",
"proxy",
"C:\\Users\\Connor\\AppData\\Local\\Programs\\Python\\Python312\\python.exe",
"-X",
"utf8",
"scripts/supply-chain.py",
"scan-secrets"
],
"startedUtc": "2026-10-13T21:26:32.660030+00:00",
"finishedUtc": "2026-10-13T21:26:35.270044+00:00",
"exitCode": 0,
"log": ".artifacts/phase7/current/static/20261013T212632Z/secret-scan.log",
"logSha256Raw": "c5a88d5ebdc042adba125c1eaacbe44f9f4a5c19898c0f195573c00d511aa28d"
},
{
"name": "working-whitespace",
"command": [
"rtk",
"proxy",
"git",
"diff",
"--check"
],
"startedUtc": "2026-10-13T21:26:35.270544+00:00",
"finishedUtc": "2026-10-13T21:26:35.365625+00:00",
"exitCode": 0,
"log": ".artifacts/phase7/current/static/20261013T212632Z/working-whitespace.log",
"logSha256Raw": "d2993bc68ad9a63f711c8f5473155e2ba00fdcd461220cc3849185f2f9ad93e6"
},
{
"name": "staged-whitespace",
"command": [
"rtk",
"proxy",
"git",
"diff",
"--cached",
"--check"
],
"startedUtc": "2026-10-13T21:26:35.366126+00:00",
"finishedUtc": "2026-10-13T21:26:35.464414+00:00",
"exitCode": 0,
"log": ".artifacts/phase7/current/static/20261013T212632Z/staged-whitespace.log",
"logSha256Raw": "d2993bc68ad9a63f711c8f5473155e2ba00fdcd461220cc3849185f2f9ad93e6"
},
{
"name": "phase7-whitespace",
"command": [
"rtk",
"proxy",
"git",
"diff",
"--check",
"b5319981ad3d1bd635daff861453d23c0de5320b"
],
"startedUtc": "2026-10-13T21:26:35.464414+00:00",
"finishedUtc": "2026-10-13T21:26:35.607563+00:00",
"exitCode": 0,
"log": ".artifacts/phase7/current/static/20261013T212632Z/phase7-whitespace.log",
"logSha256Raw": "d2993bc68ad9a63f711c8f5473155e2ba00fdcd461220cc3849185f2f9ad93e6"
}
],
"untrackedSecretScan": {
"files": 0,
"findings": 0
},
"documentation": {
"files": 14,
"relativeLinks": 465,
"errors": []
},
"preservation": {
"groups": 57,
"statuses": {
"PARTIAL": 56,
"PASS": 0,
"FAIL": 0,
"DEFERRED": 1
},
"originalRoutesPreserved": true,
"currentConcreteRoutes": 32
},
"production": {
"main": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
"originMain": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
"status": "NO-GO",
"qualification": "Local fetched refs; direct push observation recorded separately."
},
"hashPolicy": "Portable JSON UTF8 LF; raw log hashes measure exact saved bytes.",
"limits": [
"Pattern scanner skips binary and files over2MiB; not historical Git/production secrets.",
"Local links check target existence, not URL/heading anchors.",
"Static evidence is not runtime/manual/device/provider/production acceptance."
]
}