Slice 2 up, both halves:
- backend #248:
dotnet SpikerSoft.Api.dll --bootstrap— the API image itself runs the seed sequence withthrowOnFailureand exits without starting Kestrel.…
P8 status after a full audit — most of the checklist already existed and is verified working:
- ✅ Drift reporter (AST-based, both directions + access-mismatch + tools + wildcard) —…
Slice 1 up: backend PR #246 — the five-step seeding sequence (terms → areas → postal[gated] → positions → curriculum store → lesson hydration) is extracted from inline Program.cs into…
Closing — already implemented (Approach A, exactly as this ticket proposed) and shipped with the feature-based architecture revamp (spikersoft-angular commit 4a362ba). The shared…
Fix verified live in production. Seq, 2026-07-12 21:34:25 UTC — the deployed docker-monitor booted past the old fatal and both #240/#241 features announced themselves:
ServiceAutoReconcil…
spikersoft-web characterization (the last unexamined exclude): it passes lint clean — 0 errors, 37.5s standalone (282% CPU; it's just the biggest single lint target). The earlier standalone…
Slice 2 up: angular PR #173 — wasm-voxel is back under lint, coverage 66 → 67.
The real mechanism behind its 78 "errors": nearly all were Definition for rule not found — the…
Item B (auto-reconcile sweep) has LANDED — commit b96976bd 'feat(docker-monitor): auto-reconcile sweep for stranded services (#510-B)'. Adds ServiceAutoReconciler.cs (167 LOC) wired into…
Update: the exit-0 half is FIXED — docker-monitor was redeployed at 21:35 on a new digest 8afdb709 (was the crashing c14863a1) and the correctly-named spikersoft-docker-monitor is now Running…
Recovery runbook up: infra PR #49 → docs/keycloak-postgres-toast-recovery.md. Summary of the approach (full detail + exact commands in the doc):
- Blast-radius gate: `SELECT count(*)…
Staging mirror verified live in production (the gate this ticket was waiting on). Two real uploads today:
- 19:52:52 UTC — `S3StagingMirror: Staging mirror: uploaded uploads/ebooks/spikerj_17…
Root-caused and fixed — backend PR #245. I pulled the exact c14863a1 amd64 image and ran it locally: the container is NOT silent — it logs a loud Serilog fatal and exits 0:
Unable to…
Durable fix up: infra PR #48 — gitea-act-runner/cleanup/ with a name-filtered prune script (GITEA-ACTION* volumes + GITEA-ACTIONS-* networks + 48h build-cache + dangling images; real named…
Correction on the spikersoft-web exclude note in PR #172: a completed solo run shows it fails lint normally (exit 1 with failed task, not a silent crash — my earlier check just caught it…
First slice up: angular PR #172 — CI lint coverage goes from the curated 7 projects to 66 (nx run-many -t lint --all with a 9-project exclude list, so new libraries are covered by…
Status split (2026-07-12, verified against prod /healthz):
- Postal code data: RESOLVED — the health check now reports
Healthy — Postal code data available: 317,784 records. Half of…
Deployed and verified in production. Seq, 2026-07-12 19:39–19:42 UTC: 12 × "Host journal access available (mode=MountedDirectory, ...)" startup events across the fleet — 2 tasks reading the…
Fresh verification (2026-07-12 ~20:30 UTC) from the Jaeger query API: the tracing backend is serving and retaining traces again — /api/services lists the full service catalog, and trace…