docs: record the MinIO switch and the unversioned storage stack

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GmpYHPSLGmXGZMyLpn2Lbe
This commit is contained in:
Daniel 2026-09-10 04:18:12 +02:00
parent db83255c58
commit e1e23a99e6

15
TODO.md
View file

@ -19,6 +19,9 @@ Live state as of 2026-09-10. Everything not listed here is deployed and green.
scan now reaches mail, but the file pass has not finished a full cycle
since the Milvus rebuild, so no mail has been indexed yet. Watch for
`[SCAN-*] Mail messages: N seen, M queued`.
- [ ] **Put ped-ai-storage under version control.** It holds the compose,
`check.py` and `bootstrap_basic.py` for a live stack and is not a git repo,
so changes there are unreviewable and unrecoverable.
- [ ] **Rebuild the operator image.** Its baked-in `/opt/storage/check.py` has
drifted from the host copy: it lacks the `s3:ListBucket` grant (dropping it
broke image generation on 2026-09-09) and still resolves the store as
@ -40,8 +43,14 @@ Live state as of 2026-09-10. Everything not listed here is deployed and green.
- **Embedded etcd is unusable with authorization on.** Every non-root Milvus user
failed `etcdserver: invalid auth token`. Both stores now run a separate etcd
container, matching the profile that always worked.
- **`COMMON_STORAGETYPE=local` writes objects relative to the working directory.**
`/milvus/files` must be a volume or a recreate destroys the segments while etcd
keeps referencing them. Fixed for basic; clinical uses MinIO and is unaffected.
- **Both Milvus stores now keep objects in MinIO**, matching what clinical always
did. `COMMON_STORAGETYPE=local` wrote segment files relative to the working
directory, so a recreate destroyed them while etcd kept referencing them and the
collection hung at Loading forever. S3 semantics also mean either store can be
pointed at a managed bucket without touching Milvus — which is what makes a
Terraform-managed deployment straightforward.
- **Milvus object-store credentials live in `milvus-user.yaml`** in the protected
secrets dir, not in the compose, because Milvus has no file-based option for
them and the compose should stay reviewable.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>