Files
jobtrackingapp/docs/redesign/phase-7/p7-02

P7-02 — Onboarding and Career overview/evidence

Status: implemented P7-02 scope CONDITIONAL GO. Onboarding and the separate SQLite repair are pushed; Career runtime/visual acceptance and final slice hygiene PASS; normally pushed8b4d5c2 with direct receipt. Follow the exact approved handoff. This checkpoint has two bounded commits: onboarding guidance first, then Career overview/evidence. Structured Career editing/import/history remains P7-03; no alternative checkpoint order or new route is introduced.

Accepted entry baseline

P7-01 account ad7b4196af638f3a8c79e261ffd96507bd002835 is normally pushed. Its actual immediate receipt2026-10-11 19:16:15UTC records localHEAD=origin=live development equality, local/origin/live main27657f3 unchanged and a clean worktree. See the ledger, P7-01 report and frozen account evidence. P7-01 implemented scope is CONDITIONAL GO; production stays NO-GO.

The inherited latest frontend result is 573/89, with account native6/public22/auth-boundaries10, final types/lint/build, eight actual account PNG inspections and staged secret/whitespace/docs/matrix checks passing. Account build SbTVDn-CSb21uPKSzFqOv is frozen separately from the earlier public export. Backend1,033, sidecar49, ordinary integrated159 and fidelity16/36+8/24 remain inherited Phase6 executions; the unchanged-backend auth subset87 is separate. These are entry evidence, not freshly executed P7-02 results.

All57 preservation groups remain56 PARTIAL + C11 DEFERRED and all32 routes remain retained with their qualifications. Account8 axe scans retain0 violation nodes/85 incomplete occurrences; account-build public22 retain0/31. Earlier public and Phase6 mixed-scope319/11/2,473 inventories remain distinct. Actual human reader/zoom/device/provider/output and production gates remain open, with M13/P5-13 deferred do-not-execute.

Bounded onboarding-guidance commit

Owners are OnboardingChecklist, its Dashboard consumer, existing i18n/theme/state primitives and checklist unit tests. The accepted entry checklist inferred two fixed completed steps for signup/email verification although its MeResponse has no verification fact. Authentication/verification itself remains the already verified P7-01 owner; this guidance change does not alter it.

Use four observable guidance steps: account identity, canonical Career content, optional mailbox connection and first tracked job. Keep the existing facts/endpoints, legacy per-user onboardingDismissed:${getUserKeyFromToken()} key and existing action destinations /profile, /career, /settings/connected-accounts, /jobs. Do not introduce forced onboarding, a preference migration or a fabricated completeness score. Canonical Career content is distinct from account identity, stored CV text and the CV library.

Known/incomplete/unknown are separate states. A pending/failed Dashboard Jobs summary passes nullable unknown rather than invented zero/no-jobs; failed source reads cannot become authoritative unmet criteria. Retry is deliberate and read-only. Preserve independent known facts, user dismissal/reload, account switching and stale response disposal. An optional mailbox is not a prerequisite for job tracking, and opening guidance never starts OAuth, a model or mail mutation.

The initial Dashboard caller reproducer at2026-10-11 19:17:24UTC passed8/9 and failed the new pending-summary assertion: the child receivedfalse instead ofnull. The bounded caller correction passed9/9 at19:17:51UTC with no skipped cases. Unique RED/GREEN command/report/log records are retained under .artifacts/phase7/current/unit/onboarding-caller-{red,green}-.... This one-file result does not establish acceptance of the new checklist or replace the forthcoming two-file affected run.

The first frozen onboarding source at23:37:03UTC passed affected 32/32 in two suites, zero fail/pending/todo, executed23:38:08–23:38:14UTC. Checklist23 replaces inherited1 (+22); Dashboard caller9 replaces8 (+1). The affected baseline9 therefore becomes32 (+23). Exact added/removed-or-renamed titles remain in the finite manifest. Latest full frontend573/89 is inherited; no fresh full596 run is claimed. Source-worker RED passed1/23 and failed22. First GREEN passed22/23; the remaining failure selected an unscoped status also supplied by the fixture destination. The scoped guidance assertion then passed23/23. Unique command/report/log attempts are preserved.

