diff --git a/docs/database/mariadb-standardisation/ACCEPTANCE.md b/docs/database/mariadb-standardisation/ACCEPTANCE.md index 05a75da..8e07fb4 100644 --- a/docs/database/mariadb-standardisation/ACCEPTANCE.md +++ b/docs/database/mariadb-standardisation/ACCEPTANCE.md @@ -16,7 +16,7 @@ See [machine-readable validation](validation.json), [setup](README.md), and [run | --- | --- | --- | | 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 UNVERIFIED** | Same fail-closed runner passes 32/32 using Docker, locked restore, isolated tmpfs and generated schemas. Workflow added; no successful hosted run claimed. Runner must provide Docker/Compose and .NET 9.0.317. | +| 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. | @@ -76,6 +76,14 @@ now uses the existing bridge network, avoiding leaked per-run networks. Final re 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 diff --git a/docs/database/mariadb-standardisation/PLAN.md b/docs/database/mariadb-standardisation/PLAN.md index f8c8cfc..d082291 100644 --- a/docs/database/mariadb-standardisation/PLAN.md +++ b/docs/database/mariadb-standardisation/PLAN.md @@ -34,7 +34,7 @@ Baseline default/fallback provider: SQLite. MariaDB options hardcoded `11.0.0`. - [x] Official pinned12.2.2 Docker image obtained, verified and executed. - [x] Persistent development service, actual API migrations and row preservation across restart. -- [x] Reproducible disposable integration runner32/32 and CI workflow (hosted execution unverified). +- [x] Reproducible disposable integration runner32/32 and CI workflow; hosted run843 is blocked before tests by missing Docker CLI. - [x] Provider defects reproduced and minimally repaired; current Release backend1123/1123. - [x] Native MariaDB browser recovery1/1; canonical target guards10/10; runner guards5/5. - [x] Three obsolete fixtures repaired; diagnostics18/18 and volume3/3. diff --git a/docs/database/mariadb-standardisation/README.md b/docs/database/mariadb-standardisation/README.md index 1694911..e79b33d 100644 --- a/docs/database/mariadb-standardisation/README.md +++ b/docs/database/mariadb-standardisation/README.md @@ -104,6 +104,10 @@ admin database in favor of a new schema. Loopback is a guard, never permission t locally. Alternate `JOBTRACKER_MARIADB_TEST_VERSION` values label a separate compatibility run; they cannot be used to claim12.2.2 parity. The CI workflow uses the Compose command, requires a Docker daemon/Compose and preserves evidence. A checked-in workflow is not proof of a successful hosted run. +The first hosted execution, [run843](https://git.cesnimda.uk/cesnimda/jobtrackingapp/actions/runs/843), +failed before database tests because the runner job image has no `docker` executable. Hosted CI +remains blocked pending an isolated Docker/Compose-capable test runner; local Compose32/32 remains +separate evidence. Do not expose a production Docker socket to resolve this prerequisite. The ordinary backend project still contains explicitly transitional SQLite/InMemory unit/legacy contracts. The ordinary browser fixture explicitly selects SQLite until its SQL seed/proof helpers diff --git a/docs/database/mariadb-standardisation/validation.json b/docs/database/mariadb-standardisation/validation.json index 4ce5ae4..3356ea2 100644 --- a/docs/database/mariadb-standardisation/validation.json +++ b/docs/database/mariadb-standardisation/validation.json @@ -468,7 +468,7 @@ "verdicts": { "mariaDb1222Rd21": "PASS_BOUNDED_RESOLUTION", "localDevelopment": "READY", - "ciIntegration": "LOCAL_READY_HOSTED_UNVERIFIED", + "ciIntegration": "LOCAL_READY_HOSTED_BLOCKED_MISSING_DOCKER_CLI", "historicalFixtures": "PASS", "sqliteRetirement": "PLAN_READY_REMOVAL_NO_GO", "mariaDb123Lts": "INVESTIGATION_READY_MIGRATION_NO_GO", @@ -526,5 +526,22 @@ "job-tracker-ui/scripts/mariadb-browser-connection.test.mjs": "39218ff8f671e0f50f8df0bc486b6fbea7699e8959662ac3b4b6d2dfce13573d", "scripts/mariadb-integration.py": "410cede3ca8794de99735a579ac626a34b6a56ee89c6ef63880d692153c7cd97", "scripts/test-mariadb-integration.py": "39aa5618724e74b859aceaf814bf08b9ea63a54205452805caa810a302441a80" + }, + "hostedCi": { + "runId": 843, + "jobId": 1733, + "commit": "e75c4a477555bbd360b83004c25c30fbfcf233d3", + "url": "https://git.cesnimda.uk/cesnimda/jobtrackingapp/actions/runs/843", + "result": "failure", + "failedStep": "Require Docker and Compose", + "error": "docker: command not found", + "exitCode": 127, + "checkoutSucceeded": true, + "sdkSetupSucceeded": true, + "offlineRunnerGuardsPassed": 5, + "mariaDbTestsExecuted": 0, + "logSha256": "47ba05d12f08eb7a16a5649f71dde18cd582176a2bed818f3e045932ec025891", + "stepApiCaveat": "Gitea marked earlier steps failure too; actual log confirms checkout SDK and five guards passed", + "requiredNextStep": "Dedicated isolated Docker/Compose-capable test runner; rerun and inspect native TRX and cleanup" } } diff --git a/docs/roadmap/todo.md b/docs/roadmap/todo.md index 3721656..b4ebc86 100644 --- a/docs/roadmap/todo.md +++ b/docs/roadmap/todo.md @@ -10,7 +10,7 @@ Phase 7 execution started: 2026-10-11, from synchronized `b531998` on `codex/ui- ## Current repository work -- [x] **MariaDB standardisation and RD21 qualification — 24 October 2026:** [acceptance](../database/mariadb-standardisation/ACCEPTANCE.md), branch `codex/rd21-mariadb-standardisation`, baseline `0d16a691`. Pinned official MariaDB 12.2.2 Docker lane 32/32 and native browser recovery 1/1; existing backend 1,123/1,123, repaired diagnostics 18/18 and volume 3/3. Local dev migrations/persistent volume verified. RD21 resolved within qualified scope; hosted CI unverified, SQLite removal/12.3 migration/Phase 9 reacceptance/Phase 10/production remain gated. Docker socket failure recovered with preserved socket-only archives; no persistent Docker data reset or production action. +- [x] **MariaDB standardisation and RD21 qualification — 24 October 2026:** [acceptance](../database/mariadb-standardisation/ACCEPTANCE.md), branch `codex/rd21-mariadb-standardisation`, baseline `0d16a691`. Pinned official MariaDB 12.2.2 Docker lane 32/32 and native browser recovery 1/1; existing backend 1,123/1,123, repaired diagnostics 18/18 and volume 3/3. Local dev migrations/persistent volume verified. RD21 resolved within qualified scope; hosted CI run843 blocked by missing Docker CLI (no database tests ran), SQLite removal/12.3 migration/Phase 9 reacceptance/Phase 10/production remain gated. Docker socket failure recovered with preserved socket-only archives; no persistent Docker data reset or production action. - [x] **RD21 safe remediation/requalification checkpoints — 23 October 2026:** [dated addendum](../redesign/phase-9/rd21-remediation/ACCEPTANCE_ADDENDUM_2026-10-23.md), branch `fix/rd21-acknowledged-edit-loss`, based on final Phase 9 `8e7e3f6`; product checkpoint `1b89a77`. Original persisted loss and Career partial commit reproduced and locally repaired, both final review findings addressed. Final backend 1,109/frontend 934 (105 suites)/ordinary browser 362/contracts 23/model-disabled sidecar 56/new remediation 6/conforming volume 3 pass; types/lint/build and unchanged PDF oracles 24 fixtures/60 pages pass. Original diagnostics 16 pass/2 fail and volume 2 pass/1 fail retain obsolete unversioned Career-seed failures; no skips or concealed reruns. Formal RD21 **UNRESOLVED** pending required MariaDB runtime qualification; Phase 9/Phase 10/production **NO-GO**. Preserve 56 PARTIAL/C11 DEFERRED and 57 groups/33 routes; historical evidence unchanged. Reporting publication follows the addendum; no production operation or main merge.