92 lines
8.2 KiB
Markdown
92 lines
8.2 KiB
Markdown
# MariaDB standardisation and RD21 qualification — 24 October 2026
|
|
|
|
RD21 is **resolved within the qualified MariaDB 12.2.2 save/concurrency scope**. The pinned official
|
|
Linux/amd64 image passes the actual Docker Compose persistence lane and a native browser/API recovery
|
|
journey with independent SQL reads. This supersedes the earlier addendum's missing-MariaDB blocker;
|
|
it does not reaccept all of Phase 9 or authorize release.
|
|
|
|
Baseline: `0d16a691e0249fe1264bf960de5e59eaa9b87fed`. Implementation checkpoint: `a2c9bda` on
|
|
`codex/rd21-mariadb-standardisation`. Main stays `5f835e54a9b74e6b71418422e28431b2af06453f`.
|
|
Raw runtime timestamps are UTC on 23 October; the owner's local report date is 24 October.
|
|
See [machine-readable validation](validation.json), [setup](README.md), and [runtime provenance](runtime-provenance.json).
|
|
|
|
## Separate decisions
|
|
|
|
| Gate | Verdict | Evidence or remaining blocker |
|
|
| --- | --- | --- |
|
|
| MariaDB 12.2.2 RD21 qualification | **PASS, bounded resolution** | 32 real-provider cases and one native browser journey; durable SQL state, transactions, rejected drafts, revision conflicts, recovery and tenant isolation. No production image equality claim. |
|
|
| MariaDB local development | **READY** | Pinned Compose image, healthy loopback service, separate persistent development volume, API startup applies 51 migrations; synthetic company survives database stop/start. |
|
|
| MariaDB CI/integration tests | **LOCAL READY; HOSTED BLOCKED** | Same fail-closed runner passes 32/32 locally. Hosted run843 passed checkout/SDK setup/five runner guards, then failed `Require Docker and Compose`: `docker: command not found`, exit127. No hosted MariaDB tests ran. A dedicated test runner needs Docker/Compose and an isolated engine. |
|
|
| Historical fixture repairs | **PASS** | Three obsolete revision fixtures corrected without weakening assertions: diagnostics 18/18, volume 3/3. Stale writes now assert 409 and preservation of the winner/source/history. |
|
|
| SQLite retirement | **PLAN READY; REMOVAL NO-GO** | Complete baseline classification; defaults corrected. Remaining legacy coverage, full-fidelity transfer and preservation/restore gates must precede package/branch removal. |
|
|
| MariaDB 12.3 LTS migration | **INVESTIGATION READY; MIGRATION NO-GO** | Separate 12.3.3 rehearsal proposed; target image/driver certification, copied-data upgrade, backup/restore and rollback-after-writes remain untested. |
|
|
| Phase 9 reacceptance | **NO-GO** | RD21's provider blocker closes; wider manual/device/provider/security/output/release qualifications remain. Preservation remains 57 groups/33 routes, 56 PARTIAL and C11 DEFERRED. |
|
|
| Phase 10 readiness | **NO-GO** | Phase 9 not fully reaccepted; implementation explicitly prohibited. |
|
|
| Production readiness | **NO-GO** | No production qualification, infrastructure/backup-restore/release acceptance, deployed identity verification or reviewed pinning change. No production operation performed. |
|
|
|
|
## Verified scope and accounting
|
|
|
|
| Lane | Final distinct results | Limits |
|
|
| --- | --- | --- |
|
|
| Existing backend Release | 1,123 passed, 0 failed/skipped | Includes 14 configuration cases; retained SQLite/InMemory contracts do not count as MariaDB qualification. |
|
|
| MariaDB Docker Compose Release | 32 passed, 0 failed/skipped | Exact official 12.2.2 image; repeated run after bridge-network cleanup fix also passes. Repeats are not added to the count. |
|
|
| Native MariaDB browser | 1 passed | Real API, Chromium and SQL client against the same pinned Docker image; controlled network failure, not power-loss testing. |
|
|
| Corrected diagnostics | 18 passed | Explicit temporary SQLite browser lane; includes data/sustained fixtures. |
|
|
| Corrected volume fixtures | 3 passed | Explicit temporary SQLite lane; separate configuration. |
|
|
| Disposable-runner guards | 5 passed | Offline subprocess doubles, including setup/cleanup failure; not database proof. |
|
|
| Browser connection guards | 10 passed | Duplicate/alias keys, remote/existing schema and port mismatches rejected. |
|
|
| Static checks | Passed | Full frontend typecheck/lint and targeted browser/config TypeScript compilation. |
|
|
|
|
The initial real-server run failed: startup omitted three Identity columns. After schema repair,
|
|
the writer-lock test exposed dirty tracked entities when Pomelo wrapped error 1205 in
|
|
`InvalidOperationException`. Both defects were repaired and covered by real-provider assertions.
|
|
The browser then exposed an untranslatable import-history ordering query; ordering/limiting the
|
|
tenant-filtered entities before DTO projection repairs the MariaDB path. A later browser failure
|
|
used a stale Release binary after a Debug-only rebuild; the Release suite was rebuilt and the final
|
|
browser rerun passed, including import-history HTTP 200. These failures remain recorded in validation.
|
|
|
|
The final 32 cases exercise Career Profile and Job saves, stale revision rejection, missing/legacy
|
|
revision handling, atomic projection/history/job/event updates, independent reads after commits,
|
|
controlled concurrent writes and lock timeout recovery, repeated/populated startup, additive RD21
|
|
migration preservation and tenant isolation. They use actual InnoDB persistence with independent TCP
|
|
connections. Identity/summarizer doubles in controller fixtures do not replace database behavior;
|
|
the separate browser uses the real hosted API. They do not certify every application query or
|
|
historically restore data already overwritten before RD21. Existing creation/idempotency and
|
|
unrelated Phase 9 reliability qualifications remain outside this bounded repair.
|
|
|
|
Production's owner-reported server is `12.2.2-MariaDB-ubu2404`, but its reported configuration ID
|
|
differs from the verified official image config. Version parity is established; exact production
|
|
image/configuration/environment parity is not. The [image record](image-provenance.json) distinguishes
|
|
manifest and config digests. Locked provider versions are Pomelo 9.0.0, EF Core 9.0.14 and
|
|
MySqlConnector 2.4.0. Real 12.2.2 results establish this application's tested compatibility, despite
|
|
Pomelo's published older tested-server matrix; they do not certify 12.3.
|
|
|
|
## Preservation, review and operational limits
|
|
|
|
The [SQLite audit](SQLITE_AUDIT.md) classifies 1,602 baseline references in 415 tracked files:
|
|
1,169 required historical/preservation references, 420 temporary transition references and 13
|
|
obsolete defaults/guidance references. The obsolete active defaults/guidance were corrected;
|
|
SQLite dependencies, compatibility branches, historical migrations and user data remain preserved.
|
|
The three fixture changes have exact before/after deltas in [fixture-delta.json](fixture-delta.json).
|
|
Previous acceptance counts and reports remain historical, not silently rewritten.
|
|
|
|
Independent review found and verified fixes for duplicate connection keys bypassing the browser's
|
|
database guard, server reuse and missing actual version verification. The generated test service
|
|
now uses the existing bridge network, avoiding leaked per-run networks. Final review has no further
|
|
actionable findings. Docker's local stale socket issue was also resolved without resetting Docker
|
|
or deleting its persistent data; see [local recovery](DOCKER_LOCAL_RECOVERY.md).
|
|
|
|
Authenticated hosted verification: [run843](https://git.cesnimda.uk/cesnimda/jobtrackingapp/actions/runs/843)
|
|
at report commit `e75c4a477555bbd360b83004c25c30fbfcf233d3` failed the explicit Docker prerequisite.
|
|
The Gitea step API labels earlier steps as failed too; the actual job log confirms checkout, SDK
|
|
installation and five guard cases succeeded. No database tests or database artifacts were produced.
|
|
Do not bypass the gate with SQLite, attach a production host socket, or silently grant runner
|
|
privileges. Provision an isolated CI database execution environment, rerun the same command and
|
|
verify the actual TRX/cleanup evidence before changing hosted readiness to PASS.
|
|
|
|
The intended final architecture is **MariaDB only** for application development, integration,
|
|
CI and production. Keep 12.2.2 pinned for the present qualification; rehearse the supported 12.3 LTS
|
|
path separately using [the migration gates](MARIADB_12_3_PLAN.md). Retire SQLite in the documented
|
|
stages after equivalent coverage and verified preservation, not by deleting existing databases.
|
|
No main merge, deployment, production connection/container change or Phase 10 implementation occurred.
|