2.3 KiB
Internal: Manifest
Purpose
Explain the session-progress and invocation-audit models implemented by
internal/manifest. Physical manifest placement belongs in
Operations.
Session Manifest
manifest.Manifest records:
- identity (
session_id,campaign,run_id) - local path metadata (
local_workdir,local_spool_dir) - remote identity metadata (
s3_bucket,s3_session_prefix,s3_run_prefix) inputsrecords- durable
artifactsrecords - per-stage
stagesmap
The model admits these stage states:
pendingrunningsucceededfailedskippedstaleinterrupted
Run Manifest
manifest.RunManifest is created for each invocation and records:
- invocation identity and
forceflag - requested stages
- per-stage action (
runorskip) - per-stage status
- overall run status (
running,succeeded,failed)
Persistence Semantics
manifest.LocalStore:
- validates loaded documents;
- normalizes missing maps/stage records;
- writes atomically via temp file + rename;
- updates
updated_aton save.
Execution Semantics
The application runner marks an executing stage running and then succeeded or failed in both manifests, persisting each transition. On success it records outputs, logs, generated configuration references, and metadata. A successful forced rerun marks only succeeded downstream session-stage records stale.
When an already-succeeded stage is skipped, the invocation run manifest records
the skip action and reason. The session manifest deliberately retains its
existing succeeded record because it remains the cross-invocation progress
authority.
Session manifest is the authoritative stage-progress ledger across invocations. Run manifest is invocation-scoped audit state.
Invariants
- stage resume/skip decisions are session-manifest driven.
- force reruns stale downstream succeeded stages.
- run manifest does not replace session manifest as progress authority.
Implementation And Tests
- Models and transitions:
internal/manifest/manifest.go,internal/manifest/run_manifest.go - Persistence and validation:
internal/manifest/store.go - Package tests:
internal/manifest/*_test.go - Assembled execution behavior:
internal/app/runner_test.go,internal/app/run_stage_test.go