Files

58 lines
2.0 KiB
Markdown
Raw Permalink Normal View History

2026-05-18 22:03:59 -05:00
# Stage: trim
## Purpose
Produce a final-trimmed transcript. By default, the stage generates bounds and
applies a bounds-driven trim.
2026-05-18 22:03:59 -05:00
## Inputs
- `transcripts/final.json`
2026-05-18 22:03:59 -05:00
## Outputs
- `transcripts/final.trimmed.json` (or configured trim output path)
2026-05-18 22:03:59 -05:00
- when trim enabled: `artifacts/session_bounds.json`
## Key Behavior
When `trim.enabled=true`:
- runs Scriptorium bounds artifact generation;
- optionally runs render-debug output generation;
- validates bounds payload against transcript;
- derives keep selector;
- either copies unchanged transcript or runs Seriatim trim;
- validates trimmed transcript and materializes bounds output.
When `trim.enabled=false`:
- copies normalized transcript to trimmed output.
## Invariants
- normalized transcript is required input.
- bounds output exists only in enabled trim path.
- render-debug output is diagnostic and not a declared stage output.
## Resume Semantics
The versioned semantic fingerprint covers enablement, the bounds prompt and
profile identifiers, the Scriptorium configuration identity, transcript input
name, sticky session variable, bounds and trimmed output identities, and the
Seriatim trim operation. Diagnostic bounds rendering, diagnostic output paths,
timeouts, executable paths, and optional reports are operational and do not
invalidate the canonical trimmed transcript.
Narratio cannot inspect prompt, profile, or configuration content that
Scriptorium or Seriatim privately resolves behind a stable identifier. Force
`trim` after changing such private content without changing its identifier.
## Related Contracts And Tests
- [Scriptorium](../integrations/scriptorium.md) owns bounds generation and
debug-render subprocess behavior.
- [Seriatim](../integrations/seriatim.md) owns transcript trimming behavior.
- [Configuration](../config.md#pipeline) owns trim fields and defaults.
- Implementation and tests: `internal/stage/trim.go`,
`internal/stage/trim_test.go`,
`internal/stage/semantic_contracts_refinement.go`