Squashed 'roles/pipeline/' changes from c56a942..ea8b09e

ea8b09e Verify suite configuration overrides and document migration
8ea8621 Integrate the reviewed application upgrades into the suite

git-subtree-dir: roles/pipeline
git-subtree-split: ea8b09e190419586ede6df3815d1ea999a0f4391
This commit is contained in:
2026-09-29 14:47:03 +00:00
parent e1238eb4fa
commit 3599f39f49
9 changed files with 279 additions and 138 deletions

View File

@@ -61,11 +61,11 @@ The compatible application versions are selected through these variables:
| Variable | Default |
| --- | --- |
| `dnd_pipeline_audita_version` | `v0.9.1` |
| `dnd_pipeline_narratio_version` | `v2.2.0` |
| `dnd_pipeline_notarius_version` | `v0.7.1` |
| `dnd_pipeline_audita_version` | `v2.0.1` |
| `dnd_pipeline_narratio_version` | `v3.0.0` |
| `dnd_pipeline_notarius_version` | `v0.8.1` |
| `dnd_pipeline_seriatim_version` | `v1.5.0` |
| `dnd_pipeline_scriptorium_version` | `v0.13.0` |
| `dnd_pipeline_scriptorium_version` | `v0.15.0` |
| `dnd_pipeline_manage_build_dependencies` | `true` |
| `dnd_pipeline_go_snap_channel` | `1.26/stable` |
| `dnd_pipeline_go_binary` | `/snap/bin/go` |
@@ -119,20 +119,53 @@ chosen policy value when their deployment requires it.
| --- | --- |
| `dnd_pipeline_audita_pipeline_modules` | `glossary`, `homophones`, `glossary`, `spoken_word`, `grammar` |
| `dnd_pipeline_audita_output_schema` | `audita-v1` |
| `dnd_pipeline_audita_llm_proposal_*` | `https://inference.ai.rakestrawhome.com/v1`, `google/gemma-4-31b-it`, `AUDITA_LLM_API_KEY`, `900s`, `3` |
| `dnd_pipeline_audita_llm_validation_*` | `https://inference.ai.rakestrawhome.com/v1`, `google/gemma-4-31b-it`, `AUDITA_LLM_API_KEY`, `900s`, `3` |
| `dnd_pipeline_audita_concurrency_*` | total, proposal, and validation concurrency of `4` |
| `dnd_pipeline_audita_backends` | Native `dnd` backend at `https://inference.ai.rakestrawhome.com/v1`, credential `AUDITA_LLM_API_KEY`, shared concurrency `4` |
| `dnd_pipeline_audita_profiles` | Complete native `dnd-proposal` and `dnd-validation` mappings using `google/gemma-4-31b-it` and 900-second attempt timeouts |
| `dnd_pipeline_audita_llm_proposal_profile` | `dnd-proposal` |
| `dnd_pipeline_audita_llm_validation_profile` | `dnd-validation` |
| `dnd_pipeline_audita_llm_transient_retries`, `dnd_pipeline_audita_llm_repair_attempts`, `dnd_pipeline_audita_llm_operation_timeout` | `null`; omit overrides and use native defaults |
| `dnd_pipeline_audita_chunking_*` | `8` target sections, `6144` maximum and `2048` minimum section tokens |
| `dnd_pipeline_audita_normalization_*` | `3s` maximum and ellipsis gaps, `240s` maximum duration, `2048` maximum tokens |
| `dnd_pipeline_audita_normalization_*` | `3.0` maximum and ellipsis gaps, `240.0` maximum duration, `2048` maximum tokens |
| `dnd_pipeline_audita_thresholds_*` | `0.8` for glossary, homophones, spoken word, and grammar |
| `dnd_pipeline_audita_context_description` | D&D-game transcript context, including possible pre- and post-session banter |
| `dnd_pipeline_audita_diagnostics_*` | `/tmp/audita`, retained automatically |
| `dnd_pipeline_audita_diagnostics_work_dir` | `/tmp/audita` |
Audita's proposal and validation settings independently remain overrideable,
but both default to the one typed `AUDITA_LLM_API_KEY` reference Narratio can
forward. Audita owns its endpoint, model, tuning, and diagnostics configuration;
Narratio receives its managed Audita configuration path and supplies the
run-specific output path.
Audita owns its backend and LLM policy. The suite writes each complete profile
mapping to `/usr/local/etc/audita/profiles/<key>.yml`; keys must be filename-safe
IDs matching each mapping's `id`. Inventory may replace the mappings and selected
IDs. Narratio forwards the configured credential names, while Audita's native
configuration resolves them. The role does not remove old profile files.
For inventories upgrading from the prior suite, replace the separate Audita
proposal/validation endpoint, model, key, timeout, and concurrency variables
with `dnd_pipeline_audita_backends` and `dnd_pipeline_audita_profiles`, then
select profile IDs with the two `dnd_pipeline_audita_llm_*_profile` variables.
Replace `dnd_pipeline_narratio_notarius_llm_api_key` with
`dnd_pipeline_narratio_notarius_credentials`, and use
`dnd_pipeline_narratio_audita_credentials` for Audita's backend credential
names. The old diagnostics retention variable is no longer forwarded.
The old per-purpose Audita endpoint and API-key names now belong to the
backend map; both default profiles share the `dnd` backend and its one
concurrency limit. Old proposal and validation models and per-attempt timeouts
belong in complete profile mappings. The default 900-second value is retained
per attempt; `dnd_pipeline_audita_llm_operation_timeout` is an independent
whole-operation deadline and defaults to `null`, leaving Audita's native
policy in charge. The former `*_max_retries` variables do not have a direct
one-to-one replacement: use the optional Audita transient retry and repair
attempt settings according to the desired native behavior. Optional retry
pass-throughs for Notarius PromptKit and Scriptorium likewise default to
`null`; an explicit `0` is forwarded, not treated as omission.
Inventory must supply each named backend credential through
`dnd_pipeline_secrets` and include its name in
`dnd_pipeline_narratio_audita_credentials`. Narratio forwards only names in
that list and does not discover them from Audita's configuration. The
Notarius list is independent. For profile overrides, use filename-safe map
keys equal to each profile's native `id`; the suite writes each map value
unchanged and does not merge individual fields. See [Audita's v2 manifest
migration](https://gitea.maximumdirect.net/eric/audita/src/tag/v2.0.0/docs/migrations/v2.md)
for application-owned manifests; this role does not convert them.
| Variable | Default |
| --- | --- |
@@ -148,6 +181,10 @@ run-specific output path.
| `dnd_pipeline_narratio_render_format` | `markdown` |
| `dnd_pipeline_narratio_testing_scriptorium_profile` | `gemini-flash-latest` |
| `dnd_pipeline_notarius_testing_llm_profile` | `gpt-luna-latest` |
| `dnd_pipeline_notarius_promptkit_transient_retries` | `null`; native default |
| `dnd_pipeline_scriptorium_transient_retries` | `null`; native default |
| `dnd_pipeline_narratio_audita_credentials` | `[AUDITA_LLM_API_KEY]` |
| `dnd_pipeline_narratio_notarius_credentials` | `[OPENROUTER_API_KEY]` |
`dnd_pipeline_audita_output_schema` is also the Narratio Audita-adapter schema;
it is the shared cross-application boundary. Other Narratio-local controls,
@@ -221,7 +258,7 @@ suite-owned base fragments in this fixed order:
├── artifacts/deranged-rumors.yml
├── artifacts/scene-map.yml
├── artifact-families/character-meta-analysis.yml
└── profiles/testing.yml
└── overlays/testing.yml
```
Notarius follows the corresponding base-and-overlay layout:
@@ -230,10 +267,10 @@ Notarius follows the corresponding base-and-overlay layout:
/usr/local/etc/notarius/
├── config.yml
├── pipelines/dnd-session.yml
└── profiles/testing.yml
└── overlays/testing.yml
```
The `testing` profile is an overlay, not a second configuration tree. It sets
The `testing` overlay is not a second configuration tree. It sets
the Scriptorium `profile_id` for the four artifact sources and the one family,
and explicitly selects Notarius's separately managed `testing` overlay. The
Scriptorium default, `gemini-flash-latest`, is an inexpensive development
@@ -245,12 +282,19 @@ dnd_pipeline_narratio_testing_scriptorium_profile: endpoint-profile
dnd_pipeline_notarius_testing_llm_profile: alternate-economy-profile
```
Narratio selects it with `--overlay testing`, and direct Notarius commands
use `--config-overlay testing`; the former `--profile` and
`--config-profile` selectors are retired. Previously deployed
`profiles/testing.yml` files are ignored, not pruned. Renaming the selected
overlay normally changes configuration identity, so cached work tied to the
old named selection may not be reused.
### Notarius extraction policy
The Notarius root configuration imports the fixed
`pipelines/dnd-session.yml` fragment. The suite owns that fragment at
`/usr/local/etc/notarius/pipelines/dnd-session.yml`; callers do not edit it.
The separate `/usr/local/etc/notarius/profiles/testing.yml` overlay changes only
The separate `/usr/local/etc/notarius/overlays/testing.yml` overlay changes only
the selected suite pipeline's LLM profile.
| Variable | Default policy |
@@ -261,7 +305,7 @@ the selected suite pipeline's LLM profile.
| `dnd_pipeline_notarius_cache_checkpoints_enabled` | `true` |
| `dnd_pipeline_notarius_testing_llm_profile` | `gpt-luna-latest` |
| `dnd_pipeline_narratio_notarius_pipeline_id` | `dnd-session` |
| `dnd_pipeline_narratio_notarius_llm_api_key` | `OPENROUTER_API_KEY` |
| `dnd_pipeline_narratio_notarius_credentials` | `[OPENROUTER_API_KEY]` |
| `dnd_pipeline_narratio_notarius_resume` | `true` |
| `dnd_pipeline_narratio_notarius_references` | `party`, `players`, and `glossary` prepared sources |
| `dnd_pipeline_narratio_notarius_outputs` | Complete native map of ten accepted D&D lanes |
@@ -290,7 +334,7 @@ Notarius profile and ordinary extraction requests checkpoint reuse with
`resume: true`. Chunk plans use Notarius's root-owned `auto` policy; the
pipeline deliberately leaves Narratio's optional `chunk_cache` override unset.
The `chunk-plans` and `checkpoints` paths derive from the cache root and are
created by Notarius during use. Notarius v0.7.1 selects PromptKit v0.10.0 and
created by Notarius during use. Notarius v0.8.1 selects PromptKit v0.10.0 and
OpenRouter catalog v2.20260922.1, which supplies both suite-selected IDs.
Existing checkpoints with the previous profile-source identity are not reused;
source-keyed chunk plans and output artifacts remain compatible. No cache
@@ -308,7 +352,7 @@ the party-driven character family:
sudo -u narratio narratio config validate \
--config /usr/local/etc/narratio/pipeline.yml --campaign centaurs
sudo -u narratio narratio config validate \
--config /usr/local/etc/narratio/pipeline.yml --campaign centaurs --profile testing
--config /usr/local/etc/narratio/pipeline.yml --campaign centaurs --overlay testing
sudo -u narratio narratio config artifacts \
--config /usr/local/etc/narratio/pipeline.yml --campaign centaurs
sudo -u narratio narratio config diff default testing \