diff --git a/CLAUDE.md b/CLAUDE.md index 321dcc3..a2501fc 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -47,14 +47,19 @@ then restart. ## Current Project State -* **Phase**: shipped MVP + posting ledger. Working daily-use tool. -* **Last worked on**: 2026-04-17 -* **Last commit on main**: `19cac8f` — Backing transaction ledger: - Postings replace the applied field (#20) +* **Phase**: shipped MVP + posting ledger + template-entry edit + + platform-deploy prep (`/healthz`, structured JSON logs). Working + daily-use tool; first production deploy to home-ctr-onyx pending. +* **Last worked on**: 2026-04-19 +* **Last commit on main**: `1296258` — chore: silence jsonlogger + deprecation, fix LogQL example (#26, #27) * **Open PRs**: none -* **Open issues**: none -* **Test count**: 117 / 117 passing -* **Migrations**: 5 applied; latest `cc60e7f73a1c` +* **Open issues**: #28 Dockerfile, #29 compose.yml, #30 Forgejo + Actions deploy workflow (dependency-chained); #31 small cleanups + (non-blocking polish) +* **Test count**: 148 / 148 passing +* **Migrations**: 5 applied; latest `cc60e7f73a1c` (no schema change + in #26 or #27) * **Blocking issues**: none After pulling new work, always: @@ -70,6 +75,36 @@ the live DB. Most recent 3 sessions (full history in the [wiki](https://forgejo.labbity.unbiasedgeek.com/archeious/quartermaster/wiki)). +### Session 2 — 2026-04-19 + +Platform contract intake (#25) filled out and accepted; platform team +provisioned DNS (`quartermaster.unbiasedgeek.com`), Traefik middlewares +(basic-auth + rate-limit), the `/mnt/quartermaster/` bind mount, and +basic-auth creds. Two issues landed on main (#26 `/healthz`, #27 +structured JSON logs) via the superpowers brainstorm → spec → plan → +subagent-driven-TDD workflow. Thirteen commits on a single branch +(`feat/platform-deploy-prep`), rebased onto origin/main so history +stays linear despite the unrelated MCP-doc PR that landed alongside. + +Key decisions: single-source-of-truth `logconfig.json` (not a Python +dict + YAML shim, which would need `pyyaml` and introduce drift); five +seed app events (`month_created`, `month_closed`, +`template_entry_updated`, `posting_added`, `posting_deleted`) placed +after commit + refresh so they only fire on durable success; `/healthz` +on a dedicated router as a file boundary, with auth living in Traefik +per the platform contract. + +Two real misses caught by code review mid-flight: the autouse-fixture +workaround for Task 3's `dictConfig` state leak was wrong (fix: make +the contaminating test save/restore state itself); the third LogQL +example in README used `{{.path}}` on `month_closed` records that +carry `year_month`, not `path`. Both landed as fix commits. + +Deploy-pipeline work queued as #28 (Dockerfile), #29 (compose.yml), +#30 (Forgejo Actions), dependency-chained. Polish umbrella at #31. + +Full retro: [Session2](https://forgejo.labbity.unbiasedgeek.com/archeious/quartermaster/wiki/Session2). + ### Session 1 — 2026-04-17 Greenfield to working ledger. 10 PRs merged in one sitting: