diff --git a/README.md b/README.md index ed9c31e..deeb0ca 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/defaults/main.yml b/defaults/main.yml index 750102c..eb5d50f 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -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 diff --git a/meta/argument_specs.yml b/meta/argument_specs.yml index b96e7fd..ffe5f0d 100644 --- a/meta/argument_specs.yml +++ b/meta/argument_specs.yml @@ -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} diff --git a/templates/pipeline.yml.j2 b/templates/pipeline.yml.j2 index a4e964e..b25f18d 100644 --- a/templates/pipeline.yml.j2 +++ b/templates/pipeline.yml.j2 @@ -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 }} diff --git a/tests/integration b/tests/integration index 47c58b7..f95b9cb 100755 --- a/tests/integration +++ b/tests/integration @@ -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" diff --git a/tests/representative.yml b/tests/representative.yml index 1dbeb9f..1eba6cb 100644 --- a/tests/representative.yml +++ b/tests/representative.yml @@ -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 diff --git a/tests/verify-config.yml b/tests/verify-config.yml index b109a01..d4c340c 100644 --- a/tests/verify-config.yml +++ b/tests/verify-config.yml @@ -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