Files
jobtrackingapp/docs/redesign/phase-7/p7-09/PREFERENCES.md
T

9.4 KiB
Raw Blame History

P7-09 — Preferences and Connections

First presentation boundary from the approved handoff. The separate sender repair is normally pushed as dac29278db3c187349b97771ca2f383c9e6e0962. Direct refs at 2026-10-17T08:27:48.643285 UTC prove clean HEAD=origin=live development and unchanged local/origin/live main27657f3. Exact receipt: .artifacts/phase7/p7-09/oauth-push-receipt.json. No publication blocker remains for that repair.

Baseline and bounded scope

The published entry has final 39/3 frontend, sender3/Application5/ordinaryP2-D01=9 native and four type/lint/build gates passing on j_uwah2_BImymFemE3cLg. These executed entry results remain separate from new presentation acceptance. Existing Settings14, Connections12 and correspondence13 are retained. Derived inventory at entry is807/95 frontend,326 browser,1054 backend; the latest whole-suite counts remain inherited untilP7-12.

Owner Confirmed friction Required bounded result
Settings notification preference Locale-dependent GET replaces unsaved edits; failed initial read lacks recovery; duplicate saves and late acknowledgements can overwrite newer choices Stable single-flight read; explicit GET-only Retry; independent draft/last-acknowledged baseline, dirty/Discard and submitted-snapshot save acknowledgement; current-language feedback and disposal
Parent Rules session Existing six-field draft/validation/snapshot/discard owner is accepted Retain all fields,1–365 validation, internal-tab retention, section save scope and current routes/panel associations
Mailbox providers Failed/unfinished status resembles disconnection; repeated actions and failed post-write refresh can mislead; IMAP fields remain editable during submission Independent truthful loading/error/known status, GET-only Retry and no mutation replay; scoped action exclusion and captured IMAP payload; sender correlation unchanged
Connected accounts presentation Legacy rounded wrapper, heavy weights and duplicated header style Existing PageSection, appropriate heading hierarchy, wrapping and shared spacing; no new information architecture

User/local appearance/table preferences, server language, notification email delivery and Rules remain independent. No save-all, new revision protocol, shared settings store, provider feature or backend/schema change. The existing theme/router/MUI/toast/session ownership stays authoritative. Failed real writes and RD11/RD12/RD13 remain visible and separately owned; a successful mocked or later real response does not diagnose their historical root cause.

Evidence and acceptance

Meaningful ordinary REDs are retained: Settings 14 PASS / 7 FAIL at08:31:47–08:31:58 UTC, before its product changes; Connections 12 PASS / 9 FAIL, before its product changes. Failures demonstrate draft replacement, duplicate writes, stale feedback/disposal, missing recovery and incorrect provider/port states. Final GREEN and combined consumers, serialized production build/browser journeys, finite width/theme/language screenshots, all axe incomplete contexts, preservation reconciliation and staged hygiene are PENDING. Existing sender tests stay strict.

Candidate Settings 21/1 PASS and Connections 22/1 PASS retain every existing case. Connections adds a separate meaningful removed-IMAP-field focus regression (21 PASS / 1 FAIL, then22 PASS). The new boolean preference owner acknowledges only its submitted snapshot; provider failures retain an unknown or refresh-required state and Retry performs GET only. IMAP no longer coerces an empty/zero port to993; it validates the existing server range1–65535 before submitting the captured credentials. No protocol or grant semantics change.

The first combined 91/6 PASS was followed by a failed lint gate (two cleanup-ref warnings). Capturing the stable ref objects in effect setup corrected those warnings without suppression. The next91/6 PASS/type gate exposed26 unsupported Testing Library ByRole exact:true options; only those options were removed, preserving literal accessible names, default exact matching and every assertion. No build/native ran in either failed batch. Raw capsules .artifacts/phase7/p7-09/preferences-lint-attempt1/ and preferences-types-attempt1/ retain the actual failures. Final combined 91/6 PASS,08:37:32–08:37:59 UTC, and fresh app/browser TypeScript/lint PASS now precede browser validation. No failed gate is represented as successful acceptance.

