13 KiB
Feature 0022: Integrate the Reviewed Application Upgrades
Status: ready
Summary
Bring the four reviewed standalone upgrades into the D&D pipeline role, collection, and deployment consumer as one compatible configuration set. This completes the agreed application upgrade sequence.
Problem or Opportunity
The standalone roles now support the new releases, but the suite intentionally retains its previous pins and configuration. Audita still receives v1 settings; Narratio and Notarius testing selection still uses retired profile terminology. Updating executable versions alone would break the deployed configuration.
Scope
- Adopt the reviewed application/role versions together.
- Provide Audita v2 backend configuration and suite-owned PromptKit profiles.
- Migrate Narratio credential forwarding and Narratio/Notarius testing overlays.
- Preserve D&D processing, artifact composition, storage/publishing, shared filesystem, and operator-access behavior.
- Update the collection snapshot, public dependency manifests, consumer pins, operator guidance, and focused offline integration coverage.
Non-goals
- Deploying to the operational controller or
pipeline-dndhost, running real transcripts, or calling inference, WhisperX, or object-storage services. - New models, prompts, artifact families, extraction lanes, or processing policy beyond migration choices expressly approved here.
- Automatic manifest conversion, cache deletion, forced stage reruns, broad directory cleanup, compatibility aliases, or runtime version/integrity probes.
- Changing generic standalone-role ownership or adding production validation.
- A newly tagged collection release or replacement of published 0.1.0 assets. This feature updates the public development compatibility set; formal release packaging remains a separate decision.
Target End State
Coordinated Versions and Distribution
| Application | Suite version | Reviewed standalone role revision |
|---|---|---|
| Scriptorium | v0.15.0 | b174c8c |
| Audita | v2.0.1 | c3dd59f |
| Notarius | v0.8.1 | 6aef48b |
| Narratio | v3.0.0 | 3c0700b |
| Seriatim | v1.5.0, unchanged | existing v0.1.0 role pin |
Dependency manifests use full immutable revisions resolved from these reviewed
commits. The pipeline role remains authoritative; the collection imports its
completed revision through the established public Gitea subtree workflow, never
by editing roles/pipeline directly. The collection continues bundling the
pipeline role and declaring standalone role dependencies separately.
Relevant reviewed commits must be published to their existing public origins before downstream manifests/subtree imports depend on them. Publication of the required Git commits is part of the eventual implementation workflow, not this roadmap-writing pass. Do not rewrite tags or publish unrelated changes.
The consumer keeps its minimal playbook and host-vars organization. Its role and collection pins select the same compatibility set. No controller install or remote playbook execution is an acceptance gate.
Audita Backend and Profile Ownership
The pipeline role supplies audita_backends, profile selection, and schema-2
settings to the standalone Audita role. The pipeline owns the missing profile
assets under /usr/local/etc/audita/profiles/, using its runtime owner/group and
configuration modes. This directory contains PromptKit LLM profiles, not
ConfigKit overlays; it must not be renamed to overlays.
Approved suite interface:
dnd_pipeline_audita_backends: native backend map, defaulting to one backend nameddnd, endpointhttps://inference.ai.rakestrawhome.com/v1, credential referenceAUDITA_LLM_API_KEY, and shared concurrency4. Omit queue capacity to inherit the native default.dnd_pipeline_audita_profiles: a native profile mapping keyed by file/profile ID, with completednd-proposalanddnd-validationentries. Each selects backenddnd, modelgoogle/gemma-4-31b-it, and per-attempttimeout_seconds: 900. Other model controls inherit native behavior.dnd_pipeline_audita_llm_proposal_profileanddnd_pipeline_audita_llm_validation_profileselect those respective IDs.
Render each supplied profile as one safely serialized native mapping with its matching ID. Document profile-map keys as filename-safe IDs. Do not introduce per-provider templates, profile merging, or discovery of external assets. Callers can compose native maps in inventory and replace the supplied maps. As with existing managed secrets, removing a map entry does not imply pruning arbitrary files; only selected profiles participate in normal execution.
Preserve the ordered module sequence, audita-v1 output, chunking values,
thresholds, context description, and normalization limits. Convert normalization
duration defaults from 3s, 3s, and 240s to numeric 3.0, 3.0, and
240.0 seconds. Preserve meaningful setting names where native semantics are
unchanged; update argument types accordingly.
Remove retired per-role endpoint/model/credential/concurrency/retry variables in favor of the native backend/profile interface. Document their replacements; do not infer a conversion from arbitrary old inventory. Remove diagnostics retention; leave debug disabled through native defaults. Retain the existing diagnostics work-directory choice where still supported. Reporting follows Audita's native configuration; Narratio consumes its ordinary output contract.
Production and testing continue using the same Audita endpoint and model. No separate Audita testing overlay is needed for an identical configuration.
Credential Lists and Overlay Selection
Replace the suite's singular Narratio Notarius credential variable with
dnd_pipeline_narratio_notarius_credentials, default [OPENROUTER_API_KEY].
Add dnd_pipeline_narratio_audita_credentials, default [AUDITA_LLM_API_KEY].
Pass both through the reviewed Narratio role's native list variables. These
lists contain names, never values, and can be replaced with []. Operators
overriding Audita backends must explicitly list all referenced credentials;
the suite does not inspect configurations to discover names.
Preserve dnd_pipeline_secrets, existing secret names, Vault references,
protected secret directory/files, and ordinary world-readable nonsecret
configuration. No credential rotation, secret relocation, or forwarding logic
is required in Ansible.
Deploy the suite-owned testing files at:
/usr/local/etc/narratio/overlays/testing.yml/usr/local/etc/notarius/overlays/testing.yml
Narratio testing sets notarius.config_overlay: testing; production omits the
selector. Notarius remains enabled in both modes. Its production pipeline
continues selecting gpt-terra-latest, testing selects gpt-luna-latest, and
the existing caller-overridable pipeline map/ID behavior remains intact.
Scriptorium testing still selects gemini-flash-latest; production continues
using the prompt assets' selections. Retain separate artifact/family fragments.
Use Narratio --overlay testing and Notarius --config-overlay testing in
tests and operator examples. Deploy the new files declaratively; leave ignored
legacy profiles/testing.yml files alone and document that they are obsolete.
Do not delete profiles/ directories or conflate them with PromptKit profiles.
Runtime Paths and Existing Suite Behavior
Keep Narratio's explicit downstream binaries/config paths, output handoffs,
Notarius /var/cache/notarius roots and resume behavior, shared writable
directories/ACLs, service user, operator enrollment, and S3/publishing choices.
Audita profiles are configuration assets, not shared output directories.
No new runtime storage architecture is required.
Retry and Timeout Policy
Retain the previously selected per-attempt Audita profile timeouts of 900
seconds while inheriting the new applications' retry,
repair, and whole-operation defaults. Expose nullable suite pass-throughs for
audita_llm_transient_retries, audita_llm_repair_attempts,
audita_llm_operation_timeout, notarius_promptkit_transient_retries, and
scriptorium_transient_retries, prefixed with dnd_pipeline_ in the public
suite interface. Null means omit; explicit zero is preserved where valid.
Do not mechanically translate old max_retries: 3 into both transport retries
and structural repairs. Preserve explicitly authored Notarius module retries;
they are a separate behavior. Keep Narratio stage timeouts unchanged. Explain
the nested budgets and the changed semantics, not a guarantee of identical
provider cost or timing.
Repository Ownership
ansible-role-dnd-pipeline: suite defaults, argument specs, dependency wiring, Audita profile assets, testing overlays, documentation, and integration tests.ansible-collection-dnd: imported pipeline snapshot, dependency manifest, collection tests, and compatibility guidance.rakestraw-ansible: matching dependency pins and deployment guidance; adjust host variables only where required. Preserve Vault content and unrelated inventory. Keep the hosts-and-roles playbook minimal.- Standalone role repositories: reviewed commits are reused/published, not redesigned. Application and campaign/prompt repositories are read-only contracts/assets unless a concrete incompatibility is raised for discussion.
- Workspace: roadmap, later staged plan, decisions, progress, and review.
Constraints and Settled Decisions
Follow the Ansible, testing, and planning policies, MVP roadmap, and upgrade sequence. New D&D policy remains in the pipeline role; optional generic application defaults remain null.
Simplest Viable Implementation
Update dependency variables/pins and existing templates, add an ordinary
Audita profile directory task and one looped template deployment, and change
testing destinations to overlays/. Reuse existing declarative convergence,
secret delivery, and collection assembly. No production validation, state
fingerprints, migration framework, or generated credential inference is needed.
Acceptance Criteria
- Pipeline and collection installations produce a compatible set of the four upgraded applications while Seriatim remains unchanged.
- Native offline inspection/validation accepts Audita settings and selected profiles, Notarius base/testing configurations, Scriptorium configuration, and Narratio base/testing composition with synthetic credential inputs. Direct Audita validation receives credential environment variables explicitly: it does not bootstrap Narratio's secrets directory on its own.
- Focused cases prove caller-supplied backend/profile configuration and credential lists, testing selection, and existing important composition and path handoffs. Assert supplied values, not fixed copies of today's defaults.
- Immediate repeated convergence is clean. Existing meaningful shared-user, cache, artifact-composition, and installed-collection behavior remains covered without expanding into upstream module/runtime regression matrices.
- Collection build/install and consumer syntax checks use the established public dependency manifests. No sibling application/role checkout is needed by an external consumer. Required referenced commits exist on public Gitea.
- Consumer inventory retains comments/Vault references for unknown secrets; no actual keys or operational deployments are required for completion.
- Guidance covers breaking inventory fields, new CLI selectors, obsolete testing-file locations, and upstream manifest migration. Back up and migrate local provenance without deleting progress or editing immutable snapshots; document normal named-selector invalidation rather than forcing reruns.
Open Questions
None. The user approved deferring to application defaults wherever possible, with nullable inventory overrides, and confirmed retaining the existing 900-second Audita per-attempt policy. Do not freeze native retry, repair, or operation-deadline defaults in suite variables. Operators should note that an attempt may consume the entire logical-operation budget; these are separate controls, not additive timeout guarantees.
Dependencies and Follow-up Work
Features 0018–0021 provide the reviewed standalone revisions. This roadmap is approved; execution is defined in the implementation plan. Final review precedes feature closeout. Actual deployment, session migration, live processing, and a formal tagged release are separate operator actions, not completion gates for this feature.