Upgrade the Narratio role to version 2.1.0

This commit is contained in:
2026-09-16 19:24:30 +00:00
parent eeb1105590
commit 292d8669e7
8 changed files with 59 additions and 10 deletions

View File

@@ -8,7 +8,7 @@ application state.
## Variables
```yaml
narratio_version: v2.0.0
narratio_version: v2.1.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
@@ -108,6 +108,9 @@ narratio_notarius_config_path: null
narratio_notarius_pipeline_id: null
narratio_notarius_timeout: null
narratio_notarius_working_directory: null
narratio_notarius_llm_api_key: null
narratio_notarius_resume: null
narratio_notarius_chunk_cache: null
narratio_notarius_references: null
narratio_notarius_outputs: null
narratio_notification_mode: null
@@ -133,7 +136,12 @@ falsey values are preserved. `narratio_publish_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.
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_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
does not install the downstream applications, campaign content, or suite policy.
@@ -152,10 +160,11 @@ does not install the downstream applications, campaign content, or suite policy.
The repository-local integration suite installs its pinned collection and runs
syntax checking and production-profile lint. It validates a baseline managed
pipeline through Narratio as its application account and requires immediate
clean repeated convergence. It explicitly selects `v2.0.0` and checks native
clean repeated convergence. It explicitly selects `v2.1.0` and checks native
version output, then combines missing-binary recovery with a caller-supplied Go
executable while dependency management is disabled. A representative pipeline
checks null omission, falsey values, and caller-composed native collections
checks null omission, falsey values, caller-composed native collections, and
the native Notarius credential-reference, `resume`, and chunk-cache fields
before native validation and a clean repeat. The suite restores the baseline
deployment during cleanup.

View File

@@ -1,5 +1,5 @@
---
narratio_version: v2.0.0
narratio_version: v2.1.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
@@ -93,6 +93,9 @@ narratio_notarius_config_path: null
narratio_notarius_pipeline_id: null
narratio_notarius_timeout: null
narratio_notarius_working_directory: null
narratio_notarius_llm_api_key: null
narratio_notarius_resume: null
narratio_notarius_chunk_cache: null
narratio_notarius_references: null
narratio_notarius_outputs: null
narratio_notification_mode: null

View File

@@ -98,6 +98,9 @@ argument_specs:
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_resume: {type: bool, required: false}
narratio_notarius_chunk_cache: {type: str, required: false}
narratio_notarius_references: {type: dict, required: false}
narratio_notarius_outputs: {type: dict, required: false}
narratio_notification_mode: {type: str, required: false}

View File

@@ -253,7 +253,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_pipeline_id is not none or narratio_notarius_timeout is not none or narratio_notarius_working_directory 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_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 %}
notarius:
{% if narratio_notarius_enabled is not none %}
enabled: {{ narratio_notarius_enabled | to_json }}
@@ -273,6 +273,15 @@ 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 }}
{% endif %}
{% if narratio_notarius_resume is not none %}
resume: {{ narratio_notarius_resume | to_json }}
{% endif %}
{% if narratio_notarius_chunk_cache is not none %}
chunk_cache: {{ narratio_notarius_chunk_cache | to_json }}
{% endif %}
{% if narratio_notarius_references is not none %}
references: {{ narratio_notarius_references | to_json }}
{% endif %}

View File

@@ -56,8 +56,8 @@ run_converge "$baseline_repeat_log" "${baseline_args[@]}"
require_clean_recap "$baseline_repeat_log"
selected_version_log="$test_tmp/selected-version.log"
run_converge "$selected_version_log" "${baseline_args[@]}" -e 'narratio_version=v2.0.0'
/usr/local/bin/narratio version | grep -Fx 'narratio v2.0.0'
run_converge "$selected_version_log" "${baseline_args[@]}" -e 'narratio_version=v2.1.0'
/usr/local/bin/narratio version | grep -Fx 'narratio v2.1.0'
custom_go_binary="$test_tmp/go"
custom_go_invocations="$test_tmp/go-invocations.log"
@@ -73,7 +73,7 @@ run_converge "$recovery_log" "${baseline_args[@]}" \
-e '{"narratio_manage_build_dependencies": false}' \
-e "narratio_go_binary=$custom_go_binary"
grep -q . "$custom_go_invocations"
/usr/local/bin/narratio version | grep -Fx 'narratio v2.0.0'
/usr/local/bin/narratio version | grep -Fx 'narratio v2.1.0'
"$ansible_playbook" -i "$inventory" "$verify_baseline"
recovery_repeat_log="$test_tmp/recovery-repeat.log"
run_converge "$recovery_repeat_log" "${baseline_args[@]}" \
@@ -83,7 +83,11 @@ require_clean_recap "$recovery_repeat_log"
representative_log="$test_tmp/representative.log"
"$ansible_playbook" -i "$inventory" "$representative" | tee "$representative_log"
"$ansible_playbook" -i "$inventory" "$verify_config"
synthetic_notarius_api_key=notarius-representative-synthetic-value
representative_validation_log="$test_tmp/representative-validation.log"
NARRATIO_TEST_NOTARIUS_API_KEY="$synthetic_notarius_api_key" \
"$ansible_playbook" -i "$inventory" "$verify_config" | tee "$representative_validation_log"
! grep -Fq "$synthetic_notarius_api_key" "$representative_log" "$representative_validation_log"
representative_repeat_log="$test_tmp/representative-repeat.log"
"$ansible_playbook" -i "$inventory" "$representative" | tee "$representative_repeat_log"
require_clean_recap "$representative_repeat_log"

View File

@@ -25,6 +25,9 @@
narratio_seriatim_report: false
narratio_audita_modules: []
narratio_audita_report: false
narratio_notarius_llm_api_key: NARRATIO_TEST_NOTARIUS_API_KEY
narratio_notarius_resume: false
narratio_notarius_chunk_cache: auto
narratio_normalize_output_path: null
narratio_trim_enabled: false
narratio_trim_bounds_render_debug: false

View File

@@ -3,6 +3,19 @@
hosts: localhost
gather_facts: false
tasks:
- name: Read the baseline pipeline
become: true
ansible.builtin.slurp:
src: /usr/local/etc/narratio/pipeline.yml
register: narratio_baseline_pipeline
- name: Verify null Notarius fields are omitted
ansible.builtin.assert:
that:
- "'notarius' not in narratio_pipeline"
vars:
narratio_pipeline: "{{ narratio_baseline_pipeline.content | b64decode | from_yaml }}"
- name: Validate the pipeline as the Narratio account
become: true
become_user: narratio

View File

@@ -25,6 +25,9 @@
- 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.resume == false
- narratio_pipeline.notarius.chunk_cache == 'auto'
- narratio_pipeline.trim.enabled == false
- narratio_pipeline.trim.bounds.render_debug == false
- narratio_pipeline.render.enabled == false
@@ -47,4 +50,6 @@
- validate
- --config
- /usr/local/etc/narratio/pipeline.yml
environment:
NARRATIO_TEST_NOTARIUS_API_KEY: "{{ lookup('ansible.builtin.env', 'NARRATIO_TEST_NOTARIUS_API_KEY') }}"
changed_when: false