Files
ansible-workspace-dnd/docs/roadmap/remediation.md

4.7 KiB

Feature 0007 Remediation Review

Status: resolved

Reviewed implementation commits:

  • d1193e8 Align campaign definitions with Narratio
  • c7e1845 Correct prompt asset references
  • a6ce224 Deploy D&D pipeline assets
  • cbfd601 Add focused asset integration coverage

The production architecture matches Feature 0007. The campaign repository uses Narratio's canonical party schema, the prompt repository's internal references match its installed layout, and the pipeline role exposes and wires the six approved asset variables. Production convergence contains only the planned directory declaration and two Git checkout declarations.

The complete integration entry point passes, including native campaign and prompt discovery, schema resolution, both clean repeated convergences, and baseline restoration. One test-quality finding remains.

Finding 1: Make the Prompt-Library Root an Explicit Test Input

Severity: low

ansible-role-dnd-pipeline/tests/integration uses the role's default prompt root implicitly, then duplicates that current default inside the schema check:

schema_root = Path("/usr/local/share/narratio/prompt-library/schemas").resolve()

The check protects a valid behavioral requirement: a schema path reported by Scriptorium must resolve inside the deployed schema directory. The hard-coded source of that directory is the problem. If the role's default root were intentionally changed while its Git destination and Scriptorium wiring remained correct, this test would fail solely because it snapshots the former default. That conflicts with the testing policy's distinction between an explicitly selected value and an assertion about the current default.

Required Remediation

  • Define the prompt-library root once as an integration-owned shell value.
  • Pass that value explicitly as dnd_pipeline_prompt_library_root in baseline_args, alongside the explicit repository origin and revision.
  • Give the same value's schemas child to the Python schema-resolution check, for example as a command argument. Do not repeat the literal inside Python.
  • Reuse the existing value for baseline, explicit-version, and cleanup convergence through the existing baseline_args array.
  • Do not add a default-value assertion, configuration snapshot, file metadata check, Git-state check, or separate path-override scenario.

The existing native Narratio and Scriptorium checks, both immediate clean repeats, and the Seriatim forwarding case should remain otherwise unchanged. README changes are not required because its test description remains accurate.

Resolution

Resolved in pipeline-role commit 7572fa3. The integration driver now owns a single explicit prompt-library root, passes it to the role with the other controlled asset inputs, and gives its schemas child to the schema-resolution check. No production code or additional coverage was added.

Validation

From ansible-role-dnd-pipeline, run:

bash -n tests/integration
tests/integration
git diff --check
git status --short --branch

Expected result: the controlled prompt root is explicitly supplied to the role and reused by the deployed-schema check; fresh dependency bootstrap, syntax checking, production lint, native asset validation, both clean repeats, and cleanup restoration all continue to pass; and only the intended test change is present before commit.

From the workspace root, run:

./scripts/status

Expected result: the implementation repositories remain clean except for the intended remediation before it is committed, and no unrelated repository has changed.

Review Validation Evidence

During review, ansible-role-dnd-pipeline/tests/integration completed successfully. It installed the pinned application roles and collection into fresh private paths, passed syntax checking and production-profile lint, validated the centaurs campaign through Narratio, inspected deployed prompts and a deployed schema through Scriptorium, and reported changed=0 and failed=0 on both required immediate repeats. Cleanup restored Seriatim v1.5.0 and the asset-enabled baseline.

Direct review also validated both centaurs and dilfs by campaign ID through Narratio and successfully inspected all four prompt definitions affected by the source corrections. bash -n, git diff --check, and repository status checks passed. No production-role or asset-content findings remain.

After remediation, the complete integration entry point passed again, including fresh dependency bootstrap, syntax checking, production-profile lint, native asset validation, both immediate clean repeats, the explicit Seriatim version case, and cleanup restoration. bash -n and git diff --check also passed.