Prepare the D&D processing configuration sprint

This commit is contained in:
2026-09-11 02:03:17 +00:00
parent daab85ae7e
commit b83b778751
9 changed files with 1377 additions and 12 deletions

View File

@@ -0,0 +1,52 @@
# Ansible managed
version: 1
pipeline:
modules: ['glossary', 'homophones', 'glossary', 'spoken_word', 'grammar']
output:
schema: audita-v1
llm:
proposal:
base_url: https://inference.ai.rakestrawhome.com/v1
model: google/gemma-4-31b-it
api_key_env: AUDITA_LLM_API_KEY
timeout: 900s
max_retries: 3
validation:
base_url: https://inference.ai.rakestrawhome.com/v1
model: google/gemma-4-31b-it
api_key_env: AUDITA_VALIDATION_LLM_API_KEY
timeout: 900s
max_retries: 3
concurrency:
total_llm: 4
proposal_llm: 4
validation_llm: 4
chunking:
target_sections: 8
max_section_tokens: 6144
min_section_tokens: 2048
normalization:
max_segment_gap: 3s
ellipsis_gap: 3s
max_segment_duration: 240s
max_segment_tokens: 2048
thresholds:
glossary: 0.8
homophones: 0.8
spoken_word: 0.8
grammar: 0.8
context:
description: "The following transcript was recorded during a Dungeons & Dragons game session. It may contain some unrelaed pre-session or post-session banter, in addition to actual D&D gameplay."
diagnostics:
work_dir: /tmp/audita
retention: auto

View File

@@ -0,0 +1,160 @@
workspace:
root: /var/lib/narratio
cleanup_after_publish: true
secrets:
env_dir: /usr/local/etc/narratio/secrets
campaigns:
root: /usr/local/etc/narratio/campaigns
default_campaign_id: dilfs
storage:
backend: s3
s3:
endpoint: "https://s3.us-east-005.backblazeb2.com"
bucket: "rakestraw-assets"
root_prefix: "dnd"
region: "us-east-1"
force_path_style: True
access_key_id_env: OBJECT_STORAGE_KEY_ID
secret_access_key_env: OBJECT_STORAGE_KEY
whisperx:
transcribe_url: https://transcription.ai.rakestrawhome.com/transcribe
publish:
enabled: true
upload_run: true
outputs:
- source: narratio.transcript.final
required: true
- source: narratio.transcript.final_trimmed
required: true
- source: narratio.transcript.final_markdown
required: true
- source: narratio.transcript.final_trimmed_markdown
required: true
- source: narratio.artifact.session_recap
dest: artifacts/session_recap.md
required: true
- source: narratio.artifact.hostile_rumors
dest: artifacts/hostile_rumors.md
required: true
- source: narratio.artifact.deranged_rumors
dest: artifacts/deranged_rumors.md
required: false
scriptorium:
binary: scriptorium
config_path: /usr/local/etc/scriptorium/config.yml
timeout: 10m
render_debug: false
artifacts:
session_recap:
enabled: true
prompt_id: dnd.session_recap
profile_id: claude-fable-latest
output_path: artifacts/session_recap.md
timeout: 10m
inputs:
transcript:
source: narratio.transcript.final_trimmed
required: true
players:
source: narratio.input.players
required: true
party:
source: narratio.input.party
required: true
# recap:
# source: narratio.previous_session.artifact.session_recap
# required: false
scene_map:
enabled: false
prompt_id: dnd.scene_map
profile_id: claude-haiku-latest
output_path: artifacts/scene_map.json
timeout: 10m
inputs:
transcript:
source: narratio.transcript.final_trimmed
required: true
players:
source: narratio.input.players
required: true
party:
source: narratio.input.party
required: true
character_meta_analysis_alan:
enabled: false
prompt_id: dnd.character_meta_analysis
profile_id: claude-fable-latest
output_path: artifacts/character_meta_analysis_alan.md
timeout: 10m
inputs:
transcript:
source: narratio.transcript.final_trimmed
required: true
players:
source: narratio.input.players
required: true
party:
source: narratio.input.party
required: true
recap:
source: narratio.previous_session.artifact.session_recap
required: false
vars:
character_name: "Alan"
character_class: "Druid"
character_meta_analysis_hrank:
enabled: false
prompt_id: dnd.character_meta_analysis
profile_id: claude-fable-latest
output_path: artifacts/character_meta_analysis_hrank.md
timeout: 10m
inputs:
transcript:
source: narratio.transcript.final_trimmed
required: true
players:
source: narratio.input.players
required: true
party:
source: narratio.input.party
required: true
recap:
source: narratio.previous_session.artifact.session_recap
required: false
vars:
character_name: "Hrank"
character_class: "Cleric"
hostile_rumors:
enabled: true
prompt_id: dnd.hostile_rumors
output_path: artifacts/hostile_rumors.md
timeout: 10m
depends_on:
- session_recap
inputs:
recap:
source: narratio.artifact.session_recap
required: true
deranged_rumors:
enabled: true
prompt_id: dnd.deranged_rumors
output_path: artifacts/deranged_rumors.md
timeout: 10m
depends_on:
- session_recap
inputs:
recap:
source: narratio.artifact.session_recap
required: true

