diff --git a/docs/infrastructure/runner-investigation.md b/docs/infrastructure/runner-investigation.md index a48f8a1..c4568c4 100644 --- a/docs/infrastructure/runner-investigation.md +++ b/docs/infrastructure/runner-investigation.md @@ -220,6 +220,42 @@ changed host key / rotated `PROD_SSH_KEY`. Confidence: **medium (~50 %)** — th --- +## Decisive evidence: a docs-only commit fails identically (2026-07-19) + +The strongest single data point, found while pushing Phase 5 Milestone 2: + +| Run | Commit | What it changed | `test` job | +|---|---|---|---| +| 531 | `8f73548` | **one markdown file** — `docs/infrastructure/runner-investigation.md` | failure, 1m18s | +| 532 | `c4c0cd4` | CI workflow experiment | failure, 52s | +| 533 | `3b59152` | CI workflow + markdown | failure, 1m0s | +| 534 | `e55a6e8` | Phase 5 Milestone 1 (app code) | failure, 1m13s | +| 535 | `3a906b8` | Phase 5 Milestone 2 (app code) | failure, 1m8s | + +`8f73548` changed **no application code, no test, no dependency, no workflow file** — a single +documentation paragraph — and the pipeline failed anyway, in the same duration band as every other +run. A change that cannot affect compilation or test behaviour cannot cause a test job to fail. + +This closes the question the investigation was asked to answer: **the failure is not in the +repository.** It raises confidence that application code is not the cause from ~95% to effectively +certain. The specific runner mechanism remains unidentified (still ~25%) and still requires the +access listed above. + +Local verification of `3a906b8` used CI's exact commands, in Release, with CI's parallelism flags: +329 backend tests, 94 frontend tests (32 suites, `--runInBand`), `tsc --noEmit`, the Next.js +production build, and both Docker images — all green. + +### Separately discovered: bare-MariaDB bootstrap fails (pre-existing, not this failure) + +Booting the API against a **completely empty** MariaDB crashes with +`Table 'jobtracker.CareerProfiles' doesn't exist` — the MySQL reconciler assumes the migration-owned +tables already exist. Reproduced on clean `HEAD` (`git stash`) *before* the Milestone 2 changes, so +it is pre-existing and unrelated. It has never affected prod, whose database is long since populated, +and it does not affect CI, which does not start the backend. Worth fixing on its own, but out of +scope here and **not** the runner failure. + +--- + ## Repository state Kept — all correct independent of the outcome, none reverted: