Add archive promotion locks

This commit is contained in:
2026-05-20 21:40:09 -05:00
parent 3aae4bbb12
commit 7111edeca4
9 changed files with 362 additions and 13 deletions

View File

@@ -169,13 +169,13 @@ When `prepare` materializes a remote session into `inputs/session.yml`, record t
- local checksum;
- downloaded temp/materialized path.
## Phase 3: Add Logical Archive Locks
## Phase 3: Add Logical Archive Locks (implemented)
Add source-based archive locks under `pipeline.archive.locks`. The current promotion system is already source-based, so the first implementation must not support destination-based locks.
Narratio supports source-based archive locks under `pipeline.archive.locks`. The promotion system is source-based; destination-based locks are not supported.
### Config Shape
Add lock entries:
Lock entries:
archive:
locks:
@@ -194,7 +194,7 @@ Validation rules:
### Archive Behavior
Archive must continue uploading complete run-local outputs under `runs/{run_id}/`.
Archive continues uploading complete run-local outputs under `runs/{run_id}/`.
Promotion behavior:
@@ -205,11 +205,11 @@ Promotion behavior:
5. Continue archive commit when all run-local uploads and all non-locked required promotions succeed.
6. Upload `current/manifest.json` and `current/run_id.txt` in the existing order, with `current/run_id.txt` last.
Ordinary `--force` must not override locks. Do not implement a lock-break override in this phase.
Ordinary `--force` does not override locks. A lock-break override remains out of scope.
### Metadata
Record locked promotion skips in archive metadata/reporting so operators can distinguish missing optional promotions from lock-protected promotions.
Archive records locked promotion skips in archive metadata/reporting so operators can distinguish missing optional promotions from lock-protected promotions.
Include: