docs: publish Phase 9 requalification decisions and evidence
MariaDB persistence qualification / mariadb (push) Failing after 7s
MariaDB persistence qualification / mariadb (push) Failing after 7s
This commit is contained in:
@@ -0,0 +1,144 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user