diff --git a/docs/roadmap/application-upgrade-sequence.md b/docs/roadmap/application-upgrade-sequence.md index 71f12e3..cc88ba3 100644 --- a/docs/roadmap/application-upgrade-sequence.md +++ b/docs/roadmap/application-upgrade-sequence.md @@ -31,11 +31,11 @@ Seriatim is unchanged by this sequence. ## Progress and Feature Links Release-summary and migration-guidance triage is complete. Standalone -Scriptorium implementation awaits independent review. Add the numbered feature +Scriptorium adoption is complete after independent review; Audita is next. Add the numbered feature link beside each item when its roadmap is created; check it off after independent review and closeout. -- [ ] [Feature 0018: Scriptorium adoption](features/0018-scriptorium-v0-15-adoption.md) — standalone role implemented; awaiting independent review and closeout. +- [x] [Feature 0018: Scriptorium adoption](features/0018-scriptorium-v0-15-adoption.md) — complete through role `b174c8c`; independent review found no remediation issues. - [ ] Audita adoption — feature roadmap not yet created. - [ ] Notarius adoption — feature roadmap not yet created. - [ ] Narratio adoption — feature roadmap not yet created. diff --git a/docs/roadmap/features/0018-scriptorium-v0-15-adoption.md b/docs/roadmap/features/0018-scriptorium-v0-15-adoption.md index 7fe5699..f2ef930 100644 --- a/docs/roadmap/features/0018-scriptorium-v0-15-adoption.md +++ b/docs/roadmap/features/0018-scriptorium-v0-15-adoption.md @@ -1,6 +1,6 @@ # Feature 0018: Adopt Scriptorium v0.15.0 in the Standalone Role -Status: in_progress +Status: done ## Summary @@ -137,12 +137,25 @@ and file/template tasks unchanged. No additional runtime tasks are needed. ## Dependencies and Follow-up Work -The staged implementation is recorded in -[implementation.md](../implementation.md) and awaits independent review. -Audita adoption follows review and closeout. The eventual suite integration +Git history preserves the completed staged plan. +Audita adoption is next. The eventual suite integration feature owns propagation of the new role revision, deployment settings, and coordinated upgrade guidance. +## Completion and Review Evidence + +Completed in role commits `61dcafe`, `2fce529`, and `b174c8c`. Implementation +reported passing integration tests, including native configuration validation, +offline profile inspection, imports, explicit retry zero, and clean repeat +convergence. Independent review found no code-quality issues, implementation +gaps, or unnecessarily strengthened requirements requiring remediation. + +Independent syntax, production-profile lint, shell syntax, whitespace, native +configuration validation, and focused template checks passed. The review used +recorded integration evidence without rerunning host-mutating suites. No new +production tasks or suite/collection/consumer pin changes were introduced. +No operational deployment is claimed. + ## Upstream References - [v0.15.0 configuration](https://gitea.maximumdirect.net/eric/scriptorium/src/tag/v0.15.0/docs/config.md) diff --git a/docs/roadmap/implementation.md b/docs/roadmap/implementation.md index 3950724..261786f 100644 --- a/docs/roadmap/implementation.md +++ b/docs/roadmap/implementation.md @@ -1,236 +1,12 @@ -# Implementation Plan 0018: Standalone Scriptorium v0.15.0 Adoption +# Implementation Plan -Status: ready +No implementation plan is currently active. Agree on the next feature roadmap +before preparing its staged plan. -Target executor: GPT-5.6-Terra +Feature 0018 is complete and independently reviewed with no remediation +findings. See [its roadmap](features/0018-scriptorium-v0-15-adoption.md) for +completion evidence. Git history preserves the completed plan. -Feature roadmap: [0018-scriptorium-v0-15-adoption.md](features/0018-scriptorium-v0-15-adoption.md) - -## Objective and Boundaries - -Adopt Scriptorium v0.15.0 in its standalone role, expose ConfigKit imports and -transient retries, and validate the resulting configuration offline. The approved -feature roadmap owns scope, rationale, and acceptance criteria. This plan does -not advance the [coordinated upgrade sequence](application-upgrade-sequence.md) -beyond its Scriptorium feature. - -Only `ansible-role-scriptorium` and workspace planning records may change. -Upstream applications and all other roles, collection, consumer, and asset -repositories are read-only. In particular, do not update suite application -defaults, role dependency manifests, collection subtrees, or deployment pins. - -## Execution Rules and Starting State - -- Execute the consecutive stages below in order. Before each stage reread its - listed policy documents, inspect the owning working trees, and preserve - unrelated changes. All policy paths below are workspace-relative. -- The role currently defaults to v0.13.0; the selected target is v0.15.0, with - ConfigKit v0.4.2 and PromptKit v0.11.2. Consult tagged application documentation - rather than assuming newer checkout behavior belongs to this feature. -- Use workspace `.venv/bin` Ansible tools and the role's existing integration - entry point. Missing PATH entries or an operational controller are not blockers. - Existing Go 1.26 satisfies upstream's Go requirement. -- The integration script performs local development-host convergence with sudo. - Read its fixture and cleanup behavior before execution. Do not connect to the - operational controller or pipeline host, supply real keys, or call providers. -- Trust module state management. No new production tasks, runtime validation, - probes, state files, custom retry implementation, or migration automation are - required. Tests may inspect rendered configuration to verify role-owned output. -- Keep null optional fields omitted and serialize native values safely. Do not - freeze upstream defaults or enforce additional selector/import restrictions. -- Commit validated stages with the plain-English intent given below. No push, - release tag, collection assembly, or deployment is required by this plan. -- If validation reveals a real incompatibility, report its evidence and resolve - only what falls within the roadmap. Do not silently weaken useful tests or - broaden scope. Record validation and commit IDs in Progress Notes. - -## Stage 1: Adopt the New Application Version - -Completion: complete (2026-09-28). - -### Required Policy Review - -Read `AGENTS.md`, `docs/orientation.md`, `docs/conventions.md`, -`docs/ansible.md`, `docs/testing.md`, and the Feature 0018 roadmap. - -### Owning Repository and Preconditions - -`ansible-role-scriptorium`. Inspect its current defaults, tasks, template, -argument specifications, README, and `tests/integration`. Read the upstream -v0.14.0 migration notes and v0.15.0 configuration/release references linked by -the roadmap. Confirm the target tag without modifying upstream worktrees. - -### Required Changes - -1. Set `scriptorium_version: v0.15.0` and update its README default example. - Keep the source/build/dependency and filesystem tasks unchanged. -2. Add native `config validate --config ` checks to the existing - integration script for default and representative configurations. Retain - existing offline profile/backend inspection, because application validation - alone does not construct a PromptKit engine. -3. Preserve existing caller-supplied build-executable and missing-binary coverage. - Do not add an assertion that v0.15.0 must always be the default or require a - new historical-version matrix. Limit fixture corrections to actual changed - application contracts. - -### Validation and Completion Criteria - -From `ansible-role-scriptorium`, run: - -```sh -tests/integration -git diff --check -``` - -The new version builds; default and representative configurations validate; -offline profile inspection succeeds; immediate repeat convergence is clean. -The existing script already includes syntax checking and linting. - -### Commit - -`Adopt Scriptorium v0.15.0 in the standalone role`. - -## Stage 2: Expose Imports and Transient Retries - -Completion: complete (2026-09-28). - -### Required Policy Review - -Read `AGENTS.md`, `docs/orientation.md`, `docs/conventions.md`, -`docs/ansible.md`, `docs/testing.md`, and the Feature 0018 roadmap. - -### Owning Repository and Preconditions - -`ansible-role-scriptorium`. Stage 1 is committed and validated. Review the tagged -configuration reference's import resolution, null, and retry semantics. - -### Required Changes - -1. Add defaults `scriptorium_configkit_imports: null` and - `scriptorium_transient_retries: null`. Add optional argument specifications: - imports is a list of dictionaries, retries is an integer. Use native mappings - for import entries; do not recreate ConfigKit's nested schema in the role. -2. Extend `templates/config.yml.j2` to render `configkit.imports` when imports - is not none, and top-level `transient_retries` when retries is not none. - Use existing serialization conventions. Include both variables in the - empty-document condition so either field alone prevents output of `{}`. - With all application variables null, retain the minimal `{}` document. -3. Extend the existing integration fixture with a caller-owned configuration - fragment under a temporary configuration root. Select that root using - `scriptorium_config_path`. Supply imports through the role's public variable; - use a relative `path` entry naming the fragment. -4. In that focused case, render only imports and `scriptorium_transient_retries: 0` - through application variables. Put one representative setting, such as - `server.addr: 127.0.0.1:18081`, in the external fragment. Do not also define - that setting in the main file: ordinary imports reject field conflicts. - Native `config show` should expose the imported setting and retry zero. - Inspect the rendered root to verify that the supplied import was serialized. -5. Reapply the same role inputs immediately and require a clean recap. For the - default case, verify omission of the two new fields in the rendered YAML, - not exact native defaults in resolved output. Reuse existing test structure; - no additional overlay scenario is required for this role's import interface. -6. Ensure the temporary configuration and fragment live under the script's - existing disposable fixture directory and cleanup restores the default role - configuration. No production task should create the test fragment or manage - arbitrary import/overlay content. -7. Document the new public variables and one concise inventory import example. - Explain null omission, zero retry behavior, caller-owned files, and that newer - fields must be left unset when selecting older unsupported binaries. - -### Validation and Completion Criteria - -From the role repository run: - -```sh -tests/integration -git diff --check -``` - -Native validation accepts the new configuration. Native inspection resolves -the explicitly supplied fragment and retry setting without provider calls. -Default omission and repeated convergence pass. No tests assert exact task -layout, default version/model, or file-module ownership/existence postconditions. - -### Commit - -`Expose Scriptorium imports and transient retry settings`. - -## Stage 3: Document Compatibility and Record the Review Handoff - -Completion: complete (2026-09-28). - -### Required Policy Review - -Read `AGENTS.md`, `docs/orientation.md`, `docs/conventions.md`, -`docs/ansible.md`, `docs/testing.md`, `docs/planning.md`, the Feature 0018 roadmap, -and `docs/roadmap/application-upgrade-sequence.md`. - -### Owning Repositories and Preconditions - -`ansible-role-scriptorium` and workspace. Stages 1-2 are validated and committed. - -### Required Changes - -1. Finish the role README's upgrade guidance: strict YAML/empty-document behavior, - ConfigKit imports and `--config-overlay` versus PromptKit LLM profiles, - configuration-source versus application-value path semantics, and changed - transport retry behavior. Link tagged upstream contracts for full detail. -2. Mention removed legacy DeepSeek catalog IDs without adding compatibility aliases. - Note Scriptorium v0.15.0's GPL-3.0-or-later application grant and link its - licensing notices; leave the role's own license untouched. Do not introduce - a legal approval gate or copy license files into this installer role. -3. Update the README validation summary to match actual coverage. Do not claim - provider connectivity, live service operation, or suite compatibility testing. -4. Record role commits and validation evidence in this plan and workspace status. - Mark Feature 0018 `in_progress` pending independent review. In the sequence - document, note implementation is awaiting review, leaving its checkbox open. - Do not begin Audita work or mark this feature done automatically. -5. Confirm this feature changed no pipeline/collection/consumer pins. Inspect - existing changes without reverting unrelated work by the user or other tasks. - -### Validation and Completion Criteria - -Run `git diff --check` in the role and workspace. Check new local Markdown links -and examples against the selected application contract. Reuse Stage 2 integration -results for documentation-only changes; no second full suite or operational -deployment is needed. The handoff names the role revision for later integration. - -### Commits - -Role, if documentation remains uncommitted: -`Document Scriptorium v0.15 compatibility`. - -Workspace: `Record the standalone Scriptorium upgrade for review`. - -## Final Validation and Handoff - -Report owning commits, tests performed, and any deviations or blockers. Confirm -the feature's working trees are clean. State explicitly that the existing suite -compatibility set remains unchanged and that no operational deployment occurred. -Independent review and closeout precede the next application adoption feature. - -## Progress Notes - -Roadmap and implementation plan approved by the user. - -- Stage 1: role commit `61dcafe`. `ansible-role-scriptorium/tests/integration` - passed, including - syntax checking, production-profile lint, native validation of default and - representative configurations, offline profile inspection, missing-binary - recovery with a caller-supplied Go executable, and clean repeat convergence. - `git diff --check` passed in the role repository. -- Stage 2: role commit `2fce529`. `ansible-role-scriptorium/tests/integration` - passed after the new - import and retry settings were added. It verified default omission, native - validation and inspection of a caller-supplied relative import and explicit - retry zero, root serialization, and clean repeat convergence. The role's - `git diff --check` passed. -- Stage 3: role commit `b174c8c` documents the tagged v0.15.0 compatibility and - licensing contracts. Role and workspace `git diff --check` passed; local - Markdown targets and tagged upstream files were checked. Pipeline, collection, - and consumer pins remain unchanged. Feature 0018 awaits independent review. - -## Open Questions - -None required for the approved standalone scope. Suite retry policy and later -deployment choices belong to the final integration feature, not this role update. +Audita standalone adoption is next in the agreed +[application upgrade sequence](application-upgrade-sequence.md). Suite and +consumer pins remain unchanged until coordinated integration. diff --git a/docs/status.md b/docs/status.md index 6a0dba4..3571401 100644 --- a/docs/status.md +++ b/docs/status.md @@ -4,9 +4,8 @@ Last updated: 2026-09-28 Current milestone: Operational D&D pipeline deployment -Current focus: Feature 0018 standalone role implementation is complete and -awaits independent review. -Scriptorium adoption is first in the agreed +Current focus: Prepare the Audita v2.0.1 standalone adoption roadmap next. +Feature 0018 is complete after independent review with no findings. Follow the agreed [application upgrade sequence](roadmap/application-upgrade-sequence.md): Scriptorium → Audita → Notarius → Narratio → suite integration. Retain the existing suite and consumer pins until coordinated integration. Feature 0017 @@ -40,7 +39,7 @@ is complete. | F0015 | Enable D&D S3 storage and publishing | ansible-role-dnd-pipeline, ansible-collection-dnd, and workspace | done | Pipeline `51566afcf69083cdbb5b5718f2544c86b079001c`, collection fixture `cf3de016ee09edf91afc3bc1addfd926d4a172ad`, collection squash `77f67adbc0f700e88bc15554e02052eaa22f1033`, and collection merge `46913446765e86ecfb29ebad9955d579ef6a4c7e` passed the complete repository suites and independent review with no remediation findings | | F0016 | Prepare the D&D deployment playbook for `pipeline-dnd` | rakestraw-ansible and workspace | done | Consumer `716a80e`, `12b2462`, and `7f8353d` passed independent review with no findings; public dependency installation, target-only host listing, syntax and whitespace checks passed. Follow-up `7f4c90a` pins collection `2a53979` for Narratio v2.1.2; collection build and syntax checks passed | | F0017 | Compose the Notarius testing overlay | Narratio role, pipeline role, collection, consumer, and workspace | done | Published through Narratio `330afe7`, Notarius `a82a83d`, pipeline `c56a942`, collection `ce5b838`, and consumer `0ced48c`; independent review found no remediation issues; validation evidence is in the feature roadmap | -| F0018 | Adopt Scriptorium v0.15.0 | Scriptorium role and workspace | in_progress | Standalone role commits `61dcafe` and `2fce529` passed offline integration; `b174c8c` adds compatibility guidance; [staged plan](roadmap/implementation.md) records validation; independent review pending, suite pins unchanged | +| F0018 | Adopt Scriptorium v0.15.0 | Scriptorium role and workspace | done | Role commits `61dcafe`, `2fce529`, and `b174c8c` passed independent review with no findings; feature roadmap records validation; suite pins unchanged | | A0001 | Audit completed standalone-role test suites | workspace and standalone roles | done | Findings recorded in `docs/roadmap/test-suite-audit-findings.md` | | R0001 | Simplify completed standalone-role test suites | workspace and standalone roles | done | Role commits `e08c63c`, `d2d0b9d`, and `cfecf37` passed implementation and independent review |