3.3 KiB
3.3 KiB
Stage: analyze
Purpose
Execute selected configured Scriptorium artifacts in dependency order and materialize outputs.
Inputs
- configured artifacts from
pipeline.scriptorium.artifacts - optional selected artifact keys supplied through the stage environment
- built-in, configured, extraction, and previous-session source references in artifact inputs
Supported source families:
- built-ins:
narratio.transcript.*,narratio.bounds.session - prepared stable inputs:
narratio.input.players,narratio.input.party,narratio.input.glossary - configured artifacts:
narratio.artifact.<key> - extraction lanes:
narratio.extraction.<key> - previous-session cache:
narratio.previous_session.artifact.<key>
Outputs
- one materialized output per executed configured artifact (
output_path) - stage metadata describing selected/generated/reused artifacts
Key Behavior
- when Scriptorium is absent or no configured artifact is executable, completes successfully with no outputs and records explanatory metadata. This is not an explicit self-skip: both manifests record success, satisfy publish's prerequisite, and an ordinary later run reuses the result until forced.
- builds a runtime artifact catalog containing built-ins, configured artifacts, and configured extraction lanes. Extraction availability is hydrated only from compatible successful extraction evidence.
- uses enabled configured artifacts by default. An explicit
--artifactsselection is a one-invocation override: it makes exactly the named configured artifacts executable even when disabled, and does not automatically include dependencies. A selected artifact's dependencies must instead already be available to the catalog. - marks non-executable configured artifacts as reusable when output files already exist.
- validates selected artifact dependency order (cycle-safe topo ordering).
- resolves required/optional inputs per artifact source definition.
- omits an unavailable optional input; an unavailable required input fails.
- resolves prepared stable input sources from
inputs/*.ymlmaterialized byprepare. - resolves previous-session sources from local
previous/cache only. - runs optional render-debug, then artifact execution.
- validates non-empty output files and materializes canonical outputs.
Failure Semantics
- required missing configured/previous-session inputs fail.
- missing required prepared stable input source includes prepare rerun guidance.
- missing required previous-session source includes prepare rerun guidance.
- missing required
narratio.transcript.final_markdownornarratio.transcript.final_trimmed_markdowninputs includes render rerun guidance. - dependency cycles or unavailable required dependencies fail.
- adapter validation failures fail stage.
Invariants
analyzeperforms no remote storage calls for previous-session source resolution.- output provenance and metadata are deterministic per execution.
Related Contracts And Tests
- Configuration owns artifact fields and source-selection rules.
- CLI owns user-visible artifact selection.
- Scriptorium owns the subprocess contract.
- Implementation and tests:
internal/stage/analyze.go,internal/stage/analyze_test.go