1.7 KiB
1.7 KiB
Phase 17: Object Storage - Discussion Log
Audit trail only. Do not use as input to planning, research, or execution agents.
Date: 2026-04-05 Phase: 17-object-storage Areas discussed: S3 Client, URL Strategy, Storage Abstraction, Migration Approach Mode: --auto --batch
S3 Client
| Option | Description | Selected |
|---|---|---|
| @aws-sdk/client-s3 | Official AWS SDK v3, S3-compatible, tree-shakeable | ✓ |
| minio-js | MinIO-specific client | |
| undici/fetch with S3 API | Raw HTTP calls |
User's choice: @aws-sdk/client-s3 (auto-selected)
URL Strategy
| Option | Description | Selected |
|---|---|---|
| Presigned URLs | MinIO generates time-limited signed URLs, client fetches directly | ✓ |
| Proxy through GearBox API | Server fetches from MinIO, streams to client | |
| Public bucket | No auth needed, direct MinIO URLs |
User's choice: Presigned URLs (auto-selected)
Storage Abstraction
| Option | Description | Selected |
|---|---|---|
| Thin storage service | Single file wrapping S3 SDK with upload/delete/getUrl | ✓ |
| Full abstraction layer | Interface with local/S3 implementations |
User's choice: Thin storage service (auto-selected)
Migration Approach
| Option | Description | Selected |
|---|---|---|
| One-time script | Reads uploads/, uploads to MinIO, same filenames | ✓ |
| Lazy migration | Upload to MinIO on first access, fallback to local |
User's choice: One-time script (auto-selected)
Claude's Discretion
- Presigned URL expiry, proxy fallback, MinIO version, bucket policy, cleanup strategy
Deferred Ideas
None