docs(redesign): record Rules draft repair acceptance
@@ -1,6 +1,8 @@
|
||||
# P5-15-01 functional defect register
|
||||
|
||||
**R-01 current disposition:** DISCOVERY-01 is **CLOSED for the verified SQLite listing/error/recovery defect** by the [bounded repair](saved-search-repair/README.md). Live deployed-provider qualification and complete PRES-J02 delivery/device acceptance remain open. AUTH-01 and SETTINGS-01 remain P2/OPEN; current reproduced open counts areP0=0/P1=0/P2=2/P3=0. Original reproduction/severity/evidence below remain historical; closing this defect does not erase release blockers or grant full-group PASS.
|
||||
**R-02 current disposition:** [Rules draft repair](rules-draft-repair/README.md) closes SETTINGS-01 for verified internal draft retention and related Save/validation/failure/retry/Discard/account isolation. DISCOVERY-01 remains scoped CLOSED by R-01. **AUTH-01 remains P2/OPEN; current reproduced open totals:P0=0/P1=0/P2=1/P3=0.** Fresh complete R-02 ordinary browser128pass/1fail and diagnostics2/2 retain the remaining real failure. Production and P5-15-02 remain NO-GO. Unknown historical Rules/notification/language500 causes and [CV intermittent observation](INTERMITTENT_FAILURES.md) remain open.
|
||||
|
||||
**Historical R-01 disposition:** DISCOVERY-01 is **CLOSED for the verified SQLite listing/error/recovery defect** by the [bounded repair](saved-search-repair/README.md). Live deployed-provider qualification and complete PRES-J02 delivery/device acceptance remain open. AUTH-01 and SETTINGS-01 remained P2/OPEN at R-01; reproduced open counts wereP0=0/P1=0/P2=2/P3=0. Original reproduction/severity/evidence below remain historical; closing this defect does not erase release blockers or grant full-group PASS.
|
||||
|
||||
Audit source `932b962b9038ddb5ad59b982c0199475bfb50454`. Findings use synthetic accounts and disposable local data; no production account, provider or infrastructure is exercised. An audit finding is not automatically a regression introduced by Phase 5. Application source is unchanged here; neither source inspection nor an InMemory pass can override a native failure.
|
||||
|
||||
@@ -45,7 +47,7 @@ P0 means serious security/data loss; P1 an important broken workflow; P2 limited
|
||||
|
||||
## P5-15-01-SETTINGS-01 — Unsaved Rules draft disappears on tab change
|
||||
|
||||
**Confirmed P2 / OPEN.** PRES-S03; `/settings` Follow-ups→Notifications→Follow-ups. The original preservation ledger already recorded this risk; native execution now establishes the failure. This is silent loss of an in-progress edit, not deletion or corruption of persisted rules.
|
||||
**Confirmed P2 at audit / CLOSED by R-02 for the verified Settings-session draft/save/error scope.** PRES-S03; `/settings` Follow-ups→Notifications→Follow-ups. The original failed observation below remains historical. R-02 retains the single draft above the unmounting tabs and proves explicit Save/error/retry/discard/account behaviour; unknown backend500 causes and other Settings acceptance stay open. This was silent loss of an in-progress edit, not deletion or corruption of persisted rules.
|
||||
|
||||
| Field | Evidence-based finding |
|
||||
|---|---|
|
||||
@@ -66,7 +68,7 @@ The two standalone [preference diagnostics](diagnostics/README.md) assert intend
|
||||
|
||||
| Item | Current disposition / required action |
|
||||
|---|---|
|
||||
| Unsaved Rules draft on tab change | Confirmed P2 SETTINGS-01 above; native failure is not normalized into a pass |
|
||||
| Unsaved Rules draft on tab change | Original native P2 SETTINGS-01 is retained historically; R-02 proves the scoped repair without closing unrelated persistence reliability |
|
||||
| Language/notification preference writes | Three native overlap rounds succeeded, including six writes, twelve concurrent reads, persisted readback and reload. Historical language PUT500 and notification SQLite/concurrency failures remain open; **not reproduced in this bounded run** is not fixed. No cause for the historical language500 is established; overlapping Identity writes remain a hypothesis |
|
||||
| Company modal failure feedback; command/attachment initial focus races | Earlier finite failure observations remain open. Current passing keyboard/modal fixtures do not prove the historical race or outside-modal feedback debt closed; P5-15-02 triage and 04 owner repair as needed |
|
||||
| Board scaling and physical touch | Finite 250-ID parity is functional evidence only; full-result memory/request/DOM growth and real device drag remain unqualified. No arbitrary capacity threshold is invented |
|
||||
@@ -76,4 +78,4 @@ The two standalone [preference diagnostics](diagnostics/README.md) assert intend
|
||||
|
||||
**No P0 is demonstrated by the collected evidence.** That is a bounded finding, not an exhaustive security certification. At the original audit, P1 saved-search verification and dependent activity were blocked; R-01 now supplies the scoped repair proof; independent audit evidence can still be collected safely.
|
||||
|
||||
Original audit finding totals: **P0 0 / P1 1 / P2 2 / P3 0**. Current open reproduced totals after R-01: **P0 0 / P1 0 / P2 2 / P3 0**. These are three distinct failures, not the same count as failing browser cases: normal/admin cases share DISCOVERY-01; AUTH-01 occupies the anonymous case; SETTINGS-01 is a separate diagnostic. Carried failures/evidence gaps are additional debt, not silently closed or counted as newly reproduced defects.
|
||||
Original audit finding totals: **P0 0 / P1 1 / P2 2 / P3 0**. Historical open totals after R-01: **P0 0 / P1 0 / P2 2 / P3 0**; current R-02 totals are **P0 0 / P1 0 / P2 1 / P3 0**. These are three distinct original failures, not the same count as failing browser cases: normal/admin cases shared DISCOVERY-01; AUTH-01 occupies the anonymous case; SETTINGS-01 was a separate diagnostic. Carried failures/evidence gaps are additional debt, not silently closed or counted as newly reproduced defects.
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
# P5-15-01 intermittent observations
|
||||
|
||||
## IF-CV-UNSAVED-01 — Preview exit “Unsaved” assertion
|
||||
|
||||
**OPEN; cause not established; no CV repair.** PRES-C06/C10/E08. R-01's first complete frontend rerun passed463/failed1 of464. The case `[P5-11 PRES-C06 C10 E08] returning from preview focuses the existing editor without changing the pending draft` failed its `getByText('Unsaved')` assertion in `cv-builder-deep-link.test.tsx` (recorded line751).
|
||||
|
||||
The unchanged case passed in isolation and an unchanged complete rerun passed464/464. Those later passes do not establish a cause or close the observation. [R-01 portable report/fingerprints](saved-search-repair/evidence/validation.json) retain `.artifacts/p5-15-01R-01/frontend-final/attempt1-jest.json`, `attempt1-command.json`, `cv-preview-diagnostic.json`, `jest.json` and `command.json`. The additional `attempt1-jest.log` remains a local diagnostic; it is not fingerprinted in that original portable manifest.
|
||||
|
||||
R-02's fresh complete frontend472/472 includes this unchanged case; its complete ordinary browser run is128pass/1unrelated Analytics failure, with all117inherited cases passing. No assertion, timeout, skip, retry or CV implementation is changed to obtain those results. [R-02 results](rules-draft-repair/evidence/validation.json) record those separate lanes; neither passing lane diagnoses this intermittent assertion. Ownership remains CV/test-reliability review at the appropriate acceptance checkpoint, if recurrence or targeted investigation justifies it. Preserve a failing trace and pending draft/focus state before any bounded fix; do not widen the Rules repair into a speculative CV change.
|
||||
@@ -1,6 +1,8 @@
|
||||
# P5-15-01 functional preservation results
|
||||
|
||||
**Successor R-01:** [saved-search repair](saved-search-repair/README.md) verifies the native SQLite/list feedback repair. J02 is now PARTIAL; current57 totals are54PARTIAL/2FAIL/1DEFERRED in the [parent successor column](../PRESERVATION_ACCEPTANCE.md). This01 matrix and its53PARTIAL/3FAIL/1DEFERRED totals remain the original audit outcome, not a current open-defect count. No full group has been certified PASS.
|
||||
**Current R-02 successor:** [Rules draft repair](rules-draft-repair/README.md) closes SETTINGS-01 for its verified draft/save/error/account scope. This matrix remains the historical01 audit; the [parent successor matrix](../PRESERVATION_ACCEPTANCE.md) now records **55PARTIAL/1FAIL/1DEFERRED**, zero whole-group PASS/BLOCKED/NOT VERIFIED. Fresh R-02 full regression/native evidence is in the successor, including ordinary browser128pass/1fail and diagnostics2/2. E02/AUTH-01 stays FAIL and P5-13 remains deferred/withheld; no P5-15-02 or production GO is implied.
|
||||
|
||||
**Historical R-01 successor:** [saved-search repair](saved-search-repair/README.md) verifies the native SQLite/list feedback repair. J02 becomes PARTIAL in R-01; its57 totals are54PARTIAL/2FAIL/1DEFERRED in the retained [parent successor column](../PRESERVATION_ACCEPTANCE.md). This01 matrix and its53PARTIAL/3FAIL/1DEFERRED totals remain the original audit outcome, not a current open-defect count. No full group has been certified PASS.
|
||||
|
||||
Audit source **`932b962b9038ddb5ad59b982c0199475bfb50454`**, branch `codex/ui-redesign-phase4`, 2026-10-09. This document compares every original protected capability with actual current API/owner, frontend reach action, read/write boundary, inspected tests and outstanding evidence. It is a functional evidence record; no application repair, provider/model call, production operation, Docker recovery or B07 work belongs to it.
|
||||
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
# P5-15-01 — Functional and preservation audit
|
||||
|
||||
**Successor checkpoint:** [P5-15-01R-01](saved-search-repair/README.md) repairs DISCOVERY-01 on SQLite and visible list failure/retry. The original audit findings/counts below are preserved historically. The parent matrix now records54PARTIAL/2FAIL/1DEFERRED; Analytics AUTH-01 and Rules SETTINGS-01 remain open ordinary failures. R-01 does not authorize P5-15-02 or production.
|
||||
**Current R-02 successor:** [Rules draft repair](rules-draft-repair/README.md) closes SETTINGS-01 for its verified draft/save/error/account scope. Original audit results below remain historical; current [parent matrix](../PRESERVATION_ACCEPTANCE.md) is **55PARTIAL/1FAIL/1DEFERRED**, zero whole-group PASS/BLOCKED/NOT VERIFIED. Fresh R-02 backend1,033/frontend472, ordinary browser128pass/1fail, diagnostics2/2, security and unchanged native fidelity are documented separately. E02/AUTH-01 stays FAIL and P5-13 stays deferred/withheld. No P5-15-02 or production GO is implied.
|
||||
|
||||
|
||||
**Historical R-01 successor checkpoint:** [P5-15-01R-01](saved-search-repair/README.md) repairs DISCOVERY-01 on SQLite and visible list failure/retry. The original audit findings/counts below are preserved historically. The R-01 parent column records54PARTIAL/2FAIL/1DEFERRED; Analytics AUTH-01 and Rules SETTINGS-01 remain open ordinary failures. R-01 does not authorize P5-15-02 or production.
|
||||
|
||||
**NO-GO for proceeding to P5-15-02 under its current entry criteria. Production remains NO-GO. Phase 5 is not complete.** The P1 saved-search workflow fails on the supported local SQLite path. Two P2 context/draft failures also require separately scoped remediation. No application repair, new redesign, production access, `main` change, P5-13 qualification/UI, Docker recovery or B07 occurred.
|
||||
|
||||
|
||||
@@ -1,28 +1,146 @@
|
||||
# P5-15-01R-02 — Rules draft preservation
|
||||
|
||||
Source: `c8e32238ef628f34c6ae8f64c6cb40ca5d8c68ac`, development `codex/ui-redesign-phase4`. Production `main` remains unchanged/NO-GO. This checkpoint owns SETTINGS-01 only; Analytics, P5-13, P5-15-02, Docker and B07 are excluded.
|
||||
Source: `c8e32238ef628f34c6ae8f64c6cb40ca5d8c68ac`; development `codex/ui-redesign-phase4`. This checkpoint repairs **P5-15-01-SETTINGS-01 only**. Production `main` remains unchanged at `27657f31131cd95d42f0e1290853ec9c9b3959a4` and **NO-GO**. No Analytics repair, saved-search application change, P5-15-02, P5-13, Docker, B07 or deployment.
|
||||
|
||||
## Demonstrated reproduction before implementation
|
||||
**P5-15-01R-02: GO for the bounded Rules draft repair.** Native retention, explicit save/discard/validation/retry, reload and account checks pass; all final applicable suites below have fresh results. The full ordinary browser command still exits1 for the separately retained AUTH-01 Analytics query-state defect. This is not an all-green application acceptance or production GO.
|
||||
|
||||
The new ordinary browser regression uses a disposable authenticated SQLite application. Seed the existing six-field Rules configuration (Applied follow-up14); edit it to5; switch Follow-ups→Notifications→Follow-ups. The entered5 becomes14, the persisted value remains14, and zero Rules PUTs occur. The run fails on the actual visible value (`expected5, received14`), not a mocked server or missing selector. Raw trace/report: ignored `.artifacts/p5-15-01R-02/browser/rules-red.*`.
|
||||
## Reproduction and demonstrated root cause
|
||||
|
||||
`SettingsView.TabPanel` returns null for inactive sections, unmounting `RulesSettingsCard`. The card's local `s` state is both its initially fetched data and edited draft. Returning creates a new card, performs a new GET and initializes from persisted14. This is destruction of editing-session state, not a backend write or deletion.
|
||||
A disposable authenticated Development/SQLite application seeds the actual six-field Rules record with Applied follow-up14. Edit that field to5, change Follow-ups→Notifications→Follow-ups. Before implementation, the browser observes14 on return while the database remains14 and zero Rules PUTs occur. The ordinary regression fails on the visible value: expected5, received14. It is not a mocked persistence response or missing-selector failure. [Before/after native proof and fingerprints](evidence/rules-proof.json).
|
||||
|
||||
## Bounded repair contract
|
||||
The former `SettingsView.TabPanel` returned null for inactive sections, unmounting `RulesSettingsCard`. Its component-local `s` held both fetched data and the unsaved draft. Returning mounted a new card, fetched persisted14 and replaced the destroyed draft. This is an editing-session ownership defect, not deletion/corruption of persisted rules. No evidence establishes which historical release introduced it.
|
||||
|
||||
- Move the single Rules draft, persisted baseline and load/save/error state into the existing Settings parent. Inactive forms may still unmount; no keep-all-tabs-mounted workaround, browser storage, cross-session draft or automatic save.
|
||||
- Preserve the existing per-account six-field atomic GET/PUT contract: Applied, Offer and Feedback are separate scenarios within one configuration, not three separately saved records. PUT returns204; the API clamps integer day values to1–365 and has no revision/ETag contract.
|
||||
- Internal tab/phone-section changes preserve pending fields/errors. Save submits one validated snapshot; failure retains it; later edits during a pending save must stay dirty. Explicit discard returns to the latest successful baseline without a write.
|
||||
- Clearly communicate the in-memory Settings-session boundary. Existing authentication/session disposal remains authoritative; no global draft store or second identity boundary.
|
||||
- Keep S03 and W11 traceability, E07/E08/E09 reachability/accessibility/account protection. Full-group acceptance requires other retained sub-workflows; this repair alone cannot grant PASS.
|
||||
The new ordinary browser regression was committed/pushed **before application changes** as `5b5dcd0b80aa0713545ecf1fdab079fb9dec28ee`. Lower-level tests then reproduced the missing parent ownership/error/discard/race contract: a clean pre-fix Settings run had6passes/6failures. The old five tests and teardown case passed; six new desired-behaviour cases failed. The final Settings file now has13passing cases, including eight new cases over the inherited five:
|
||||
|
||||
## Checkpoint plan / current status
|
||||
1. Preserve independent pending fields through tab unmounts, without PUT.
|
||||
2. Retain failed-save draft/error through tabs and explicit retry.
|
||||
3. Retain blank/out-of-range input and associated validation through tabs.
|
||||
4. Explicit Discard resets to the saved baseline without PUT.
|
||||
5. Pending save acknowledges5 while preserving newer dirty6.
|
||||
6. Old instance completion cannot affect a new Settings session.
|
||||
7. Changing UI language while Rules is hidden preserves its draft/no refetch.
|
||||
8. Rules editing leaves unrelated notification preference loading unchanged.
|
||||
|
||||
- [x] Trace and reproduce the exact native draft loss.
|
||||
- [x] Add the ordinary failing browser regression before application changes.
|
||||
- [x] Repair and validate controlled draft/save/discard/error ownership.
|
||||
- [x] Complete focused native/browser, localisation/responsive and account evidence.
|
||||
- [ ] Run the fresh full baseline and reconcile ordinary failures/counts.
|
||||
- [ ] Update acceptance/defect evidence, commit/push each completed unit and verify clean remote equality.
|
||||
## Actual workflow and persistence contract
|
||||
|
||||
The reproducer was committed/pushed as `5b5dcd0b80aa0713545ecf1fdab079fb9dec28ee` before implementation. The bounded implementation now passes all four native SQLite browser journeys and all472 frontend tests (464+8 focused behavioural cases), TypeScript, lint and the production build. Backend1,033, focused AI108, revision5 and sidecar49 have fresh passing runs. The complete browser/security/document run is in progress; no final browser count or repair acceptance is claimed here. The original audit and R-01 evidence remain unchanged. Production NO-GO and all deferred qualification obligations remain open.
|
||||
- Route `/settings`, Follow-ups tab or phone section selector. General, Follow-ups, Notifications and Backup are internal sections of the same Settings instance.
|
||||
- Authenticated local-account `GET/PUT /api/rules`, owned `UserRuleSettings`, `RulesController`. The current user comes from authenticated context; client record IDs/forged owner fields do not choose another user's record.
|
||||
- One atomic six-field configuration: `appliedFollowUpDays`, `appliedGhostDays`, `offerFollowUpDays`, `offerGhostDays`, `feedbackFollowUpDays`, `feedbackGhostDays`. Applied/Offer/Feedback are independent scenarios within one save, not three separately persisted rules.
|
||||
- GET retrieves/initializes the owner's configuration. PUT returns204 and clamps integer day values to1–365. The unchanged API has **no revision/ETag or multi-client write-conflict contract**.
|
||||
- Persisted baseline, unsaved session draft, pending save, validation/save errors, successfully acknowledged snapshot and explicitly discarded values remain distinct.
|
||||
- Internal section navigation retains the draft. **Leaving Settings ends its in-memory session and discards unsaved changes**, deliberately stated in the visible localized scope notice. No new cross-session recovery, automatic saving or browser storage is introduced.
|
||||
|
||||
## Smallest responsible repair
|
||||
|
||||
| File/component | Change and reason |
|
||||
|---|---|
|
||||
| [SettingsView](../../../../../../job-tracker-ui/src/components/SettingsView.tsx) | Owns one Rules draft/baseline/load/save/error state above the existing unmounting panels; both tabs and phone selector use the same entry action. A single pending load is retained across transitions; loaded drafts are not refetched/reinitialized on tab return or locale change |
|
||||
| [RulesSettingsCard](../../../../../../job-tracker-ui/src/components/RulesSettingsCard.tsx) | Controlled six-field form; retains existing labels/layout; explicit Save, bounded Discard, associated validation and durable localized load/save feedback. No API call or second local draft |
|
||||
| [Translations](../../../../../../job-tracker-ui/src/i18n/translations.ts) | Three concise EN/Bokmål strings for successful save, integer day validation and the Settings-session draft boundary; existing Save/Discard/error labels reused |
|
||||
| [Settings regressions](../../../../../../job-tracker-ui/src/settings-view.test.tsx) | Eight behavioural cases added; original five retained |
|
||||
| [Native browser regressions](../../../../../../job-tracker-ui/e2e/rules-draft-repair.spec.ts) | Four ordinary cases using actual SQLite persistence/account APIs; no CSS class assertions, expected failures, skipped tests or live providers |
|
||||
|
||||
Only three application-code files change. Settings is the shared owner; Rules is its sole form caller; translations are required for user-visible behaviour. No unrelated application file, backend, model, migration, API contract, dependency, renderer or deployment configuration changes.
|
||||
|
||||
Save validates all six strings as required whole numbers1–365 before PUT. This preserves blank/out-of-range input for correction rather than silently converting it to0/default or accepting the server clamp as successful input. Per-field helper text is associated with the input. Save submits a captured snapshot and acknowledges only that snapshot; if the user edits5→6 while5 is saving, completion records persisted5 while preserving dirty6. One pending submission is enforced. Discard returns to the last acknowledged baseline and writes nothing; it is disabled while a save is pending.
|
||||
|
||||
Failed save leaves all pending values and dirty state available, shows a durable in-page error, and permits explicit Save retry. No stack trace/provider text is exposed and no success is announced for failure. Invalid input/errors survive section changes. Existing authenticated-session invalidation and app/provider disposal remain authoritative; async completions from an unmounted Settings instance cannot set state/toast in a new instance. No second concurrency or identity system is added.
|
||||
|
||||
## Behavioural evidence
|
||||
|
||||
| Journey | Fresh observed result |
|
||||
|---|---|
|
||||
| Original edit→tab→return | **PASS:**14→5→return5; persisted14; zero PUTs, proving retention is not autosave |
|
||||
| All six fields / repeated internal switches | **PASS:**5/40/9/20/11/25 retained through two round trips in each of four variants; no cross-scenario draft substitution |
|
||||
| Validation / internal return | **PASS:**blank Applied and Offer366 retained with named associated errors; zero PUTs; correction permits normal save |
|
||||
| Save failure / retry | **PASS:**declared one-shot synthetic PUT500 retains draft/error across tabs; next real SQLite PUT204 persists all six values; dirty clears only after acknowledgement |
|
||||
| Successful save / reload | **PASS:**native GET and browser reload show the acknowledged values; all scenarios remain distinct |
|
||||
| Explicit discard | **PASS:**new Applied6/Offer10 returns to persisted5/9; no data mutation or implicit save |
|
||||
| Delayed loading | **PASS:**one held real GET across repeated transitions; loading is named; release initializes once, not over a newer draft |
|
||||
| Pending save / newer edit | **PASS:**submitted5, newer draft6, returned204, persisted5, dirty6; Discard restores5 |
|
||||
| Leave Settings / re-enter | **PASS:**visible session warning; unsaved8 discarded deliberately; re-entry retrieves persisted5 |
|
||||
| Account switch / crafted owner / anonymous | **PASS:**A persisted14/draft9; B forged owner/ID request updates only B22; A remains14; old page disposed and B displays22 without A draft; anonymous GET/PUT401 |
|
||||
| Locale switch / unrelated settings | **PASS:**lower-level hidden Rules draft survives locale change without a new Rules GET; editing Rules does not trigger unrelated notification-preference refetch |
|
||||
|
||||
The four focused browser cases pass4/4 with zero retries/skips/flaky/expected failures. Fault injection is limited to the explicitly declared PUT500 and held native reads/writes; ownership, persistence and readback exercise the real SQLite API. No server conflict semantics are invented.
|
||||
|
||||
## Accessibility, localisation and responsive evidence
|
||||
|
||||
Actual variants: **EN/light1440**, **Bokmål/dark768**, **EN/dark390**, **Bokmål/light320**, height900. Desktop/tablet use keyboard activation of selected tabs; phones use keyboard section-selector opening/selection/focus return. Save/Discard activation, labelled numeric inputs, associated validation, non-colour dirty text and alert/status semantics are asserted. Reduced-motion is enabled for the matrix. Reflow checks test visible controls/text bounds, not specific CSS classes.
|
||||
|
||||
Focused evidence includes **16 screenshots and16axe scans;0reported violations;150incomplete node occurrences**:142contrast and8hidden-focus. These are repeated occurrences, not150distinct defects or accepted checks. A coding-agent visual review inspected genuine EN desktop/light and phone/dark drafts, Bokmål dark tablet error, and320px Bokmål validation/discard images: fields, error text and actions remain readable, focus is visible, narrow content wraps. This does **not** certify human screen-reader announcements, physical touch/software keyboard, broader zoom or complete accessibility.
|
||||
|
||||
Representative images (all16 are in [proof manifest](evidence/rules-proof.json)):
|
||||
|
||||
- [Desktop EN/light draft and focused navigation](evidence/rules-draft-en-light-1440.png)
|
||||
- [Tablet Bokmål/dark save failure](evidence/rules-save-error-nb-dark-768.png)
|
||||
- [Phone EN/dark draft](evidence/rules-draft-en-dark-390.png)
|
||||
- [Narrow phone Bokmål/light validation](evidence/rules-validation-nb-light-320.png)
|
||||
- [Narrow phone explicit discard](evidence/rules-discard-nb-light-320.png)
|
||||
|
||||
## Preservation traceability
|
||||
|
||||
| Contract | Existing behaviour → repair → evidence | Current complete-group disposition |
|
||||
|---|---|---|
|
||||
| **PRES-S03** | Separate Rules/preferences scopes and explicit Save → parent session draft, associated validation, durable failure/retry/discard →13Settings cases +4native journeys +original diagnostic | **FAIL→PARTIAL**, not PASS; notification contention/language persistence and full human/provider acceptance remain open |
|
||||
| **PRES-W11** | Owned follow-up/ghosting configuration → same six-field atomic API/save and no auto-write → native six-value readback, forged-owner/anonymous cases, unchanged RulesEngineProspect backend regressions | **PARTIAL unchanged**; scheduling/calendar/provider delivery and historical500 cause not qualified here |
|
||||
| **PRES-E07/E08** | Reachable Settings navigation, locale/theme and feedback → shared tab/phone session entry, localized status/errors →four keyboard/reflow/theme/locale variants | **PARTIAL unchanged**; broad human AT/device/zoom scope remains open |
|
||||
| **PRES-E09** | Account-private draft disposal and stale-session rejection → retain existing API/session owner and suppress obsolete instance completion →native A/B/forged-owner/401 +component teardown | **PARTIAL unchanged**; not a complete deployed/BFCache/session certification |
|
||||
|
||||
All57 original contracts stay unchanged. Current complete-group totals after the scoped repair are **PASS0 / PARTIAL55 / FAIL1 / DEFERRED1 / BLOCKED0 / NOT VERIFIED0 =57**. E02 Analytics sign-in query loss remains FAIL; C11/P5-13 remains DEFERRED/Production-withheld. Original00,01 andR-01 statuses are retained in [parent matrix](../../PRESERVATION_ACCEPTANCE.md). A PARTIAL group still contains unverified sub-workflows.
|
||||
|
||||
## Fresh validation and diagnostic reconciliation
|
||||
|
||||
Backend1,033/1,033; frontend472/472 in82suites; revision5/5 and focusedAI108/108 are backend subsets; sidecar49 and configuration3 are fresh. TypeScript, lint, frontend production build and API/test-project Release builds pass. Frontend count464→472 is exactly eight new Settings behavioural cases. Backend count is unchanged; no backend test/model/contract changes.
|
||||
|
||||
All rows below are **fresh after the final application change**, not inherited success. [Portable validation, exact commands/times, fingerprints and limits](evidence/validation.json), [native proof](evidence/rules-proof.json) and [final repository checks](evidence/repository-validation.json) distinguish ordinary cases, subsets and independent suites.
|
||||
|
||||
| Suite/check | Fresh result | Reconciliation |
|
||||
|---|---|---|
|
||||
| Backend full | **1,033/1,033** | Unchanged count; no backend production/test change |
|
||||
| Frontend full | **472/472**,82suites |464+8new behavioural Settings cases; no failures/pending |
|
||||
| Ordinary browser | **128pass /1fail /129total** | R-01's125cases +4new Rules cases;117inherited,4audit,3saved-search and4Rules cases pass; AUTH-01 is the one real failure |
|
||||
| Standalone preference diagnostics | **2pass /0fail /2total** | Previously1pass/1fail; original Rules assertion now verifies retained5/persisted14/zero PUTs |
|
||||
| Focused Rules native browser | **4/4** | Subset rerun, not four additional full-suite passes |
|
||||
| Sidecar | **49/49** | Native JUnit; unchanged |
|
||||
| Focused AI | **108/108** | Backend subset; deterministic, no configured-model qualification |
|
||||
| Real HTTP | **2/2** | Actual API grounding/stale/account and Production withholding before provider/write; unrelated AI available |
|
||||
| Revision safety | **5/5** | Backend subset; source/override/history/frozen references preserved |
|
||||
| Standard fidelity | **16/16;36preview=36PDF pages** | Same16fixtures, native output and unchanged predeclared tolerances |
|
||||
| Settings exports | **8/8;24preview=24PDF pages** | Same8exports/settings and unchanged tolerances |
|
||||
| Rate-limit / ingress / PDF admission / configuration | **9/6/1/3** | Fresh separate local suites; not live F04/production evidence |
|
||||
| Additional offline helpers | **Supply-chain3 / evaluation5 / extension3** | Unchanged deterministic parser/config regressions; no Docker/provider execution |
|
||||
| App/E2E TypeScript, lint, frontend production/API/test Release builds | **PASS** | Fresh static/build commands, zero exit codes; no renderer/deployment changes |
|
||||
| Secrets, whitespace, docs/57-group/32-route hygiene | **PASS**; [final repository result](evidence/repository-validation.json) | Actual final checks exit0; original contracts/main unchanged and remote equals the pushed code checkpoint before the final documentation commit |
|
||||
|
||||
The full browser command exits1 specifically at `functional-acceptance.spec.ts:154`: sign-in reaches `/analytics` without the requested `?months=6`. No expectation was weakened, skipped or relabelled. **P2-D01 passes normally**. The original normal/admin saved-search failures and all three R-01 native repair cases remain passing; no saved-search code is touched. Both original diagnostic assertions now pass. Counts are not combined across overlapping suites/subsets.
|
||||
|
||||
All32route census patterns retain expected native entry/refresh/read states;98selected native GET observations include zero500s. The login query-continuity failure remains separate from entry/refresh and authorization. This repair does not reclassify full route-workflow acceptance.
|
||||
|
||||
Full-suite axe evidence is **267scans /0reported violations /2,040incomplete node occurrences**: contrast1,768; hidden-focus41; prohibited-attribute209; valid-value18; table-header4. Focused16scans/150incompletes overlap and must not be added to the full totals. These are incomplete repeated occurrences, not passes or distinct confirmed defects. Human AT/device/zoom requirements remain open.
|
||||
|
||||
The prior R-01 CV “Unsaved” assertion passes in this unchanged full frontend run; native CV workflows also pass. It remains OPEN because its cause is unestablished. No CV assertion, timeout, implementation or renderer was altered to obtain a pass.
|
||||
|
||||
Intermediate tooling findings are retained separately: the first post-fix prebuilt browser attempt used API5202 while the disposable API was5302; correcting the test build environment resolved that harness issue. Two subsequent selectors were corrected to scope the existing Settings navigation and observe actual session-disposal navigation. No production code or product expectations changed to accept those failures. A required-input marker briefly changed exact labels; moving the native required attribute to the input restored existing accessible names. Final runs use the original required behaviour with retries0.
|
||||
|
||||
## Outstanding obligations and risk
|
||||
|
||||
- **AUTH-01 Analytics sign-in query loss:** ordinary known failure, untouched; remains before P5-15-02 progression is reconciled.
|
||||
- **CV “Unsaved” intermittent assertion:** prior R-01 failure has no demonstrated cause/fix; subsequent passing runs do not close it. [Intermittent register](../INTERMITTENT_FAILURES.md).
|
||||
- Historical language-preference500, notification SQLite-lock contention and Rules-save500 root causes remain open. R-02 qualifies draft/error recovery, not a backend reliability repair.
|
||||
- Production provider and multi-client conflict qualification remain separate; native evidence here uses SQLite, not deployed MariaDB. No backend API conflict/version semantics are added.
|
||||
- Human screen reader, incomplete axe review, physical touch/software keyboard, production font/photo, broader pointer/reflow and Board scaling/touch debt remain open.
|
||||
- Production F04 ingress, current complete backup/tested restore, configuration/schema/secrets and tested rollback remain release blockers.
|
||||
- P5-05, P5-13 qualification/reviewUI and followMode compose UI remain explicitly deferred; unqualified AI Production withholding remains active, zero qualification calls/reviews performed.
|
||||
|
||||
## Immediate commit/push ledger and stopping point
|
||||
|
||||
| Completed logical unit | Commit / boundary |
|
||||
|---|---|
|
||||
| Native RED regression, reproduction contract and bounded TODO | `5b5dcd0b80aa0713545ecf1fdab079fb9dec28ee`; pushed before implementation |
|
||||
| Parent-owned Rules repair, eight component regressions, four native journeys and focused proof | `30f513d0c993800ec5d5583329ed65dc7ec9a8d4`; pushed after focused browser/full frontend/backend/static validation; remote equality and clean tree verified |
|
||||
| Final acceptance/evidence reconciliation | This documentation/evidence checkpoint; commit/push immediately after final repository checks. Its exact resulting hash and final remote/tree equality are reported to the owner after commit (no circular self-hash in this file) |
|
||||
|
||||
Read-only subagent review found no actionable correctness/security issue; it inspected the sole caller, actual API/session disposal and snapshot/validation tests, and did not claim test execution or human acceptance.
|
||||
|
||||
**P5-15-01R-02: GO for the bounded repair; Production remains NO-GO. P5-15-02 is not cleared by this checkpoint while AUTH-01 remains an unreconciled ordinary failure.** Stop before Analytics repair, P5-15-02, P5-13, Docker, B07 and deployment.
|
||||
|
||||
@@ -0,0 +1,243 @@
|
||||
{
|
||||
"status": "PASS for repository/static/document checks only; Analytics remains an ordinary browser failure.",
|
||||
"sourceCheckpoint": "c8e32238ef628f34c6ae8f64c6cb40ca5d8c68ac",
|
||||
"codeCheckpoint": "30f513d0c993800ec5d5583329ed65dc7ec9a8d4",
|
||||
"finalDocumentCommit": "This record; final commit/push/tree equality is verified afterward and reported to owner.",
|
||||
"productionMain": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
|
||||
"productionChanged": false,
|
||||
"checks": [
|
||||
{
|
||||
"name": "e2e-typescript",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"node",
|
||||
"job-tracker-ui/node_modules/typescript/bin/tsc",
|
||||
"--project",
|
||||
".artifacts/p5-15-01/e2e-tsconfig.json",
|
||||
"--noEmit",
|
||||
"--incremental",
|
||||
"false"
|
||||
],
|
||||
"startedUtc": "2026-10-09T17:28:47.581112+00:00",
|
||||
"finishedUtc": "2026-10-09T17:28:49.905362+00:00",
|
||||
"exitCode": 0,
|
||||
"logSha256": "a4ed4c2c830adf807283a578ea7ee8b2f659416a86da69815d6147237e7d7f36"
|
||||
},
|
||||
{
|
||||
"name": "document-links",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"C:/Users/Connor/.cache/codex-runtimes/codex-primary-runtime/dependencies/python/python.exe",
|
||||
"-X",
|
||||
"utf8",
|
||||
".artifacts/p4-04-check-doc-links.py"
|
||||
],
|
||||
"startedUtc": "2026-10-09T17:28:49.905871+00:00",
|
||||
"finishedUtc": "2026-10-09T17:28:50.594724+00:00",
|
||||
"exitCode": 0,
|
||||
"logSha256": "d7e21b0205bf5b75e240c936b5dfd2e1e9eb6aa040d2736e3f49d266f79c67f5"
|
||||
},
|
||||
{
|
||||
"name": "secret-scan",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"C:/Users/Connor/.cache/codex-runtimes/codex-primary-runtime/dependencies/python/python.exe",
|
||||
"-X",
|
||||
"utf8",
|
||||
"scripts/supply-chain.py",
|
||||
"scan-secrets"
|
||||
],
|
||||
"startedUtc": "2026-10-09T17:28:50.594724+00:00",
|
||||
"finishedUtc": "2026-10-09T17:28:52.471864+00:00",
|
||||
"exitCode": 0,
|
||||
"logSha256": "da6efdc7fe0b34b8658c000c05ed2eaa8fdaf0dd62756adf51f7a770d5a4485f"
|
||||
},
|
||||
{
|
||||
"name": "working-whitespace",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"git",
|
||||
"diff",
|
||||
"--check"
|
||||
],
|
||||
"startedUtc": "2026-10-09T17:28:52.472338+00:00",
|
||||
"finishedUtc": "2026-10-09T17:28:52.585557+00:00",
|
||||
"exitCode": 0,
|
||||
"logSha256": "a4ed4c2c830adf807283a578ea7ee8b2f659416a86da69815d6147237e7d7f36"
|
||||
},
|
||||
{
|
||||
"name": "staged-whitespace",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"git",
|
||||
"diff",
|
||||
"--cached",
|
||||
"--check"
|
||||
],
|
||||
"startedUtc": "2026-10-09T17:28:52.586056+00:00",
|
||||
"finishedUtc": "2026-10-09T17:28:52.709489+00:00",
|
||||
"exitCode": 0,
|
||||
"logSha256": "a4ed4c2c830adf807283a578ea7ee8b2f659416a86da69815d6147237e7d7f36"
|
||||
},
|
||||
{
|
||||
"name": "checkpoint-whitespace",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"git",
|
||||
"diff",
|
||||
"c8e32238ef628f34c6ae8f64c6cb40ca5d8c68ac",
|
||||
"--check"
|
||||
],
|
||||
"startedUtc": "2026-10-09T17:28:52.709489+00:00",
|
||||
"finishedUtc": "2026-10-09T17:28:52.850299+00:00",
|
||||
"exitCode": 0,
|
||||
"logSha256": "a4ed4c2c830adf807283a578ea7ee8b2f659416a86da69815d6147237e7d7f36"
|
||||
},
|
||||
{
|
||||
"name": "checkpoint-files",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"git",
|
||||
"diff",
|
||||
"c8e32238ef628f34c6ae8f64c6cb40ca5d8c68ac",
|
||||
"--name-only"
|
||||
],
|
||||
"startedUtc": "2026-10-09T17:28:52.850810+00:00",
|
||||
"finishedUtc": "2026-10-09T17:28:52.971644+00:00",
|
||||
"exitCode": 0,
|
||||
"logSha256": "54ac5ce336b086d9d3967ed4c120c0fb34b461742fdb7e5415055ddcfbaa9afd"
|
||||
},
|
||||
{
|
||||
"name": "original-contracts-unchanged",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"git",
|
||||
"diff",
|
||||
"c8e32238ef628f34c6ae8f64c6cb40ca5d8c68ac",
|
||||
"--",
|
||||
"docs/redesign/phase-2",
|
||||
"docs/redesign/audit/ROUTE_MAP.md"
|
||||
],
|
||||
"startedUtc": "2026-10-09T17:28:52.971644+00:00",
|
||||
"finishedUtc": "2026-10-09T17:28:53.080130+00:00",
|
||||
"exitCode": 0,
|
||||
"logSha256": "a4ed4c2c830adf807283a578ea7ee8b2f659416a86da69815d6147237e7d7f36"
|
||||
},
|
||||
{
|
||||
"name": "main-revision",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"git",
|
||||
"rev-parse",
|
||||
"main"
|
||||
],
|
||||
"startedUtc": "2026-10-09T17:28:53.080633+00:00",
|
||||
"finishedUtc": "2026-10-09T17:28:53.186130+00:00",
|
||||
"exitCode": 0,
|
||||
"logSha256": "897066df123bc63e82a45f42fe9b6dbc9dd0aeff602dd814ffdf3ffd8de8ec2c"
|
||||
},
|
||||
{
|
||||
"name": "code-head",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"git",
|
||||
"rev-parse",
|
||||
"HEAD"
|
||||
],
|
||||
"startedUtc": "2026-10-09T17:28:53.186623+00:00",
|
||||
"finishedUtc": "2026-10-09T17:28:53.288041+00:00",
|
||||
"exitCode": 0,
|
||||
"logSha256": "9c323d9843d528486dc2159d8b84ec68b1169107a80fbe8690f9e72ab05aaded"
|
||||
},
|
||||
{
|
||||
"name": "remote-branches",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"git",
|
||||
"ls-remote",
|
||||
"origin",
|
||||
"refs/heads/main",
|
||||
"refs/heads/codex/ui-redesign-phase4"
|
||||
],
|
||||
"startedUtc": "2026-10-09T17:28:53.288541+00:00",
|
||||
"finishedUtc": "2026-10-09T17:28:53.569582+00:00",
|
||||
"exitCode": 0,
|
||||
"logSha256": "5c9e2be9ffb93e7f783193ddea324b5c9c871dfe4df7cc7f4f1c4163bc291f25"
|
||||
}
|
||||
],
|
||||
"changedTrackedFiles": [
|
||||
"docs/redesign/phase-5/p5-15/PRESERVATION_ACCEPTANCE.md",
|
||||
"docs/redesign/phase-5/p5-15/READINESS_DEBT.md",
|
||||
"docs/redesign/phase-5/p5-15/README.md",
|
||||
"docs/redesign/phase-5/p5-15/p5-15-01/DEFECTS.md",
|
||||
"docs/redesign/phase-5/p5-15/p5-15-01/INTERMITTENT_FAILURES.md",
|
||||
"docs/redesign/phase-5/p5-15/p5-15-01/PRES_RESULTS.md",
|
||||
"docs/redesign/phase-5/p5-15/p5-15-01/README.md",
|
||||
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/README.md",
|
||||
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/repository-validation.json",
|
||||
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-discard-en-dark-390.png",
|
||||
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-discard-en-light-1440.png",
|
||||
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-discard-nb-dark-768.png",
|
||||
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-discard-nb-light-320.png",
|
||||
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-draft-en-dark-390.png",
|
||||
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-draft-en-light-1440.png",
|
||||
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-draft-nb-dark-768.png",
|
||||
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-draft-nb-light-320.png",
|
||||
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-proof.json",
|
||||
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-save-error-en-dark-390.png",
|
||||
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-save-error-en-light-1440.png",
|
||||
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-save-error-nb-dark-768.png",
|
||||
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-save-error-nb-light-320.png",
|
||||
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-validation-en-dark-390.png",
|
||||
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-validation-en-light-1440.png",
|
||||
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-validation-nb-dark-768.png",
|
||||
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/rules-validation-nb-light-320.png",
|
||||
"docs/redesign/phase-5/p5-15/p5-15-01/rules-draft-repair/evidence/validation.json",
|
||||
"docs/roadmap/todo.md",
|
||||
"job-tracker-ui/e2e/rules-draft-repair.spec.ts",
|
||||
"job-tracker-ui/src/components/RulesSettingsCard.tsx",
|
||||
"job-tracker-ui/src/components/SettingsView.tsx",
|
||||
"job-tracker-ui/src/i18n/translations.ts",
|
||||
"job-tracker-ui/src/settings-view.test.tsx"
|
||||
],
|
||||
"preservation": {
|
||||
"total": 57,
|
||||
"before": {
|
||||
"PARTIAL": 56,
|
||||
"DEFERRED": 1
|
||||
},
|
||||
"audit": {
|
||||
"PARTIAL": 53,
|
||||
"FAIL": 3,
|
||||
"DEFERRED": 1
|
||||
},
|
||||
"R01": {
|
||||
"PARTIAL": 54,
|
||||
"FAIL": 2,
|
||||
"DEFERRED": 1
|
||||
},
|
||||
"current": {
|
||||
"PARTIAL": 55,
|
||||
"FAIL": 1,
|
||||
"DEFERRED": 1
|
||||
},
|
||||
"originalIdsUnchanged": true
|
||||
},
|
||||
"routePatterns": 32,
|
||||
"balancedMarkdown": true,
|
||||
"limits": [
|
||||
"No deployed-provider, human AT/physical-device or production acceptance.",
|
||||
"No Analytics/P5-15-02/P5-13/Docker/B07 work."
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 72 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 77 KiB |
|
After Width: | Height: | Size: 53 KiB |
|
After Width: | Height: | Size: 45 KiB |
@@ -0,0 +1,193 @@
|
||||
{
|
||||
"before": {
|
||||
"initial": 14,
|
||||
"entered": 5,
|
||||
"afterReturn": "14",
|
||||
"persisted": 14,
|
||||
"writes": 0
|
||||
},
|
||||
"after": {
|
||||
"initial": 14,
|
||||
"entered": 5,
|
||||
"afterReturn": "5",
|
||||
"persisted": 14,
|
||||
"writes": 0
|
||||
},
|
||||
"saveSnapshot": {
|
||||
"initial": 14,
|
||||
"submitted": 5,
|
||||
"newerDraft": 6,
|
||||
"persisted": 5,
|
||||
"reads": 1
|
||||
},
|
||||
"accountBoundary": {
|
||||
"accountAUnchanged": 14,
|
||||
"accountB": 22,
|
||||
"oldDraft": 9,
|
||||
"oldPageDisposed": true,
|
||||
"anonymous": [
|
||||
401,
|
||||
401
|
||||
]
|
||||
},
|
||||
"focusedBrowser": {
|
||||
"startTime": "2026-10-09T16:56:46.876Z",
|
||||
"duration": 39904.021,
|
||||
"expected": 4,
|
||||
"skipped": 0,
|
||||
"unexpected": 0,
|
||||
"flaky": 0
|
||||
},
|
||||
"focusedAxe": {
|
||||
"counts": {
|
||||
"scans": 16,
|
||||
"violationEntries": 0,
|
||||
"incompleteNodeOccurrences": 150
|
||||
},
|
||||
"incompleteRules": {
|
||||
"color-contrast": 142,
|
||||
"aria-hidden-focus": 8
|
||||
}
|
||||
},
|
||||
"source": "c8e32238ef628f34c6ae8f64c6cb40ca5d8c68ac",
|
||||
"reproducerCommit": "5b5dcd0b80aa0713545ecf1fdab079fb9dec28ee",
|
||||
"repairCommit": "30f513d0c993800ec5d5583329ed65dc7ec9a8d4",
|
||||
"nativeContract": "Authenticated per-account GET/PUT /api/rules, six fields, atomic PUT204; no schema/API/server conflict changes.",
|
||||
"faultsAndGates": "Only the declared synthetic PUT500 and deterministic delayed GET/PUT are intercepted; persistence/readback/account checks use the native SQLite API.",
|
||||
"rawEvidence": [
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/rules-red.json",
|
||||
"sha256": "0182e9cd6f0f1e0f7d6a7c3d8ed3f9777196ce4c6c564e5f894ad4621f226251"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/rules-focused.json",
|
||||
"sha256": "811719ac1e11730080fed0bc1298b3520f706d5919a4b55a2742f298a3097182"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/commands.json",
|
||||
"sha256": "da2d87cee5ed2ae15f7d5ffd8a457cd3b33f3f940c6ecc51bd7ae0352b08274d"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/frontend-red-clean.json",
|
||||
"sha256": "610556e5cc35c01e517bc836322060bd6a02a4fca1283512cabd64349d2f3d5e"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/frontend-focused-2.json",
|
||||
"sha256": "104d9c81d08b2b57986e6c4b6ccfb92f9bf65258a15dfcdc7d7abe6fcf2c1477"
|
||||
}
|
||||
],
|
||||
"screenshots": [
|
||||
{
|
||||
"name": "rules-draft-en-light-1440",
|
||||
"file": "rules-draft-en-light-1440.png",
|
||||
"path": ".artifacts/p5-15-01R-02/browser/rules-focused-results/rules-draft-repair--P5-15--0595c-ss-themes-locales-viewports-chromium/attachments/rules-draft-en-light-1440-2eccc41ef61c25a5d9e8b1f20839831a89a82e89.png",
|
||||
"sha256": "790284a213e0110945f8e9f778caefba7dccbfd7efa39643c1908648b3dd417d"
|
||||
},
|
||||
{
|
||||
"name": "rules-validation-en-light-1440",
|
||||
"file": "rules-validation-en-light-1440.png",
|
||||
"path": ".artifacts/p5-15-01R-02/browser/rules-focused-results/rules-draft-repair--P5-15--0595c-ss-themes-locales-viewports-chromium/attachments/rules-validation-en-light-1440-71c03f2b08484154136c85a24bfce4f432c4b6f2.png",
|
||||
"sha256": "7b16b20e27b787c55ff9b0e730051ea75cae0e6c0d039ac07f2eb7af9fe005cc"
|
||||
},
|
||||
{
|
||||
"name": "rules-save-error-en-light-1440",
|
||||
"file": "rules-save-error-en-light-1440.png",
|
||||
"path": ".artifacts/p5-15-01R-02/browser/rules-focused-results/rules-draft-repair--P5-15--0595c-ss-themes-locales-viewports-chromium/attachments/rules-save-error-en-light-1440-c390e1e1ec5fa54ab8e0d725f2715a885c8bae89.png",
|
||||
"sha256": "cfe6a051b9026e46195a65ad4a681e0bf1c6ad61a33f1422d5ec1e1e5b689502"
|
||||
},
|
||||
{
|
||||
"name": "rules-discard-en-light-1440",
|
||||
"file": "rules-discard-en-light-1440.png",
|
||||
"path": ".artifacts/p5-15-01R-02/browser/rules-focused-results/rules-draft-repair--P5-15--0595c-ss-themes-locales-viewports-chromium/attachments/rules-discard-en-light-1440-bf549d758d59f678a362438bcfe784b4efed233f.png",
|
||||
"sha256": "46cccc211271b34aacf5c197626c9fd09694de5ada65738c92b0669a0a79c672"
|
||||
},
|
||||
{
|
||||
"name": "rules-draft-nb-dark-768",
|
||||
"file": "rules-draft-nb-dark-768.png",
|
||||
"path": ".artifacts/p5-15-01R-02/browser/rules-focused-results/rules-draft-repair--P5-15--0595c-ss-themes-locales-viewports-chromium/attachments/rules-draft-nb-dark-768-a8f57558d507ae626c5053663dcd23292df86b17.png",
|
||||
"sha256": "8ddbc70f569c4b50e7eb5129b0b03ca18bd52ecae246e08b0c27635344ef3ff4"
|
||||
},
|
||||
{
|
||||
"name": "rules-validation-nb-dark-768",
|
||||
"file": "rules-validation-nb-dark-768.png",
|
||||
"path": ".artifacts/p5-15-01R-02/browser/rules-focused-results/rules-draft-repair--P5-15--0595c-ss-themes-locales-viewports-chromium/attachments/rules-validation-nb-dark-768-da06302836733bbee986e85da0d97fed775534f1.png",
|
||||
"sha256": "4eec3a7f4587498ad8034b8e2dedfd97b9c8e1cb276530973d283fc69be19985"
|
||||
},
|
||||
{
|
||||
"name": "rules-save-error-nb-dark-768",
|
||||
"file": "rules-save-error-nb-dark-768.png",
|
||||
"path": ".artifacts/p5-15-01R-02/browser/rules-focused-results/rules-draft-repair--P5-15--0595c-ss-themes-locales-viewports-chromium/attachments/rules-save-error-nb-dark-768-608ec82392ad20655ef5215336fd2e4df0270883.png",
|
||||
"sha256": "abab8931f60f98892af427d7fa6aed168061c9ec0b0e8be9adc01148c668e751"
|
||||
},
|
||||
{
|
||||
"name": "rules-discard-nb-dark-768",
|
||||
"file": "rules-discard-nb-dark-768.png",
|
||||
"path": ".artifacts/p5-15-01R-02/browser/rules-focused-results/rules-draft-repair--P5-15--0595c-ss-themes-locales-viewports-chromium/attachments/rules-discard-nb-dark-768-eb7f88ef82508ea52feffef67dcf769df67de3dc.png",
|
||||
"sha256": "26c54370ebf0393670944b86615a1ba93c02eaf1343d5a539ecf4ce08f9b94a4"
|
||||
},
|
||||
{
|
||||
"name": "rules-draft-en-dark-390",
|
||||
"file": "rules-draft-en-dark-390.png",
|
||||
"path": ".artifacts/p5-15-01R-02/browser/rules-focused-results/rules-draft-repair--P5-15--0595c-ss-themes-locales-viewports-chromium/attachments/rules-draft-en-dark-390-047037663461f9c9b3e073309f8d08b6d19895e6.png",
|
||||
"sha256": "8e3e615cb0be06792c404da1be9ca9dcc2ee1eaf69fa7b78dfeb39d58b4c17ea"
|
||||
},
|
||||
{
|
||||
"name": "rules-validation-en-dark-390",
|
||||
"file": "rules-validation-en-dark-390.png",
|
||||
"path": ".artifacts/p5-15-01R-02/browser/rules-focused-results/rules-draft-repair--P5-15--0595c-ss-themes-locales-viewports-chromium/attachments/rules-validation-en-dark-390-8f37e36f08a8780336c3d757dd7495ea611d9d1e.png",
|
||||
"sha256": "a15745a3b2bf2011c27ca2006d96948354030db34cbbd2f60c5f83c7554138b3"
|
||||
},
|
||||
{
|
||||
"name": "rules-save-error-en-dark-390",
|
||||
"file": "rules-save-error-en-dark-390.png",
|
||||
"path": ".artifacts/p5-15-01R-02/browser/rules-focused-results/rules-draft-repair--P5-15--0595c-ss-themes-locales-viewports-chromium/attachments/rules-save-error-en-dark-390-c504bf10e82909e402c276f57ec50e311e288f7f.png",
|
||||
"sha256": "bf03396d5e9431dfee090a3e0d6f99302c9ce3a4eaa6a2ab43c0881605370786"
|
||||
},
|
||||
{
|
||||
"name": "rules-discard-en-dark-390",
|
||||
"file": "rules-discard-en-dark-390.png",
|
||||
"path": ".artifacts/p5-15-01R-02/browser/rules-focused-results/rules-draft-repair--P5-15--0595c-ss-themes-locales-viewports-chromium/attachments/rules-discard-en-dark-390-6775d161f579c3224d1bbd17bcc57b2e19da672b.png",
|
||||
"sha256": "0d10359372f7affc91827aaefe2cb1f5f6a5df6fd9d9c86cc92cbcac1a6c5257"
|
||||
},
|
||||
{
|
||||
"name": "rules-draft-nb-light-320",
|
||||
"file": "rules-draft-nb-light-320.png",
|
||||
"path": ".artifacts/p5-15-01R-02/browser/rules-focused-results/rules-draft-repair--P5-15--0595c-ss-themes-locales-viewports-chromium/attachments/rules-draft-nb-light-320-ec6bf8bcdcc9c98a0b82a86b97674ea43cdb43c6.png",
|
||||
"sha256": "1e3de08d4ec4c108ae490ed78d52c3237a4c6779480bd606d4c8e4189954d1ab"
|
||||
},
|
||||
{
|
||||
"name": "rules-validation-nb-light-320",
|
||||
"file": "rules-validation-nb-light-320.png",
|
||||
"path": ".artifacts/p5-15-01R-02/browser/rules-focused-results/rules-draft-repair--P5-15--0595c-ss-themes-locales-viewports-chromium/attachments/rules-validation-nb-light-320-7cb3ded822daac872ce47f6ddc050ca995eab332.png",
|
||||
"sha256": "bb22835105f461e27e72a9003b74dc4c3ee709721faa5d486d3d58da7fe3bcdd"
|
||||
},
|
||||
{
|
||||
"name": "rules-save-error-nb-light-320",
|
||||
"file": "rules-save-error-nb-light-320.png",
|
||||
"path": ".artifacts/p5-15-01R-02/browser/rules-focused-results/rules-draft-repair--P5-15--0595c-ss-themes-locales-viewports-chromium/attachments/rules-save-error-nb-light-320-8999ce51b36a07879126edd078a6495992a1c51b.png",
|
||||
"sha256": "06ef9eb1ece1ce1b7dc277287a39fb145c8eaa11436651682c7c3598270bd75f"
|
||||
},
|
||||
{
|
||||
"name": "rules-discard-nb-light-320",
|
||||
"file": "rules-discard-nb-light-320.png",
|
||||
"path": ".artifacts/p5-15-01R-02/browser/rules-focused-results/rules-draft-repair--P5-15--0595c-ss-themes-locales-viewports-chromium/attachments/rules-discard-nb-light-320-74fe06e2c5dde99cee1a0f55b14f840859a13e45.png",
|
||||
"sha256": "c060f02ccbf1e573408c721dd61df13643a268cf2f22f982d949e2e6d0c1cb26"
|
||||
}
|
||||
],
|
||||
"visualInspection": {
|
||||
"type": "Coding-agent review of genuine screenshots; not human AT/device acceptance.",
|
||||
"reviewed": [
|
||||
"rules-draft-en-light-1440",
|
||||
"rules-draft-en-dark-390",
|
||||
"rules-save-error-nb-dark-768",
|
||||
"rules-validation-nb-light-320",
|
||||
"rules-discard-nb-light-320"
|
||||
],
|
||||
"outcome": "Fields, scope notice, errors and Save/Discard remain readable; visible focus and narrow-screen wrapping retained."
|
||||
},
|
||||
"limits": [
|
||||
"No live production provider/physical touch/software keyboard/human screen reader qualification.",
|
||||
"Historical Rules500, notification contention and language-save500 causes remain open.",
|
||||
"Existing Rules API has no multi-client revision/ETag conflict semantics."
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 80 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 82 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 47 KiB |
@@ -0,0 +1,732 @@
|
||||
{
|
||||
"sourceCheckpoint": "c8e32238ef628f34c6ae8f64c6cb40ca5d8c68ac",
|
||||
"codeCheckpoint": "30f513d0c993800ec5d5583329ed65dc7ec9a8d4",
|
||||
"recordedUtc": "2026-10-09T17:25:11.947964+00:00",
|
||||
"scope": "Fresh complete local regression after final application change; AUTH-01 remains a genuine ordinary browser failure. No production/real-provider/human-device certification.",
|
||||
"backend": [
|
||||
{
|
||||
"name": "api-release-build",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"C:/Users/Connor/.dotnet/dotnet.exe",
|
||||
"build",
|
||||
"JobTrackerApi/JobTrackerApi.csproj",
|
||||
"--configuration",
|
||||
"Release",
|
||||
"--no-restore",
|
||||
"-warnaserror"
|
||||
],
|
||||
"startedUtc": "2026-10-09T16:55:50.041155+00:00",
|
||||
"finishedUtc": "2026-10-09T16:55:59.316357+00:00",
|
||||
"exitCode": 0,
|
||||
"logSha256": "18a0ff1a0db85cda51e74548c1f61705012988858aa0f1a061f0623210c93977"
|
||||
},
|
||||
{
|
||||
"name": "backend-full",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"C:/Users/Connor/.dotnet/dotnet.exe",
|
||||
"test",
|
||||
"JobTrackerApi.Tests/JobTrackerApi.Tests.csproj",
|
||||
"--configuration",
|
||||
"Release",
|
||||
"--no-build",
|
||||
"--logger",
|
||||
"trx;LogFileName=backend-full.trx",
|
||||
"--results-directory",
|
||||
".artifacts/p5-15-01R-02/backend/full",
|
||||
"--",
|
||||
"xUnit.parallelizeTestCollections=false",
|
||||
"xUnit.maxParallelThreads=1"
|
||||
],
|
||||
"startedUtc": "2026-10-09T16:55:59.317863+00:00",
|
||||
"finishedUtc": "2026-10-09T16:56:15.191455+00:00",
|
||||
"exitCode": 0,
|
||||
"logSha256": "ca9f2e4c933fbcaf5ab5f4c74f57e31ba543a38ec364138a0a090c95c35108fb",
|
||||
"total": 1033,
|
||||
"passed": 1033,
|
||||
"failed": 0,
|
||||
"resultSha256": "15ce8fc8dfd9948a39aac7d51cfea4cb44454b3d17332807987916394fc4e94a"
|
||||
},
|
||||
{
|
||||
"name": "backend-test-project-release-build",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"C:/Users/Connor/.dotnet/dotnet.exe",
|
||||
"build",
|
||||
"JobTrackerApi.Tests/JobTrackerApi.Tests.csproj",
|
||||
"--configuration",
|
||||
"Release",
|
||||
"--no-restore",
|
||||
"-warnaserror"
|
||||
],
|
||||
"startedUtc": "2026-10-09T16:56:15.207999+00:00",
|
||||
"finishedUtc": "2026-10-09T16:56:21.210057+00:00",
|
||||
"exitCode": 0,
|
||||
"logSha256": "81cad34336d4ff953e784387c7028e85fbcfd0ab43f1a103611cbe61dd1f0639"
|
||||
},
|
||||
{
|
||||
"name": "cv-revision",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"C:/Users/Connor/.dotnet/dotnet.exe",
|
||||
"test",
|
||||
"JobTrackerApi.Tests/JobTrackerApi.Tests.csproj",
|
||||
"--configuration",
|
||||
"Release",
|
||||
"--no-build",
|
||||
"--filter",
|
||||
"FullyQualifiedName~CvRevisionReadinessTests",
|
||||
"--logger",
|
||||
"trx;LogFileName=cv-revision.trx",
|
||||
"--results-directory",
|
||||
".artifacts/p5-15-01R-02/backend/full",
|
||||
"--",
|
||||
"xUnit.parallelizeTestCollections=false",
|
||||
"xUnit.maxParallelThreads=1"
|
||||
],
|
||||
"startedUtc": "2026-10-09T16:56:21.211066+00:00",
|
||||
"finishedUtc": "2026-10-09T16:56:24.813157+00:00",
|
||||
"exitCode": 0,
|
||||
"logSha256": "de3914a4c6a8a15f351ad7080e995ea5a76656afde75dc38c3a1b1c2e7fc6e7f",
|
||||
"total": 5,
|
||||
"passed": 5,
|
||||
"failed": 0,
|
||||
"resultSha256": "34ed2f283602af3fa17aa9e1362ae695bb7d8551676f203fba8dbf111bd91da1"
|
||||
},
|
||||
{
|
||||
"name": "focused-ai",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"C:/Users/Connor/.dotnet/dotnet.exe",
|
||||
"test",
|
||||
"JobTrackerApi.Tests/JobTrackerApi.Tests.csproj",
|
||||
"--configuration",
|
||||
"Release",
|
||||
"--no-build",
|
||||
"--filter",
|
||||
"FullyQualifiedName~CvAi|FullyQualifiedName~AiWorkspace|FullyQualifiedName~AiPrivacyPolicy|FullyQualifiedName~MeteredSummarizerService",
|
||||
"--logger",
|
||||
"trx;LogFileName=focused-ai.trx",
|
||||
"--results-directory",
|
||||
".artifacts/p5-15-01R-02/backend/full",
|
||||
"--",
|
||||
"xUnit.parallelizeTestCollections=false",
|
||||
"xUnit.maxParallelThreads=1"
|
||||
],
|
||||
"startedUtc": "2026-10-09T16:56:24.815169+00:00",
|
||||
"finishedUtc": "2026-10-09T16:56:29.762555+00:00",
|
||||
"exitCode": 0,
|
||||
"logSha256": "8bca9df96aa5c6d8b2391db64663afd9e910c44069551f311798368bde66738f",
|
||||
"total": 108,
|
||||
"passed": 108,
|
||||
"failed": 0,
|
||||
"resultSha256": "1aef564a23bb1b696794914f0c3d9a72567072dd22e8830b33d7daebea14194b"
|
||||
},
|
||||
{
|
||||
"name": "sidecar",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"tools/summarizer/.venv/Scripts/python.exe",
|
||||
"-m",
|
||||
"pytest",
|
||||
"tools/summarizer/tests",
|
||||
"-q",
|
||||
"-o",
|
||||
"cache_dir=E:/Storage/Projects/Active/Job tracker/.artifacts/p5-15-01R-02/backend/full/helpers/pytest-cache",
|
||||
"--basetemp=E:/Storage/Projects/Active/Job tracker/.artifacts/p5-15-01R-02/backend/full/helpers/pytest-tmp",
|
||||
"--junitxml=E:/Storage/Projects/Active/Job tracker/.artifacts/p5-15-01R-02/backend/full/helpers/sidecar.xml"
|
||||
],
|
||||
"startedUtc": "2026-10-09T16:56:29.766104+00:00",
|
||||
"finishedUtc": "2026-10-09T16:56:41.600367+00:00",
|
||||
"exitCode": 0,
|
||||
"logSha256": "a6e9102a862dbffbdbdc1e62ff174487e03b1efcda26080506e8ac150c5fb610",
|
||||
"expectedPassed": 49
|
||||
},
|
||||
{
|
||||
"name": "configuration-tests",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"C:/Users/Connor/.cache/codex-runtimes/codex-primary-runtime/dependencies/python/python.exe",
|
||||
"-X",
|
||||
"utf8",
|
||||
"scripts/test-ingress.py"
|
||||
],
|
||||
"startedUtc": "2026-10-09T16:56:41.600852+00:00",
|
||||
"finishedUtc": "2026-10-09T16:56:42.779826+00:00",
|
||||
"exitCode": 0,
|
||||
"logSha256": "9cfed5c1f3ce16658f4dea648a884804e0c5919c4fbaf37ca1a5949b605962d5",
|
||||
"expectedPassed": 3
|
||||
},
|
||||
{
|
||||
"name": "supply-chain-tests",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"C:/Users/Connor/.cache/codex-runtimes/codex-primary-runtime/dependencies/python/python.exe",
|
||||
"-X",
|
||||
"utf8",
|
||||
"scripts/test-supply-chain.py"
|
||||
],
|
||||
"startedUtc": "2026-10-09T16:56:42.780840+00:00",
|
||||
"finishedUtc": "2026-10-09T16:56:42.993801+00:00",
|
||||
"exitCode": 0,
|
||||
"logSha256": "793f0c09a167a39e5144a39ae38be08a57ebca38d72ba8b0aa6d59c347064306",
|
||||
"expectedPassed": 3
|
||||
},
|
||||
{
|
||||
"name": "offline-evaluation-tests",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"C:/Users/Connor/.cache/codex-runtimes/codex-primary-runtime/dependencies/python/python.exe",
|
||||
"-X",
|
||||
"utf8",
|
||||
"scripts/test-ollama-evaluation.py"
|
||||
],
|
||||
"startedUtc": "2026-10-09T16:56:42.994802+00:00",
|
||||
"finishedUtc": "2026-10-09T16:56:43.756967+00:00",
|
||||
"exitCode": 0,
|
||||
"logSha256": "90e7c2bc7745e2ccac4d1be53db420fef0cb336d604577671801745ed9c3d216",
|
||||
"expectedPassed": 5
|
||||
},
|
||||
{
|
||||
"name": "extension-tests",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"node",
|
||||
"--test",
|
||||
"browser-extension/tests/capture-url.test.mjs"
|
||||
],
|
||||
"startedUtc": "2026-10-09T16:56:43.757932+00:00",
|
||||
"finishedUtc": "2026-10-09T16:56:43.959775+00:00",
|
||||
"exitCode": 0,
|
||||
"logSha256": "1dde54fa45f4d9e5a9f830d362990fbdf9b0b3559249bf75fc00bf3193f28126",
|
||||
"expectedPassed": 3
|
||||
}
|
||||
],
|
||||
"offlineHelpers": {
|
||||
"configuration-tests": {
|
||||
"passed": 3,
|
||||
"failed": 0,
|
||||
"log": {
|
||||
"path": ".artifacts/p5-15-01R-02/backend/full/configuration-tests.log",
|
||||
"sha256": "9cfed5c1f3ce16658f4dea648a884804e0c5919c4fbaf37ca1a5949b605962d5"
|
||||
}
|
||||
},
|
||||
"supply-chain-tests": {
|
||||
"passed": 3,
|
||||
"failed": 0,
|
||||
"log": {
|
||||
"path": ".artifacts/p5-15-01R-02/backend/full/supply-chain-tests.log",
|
||||
"sha256": "793f0c09a167a39e5144a39ae38be08a57ebca38d72ba8b0aa6d59c347064306"
|
||||
}
|
||||
},
|
||||
"offline-evaluation-tests": {
|
||||
"passed": 5,
|
||||
"failed": 0,
|
||||
"log": {
|
||||
"path": ".artifacts/p5-15-01R-02/backend/full/offline-evaluation-tests.log",
|
||||
"sha256": "90e7c2bc7745e2ccac4d1be53db420fef0cb336d604577671801745ed9c3d216"
|
||||
}
|
||||
},
|
||||
"extension-tests": {
|
||||
"passed": 3,
|
||||
"failed": 0,
|
||||
"log": {
|
||||
"path": ".artifacts/p5-15-01R-02/backend/full/extension-tests.log",
|
||||
"sha256": "1dde54fa45f4d9e5a9f830d362990fbdf9b0b3559249bf75fc00bf3193f28126"
|
||||
}
|
||||
}
|
||||
},
|
||||
"sidecar": {
|
||||
"passed": 49,
|
||||
"result": {
|
||||
"path": ".artifacts/p5-15-01R-02/backend/full/helpers/sidecar.xml",
|
||||
"sha256": "25d09e742060ddb377db319a7888c3b396f6042d676b6d20af5b4e6e59f705fe"
|
||||
}
|
||||
},
|
||||
"frontend": {
|
||||
"passed": 472,
|
||||
"failed": 0,
|
||||
"total": 472,
|
||||
"suites": 82,
|
||||
"commands": [
|
||||
{
|
||||
"name": "frontend-full",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"npm.cmd",
|
||||
"test",
|
||||
"--",
|
||||
"--runInBand",
|
||||
"--watchAll=false",
|
||||
"--json",
|
||||
"--outputFile=../.artifacts/p5-15-01R-02/frontend/jest.json"
|
||||
],
|
||||
"startedUtc": "2026-10-09T16:54:50.394930+00:00",
|
||||
"finishedUtc": "2026-10-09T16:57:46.363795+00:00",
|
||||
"exitCode": 0
|
||||
},
|
||||
{
|
||||
"name": "app-typescript",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"npm.cmd",
|
||||
"run",
|
||||
"typecheck"
|
||||
],
|
||||
"startedUtc": "2026-10-09T16:57:46.364288+00:00",
|
||||
"finishedUtc": "2026-10-09T16:57:55.062608+00:00",
|
||||
"exitCode": 0
|
||||
},
|
||||
{
|
||||
"name": "frontend-lint",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"npm.cmd",
|
||||
"run",
|
||||
"lint"
|
||||
],
|
||||
"startedUtc": "2026-10-09T16:57:55.063108+00:00",
|
||||
"finishedUtc": "2026-10-09T16:58:11.353504+00:00",
|
||||
"exitCode": 0
|
||||
},
|
||||
{
|
||||
"name": "frontend-production-build",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"npm.cmd",
|
||||
"run",
|
||||
"build"
|
||||
],
|
||||
"startedUtc": "2026-10-09T16:58:11.354004+00:00",
|
||||
"finishedUtc": "2026-10-09T16:58:17.157367+00:00",
|
||||
"exitCode": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
"ordinaryBrowser": {
|
||||
"passed": 128,
|
||||
"failed": 1,
|
||||
"total": 129,
|
||||
"inheritedPassing": 117,
|
||||
"auditPassing": 4,
|
||||
"auditFailing": 1,
|
||||
"savedSearchPassing": 3,
|
||||
"rulesRepairPassing": 4,
|
||||
"skipped": 0,
|
||||
"expectedFailures": 0,
|
||||
"failedCases": [
|
||||
"[P5-15-01 E02 E07 A01] all 32 routes retain native entry, refresh and anonymous permissions"
|
||||
],
|
||||
"stats": {
|
||||
"startTime": "2026-10-09T17:00:36.643Z",
|
||||
"duration": 1373356.458,
|
||||
"expected": 128,
|
||||
"skipped": 0,
|
||||
"unexpected": 1,
|
||||
"flaky": 0
|
||||
}
|
||||
},
|
||||
"diagnostics": {
|
||||
"passed": 2,
|
||||
"failed": 0,
|
||||
"total": 2,
|
||||
"rulesDraft": {
|
||||
"original": 14,
|
||||
"draft": 5,
|
||||
"visibleDraft": "5",
|
||||
"persisted": 14,
|
||||
"ruleWrites": 0,
|
||||
"readbackStatus": 200
|
||||
},
|
||||
"stats": {
|
||||
"startTime": "2026-10-09T17:24:11.085Z",
|
||||
"duration": 13071.493,
|
||||
"expected": 2,
|
||||
"skipped": 0,
|
||||
"unexpected": 0,
|
||||
"flaky": 0
|
||||
}
|
||||
},
|
||||
"securityHttp": {
|
||||
"http": {
|
||||
"startTime": "2026-10-09T17:23:30.643Z",
|
||||
"duration": 13563.922999999999,
|
||||
"expected": 2,
|
||||
"skipped": 0,
|
||||
"unexpected": 0,
|
||||
"flaky": 0
|
||||
},
|
||||
"rate-limit": {
|
||||
"startTime": "2026-10-09T17:23:44.793Z",
|
||||
"duration": 10295.717,
|
||||
"expected": 9,
|
||||
"skipped": 0,
|
||||
"unexpected": 0,
|
||||
"flaky": 0
|
||||
},
|
||||
"ingress": {
|
||||
"startTime": "2026-10-09T17:23:55.717Z",
|
||||
"duration": 6415.7210000000005,
|
||||
"expected": 6,
|
||||
"skipped": 0,
|
||||
"unexpected": 0,
|
||||
"flaky": 0
|
||||
},
|
||||
"pdf-admission": {
|
||||
"startTime": "2026-10-09T17:24:02.723Z",
|
||||
"duration": 7773.563999999999,
|
||||
"expected": 1,
|
||||
"skipped": 0,
|
||||
"unexpected": 0,
|
||||
"flaky": 0
|
||||
}
|
||||
},
|
||||
"fidelity": {
|
||||
"fidelity": {
|
||||
"passed": 16,
|
||||
"total": 16,
|
||||
"previewPages": 36,
|
||||
"pdfPages": 36,
|
||||
"tolerances": {
|
||||
"pageDimensionMm": 0.5,
|
||||
"positionMm": 2,
|
||||
"fontPt": 0.5,
|
||||
"rgbComponent": 0.00392156862745098,
|
||||
"pageCountAndMembership": "exact"
|
||||
},
|
||||
"measurements": {
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/measurements.json",
|
||||
"sha256": "a312365d1b657028e42a3d04b545d5ffca0625f57a9c821a15a3dd6add62a86c"
|
||||
},
|
||||
"results": {
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/fidelity-results.json",
|
||||
"sha256": "98abd84d63708f1c632e29c8b8d37e1083811979365162ffea2e4e1bf48ea373"
|
||||
},
|
||||
"nativeFiles": [
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-modern/render.html",
|
||||
"sha256": "8e768156c7ffd4ad8dae6914a6a57baa5114668dc53a861f3925e0be8cffb8aa"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-modern/export.pdf",
|
||||
"sha256": "daac7db4085eab095fde83cf966fc88b81e72f14729cb1d74ec30a5258f8bfec"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-minimal/render.html",
|
||||
"sha256": "26bd74195f0f5ed917751ec5aeb0321ef156f93f105e889cea3fa67b2952bb1c"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-minimal/export.pdf",
|
||||
"sha256": "40a35e13336482d2883b0c755630501a186c857b76a5e73c23927f130ea90836"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-executive/render.html",
|
||||
"sha256": "d57da767c7c6cf446fe351fd381d33b95b555423db21feb84c9c1346775d8c48"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-executive/export.pdf",
|
||||
"sha256": "29faeb7a9de36d95cfb9a4b906c7a6b7515507893001bda38f4cc6c4208d5dbd"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-technical/render.html",
|
||||
"sha256": "681554ff60e68efa848e0a9e0ea6c2776526ea6a2017a05952ef724b08fc9e95"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-technical/export.pdf",
|
||||
"sha256": "f8d0238497db12d6a78054b3d8e339181fbef2563cbf483e88fba272e2a88163"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-ats-classic/render.html",
|
||||
"sha256": "f290eeef533983ea8a46c536e9747c0d88ee2cb7275f94366561c89645dc947b"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-ats-classic/export.pdf",
|
||||
"sha256": "ac2e6bf973ee61d4bf768e5dac0093e0aa72fa4f8d218e67aa370aeda41f61fa"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-nordic/render.html",
|
||||
"sha256": "361c0d55d3596a6e56d03b02bdecd9c9dbf6b48b7cb0a4add7d75382ca3e2958"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-nordic/export.pdf",
|
||||
"sha256": "3e32bbe86c66d43afaaa619fb02a5e889fc51bf2ed59efb16600c1d6f65546fb"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-elegant/render.html",
|
||||
"sha256": "816163e97d55be1fd726228fad0f7da471c707ca7879f0fbb036a1324dbdea47"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-elegant/export.pdf",
|
||||
"sha256": "a5b0676270205a2c8bc01b46c26cbe47df104af4227ce9f6ffb9231de49bcea5"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-creative/render.html",
|
||||
"sha256": "1cd723eb101ac3d06f87b4c2f8fa28e53252075a0f3ff5aa6002d6f6c2be6799"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-creative/export.pdf",
|
||||
"sha256": "a2cb73a6670d971f008b4c93be48c01e9b5ed7f555025fcb4a156e5312c57f7e"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-code/render.html",
|
||||
"sha256": "579dbd0e1c14afdee09f29f652e7742f5082c22e2de5f7c7ed06b954a2568d35"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/default-code/export.pdf",
|
||||
"sha256": "ef55b43bf8b71e385b8c7885e8dbeaa438704be979bc9862c8531a2249012043"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/long-en-minimal/render.html",
|
||||
"sha256": "2506bfc9473a1096e29f643b6d2958ff941e226e91ee67b7f05323dd28646a6a"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/long-en-minimal/export.pdf",
|
||||
"sha256": "b0658a8c46f5b26a0f8a545e7df7de0f0c21720d9c33462b9fea3b9d126a862e"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/long-nb-code/render.html",
|
||||
"sha256": "48bcca5d8713960e7543d4f150bf1c7cc96e7227d9b04b69ed063241dbbc68df"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/long-nb-code/export.pdf",
|
||||
"sha256": "41dde4ddcdb5b77fb20d7fadacab998d554d049483333be45a41fad711a5c3d9"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/compact-8mm-letter/render.html",
|
||||
"sha256": "515fbd6d8e0d031d86fa4cf08dc71c8c508fb84ea385aa19116f6cf13c9c7567"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/compact-8mm-letter/export.pdf",
|
||||
"sha256": "e15a654623c634f5048ffef6bd1692c11e171f2389c16d20e79a44f464ac8756"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/roomy-28mm-nb/render.html",
|
||||
"sha256": "cc0052318c874c2600ea0c137bd377411c0f6cd1c0115c1ed65c0d1173a3f1b9"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/roomy-28mm-nb/export.pdf",
|
||||
"sha256": "912ac6b6bc0071565357c71fe83c7d738392b54b7c8d62fc900e1b5486967f8f"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/grid-and-bubbles/render.html",
|
||||
"sha256": "1e5fc270a8ecf02a6e6bd7ac7b0d1d50c9f15baa00fb4c37a39b7ab3c141de37"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/grid-and-bubbles/export.pdf",
|
||||
"sha256": "ee7f422f35e9fece8cdd1d58aa1e0bb734434d7ac5f7f970b365de4ed99d5849"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/long-sidebar-nb/render.html",
|
||||
"sha256": "823db293254304db0d8ca2a9bf249af6dd343de959d4a965e741ae4cde633590"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/long-sidebar-nb/export.pdf",
|
||||
"sha256": "a5677143477c8c244fb23e9a3408763bc605866d5e561906b0668b31ade5f279"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/unbreakable-and-boundary/render.html",
|
||||
"sha256": "3faf425eb9ecf0be7e5294b5f60859133f24276df9a9d6ed2e569c3cd7069978"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity/unbreakable-and-boundary/export.pdf",
|
||||
"sha256": "bbf2b82a2da55c5516a4cd955878a9e5619376ea83bf64541acce3b4c7993a35"
|
||||
}
|
||||
]
|
||||
},
|
||||
"settings-fidelity": {
|
||||
"passed": 8,
|
||||
"total": 8,
|
||||
"previewPages": 24,
|
||||
"pdfPages": 24,
|
||||
"tolerances": {
|
||||
"pageDimensionMm": 0.5,
|
||||
"positionMm": 2,
|
||||
"fontPt": 0.5,
|
||||
"rgbComponent": 0.00392156862745098,
|
||||
"pageCountAndMembership": "exact"
|
||||
},
|
||||
"measurements": {
|
||||
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/measurements.json",
|
||||
"sha256": "e48ac171aa1915d305514d29f45182974e8fc993015f5c3dd5e9a262fa0d98a4"
|
||||
},
|
||||
"results": {
|
||||
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/fidelity-results.json",
|
||||
"sha256": "baf25ba3f32119734b6aacf541648df6d74474274346b7f8d5db256cd0bdbcd9"
|
||||
},
|
||||
"nativeFiles": [
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/dark-en-before/render.html",
|
||||
"sha256": "846199be1b9e432aa9acfc0836a258e7e349a59f7ae2f199284e276c2a94f159"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/dark-en-before/export.pdf",
|
||||
"sha256": "8af35e81c00ad671d2a8f6a26e1ab85d883dba86add2bb2e550f8d977dea2428"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/dark-en-after/render.html",
|
||||
"sha256": "fc201751536f5f853fafafffe8d3ab6d6801a54fd561f2325b984044b292ae3c"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/dark-en-after/export.pdf",
|
||||
"sha256": "13a5ce2e8db75650d57fe2bbe95eef27e5eeac12190bc179c2c6c8b7ff834c3f"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/dark-nb-before/render.html",
|
||||
"sha256": "b5972b49c6b2d19f22af90b1ab72088aac0548e068695f301764f24ca1b362e2"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/dark-nb-before/export.pdf",
|
||||
"sha256": "0a0eac828be4e257bf32542a8ddfdd962fbb85f96945ea3b7ca464f11804d8d6"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/dark-nb-after/render.html",
|
||||
"sha256": "6922fe87ff0a6bcd83500fbb12bccd1d6091f35486aa39a8fc6b9c358817e64d"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/dark-nb-after/export.pdf",
|
||||
"sha256": "11e61a5065c9674e09480107752cfc5d332a4d089429a30b33e8900dc1bf8508"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/light-en-before/render.html",
|
||||
"sha256": "846199be1b9e432aa9acfc0836a258e7e349a59f7ae2f199284e276c2a94f159"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/light-en-before/export.pdf",
|
||||
"sha256": "e8ca1f134e000c7cb236980bb6f1e1c437fcc3d60145552513c757063367b3e2"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/light-en-after/render.html",
|
||||
"sha256": "fc201751536f5f853fafafffe8d3ab6d6801a54fd561f2325b984044b292ae3c"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/light-en-after/export.pdf",
|
||||
"sha256": "a15eaedfdd0887149acc541fc8ed7be3cf1247e28a391c48c398c8703e5a5bad"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/light-nb-before/render.html",
|
||||
"sha256": "b5972b49c6b2d19f22af90b1ab72088aac0548e068695f301764f24ca1b362e2"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/light-nb-before/export.pdf",
|
||||
"sha256": "3fa0ac334833ba74dce2c079d792d59a75e855e2c823c6e80ae41a08ec2c3a8f"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/light-nb-after/render.html",
|
||||
"sha256": "6922fe87ff0a6bcd83500fbb12bccd1d6091f35486aa39a8fc6b9c358817e64d"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/settings-fidelity/light-nb-after/export.pdf",
|
||||
"sha256": "f35ee49717c3e5cce7958d7661c45687f57d3afd4feb2bdefe7315b179fc0eed"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"axe": {
|
||||
"counts": {
|
||||
"scans": 267,
|
||||
"violationEntries": 0,
|
||||
"incompleteNodeOccurrences": 2040
|
||||
},
|
||||
"incompleteRules": {
|
||||
"color-contrast": 1768,
|
||||
"aria-hidden-focus": 41,
|
||||
"aria-prohibited-attr": 209,
|
||||
"aria-valid-attr-value": 18,
|
||||
"th-has-data-cells": 4
|
||||
}
|
||||
},
|
||||
"routes": {
|
||||
"patterns": 32,
|
||||
"original": 31,
|
||||
"analyticsAdded": 1,
|
||||
"selectedReads": 98,
|
||||
"failed500Reads": 0,
|
||||
"loginQueryFailureRemains": true
|
||||
},
|
||||
"preservationCurrent": {
|
||||
"PASS": 0,
|
||||
"PARTIAL": 55,
|
||||
"FAIL": 1,
|
||||
"DEFERRED": 1,
|
||||
"BLOCKED": 0,
|
||||
"NOT VERIFIED": 0,
|
||||
"total": 57
|
||||
},
|
||||
"rawEvidence": [
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/commands.json",
|
||||
"sha256": "da2d87cee5ed2ae15f7d5ffd8a457cd3b33f3f940c6ecc51bd7ae0352b08274d"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/fidelity-commands.json",
|
||||
"sha256": "768a5e677c7752f38a3e88c3e211b0011135957569e3babd901de03d169c7f1e"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/frontend/summary.json",
|
||||
"sha256": "d286487cb6b997c21f4b7f99d51e54f3149e3aaf0dbea426a5b265ecd07c413b"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/frontend/jest.json",
|
||||
"sha256": "25610151a05492618e10e115d69e455365819968176ada0c84ef744bb5186d25"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/backend/full/summary.json",
|
||||
"sha256": "fc7824f7efe1338e3ccb4c3c7a21b95dab8a36b2d55a3d8a1afffaa564ae7d94"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/main.json",
|
||||
"sha256": "88eeb286eb2bbf20aaba593d612fdaf06dadbd8c354cd1b6eb4cf1261fb31bc8"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/diagnostics.json",
|
||||
"sha256": "f6ef8ec5f23c384778474541d151e1f6914e8dba8c4d8a808ab5a34cfe9018f4"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/http.json",
|
||||
"sha256": "feb309dfaa4bc3f06457594dbcc18db4c86a831366383387ec326a24492b2000"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/rate-limit.json",
|
||||
"sha256": "0645f91bb3fc1e690701a2a2ebadad369c46847a5426794439e1a538be6c99fe"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/ingress.json",
|
||||
"sha256": "b9f88f967de2d36fd47290a2922a08e3d5fe4eb8878721533982be3a1e5267ef"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-02/browser/pdf-admission.json",
|
||||
"sha256": "d4942a055191685d8cf56be085f0ceed23341c2f739ef4b6baf1dfca5373b5b0"
|
||||
}
|
||||
],
|
||||
"intermediateBrowserAttempts": "Initial four-case post-fix attempt used prebuilt API5202 instead of5302; after correcting the build environment two harness selectors failed; final focused four-case run and complete run retain actual zero-retry results.",
|
||||
"intermittentCvUnsaved": "Prior R-01 unexplained assertion remains OPEN; current full frontend/browser pass does not establish a cause or repair.",
|
||||
"production": {
|
||||
"decision": "NO-GO",
|
||||
"branch": "main",
|
||||
"revision": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
|
||||
"modified": false
|
||||
},
|
||||
"limits": [
|
||||
"No live production provider/physical touch/software keyboard/human screen reader qualification.",
|
||||
"Historical Rules500, notification contention and language-save500 causes remain open.",
|
||||
"Existing Rules API has no multi-client revision/ETag conflict semantics.",
|
||||
"AUTH-01 remains OPEN; no Analytics or P5-15-02 work.",
|
||||
"F04, complete current backup/restore, production configuration/schema and tested rollback remain release blockers.",
|
||||
"P5-13 stays deferred/unqualified/Production-withheld; no model calls/UI/activation."
|
||||
]
|
||||
}
|
||||