Plan Seriatim input implementation

This commit is contained in:
2026-07-03 21:06:34 +00:00
parent bf2c0f692d
commit f4d37f9557
2 changed files with 391 additions and 882 deletions

View File

@@ -23,8 +23,7 @@ In scope:
- input adapter registry wiring;
- module metadata/capabilities for pipeline validation;
- fixtures and tests;
- config path to use the input module through a named pipeline profile if
config loading exists.
- config compatibility through named pipeline profiles.
Out of scope:
@@ -33,13 +32,16 @@ Out of scope:
- transcript-specific behavior in runner/core packages;
- support for every possible Seriatim schema variant.
## Proposed Stages
## Target End State
### Seriatim Source Model
The repository should contain a real Seriatim input-stage module that translates
Seriatim minimal transcript JSON into the generic source model.
Define module-local structs for the Seriatim minimal output schema.
The Seriatim module should be registered under the stable input adapter key
`seriatim`. It should be selectable through the existing input adapter registry
and through pipeline-profile resolution when a profile binds `input: seriatim`.
Expected external shape:
The module should accept the Seriatim minimal output shape:
- top-level `metadata`;
- top-level `segments`;
@@ -49,57 +51,36 @@ Expected external shape:
- segment `speaker`;
- segment `text`.
Keep these structs in the Seriatim input module package.
### Parse And Validate
Implement parser and validation behavior.
Validation should cover:
- valid JSON;
- required metadata fields;
- required segment fields;
- unique segment IDs;
- non-empty segment text;
- valid start/end values as appropriate.
Prefer clear module-specific errors.
### Map To SourceDocument
Map Seriatim data into the generic source model:
The module should map Seriatim data into generic source values:
- segment `id` becomes `SourceUnit.ID`;
- segment `text` becomes `SourceUnit.Text`;
- unit kind should identify transcript-like units without requiring core
packages to know transcript semantics;
- `speaker`, `start`, and `end` become unit metadata;
- Seriatim metadata becomes document metadata.
- the document and unit kind strings identify transcript-like source material
without adding transcript-specific fields or types to core packages;
- `speaker`, `start`, and `end` become source-unit metadata;
- top-level Seriatim metadata becomes source-document metadata;
- the resulting source document passes core source validation.
The resulting `SourceDocument` should pass core source validation.
The module should reject invalid Seriatim input with clear module-specific
errors. Validation should cover:
### Registry And CLI Wiring
- valid JSON;
- required top-level metadata and segments;
- required segment fields;
- unique segment IDs;
- non-empty segment text;
- valid start and end values.
Register the module under a stable input adapter key, likely `seriatim`.
The module should declare flat capabilities for pipeline validation. Initial
capabilities should describe transcript-oriented source properties preserved by
the adapter, including speaker and timestamp metadata.
Declare module metadata for pipeline validation. Initial provided capabilities
should include transcript-oriented metadata such as `speaker` and `timestamps`
if those fields are preserved from Seriatim input.
Implementation staging belongs in
[`implementation.md`](implementation.md).
If config and CLI support exist, add a minimal pipeline-profile fixture or test
config using the Seriatim input module:
## Fixtures And Tests
```sh
notarius run dnd-session --input ./transcript.json --only spells
```
The command may still use fake extract, merge, normalize, and output modules
until checkpoint 6.
### Fixtures And Tests
Add fixtures and tests for:
The checkpoint should add synthetic fixtures and focused tests for:
- valid Seriatim minimal transcript;
- malformed JSON;

File diff suppressed because it is too large Load Diff