docs(plan): SP23 — record live verification results
Appends a 'Live verification' section to the plan with the six bugs the live bring-up surfaced + their fixes, and the end-to-end smoke results (login, /api/auth/me, /api/parse-837 with a real 837P, full test suite 1026 passed).
This commit is contained in:
@@ -1152,3 +1152,26 @@ Per spec §14 — not done in this plan:
|
||||
- Watchtower / automatic updates. Manual `docker compose pull`.
|
||||
- Linting / pre-commit / dev tooling polish.
|
||||
- Component / E2E browser tests (Playwright).
|
||||
|
||||
---
|
||||
|
||||
## Live verification (post-implementation, gated `DOCKER_TESTS=1`)
|
||||
|
||||
Before opening the PR, the full `docker compose up -d` stack was brought up on the dev host with `DOCKER_TESTS=1`. Six bugs surfaced that don't show up in unit tests — all fixed in the followup commit `3ba5ca0`:
|
||||
|
||||
1. **Wheel built from stub `__init__.py`** — the "stub init, wheel, copy src, wheel again" pattern silently kept the first wheel's contents. The installed package had an empty `__init__.py`, so `from cyclone import __version__` crashed at import time. Single `COPY src/` + single `pip wheel` is correct.
|
||||
2. **Backend binds to `127.0.0.1`** — intentional (local-only by design, see CLAUDE.md). But that means the frontend container can't reach it over the compose bridge. Added `CYCLONE_HOST` env var, defaults to `127.0.0.1`, set to `0.0.0.0` in compose.
|
||||
3. **Healthcheck probed `/api/healthz` (404)** — actual route is `/api/health`. Updated Dockerfile, compose, RUNBOOK, post-deploy.sh, smoke.sh.
|
||||
4. **Auth matrix had `("/api/healthz"): set()`** — wrong path; would have deny-by-defaulted the real health endpoint. Updated to `/api/health`.
|
||||
5. **nginx upstream `cyclone-backend:8000`** — compose v2 only resolves the bare service name over the bridge network. Updated to `backend:8000`.
|
||||
6. **Frontend healthcheck `http://localhost:8080/`** — alpine nginx listens on IPv6 by default; `localhost` is unreliable. Updated to `http://127.0.0.1:8080/`.
|
||||
|
||||
Live verification results (with `/tmp/cyclone-test-secrets/` + override, nocodb stopped):
|
||||
- Both containers `(healthy)` within ~60s
|
||||
- `curl http://localhost:8080/api/health` → 200, valid JSON
|
||||
- `POST /api/auth/login` as admin → 200, cookie set
|
||||
- `GET /api/auth/me` → 200 with admin user
|
||||
- `POST /api/parse-837` with `docs/goodclaim.x12` → 200, batch `6252a9265ea943039d363bbca2c16059` created
|
||||
- Full backend test suite (`DOCKER_TESTS=1`): **1026 passed, 9 skipped** (skips are prodfile corpus, gitignored)
|
||||
|
||||
Plus a followup commit `aecf831` to the live bring-up test itself: uses the override file when present, skips cleanly when port 8080 is bound by another service on a dev workstation.
|
||||
|
||||
Reference in New Issue
Block a user