Files
jobtrackingapp/docs/redesign/phase-9/p9-requal-01/SOURCE_REVIEW.md
T
cesnimda 3727a723e8
MariaDB persistence qualification / mariadb (push) Failing after 7s
docs: publish Phase 9 requalification decisions and evidence
2026-10-24 18:32:24 +02:00

145 lines
10 KiB
Markdown

# P9-REQUAL-01 independent source review
Date: 2026-10-24. Reviewer: independent AI code-review agent.
Current checkpoint supplied by the qualification owner: `5ac11549b2caa27469aa9fb2b5b9ed402471a453`.
Application-fix checkpoint supplied by the owner: `2b26953d6f3c3fdacdffefa2c0a696c9084f1afd`.
These identify the review handoff; this report does not independently verify Git or deployed identity.
This is an AI source review, not manual acceptance, a completed runtime qualification, or final release approval.
The reviewer made no application changes and ran no tests, builds, browsers, services, or database commands.
Existing test reports were read as evidence, without rerunning their producers.
## Scope and method
Read the qualification helpers `mariadb-lane.py`, `linux-run.py`, `pdf-proof.py`, and `reconcile.py`;
the observations, performance, and Linux Playwright configurations and relevant test source;
and connected browser/database guards and PDF-oracle source.
Review focused on false PASS results, data scope, cleanup, and preservation assertions.
Follow-up reviews read the actual fixes and regression source described below.
The application review covered `JobTrackerApi/Services/DocumentsIndexService.cs`, its controller validation,
the existing MariaDB startup fixture, and `JobTrackerApi.MariaDb.Tests/DocumentsIndexTests.cs`.
No broad whole-branch acceptance or final addendum review is claimed.
## Finding and resolution
**P2 — successful CREATE could lose cleanup ownership after a diagnostic write failure.**
In `mariadb-lane.py`, the command executor originally wrote its operation log before returning.
If `CREATE DATABASE` succeeded but the log write failed, the caller never set `created = True`;
the final cleanup consequently skipped the generated schema.
The reviewed fix records successful CREATE ownership immediately after the native command returns zero,
before the log write (`mariadb-lane.py:152`). Failed CREATE does not authorize DROP.
`test-mariadb-lane.py:17` injects the command outcome and log-write failure; its assertions verify
a failing invocation, DROP and confirmed schema absence after successful CREATE, and no DROP after failed CREATE.
The reviewer inspected this regression source. The owner reported two passing offline tests and a retained
old-source replay with one expected failure; the reviewer did not execute or independently inspect that replay.
**Disposition: source finding resolved.**
## Follow-up reviews
### Nested Playwright configuration working directories
Reviewed explicit UI working directories in `observations/playwright.config.ts:5`,
`performance/playwright.config.ts:11`, and `linux/playwright.config.ts:15`.
These address the owner's observed setup failure caused by inherited server commands resolving against
the nested configuration directory. They preserve the inherited server settings and isolation behavior.
No new actionable finding in the fix. Runtime successor results remain the qualification owner's responsibility.
### Persisted Career Profile comparison
Confirmed `JobTrackerApi/Models/StructuredCvProfileJson.cs:9` configures null-property omission and
`SerializePersisted` at line 79 uses those options; `CareerProfileService.cs:114` uses that serializer for persistence.
The performance helper at `performance/metrics.mjs:8` applies that representation only to the initial
comparison between the already-normalized API profile and independently read persisted JSON.
The synthetic fixture's null object properties are omitted; null array elements and non-null falsy values remain.
Regression source checks those cases, input immutability, and detection of a non-null content change.
The sole workload call is `performance/sustained.spec.ts:70`. Full API profile equality during and after
the workload remains, and exact SQL snapshot equality remains at line 172.
The initial SQL/API revision equality at line 69 adds an assertion. CV settings overrides do not use this helper.
**No actionable assertion-weakening finding for this fixture and call site.**
### MariaDB documents-index Name projection
Reviewed `DocumentsIndexService.cs:62`: MariaDB converts each of the seven UNION Name expressions to
`utf8mb4` with `utf8mb4_bin` collation. SQLite retains its original expressions.
The inserted SQL expressions are compile-time strings; owner, search, filter, and pagination values remain parameters.
Tenant joins, metadata selection, and read-only query behavior are unchanged by the diff.
Reviewed all three tests in `JobTrackerApi.MariaDb.Tests/DocumentsIndexTests.cs`:
- Line 17: actual startup mixed collations, all seven document sources, counts, pagination, metadata, and unchanged snapshots.
- Line 57: Unicode/accent search, literal wildcard characters, and deterministic name ties.
- Line 79: foreign documents and damaged associations, owner-scoped history, filters, and unchanged snapshots.
Read `.artifacts/p9-requal-01/documents-provider-red/mariadb.trx`: all three cases failed with
`Illegal mix of collations for operation 'UNION'`; counters were 3 executed, 0 passed, 3 failed.
Read `.artifacts/p9-requal-01/documents-provider-green/mariadb.trx`: the same three test identities passed;
counters were 3 executed, 3 passed, 0 failed, and 0 not executed.
These are focused retained reports, not additional full-suite executions.
**No actionable finding in the provider fix or three regression tests.**
### Strict CV sibling durable baseline at 7092697
Reviewed the sole fixture change in `job-tracker-ui/e2e/cv-settings-presentation.spec.ts:101` at the
owner-supplied checkpoint `7092697cb3e20a5f22e173648fd544de3de6c553`.
The initial Linux report and `linux/playwright.log` showed four settings failures whose full-body
differences were only `updatedAtUtc`: seven fractional digits in POST responses versus at most six
in durable GET responses. `JobTrackerApi/Migrations/20260830128000_AdoptCvVariantSchema.cs:32`
and line 33 define the timestamps as `datetime(6)`.
The fixture now checks POST success, obtains the created ID, checks an independent GET succeeds,
and snapshots its full body before UI actions. The later full-body `toEqual(sibling)` assertion
remains at line 177, including timestamp, version and settings. No tolerance, normalizer or field
omission was introduced. This verifies preservation of durable pre-action state; it does not assert
POST-response timestamp precision survives persistence. **No actionable assertion-weakening finding.**
## Final evidence and acceptance-document review
Read the final `ACCEPTANCE_ADDENDUM_2026-10-24.md`, `acceptance.json`, `findings.json`, the final
dispositions section of `FINDINGS.md`, `source-lineage.json`, `LINUX_PDF.md`, and selected underlying
native records. This was a read-only evidence review, not execution of qualification commands.
- `validation.json` records `automationComplete: false`, no runtime drift, Linux PDF FAIL and Python
advisory FINDINGS. Other recorded automated lanes have PASS status; their case counts are kept separate.
- The raw Linux oracle reports contain 9/16 passing fidelity fixtures and 4/8 passing settings fixtures:
13/24 pass, 11 fail. Their page totals are 37 and 28, or 65 versus 60 expected. The failed fixture
names and extra-page cases agree with `LINUX_PDF.md`. The staging record reports no input drift.
- `linux/process.json` records browser/process exit zero, 51 migrations before and after, and successful
API removal, database disconnection, network removal and generated-schema removal. Producer success
is correctly separated from failed PDF output qualification.
- The retained performance result records 900006.3119 ms, 3382 reads, zero read failures, 20 navigations,
zero navigation failures, equal selected before/after snapshots, and successful schema cleanup.
This is finite synthetic workload evidence, not a capacity or production guarantee.
- Comparing the two retained frozen input maps found 1043 entries in each and one changed input:
`job-tracker-ui/e2e/cv-settings-presentation.spec.ts`. This agrees with `source-lineage.json`.
The four affected Windows successors replace affected evidence; they are not added to the ordinary 362.
- The findings register has 59 entries with 59 distinct IDs. The final Markdown dispositions retain
the Python and Linux output failures, bounded RD21 closure and separate production/manual conditions.
The five decisions are consistent with the evidence reviewed: RD21 RESOLVED within its original six
save/concurrency clauses and tested scope; hosted MariaDB BLOCKED; Phase9 NO-GO; Phase10 NO-GO;
production NO-GO. REQUEST section 6 permits unfinished genuine human checks to carry into release gates;
production-only infrastructure limitations do not independently veto isolated functional QA.
The confirmed Linux output failure and unclosed critical/high Python risk disposition support the
Phase9 decision. The Python decision is an explicit acceptance-risk judgment, not a claim that REQUEST
mechanically rejects every advisory. The Phase10 cleanup prerequisites at
`docs/redesign/IMPLEMENTATION_PLAN.md:164` independently require unused-route, passing-test and satisfied
functionality-inventory proof; no cleanup or Phase10 implementation is authorized.
One documentation consistency issue was sent to the owner: the SEC04 JSON evidence still described
tracked Python summary packaging as pending although the tracked summaries exist. This does not change
the OPEN/FINDINGS status or any verdict; the owner owns that register correction.
## Review limits
No tests, builds, browser sessions, service actions, database commands or production actions were run
by this reviewer. Source lineage was compared through retained manifest contents; this review did not
independently verify Git/remote/deployed identities or recompute every runtime artifact hash.
Recorded automation and reviewed source do not establish human, physical-device, provider/model or
production acceptance. No final release approval is granted by this AI review.
Qualification-owner disposition: the SEC04 packaging note was corrected before publication; findings.json now links the completed python-advisories.json and PYTHON_SECURITY.md. OPEN/FINDINGS and coverage INCOMPLETE remain unchanged.