The first native12 pack passed23:38:50–23:39:44UTC on build pQI48DIBz4WVtCNmtoR5_, with zero skip/flaky/unexpected/retry. That report is historical, not final acceptance: its retry workflow did not assert focus after the retry control disappeared. Actual review found focus was lost when Retry was removed during loading. Five strengthened existing unit cases reproduced it (18 pass/5 fail at23:40:32UTC); the focused native case failed0/1 at23:40:49–23:41:04UTC after actual Enter/GET success. The bounded seven-line existing Dismiss-button ref/focus correction does not change request or completion criteria. Corrected combined32/2 passed23:41:48UTC with zero failure/pending/todo. Fresh app/browser TypeScript, lint/build and corrected native12 passed, followed by separate existing Dashboard2/Analytics2 regression4. The initial manifest and raw attempts remain retained, without treating the earlier passing tests as sufficient focus proof.

The final 13 ordinary native cases passed23:45:40–23:46:34UTC, with zero skip/flaky/unexpected/retry, on unchanged corrected build bwZtqlczGqVRJ0J01IxVK. The added thirteenth case changes only test coverage: four known-complete steps remove guidance and the next actual Tab reaches Customize Dashboard. Its mailbox-connected response is an explicit stored-connection fixture; account/Career/job data are real local API data, with no writes and no real provider grant qualification. Final browser TypeScript passed23:45:40UTC after this test-only addition; no rebuild was needed. The finite manifest records exact source/build/export identities, commands, case deltas and all historical attempts. The separate regression4 passed23:43:50–23:44:49UTC and remains separate from onboarding axe scope.

The native pack includes eight finite EN/NB/theme width samples320/360/390/768/1024/1280 short landscape/1440/1920, ownerA/B dismissal/reload, failed mailbox read/read-only retry, four keyboard action destinations/Back, unknown Dashboard summary/retry and complete-guidance removal. Dismissal assertions wait for settled Dashboard state and verify no Career/mail-status GET after dismissed reload/returnA; early absent content while pending cannot stand in for dismissal proof. Actual next Tab after dismissal and persistent Dismiss focus through successful retry pass. The parent actually opened all13 final raw PNGs with view_image: labels/actions wrapped and the finite layouts were readable, with no accidental app overflow in the recorded metrics. The existing Dashboard summary Retry recovery image focuses the shell Skip link with altered scroll; this slice does not repair or accept that owner's focus restoration. Controlled English failure detail is fixture server-authored text, distinct from the translated product fallback. Onboarding has no global density setting/user control; density is not applicable. No physical input, zoom or human assistive evaluation is claimed.

All13 all-enabled axe scans retain 0 violation nodes and13 incomplete occurrences, each color-contrast/shortTextContent on the shell notification badge .MuiBadge-badge with invisible 0 content. The tool cannot determine whether this short content is text; its reported ratio0 is not a measured contrast failure. Targets, HTML and check vectors remain intact for contextual M11/manual qualification. All13 recorded root-overflow measurements are0. These finite results do not replace human evaluation or combine with the separately scoped Dashboard/Analytics scans.

Final measured three-source LF digest is dd98c47e6064a4f8d6abe6dbe4e2b61b86cf9dc45e5baa9e8c7fb51631ee3f70; build bwZtqlczGqVRJ0J01IxVK;74-file exported digest b6f528e55f7d12b357b0aea34fd61935aeb5c4e57550ea3d6fe6b54c66bc87f5. Exact raw commands/reports/logs, whole UI/attempt tree, unit records, source/test snapshots, runner/config, BUILD_ID/export and accepted entry manifest are frozen under .artifacts/phase7/p7-02/onboarding-final/. All154 recorded path/hash references were verified at freeze; only file-reference paths were rebased, preserving measured bytes/hashes and original internal execution paths. Initial pre-focus source/export identities remain historical observations; this does not claim a pre-focus export/source snapshot. The frozen report keeps the earlier12-pass and focus RED evidence.

The fresh affected32 result replaces nine inherited cases with32: Dashboard8→9 adds one, checklist1→23 adds22 net. The original broad checklist title is replaced by its four-source-backed successor and22 additional cases; the manifest records all23 added titles and the single renamed title rather than hiding the change. Full596/89 is only the derived expectation573+23 with no new suite, not a newly executed full frontend result. The inherited latest full result remains573/89; final full regression belongs to P7-12. Native12→13 adds the complete-guidance recovery case with no product or unit-count change.

