Adopt the Narratio v3 configuration interface

This commit is contained in:
2026-09-28 14:50:05 +00:00
parent 330afe7856
commit a28f22c7dd
7 changed files with 57 additions and 82 deletions

View File

@@ -8,7 +8,7 @@ application state.
## Variables
```yaml
narratio_version: v2.2.0
narratio_version: v3.0.0
narratio_repository_url: https://gitea.maximumdirect.net/eric/narratio.git
narratio_source_dir: /usr/local/src/narratio
narratio_binary_path: /usr/local/bin/narratio
@@ -64,19 +64,14 @@ narratio_seriatim_env_backchannel_max_duration: null
narratio_seriatim_env_filler_max_duration: null
narratio_audita_binary: null
narratio_audita_timeout: null
narratio_audita_llm_api_key: null
narratio_audita_credentials: null
narratio_audita_modules: null
narratio_audita_base_url: null
narratio_audita_model: null
narratio_audita_total_llm_concurrency: null
narratio_audita_proposal_llm_concurrency: null
narratio_audita_validation_model: null
narratio_audita_validation_llm_concurrency: null
narratio_audita_overlay: null
narratio_audita_proposal_profile: null
narratio_audita_validation_profile: null
narratio_audita_transcript_description: null
narratio_audita_config_path: null
narratio_audita_output_schema: null
narratio_audita_work_dir_retention: null
narratio_audita_report: null
narratio_normalize_output_path: null
narratio_normalize_output_schema: null
narratio_normalize_report: null
@@ -105,11 +100,11 @@ narratio_scriptorium_artifact_families: null
narratio_notarius_enabled: null
narratio_notarius_binary: null
narratio_notarius_config_path: null
narratio_notarius_config_profile: null
narratio_notarius_config_overlay: null
narratio_notarius_pipeline_id: null
narratio_notarius_timeout: null
narratio_notarius_working_directory: null
narratio_notarius_llm_api_key: null
narratio_notarius_credentials: null
narratio_notarius_resume: null
narratio_notarius_chunk_cache: null
narratio_notarius_references: null
@@ -136,18 +131,24 @@ falsey values are preserved. `narratio_publish_outputs`,
`narratio_notarius_references`, `narratio_notarius_outputs`,
`narratio_scriptorium_artifacts`, and `narratio_scriptorium_artifact_families`
are complete native caller values, so callers may compose them before assigning
them and the role does not merge or rewrite them. Credential fields name
environment variables only; credential values remain outside this role and are
the caller's responsibility. `narratio_notarius_llm_api_key` names the
environment variable that Narratio forwards to Notarius. The optional
`narratio_notarius_config_profile` selects a Notarius ConfigKit overlay without
coupling it to Narratio's own profile name. The optional `narratio_notarius_resume`
them and the role does not merge or rewrite them. Credential lists contain
environment-variable names only; credential values remain outside this role
and are the caller's responsibility. The optional
`narratio_notarius_config_overlay` selects a Notarius ConfigKit overlay without
coupling it to Narratio's own overlay name. The optional `narratio_notarius_resume`
and `narratio_notarius_chunk_cache` settings expose Narratio's native extraction
and chunk-plan choices; this generic role assigns no D&D-specific credential or
cache policy.
ConfigKit imports and profile overlays are externally managed, and this role
ConfigKit imports and selected overlays are externally managed, and this role
does not install the downstream applications, campaign content, or suite policy.
Narratio v3 removes the old Audita tuning, report, retention, and singular-key
role variables. It also replaces `narratio_notarius_llm_api_key` with
`narratio_notarius_credentials` and renames
`narratio_notarius_config_profile` to `narratio_notarius_config_overlay`.
Existing deployments that cannot migrate these inputs should retain their
previous Narratio role pin.
## Example
```yaml

View File

