WIP: Require canonical durable database configuration #514

Draft
toasterson wants to merge 5 commits from claude/wi-01a03edf-5416-7413-ab36-308c8bee1cd1-database-cutover into claude/wi-01a03edf-wave-r1a-typed-fail-closed-config-spine
Owner

WI-344 (01a03edf-5416-7413-ab36-308c8bee1cd1) now selects its durable SeaORM store through canonical [database]: DATABASE_URL overrides the configured URL, and an omitted URL selects the resolved state_dir/store.db SQLite file. Legacy [postgres] configuration is rejected with migration guidance. Both backends fail startup on explicit connection errors; configured-store WAL setup must succeed before runtime publication.

SQLite uses the existing entities/migrations, locks and fencing epochs, preserving ADR 120 shared/per-Akh layouts. Omitted migration policy defaults to true for SQLite and false for PostgreSQL; explicit false is respected for host and per-Akh files. Parsed memory-mode URI aliases/custom VFS are refused before file creation. Database identity is pinned for the pool/residency/migration lifetime; live retargeting requires restart. SQLite cross-host relocation is refused before side effects. Invalid-value diagnostics redact connection material.

Stacked on WI-343 branch claude/wi-01a03edf-wave-r1a-typed-fail-closed-config-spine at f3736b5b, with current main89b1e40b integrated. The draft and pending WI-343 dependency remain. WI-345 owns deployment configuration/PID artifacts. Generic Engine redb caches/recovery remain; no deployments or live migrations.

Validation of source951707e1994af16bc94920079de7b56157c22ecb:239 actual tests passed (configuration155; daemon56; PostgreSQL daemon3 and store8 explicitly executed against a disposable local PostgreSQL16 fixture; SQLite/layout/migration CLI17). Includes real WAL reopen, failed-first-open then successful retry, per-Akh isolation, memory-URI rejection, secret-redaction and relocation guards. The disposable container was removed. Local review and tests do not satisfy native exact-head CI/review automatically.

Evidence/design: docs/ai/plans/2026-10-02-database-config-cutover.md.

Root and middle independently approved source951707e1. Ordinary server/lib/akhomed Clippy and leaf store/migrate Clippy pass; inherited lint warnings remain, plus the retained reconnect helper is unused in production after startup fallback retirement.

Integration refresh: head4311dff4 merges WI-343’s shared-spine feature-boundary repair. The canonical database cutover body is preserved; daemon-only test modules retain explicit feature guards. No-default library check passes at4311dff4. All218 configuration-related tests pass in downstream WI-345 atbc528bf0 with identical configuration sources; the original239 runtime/store tests remain mapped to951707e1. Independent root/recent merge review approved.