Slice-specific final static checks passed2026-10-11 23:53:23–23:53:26UTC: tracked/untracked secret scan and working/staged/Phase7-entry whitespace commands all exit0; nine Markdown documents/329 relative links checked with no errors at that observation;57 groups/32 concrete routes unchanged; main remains27657f3 and production NO-GO. Portable static JSON uses canonical UTF-8/LF hashes; raw log/runtime hashes retain exact saved bytes. Normal push d21501aa7e5f9040937fa821d6a77d823b7e08eb was directly verified2026-10-11 23:55:12.614723UTC: localHEAD=origin=live development, local/origin/live main27657f3 unchanged and clean worktree at observation. Its actual receipt is appended in the manifest by this successor; frozen runtime/source identities remain historical at that commit.

Required proof Acceptance condition / current result
Truthful criteria and failures Fresh affected32 and ordinary native13 pass four-step/unknown/failure/read-only retry assertions; provider qualification remains unverified
Dismissal and owner boundary Legacy-key/session dismissal, owner isolation/late responses/unavailable storage and actual dismiss/reload/settled no-read corroboration pass
Existing navigation Four existing destinations, actual keyboard/Back/no-write and dismissal/complete-recovery next-action focus proof pass
Responsive/localised/semantic states EN/NB/theme finite width samples, named H2/progress/control states, keyboard/focus and13 root-geometry/axe vectors pass their assertions; all13 raw PNGs actually inspected; M09/M11/human/zoom/device/provider qualifications retained
Verification and bounded push Fresh affected32/native13/regression4, app/browser types, lint/build, actual13-image inspection and slice-specific final hygiene pass; normal pushd21501aa and actual direct equality receipt PASS23:55:12UTC

Separate evidence-list provider repair

Actual local SQLite exposed an existing list failure before Career presentation acceptance: evidence POST returned200 but subsequent GET returned500. The new ordinary provider test failed0/1 with SQLite9.0.14 DateTimeOffset ORDER BY NotSupportedException; the real-HTTP case independently failed0/1 at23:59:55–00:00:03UTC. Existing affected guards had freshly passed90/90. See the frozen repair evidence.

The bounded controller repair keeps SQL owner filtering and AsNoTracking; SQLite materializes only owned rows then sorts actual DTO instants. Other providers retain existing SQL ordering by source-branch inspection; no live production/MySQL execution is claimed. The new ordinary test distinguishes actual timestamps with different offsets and a foreign owner's future row. No schema/converter/action/payload/authorization changes occur. Owner-local SQLite materialization remains O(N); this is compatibility repair, with no scaling or timing claim.

Dedicated SQLite1/1 and fresh affected guards91/91 passed with zero failed/not-executed cases. Release test-project/API build passed00:01:26–00:01:28UTC with zero warnings/errors. Actual real-HTTP GREEN passed1/1 at00:01:48–00:01:58UTC, zero skip/flaky/unexpected/retry. The added ordinary backend case makes1,034 the derived future full expectation; only the91 affected guards have freshly executed. The dedicated1/HTTP1 overlap this coverage and later Career native coverage; do not add them to full totals.

Source/DLL, backend command/log/TRX and HTTP RED/GREEN report/log/result/trace/spec snapshots are immutable under .artifacts/phase7/p7-02/evidence-list-repair/, with34 file/hash references verified. The HTTP case executes local API contracts only; its uncommitted native-spec snapshot will be committed and rerun in the later Career slice. Existing onboarding frontend export is not a Career build or UI acceptance. Slice-specific repair static checks passed2026-10-12 00:04:59–00:05:02UTC: all four secret/working/staged/entry-whitespace commands exit0, nine Markdown documents/337 local links checked with0errors,57 groups/32routes retained, main unchanged. Bounded local repair GO; final hygiene PASS, normally pushed01281f52 and directly verified. Career UI acceptance was pending at this repair gate; its successor result follows. This repair is committed separately before Career UI; no in-flight frontend implementation is included. Actual receipt2026-10-12 00:06:47.145743UTC records development localHEAD=origin=live01281f52, local/origin/live main27657f3 unchanged and five independent unfinished Career paths. The worktree was explicitly not clean; the completed repair was normally pushed without discarding that work.

Career overview/evidence commit

