Add remote storage backend

This commit is contained in:
2026-05-16 14:22:04 +00:00
parent 0454296c81
commit 1e6db89dd4
16 changed files with 1016 additions and 11 deletions

View File

@@ -77,11 +77,35 @@ Current boundaries:
- local development audio (`audio_dir` / `audio_files`) still works
- `audio_dir`/`audio_files` and `audio_s3` are mutually exclusive
- no real S3 backend or AWS SDK integration yet
- real S3-compatible backend now exists in the storage adapter package
- storage backend tests use fake storage and do not require live S3
- no prepare-stage S3 list/download behavior yet
- no archive-stage S3 upload/promotion behavior yet
- no `current/manifest.json` or `current/run_id.txt` uploads yet
## Remote Storage Backend
Narratio includes an object-store backend layer for future prepare/archive work:
- `List(ctx, prefix)`
- `Download(ctx, key, localPath)`
- `Upload(ctx, localPath, key, opts)`
- `Exists(ctx, key)`
Implemented backends:
- fake storage backend for deterministic tests
- S3-compatible backend built from `pipeline.storage.s3`
Key invariant:
- callers pass full bucket-relative object keys
- storage backends do not prepend `root_prefix` and do not infer session/campaign paths
Current boundary:
- this backend layer is implemented but not yet wired into prepare-stage audio retrieval or archive-stage uploads
## Canonical Stage Order
1. `prepare`