Add Scriptorium configuration contract

This commit is contained in:
2026-05-06 21:12:22 +00:00
parent ce01ca7619
commit 84b0f6fe0e
6 changed files with 344 additions and 1 deletions

View File

@@ -8,7 +8,7 @@ This repository currently contains a **working scaffold** with strict config loa
`narratio` expects two YAML files:
- `pipeline.yml`: pipeline/workspace settings (`workspace`, `storage`, `whisperx`, `seriatim`, `audita`, `analyzer`, `notification`)
- `pipeline.yml`: pipeline/workspace settings (`workspace`, `storage`, `whisperx`, `seriatim`, `audita`, optional `scriptorium`, `analyzer`, `notification`)
- `session.yml`: per-session settings (`session_id`, `inputs`, optional metadata)
WhisperX config contract in `pipeline.yml`:
@@ -43,6 +43,24 @@ Audita runtime note:
- Narratio currently passes primary LLM concurrency via `AUDITA_LLM_CONCURRENCY` subprocess environment override, not a `--llm-concurrency` flag.
Scriptorium config contract in `pipeline.yml` (optional until `analyze` is implemented):
- optional section: `scriptorium` (when omitted, current pipeline behavior is unchanged)
- required when `scriptorium` is present: `scriptorium.binary` (name on PATH or full path)
- optional: `scriptorium.config_path` (if set, it must be non-empty; file existence is validated at execution time, not basic config validation time)
- defaulted when omitted inside present `scriptorium` section: `scriptorium.timeout` (`10m`)
- optional: `scriptorium.render_debug` (`false` by default through YAML zero-value behavior)
- artifact definitions live under `scriptorium.artifacts.<artifact_name>` and support multiple configured artifacts
- enabled artifacts require `prompt_id` and `output_path`
- artifact `timeout` values must be valid Go durations when provided
- input definitions live under `scriptorium.artifacts.<artifact_name>.inputs.<input_name>` and require non-empty `source`
- `vars` values currently accept booleans and strings only
- Narratio does not store secrets in Scriptorium config; keep credentials in environment management, not YAML
Scriptorium initial artifact note:
- this pass does not auto-create `session_recap`; configure `scriptorium.artifacts.session_recap` explicitly in `pipeline.yml`
`speakers.yml` note:
- use Seriatims documented `match:` format (not the legacy direct mapping style used by older scripts/scaffolds)