Entry includes the normally pushed onboarding d21501aa7e5f9040937fa821d6a77d823b7e08eb and subsequent separate provider repair 01281f52d9279ecdbd3363a11d2e9cb71230bf49. Each has its actual direct development/main receipt above. Onboarding's final32/13/4/source/build/axe evidence remains frozen and historical atd215; later Career translation changes cannot be validated against the earlier workspace. Latest fresh full frontend remains inherited573/89; onboarding adds23 verified affected cases, giving only a derived596/89 expectation. In the frozen573 report, the existing Career workspace suite has7 cases and evidence suite1, eight-case affected baseline. This is inherited baseline evidence, not a new Career execution. Fresh backend91 affected guards/Release/HTTP1 are from the separately pushed repair; fullbackend1,034 is derived only.

Existing CareerWorkspacePage delegates to CareerProfilePage. Preserve the actual Overview/Profile/Evidence/Import section owner and query/history behavior, including removal of the default overview query. Scope the residual presentation to CareerWorkspaceOverview and CareerEvidenceBank, with existing workspace and evidence tests.

Keep canonical /career/profile data and existing server-provided completeness labels/provenance, source/raw-copy/history links, /career/evidence list/create and owned delete contracts. Evidence creation keeps existing category/title/statement/tags/source semantics and explicit manual review; presentation does not invent achievements or change persistence. Improve bounded headings/state/form/retry/reflow using existing owners after reproduction. No structured editor/save/import/history owner or CV renderer change belongs here.

The finite Career manifest records actual affected 46/46 in three suites, ordinary Career 14/14 and separate existing preservation 2/2 passing, with zero skipped/flaky/unexpected/retry native cases. Final app/browser TypeScript, lint and build passed2026-10-12 00:18:30–00:19:05UTC. Career14 executed00:19:05–00:20:04UTC; the ordinary P2-D01 frozen-workspace and mobile-override cases executed00:20:04–00:20:19UTC. These two are freshly executed preservation proof, not inherited acceptance. The API-only provider case overlaps the separate repair HTTP case and is not added to totals.

The source-worker RED passed8/22 and failed14 added assertions. First affected GREEN passed45/46; its remaining required-label selector harness error was corrected without changing the product contract or removing assertions. The initial native pack passed12/14 on build KKwBMDeMkaRLM-O5e2Fb-. One failure exposed genuine Delete-cancel focus loss: disabling the trigger before confirmation prevented restoration. The stronger unit RED passed7/8, then the minimal state-order correction passed46/46 at00:13:56UTC; the duplicate-operation guard and shared confirmation owner remain. The earlier jsdom focus-only8/8 diagnostic did not reproduce native disabled-element blur and stays historical. The other native failure was Windows clipboard LF→CRLF conversion. The final assertion normalizes only CRLF→LF and retains actual code points; no clipboard product change, trimming or byte-identical platform output claim follows.

Final workspace14/evidence8 replace inherited7+1, adding 14 net cases; the existing Profile24 consumer cases also pass unchanged. Onboarding adds23 separately. Latest fresh full frontend remains P7-01 573/89; 610/89 is derived573+23+14, not a new full run. Full backend1,034 is likewise derived from1,033+the new SQLite case; the fresh affected91 guard run is separate. Final full regression remains P7-12.

Career proof Actual finite outcome / remaining boundary
Truthful resource states and navigation Populated/empty/pending/failed independent profile/run/variant reads, deliberate retry, section query/Back, existing source/history destinations and three unique CV links pass; structured editor/import/history remains P7-03
Evidence CRUD and isolation Actual create, canceled delete/no write, failed save retaining draft, failed delete retaining row, deliberate retry/reconfirm and successful readback pass. Canonical Career and sibling CV readback after writes, owner denial and scoped requests remain asserted
Keyboard/focus Retry focus, actual section selection/subsequent form traversal and corrected cancel-trigger restoration pass. Failed-save/delete captures retain inherited shell Skip-link/scroll context; complete human focus/spoken-state acceptance remains unverified
Responsive/localised visual review Parent actually opened all22 final raw PNGs: eight EN/NB/theme samples320/360/390/768/1024/1280 short landscape/1440/1920 plus six pending/error states. Fields, titles and actions wrap without observed clipping; all22 recorded root-overflow values are0; the1440 many-item fixture has11 rows
Accessibility Twenty-two all-enabled scans retain0 violation nodes/99 incomplete occurrences. No automated result establishes reader/device/zoom conformance; density was not varied and Career has no global density control
Exit Runtime and actual22-image review support implemented-scope CONDITIONAL GO. Slice-specific final hygiene PASS; normal push8b4d5c2 directly verified; main/production stays NO-GO

