P7-02 — Onboarding and Career overview/evidence
Status: implemented onboarding guidance CONDITIONAL GO; final hygiene PASS, normal push pending. Career overview/evidence and whole P7-02 remain pending. 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. Commit/push remains pending until its actual receipt.
| 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; actual normal commit/push receipt PENDING |
Career overview/evidence commit
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.
Required native evidence covers populated/empty/loading/error/retry, raw-copy/source/history destinations, actual evidence create/delete confirmation/no-write cancellation/readback, long/many items and keyboard/EN/NB/theme/narrow-screen states. Canonical/sibling/frozen boundaries and foreign-owner denial remain applicable. Any concurrency/save-owner change requires the separate P7-03 disposition; unavailable human/device evidence is carried explicitly. Implementation/results/commit/push for this second boundary are PENDING.
Preservation and exit
S02/C02/C04/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.