Complete D&D asset deployment
This commit is contained in:
@@ -1,119 +1,111 @@
|
||||
# Feature 0006 Remediation Review
|
||||
# Feature 0007 Remediation Review
|
||||
|
||||
Status: resolved
|
||||
|
||||
Reviewed implementation commits:
|
||||
|
||||
- `b515968 Compose the D&D pipeline roles`
|
||||
- `61869d1 Add focused pipeline composition coverage`
|
||||
- `d1193e8 Align campaign definitions with Narratio`
|
||||
- `c7e1845 Correct prompt asset references`
|
||||
- `a6ce224 Deploy D&D pipeline assets`
|
||||
- `cbfd601 Add focused asset integration coverage`
|
||||
|
||||
Remediation commit:
|
||||
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.
|
||||
|
||||
- `4ea4358 Clean up pipeline composition review findings`
|
||||
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.
|
||||
|
||||
The production architecture matches Feature 0006: the role contains only its
|
||||
public defaults and argument specification, five pinned role dependencies,
|
||||
the approved variable forwarding, and fixed Narratio path wiring. Its task
|
||||
file is empty, and it does not duplicate downstream tasks, templates, state
|
||||
inspection, or validation. The complete integration entry point passes.
|
||||
|
||||
The review identified two repository-quality findings.
|
||||
|
||||
## Finding 1: Remove the Misleading Placeholder README Sentence
|
||||
## Finding 1: Make the Prompt-Library Root an Explicit Test Input
|
||||
|
||||
Severity: low
|
||||
|
||||
`ansible-role-dnd-pipeline/README.md` still ends with the original placeholder
|
||||
sentence claiming that the role installs the full production pipeline “plus
|
||||
supporting assets.” Feature 0006 expressly defers campaign and prompt assets,
|
||||
operator policy, secrets, and the opinionated D&D configuration layer. The
|
||||
sentence is both redundant with the rewritten introduction and inaccurate for
|
||||
the implemented foundation.
|
||||
`ansible-role-dnd-pipeline/tests/integration` uses the role's default prompt
|
||||
root implicitly, then duplicates that current default inside the schema check:
|
||||
|
||||
The supported-platform summary also names Ubuntu 26.04 without recording the
|
||||
roadmap's `amd64` and `arm64` boundary.
|
||||
```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
|
||||
|
||||
- Remove the retained placeholder sentence.
|
||||
- State the supported `amd64` and `arm64` architectures in the rewritten
|
||||
platform summary.
|
||||
- Make no broader README expansion; the existing dependency, interface,
|
||||
deferral, and validation documentation is otherwise aligned.
|
||||
- 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.
|
||||
|
||||
### Resolution
|
||||
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.
|
||||
|
||||
The retained sentence was removed, and the introduction now records the
|
||||
supported `amd64` and `arm64` architectures without expanding the role's
|
||||
claimed scope.
|
||||
## Resolution
|
||||
|
||||
## Finding 2: Give the Isolated Dependency Path Resolution Priority
|
||||
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.
|
||||
|
||||
Severity: low
|
||||
|
||||
`ansible-role-dnd-pipeline/tests/integration` installs the five pinned Git
|
||||
roles into `$test_tmp/roles`, but sets `ANSIBLE_ROLES_PATH` with the workspace
|
||||
parent before that isolated directory:
|
||||
|
||||
```sh
|
||||
export ANSIBLE_ROLES_PATH="$(dirname "$repository_root"):$test_tmp/roles"
|
||||
```
|
||||
|
||||
No conflicting canonical role directories currently exist in the workspace,
|
||||
so the reviewed run used the installed dependencies and passed. Nevertheless,
|
||||
the ordering does not preserve the test's stated invariant if a
|
||||
`rakestraw.<application>` directory is later present in the parent path:
|
||||
Ansible would resolve that checkout before the exact version installed from
|
||||
`requirements.yml`. Feature 0006 requires the integration suite to exercise
|
||||
the same pinned dependency combination delivered to consumers.
|
||||
|
||||
### Required Remediation
|
||||
|
||||
Put the fresh dependency path first while retaining the workspace parent only
|
||||
as the fallback that resolves the pipeline role under test:
|
||||
|
||||
```sh
|
||||
export ANSIBLE_ROLES_PATH="$test_tmp/roles:$(dirname "$repository_root")"
|
||||
```
|
||||
|
||||
Do not add dependency-content comparisons, source-revision assertions, or
|
||||
other verification machinery. Ordinary Ansible role lookup with the correct
|
||||
path precedence is sufficient.
|
||||
|
||||
### Resolution
|
||||
|
||||
The integration driver now places its private dependency directory first and
|
||||
uses the workspace parent only as the fallback for the pipeline role under
|
||||
test. No additional dependency verification was added.
|
||||
|
||||
## Final Validation
|
||||
## Validation
|
||||
|
||||
From `ansible-role-dnd-pipeline`, run:
|
||||
|
||||
```text
|
||||
bash -n tests/integration
|
||||
tests/integration
|
||||
git diff --check
|
||||
git status --short --branch
|
||||
```
|
||||
|
||||
Expected result: dependency bootstrap, syntax checking, production lint,
|
||||
baseline native checks, Narratio configuration validation, both immediate
|
||||
clean repeats, the explicit Seriatim `v1.4.0` outcome, and baseline cleanup all
|
||||
pass. The role repository contains only the intended remediation changes.
|
||||
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, `tests/integration` completed successfully. It installed
|
||||
`community.general` 13.3.0 and all five exact Git role revisions into private
|
||||
temporary paths, passed syntax checking and production-profile ansible-lint,
|
||||
validated the assembled applications through their native interfaces, and
|
||||
reported `changed=0` and `failed=0` on both required immediate repeats. The
|
||||
cleanup trap restored the baseline Seriatim `v1.5.0` deployment. `git diff
|
||||
--check` also passed before this review record was written.
|
||||
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.
|
||||
|
||||
After remediation, `bash -n tests/integration`, `git diff --check`, and the
|
||||
complete `tests/integration` entry point passed again. The rerun installed the
|
||||
exact pinned dependencies into fresh private paths, passed syntax and
|
||||
production-profile lint, completed all native checks, reported `changed=0` and
|
||||
`failed=0` on both required repeats, and restored the baseline suite. No
|
||||
Feature 0006 findings remain.
|
||||
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.
|
||||
|
||||
Reference in New Issue
Block a user