All99 incomplete contexts remain recorded:96 color-contrast (74 bgOverlap plus22 invisible notification-badge 0/shortTextContent) and3 aria-hidden-focus targeting #menu-, the hidden MUI section-select portal in narrow evidence states. The actual section and subsequent form keyboard workflows pass; M09/M11 reader/contextual contrast/forced-colors requirements remain pending. Complete HTML/data/related-node/check vectors remain in the exact hashed raw report, with every rule/target/check context summarized in the portable manifest. Controlled English500 details are server-fixture text, distinct from translated product fallback. Sticky appbar/Skip-link placement in error captures reflects recorded scroll/focus context, not a new demonstrated overflow defect.

Final four-source LF digest is 190d0a24368bfc3cc76550ff0f74c272200d3a30f61218a86628449ac83735ce; build qG82wPnFf-IsAkFvXkmn6; 75 exported files, digest 50896e8ad6934b909b83cc487eaf3579516921fde54b19e50a9039db68e04869. Final native report SHA256 is f7a166ec33ecdedd9f0374290961c0daaf1279d8c89d3425fbe3b3a66c4a2360. Source/test/build/export/runner/config, whole runtime/attempt tree, unit history and entry manifests are frozen under .artifacts/phase7/p7-02/career-final/:152 file-reference hashes verified,428 runtime files and81 unit files retained. Parent independently verified152 references/84 unique referenced files with0 errors. Raw hashes/counts remain measured bytes; portable JSON/source canonical-LF policies are explicit. Earlier first-build75-file export/report and failed unit/native attempts stay historical; the first source had already been corrected before export archival, so no original-source snapshot is claimed.

Slice-specific Career static checks passed2026-10-12 05:48:28–05:48:32UTC: four secret/working/staged/entry-whitespace commands exit0; nine Markdown documents/347 local links checked with0errors at that observation;57 qualified groups/32 routes retained and main27657f3 unchanged. Canonical UTF-8/LF static SHA256 is f575a6304bb4d00e11ee77270d60ebdee11f1cd8faf9692adb4c473961b4d8f4. Final hygiene PASS; normal push 8b4d5c21125e800199d3ecc2d9c059a80ac5125d directly verified2026-10-12 05:51:04.849644UTC: localHEAD=origin=live development, local/origin/live main27657f3 unchanged and worktree clean at observation. The successor appends the actual receipt. Measured source hashes apply at8b4d5c2 and immutable snapshots after later P7-03 edits; runtime/source/export/manual qualifications are unchanged.

Preservation and exit

S02/C01/C02/C04/C05/E09 and shared E08/S03 are the finite scope in the 57 matrix. Retain all debt, established auth/private-tree behavior, original routes and semantic action boundaries. Scoped truthful loading/retry does not establish the root cause of historical Dashboard/Board500 observations.

Each completed logical boundary must include reproduction/baseline, actual changes, automated and visual evidence, exact count explanation, source/export identity, manual qualifications and normal commit/push with remote=HEAD. Record observed results here after execution; no skips, expected failures or relaxed assertions can substitute for passing ordinary cases. P7-03 starts only after the applicable P7-02 fixtures/entry are verified. Production main/deployment, P5-13 activation and Phase8 Dashboard customization remain outside this checkpoint.

Mandatory P7-03 entry conditions

Two independent source reviews identify an inherited stable-ID risk in normalizeStructuredCv: job/education/certification/project IDs are dropped, while CV overrides refer to source IDs and the API may assign replacements. Before structured-edit presentation, separately reproduce and repair optional-ID preservation with normalizer/payload/native canonical-and-sibling proof. This is a P7-03 entry condition, not a P7-02 regression or completed repair. No date-loss claim is made; server StartDate derives from Start.

Retain RD21 concurrency as a separate obligation. Prove dirty drafts survive locale/navigation/read-retry boundaries and held-PUT/pending-write ownership/recovery before changing save/history behavior; resolve or explicitly bound stale profile/job saves and creation-intent behavior using the existing contracts. Known canonical/sibling fixtures and actual server IDs remain the basis; no guessed revision/schema/provider behavior. P7-03 begins after this slice's successful normal push. Import/history remains its approved second boundary; P5-13 and Phase8 remain deferred.