View File

@@ -0,0 +1,154 @@
version: 4
output:
directory: /var/lib/notarius/output
debug:
directory: /var/lib/notarius/debug
cache:
chunk_plans:
mode: auto
directory: /var/lib/notarius/cache/chunk_plans
checkpoints:
enabled: true
directory: /var/lib/notarius/cache/checkpoints
pipelines:
dnd-session:
llm_profile: dnd-extraction
# llm_profile: rakestrawhome-gemma-4-31b
input: seriatim
# Stable campaign context is shared by every module that accepts these slots.
references:
party: /usr/local/etc/notarius/campaigns/centaurs/party.yml
glossary: /usr/local/etc/notarius/campaigns/centaurs/glossary.yml
chunk:
module: dnd/scenes
retries: 2
output:
module: json
options:
include_chunk_map: true
evidence_context:
enabled: true
window_units: 3
lanes:
- item-occurrences
- item-registry
- location-registry
- location-occurrences
- npc-registry
- spells
- combat-turns
- npc-occurrences
- enemy-events
steps:
# Establish session-wide reference artifacts before their consumers.
- id: describe-session
artifacts:
item-registry:
extract:
module: dnd/item-registry
retries: 2
merge: appendorder
normalize: dnd/item-registry
npc-registry:
extract:
module: dnd/npc-registry
retries: 2
merge: appendorder
normalize:
module: dnd/npc-registry
retries: 2
location-registry:
extract:
module: dnd/location-registry
retries: 2
merge: appendorder
normalize:
module: dnd/location-registry
retries: 2
scene-descriptions:
extract:
module: dnd/scene-descriptions
retries: 2
merge: appendorder
normalize: dnd/scene-descriptions
- id: extract-events
# Accepted registry artifacts and scene-description eligibility artifacts
# are supplied in memory to their compatible consumers in this step.
references:
location_registry:
artifact:
step: describe-session
lane: location-registry
npc_registry:
artifact:
step: describe-session
lane: npc-registry
scene_descriptions:
artifact:
step: describe-session
lane: scene-descriptions
item_registry:
artifact:
step: describe-session
lane: item-registry
artifacts:
item-occurrences:
extract:
module: dnd/item-occurrences
retries: 2
merge: appendorder
normalize: dnd/item-occurrences
spells:
extract:
module: dnd/spells
retries: 2
merge: appendorder
normalize:
module: dnd/spells
combat-turns:
extract:
module: dnd/combat-turns
retries: 2
merge: appendorder
normalize: dnd/combat-turns
npc-occurrences:
extract:
module: dnd/npc-occurrences
retries: 2
merge: appendorder
normalize: dnd/npc-occurrences
location-occurrences:
extract:
module: dnd/location-occurrences
retries: 2
merge: appendorder
normalize: dnd/location-occurrences
- id: track-enemies
references:
npc_registry:
artifact:
step: describe-session
lane: npc-registry
scene_descriptions:
artifact:
step: describe-session
lane: scene-descriptions
combat_turns:
artifact:
step: extract-events
lane: combat-turns
npc_occurrences:
artifact:
step: extract-events
lane: npc-occurrences
artifacts:
enemy-events:
extract:
module: dnd/enemy-events
retries: 2
merge: appendorder
normalize: dnd/enemy-events

View File

@@ -0,0 +1,5 @@
# Ansible managed
prompt_dir: /usr/local/etc/scriptorium/library/prompts
profile_dir: /usr/local/etc/scriptorium/library/profiles
schema_dir: /usr/local/etc/scriptorium/library/schemas