@@ -1,5 +1,5 @@
---
narratio_version: v2.2.0
narratio_version: v3.0.0
narratio_repository_url: https://gitea.maximumdirect.net/eric/narratio.git
narratio_source_dir: /usr/local/src/narratio
narratio_binary_path: /usr/local/bin/narratio
@@ -49,19 +49,14 @@ narratio_seriatim_env_backchannel_max_duration: null
narratio_seriatim_env_filler_max_duration: null
narratio_audita_binary: null
narratio_audita_timeout: null
narratio_audita_llm_api_key: null
narratio_audita_credentials: null
narratio_audita_modules: null
narratio_audita_base_url: null
narratio_audita_model: null
narratio_audita_total_llm_concurrency: null
narratio_audita_proposal_llm_concurrency: null
narratio_audita_validation_model: null
narratio_audita_validation_llm_concurrency: null
narratio_audita_overlay: null
narratio_audita_proposal_profile: null
narratio_audita_validation_profile: null
narratio_audita_transcript_description: null
narratio_audita_config_path: null
narratio_audita_output_schema: null
narratio_audita_work_dir_retention: null
narratio_audita_report: null
narratio_normalize_output_path: null
narratio_normalize_output_schema: null
narratio_normalize_report: null
@@ -90,11 +85,11 @@ narratio_scriptorium_artifact_families: null
narratio_notarius_enabled: null
narratio_notarius_binary: null
narratio_notarius_config_path: null
narratio_notarius_config_profile: null
narratio_notarius_config_overlay: null
narratio_notarius_pipeline_id: null
narratio_notarius_timeout: null
narratio_notarius_working_directory: null
narratio_notarius_llm_api_key: null
narratio_notarius_credentials: null
narratio_notarius_resume: null
narratio_notarius_chunk_cache: null
narratio_notarius_references: null

View File

@@ -54,19 +54,14 @@ argument_specs:
narratio_seriatim_env_filler_max_duration: {type: float, required: false}
narratio_audita_binary: {type: str, required: false}
narratio_audita_timeout: {type: str, required: false}
narratio_audita_llm_api_key: {type: str, required: false}
narratio_audita_credentials: {type: list, elements: str, required: false}
narratio_audita_modules: {type: list, required: false}
narratio_audita_base_url: {type: str, required: false}
narratio_audita_model: {type: str, required: false}
narratio_audita_total_llm_concurrency: {type: int, required: false}
narratio_audita_proposal_llm_concurrency: {type: int, required: false}
narratio_audita_validation_model: {type: str, required: false}
narratio_audita_validation_llm_concurrency: {type: int, required: false}
narratio_audita_overlay: {type: str, required: false}
narratio_audita_proposal_profile: {type: str, required: false}
narratio_audita_validation_profile: {type: str, required: false}
narratio_audita_transcript_description: {type: str, required: false}
narratio_audita_config_path: {type: str, required: false}
narratio_audita_output_schema: {type: str, required: false}
narratio_audita_work_dir_retention: {type: str, required: false}
narratio_audita_report: {type: bool, required: false}
narratio_normalize_output_path: {type: str, required: false}
narratio_normalize_output_schema: {type: str, required: false}
narratio_normalize_report: {type: bool, required: false}
@@ -95,11 +90,11 @@ argument_specs:
narratio_notarius_enabled: {type: bool, required: false}
narratio_notarius_binary: {type: str, required: false}
narratio_notarius_config_path: {type: str, required: false}
narratio_notarius_config_profile: {type: str, required: false}
narratio_notarius_config_overlay: {type: str, required: false}
narratio_notarius_pipeline_id: {type: str, required: false}
narratio_notarius_timeout: {type: str, required: false}
narratio_notarius_working_directory: {type: str, required: false}
narratio_notarius_llm_api_key: {type: str, required: false}
narratio_notarius_credentials: {type: list, elements: str, required: false}
narratio_notarius_resume: {type: bool, required: false}
narratio_notarius_chunk_cache: {type: str, required: false}
narratio_notarius_references: {type: dict, required: false}

View File

