# Stage: merge ## Purpose Normalize raw transcript inputs and merge into base transcript via Seriatim. ## Inputs - `transcripts/raw/*.json` - `inputs/speakers.yml` - `inputs/autocorrect.yml` ## Outputs - `transcripts/base.json` - optional `artifacts/seriatim.report.json` ## Key Behavior - discovers and validates raw transcript inputs. - normalizes each raw transcript (`seriatim.Normalize`) into run-local scratch output. - merges normalized inputs (`seriatim.Run`) into base transcript. - validates merged transcript and optional report JSON. - materializes canonical outputs and records stage logs/generated configs. ## Invariants - merge always consumes normalized forms of raw inputs. - base transcript must validate before stage success. - report output is config-gated. ## Related Contracts And Tests - [Seriatim](../integrations/seriatim.md) owns subprocess and output semantics. - [Configuration](../config.md#pipeline) owns operator-selected Seriatim values. - Implementation and tests: `internal/stage/merge.go`, `internal/stage/merge_test.go`