1.7 KiB
1.7 KiB
Internal: Workspace
Purpose
Define local session layout, run-local stage layout, and cleanup guardrails.
Canonical Session Layout
Session root:
{workspace.root}/work/{campaign}/{session_id}
Core directories/files:
inputs/audio/transcripts/artifacts/reports/logs/config/current/runs/previous/manifest.json.lock
previous/ reserved files:
previous/manifest.jsonprevious/artifacts/**
Run-Local Stage Layout
When run context is available, stages use:
runs/{run_id}/{stage}/outputs/runs/{run_id}/{stage}/logs/runs/{run_id}/{stage}/reports/runs/{run_id}/{stage}/config/runs/{run_id}/{stage}/scratch/
Run-local outputs are materialized back into canonical session paths before stage success.
previous/** writes are never redirected to run-local output paths.
Locking
artifacts.LocalStore enforces single-writer session lock via .lock file (ErrLockConflict on contention).
Cleanup Semantics
Automatic post-publish cleanup (runPostArchiveCleanup):
- only runs when publish actually executed and succeeded;
- requires
uploaded=trueandcurrent_pointer_written=truemetadata; - respects
pipeline.spool.delete_audio_after_publishandpipeline.workspace.cleanup_after_publish; - refuses unsafe deletes (root delete, out-of-root delete, symlink paths).
Manual clean command:
clean <session_id>removes session work and spool subtree.clean --allremoves all workspace work and spool children.- durable cache is preserved unless
--clear-cacheis requested.
Invariants
- campaign-aware session root is mandatory.
- manifest-driven stage state is durable across runs.
- cleanup guardrails prevent destructive root/out-of-scope deletion.