@@ -114,7 +114,7 @@ seriatim:
{% endif %}
{% endif %}
{% endif %}
{% if narratio_audita_binary is not none or narratio_audita_timeout is not none or narratio_audita_llm_api_key is not none or narratio_audita_modules is not none or narratio_audita_base_url is not none or narratio_audita_model is not none or narratio_audita_total_llm_concurrency is not none or narratio_audita_proposal_llm_concurrency is not none or narratio_audita_validation_model is not none or narratio_audita_validation_llm_concurrency is not none or narratio_audita_transcript_description is not none or narratio_audita_config_path is not none or narratio_audita_output_schema is not none or narratio_audita_work_dir_retention is not none or narratio_audita_report is not none %}
{% if narratio_audita_binary is not none or narratio_audita_timeout is not none or narratio_audita_credentials is not none or narratio_audita_modules is not none or narratio_audita_overlay is not none or narratio_audita_proposal_profile is not none or narratio_audita_validation_profile is not none or narratio_audita_transcript_description is not none or narratio_audita_config_path is not none or narratio_audita_output_schema is not none %}
audita:
{% if narratio_audita_binary is not none %}
binary: {{ narratio_audita_binary | to_json }}
@@ -122,29 +122,20 @@ audita:
{% if narratio_audita_timeout is not none %}
timeout: {{ narratio_audita_timeout | to_json }}
{% endif %}
{% if narratio_audita_llm_api_key is not none %}
llm_api_key: {{ narratio_audita_llm_api_key | to_json }}
{% if narratio_audita_credentials is not none %}
credentials: {{ narratio_audita_credentials | to_json }}
{% endif %}
{% if narratio_audita_modules is not none %}
modules: {{ narratio_audita_modules | to_json }}
{% endif %}
{% if narratio_audita_base_url is not none %}
base_url: {{ narratio_audita_base_url | to_json }}
{% if narratio_audita_overlay is not none %}
overlay: {{ narratio_audita_overlay | to_json }}
{% endif %}
{% if narratio_audita_model is not none %}
model: {{ narratio_audita_model | to_json }}
{% if narratio_audita_proposal_profile is not none %}
proposal_profile: {{ narratio_audita_proposal_profile | to_json }}
{% endif %}
{% if narratio_audita_total_llm_concurrency is not none %}
total_llm_concurrency: {{ narratio_audita_total_llm_concurrency | to_json }}
{% endif %}
{% if narratio_audita_proposal_llm_concurrency is not none %}
proposal_llm_concurrency: {{ narratio_audita_proposal_llm_concurrency | to_json }}
{% endif %}
{% if narratio_audita_validation_model is not none %}
validation_model: {{ narratio_audita_validation_model | to_json }}
{% endif %}
{% if narratio_audita_validation_llm_concurrency is not none %}
validation_llm_concurrency: {{ narratio_audita_validation_llm_concurrency | to_json }}
{% if narratio_audita_validation_profile is not none %}
validation_profile: {{ narratio_audita_validation_profile | to_json }}
{% endif %}
{% if narratio_audita_transcript_description is not none %}
transcript_description: {{ narratio_audita_transcript_description | to_json }}
@@ -155,12 +146,6 @@ audita:
{% if narratio_audita_output_schema is not none %}
output_schema: {{ narratio_audita_output_schema | to_json }}
{% endif %}
{% if narratio_audita_work_dir_retention is not none %}
work_dir_retention: {{ narratio_audita_work_dir_retention | to_json }}
{% endif %}
{% if narratio_audita_report is not none %}
report: {{ narratio_audita_report | to_json }}
{% endif %}
{% endif %}
{% if narratio_normalize_output_path is not none or narratio_normalize_output_schema is not none or narratio_normalize_report is not none %}
normalize:
@@ -253,7 +238,7 @@ scriptorium:
artifact_families: {{ narratio_scriptorium_artifact_families | to_json }}
{% endif %}
{% endif %}
{% if narratio_notarius_enabled is not none or narratio_notarius_binary is not none or narratio_notarius_config_path is not none or narratio_notarius_config_profile is not none or narratio_notarius_pipeline_id is not none or narratio_notarius_timeout is not none or narratio_notarius_working_directory is not none or narratio_notarius_llm_api_key is not none or narratio_notarius_resume is not none or narratio_notarius_chunk_cache is not none or narratio_notarius_references is not none or narratio_notarius_outputs is not none %}
{% if narratio_notarius_enabled is not none or narratio_notarius_binary is not none or narratio_notarius_config_path is not none or narratio_notarius_config_overlay is not none or narratio_notarius_pipeline_id is not none or narratio_notarius_timeout is not none or narratio_notarius_working_directory is not none or narratio_notarius_credentials is not none or narratio_notarius_resume is not none or narratio_notarius_chunk_cache is not none or narratio_notarius_references is not none or narratio_notarius_outputs is not none %}
notarius:
{% if narratio_notarius_enabled is not none %}
enabled: {{ narratio_notarius_enabled | to_json }}
@@ -264,8 +249,8 @@ notarius:
{% if narratio_notarius_config_path is not none %}
config_path: {{ narratio_notarius_config_path | to_json }}
{% endif %}
{% if narratio_notarius_config_profile is not none %}
config_profile: {{ narratio_notarius_config_profile | to_json }}
{% if narratio_notarius_config_overlay is not none %}
config_overlay: {{ narratio_notarius_config_overlay | to_json }}
{% endif %}
{% if narratio_notarius_pipeline_id is not none %}
pipeline_id: {{ narratio_notarius_pipeline_id | to_json }}
@@ -276,8 +261,8 @@ notarius:
{% if narratio_notarius_working_directory is not none %}
working_directory: {{ narratio_notarius_working_directory | to_json }}
{% endif %}
{% if narratio_notarius_llm_api_key is not none %}
llm_api_key: {{ narratio_notarius_llm_api_key | to_json }}
{% if narratio_notarius_credentials is not none %}
credentials: {{ narratio_notarius_credentials | to_json }}
{% endif %}
{% if narratio_notarius_resume is not none %}
resume: {{ narratio_notarius_resume | to_json }}

