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 ## Variables
```yaml ```yaml
narratio_version: v2.0.0 narratio_version: v2.1.0
narratio_repository_url: https://gitea.maximumdirect.net/eric/narratio.git narratio_repository_url: https://gitea.maximumdirect.net/eric/narratio.git
narratio_source_dir: /usr/local/src/narratio narratio_source_dir: /usr/local/src/narratio
narratio_binary_path: /usr/local/bin/narratio narratio_binary_path: /usr/local/bin/narratio
@@ -108,6 +108,9 @@ narratio_notarius_config_path: null
narratio_notarius_pipeline_id: null narratio_notarius_pipeline_id: null
narratio_notarius_timeout: null narratio_notarius_timeout: null
narratio_notarius_working_directory: 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_references: null
narratio_notarius_outputs: null narratio_notarius_outputs: null
narratio_notification_mode: null narratio_notification_mode: null
@@ -133,7 +136,12 @@ falsey values are preserved. `narratio_publish_outputs`,
`narratio_scriptorium_artifacts`, and `narratio_scriptorium_artifact_families` `narratio_scriptorium_artifacts`, and `narratio_scriptorium_artifact_families`
are complete native caller values, so callers may compose them before assigning 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 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 ConfigKit imports and profile overlays are externally managed, and this role
does not install the downstream applications, campaign content, or suite policy. 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 The repository-local integration suite installs its pinned collection and runs
syntax checking and production-profile lint. It validates a baseline managed syntax checking and production-profile lint. It validates a baseline managed
pipeline through Narratio as its application account and requires immediate 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 version output, then combines missing-binary recovery with a caller-supplied Go
executable while dependency management is disabled. A representative pipeline 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 before native validation and a clean repeat. The suite restores the baseline
deployment during cleanup. 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_repository_url: https://gitea.maximumdirect.net/eric/narratio.git
narratio_source_dir: /usr/local/src/narratio narratio_source_dir: /usr/local/src/narratio
narratio_binary_path: /usr/local/bin/narratio narratio_binary_path: /usr/local/bin/narratio
@@ -93,6 +93,9 @@ narratio_notarius_config_path: null
narratio_notarius_pipeline_id: null narratio_notarius_pipeline_id: null
narratio_notarius_timeout: null narratio_notarius_timeout: null
narratio_notarius_working_directory: 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_references: null
narratio_notarius_outputs: null narratio_notarius_outputs: null
narratio_notification_mode: null narratio_notification_mode: null

View File

@@ -98,6 +98,9 @@ argument_specs:
narratio_notarius_pipeline_id: {type: str, required: false} narratio_notarius_pipeline_id: {type: str, required: false}
narratio_notarius_timeout: {type: str, required: false} narratio_notarius_timeout: {type: str, required: false}
narratio_notarius_working_directory: {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_references: {type: dict, required: false}
narratio_notarius_outputs: {type: dict, required: false} narratio_notarius_outputs: {type: dict, required: false}
narratio_notification_mode: {type: str, required: false} narratio_notification_mode: {type: str, required: false}

View File

@@ -253,7 +253,7 @@ scriptorium:
artifact_families: {{ narratio_scriptorium_artifact_families | to_json }} artifact_families: {{ narratio_scriptorium_artifact_families | to_json }}
{% endif %} {% endif %}
{% 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: notarius:
{% if narratio_notarius_enabled is not none %} {% if narratio_notarius_enabled is not none %}
enabled: {{ narratio_notarius_enabled | to_json }} enabled: {{ narratio_notarius_enabled | to_json }}
@@ -273,6 +273,15 @@ notarius:
{% if narratio_notarius_working_directory is not none %} {% if narratio_notarius_working_directory is not none %}
working_directory: {{ narratio_notarius_working_directory | to_json }} working_directory: {{ narratio_notarius_working_directory | to_json }}
{% endif %} {% 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 %} {% if narratio_notarius_references is not none %}
references: {{ narratio_notarius_references | to_json }} references: {{ narratio_notarius_references | to_json }}
{% endif %} {% endif %}

View File

@@ -56,8 +56,8 @@ run_converge "$baseline_repeat_log" "${baseline_args[@]}"
require_clean_recap "$baseline_repeat_log" require_clean_recap "$baseline_repeat_log"
selected_version_log="$test_tmp/selected-version.log" selected_version_log="$test_tmp/selected-version.log"
run_converge "$selected_version_log" "${baseline_args[@]}" -e 'narratio_version=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.0.0' /usr/local/bin/narratio version | grep -Fx 'narratio v2.1.0'
custom_go_binary="$test_tmp/go" custom_go_binary="$test_tmp/go"
custom_go_invocations="$test_tmp/go-invocations.log" 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_manage_build_dependencies": false}' \
-e "narratio_go_binary=$custom_go_binary" -e "narratio_go_binary=$custom_go_binary"
grep -q . "$custom_go_invocations" 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" "$ansible_playbook" -i "$inventory" "$verify_baseline"
recovery_repeat_log="$test_tmp/recovery-repeat.log" recovery_repeat_log="$test_tmp/recovery-repeat.log"
run_converge "$recovery_repeat_log" "${baseline_args[@]}" \ run_converge "$recovery_repeat_log" "${baseline_args[@]}" \
@@ -83,7 +83,11 @@ require_clean_recap "$recovery_repeat_log"
representative_log="$test_tmp/representative.log" representative_log="$test_tmp/representative.log"
"$ansible_playbook" -i "$inventory" "$representative" | tee "$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" representative_repeat_log="$test_tmp/representative-repeat.log"
"$ansible_playbook" -i "$inventory" "$representative" | tee "$representative_repeat_log" "$ansible_playbook" -i "$inventory" "$representative" | tee "$representative_repeat_log"
require_clean_recap "$representative_repeat_log" require_clean_recap "$representative_repeat_log"

View File

@@ -25,6 +25,9 @@
narratio_seriatim_report: false narratio_seriatim_report: false
narratio_audita_modules: [] narratio_audita_modules: []
narratio_audita_report: false 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_normalize_output_path: null
narratio_trim_enabled: false narratio_trim_enabled: false
narratio_trim_bounds_render_debug: false narratio_trim_bounds_render_debug: false

View File

@@ -3,6 +3,19 @@
hosts: localhost hosts: localhost
gather_facts: false gather_facts: false
tasks: 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 - name: Validate the pipeline as the Narratio account
become: true become: true
become_user: narratio become_user: narratio

View File

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