docs(redesign): record Analytics authentication repair acceptance
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
# P5-15-01 functional defect register
|
||||
|
||||
**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.
|
||||
**Current R-03 disposition:** [Analytics authentication repair](analytics-auth-repair/README.md) closes AUTH-01 for the verified complete safe return-path scope. The unchanged original assertion is RED→GREEN; all134ordinary browser cases, both separate diagnostics, safe-target/foreign404/account-disposal and existing saved-search/Rules journeys pass. Current open totals for the three original reproduced defects: **P0=0/P1=0/P2=0/P3=0**. This does not close separate debt/evidence gaps or grant whole-group PASS. Production remains NO-GO; P5-15-02 has not begun. R-02 disposition and original observed failures below remain historical.
|
||||
|
||||
**Historical R-02 disposition:** [Rules draft repair](rules-draft-repair/README.md) closed SETTINGS-01 for verified internal draft retention and related Save/validation/failure/retry/Discard/account isolation. DISCOVERY-01 remained scoped CLOSED by R-01. **AUTH-01 remained P2/OPEN; reproduced open totals at R-02:P0=0/P1=0/P2=1/P3=0.** Fresh complete R-02 ordinary browser128pass/1fail and diagnostics2/2 retained the remaining real failure. Production and P5-15-02 remained 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.
|
||||
|
||||
@@ -29,7 +31,7 @@ P0 means serious security/data loss; P1 an important broken workflow; P2 limited
|
||||
|
||||
## P5-15-01-AUTH-01 — Login drops protected deep-link query state
|
||||
|
||||
**Confirmed P2 / OPEN.** PRES-E02/E07 route continuity; representative `/analytics?months=6` → public entry → login. This recoverable context failure does not grant permissions or lose saved application content.
|
||||
**Confirmed P2 at audit / CLOSED by R-03 for the verified authentication-return scope.** PRES-E02/E07 route continuity; representative `/analytics?months=6` → public entry → login. The historical failure table below remains intact. [Successor proof](analytics-auth-repair/evidence/auth-proof.json) retains the original failed URL, corrected exact destination/selected period, encoded query/hash, history/expiry/logout and native foreign404/tampered-target checks. The repair captures the complete destination at App's existing guard and validates it at Login completion; it does not change Analytics data or server authorization. Real providers, challenge/AT/device/production acceptance remain open; E02 is PARTIAL, not PASS. This recoverable context failure did not grant permissions or lose saved application content.
|
||||
|
||||
| Field | Evidence-based finding |
|
||||
|---|---|
|
||||
@@ -78,4 +80,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**. 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.
|
||||
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**; historical R-02 totals were **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.
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
|
||||
**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).
|
||||
|
||||
R-03's fresh final frontend490/490 and ordinary browser134/134 pass, including the unchanged preview-exit test and existing CV journeys. [R-03 results](analytics-auth-repair/evidence/validation.json) record those distinct lanes. No CV assertion, timeout, retry or implementation changes occur in the authentication repair; these passing runs do not diagnose or close this observation.
|
||||
|
||||
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,10 @@
|
||||
# P5-15-01 functional preservation results
|
||||
|
||||
**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.
|
||||
**Current R-03 successor:** [Analytics authentication repair](analytics-auth-repair/README.md) supersedes AUTH-01 for its proved return-path scope. The unchanged original native assertion now passes both in isolation and the final full run. [Fresh final validation](analytics-auth-repair/evidence/validation.json) records **134/134 ordinary browser cases**, zero failures/skips/flaky/retries, diagnostics2/2, backend1,033/frontend490, unchanged revision/rendering/security gates. [Native proof](analytics-auth-repair/evidence/auth-proof.json) includes the genuine RED, encoded query/fragment/default/history/expiry/logout cases, foreign resource404s and rejected unsafe return targets. The [parent current column](../PRESERVATION_ACCEPTANCE.md) records **56 PARTIAL / 1 DEFERRED**, zero PASS/FAIL/BLOCKED/NOT VERIFIED whole groups: **only E02 moves FAIL→PARTIAL**. Original audit rows, counts and failed historical observations below remain unchanged.
|
||||
|
||||
The affected groups are E02 (local return journey), E03 (existing provider completion boundary), E04 (existing challenge completion), E07 (shared protected navigation) and E09 (account/session disposal). W01 supplies another owned/foreign protected Job-section deep link; J02 supplies unchanged saved-search regression safety, with all three repair cases passing alongside four Rules cases and117 inherited browser cases. This evidence does not qualify real Google/Microsoft, reset-mail/Turnstile, authenticators/recovery devices, BFCache/offline/old-bundle behavior, screen readers or physical devices. Full mandatory requirements remain in the original matrix and the current parent traceability table. Automated axe267/zero violations/**2,041 incomplete node occurrences** is not full accessibility acceptance. Original followMode metadata-only deferral, C11/P5-13 withholding, historical preference500 causes, unexplained CV Unsaved intermittent assertion and production evidence blockers remain open. Production remains NO-GO; P5-15-02 is not started.
|
||||
|
||||
**Historical 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.
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# P5-15-01 — Functional and preservation audit
|
||||
|
||||
**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.
|
||||
**Current R-03 successor:** [Analytics authentication repair](analytics-auth-repair/README.md) closes AUTH-01 for its verified safe complete return-path scope. Genuine native RED→GREEN, all134ordinary browser cases and two separate diagnostics pass; fresh backend1,033/frontend490(+18), five new native cases, security and unchanged revision/fidelity are recorded in [portable results](analytics-auth-repair/evidence/validation.json). Current57 totals are56PARTIAL/1DEFERRED, zero PASS/FAIL/BLOCKED/NOT VERIFIED. All three original demonstrated functional defects now have separately pushed scoped repairs. Original audit findings and R-02 results below remain historical; broader human/provider/debt and CV intermittent evidence remain open. Production NO-GO; no P5-15-02 is started or automatically authorized.
|
||||
|
||||
**Historical R-02 successor:** [Rules draft repair](rules-draft-repair/README.md) closed SETTINGS-01 for its verified draft/save/error/account scope. At R-02 the [parent matrix](../PRESERVATION_ACCEPTANCE.md) was **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 remained FAIL and P5-13 remained deferred/withheld. No P5-15-02 or production GO was 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.
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
# P5-15-01 route results
|
||||
|
||||
**R-01 successor:** [native saved-search repair](saved-search-repair/README.md) reruns all32 patterns/192 entry-refresh observations. The four normal/admin Discover reads now return200, with98 selected native reads and no remaining500. All entry-refresh assertions pass; the separately asserted sign-in query return still fails. Current broader workflow disposition is31PARTIAL/1FAIL (Login), not32 fully accepted workflows. The original01 table, failed observations and30PARTIAL/2FAIL outcome below remain historical.
|
||||
**Current R-03 successor:** The [bounded Analytics authentication repair](analytics-auth-repair/README.md) passes the unchanged original AUTH-01 assertion in isolation and the final ordinary browser run, plus all five new native authentication-return cases. Requested `/analytics?months=6` returns to exactly that destination and selects six months. [Fresh final validation](analytics-auth-repair/evidence/validation.json) records **134/134 ordinary cases**, zero failures/skips/flaky/retries, and separate diagnostics2/2. The full census passes all **32 patterns / 192 entry-refresh observations**, with **98 expected native GET observations / zero500s**. All117 inherited, five audit, three saved-search, four Rules and five new auth cases remain passing; subset reruns are not added twice.
|
||||
|
||||
The supported Analytics query remains `months`:6 or24, otherwise12. [Native proof](analytics-auth-repair/evidence/auth-proof.json) preserves encoded `%36`, fragments, absent/invalid periods, authenticated direct entry, refresh, Back/Forward, failed-login retry and expiry return. Deliberate logout/account disposal still clears the prior return context and subsequent login uses Dashboard. Another owned `/jobs/{id}?section=documents#documents` destination survives sign-in/reload; a different account receives native404, with owner readback unchanged. Client-supplied protocol-relative and encoded external targets fall back to Dashboard. Actual Google/Microsoft authentication remains NOT VERIFIED; their existing completion/cancellation contracts have component fixtures only. The shared completion validates internal targets and safe existing context without persistent URL storage or altered identity-provider contracts.
|
||||
|
||||
**Current broader route-workflow disposition: 32 PARTIAL / 0 FAIL.** All finite entry/read criteria pass; no complete route workflow earns PASS from this bounded repair. Original31 patterns plus Analytics, existing legacy aliases and every historical table cell below remain unchanged. Named AUTH-01 and saved-search failures are superseded only by their independently documented repairs; original failed observations remain historical. Every route still retains missing long-tail/provider/manual/device evidence in the preservation matrix. No production health/deployment, human AT, physical touch/software keyboard or complete zoom/reflow acceptance is implied. Production remains NO-GO; P5-15-02 has not begun.
|
||||
|
||||
**Historical R-01 successor:** [native saved-search repair](saved-search-repair/README.md) reruns all32 patterns/192 entry-refresh observations. The four normal/admin Discover reads now return200, with98 selected native reads and no remaining500. All entry-refresh assertions pass; the separately asserted sign-in query return still fails. Current broader workflow disposition is31PARTIAL/1FAIL (Login), not32 fully accepted workflows. The original01 table, failed observations and30PARTIAL/2FAIL outcome below remain historical.
|
||||
|
||||
Fresh disposable Chromium/Development API census at unchanged application source `932b962b9038ddb5ad59b982c0199475bfb50454`, 2026-10-09. [Portable execution](evidence/browser-summary.json) contains all raw entry/refresh destinations/statuses, times, command/report/test hashes and limits. [Original/source route plan](../ROUTE_ACCEPTANCE.md) retains owner/query/navigation mappings; [57-group result](PRES_RESULTS.md) records capability scope.
|
||||
|
||||
|
||||
@@ -27,4 +27,88 @@ Existing session/account invalidation intentionally disposes the previous page/p
|
||||
|
||||
Final application changes have fresh **1,033/1,033 backend**, **490/490 frontend**, **31/31 focused Login**, the unchanged original native AUTH-01 **1/1**, and new native return/security journeys **5/5** passing. TypeScript, lint and both builds pass. The case-insensitive login-loop gap also has separate RED evidence before correction: two failures, two selected passes and27 not selected; final31 cases pass. External identity callbacks/two-factor are component fixtures, not live provider acceptance.
|
||||
|
||||
The complete browser/security/fidelity reconciliation is still running. Current checkpoint status: **IN PROGRESS**, with the demonstrated AUTH-01 repaired but no final acceptance claim yet. P5-15-02 and production are not cleared. Broader human/device/font qualification, historical preference500 causes, the CV Unsaved intermittent observation and P5-13 deferral remain open.
|
||||
At the separately pushed code checkpoint, full browser/security/fidelity reconciliation was still pending and no final acceptance was claimed. The final evidence below now establishes the bounded repair result. P5-15-02 is not started or automatically authorized; production remains NO-GO. Broader human/device/font qualification, historical preference500 causes, the CV Unsaved intermittent observation and P5-13 deferral remain open.
|
||||
|
||||
## Return-path and security contract
|
||||
|
||||
The existing route state remains the single transport: protected location → landing → Login → authenticated destination, using replacement navigation at the existing boundaries. No destination is persisted in localStorage, sent to an identity provider, placed in a token URL or copied into the CV/API domains. Search and fragment are preserved literally, including correctly encoded values. Analytics still interprets only `months`, with6/24 supported alternatives and12 as the established default. Multiple independent report parameters do not exist; a fragment is navigation state, not another reporting filter.
|
||||
|
||||
Before every completion callback, the shared helper requires a relative same-origin path, validates encoding and decoded path meaning, rejects external/protocol-relative paths, controls/backslashes and normalized `/`, `/login` or `/register` returns, and selects `/dashboard` on rejection. Repeated decoding detects nested unsafe path encodings without rewriting an accepted URL's query/fragment. Only the existing nested Jobs `from` and positive safe-integer `focusJobId` are replayed; arbitrary client state is dropped. Backend authentication/ownership remains authoritative even for a valid path containing a foreign resource ID.
|
||||
|
||||
Deliberate account/session disposal is distinct from an expired cookie. The existing `/login?sessionChanged=1` path abandons the old destination and context. Cookie expiry followed by reload captures the currently requested safe deep link; it does not revive another account's retained editing state. No extra history push or second concurrency/save model is introduced.
|
||||
|
||||
## Native journeys and evidence boundaries
|
||||
|
||||
| Journey | Executed assertion and result |
|
||||
|---|---|
|
||||
| Original AUTH-01 | Unchanged anonymous census fails before repair at `/analytics`, then passes with exact `/analytics?months=6` after real local authentication |
|
||||
| Reporting parameters | Exact24, encoded `%36`→6, explicit12 and invalid3→12 survive sign-in; actual Analytics API requests return200 and selected controls match effective periods |
|
||||
| Default/failure/recovery | No query→12; incorrect password401 stays at Login with error, retry restores intended destination; no premature success |
|
||||
| Browser history |6→24→Back6→Back default12→Forward6; reload retains6; authenticated direct24#activity stays signed in |
|
||||
| Session lifecycle | Expired `jobtracker_auth` cookie is absent and `/auth/me` returns401; reload/sign-in restores24#activity. Explicit logout204→sessionChanged→login returns dashboard |
|
||||
| Other protected deep link | Owned Job Documents query/fragment survives sign-in and refresh; region is visible, preserving existing section routes |
|
||||
| Account/resource isolation | A new account receives404 for both foreign workspace and Job API read, sees no private Job title, while original owner readback is unchanged |
|
||||
| Client tampering | Protocol-relative and encoded protocol-relative router state falls back to dashboard after real sign-in; fourteen component target variants also fail closed |
|
||||
| Existing methods | Local sign-in native; existing two-factor and Google/Microsoft completion/cancellation paths use deterministic component fixtures. Real provider/2FA infrastructure is not qualified |
|
||||
|
||||
Five new ordinary browser cases use the actual disposable SQLite API, cookies, CSRF/session context, synthetic accounts and supported page actions. They do not mock successful report/ownership/authentication responses. Non-local requests are blocked. Three saved-search and four Rules repair cases remain separate existing requirements in the full run. P2-D01 remains an ordinary passing requirement, never an expected failure.
|
||||
|
||||
The initial focused browser attempt contained four passes and one strict-locator harness failure: the toast and framework announcer both matched `role=alert`. The correction narrows the assertion to the existing Unauthorized feedback; it does not weaken the expected401/retry behavior. That attempt remains retained separately. The final focused run is5/5 with zero retries, skipped or flaky cases. The first full frontend488/488 run preceded the final two case-variant regressions; it is historical, not the final490/490 evidence.
|
||||
|
||||
## Preservation traceability
|
||||
|
||||
| Contract | Existing behavior → bounded change → regression evidence | Remaining qualification |
|
||||
|---|---|---|
|
||||
| PRES-E02 | Local/challenge sign-in return → full validated internal destination → original AUTH-01,31 Login cases and native retry/expiry | Real external challenge/email/reset/Turnstile combinations and broader human acceptance |
|
||||
| PRES-E03 | Google/Microsoft entry/callbacks → same shared validated return → existing callback/cancellation fixtures strengthened for query/hash | Real providers, credentials, cancellation/network/redirect infrastructure |
|
||||
| PRES-E04 | Existing two-factor completion → same complete destination → pending challenge fixture restores24#activity | Human/native authenticator workflows and full security-settings acceptance |
|
||||
| PRES-E07 | Existing route/shell continuity → keep query/hash through guard → native Analytics and Job section, history and refresh | All manual names/focus/device and complete long-tail navigation obligations |
|
||||
| PRES-E09 | Private account/session disposal and ownership → sessionChanged fallback, restricted context replay → native logout/foreign404 plus account-isolation suites | Production/assistive-technology/BFCache combinations beyond recorded fixtures |
|
||||
| PRES-W01 / J05 | Job section URLs and Jobs list return context → validated existing `from`/focus replay → component context assertion, owned Documents deep link and retained Jobs/Back/filter suites | Full workspace/provider/device and long-tail Jobs list interaction qualifications |
|
||||
| PRES-J02 (supporting) | Saved discovery search persistence/ownership → implementation untouched → three existing native saved-search repair cases remain passing | Scheduler/alert delivery, live source providers and human/device acceptance |
|
||||
|
||||
No original PRES contract, API authorization, Analytics metric/query model, provider integration, saved-search or Rules implementation is changed. E02 moves FAIL→PARTIAL for the repaired defect; the group is not granted PASS. The current reconciliation is **PASS0 / PARTIAL56 / FAIL0 / DEFERRED1 / BLOCKED0 / NOT VERIFIED0 =57**. Only E02 changes from the preceding R-02 column. Historical00/01/R-01/R-02 columns remain intact. All32 route patterns pass finite entry/refresh/read assertions:192 observations,98 selected reads and no500. Full-route acceptance remains32PARTIAL/0FAIL because long-tail/provider/human obligations are not replaced by this finite census.
|
||||
|
||||
## Visual and accessibility evidence
|
||||
|
||||
The four native captures cover EN/light1440, Bokmål/dark390, EN/dark768 and Bokmål/light320. The agent inspected their actual report headings, wrapping and selected period states; no screen reader, physical touchscreen, software keyboard or independent human review was used. The existing transient sign-in toast appears over report content in captures; broad overlay/reflow acceptance is not closed by this routing repair. This checkpoint introduces no user-facing text or visual redesign.
|
||||
|
||||
[Native API/URL proof, source RED results and screenshot fingerprints](evidence/auth-proof.json), [complete fresh validation](evidence/validation.json) and [repository/static checks](evidence/repository-validation.json) retain exact commands/times/result hashes and limits. Captures: [EN/light desktop](evidence/analytics-auth-en-light-1440.png), [Bokmål/dark phone](evidence/analytics-auth-nb-dark-390.png), [EN/dark tablet](evidence/analytics-auth-en-dark-768.png), [Bokmål/light narrow phone](evidence/analytics-auth-nb-light-320.png).
|
||||
|
||||
Full267axe scans report0violations and **2,041incomplete node occurrences**: color-contrast1,769; aria-hidden-focus41; aria-prohibited-attr209; aria-valid-attr-value18; th-has-data-cells4. These are occurrences across scans, not2,041 independently confirmed defects. Classification and human/manual acceptance stay assigned to the later accessibility audit; this checkpoint neither removes incompletes nor certifies spoken names/announcements. Zero automated violations cannot close those obligations.
|
||||
|
||||
## Fresh validation and count reconciliation
|
||||
|
||||
These results are fresh after the last application change on2026-10-10. [Portable command/report fingerprints](evidence/validation.json) distinguish original RED, intermediate harness/full-suite attempts, final GREEN and independent/subset lanes. The complete ordinary run finished at12:54:24UTC; independent security/diagnostics completed at12:55:17UTC, with zero retries, skips, unexpected or flaky outcomes in final runs.
|
||||
|
||||
| Gate | Fresh result | Count explanation |
|
||||
|---|---|---|
|
||||
| Backend |1,033/1,033 | Unchanged; no backend code/tests added |
|
||||
| Frontend |490/490,82 suites |472→490:18 new Login cases, comprising14 unsafe-target variants and4 valid-context/disposal cases; two existing provider/2FA assertions strengthened |
|
||||
| Focused Login |31/31 | Subset of490, not additional tests |
|
||||
| Original AUTH-01 |1/1 GREEN after0/1 RED | Same original desired-state assertion, not a replacement or expected failure |
|
||||
| New native auth cases |5/5 | Included in134 ordinary browser cases, not added twice |
|
||||
| Complete ordinary browser |134/134,0fail |129 declared cases before repair→134 with five new cases;128pass/1fail→134pass/0fail includes the former failure becoming an actual pass |
|
||||
| Separate diagnostics |2/2,0fail | Two declared existing preference/Rules diagnostic cases, outside ordinary browser totals |
|
||||
| Sidecar |49/49 | Unchanged deterministic/offline suite, not configured-model qualification |
|
||||
| Focused AI / revision |108/108 /5/5 | Unchanged subsets of1,033 backend tests |
|
||||
| Real-HTTP / rate-limit / ingress / PDF admission |2/2 /9/9 /6/6 /1/1 | Existing independent suites; local contracts, not production evidence |
|
||||
| Configuration |3/3 | Existing offline checks; production configuration remains unverified |
|
||||
| Standard fidelity |16/16,36=36 pages | Exact page count/membership; unchanged0.5mm page dimension,2mm position,0.5pt font and1/255 RGB tolerances |
|
||||
| Settings exports |8/8,24=24 pages | Same tolerances and fixture contents; native exports from the full browser run |
|
||||
| Extra offline helpers | Supply-chain3 / evaluation5 / extension3 | Existing independent fixtures, not live provider/production calls |
|
||||
| Static/build/hygiene | TypeScript, lint, frontend production and API Release builds pass; final E2E TypeScript/secret/link/whitespace proof in repository manifest | Raw logs and actual command exits are retained separately from runtime totals |
|
||||
|
||||
Standard/settings measurement passes were completed at12:42UTC against the final native exported files. No renderer geometry, pagination, typography, revision, canonical profile, override, frozen package, save/conflict or AI withholding implementation is changed. The original CV Unsaved intermittent observation remains OPEN despite current passing runs; this repair neither investigates nor establishes its cause.
|
||||
|
||||
## Immediate commit/push ledger
|
||||
|
||||
1. `c37cab560afa2d94cc4244c09dfa7aa720563bbf` — reproducing regression tests and initial evidence, committed/pushed before production-code changes.
|
||||
2. `68437671762aa9a4d93036a23a06810f1f47dd57` — bounded App/auth/Login repair,18 additional Login cases, five browser cases and verified intermediate record; committed/pushed after final application-level validation.
|
||||
3. Final acceptance evidence/documentation — this independently reviewable checkpoint; immediately commit/push after repository verification. Its exact hash, remote equality and clean-tree result are reported after creation rather than inventing a self-referential hash here.
|
||||
|
||||
Development remote equality is verified after each push. Local/remote production `main` remains `27657f31131cd95d42f0e1290853ec9c9b3959a4`. No production merge/push/deployment, P5-15-02, P5-13 qualification/UI, Docker recovery, B07 or unrelated repair occurs. F04/current backup+restore/production configuration-schema-secrets/tested rollback remain release blockers. P5-13 stays deferred/unqualified/Production-withheld with0/366 calls,0 human reviews and no review UI. The historical CV Unsaved intermittent observation, preference500 causes, Board scale/native touch, followMode UI and human/device/font/photo acceptance remain explicitly open.
|
||||
|
||||
## Decision
|
||||
|
||||
**P5-15-01R-03: GO for the bounded Analytics authentication redirect repair.** AUTH-01 is fixed; all required current automated/native preservation lanes are green. Existing saved-search and Rules fixes remain green, and no new major security/data-preservation regression is observed. This is not full Phase5, actual provider/human/device or production acceptance. Stop before P5-15-02, P5-13, B07 and production deployment.
|
||||
|
||||
BIN
Binary file not shown.
|
After Width: | Height: | Size: 84 KiB |
BIN
Binary file not shown.
|
After Width: | Height: | Size: 130 KiB |
BIN
Binary file not shown.
|
After Width: | Height: | Size: 73 KiB |
BIN
Binary file not shown.
|
After Width: | Height: | Size: 79 KiB |
@@ -0,0 +1,241 @@
|
||||
{
|
||||
"sourceCheckpoint": "339e3ba591c91dcd3590d4cbc451ad31268f1aec",
|
||||
"reproducerCheckpoint": "c37cab560afa2d94cc4244c09dfa7aa720563bbf",
|
||||
"codeCheckpoint": "68437671762aa9a4d93036a23a06810f1f47dd57",
|
||||
"originalRed": {
|
||||
"passed": 0,
|
||||
"failed": 1,
|
||||
"requested": "/analytics?months=6",
|
||||
"returned": "/analytics",
|
||||
"case": "[P5-15-01 E02 E07 A01] all 32 routes retain native entry, refresh and anonymous permissions",
|
||||
"error": "Expected pattern: /\\/analytics\\?months=6$/\nReceived string: \"http://localhost:3300/analytics\"\nTimeout: 5000ms",
|
||||
"report": {
|
||||
"path": ".artifacts/p5-15-01R-03/browser/auth-original-red.json",
|
||||
"sha256": "19c33361fecea68fbec97e47e754c36e3efe9ac62dbe284e6722775d3bb42172"
|
||||
}
|
||||
},
|
||||
"loginComponentRed": {
|
||||
"passed": 17,
|
||||
"failed": 12,
|
||||
"notSelected": 0,
|
||||
"declared": 29,
|
||||
"failedCases": [
|
||||
"LoginPage uses the safe fallback for the untrusted return target \"/\\t/evil.example\"",
|
||||
"LoginPage uses the safe fallback for the untrusted return target \"/%2f%2fevil.example\"",
|
||||
"LoginPage uses the safe fallback for the untrusted return target \"/%252f%252fevil.example\"",
|
||||
"LoginPage uses the safe fallback for the untrusted return target \"/%5cevil.example\"",
|
||||
"LoginPage uses the safe fallback for the untrusted return target \"/analytics?months=%ZZ\"",
|
||||
"LoginPage uses the safe fallback for the untrusted return target \"/jobs/../login\"",
|
||||
"LoginPage uses the safe fallback for the untrusted return target \"/%6cogin\"",
|
||||
"LoginPage uses the safe fallback for the untrusted return target \"/register\"",
|
||||
"LoginPage uses the safe fallback for the untrusted return target \"/analytics%0a\"",
|
||||
"LoginPage uses the safe fallback for the untrusted return target \"/analytics?months=6\\n\"",
|
||||
"LoginPage restores valid owned-workspace navigation context separately from the sign-in destination",
|
||||
"LoginPage abandons prior return context on the established account/session disposal entry"
|
||||
],
|
||||
"result": {
|
||||
"path": ".artifacts/p5-15-01R-03/frontend/login-red.json",
|
||||
"sha256": "190a11b979354cbc5ca1af1e2e43532f384ff32aadf85baaad25671fd2c6c487"
|
||||
}
|
||||
},
|
||||
"caseNormalizationRed": {
|
||||
"passed": 2,
|
||||
"failed": 2,
|
||||
"notSelected": 27,
|
||||
"declared": 31,
|
||||
"failedCases": [
|
||||
"LoginPage uses the safe fallback for the untrusted return target \"/LOGIN\"",
|
||||
"LoginPage uses the safe fallback for the untrusted return target \"/%4cOGIN\""
|
||||
],
|
||||
"result": {
|
||||
"path": ".artifacts/p5-15-01R-03/frontend/case-loop-red.json",
|
||||
"sha256": "e8ec49ada6336b67047c9d093835c110ad80608d3b77a43068a6b43ed5552998"
|
||||
}
|
||||
},
|
||||
"nativeReturn": {
|
||||
"requested": "/analytics?months=6",
|
||||
"returned": "/analytics?months=6"
|
||||
},
|
||||
"periodMatrix": [
|
||||
{
|
||||
"requested": "/analytics?months=24#activity",
|
||||
"returned": "/analytics?months=24#activity",
|
||||
"effectiveMonths": 24,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"width": 1440
|
||||
},
|
||||
{
|
||||
"requested": "/analytics?months=%36#rapport",
|
||||
"returned": "/analytics?months=%36#rapport",
|
||||
"effectiveMonths": 6,
|
||||
"language": "nb",
|
||||
"mode": "dark",
|
||||
"width": 390
|
||||
},
|
||||
{
|
||||
"requested": "/analytics?months=12",
|
||||
"returned": "/analytics?months=12",
|
||||
"effectiveMonths": 12,
|
||||
"language": "en",
|
||||
"mode": "dark",
|
||||
"width": 768
|
||||
},
|
||||
{
|
||||
"requested": "/analytics?months=3#rapport",
|
||||
"returned": "/analytics?months=3#rapport",
|
||||
"effectiveMonths": 12,
|
||||
"language": "nb",
|
||||
"mode": "light",
|
||||
"width": 320
|
||||
}
|
||||
],
|
||||
"historyAndAuthentication": {
|
||||
"failedLogin": 401,
|
||||
"retryDefault": 12,
|
||||
"backPeriods": [
|
||||
6,
|
||||
12
|
||||
],
|
||||
"forwardAndRefresh": 6,
|
||||
"authenticatedDirect": 24
|
||||
},
|
||||
"expiryAndLogout": {
|
||||
"expiredCookieMe": 401,
|
||||
"expiryReturn": "/analytics?months=24#activity",
|
||||
"logout": 204,
|
||||
"logoutSubsequentLogin": "/dashboard"
|
||||
},
|
||||
"ownershipAndUnsafeReturnState": {
|
||||
"ownedDestination": "/jobs/1?section=documents#documents",
|
||||
"foreignResource": 404,
|
||||
"foreignWorkspace": 404,
|
||||
"ownerReadbackUnchanged": true,
|
||||
"rejectedTargets": [
|
||||
"//outside.example.test/analytics",
|
||||
"/%2f%2foutside.example.test/analytics"
|
||||
],
|
||||
"fallback": "/dashboard"
|
||||
},
|
||||
"focusedBrowser": {
|
||||
"startTime": "2026-10-10T12:27:51.075Z",
|
||||
"duration": 28486.097,
|
||||
"expected": 5,
|
||||
"skipped": 0,
|
||||
"unexpected": 0,
|
||||
"flaky": 0
|
||||
},
|
||||
"originalGreen": {
|
||||
"startTime": "2026-10-10T12:26:44.366Z",
|
||||
"duration": 36464.388,
|
||||
"expected": 1,
|
||||
"skipped": 0,
|
||||
"unexpected": 0,
|
||||
"flaky": 0
|
||||
},
|
||||
"nativeContract": "Real authenticated local Development/SQLite API for login, Analytics reads, account disposal and owned/foreign resources; no provider/API schema/report aggregation change.",
|
||||
"supportedAnalyticsQuery": "months=6 or24 selects that period; absent/other values retain existing12-month default. Search encoding and fragment survive unchanged.",
|
||||
"screenshots": [
|
||||
{
|
||||
"name": "analytics-auth-en-light-1440",
|
||||
"file": "analytics-auth-en-light-1440.png",
|
||||
"path": ".artifacts/p5-15-01R-03/browser/auth-focused-results/analytics-auth-repair--P5--c5c4a-gn-in-across-locales-themes-chromium/attachments/analytics-auth-en-light-1440-38e97c90033b4d77b5d231d23bf2ca23bd63f19f.png",
|
||||
"sha256": "21cef8b34577795744e6868c3086edc471decb61b76b0d4ee61590e51e0a7724"
|
||||
},
|
||||
{
|
||||
"name": "analytics-auth-nb-dark-390",
|
||||
"file": "analytics-auth-nb-dark-390.png",
|
||||
"path": ".artifacts/p5-15-01R-03/browser/auth-focused-results/analytics-auth-repair--P5--c5c4a-gn-in-across-locales-themes-chromium/attachments/analytics-auth-nb-dark-390-21d1e32701491e996c99b1c4c86814d0f566c563.png",
|
||||
"sha256": "5abc521581bcf406a48566f9bd7c1f66c4e955b852d5fb042a23a119315e05aa"
|
||||
},
|
||||
{
|
||||
"name": "analytics-auth-en-dark-768",
|
||||
"file": "analytics-auth-en-dark-768.png",
|
||||
"path": ".artifacts/p5-15-01R-03/browser/auth-focused-results/analytics-auth-repair--P5--c5c4a-gn-in-across-locales-themes-chromium/attachments/analytics-auth-en-dark-768-1e41ab7c1b87b0da507de99b71e0e00fd9acfe11.png",
|
||||
"sha256": "5b30de0bd4291eed11f71741e328c16ef2e4766fc854e7f49beb17e45c50bcc8"
|
||||
},
|
||||
{
|
||||
"name": "analytics-auth-nb-light-320",
|
||||
"file": "analytics-auth-nb-light-320.png",
|
||||
"path": ".artifacts/p5-15-01R-03/browser/auth-focused-results/analytics-auth-repair--P5--c5c4a-gn-in-across-locales-themes-chromium/attachments/analytics-auth-nb-light-320-cd3d311cb5e473ef05069561c0d0c52529c1f8a9.png",
|
||||
"sha256": "329ea5665112ef15d2dfd4b29086e47a59b5d8abca26d7fed0dd6c6109d5f072"
|
||||
}
|
||||
],
|
||||
"visualInspection": {
|
||||
"type": "Coding-agent screenshot inspection only; not independent human or assistive-technology acceptance.",
|
||||
"reviewed": [
|
||||
"analytics-auth-en-light-1440",
|
||||
"analytics-auth-nb-dark-390",
|
||||
"analytics-auth-en-dark-768",
|
||||
"analytics-auth-nb-light-320"
|
||||
],
|
||||
"status": "Recorded reviewed screenshots"
|
||||
},
|
||||
"rawEvidence": [
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-03/frontend/login-red.json",
|
||||
"sha256": "190a11b979354cbc5ca1af1e2e43532f384ff32aadf85baaad25671fd2c6c487"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-03/frontend/case-loop-red.json",
|
||||
"sha256": "e8ec49ada6336b67047c9d093835c110ad80608d3b77a43068a6b43ed5552998"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-03/browser/auth-focused.json",
|
||||
"sha256": "ba69aad3d0c27e6b532abafc496928a51a4b575eb4dd782f5e503e349f1fd7a3"
|
||||
},
|
||||
{
|
||||
"path": ".artifacts/p5-15-01R-03/browser/auth-original-green.json",
|
||||
"sha256": "f28698a236d9ea82d9691e62d44df7391ffe48c912661aa9885bea4906bd2558"
|
||||
}
|
||||
],
|
||||
"intermediateAttempts": [
|
||||
{
|
||||
"label": "Retained focused-browser harness attempt; Unauthorized toast/announcer selector ambiguity, corrected without changing401/retry assertions.",
|
||||
"file": {
|
||||
"path": ".artifacts/p5-15-01R-03/browser/attempt1-auth-focused.json",
|
||||
"sha256": "36b6431e61415e19bb11ea38a1bd09939ee79e683609e0233e068559ded1cb97"
|
||||
},
|
||||
"log": {
|
||||
"path": ".artifacts/p5-15-01R-03/browser/attempt1-auth-focused.log",
|
||||
"sha256": "a86a91be2dbe58d0058039c9953d8c3908c9a4a7c0fb7f9eaef84f968fb05cd2"
|
||||
},
|
||||
"counts": {
|
||||
"startTime": "2026-10-10T12:26:12.986Z",
|
||||
"duration": 30801.587,
|
||||
"expected": 4,
|
||||
"skipped": 0,
|
||||
"unexpected": 1,
|
||||
"flaky": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Retained intermediate attempt; not final acceptance evidence.",
|
||||
"file": {
|
||||
"path": ".artifacts/p5-15-01R-03/frontend/attempt1-jest.json",
|
||||
"sha256": "491288c010df227f78caf9ee90a468085b0e31e81da5627ccbe8012723e28c09"
|
||||
},
|
||||
"counts": {
|
||||
"numPassedTests": 488,
|
||||
"numFailedTests": 0,
|
||||
"numPendingTests": 0,
|
||||
"numTotalTests": 488
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Retained intermediate attempt; not final acceptance evidence.",
|
||||
"file": {
|
||||
"path": ".artifacts/p5-15-01R-03/frontend/attempt1-summary.json",
|
||||
"sha256": "7d5ae5f3e0c352e27a60bb6471a253e60995f9d544b7e0a1266bbd91f64daead"
|
||||
},
|
||||
"counts": {}
|
||||
}
|
||||
],
|
||||
"limits": [
|
||||
"No real Google/Microsoft provider authentication; existing provider return/cancellation paths have deterministic component fixtures only.",
|
||||
"No human screen-reader, physical touch/software keyboard, or production font/photo qualification.",
|
||||
"P5-13 remains deferred, unqualified and Production-withheld; zero qualification calls/UI activation.",
|
||||
"F04, current complete backup/restore, production configuration/schema and tested rollback remain release blockers.",
|
||||
"Historical preference500 causes and unexplained CV Unsaved intermittent assertion remain open."
|
||||
]
|
||||
}
|
||||
+292
@@ -0,0 +1,292 @@
|
||||
{
|
||||
"status": "PASS for repository/static/document checks; no production or complete Phase5 acceptance.",
|
||||
"sourceCheckpoint": "339e3ba591c91dcd3590d4cbc451ad31268f1aec",
|
||||
"codeCheckpoint": "68437671762aa9a4d93036a23a06810f1f47dd57",
|
||||
"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-10T13:03:38.885179+00:00",
|
||||
"finishedUtc": "2026-10-10T13:03:41.193863+00:00",
|
||||
"exitCode": 0,
|
||||
"logPath": ".artifacts/p5-15-01R-03/hygiene/e2e-typescript.log",
|
||||
"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-10T13:03:41.194362+00:00",
|
||||
"finishedUtc": "2026-10-10T13:03:41.872415+00:00",
|
||||
"exitCode": 0,
|
||||
"logPath": ".artifacts/p5-15-01R-03/hygiene/document-links.log",
|
||||
"logSha256": "ccdc000ff4b5d0eb9fb5762359fb6a7c4716dc6b9641c378c4506d80e18221cc"
|
||||
},
|
||||
{
|
||||
"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-10T13:03:41.872915+00:00",
|
||||
"finishedUtc": "2026-10-10T13:03:43.711682+00:00",
|
||||
"exitCode": 0,
|
||||
"logPath": ".artifacts/p5-15-01R-03/hygiene/secret-scan.log",
|
||||
"logSha256": "da6efdc7fe0b34b8658c000c05ed2eaa8fdaf0dd62756adf51f7a770d5a4485f"
|
||||
},
|
||||
{
|
||||
"name": "working-whitespace",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"git",
|
||||
"diff",
|
||||
"--check"
|
||||
],
|
||||
"startedUtc": "2026-10-10T13:03:43.711682+00:00",
|
||||
"finishedUtc": "2026-10-10T13:03:43.811370+00:00",
|
||||
"exitCode": 0,
|
||||
"logPath": ".artifacts/p5-15-01R-03/hygiene/working-whitespace.log",
|
||||
"logSha256": "a2671a8fe8421cd6b0dd53d8b4d460271309557e5f0fc80de3d2204e468e93a7"
|
||||
},
|
||||
{
|
||||
"name": "staged-whitespace",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"git",
|
||||
"diff",
|
||||
"--cached",
|
||||
"--check"
|
||||
],
|
||||
"startedUtc": "2026-10-10T13:03:43.811871+00:00",
|
||||
"finishedUtc": "2026-10-10T13:03:43.890250+00:00",
|
||||
"exitCode": 0,
|
||||
"logPath": ".artifacts/p5-15-01R-03/hygiene/staged-whitespace.log",
|
||||
"logSha256": "a4ed4c2c830adf807283a578ea7ee8b2f659416a86da69815d6147237e7d7f36"
|
||||
},
|
||||
{
|
||||
"name": "checkpoint-whitespace",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"git",
|
||||
"diff",
|
||||
"339e3ba591c91dcd3590d4cbc451ad31268f1aec",
|
||||
"--check"
|
||||
],
|
||||
"startedUtc": "2026-10-10T13:03:43.890764+00:00",
|
||||
"finishedUtc": "2026-10-10T13:03:43.991084+00:00",
|
||||
"exitCode": 0,
|
||||
"logPath": ".artifacts/p5-15-01R-03/hygiene/checkpoint-whitespace.log",
|
||||
"logSha256": "a2671a8fe8421cd6b0dd53d8b4d460271309557e5f0fc80de3d2204e468e93a7"
|
||||
},
|
||||
{
|
||||
"name": "checkpoint-files",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"git",
|
||||
"diff",
|
||||
"339e3ba591c91dcd3590d4cbc451ad31268f1aec",
|
||||
"--name-only"
|
||||
],
|
||||
"startedUtc": "2026-10-10T13:03:43.991084+00:00",
|
||||
"finishedUtc": "2026-10-10T13:03:44.083847+00:00",
|
||||
"exitCode": 0,
|
||||
"logPath": ".artifacts/p5-15-01R-03/hygiene/checkpoint-files.log",
|
||||
"logSha256": "2ab03ee5e62c936723adc1675072881fce68b5935e832b92acea6034111dcb51"
|
||||
},
|
||||
{
|
||||
"name": "untracked-files",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"git",
|
||||
"ls-files",
|
||||
"--others",
|
||||
"--exclude-standard"
|
||||
],
|
||||
"startedUtc": "2026-10-10T13:03:44.084347+00:00",
|
||||
"finishedUtc": "2026-10-10T13:03:44.180872+00:00",
|
||||
"exitCode": 0,
|
||||
"logPath": ".artifacts/p5-15-01R-03/hygiene/untracked-files.log",
|
||||
"logSha256": "aede1cd454baa249798554e2eef09a52ede7bbdda29ac0dca34c0961f51cf468"
|
||||
},
|
||||
{
|
||||
"name": "original-contracts-unchanged",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"git",
|
||||
"diff",
|
||||
"339e3ba591c91dcd3590d4cbc451ad31268f1aec",
|
||||
"--",
|
||||
"docs/redesign/phase-2",
|
||||
"docs/redesign/audit/ROUTE_MAP.md"
|
||||
],
|
||||
"startedUtc": "2026-10-10T13:03:44.181383+00:00",
|
||||
"finishedUtc": "2026-10-10T13:03:44.258887+00:00",
|
||||
"exitCode": 0,
|
||||
"logPath": ".artifacts/p5-15-01R-03/hygiene/original-contracts-unchanged.log",
|
||||
"logSha256": "a4ed4c2c830adf807283a578ea7ee8b2f659416a86da69815d6147237e7d7f36"
|
||||
},
|
||||
{
|
||||
"name": "development-branch",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"git",
|
||||
"branch",
|
||||
"--show-current"
|
||||
],
|
||||
"startedUtc": "2026-10-10T13:03:44.259891+00:00",
|
||||
"finishedUtc": "2026-10-10T13:03:44.333341+00:00",
|
||||
"exitCode": 0,
|
||||
"logPath": ".artifacts/p5-15-01R-03/hygiene/development-branch.log",
|
||||
"logSha256": "b6bdec29438bc83c44fd5e3e8c1a0e3379bb3b7bea701966b24ad7df2091c7b2"
|
||||
},
|
||||
{
|
||||
"name": "main-revision",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"git",
|
||||
"rev-parse",
|
||||
"main"
|
||||
],
|
||||
"startedUtc": "2026-10-10T13:03:44.334332+00:00",
|
||||
"finishedUtc": "2026-10-10T13:03:44.404849+00:00",
|
||||
"exitCode": 0,
|
||||
"logPath": ".artifacts/p5-15-01R-03/hygiene/main-revision.log",
|
||||
"logSha256": "897066df123bc63e82a45f42fe9b6dbc9dd0aeff602dd814ffdf3ffd8de8ec2c"
|
||||
},
|
||||
{
|
||||
"name": "code-head",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"git",
|
||||
"rev-parse",
|
||||
"HEAD"
|
||||
],
|
||||
"startedUtc": "2026-10-10T13:03:44.405348+00:00",
|
||||
"finishedUtc": "2026-10-10T13:03:44.474005+00:00",
|
||||
"exitCode": 0,
|
||||
"logPath": ".artifacts/p5-15-01R-03/hygiene/code-head.log",
|
||||
"logSha256": "c3b1798598a94ab2a1fcc87b6f50348014b9fa4c70358d92f6fba2f035811caf"
|
||||
},
|
||||
{
|
||||
"name": "remote-branches",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"git",
|
||||
"ls-remote",
|
||||
"origin",
|
||||
"refs/heads/main",
|
||||
"refs/heads/codex/ui-redesign-phase4"
|
||||
],
|
||||
"startedUtc": "2026-10-10T13:03:44.474005+00:00",
|
||||
"finishedUtc": "2026-10-10T13:03:44.705606+00:00",
|
||||
"exitCode": 0,
|
||||
"logPath": ".artifacts/p5-15-01R-03/hygiene/remote-branches.log",
|
||||
"logSha256": "ebdd583b225748390c82cdc34b8f053993a513cfd1f2226ecde3a56b604b6ab3"
|
||||
}
|
||||
],
|
||||
"changedTrackedFiles": [
|
||||
"docs/redesign/phase-5/p5-15/PRESERVATION_ACCEPTANCE.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/ROUTE_RESULTS.md",
|
||||
"docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/README.md",
|
||||
"docs/roadmap/todo.md",
|
||||
"job-tracker-ui/e2e/analytics-auth-repair.spec.ts",
|
||||
"job-tracker-ui/src/App.tsx",
|
||||
"job-tracker-ui/src/auth.ts",
|
||||
"job-tracker-ui/src/login-page.test.tsx",
|
||||
"job-tracker-ui/src/views/LoginPage.tsx"
|
||||
],
|
||||
"untrackedFilesWithinScope": [
|
||||
"docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/analytics-auth-en-dark-768.png",
|
||||
"docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/analytics-auth-en-light-1440.png",
|
||||
"docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/analytics-auth-nb-dark-390.png",
|
||||
"docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/analytics-auth-nb-light-320.png",
|
||||
"docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/auth-proof.json",
|
||||
"docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/repository-validation.json",
|
||||
"docs/redesign/phase-5/p5-15/p5-15-01/analytics-auth-repair/evidence/validation.json"
|
||||
],
|
||||
"applicationFiles": [
|
||||
"job-tracker-ui/src/App.tsx",
|
||||
"job-tracker-ui/src/auth.ts",
|
||||
"job-tracker-ui/src/views/LoginPage.tsx"
|
||||
],
|
||||
"preservation": {
|
||||
"total": 57,
|
||||
"before": {
|
||||
"PARTIAL": 56,
|
||||
"DEFERRED": 1
|
||||
},
|
||||
"audit": {
|
||||
"PARTIAL": 53,
|
||||
"FAIL": 3,
|
||||
"DEFERRED": 1
|
||||
},
|
||||
"R01": {
|
||||
"PARTIAL": 54,
|
||||
"FAIL": 2,
|
||||
"DEFERRED": 1
|
||||
},
|
||||
"R02": {
|
||||
"PARTIAL": 55,
|
||||
"FAIL": 1,
|
||||
"DEFERRED": 1
|
||||
},
|
||||
"current": {
|
||||
"PARTIAL": 56,
|
||||
"DEFERRED": 1
|
||||
},
|
||||
"originalIdsUnchanged": true,
|
||||
"onlyE02StatusChanged": true
|
||||
},
|
||||
"routes": {
|
||||
"patterns": 32,
|
||||
"original": 31,
|
||||
"analyticsAdded": 1,
|
||||
"sourceDeclarationsReconciled": true
|
||||
},
|
||||
"balancedMarkdown": true,
|
||||
"evidenceFingerprintReferencesVerified": 104,
|
||||
"limits": [
|
||||
"No real external-provider authentication, human AT/physical-device or production acceptance.",
|
||||
"CV Unsaved intermittent cause and historical preference500 causes remain open.",
|
||||
"No P5-15-02/P5-13/Docker/B07 work or production branch mutation."
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user