Files
narratio/README.md

78 lines
3.1 KiB
Markdown
Raw Normal View History

2026-05-02 14:13:27 +00:00
# narratio
`narratio` is a Go-based orchestration application for processing D&D session audio into transcripts and downstream artifacts.
This repository currently contains a **working scaffold** with strict config loading, local workdir/manifest handling, resumable stage control, a real WhisperX HTTP adapter, and a real `prepare` + `transcribe` path.
2026-05-02 11:44:15 -05:00
## Expected Config Files
2026-05-02 11:44:15 -05:00
`narratio` expects two YAML files:
2026-05-02 11:44:15 -05:00
- `pipeline.yml`: pipeline/workspace settings (`workspace`, `storage`, `whisperx`, `seriatim`, `audita`, `analyzer`, `notification`)
- `session.yml`: per-session settings (`session_id`, `inputs`, optional metadata)
2026-05-03 15:23:47 -05:00
WhisperX config contract in `pipeline.yml`:
- required: `whisperx.transcribe_url`
- defaulted when omitted: `whisperx.language` (`en`), `whisperx.timeout` (`30m`), `whisperx.retries` (`3`), `whisperx.retry_delay` (`2s`), `whisperx.concurrency` (`2`)
2026-05-03 19:13:50 -05:00
Seriatim config contract in `pipeline.yml`:
- required: `seriatim.binary` (name or path; existence is checked at execution time, not config validation time)
- defaulted when omitted: `seriatim.timeout` (`10m`), `seriatim.output_schema` (`seriatim-intermediate`), `seriatim.coalesce_gap` (`3.0`), `seriatim.report` (`true`)
- allowed `seriatim.output_schema` values: `seriatim-minimal`, `seriatim-intermediate`, `seriatim-full`
- optional tuning: `seriatim.env.*` (`overlap_word_run_gap`, `overlap_word_run_reorder_window`, `backchannel_max_duration`, `filler_max_duration`) must be `> 0` when provided
`speakers.yml` note:
- use Seriatim’s documented `match:` format (not the legacy direct mapping style used by older scripts/scaffolds)
- TODO: add a concrete `speakers.yml` example once the Seriatim README/spec is vendored or linked in-repo.
2026-05-02 11:44:15 -05:00
Decoding is strict (`KnownFields(true)`), so unknown YAML fields fail fast.
Example minimal files are available under `examples/`:
- `examples/pipeline.minimal.yml`
- `examples/session.minimal.yml`
## Current Scaffold Status
Implemented now:
2026-05-02 11:44:15 -05:00
- strict config load + validation
- local artifact/workdir creation and locking
- manifest create/load/save and stage status tracking
- stage framework with real `prepare` and `transcribe` stages; placeholder downstream stages
2026-05-02 11:44:15 -05:00
- resumable run control (`run`, `resume`, `run-stage`, `plan` with run/skip decisions)
- real WhisperX HTTP adapter plus fake/no-op adapters for test/scaffold usage
2026-05-02 11:44:15 -05:00
Not implemented yet:
- real Seriatim execution
- real Audita execution
- real analyzer integration
- real remote archive/storage backend
- real notification backend
## Run Tests
```bash
2026-05-02 11:44:15 -05:00
go test ./...
```
2026-05-02 11:44:15 -05:00
## Run Plan
```bash
go run ./cmd/narratio plan --config examples/pipeline.minimal.yml --session examples/session.minimal.yml
```
## Run Pipeline (Current State)
The current `run` command executes `prepare` + real `transcribe` + placeholder downstream stages and records progress in `manifest.json`.
Default CLI wiring builds and uses the real WhisperX HTTP adapter from `pipeline.whisperx` when `whisperx.transcribe_url` is configured.
2026-05-02 11:44:15 -05:00
```bash
go run ./cmd/narratio run --config examples/pipeline.minimal.yml --session examples/session.minimal.yml
```