WI-344 (01a03edf-5416-7413-ab36-308c8bee1cd1) now selects its durable SeaORM store through canonical [database]: DATABASE_URL overrides the configured URL, and an omitted URL selects the resolved state_dir/store.db SQLite file. Legacy [postgres] configuration is rejected with migration guidance. Both backends fail startup on explicit connection errors; configured-store WAL setup must succeed before runtime publication. SQLite uses the existing entities/migrations, locks and fencing epochs, preserving ADR 120 shared/per-Akh layouts. Omitted migration policy defaults to true for SQLite and false for PostgreSQL; explicit false is respected for host and per-Akh files. Parsed memory-mode URI aliases/custom VFS are refused before file creation. Database identity is pinned for the pool/residency/migration lifetime; live retargeting requires restart. SQLite cross-host relocation is refused before side effects. Invalid-value diagnostics redact connection material. Stacked on WI-343 branch claude/wi-01a03edf-wave-r1a-typed-fail-closed-config-spine at f3736b5b, with current main89b1e40b integrated. The draft and pending WI-343 dependency remain. WI-345 owns deployment configuration/PID artifacts. Generic Engine redb caches/recovery remain; no deployments or live migrations. Validation of source951707e1994af16bc94920079de7b56157c22ecb:239 actual tests passed (configuration155; daemon56; PostgreSQL daemon3 and store8 explicitly executed against a disposable local PostgreSQL16 fixture; SQLite/layout/migration CLI17). Includes real WAL reopen, failed-first-open then successful retry, per-Akh isolation, memory-URI rejection, secret-redaction and relocation guards. The disposable container was removed. Local review and tests do not satisfy native exact-head CI/review automatically. Evidence/design: docs/ai/plans/2026-10-02-database-config-cutover.md. Root and middle independently approved source951707e1. Ordinary server/lib/akhomed Clippy and leaf store/migrate Clippy pass; inherited lint warnings remain, plus the retained reconnect helper is unused in production after startup fallback retirement. Integration refresh: head4311dff4 merges WI-343’s shared-spine feature-boundary repair. The canonical database cutover body is preserved; daemon-only test modules retain explicit feature guards. No-default library check passes at4311dff4. All218 configuration-related tests pass in downstream WI-345 atbc528bf0 with identical configuration sources; the original239 runtime/store tests remain mapped to951707e1. Independent root/recent merge review approved.
Prepare gated Lilith historical receipt pilot (WI-526)
Some checks failed
CI / test-session-platform (pull_request) Successful in 21m59s
CI / check-seshat (pull_request) Successful in 16m32s
CI / docker-seshd (pull_request) Successful in 11m7s
CI / docker-akh-transcripts (pull_request) Successful in 9m6s
CI / test-akh-medu (pull_request) Successful in 35m38s
CI / docker-sokard (pull_request) Successful in 35m54s
CI / test-sokar (pull_request) Successful in 1h31m35s
CI / check-akh-medu (pull_request) Successful in 1h29m33s
CI / publish-chart (pull_request) Successful in 3h8m46s
CI / platform-images-fleet (pull_request) Has been cancelled
CI / platform-images-collect (pull_request) Has been cancelled
CI / platform-images-daemons (pull_request) Successful in 19m33s
CI / platform-images-core (pull_request) Successful in 32m25s
CI / platform-images-home (pull_request) Successful in 37m49s
3431228486
Merge pull request 'Prepare gated Lilith historical receipt pilot (WI-526)' (#510) from codex/lilith-history-prep-20261001 into main
All checks were successful
CI / check-akh-medu (push) Successful in 15m53s
CI / test-sokar (push) Successful in 25m7s
CI / docker-akh-transcripts (push) Successful in 15m47s
CI / docker-seshd (push) Successful in 31m54s
CI / publish-chart (push) Successful in 25m7s
CI / test-session-platform (push) Successful in 50m39s
CI / check-seshat (push) Successful in 50m52s
CI / docker-sokard (push) Successful in 1h18m26s
CI / test-akh-medu (push) Successful in 2h29m35s
CI / platform-images-core (push) Successful in 21m50s
CI / platform-images-home (push) Successful in 24m4s
CI / platform-images-daemons (push) Successful in 1h27m49s
CI / platform-images-fleet (push) Successful in 6m58s
CI / platform-images-collect (push) Successful in 4m38s
89b1e40b73
Reviewed-on: #510
fix(config): require canonical durable database selection for WI-344
Some checks failed
CI / test-session-platform (pull_request) Has been cancelled
CI / test-sokar (pull_request) Has been cancelled
CI / check-seshat (pull_request) Has been cancelled
CI / check-akh-medu (pull_request) Has been cancelled
CI / test-akh-medu (pull_request) Has been cancelled
CI / docker-seshd (pull_request) Has been cancelled
CI / docker-sokard (pull_request) Has been cancelled
CI / docker-akh-transcripts (pull_request) Has been cancelled
CI / publish-chart (pull_request) Has been cancelled
CI / platform-images-home (pull_request) Has been cancelled
CI / platform-images-core (pull_request) Has been cancelled
CI / platform-images-daemons (pull_request) Has been cancelled
CI / platform-images-fleet (pull_request) Has been cancelled
CI / platform-images-collect (pull_request) Has been cancelled
951707e199
toasterson changed title from WIP: WI-344 require canonical durable database selection to WIP: Require canonical durable database configuration 2026-10-02 22:03:09 +00:00
Merge commit 'f3736b5b4a' into codex/wi344-database-config-20261002
All checks were successful
CI / test-sokar (pull_request) Successful in 16m34s
CI / check-seshat (pull_request) Successful in 6m46s
CI / check-akh-medu (pull_request) Successful in 11m51s
CI / docker-seshd (pull_request) Successful in 16m19s
CI / publish-chart (pull_request) Successful in 10m40s
CI / test-session-platform (pull_request) Successful in 52m13s
CI / docker-sokard (pull_request) Successful in 40m54s
CI / docker-akh-transcripts (pull_request) Successful in 1h30m21s
CI / test-akh-medu (pull_request) Successful in 3h12m33s
CI / platform-images-home (pull_request) Successful in 10m47s
CI / platform-images-daemons (pull_request) Successful in 6m39s
CI / platform-images-core (pull_request) Successful in 39m40s
CI / platform-images-fleet (pull_request) Successful in 26m35s
CI / platform-images-collect (pull_request) Successful in 18m44s
4311dff4e8
All checks were successful
CI / test-sokar (pull_request) Successful in 16m34s
CI / check-seshat (pull_request) Successful in 6m46s
CI / check-akh-medu (pull_request) Successful in 11m51s
CI / docker-seshd (pull_request) Successful in 16m19s
CI / publish-chart (pull_request) Successful in 10m40s
CI / test-session-platform (pull_request) Successful in 52m13s
CI / docker-sokard (pull_request) Successful in 40m54s
CI / docker-akh-transcripts (pull_request) Successful in 1h30m21s
CI / test-akh-medu (pull_request) Successful in 3h12m33s
CI / platform-images-home (pull_request) Successful in 10m47s
CI / platform-images-daemons (pull_request) Successful in 6m39s
CI / platform-images-core (pull_request) Successful in 39m40s
CI / platform-images-fleet (pull_request) Successful in 26m35s
CI / platform-images-collect (pull_request) Successful in 18m44s
This pull request has changes conflicting with the target branch.
  • crates/akhomed-store/tests/local_sqlite.rs
  • docs/ai/plans/2026-10-02-lilith-historical-pilot.md
  • scripts/lilith/runpod/verify_payload.py
View command line instructions

Manual merge helper

Use this merge commit message when completing the merge manually.

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin claude/wi-01a03edf-5416-7413-ab36-308c8bee1cd1-database-cutover:claude/wi-01a03edf-5416-7413-ab36-308c8bee1cd1-database-cutover
git switch claude/wi-01a03edf-5416-7413-ab36-308c8bee1cd1-database-cutover

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch claude/wi-01a03edf-wave-r1a-typed-fail-closed-config-spine
git merge --no-ff claude/wi-01a03edf-5416-7413-ab36-308c8bee1cd1-database-cutover
git switch claude/wi-01a03edf-5416-7413-ab36-308c8bee1cd1-database-cutover
git rebase claude/wi-01a03edf-wave-r1a-typed-fail-closed-config-spine
git switch claude/wi-01a03edf-wave-r1a-typed-fail-closed-config-spine
git merge --ff-only claude/wi-01a03edf-5416-7413-ab36-308c8bee1cd1-database-cutover
git switch claude/wi-01a03edf-5416-7413-ab36-308c8bee1cd1-database-cutover
git rebase claude/wi-01a03edf-wave-r1a-typed-fail-closed-config-spine
git switch claude/wi-01a03edf-wave-r1a-typed-fail-closed-config-spine
git merge --no-ff claude/wi-01a03edf-5416-7413-ab36-308c8bee1cd1-database-cutover
git switch claude/wi-01a03edf-wave-r1a-typed-fail-closed-config-spine
git merge --squash claude/wi-01a03edf-5416-7413-ab36-308c8bee1cd1-database-cutover
git switch claude/wi-01a03edf-wave-r1a-typed-fail-closed-config-spine
git merge --ff-only claude/wi-01a03edf-5416-7413-ab36-308c8bee1cd1-database-cutover
git switch claude/wi-01a03edf-wave-r1a-typed-fail-closed-config-spine
git merge claude/wi-01a03edf-5416-7413-ab36-308c8bee1cd1-database-cutover
git push origin claude/wi-01a03edf-wave-r1a-typed-fail-closed-config-spine
Sign in to join this conversation.
No reviewers
No labels
follow-up
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
toasterson/akh-medu!514
No description provided.