P5-15-01 — Functional and preservation audit
Current R-02 successor: Rules draft repair closes SETTINGS-01 for its verified draft/save/error/account scope. Original audit results below remain historical; current parent matrix 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 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.
Audit source: 932b962b9038ddb5ad59b982c0199475bfb50454, development branch codex/ui-redesign-phase4, 2026-10-09. Application/build/renderer inputs remain unchanged; this checkpoint adds behavioral audit tests and evidence/documentation. The production branch remains main at 27657f31131cd95d42f0e1290853ec9c9b3959a4. Its automatic deployment trigger was not invoked.
Evidence and methodology
| Record | Scope |
|---|---|
| Complete preservation matrix | All57 original contracts: supported capability, actual API/frontend reach action, reads/writes/ownership, mapped fresh assertions, observed outcome, gaps/owner, before/after status |
| 32-route results | Original31 + Analytics; three identities, entry/refresh, aliases/query, native reads/role denials and separately reproduced sign-in return failure |
| Journeys and controls | What actual UI/API/native fixtures exercise; deliberate faults/mocks, API setup and long-tail limits distinguished |
| Defect register | Stable IDs, reproduction, expected/actual behavior, root cause, severity, security/data impact and separate repair requirements |
| Backend evidence | Fresh TRX/helpers/Release builds, source/binary/report hashes and scoped security/ownership assertions |
| Frontend evidence | Fresh459 Jest cases,82 suites, application/build inputs, TypeScript/lint/production build and limitations |
| Browser evidence | Original full run, final owning-file run, all192 route observations, genuine failures, standalone diagnostics, exact Board membership, security/HTTP, raw report/trace fingerprints |
| Fidelity evidence | Fresh16 standard +8 settings exports,36=36/24=24, unchanged tolerances, native inputs/hashes and actual agent image review |
| Native SQLite failure proof | Exact installed provider/query translation failure, native500 observations, InMemory coverage gap and source provenance |
| Separate preference probes | Reproducible genuine API/tab-draft/concurrent-save diagnostics, outside the ordinary browser suite |
Sources remain the original contracts, Phase1 inventory, traceability, Phase3 architecture, Phase4 preservation/design records, approved Phase5 plan, implementation/readiness successors and P5-15 planning package. No original contract was narrowed to fit the implementation.
The audit uses disposable synthetic accounts/files/SQLite, localhost Chromium/static frontend and real API transport where named. External browser requests are blocked. Deterministic provider fixtures are used only where existing tests require them; they are not real-provider qualification. Source/test review is separate from execution. Finite controller/unit assertions are not reported as full browser journeys. Independent read-only review checked evidence attribution and corrected overclaims about ZIP proof, creation/publication setup, denial redaction and generic alerts.
All57 groups received source/API/entry/read-write/permission/test/gap/outcome assessment. This is comprehensive reconciliation, not exhaustive execution of every low-frequency operation. Untested real OAuth/mail/2FA, successful native AdminUndo, all long-tail CRUD and device/human combinations remain expressly unverified. No P0/security emergency was demonstrated; no unsafe dependent saved-search mutation or broad remediation was attempted.
Preservation and route totals
| Whole-group status | P5-15-00 | P5-15-01 |
|---|---|---|
| PASS | 0 | 0 |
| PARTIAL | 56 | 53 |
| FAIL | 0 | 3 |
| DEFERRED | 1 | 1 |
| BLOCKED | 0 | 0 |
| NOT VERIFIED | 0 | 0 |
| Total | 57 | 57 |
FAIL groups: E02 sign-in return context, J02 saved-search read/control recovery, S03 unsaved Rules settings. C11 remains approved DEFERRED, unqualified and Production-withheld. PARTIAL groups have appropriate fresh representative assertions but required scope remains outstanding; they are not confirmed failures or full acceptance. BLOCKED/NOT VERIFIED sub-checks remain visible within those groups despite zero whole-group counts. Group/test counts overlap and are not additive.
All32 current concrete route patterns are reconciled to the original31 plus Analytics. 192 entry/refresh observations cover anonymous, ordinary and administrator identities. All reach their expected URL/state; 188 route observations satisfy all asserted conditions, four fail on saved-search500s. Selected native GET observations are 98:94 expected statuses /4 failed; the remaining94 observations have no selected GET. Finite entry/read criterion: 31 patterns pass,1 fails. Broader route workflow disposition: 30 PARTIAL,2 FAIL (Login return and Discover). The separate genuine anonymous login journey drops months=6; reaching a page is not enough. Foreign/missing Job/CV entry+refresh adds eight genuine404s with the named private-content absence checks. No pattern was removed and no protected API became intentionally public.
Confirmed failures and persistence impact
| ID | Severity / PRES | Observed failure | Required owner action |
|---|---|---|---|
| DISCOVERY-01 | P1 / J02 | Ordinary/admin GET /job-discovery/saved-searches500 on entry and refresh. Exact EF SQLite9.0.14 cannot translate ORDER BY over unconverted DateTimeOffset. Client swallows load failure and presents empty list |
Discovery API owner: provider-compatible owned ordered read plus deliberate load feedback/retry; native empty/populated/foreign-ID persistence tests. Separate P5-15-04 repair; deployed MariaDB result must be verified separately |
| AUTH-01 | P2 / E02, E07 | /analytics?months=6→login→/analytics; meaningful query lost because guard stores pathname only |
Identity/shell owner: preserve safe local requested context at existing boundary, retain redirect/account rules, add token/session/query negative tests. Separate repair |
| SETTINGS-01 | P2 / S03 | Rules14 edited to5→Notifications→Rules returns14; no warning,zero writes, persisted14. Inactive tab unmount destroys local draft | Settings owner: retain draft or deliberate dirty-navigation protection while preserving explicit per-section Save. Separate repair |
Newly confirmed totals: P0 0 / P1 1 / P2 2 / P3 0. Provenance matters: Rules/query risks were already recorded; no evidence dates saved-search failure to the redesign. These are current failures, not assumed newly introduced regressions. The saved-search failure is demonstrated availability/silent-feedback loss, not deletion or tenant disclosure. Rules loses an in-progress edit, not persisted records. Sign-in loses reporting context, not saved content. Full register contains exact reproductions and evidence.
Historical “Dashboard preference-save500” is actually a generic server language preference response during overlapping Dashboard/setup reads; Dashboard's five visibility flags use owner-local storage. Fresh Dashboard toggle/reload/account fixtures pass. Three separate real overlap rounds produced six successful language/notification writes,12 successful concurrent reads, correct server readback and reload. The recorded500 was not reproduced in those rounds and remains OPEN; no cause/fix/concurrency guarantee is inferred. Notification SQLite contention is separately carried debt.
Native readback/reload continues to protect tested Jobs status/trash, source-backed/CV-only/override/reset, selected/sibling/canonical scope, revision/conflict/draft recovery, document settings and frozen package relationships. Retry/conflict fixtures include deliberate injected faults; they do not establish every real race. Overview GET may seed/recompute owned checklist rows under the existing contract; no frontend mutation request is not proof of no database write. Current and historical CV settings versus immutable archived submission bytes retain their original distinctions.
Actionable controls and security
Fresh named journeys cover local sign-in/session switching, shell collapse/drawer/commands/notifications, reviewed Add, Jobs filter/sort/page/select/status/Trash/Back focus, integrated Board movement/query/custom status, reports/period/exact alternatives, all seven Job sections/dirty navigation, capture/frozen readback/download, task/preparation state, CV source/reset/reorder/save/history/conflict/preview/templates/export and Settings per-section saved readback. Control report states which actions are UI operations, API setup, mock/provider fixtures or incomplete acceptance.
Saved-search-dependent run/alert/delete/dismiss access cannot recover after the failed list load; the list error has no deliberate feedback. No other dead control is demonstrated by these finite runs. This does not certify every control: successful AuditUndo, live provider integration and all long-tail admin/security/mail/import/export operations remain unverified. Config-disabled registration, Pro locks, unconnected provider409, missing-token states, unpublished-CV404 and deferred Production CV-AI503 are intentional boundaries, not accidentally broken actions.
Fresh backend ownership/auth/CSRF/import/export/revision/frozen/proposal suites and real-browser crafted cookie/session/foreign-ID cases remain green. Ordinary users receive genuine403 on all Admin routes; admin reads200. Foreign/missing Job/CV reads404 and named private content is absent. Those assertions are bounded; hiding navigation is never server authorization, checking one synthetic identity is not exhaustive response redaction, and generic alert.first() does not establish specific user-visible error text. No real user data, production credentials or external provider was used. No demonstrated cross-tenant disclosure, historical overwrite, source mutation or unsafe AI apply was found; this is not an exhaustive security certification.
Fresh validation and count reconciliation
| Gate | Fresh result | Count interpretation |
|---|---|---|
| Backend | 1,023 pass,0 fail/skip | Unchanged; complete Release suite |
| Frontend | 459 pass /82 suites,0 fail/pending | Unchanged; no component tests added |
| Ordinary browser | 119 pass /3 fail /122 unique cases | Inherited117 all pass; five added audit cases yield2pass/3 genuine failures after harness correction |
| Separate preference diagnostics | 1 pass /1 fail /2 cases | Additional standalone probes, not included in122 ordinary cases |
| Sidecar | 49 pass | Deterministic/offline, unchanged |
| Focused AI / revision | 108 pass /5 pass | Backend subsets, not extra1,023 cases |
| RealHTTP | 2 pass | Production guard before provider/write and unrelated AI fixture; unchanged |
| Rate-limit / ingress / PDF admission / config | 9 /6 /1 /3 pass | Isolated/local; no deployed F04 proof |
| Other existing helpers | Supply-chain3 /offline evaluation5 /extension3 pass | Separate existing helpers, unchanged |
| Standard native fidelity | 16/16;36 preview=36PDF pages | Exact membership, unchanged0.5mm page/2mm position/0.5pt font/RGB1/255 tolerances |
| Settings native exports | 8/8;24=24pages | Fresh before/after template/font/margin/settings exports, unchanged corpus/tolerances |
| Static/build | App +E2E/AI/diagnostic TypeScript, lint, frontend production build, API/test Release builds pass | Complete build inputs unchanged; final test-only TS/lint rerun passes |
| Repository hygiene | Secret/whitespace/document/schema-of-evidence checks | Final results and changed-file/source verification in repository evidence |
Browser reconciliation is explicit: initial full run had119passes/3 new harness locator failures; all117 inherited cases were green. Initial ambiguous alert selection, wrong ConnectedAccounts request wait and diagnostic config startup errors are retained as harness errors. Final five-case owning-file rerun completes all192 observations with2passes/3 application failures. Reported119/3 is a latest unique-case reconciliation across runs, not a single all-green final122-case run. The new native failures are ordinary assertions, never skipped or converted into expected failures. P2-D01 remains an ordinary passing case. No application change invalidates the fresh build/full-suite evidence; tests/docs alone are added.
The finite250-job case compares exact seeded/Table/API/DOM membership across17 normal15-row Table pages and one full Board read. Final observation:296,265response bytes and1,044ms to populated cards; initial full run296,881bytes/1,056ms is recorded separately. These are observations, not a capacity/latency threshold or large-result acceptance. O(N) full-result memory/response/DOM and physical-touch debt remain open.
Accessibility, visual evidence and P5-15-02 requirements
Fresh native attachments contain 242 axe scans,zero violation entries,1,834 incomplete node occurrences: contrast1,570; hidden-focus33; prohibited-ARIA209; invalid-ARIA-value18; table association4. The inherited P5-14 result was1,839; five fewer repeated occurrences in this runtime does not close five defects. Incomplete checks are not passes, unique issues or complete accessibility acceptance. Use the manual script and exact node/state attachments for later triage.
Existing keyboard/reorder/drawer/dialog/preview entry-scroll-exit-focus fixtures passed. Actual agent review of two native preview/PDF comparisons in fidelity evidence confirms measured local placement; fresh native screenshots are retained with run provenance. This is not human assistive-technology or physical-device acceptance. Four theme/locale pairs and scripted responsive states are finite automated evidence, not a replacement for real screen-reader, touch/software keyboard, browser200%/400%zoom/text-spacing/forced-colour or Linux production font/photo proof.
Before02: resolve the P1 supported-provider saved-search prerequisite with independently pushed repair and native owner/read/reload tests; reconcile affected matrix and ordinary failed cases. The P2 failures need recorded remediation dispositions and cannot disappear during responsive review. Once entry criteria are satisfied,02 must triage actual incomplete nodes, verify names/state/role/focus/menus/forms/charts with a suitable human screen reader, then actual physical touch/software keyboard and broader zoom/reflow; unsupported environment checks remain NOT VERIFIED. No02 work starts here.
Deferred work, release blockers and decision
P5-05 new quick-preview remains approved deferred. P5-13 stays unfinished/deferred/unqualified/Production-withheld:0/366 configured-model calls,0 human reviews, semantic accuracy unmeasured, new review UI absent. Fresh deterministic/stale/ownership/history and realHTTP fail-closed protection are green; unrelated AI retains existing fixture functionality. Nothing is activated or qualified here. followMode preserves compatibility metadata; mode-specific compose UI is deferred to later mail work.
F04/current complete backup+tested restore/production configuration-schema-secrets verification/tested rollback/protected deployment and real runtime smoke remain release blockers, separately tracked in production/debt register. No development pass satisfies them. Production font/photo, manual screen-reader/incomplete axe/device/reflow, historical preference500, Board scaling/touch and recorded feedback/focus races remain open with their original owners. B07/profile-job revision work and future Phase7/8 redesign/capabilities remain excluded.
P5-15-01 finding checkpoint is recorded; progression to02 is NO-GO because01→02 requires preservation failures addressed, and significant P1 remains. Recommended next instruction: authorize a bounded DISCOVERY-01 remediation checkpoint, with provider-compatible owned query, deliberate load feedback and exact native regressions, each completed logical change committed/pushed; then reconcile AUTH-01/SETTINGS-01 and01 entry evidence before02. Do not merge/deploy main, resume P5-13, or declare original full Phase5 complete.
Immediate commit/push ledger
| Completed logical unit | Commit (pushed immediately and remote verified) |
|---|---|
| Fresh backend evidence | a7c6b5bf527a6fa3013e89b85f810343272e27bc |
| Fresh frontend/static evidence | 74c0be6b13f87960787d20cf1f4b6447ab094ab5 |
| Fresh native fidelity/comparisons | 83d3e909f5213f39a5a3373f08849f1aee58c125 |
| Native saved-search P1 proof | 4c52b571239e0b964cf26186ca67604fc16cc79b |
| Five ordinary audit cases, two standalone diagnostics and genuine browser results | 266e53c16a17a627765a5f484070a4e4475bda01 |
| Final audit/matrix/parent reconciliation | Commit introducing this final report, recorded in Git history and final task reply; self-referential hash is not embedded |
Final report is committed/pushed separately after document/secret/whitespace/source checks; compare the final development remote to HEAD and verify a clean working tree. These checks do not modify production main; final Git output is the verification source, not a deployment claim.