62 lines
2.1 KiB
Markdown
62 lines
2.1 KiB
Markdown
# Integration: Seriatim
|
|
|
|
## Purpose
|
|
Define the Seriatim adapter contract used by `merge`, `normalize`, `trim`, and `render`.
|
|
|
|
## Adapter Boundary
|
|
Interface:
|
|
- `seriatim.Runner`
|
|
- methods:
|
|
- `Run(ctx, MergeRequest)`
|
|
- `Normalize(ctx, NormalizeRequest)`
|
|
- `Trim(ctx, TrimRequest)`
|
|
- `Render(ctx, RenderRequest)`
|
|
|
|
Primary implementation:
|
|
- `internal/adapters/seriatim/SubprocessRunner`
|
|
|
|
Execution modes:
|
|
- `seriatim merge`
|
|
- `seriatim normalize`
|
|
- `seriatim trim`
|
|
- `seriatim render`
|
|
|
|
## Request/Result Contracts
|
|
- `MergeRequest`/`MergeResult`: multi-input merge to base transcript, optional report.
|
|
- `NormalizeRequest`/`NormalizeResult`: transcript normalization with explicit schema.
|
|
- `TrimRequest`/`TrimResult`: transcript trimming with required keep selector.
|
|
- `RenderRequest`/`RenderResult`: transcript-to-markdown rendering with explicit format and render booleans.
|
|
|
|
Results include output/log/config paths, timing, exit code, and metadata.
|
|
|
|
## Validation and Failure Semantics
|
|
Runner construction validates:
|
|
- binary presence;
|
|
- timeout > 0;
|
|
- supported output schema (`seriatim-minimal|seriatim-intermediate|seriatim-full`);
|
|
- non-negative coalesce gap.
|
|
|
|
Invocation fails on:
|
|
- missing required request paths/inputs;
|
|
- invalid normalize schema override;
|
|
- unsupported render format;
|
|
- subprocess failure;
|
|
- invalid JSON outputs for merge/normalize/trim;
|
|
- missing `segments` array for normalize/trim transcript outputs;
|
|
- empty render output files.
|
|
|
|
When report paths are provided/enabled, report files must parse as JSON.
|
|
|
|
## Deterministic Behavior
|
|
- argument ordering is deterministic per command construction.
|
|
- merge env overrides are explicit (`SERIATIM_*`) and only emitted when configured.
|
|
- generated invocation YAML (`seriatim.generated.v1`) is emitted when requested.
|
|
- adapter does not write manifests or choose stage inputs.
|
|
|
|
## Config Mapping
|
|
Config fields consumed through runner/stage wiring are under `pipeline.seriatim.*` and `pipeline.render.*`.
|
|
|
|
Maintained examples with Seriatim config:
|
|
- `examples/pipeline.full.annotated.yml`
|
|
- `examples/pipeline.production.yml`
|