Files
narratio/docs/internal/stage-merge.md

1.8 KiB

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.

Resume Evidence

Merge records a versioned semantic-configuration fingerprint for the Seriatim merge operation, output schema, coalesce gap, and every configured advanced merge transformation. A change reruns merge and stales only its fixed descendants; prepare and transcribe remain reusable. Binary path, timeout, report emission, logs, and diagnostic retention are operational exclusions.

Configuration or resources loaded privately inside Seriatim are outside Narratio's observable contract and require --force when changed. An existing successful merge record without evidence reruns once when selected.

  • Seriatim owns subprocess and output semantics.
  • Configuration owns operator-selected Seriatim values.
  • Implementation and tests: internal/stage/merge.go, internal/stage/merge_test.go, internal/stage/semantic_contracts_initial.go, and internal/stage/semantic_contracts_initial_test.go