fix(ux): preserve localized save errors and current language retries
This commit is contained in:
@@ -5,3 +5,10 @@ Every completed logical unit is pushed to `codex/ui-redesign-phase4`, without fo
|
||||
| Unit | Commit | Validation / synchronization |
|
||||
|---|---|---|
|
||||
| Approved planning/P6-00 baseline | `3d9341e70f71a3e625f3a2108d366f6644f565d6` | Remote=HEAD, clean at entry |
|
||||
| Historical system/workflow audit at execution entry | `9d6d29dba4733778e478909d4ff74a25409b3115` | Fresh fetch: development HEAD=origin; seven modified files preserved |
|
||||
| Current P6-00 baseline and design audit | `7da083c374abcb6b34600f3c6667830d47b14760` | Whitespace/source/document review; pushed normally; HEAD=origin immediately after push, main unchanged |
|
||||
| P6-01 shared semantic/contrast/panel corrections | `a94ea0a4a4695d1c196366ac39793a901485e919` | Final521 units/85 suites, type/lint/build and4 native Settings cases green; normal push, HEAD=origin |
|
||||
|
||||
## Current execution evidence
|
||||
|
||||
The owner's 2026-10-11 P6-00–P6-05 sequence supersedes the older proposal. Native lanes run against isolated synthetic SQLite with local-only browser network; never production. UI sources are frozen before the final build and final complete runs. Raw command logs stay under `.artifacts/phase6/current/`; portable commands, outcomes and SHA256 fingerprints live in each checkpoint and the final manifest. Failed/intermediate attempts are retained and explained; final retries/skip/expected-failure counts are checked separately.
|
||||
|
||||
@@ -10,8 +10,8 @@ Fetched development HEAD/remote: `9d6d29dba4733778e478909d4ff74a25409b3115`, `co
|
||||
|
||||
## Checkpoints
|
||||
|
||||
- [ ] **P6-00:** Review Phase 3/4/5 records, all 57 original PRES contracts and actual source; record surface/state coverage, prioritized findings, preserved dirty intake and baseline. Commit/push audit only.
|
||||
- [ ] **P6-01:** At existing owners, fix reproduced shared semantic/contrast/tab-association issues; prove focused failures and corrections, then regress affected routes. Keep typography sizes, fonts, density and renderer unchanged. Commit/push coherent repairs.
|
||||
- [x] **P6-00:** Review Phase 3/4/5 records, all 57 original PRES contracts and actual source; record surface/state coverage, prioritized findings, preserved dirty intake and baseline. Audit pushed at `7da083c`, remote=HEAD.
|
||||
- [x] **P6-01:** Shared semantic/contrast/tab associations verified; final521 unit cases and4 native panel cases pass. Pushed `a94ea0a`, remote=HEAD; full native cross-route acceptance follows in P6-05.
|
||||
- [ ] **P6-02:** Verify navigation/query/history/source/override and save/retry workflows; finish retained company-dialog error feedback and language persistence feedback with localized tests and native HTTP readback. Review approved AI purpose/provenance/review/conflict patterns without activating withheld work. Commit/push.
|
||||
- [ ] **P6-03:** Collect EN/Bokmål, light/dark, 320–wide desktop, orientation, keyboard, zoom/reflow and all-enabled axe evidence. Triage every remaining violation/incomplete category; inspect representative screenshots. Retain M01–M13 and physical-device requirements. Commit/push.
|
||||
- [ ] **P6-04:** Record production bundle bytes and reproducible native route/data/long-CV performance, requests, long tasks/CLS and memory where tooling supports them. Audit shared consumers and O(N) scaling; optimize only a demonstrated bounded cause. Do not invent budgets. Commit/push measured findings.
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
# P6-02 — Existing AI interaction review
|
||||
|
||||
This is a source/caller and regression-contract review of existing approved tools, not model quality evaluation. The [Phase3 AI architecture](../../phase-3/AI_INTERACTION_MODEL.md), [AI principles](../../AI_PRINCIPLES.md), [original contracts](../../audit/FUNCTIONALITY_INVENTORY.md) and [P5-13 return conditions](../../phase-5/OPEN_BLOCKERS.md#p5-13-deferred-debt-and-return-conditions--2026-10-08) remain authoritative. No model/provider call, qualification, newly designed CV review UI or activation is performed.
|
||||
|
||||
## Existing presentation and mutation boundaries
|
||||
|
||||
| Entry / purpose and actual owner | Source/pending/error/review behavior found in source | Preservation/test evidence and remaining qualification |
|
||||
|---|---|---|
|
||||
| **Job analysis, match and timeline** — [ApplicationIntelligence](../../../../job-tracker-ui/src/components/ApplicationIntelligence.tsx) | Read-only backend answers load by job/category, with PageSection/ViewStateNotice and retained text/chip/data context. Mount reads existing data; it does not start AI. Internal `useIntelligence` suppresses results after unmount, but error shell currently declares no Retry action | [application-intelligence tests](../../../../job-tracker-ui/src/application-intelligence.test.tsx), [job-sections](../../../../job-tracker-ui/e2e/job-sections-presentation.spec.ts); W02/W03/E09. Source/revision/model provenance is limited to returned contract; cannot certify claim truth from a chip |
|
||||
| **Strategy snapshot** — [ApplicationWorkflowAssist](../../../../job-tracker-ui/src/components/ApplicationWorkflowAssist.tsx) | Explicit Generate queues an operation; stable operationID, progress stage/percent,1000ms polling while nonterminal, existing allowed Cancel/Retry and terminal toast dedup. Existing plan remains distinct from queue/result. No auto-generation on navigation | [workflow-assist tests](../../../../job-tracker-ui/src/application-workflow-assist.test.tsx), StrategySnapshotOperation backend tests; W03/W12/S04. Enabled-worker F20 and actual model/delivery quality remain independently unqualified |
|
||||
| **Status/workflow suggestion** — [ApplicationWorkflowAssist](../../../../job-tracker-ui/src/components/ApplicationWorkflowAssist.tsx) | Existing status identity and rationale/signal are displayed. Suggested status is not a newly created enum/pipeline or hiring probability; any write remains existing explicit handler | [workflow trust](../../../../job-tracker-ui/src/workflow-trust-signals.test.tsx), JobApplicationsWorkflowSignals/ApplicationIntelligence backend tests; W02/W03. No global change to statuses for visual consistency |
|
||||
| **Tailoring/source CV** — [ApplicationAssets](../../../../job-tracker-ui/src/components/ApplicationAssets.tsx) | Existing job-attached CV relation and selected source are shown; create/copy/tailor uses current owner API. This changes/selects a variant; it does not silently promote CV changes to canonical profile | [application-assets](../../../../job-tracker-ui/src/application-assets.test.tsx), [native preservation](../../../../job-tracker-ui/e2e/redesign-preservation.spec.ts); W05/C07/E09. Broader live tailoring quality remains unverified |
|
||||
| **Cover letter** — local `CoverLetterAiAssistant` in [ApplicationAssets](../../../../job-tracker-ui/src/components/ApplicationAssets.tsx) | Purpose/tone/action/document language/additional instructions and attached CV name; busy Generate; persistent local error with explicit Retry; Current/Suggestion side-by-side (stacked narrow). Apply puts proposal into local letter draft, Reject clears proposal; separate Save/history owner persists. No send implied | [application-assets](../../../../job-tracker-ui/src/application-assets.test.tsx), [job-sections](../../../../job-tracker-ui/e2e/job-sections-presentation.spec.ts), ApplicationAssets/AiWorkspace backend tests; W06/M04. Draft source freshness and delayed generation need bounded follow-up below; mocked responses do not establish model factuality |
|
||||
| **Interview preparation** — local `InterviewAiAssistant` in [InterviewPrep](../../../../job-tracker-ui/src/components/InterviewPrep.tsx) | Attached CV source, explicit focus/category/language/instructions, busy Generate, persistent error and user-initiated rerun. Add to prep explicitly persists one AI-sourced entry; Reject clears proposal. Answer edits remain local until Save and physical interview schedule is not inferred | [interview-prep](../../../../job-tracker-ui/src/interview-prep.test.tsx), InterviewAiContext/InterviewPrepPersistence backend tests; W09/W10. Focus freshness/review and actual generated personal facts require independent qualification |
|
||||
| **Career extraction/import** — [CareerProfilePage](../../../../job-tracker-ui/src/views/CareerProfilePage.tsx) | Existing upload/process/operation/diff/low-confidence selections/accept/discard/retry/cancel. Canonical profile changes require explicit selected review, with manual editing available. It is a distinct extraction destination, not CV proposal Apply | [profile-page tests](../../../../job-tracker-ui/src/profile-page.test.tsx), ProfileCvController/CvProfileDiffService tests, native keyboard picker in [responsive audit](../../../../job-tracker-ui/e2e/responsive-accessibility-audit.spec.ts); C01–C03/E09. OCR/corpus/model accuracy/full human review remain open; do not simplify away low-confidence controls |
|
||||
| **Existing CV section assistant** — [AiSectionAssistant](../../../../job-tracker-ui/src/components/cv/AiSectionAssistant.tsx) | Purpose/action/document language, editable proposed text, Current, fact-check reminder, Apply/Reject/Close. Local requestID invalidates proposal on text/target/language/entitlement change and ignores stale response. Error uses shared toast; source/apply delegates to one editor owner | [ai-section-assistant](../../../../job-tracker-ui/src/ai-section-assistant.test.tsx), [CV editor tests](../../../../job-tracker-ui/src/cv-builder-deep-link.test.tsx), CV grounding/readiness; C11/C10/S04. **Production withheld**, not successful review UI completion |
|
||||
| **Existing whole-document CV assistant** — `DocumentAiTab`/[editor callbacks](../../../../job-tracker-ui/src/views/CvBuilderEditor.tsx) | Block IDs/structure/source are retained; invalid/missing/duplicate blocks cannot apply. Editor flushes current queued save, verifies epoch/revision, sends expectedVersion, applies server-issued proposalToken, and handles conflict. RequestID/target content invalidation retains account/source boundaries | CV editor/CvAiGrounding/CvAiReadiness/CvRevisionReadiness tests, [real-HTTP withholding contract](../../../../job-tracker-ui/ai-tests/cv-ai-readiness.spec.ts); C10/C11/E09. Deterministic guards cannot qualify factual generated output or replace absent P5-13 redesigned review |
|
||||
| **Privacy, entitlement and metering** — existing accountPlan/AiPrivacySettingsCard/AiUsageCard/API | Existing server-owned privacy/ownership/entitlement and usage limits govern action; unavailable/locked state must preserve manual alternatives. Client canUseAi is presentation, not authorization | AiPrivacyPolicy/AiUsageMeter/AccountPlans/API authorization suites, [AI readiness](../../phase-5/p5-13-readiness/README.md); S04/E09. Actual provider/checkout config is not proven by these tests |
|
||||
|
||||
## Consistency findings and bounded future reproduction
|
||||
|
||||
Common established pattern is explicit contextual invocation→bounded pending/error→review→deliberate domain action. Source/destination vocabulary is meaningful: Apply to CV can autosave via the established variant owner; Use in letter creates a local draft with separate Save; Add to prep creates a reviewed persisted item; accepting extraction changes selected canonical fields; none authorizes email send. These differences are intentional and must survive any presentation reuse.
|
||||
|
||||
The existing letter assistant has an explicit Retry button in its inline error; interview reruns through Generate; CV errors use existing toast and Generate. Read-only intelligence error presentation has no local Retry. This is a review finding for remaining domain migration, not evidence that a failed request erased original content. Reuse existing shared alert/state infrastructure only after retaining domain recovery behavior; no second notification/review framework.
|
||||
|
||||
**AI-SOURCE-01 — pending letter context:** source inspection finds no requestID/original-text fingerprint invalidation inside the local letter generator. To reproduce safely later, intercept/delay a synthetic generation response, change the editable manual letter while pending, settle the response and inspect Current/Suggestion/Apply. Expected acceptance is a review explicitly tied to current source or invalidation requiring regenerate; preserve the edited original and no-write Reject. Current Apply sets only a local draft and explicit Save remains, so do not misreport this source concern as proved automatic persisted data loss. No native failure is claimed here.
|
||||
|
||||
**AI-SOURCE-02 — pending interview focus:** generation snapshots selected focus into context, while the selected focus control remains editable and acceptance uses the current selected category/title. A delayed synthetic response with focus change is the required reproduction; verify stale review/category behavior and user recognition before correcting the narrow owner. No request/acceptance/backend policy is broadened for style. These existing controls belong to the Phase7 remaining application workflow review unless a fresh proof demonstrates a severe present defect.
|
||||
|
||||
Regeneration, source edits, cancelled operation, late response, missing/foreign record, account expiry/change and invalid proposal deserve the existing boundary assertions. A backend guard passing does not imply every legacy UI has the same local conflict affordance. Do not merge disparate Apply callbacks, request payloads, revisions or save/send semantics to reduce duplicate JSX.
|
||||
|
||||
## P5-13 remains withheld
|
||||
|
||||
PRES-C11/P5-13 is **DEFERRED / UNQUALIFIED / REVIEW UI NOT IMPLEMENTED**. The actual configured-target frozen32-case/366-call qualification has0 completed calls and0 independent human semantic reviews. Candidate runtime/model/hardware information is not measured approved identity. [Production registration](../../../../JobTrackerApi/Program.cs) withholds CvAiSuggestionService; generation/Apply return established503 `cv_ai_unavailable` before provider request/content/history write. Existing unrelated AI paths remain.
|
||||
|
||||
Future qualified P5-13 UI should reuse existing labelled source/destination/current/proposed comparison, non-color review semantics, busy/progress/error/Retry, explicit Accept/Reject/edited proposal and stale-context conflicts. Its source/block/proposal token/owner/entitlement/grounding validators remain authoritative and domain-specific. Manual workflow remains reachable when unavailable. This review neither designs/activates the withheld capability nor runs model qualification.
|
||||
|
||||
Fresh applicable frontend/backend/sidecar/real-HTTP guard results must come from the [P6-05 manifest](../p6-05/evidence/validation.json). Human AI semantics, reader interpretation, live model quality/provider operation remain NOT VERIFIED. Keep all qualification/deferred requirements open, and keep Production NO-GO.
|
||||
@@ -0,0 +1,43 @@
|
||||
# P6-02 — Cross-application UX and workflow review
|
||||
|
||||
Fresh bounded repair result: **4/4 native EN/Bokmål company and language error/retry/persistence/reload workflows pass**, retries0, skips0; [portable feedback proof](../p6-05/evidence/feedback-results.json). The final complete521-unit run also passes. The first native company cases exposed generic English Axios500 text; the shared API helper now uses translated caller fallbacks for transport failures, while server validation and explicit cancellation/session explanations remain. Five actual-helper cases pass after2 localized RED cases. Company list/card dates and pending company-filter labels also reuse the established locale/translation owners. Full integrated native evidence follows in P6-05.
|
||||
|
||||
## Scope and baseline
|
||||
|
||||
Review the existing approved navigation and complete task boundaries across shell, Jobs, job workspace, Dashboard/Analytics, Career source/CV variants and existing AI entry points. Retain [Phase 3 information architecture](../../phase-3/INFORMATION_ARCHITECTURE.md), [current32-route acceptance](../../phase-5/p5-15/ROUTE_ACCEPTANCE.md) and [all57 PRES contracts](../p6-05/PRESERVATION.md). Large remaining page migrations stay in the [Phase7 handoff](../p6-05/PHASE7_HANDOFF.md).
|
||||
|
||||
Authoritative inherited evidence is [P5-15-06](../../phase-5/p5-15/p5-15-06/README.md): backend1,033/frontend498/ordinary browser148/diagnostics3; scoped implemented-scope CONDITIONAL GO, full original scope NOT COMPLETE, production NO-GO. This source review is separate from fresh execution: the [P6-05 manifest](../p6-05/evidence/validation.json) must record the current build/source, actual native results and count deltas. Listing an existing test is a coverage map, not a fresh PASS.
|
||||
|
||||
## Workflow assessment and representative browser map
|
||||
|
||||
| Area and reviewed behavior | Actual source observation | Executable representative journey / preservation |
|
||||
|---|---|---|
|
||||
| Navigation, hierarchy, rail/mobile, heading focus | [AppShell](../../../../job-tracker-ui/src/layout/AppShell.tsx) and [App](../../../../job-tracker-ui/src/App.tsx) retain grouped Jobs/Career/Insights/Settings ownership and admin-only entries. No evidence supports a new IA. Existing public/auth/alias routes remain | [shell-readiness](../../../../job-tracker-ui/e2e/shell-readiness.spec.ts): grouped shell/rail/mobile, every existing utility command, dirty editor Cancel, route focus and theme/locale. [analytics-auth-repair](../../../../job-tracker-ui/e2e/analytics-auth-repair.spec.ts): complete internal query/fragment return, expiry versus logout, denied/tampered targets. E02–E09 |
|
||||
| Commands and keyboard | [QuickCommandDialog](../../../../job-tracker-ui/src/components/QuickCommandDialog.tsx) retains six static commands and bounded job/company results,250ms search, abort on close/query change, Retry, IME-safe arrows/Home/End/Enter. Add opens reviewed form, company goes to existing edit query. Result count/selection uses existing polite region | [shell-readiness](../../../../job-tracker-ui/e2e/shell-readiness.spec.ts): no-write command activation, keyboard/IME/error/retry/stale disposal; [responsive audit](../../../../job-tracker-ui/e2e/responsive-accessibility-audit.spec.ts): native focus/empty/Escape/workflow dialog. E07/E09/J03/J08. Spoken names/announcements remain manual |
|
||||
| Table/Board, search/filter/saved view/sort/page | [JobTable](../../../../job-tracker-ui/src/components/JobTable.tsx) owns committed query and Table paging, [jobsQuery](../../../../job-tracker-ui/src/jobsQuery.ts) normalizes shared filter semantics, [KanbanBoard](../../../../job-tracker-ui/src/components/KanbanBoard.tsx) consumes full matching query. Table read is disabled while Board is active; view links clone existing query/hash. Density changes spacing, not feature visibility | [board-presentation](../../../../job-tracker-ui/e2e/board-presentation.spec.ts): every-page Table/Board ID parity, filtered movement/reload, search/custom-status/deletion, Back/Forward, alias and no duplicate active-view read. [table-density](../../../../job-tracker-ui/e2e/table-density.spec.ts): real sort/page/select/delete/Trash restore and phone actions. J05–J07/S03 |
|
||||
| Frequent entry and return | Table and Board history store originating row/card ID; explicit workspace Back uses local `from` or Jobs and sends numeric focus. No mounted background list assumption. Full job page is existing complete entry; P5-05 preview host is deferred | [table-density](../../../../job-tracker-ui/e2e/table-density.spec.ts), [board-presentation](../../../../job-tracker-ui/e2e/board-presentation.spec.ts) and [redesign-preservation](../../../../job-tracker-ui/e2e/redesign-preservation.spec.ts): browser/explicit Back, retained query/view/page/focus, owned/foreign paths. J05/J07/W01 |
|
||||
| Job details, sections, application status, timeline and artifacts | [ApplicationWorkspacePage](../../../../job-tracker-ui/src/views/ApplicationWorkspacePage.tsx) owns seven approved sections and Application CV/Letter/Answers/Submission, Timeline Activity/Correspondence. URL updates clone query/state. Letter/answers dirty blockers cover route/query navigation; Cancel preserves draft. Frozen packages and live artifacts remain distinct | [job-overview](../../../../job-tracker-ui/e2e/job-overview-presentation.spec.ts), [job-sections](../../../../job-tracker-ui/e2e/job-sections-presentation.spec.ts), [redesign-preservation](../../../../job-tracker-ui/e2e/redesign-preservation.spec.ts): canonical/legacy sections, independent partial failures, dirty Cancel/Discard, native capture/source mutation/archive ZIP. W01–W12; P2-D01 ordinary passing |
|
||||
| Career source and CV override clarity | [CvBuilderEditor](../../../../job-tracker-ui/src/views/CvBuilderEditor.tsx) labels selected CV scope and source navigation, keeps field inheritance/reset, long-tail/custom sections, one save/undo/history owner and editor/preview state. Career canonical editing is a different owner and remains Phase7 migration | [cv-section-scope](../../../../job-tracker-ui/e2e/cv-section-scope.spec.ts): source/override/reset/inherited updates, canonical/sibling readback, ordering/custom sections. [responsive audit](../../../../job-tracker-ui/e2e/responsive-accessibility-audit.spec.ts): existing `/career?section=profile` and Back. C01–C10/W05/E09 |
|
||||
| CV save/history/template/preview/export | Settings history uses current source; frozen packages separately capture content. Preview uses original physical pagination and white paper inside themed chrome. Conflict retains/downloads draft; reload is reviewed, not silent overwrite | [cv-readiness](../../../../job-tracker-ui/e2e/cv-readiness.spec.ts): revision collision/restore/conflict/download recovery and native original rendering corpus. [cv-preview](../../../../job-tracker-ui/e2e/cv-preview-presentation.spec.ts), [cv-settings](../../../../job-tracker-ui/e2e/cv-settings-presentation.spec.ts), [cv-responsive](../../../../job-tracker-ui/e2e/cv-responsive-workflow.spec.ts): retained scroll/draft/pane/settings ownership. C05–C12 |
|
||||
| Dashboard/Analytics scanability and provenance | [DashboardView](../../../../job-tracker-ui/src/components/DashboardView.tsx) owns both report modes: independent summary/trend loaders, exact source/sample labels and values-table alternatives. Analytics6/12/24months is URL-owned; five Dashboard visibility flags are owner-local and do not hide Analytics. No fabricated metric or Phase8 widget system | [dashboard-presentation](../../../../job-tracker-ui/e2e/dashboard-presentation.spec.ts), [analytics-presentation](../../../../job-tracker-ui/e2e/analytics-presentation.spec.ts): seeded exact values, period/history/query/readout/drill-downs, independent empty/error states, visibility reload/account separation. [responsive audit](../../../../job-tracker-ui/e2e/responsive-accessibility-audit.spec.ts): custom-status targets. S01/S02/J05/J09 |
|
||||
| Existing AI tools | Context, manual invocation, generation versus review versus save/send and denied/unavailable behavior retain domain owners. Differences are identified in [AI review](AI_REVIEW.md); future P5-13 follows established presentation and authoritative validation without activation | Frontend/domain/HTTP tests mapped in AI review; no live model qualification. W03/W05/W06/W09/C03/C11/S04/E09 |
|
||||
|
||||
This map requires real loaded headings/fields/actions and request/readback assertions in the fresh suite. Static screenshots alone cannot establish navigation/dirty/retry/export semantics. Provider-backed discovery/mail/calendar and physical/AT acceptance stay explicitly bounded.
|
||||
|
||||
## Specific friction and bounded corrections
|
||||
|
||||
| Finding and reproduction | Expected user outcome / bounded change | Evidence and limitation |
|
||||
|---|---|---|
|
||||
| **UX-01 company failed-save feedback**: open Companies through row or command; edit contact/name; fail `PUT /companies/{id}`; submit from keyboard. Historical transient toast was outside modal's accessible subtree while draft remained | A persistent error lives inside the same labelled dialog; Save retries the retained draft; successful save clears error/closes and persists. Reuse MUI Alert/safe API error helper; no data/save/protocol change | [P6-01](../p6-01/README.md) source correction and focused unit evidence; two new EN/NB native cases in [responsive audit](../../../../job-tracker-ui/e2e/responsive-accessibility-audit.spec.ts) require dialog alert, unchanged failed server state, retry200 and reload. Scoped P4-02-D02 feedback closure only; complete Company migration/reader acceptance remains open. J08/E08 |
|
||||
| **UX-02 language save failure scope**: change Settings language while `PUT /auth/preferences/language` fails. Local UI/localStorage intentionally change immediately; historical caller suppressed failure, leaving account preference stale without notice | Existing toast infrastructure explains this device changed but account save failed, and offers deliberate Retry in the selected locale. Preserve immediate local change and original backend endpoint; no blind retry/revert/new save framework | [P6-01](../p6-01/README.md), i18n provider unit evidence and two EN/NB native cases in [responsive audit](../../../../job-tracker-ui/e2e/responsive-accessibility-audit.spec.ts): local scope, visible error, retry204, reload retained. Does not diagnose RD11 language500 or RD12 notification locking. E08/S03 |
|
||||
| **UX-03 Settings panel associations**: desktop tabs/narrow section selector must lead to one named active panel. Historical TabPanel has no tab/panel semantics | Bounded tab IDs/aria-controls/panel name and narrow labelled selector associations; preserve tab/draft lifetime and independent saves | P6-03 owns this cross-application semantic correction and its four theme/locale native cases. No repeated Settings visual migration. S03/E08 |
|
||||
| **UX-04 differing AI pending/retry/stale presentation** | Retain explicit source/destination/review/manual workflow; document differences and qualify delayed responses before any shared extraction | [AI review](AI_REVIEW.md): source-level concern, not a manufactured native failure. No unqualified P5-13 UI or global AI framework |
|
||||
| **UX-05 repeated reads and large-result costs** | Measure before proposing compatible request/memoisation/virtualisation changes; preserve complete results, error/draft behavior and owner boundaries | [P6-04](../p6-04/README.md). Source candidates are not runtime timing or root-cause claims |
|
||||
|
||||
No major section is moved, new route fabricated, document renderer changed, save semantics merged or remaining Phase7 page migrated by this checkpoint. Existing intentional variation includes data tables versus readable editor text, document paper versus app theme, shell768 versus CV900 boundary, and review/apply versus explicit save/send.
|
||||
|
||||
## Execution and outcome
|
||||
|
||||
Source audit and executable workflow mapping are recorded above. **Fresh native/automated results and current commit/push identity are supplied by the [P6-05 manifest](../p6-05/evidence/validation.json) and [chronological ledger](../COMMITS.md); a pending run must not be represented as passed.** Company/language corrections require their actual focused and native results before scoped GO. Any final unexpected failure remains in the evidence with its disposition.
|
||||
|
||||
Human spoken-name/announcement/reading-order testing, physical touch/software keyboard/mobile AT, production provider/configuration/output and full-original-group acceptance remain NOT VERIFIED where absent. Keep [RD01–RD28](../../phase-5/p5-15/READINESS_DEBT.md), P5-13/P5-05/`followMode` deferrals and Production NO-GO. The [Phase7 handoff](../p6-05/PHASE7_HANDOFF.md) specifies remaining migrations; none starts here.
|
||||
@@ -0,0 +1,89 @@
|
||||
{
|
||||
"command": {
|
||||
"name": "feedback",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"node",
|
||||
"node_modules/@playwright/test/cli.js",
|
||||
"test",
|
||||
"e2e/responsive-accessibility-audit.spec.ts",
|
||||
"--grep",
|
||||
"P6-02",
|
||||
"--retries=0",
|
||||
"--reporter=list,json",
|
||||
"--output=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\phase6\\current\\ui\\feedback-results"
|
||||
],
|
||||
"startedUtc": "2026-10-11T01:02:05.714496+00:00",
|
||||
"finishedUtc": "2026-10-11T01:03:17.929201+00:00",
|
||||
"exitCode": 0,
|
||||
"stats": {
|
||||
"startTime": "2026-10-11T01:02:06.277Z",
|
||||
"duration": 71621.959,
|
||||
"expected": 4,
|
||||
"skipped": 0,
|
||||
"unexpected": 0,
|
||||
"flaky": 0
|
||||
}
|
||||
},
|
||||
"reportSha256": "0fb53c6a5716bffe2e0e27eda0e0937b2a1ae8a0faecef6b6267cbf32ee9dd2a",
|
||||
"logSha256": "207080b3fadbd41a3e794f2e750ed8a6cd03b32be3cf1b9cab676543adcc7d59",
|
||||
"stats": {
|
||||
"startTime": "2026-10-11T01:02:06.277Z",
|
||||
"duration": 71621.959,
|
||||
"expected": 4,
|
||||
"skipped": 0,
|
||||
"unexpected": 0,
|
||||
"flaky": 0
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"title": "[P6-02] en company save failure stays in the dialog and retry persists the retained draft",
|
||||
"expectedStatus": "passed",
|
||||
"status": "expected",
|
||||
"results": [
|
||||
{
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"durationMs": 17389
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "[P6-02] nb company save failure stays in the dialog and retry persists the retained draft",
|
||||
"expectedStatus": "passed",
|
||||
"status": "expected",
|
||||
"results": [
|
||||
{
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"durationMs": 16312
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "[P6-02] en failed account language preference reports local scope and retry persists",
|
||||
"expectedStatus": "passed",
|
||||
"status": "expected",
|
||||
"results": [
|
||||
{
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"durationMs": 15442
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "[P6-02] nb failed account language preference reports local scope and retry persists",
|
||||
"expectedStatus": "passed",
|
||||
"status": "expected",
|
||||
"results": [
|
||||
{
|
||||
"status": "passed",
|
||||
"retry": 0,
|
||||
"durationMs": 15301
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user