feat(auth): migrate account security presentation

This commit is contained in:
cesnimda
2026-10-11 21:16:05 +02:00
parent 8ad720da5d
commit ad7b4196af
22 changed files with 35532 additions and 143 deletions
+2
View File
@@ -7,6 +7,8 @@ Entry is the completed Phase6 successor receipt `b5319981ad3d1bd635daff861453d23
| Logical unit | Commit | Validation / push receipt |
|---|---|---|
| P7-00 inventory, preservation/debt and unchanged-source baseline | `27c54146ad6f9059295d169b533db7b1b6689210` | [P7-00](p7-00/README.md), [fresh finite baseline](p7-00/evidence/baseline.json) and [static checks](p7-00/evidence/static-checks.json); inherited runtime explicitly separated. Normal development push verified2026-10-11 14:44:45UTC: localHEAD=origin=live development27c5414; local/origin/live main unchanged27657f3; clean worktree. P7-01 entry dependency satisfied |
| P7-01 public authentication sub-slice | `8ad720da5db5999ecda787575dc45621d18a5498` | [Public report](p7-01/README.md#public-authentication-implementation-and-acceptance), [immutable-source/runtime evidence](p7-01/evidence/public-auth-results.json): affected61/61, native22/22, isolated SMTP2/2, SMTP helper6/6 and unchanged-backend auth subset87/87; final types/lint/build pass. Public slice CONDITIONAL GO with31 contrast incompletes/manual/provider conditions. Normal push verified2026-10-11 18:50:24UTC: localHEAD=origin=live development8ad720d; local/origin/live main27657f3 unchanged. No completed public work remains uncommitted; independent account work in flight. Whole P7-01 remains PENDING |
| P7-01 account identity/security and final checkpoint outcome | PENDING normal account commit/push | [Account report](p7-01/README.md#account-identity-and-security-implementation), [frozen account source/runtime](p7-01/evidence/account-results.json): full573/89 (+52/+4 from521/85), native account6/public22/auth-boundaries10, types/lint/build all pass; actual eight final PNGs inspected. Implemented P7-01 scope CONDITIONAL GO, account85/public31 incompletes and manual/provider/production gates retained;57/32 statuses unchanged. Final staged finite hygiene and actual account push/direct remote receipt pending; no push inferred. Source/export frozen independently from public8ad720d |
Hashes and remote receipts are appended by a successor to avoid self-referential commit hashes. Each row records actual commands/results, source scope, remaining conditions, normal push and immediate direct remote identity; partial or blocked evidence is recorded without inventing success. Subsequent receipt metadata is a separately reviewable documentation unit, with its own hash reported after push rather than an endless receipt chain.
+14
View File
@@ -67,6 +67,20 @@ Settled touch still retains contrast4 and hidden-focus1 (#root) incomplete; it i
Use the established [accessibility plan](../phase-3/ACCESSIBILITY_PLAN.md): WCAG2.2 AA project target, ordinary text4.5:1/large text3:1/control-focus3:1, visible focus/reflow/labels/errors/live state/reduced motion;44px physical-touch aim distinct from AA24px/spacing rules. No automated conformance certification.
### P7-01 public disposition
[Public results](p7-01/evidence/public-auth-results.json) are pushed in8ad720d with direct development equality verified2026-10-11 18:50:24UTC, main unchanged. Its22 new all-enabled scans independently retain0 violation nodes/31 `color-contrast` incomplete nodes, all background-overlap checks on input/button contexts. Keep this separate from the319 mixed-scope Phase6 snapshots; repeated nodes are not unique defects or a comparative conformance score. M09 spoken errors/status/route announcements and M11 contextual contrast/forced colors remain mandatory; human reader/browser zoom/physical input are not supplied by the eight inspected PNGs or native geometry.
RD25 has new **bounded local proof**: actual application registration/SMTP verification/password reset/replay and old-session invalidation pass in fresh synthetic SQLite/keys with a loopback mail capture server. Actual production mail, OAuth/Turnstile/provider consent/privacy/reconnect and delivery remain unverified. Existing English server-authored auth errors in NB samples and possible duplicate route/error announcements remain explicit reader/localisation qualifications. RD06/RD07/RD25 are not closed. At the public gate account identity/security/session/source-isolation work remained in flight; the later conditional disposition is below. No deferred AI activation is implied.
RD28 public runtime provenance is retained in the immutable `.artifacts/phase7/p7-01/public-final/` snapshot, including earlier failed SMTP attempts and final export BUILD_ID. Its manifest file references point to that snapshot while raw reports preserve original internal absolute execution paths; commands/hashes/counts are unchanged. This does not erase the separate historical Phase6 attachment-loss qualification.
### P7-01 account conditional disposition
[Account results](p7-01/evidence/account-results.json) add fresh573/89 frontend, account6/public22/auth-boundaries10 and types/lint/build pass. The account8 all-enabled scans retain0 violation nodes/85 incomplete occurrences: contrast84 (74 overlap/8 short-text/2 partial overlap) and hidden-focus1 targeting`#root` in the failed revoke-others modal. Actual keyboard trap/return and modal-local error/retry assertions pass; **M09/M11 remain required**, including spoken state and contextual contrast/forced colors. The account-build public22 scans separately retain31 contrast incompletes. Keep these30/116 current finite occurrences separate from the319/2,473 inherited mixed-scope Phase6 records and earlier pre-copy account8/84.
Copy fixes following actual visual review truthfully describe stored profile CV text and natural Microsoft unavailability, without changing Career CV labels, fetching the CV library or exposing setup variables to the product user. Identity-only persist/reload and canonical/sibling no-write evidence do not close Career concurrency/import/override/render/production debts. Fresh full573 supersedes the historical pre-copy571 runtime count; no test is skipped to obtain acceptance. All eight final post-copy PNGs were actually inspected and implemented scope is CONDITIONAL GO; finite hygiene/account push receipt remains pending. Exact runtime/attempt/build/unit/source/export evidence is frozen under `.artifacts/phase7/p7-01/account-final/`, with206 path/hash references verified. The immutable public static record is separate from the latest account static checks. RD06/RD07/RD25 and all manual/provider/release obligations stay open.
## Evidence and production limits
The early Phase6 runner retained exact failure commands/reports/logs but reused result folders, so not all old screenshots/traces/error-context paths remain resolvable. Later runs archive the whole previous output; current successful attachments have exact provenance. Preserve that limit rather than claiming complete old failure-trace retention. Native Windows Chromium/local SQLite/synthetic fixtures and finite PDF oracles do not establish deployed Linux, human semantics, physical devices, real provider quality or production load.
+27
View File
@@ -72,6 +72,33 @@ The migration-owner column assigns the approved slice while retaining completed
## Route and acceptance invariants
### P7-01 public scoped evidence, no full-group upgrade
[Public source/runtime results](p7-01/evidence/public-auth-results.json) and [acceptance/limitations](p7-01/README.md#public-authentication-implementation-and-acceptance) are pushed in8ad720d; immediate localHEAD=origin=live development equality was verified2026-10-11 18:50:24UTC, main unchanged. All57 statuses remain0 PASS/56 PARTIAL/0 FAIL/1 DEFERRED. At that public gate the account/private-tree migration was a separate in-flight boundary; its later finite result is recorded below.
| Protected groups | Fresh finite public evidence | Remaining mandatory boundary |
|---|---|---|
| E02 | Retained33 Login tests; real registration/verification/reset/replay and old-password denial through the application Identity + loopback SMTP path; invalid/missing link and no-write local validation; remember-me/return semantics retained | Actual production mail, Turnstile, authenticator/provider/human and broader expiry/rate-limit combinations; local SMTP is not external delivery acceptance |
| E03 | Shared real provider sign-in consumers remain covered by Login tests; relink retry returns to the configured public policy; no provider call or protocol change | Actual grants, origin/popups/cancellation/provider account-link acceptance; finite account-card proof is below; actual provider grant/popups remain unqualified and mailbox grants remain separate |
| E05/E09 | Real password reset invalidates the earlier authenticated session; failed sign-in retains draft and exact protected return before explicit successful retry | Finite account session/revoke/cancel/modal/private-disposal proof is below; broader account switching/BFCache/offline/old-bundle/deployed cases still require evidence |
| E06 | Missing/invalid email-change confirmation remains named, recoverable and owner-command bound; real password recovery readback is passing | Finite identity-only save/canonical/sibling and retained-password recovery proof is below; complete email-change success/cancel and avatar crop/remove qualification remains |
| E08 | EN/NB/light/dark finite public frames, named main/H1, labelled errors/focus/status/reflow;22 all-enabled scans0 violation nodes and31 retained contrast incomplete nodes | Full cross-product, actual spoken state/name/error and contrast/forced-color/zoom/physical keyboard/device proof; existing server-authored English errors retained explicitly |
The22 public native cases and two isolated recovery cases are new separate packs; affected61 unit cases contain38 inherited cases plus23 additions. They are not summed as new full-suite evidence. Public product/pricing E01, shell navigation E07 and account setup E04 are not declared migrated or complete by this public result.
### P7-01 account scoped evidence, no full-group upgrade
[Account working-tree results](p7-01/evidence/account-results.json) and [account report](p7-01/README.md#account-identity-and-security-implementation) record fresh573/89 full frontend, account6/public22/auth-boundaries10 and types/lint/build pass. Actual eight-image/context review establishes implemented account scope CONDITIONAL GO; final finite hygiene and normal account push/receipt remain pending. All57 statuses and32 whole-route qualifications remain unchanged.
| Protected groups | Fresh finite account evidence | Remaining mandatory boundary |
|---|---|---|
| E02/E03/E06/E09 | Real default Google/Microsoft account consumers retain current-password/no-exchange/cancel/error/retry/unlink/forced-sign-in safeguards; explicit UI-locale dates. Actual identity PUT204/reload sends only four identity fields and keeps separate email/password/provider owners | Actual provider popup/grant/reconnect/real delivery and full avatar/email-change/device/human combinations remain qualified |
| C01/C07 | Four native identity samples read canonical Career data and two sibling CVs before/after save/reload and assert no canonical/CV browser write. Stored-text status is labelled truthfully without a CV-library fetch | Full Career save/import/history/concurrency and CV overrides/render/frozen/PDF acceptance remain their own migrations and integrated gate |
| E04/E08 | Unknown/failed2FA status is read-only until explicit status retry; known enabled/disabled/recovery/trusted-device cases retain ordinary unit assertions. Named H2 sections and eight finite geometry/axe contexts are retained | Real authenticator/device/reader/zoom and contextual contrast/focus qualification; account8 scans retain0 violation nodes/85 incompletes |
| E05/E08/E09 | Real multiple-login sessions prove canceled confirmation/no write, modal-local failed revoke, keyboard trap/cancel restoration, deliberate retry/readback/other-session401 and current logout/private-tree disposal; existing10 auth/isolation browser boundaries pass | Deployed BFCache/offline/old-bundle and full real-device/assistive combinations; no security protocol or whole-group acceptance inferred |
Full frontend521→573 adds52 cases across four new suites with no removed/renamed cases: public23 and account29 (providers12, card presentation7, flows5, Profile5). Focused subsets and native packs overlap and are not added to that total. Earlier571 frontend and pre-copy native runs remain historical; the exact post-copy build/source identity is in the account manifest. P2-D01/sidecar/backend/rendering execution remains inherited here.
[INVENTORY.md](p7-00/INVENTORY.md#current-route-coverage) reconciles exactly32 current App patterns against [route acceptance](../phase-5/p5-15/ROUTE_ACCEPTANCE.md); all whole-route groups remain PARTIAL. Preserve Board/Application/mail aliases and actual query/hash/state behavior, section/sub precedence, safe internal from, numeric navigation-helper output, capture consumption, focusJobId and provider/token destinations. No Documents/Notifications/aggregate Admin/new Career destination is inferred without contract/content evidence.
P2-D01 remains the ordinary passing [frozen-workspace test](../../../job-tracker-ui/e2e/redesign-preservation.spec.ts#L73), retaining native capture/readback/archive bytes/canonical/sibling proof. No skip, expected-failure marker or relaxed oracle may replace it. Preserve server roles/account/tenant/owned-resource denial; canonical Career versus CV overrides; revision/conflict/recoverable drafts; private/public PDF admission/revocation; unchanged physical pagination; immutable packages; existing grounding/proposal/stale guards and Production C11 withholding.
+5 -1
View File
@@ -9,7 +9,7 @@ The entry commit is `b5319981ad3d1bd635daff861453d23c0de5320b` on `codex/ui-rede
| Checkpoint | Approved scope | Entry dependency / current status |
|---|---|---|
| [P7-00](p7-00/README.md) | Fresh scope inventory and fixture baseline | Complete finite identity/route/matrix/static checks; inherited runtime separated. Push receipt recorded by the successor before page changes |
| P7-01 | Authentication and account-security presentation | Existing public auth, account identity, 2FA/session owners; planned |
| [P7-01](p7-01/README.md) | Authentication and account-security presentation | Public sub-slice CONDITIONAL GO, pushed8ad720d with direct receipt; account implementation/runtime/actual8-image review CONDITIONAL GO (573/89 +6/22/10); final finite hygiene/account push receipt pending |
| P7-02 | Onboarding and Career overview/evidence | Existing checklist/canonical Career owners; planned |
| P7-03 | Career structured editing and import review | P7-02 fixtures; resolve or explicitly bound concurrency before changing save/history ownership; planned |
| P7-04 | CV library and public entry | Existing gallery/editor and P7-03 source language; planned |
@@ -33,6 +33,10 @@ P7-00 adopts the actual unchanged-source Phase 6 runtime results: backend1,033,
Keep the 52 all-enabled and 267 inherited-rule axe inventories separate: combined319 mixed-scope snapshots,11 violation-node occurrences and2,473 incomplete occurrences. These are repeated contexts, not unique defects or conformance certification. Applicable manual M01–M12 remain NOT VERIFIED; M13/P5-13 is deferred do-not-execute.
The [P7-01 public sub-slice](p7-01/evidence/public-auth-results.json) adds fresh affected61/61, ordinary native22/22, isolated real Identity/loopback SMTP2/2 and helper6/6 proof. Its unchanged-backend87-case auth subset is not additive to1,033; its affected61 cases do not stand in for a fresh full frontend run. Twenty-two all-enabled public scans separately retain0 violation nodes/31 contrast incomplete nodes. Eight exact final matrix PNGs were inspected; reader/zoom/device/provider/production requirements remain open. Push8ad720d was directly verified at2026-10-11 18:50:24UTC with main unchanged. At that public gate, account presentation/source isolation/session-security acceptance was pending; the later account result below supersedes that status.
The separate [account runtime manifest](p7-01/evidence/account-results.json) records actual fresh573/89 full frontend, account6/public22/auth-boundaries10 and app/browser TypeScript/lint/build pass after truthful account-only stored-CV-text/unavailable-provider copy repairs. Full frontend521→573 adds52 cases/+4 suites without removals; exact file/name deltas remain recorded. Account8 scans retain0 violation nodes/85 incompletes and current public22 retain31 contrast incompletes, separately from the frozen public/Phase6 baselines. All eight final post-copy PNGs were actually inspected, with contextual axe/manual qualifications retained. Implemented P7-01 scope is CONDITIONAL GO; final finite hygiene and normal account push receipt remain pending. No whole-group/route upgrade follows from these finite results.
## Working constraints
Use the current MUI/Emotion theme, PageLayout/section primitives, ViewStateNotice/useViewResource, Router, i18n, notification and save owners. Preserve query/history/aliases, account/tenant/role boundaries, canonical Career facts versus CV overrides, revision recovery, frozen packages and original PDF pagination/oracles. Do not infer new Documents/Notifications/aggregate Admin routes from illustrative navigation. No new hard-coded user-facing strings.
+50 -4
View File
@@ -1,6 +1,6 @@
# P7-01 — Authentication and account-security presentation
**Status: public authentication sub-slice CONDITIONAL GO; account-security implementation/acceptance PENDING.** This is the bounded execution/acceptance plan from the [approved handoff](../../phase-6/p6-05/PHASE7_HANDOFF.md). P7-00 `27c54146ad6f9059295d169b533db7b1b6689210` is pushed and direct development/localHEAD/origin equality verified at2026-10-11 14:44:45UTC; main unchanged and worktree clean at entry. Its [baseline](../p7-00/evidence/baseline.json) and [ledger](../COMMITS.md) satisfy entry. No new routes, identity/provider protocols or capability activation are included. Public source/results below are measured before their commit; the parent records its push receipt separately. This sub-slice does not complete P7-01.
**Status: implemented P7-01 scope CONDITIONAL GO; public slice pushed, account final hygiene/push receipt pending.** This is the bounded execution/acceptance plan from the [approved handoff](../../phase-6/p6-05/PHASE7_HANDOFF.md). P7-00 `27c54146ad6f9059295d169b533db7b1b6689210` is pushed and direct development/localHEAD/origin equality verified at2026-10-11 14:44:45UTC; main unchanged and worktree clean at entry. Its [baseline](../p7-00/evidence/baseline.json) and [ledger](../COMMITS.md) satisfy entry. No new routes, identity/provider protocols or capability activation are included. Public8ad720da5db5999ecda787575dc45621d18a5498 is normally pushed; localHEAD=origin=live development directly verified2026-10-11 18:50:24UTC, local/origin/live main27657f3 unchanged. No completed public work remains uncommitted. The separate account implementation/runtime/visual outcome is CONDITIONAL GO below; final finite hygiene and normal account push/receipt remain pending. The public sub-slice alone does not complete P7-01.
## Baseline and bounded commit scope
@@ -65,7 +65,7 @@ Visual review of the first passing export found registration describing its pass
| Backend auth/security subset | **87/87**, zero failed/not-executed | Auth/session/local identity/context/2FA/email-ownership/authorization contracts at unchanged backend source; a subset of inherited1,033, not an additive total |
| App and browser TypeScript, lint, production frontend build | **All exit0** | Final sequence18:40:04–18:40:39UTC; lint retains zero-warning policy. Browser config contents and command/log hashes are portable in the manifest |
Authoritative final build ID is `rd_SQeVLwVwER9VMCc6XL`. Canonical public six-file source digest is `b330b233508ad5202a1f622ade4464103f7a986ee53648c8f16047f2a1d32586`; the manifest records each file and its precise ordered digest algorithm. Static export74 files have measured raw-file digest `dff031a52740a09359715a31456c9cec70f5aae6f9932c018af078215e973d67`. These identify the tested public working tree, not a newly deployed or remotely pushed identity. P7-00 remains the recorded entry commit until a successor push receipt is recorded in the ledger.
Authoritative public build ID is `rd_SQeVLwVwER9VMCc6XL`, with BUILD_ID bytes retained in the immutable public snapshot. Canonical public six-file source digest is `b330b233508ad5202a1f622ade4464103f7a986ee53648c8f16047f2a1d32586`; the manifest records each file and its precise ordered digest algorithm. Static export74 files have measured raw-file digest `dff031a52740a09359715a31456c9cec70f5aae6f9932c018af078215e973d67`. These identify the tested public source subsequently pushed in8ad720d, not a deployment or the later account build. The manifest preserves entry observation27c5414 and adds the actual successor push receipt separately.
### Responsive, localisation and visual evidence
@@ -85,6 +85,52 @@ Intermediate public unit attempts are also retained, including the59-case run wi
The finite public checks preserve E01–E06/E09 and E07/E08/S03 boundaries, exact safe return/query/hash handling, real token failure/replay and old-session rejection. Backend routes/protocols and established link/exchange guards are retained. All **57 groups remain56 PARTIAL + C11 DEFERRED**, and all32 routes remain retained with their existing qualifications. No whole-group upgrade or fresh full frontend/backend/browser/fidelity acceptance is inferred from these subsets. Ordinary P2-D01 remains required by the inherited baseline and future integrated gate; it was not rerun in this public pack.
Public sub-slice acceptance is **CONDITIONAL GO** for its completed development commit, with M01–M12, server-error language/reader/contrast/provider qualifications and inherited debt carried. **Production remains NO-GO**, main unchanged; M13/P5-13 remains deferred do-not-execute. Commit/push/remote receipt and finite hygiene checks are recorded by the parent in the ledger before account product work proceeds.
Public sub-slice acceptance is **CONDITIONAL GO** for pushed8ad720d, with M01–M12, server-error language/reader/contrast/provider qualifications and inherited debt carried. **Production remains NO-GO**, main unchanged; M13/P5-13 remains deferred do-not-execute. The [ledger](../COMMITS.md) and manifest contain the actual normal push/direct remote receipt; entry/public source and runtime history remain separate from account work.
Account/security acceptance is **PENDING**: five new account-presentation RED cases and12 real-provider cases are prepared (eight existing provider behaviors pass; four provider presentation cases fail), plus six meaningful native account cases not yet executed. The parent owns those product repairs and the later fresh affected build/native evidence. This public result neither completes P7-01 nor changes the approved checkpoint order.
The [public static record](evidence/public-static-checks.json) checked2026-10-11 18:48:17UTC records secret scan and working/staged/Phase7 whitespace commands all exit0, all57 statuses and32 routes preserved. An earlier checker parsed56 rows because it did not accept bold `DEFERRED`; accepting optional Markdown emphasis repaired the checker, with no matrix/status change. Later account/successor documentation requires its own fresh finite hygiene run.
At the public gate, five account-presentation RED cases and12 real-provider cases were prepared; those historical counts remain in the frozen public manifest. Subsequent account results are recorded separately below. Focused provider sets overlap existing public cases and cannot be added to a full-suite result. The public slice does not change the approved checkpoint order.
## Account identity and security implementation
**Implemented account scope: CONDITIONAL GO after fresh runtime and actual final visual/context review; final finite hygiene/push receipt pending.** The [account manifest](evidence/account-results.json) records the actual fresh runtime results below, exact seven-file source/export identity, all native attachment bodies and geometry, intermediate failures and case-name deltas. Its public entry reference preserves the already pushed public slice. The whole final UI runtime tree including attempts, focused unit records, BUILD_ID, runner/browser config, inherited frontend baseline, seven source snapshots and exact export are frozen under `.artifacts/phase7/p7-01/account-final/`. All206 recorded path/hash references were verified; only file references were rebased, preserving raw bytes, hashes, commands and original report execution paths. Source identity retains original logical source paths with separate immutable snapshots. Do not recollect this slice after subsequent builds. No backend source, authentication protocol, schema, provider capability or external service was changed.
AuthStatus, 2FA, Sessions and the two real account-provider consumers use the existing themed PageSection with named H2 sections. The shell owns H1; Profile's existing identity/account/password sections keep their save boundaries. Signed-in wording and security/provider dates follow the selected EN/NB locale. Long identity/session metadata wraps within the existing responsive layout.
Unknown or failed 2FA status announces loading/failure and offers a deliberate read-only retry; it cannot suggest setup until an actual status response is known. Sessions loading failure no longer looks like a known empty list. A failed revoke-others request keeps its durable alert inside the named confirmation and preserves explicit retry/cancel. Pending confirmation blocks duplicate commands; current-session logout still clears the authenticated private tree. Existing enable/disable, recovery acknowledgement/export/clear, device revoke, password and provider-link/unlink owners remain in place.
Profile uses the existing API-error helper and durable scoped save/password feedback, retaining the draft after failure for explicit retry. Identity save still sends exactly firstName/lastName/displayName/userName; account email, canonical Career data and CV variants retain their separate owners. Native fixtures read canonical data and two sibling CVs before/after an actual identity PUT204 and reload, and assert no browser canonical/CV write.
Visual inspection of the first passing account export exposed two copy defects: a disabled Microsoft account card instructed the product user to set a NEXT_PUBLIC environment variable, and the account chip called a CV missing even when canonical Career data and two CV variants existed. The chip's actual source is only stored `profileCvText`. Two ordinary EN/NB Profile cases and a strengthened existing provider assertion reproduced these failures (33 pass/3 fail, no selected-out cases). Account-only `profileCvTextAvailable/Missing` keys now describe that stored text truthfully; the existing Microsoft unavailable hint uses natural EN/NB wording. Existing Career CV keys/data, CV-library fetching and provider configuration semantics are unchanged.
### Fresh account regression and source identity
| Evidence | Actual result | Scope / count explanation |
|---|---|---|
| Full frontend Jest | **573/573 in89 suites**, zero fail/pending/todo | Fresh19:03:13–19:06:30UTC. Inherited521/85 becomes+52 cases/+4 suites: public23, account providers12, card presentation7, security flows5 and Profile5 (19→24). No removed/renamed cases; exact names are retained in the manifest |
| Account native | **6/6**, zero skip/flaky/unexpected/retry | Fresh19:04:29–19:05:01UTC. Four actual identity-save/reload/isolation samples, failed-2FA-read→explicit-retry/no-write, and real multiple-session cancel/failure/retry/readback/current-logout workflow |
| Public native regression | **22/22**, zero skip/flaky/unexpected/retry | Fresh19:05:01–19:05:33UTC on the account export; separate from the immutable public acceptance run and its SMTP evidence |
| Existing auth/account-isolation browser boundaries | **10/10**, zero skip/flaky/unexpected/retry | Fresh19:05:33–19:06:16UTC on the same account export. Current/private-tree disposal, canonical account separation, safe return and expired authentication retain their ordinary assertions |
| App/browser TypeScript, lint, frontend production build | **All exit0** | Fresh19:03:46–19:04:29UTC, lint zero-warning policy retained. Earlier unknown-response spread in a new test was corrected with a test-only structural assertion; the diagnostic failed typecheck is retained |
The measured account export is `SbTVDn-CSb21uPKSzFqOv`. Seven product owners have canonical-LF digest `91589b37e8efe9e0a089987158af44e5f846d0b56cc78782423f38508404f915`; the74 exported files have raw digest `04926e1ee0c75884a8a61b70b3b65e158ad237d65c2714e196ace6d692655bda`. The manifest records per-file hashes and the ordered digest algorithms. These identify the tested working tree after the19:02:57UTC product freeze, before the account commit, with entry HEAD8ad720d. The final test-only structural assertion does not change product source. Backend1,033, sidecar49, ordinary integrated159 and rendering corpora remain inherited; this account slice does not claim fresh executions of them or ordinary P2-D01.
### Account accessibility and responsive evidence
Eight all-enabled account snapshots cover NB/dark320, EN/light390, NB/light768 and EN/dark1440 identity persistence, plus unknown/recovered 2FA and failed/settled session revocation at320/390. All eight record root overflow0 and eight named sections within the viewport. Actual identity fields save/reload, long names and security dates are included. The six account cases do not vary density; both Comfortable/Compact are not claimed. These finite contexts do not establish every breakpoint/theme/language combination, physical touch/software keyboards, browser zoom or a human screen-reader result.
Account scans retain **0 violation nodes and85 incomplete nodes**:84 color-contrast (74 background overlap,8 short-text,2 partial overlap) and1 aria-hidden-focus. The failed revoke-others modal targets `#root` with `focusable-modal-open`: “Check that focusable elements are not tabbable in the current state.” The ordinary native test proves named dialog/description, installed MUI initial focus container, subsequent forward/backward keyboard trap cycle, cancel focus restoration, failure retained inside the modal and deliberate retry. That bounded keyboard evidence does not replace **M09** spoken navigation/state or **M11** contextual contrast/forced-colors qualification. Exact nodes/check messages/data and source contexts remain in the manifest and hashed raw report; no rule was disabled.
The public regression adds22 separate all-enabled scans with0 violation nodes/31 contrast incompletes. Combined30 account-build snapshots have0 violation nodes/116 incomplete occurrences, but the8 account and22 public contexts remain separate; they are not like-for-like substitutes for Phase6's mixed-scope319 snapshots. The earlier account export had84 incompletes; the final failed-modal snapshot has one additional overlap node. No incomplete was hidden to preserve an earlier count.
Eight PNGs are extracted byte-for-byte from the inline base64 report attachments into a report-SHA directory; their exact raw hash and original embedded-report reference are recorded. **The parent actually opened all eight final post-copy PNGs with `view_image`**: four persisted identity samples, failed/recovered2FA read, failed revoke dialog and surviving-session view. Stored-text wording is truthful, the unavailable Microsoft hint contains no operator variable, and controls/layout remain clear and in bounds. Sticky appbar/skip-link positions in stitched full-page captures reflect their actual scroll/focus capture context. Earlier inspected identity images and their two copy defects remain historical. The manifest contains exact image hashes and the direct review receipt; extraction performs no editing and visual review does not provide human assistive acceptance.
### Historical failures and remaining acceptance
The first native account attempt passed1/6. Four cases assumed Profile PUT returned200, whereas the established AuthController contract returns204. Another assertion expected initial focus inside the Paper role=dialog, although installed MUI FocusTrap initially focuses its containing dialog container. Fixtures now require204 and the actual initial trap container; subsequent Tab/Shift+Tab still must cycle inside the named dialog and cancel restores the invoking control. This corrected test assumption did not alter product authentication/save semantics or relax keyboard containment. Its whole report/log/output folder is retained.
The provider RED8 pass/4 fail, original card RED0/5, strengthened card RED1/7, focused GREEN sets and copy RED33/36 are retained with their exact counts. Earlier full571/89 and passing account/public/boundary native runs precede the copy repair and remain historical, not final acceptance. The fresh full573 run has no pending/skipped/expected-failure masking. Whole previous runtime folders are retained by the runner; raw reports still contain their original execution paths.
All57 groups remain56 PARTIAL + C11 DEFERRED, all32 routes retained with existing qualifications. This slice adds finite E02–E06/E08/E09 and C01/C07/S03 evidence; it does not upgrade whole groups. Human reader/zoom/physical and software-keyboard, real OAuth/Turnstile/authenticator/device and production delivery gates remain open. Existing server-authored English errors in NB remain an explicit localisation qualification. M01–M12 and inherited debt carry forward; M13/P5-13 stays deferred do-not-execute, Phase8 stays separate, production NO-GO and main unchanged. Implemented account and whole-P7-01 scope are CONDITIONAL GO with these explicit qualifications. Final finite hygiene and normal account commit/push receipt remain pending; no account push is inferred from runtime or visual review. The latest account static record uses [static-checks.json](evidence/static-checks.json); its final metadata will be mirrored after the parent's staged checks.
The final account [static checks](evidence/static-checks.json) passed2026-10-11 19:15:38UTC: tracked/untracked secret scan, working/staged/Phase7 whitespace,303 relative documentation links,57 groups and32 original routes. Root independently verified all206 account manifest file/hash references. Normal account commit/push remains the next step; the successor records its actual receipt.
File diff suppressed because it is too large Load Diff
@@ -6350,7 +6350,15 @@
"qualification": "Five account-security presentation RED cases plus twelve real provider cases (eight existing behavior cases pass, four planned presentation cases fail); no account acceptance or build claimed"
},
"pushReceipt": {
"status": "PENDING_PARENT_PUBLIC_SUBSLICE_COMMIT_AND_PUSH"
"status": "PUSHED_AND_DIRECT_REMOTE_VERIFIED",
"commit": "8ad720da5db5999ecda787575dc45621d18a5498",
"verifiedUtc": "2026-10-11T18:50:24Z",
"developmentBranch": "codex/ui-redesign-phase4",
"localHead": "8ad720da5db5999ecda787575dc45621d18a5498",
"originDevelopment": "8ad720da5db5999ecda787575dc45621d18a5498",
"liveDevelopment": "8ad720da5db5999ecda787575dc45621d18a5498",
"localOriginLiveMain": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
"worktreeQualification": "No completed public work remains uncommitted; independent account work is in flight. Receipt reported by parent after actual normal push/direct remote checks; no deployment."
},
"immutablePublicRaw": {
"path": ".artifacts/phase7/p7-01/public-final",
@@ -0,0 +1,104 @@
{
"schemaVersion": 1,
"checkpoint": "p7-01",
"status": "PASS",
"checkedUtc": "2026-10-11T18:48:17.428310+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-11T18:48:14.595748+00:00",
"finishedUtc": "2026-10-11T18:48:16.864213+00:00",
"exitCode": 0,
"log": ".artifacts/phase7/current/static/20261011T184814Z/secret-scan.log",
"logSha256Raw": "c5a88d5ebdc042adba125c1eaacbe44f9f4a5c19898c0f195573c00d511aa28d"
},
{
"name": "working-whitespace",
"command": [
"rtk",
"proxy",
"git",
"diff",
"--check"
],
"startedUtc": "2026-10-11T18:48:16.864713+00:00",
"finishedUtc": "2026-10-11T18:48:16.957533+00:00",
"exitCode": 0,
"log": ".artifacts/phase7/current/static/20261011T184814Z/working-whitespace.log",
"logSha256Raw": "d2993bc68ad9a63f711c8f5473155e2ba00fdcd461220cc3849185f2f9ad93e6"
},
{
"name": "staged-whitespace",
"command": [
"rtk",
"proxy",
"git",
"diff",
"--cached",
"--check"
],
"startedUtc": "2026-10-11T18:48:16.958040+00:00",
"finishedUtc": "2026-10-11T18:48:17.040996+00:00",
"exitCode": 0,
"log": ".artifacts/phase7/current/static/20261011T184814Z/staged-whitespace.log",
"logSha256Raw": "d2993bc68ad9a63f711c8f5473155e2ba00fdcd461220cc3849185f2f9ad93e6"
},
{
"name": "phase7-whitespace",
"command": [
"rtk",
"proxy",
"git",
"diff",
"--check",
"b5319981ad3d1bd635daff861453d23c0de5320b"
],
"startedUtc": "2026-10-11T18:48:17.041545+00:00",
"finishedUtc": "2026-10-11T18:48:17.143326+00:00",
"exitCode": 0,
"log": ".artifacts/phase7/current/static/20261011T184814Z/phase7-whitespace.log",
"logSha256Raw": "d2993bc68ad9a63f711c8f5473155e2ba00fdcd461220cc3849185f2f9ad93e6"
}
],
"untrackedSecretScan": {
"files": 3,
"findings": 0
},
"documentation": {
"files": 8,
"relativeLinks": 285,
"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."
]
}
@@ -2,7 +2,7 @@
"schemaVersion": 1,
"checkpoint": "p7-01",
"status": "PASS",
"checkedUtc": "2026-10-11T18:48:17.428310+00:00",
"checkedUtc": "2026-10-11T19:15:39.214576+00:00",
"commands": [
{
"name": "secret-scan",
@@ -15,10 +15,10 @@
"scripts/supply-chain.py",
"scan-secrets"
],
"startedUtc": "2026-10-11T18:48:14.595748+00:00",
"finishedUtc": "2026-10-11T18:48:16.864213+00:00",
"startedUtc": "2026-10-11T19:15:36.444400+00:00",
"finishedUtc": "2026-10-11T19:15:38.644596+00:00",
"exitCode": 0,
"log": ".artifacts/phase7/current/static/20261011T184814Z/secret-scan.log",
"log": ".artifacts/phase7/current/static/20261011T191536Z/secret-scan.log",
"logSha256Raw": "c5a88d5ebdc042adba125c1eaacbe44f9f4a5c19898c0f195573c00d511aa28d"
},
{
@@ -30,10 +30,10 @@
"diff",
"--check"
],
"startedUtc": "2026-10-11T18:48:16.864713+00:00",
"finishedUtc": "2026-10-11T18:48:16.957533+00:00",
"startedUtc": "2026-10-11T19:15:38.644596+00:00",
"finishedUtc": "2026-10-11T19:15:38.729774+00:00",
"exitCode": 0,
"log": ".artifacts/phase7/current/static/20261011T184814Z/working-whitespace.log",
"log": ".artifacts/phase7/current/static/20261011T191536Z/working-whitespace.log",
"logSha256Raw": "d2993bc68ad9a63f711c8f5473155e2ba00fdcd461220cc3849185f2f9ad93e6"
},
{
@@ -46,10 +46,10 @@
"--cached",
"--check"
],
"startedUtc": "2026-10-11T18:48:16.958040+00:00",
"finishedUtc": "2026-10-11T18:48:17.040996+00:00",
"startedUtc": "2026-10-11T19:15:38.730278+00:00",
"finishedUtc": "2026-10-11T19:15:38.820863+00:00",
"exitCode": 0,
"log": ".artifacts/phase7/current/static/20261011T184814Z/staged-whitespace.log",
"log": ".artifacts/phase7/current/static/20261011T191536Z/staged-whitespace.log",
"logSha256Raw": "d2993bc68ad9a63f711c8f5473155e2ba00fdcd461220cc3849185f2f9ad93e6"
},
{
@@ -62,20 +62,20 @@
"--check",
"b5319981ad3d1bd635daff861453d23c0de5320b"
],
"startedUtc": "2026-10-11T18:48:17.041545+00:00",
"finishedUtc": "2026-10-11T18:48:17.143326+00:00",
"startedUtc": "2026-10-11T19:15:38.821368+00:00",
"finishedUtc": "2026-10-11T19:15:38.928620+00:00",
"exitCode": 0,
"log": ".artifacts/phase7/current/static/20261011T184814Z/phase7-whitespace.log",
"log": ".artifacts/phase7/current/static/20261011T191536Z/phase7-whitespace.log",
"logSha256Raw": "d2993bc68ad9a63f711c8f5473155e2ba00fdcd461220cc3849185f2f9ad93e6"
}
],
"untrackedSecretScan": {
"files": 3,
"files": 0,
"findings": 0
},
"documentation": {
"files": 8,
"relativeLinks": 285,
"relativeLinks": 303,
"errors": []
},
"preservation": {