diff --git a/persistent-memory.md b/persistent-memory.md index 382611c..9b7a9df 100644 --- a/persistent-memory.md +++ b/persistent-memory.md @@ -273,6 +273,20 @@ _As of 2026-05-20:_ Lesson: when encoding container-internal paths in compose, verify against the Dockerfile, not the design-doc. +- `[2026-05-20]` `SKALDSONG_DB_PATH` + `SKALDSONG_RUNS_DIR` in + compose env block — names skaldsong's app doesn't read. App reads + `SKALDSONG_HOST_SQLITE_PATH` + `SKALDSONG_HOST_RUNS_ROOT` (per + Dockerfile ENV defaults). Wrong names = silently no-op; app fell + back to Dockerfile defaults pointing at `/app/data/...` which the + compose's bind mount did NOT cover (mount target was + `/app/state/...`). Result: every `--force-recreate` wiped the + SQLite DB along with the ephemeral container layer. Caught by + skaldsong-dev after operator noticed stories vanishing on each + CD push (althing thread `01KS4DPF6SXTBP4Q360JZVWPNT`). Fix in + `52e98fa` — rename env vars, bind targets unchanged. Same lesson + as the `/app/web/dist` footgun: verify env var NAMES against the + Dockerfile/app, not against design-doc shorthand. + - `[2026-05-19]` Playbook verify step `docker ps | grep healthy` racing the container's `start_period` (30s in compose's healthcheck). Verify ran 0.09s after `compose up -d --force-recreate`