112 lines
4.7 KiB
Markdown
112 lines
4.7 KiB
Markdown
# 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:
|
|
|
|
```python
|
|
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:
|
|
|
|
```text
|
|
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:
|
|
|
|
```text
|
|
./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.
|