View File

@@ -94,11 +94,11 @@ representative_repeat_log="$test_tmp/representative-repeat.log"
"$ansible_playbook" -i "$inventory" "$representative" | tee "$representative_repeat_log"
require_clean_recap "$representative_repeat_log"
empty_profile_log="$test_tmp/empty-profile.log"
empty_overlay_log="$test_tmp/empty-overlay.log"
"$ansible_playbook" -i "$inventory" \
-e '{"narratio_notarius_config_profile": ""}' \
"$representative" | tee "$empty_profile_log"
-e '{"narratio_notarius_config_overlay": ""}' \
"$representative" | tee "$empty_overlay_log"
NARRATIO_TEST_NOTARIUS_API_KEY="$synthetic_notarius_api_key" \
"$ansible_playbook" -i "$inventory" \
-e '{"narratio_test_notarius_config_profile": ""}' \
-e '{"narratio_test_notarius_config_overlay": ""}' \
"$verify_config"

View File

@@ -24,9 +24,9 @@
narratio_seriatim_coalesce_gap: 0.0
narratio_seriatim_report: false
narratio_audita_modules: []
narratio_audita_report: false
narratio_notarius_llm_api_key: NARRATIO_TEST_NOTARIUS_API_KEY
narratio_notarius_config_profile: representative-profile
narratio_notarius_credentials:
- NARRATIO_TEST_NOTARIUS_API_KEY
narratio_notarius_config_overlay: representative-overlay
narratio_notarius_resume: false
narratio_notarius_chunk_cache: auto
narratio_normalize_output_path: null

View File

@@ -24,9 +24,8 @@
- narratio_pipeline.seriatim.coalesce_gap == 0.0
- narratio_pipeline.seriatim.report == false
- narratio_pipeline.audita.modules == []
- narratio_pipeline.audita.report == false
- narratio_pipeline.notarius.llm_api_key == 'NARRATIO_TEST_NOTARIUS_API_KEY'
- narratio_pipeline.notarius.config_profile == narratio_expected_notarius_config_profile
- narratio_pipeline.notarius.credentials == ['NARRATIO_TEST_NOTARIUS_API_KEY']
- narratio_pipeline.notarius.config_overlay == narratio_expected_notarius_config_overlay
- narratio_pipeline.notarius.resume == false
- narratio_pipeline.notarius.chunk_cache == 'auto'
- narratio_pipeline.trim.enabled == false
@@ -40,7 +39,7 @@
- "'normalize' not in narratio_pipeline"
vars:
narratio_pipeline: "{{ narratio_managed_pipeline.content | b64decode | from_yaml }}"
narratio_expected_notarius_config_profile: "{{ narratio_test_notarius_config_profile | default('representative-profile') }}"
narratio_expected_notarius_config_overlay: "{{ narratio_test_notarius_config_overlay | default('representative-overlay') }}"
- name: Validate the representative pipeline as the Narratio account
become: true