Unchanged-binary backend 52/52 PASS,08:30:10–08:30:13 UTC: ExternalOrigin14, Gmail19, Microsoft7, IMAP9 and NotificationSettings3. The command's additional RulesControllerTests filter matches no cases and supplies no Rules coverage; existing/native Rules evidence remains separate. Exact raw command/TRX/log is .artifacts/phase7/current/backend-career/p709-preferences-contracts-20261017T083010Z/. This is not a new backend test, Release build or whole-suite run. No real grant, IMAP connection, send, model call, billing, deletion, restore or production action belongs to this boundary.

PRES-S03/S04/S05/M06/E09 and all57 groups remain binding; no whole-group promotion. Human reader/touch/software keyboard/real zoom and production font/photo/output requirements remain open. Presentation acceptance: PENDING. Data/privacy/plan/backup follows this boundary; Phase8 implementation and deployment remain prohibited.

Final first-boundary result

Implemented Preferences/Connections: CONDITIONAL GO, pending final staged hygiene and normal publication. Portable results identify final91/6, backend52/52, all17 native cases, frozen source/export, peer review and every failed attempt. No skip, expected failure, assertion relaxation or flaky outcome is used.

Executed evidence Actual result
Combined frontend 91/6 PASS,08:37:32–08:37:59 UTC; Settings21, Connections22, correspondence13, i18n6, onboarding23, notification shell6
Build and types App TypeScript08:37:55–08:38:07 and production build08:38:13–08:38:28 PASS, export InBPthl1fsnID3NNdgwbI. Final native-only fixture edits get fresh lint08:45:29–08:46:00 and browser TypeScript08:46:00–08:46:07 PASS; no fictional rebuild
New browser journeys 5/5 PASS,08:41:11–08:42:04: actual persistence, separate saves, submitted snapshot/newer draft, owner/disposal, controlled read/write recovery and seven paired width/theme/language samples
Existing consumers OAuth 3/3 PASS,08:42:04–08:42:22; Rules4+Settings4 8/8 PASS,08:46:07–08:47:56; ordinary P2-D01 1/1 PASS,08:47:56–08:48:10
Source preservation Final34 inputs held08:45:29–08:48:37. Earlier build/unit31 inputs and primary/OAuth32 inputs match, with only the three separately recorded native fixture changes. Both backend DLLs unchanged
Visual and accessibility All18 new PNGs actually displayed/reviewed: parent0–8, independent peer9–17. New18 scans0 violations/62 incompletes; existing36 scans0/222 retained separately

The first browser attempt2/5 failed at an early mobile/desktop selector branch before the lazy panel appeared; waiting for either visible control corrects that fixture precondition. The first existing consumer run3/8 failed at a global status locator that also selected P7-08's unread announcement and four obsolete Skeleton assertions. Their replacements scope the exact Rules status and assert the actual named busy notification group/progress indicator. Held reads, exact HTTP/status/persistence/export and downstream assertions remain unchanged. All raw failures remain retained.

Every incomplete category is recorded: new43/consumer174 overlapped backgrounds, new18/consumer36 short badges, new1/consumer12 closing MUI-menu focus diagnostics. Full contexts remain raw. These are indeterminate contrast or pending settled keyboard/AT checks, not waived findings or human acceptance. No new rule is disabled. Consumer PNGs are retained without claiming all were visually reviewed.

17 new frontend cases / zero suites derive 824/95; five new browser cases derive 331; backend remains1054. These remain inventories, not full-suite execution; inherited whole573/89,1033 backend and49 sidecar awaitP7-12. All57 groups remain56 PARTIAL/C11 DEFERRED, with33 routes; RD11/RD12/RD13/RD21 and manual/provider/output/release debt remain. The next data lifecycle boundary first needs the separately reviewable PascalCase-export/camelCase-import compatibility repair; it is not implemented here.

Final staged hygiene PASS,2026-10-17T08:50:12 UTC: secret and working/staged/phase whitespace gates,26 docs/593 local links,57 groups/33 routes. All33 tracked staged inputs match the final canonical-LF snapshots; the sole ignored input is the recorded local runner. Normal commit/push follows; the actual hash/remote receipt is recorded after observation. Data lifecycle and wholeP7-09 remain pending.

Preferences/Connections e7dba9a2f7 was normally pushed and directly verified 2026-10-17T08:50:42.777224UTC, with clean HEAD=origin=live development and local/origin/live main27657f3 unchanged. Final staged hygiene passed08:50:12UTC. The portable publication receipt supersedes earlier pending-publication observations; data/privacy/plan/backup and its separate import prerequisite remain pending.