diff --git a/TODO.md b/TODO.md index 9eb3e08d..3b2f1c29 100644 --- a/TODO.md +++ b/TODO.md @@ -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