workspace: root: ./tmp/narratio-workspace storage: backend: local whisperx: transcribe_url: "https://transcription.example.com/transcribe" language: "en" timeout: "30m" retries: 3 retry_delay: "2s" concurrency: 2 seriatim: binary: "seriatim" timeout: "10m" output_schema: "seriatim-intermediate" coalesce_gap: 3.0 report: true env: overlap_word_run_gap: 1.0 overlap_word_run_reorder_window: 1.0 backchannel_max_duration: 2.0 filler_max_duration: 1.25 audita: binary: "audita" timeout: "3h" llm_api_key_env: "AUDITA_LLM_API_KEY" modules: - glossary - homophones - glossary - spoken_word - grammar - homophones - glossary base_url: "https://openrouter.ai/api/v1" model: "openrouter/google/gemma-4-31b-it" llm_concurrency: 1 validation_model: "" validation_llm_concurrency: 1 report: true normalize: # Session-workdir-relative when not absolute. output_path: "transcripts/normalized.json" output_schema: "seriatim-intermediate" report: true trim: enabled: true # Session-workdir-relative when not absolute. output_path: "transcripts/trimmed.json" bounds: prompt_id: "dnd_session.bounds" # Empty means use prompt default profile. profile_id: "" transcript_input_name: "transcript" output_path: "artifacts/session_bounds.json" timeout: "10m" render_debug: false render_output_path: "artifacts/session_bounds.render.json" seriatim: report: false scriptorium: binary: "scriptorium" config_path: "/etc/scriptorium/config.yml" timeout: "10m" render_debug: false artifacts: session_recap: enabled: true prompt_id: "dnd.session_recap" profile_id: "local-quality" output_path: "artifacts/session_recap.md" timeout: "10m" # Optional per-artifact override of global scriptorium.render_debug. # render_debug: true inputs: transcript: # Available transcript sources: # - trimmed_transcript (recommended for session_recap) # - normalized_transcript (recommended for future full-session analysis) # - processed_transcript (raw Audita-polished output) source: "trimmed_transcript" required: true previous_recap: source: "previous_session_artifact" artifact: "session_recap" # Optional: set when previous recap is available. path: "" required: false vars: session_id: true session_date: true campaign_name: true previous_session_id: true output_kind: "session_recap" analyzer: timeout: 20m artifacts: output_dir: artifacts notification: timeout: 10s