Skip to content

Add DCM Documentation Release Validation Plan - #27

Merged
testetson22 merged 2 commits into
dcm-project:mainfrom
testetson22:add-doc-review-plan
Oct 20, 2026
Merged

testetson22 merged 2 commits into
dcm-project:mainfrom
testetson22:add-doc-review-plan

Conversation

@testetson22

@testetson22 testetson22 commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Add a reusable acceptance plan for validating DCM documentation
against the control plane, CLI, deployment utilities, environment agent, service
providers, and enhancement sources.

Key Changes

  1. Release validation plan: Adds automated, live-stack, API, CLI, UI,
    environment-agent, provider, enhancement, and published-site checks.
  2. Source-of-truth traceability: Requires recorded repository revisions and
    explicit cross-references to implementation and deployment sources.
  3. Result hygiene: Ignores dated test-result artifacts so execution evidence
    can remain local or be attached separately without adding generated files to
    the documentation PR.

Documentation release validation (test-plans/documentation-release-validation.md)

Reusable test cases covering repository/source inventory, Hugo quality checks,
local setup, CLI discovery, catalog and policy workflows, environment-agent
routing, provider resources, UI/troubleshooting, authentication, enhancements,
regression review, and published-site smoke validation.

Test Flow

┌────────────────────────────────────────────────────────────────────┐
│                 Documentation Release Validation                    │
├────────────────────────────────────────────────────────────────────┤
│                                                                    │
│  Source inventory ──┐                                             │
│  Hugo/format/spell ─┼──> Generated site ──> Published-site smoke  │
│  Link validation ───┘                         validation           │
│                                                                    │
│  CLI/config ────────┐                                             │
│  Catalog/policy ────┼──> Control plane ──> Environment agent ──> SP│
│  Instance lifecycle ┘          │                 │                │
│                                └── Agent/API state ───────────────┘│
│                                                                    │
│  Source revisions: control plane, CLI, utilities, agent, provider,│
│  enhancements, and documentation                                  │
└────────────────────────────────────────────────────────────────────┘

CI Impact

  • No application or runtime CI behavior changes.
  • Existing documentation build, formatting, and spelling checks remain the
    validation baseline.
  • The plan adds manual/live release checks but does not automatically execute a
    deployment or provider environment in CI.

Validation Run

Check Result
make build PASS; existing Hugo deprecation warnings only
make check-format PASS
make check-spell PASS
git diff --check PASS

Checklist

  • Release inputs and source-of-truth repositories defined
  • Automated site quality checks defined
  • Environment-agent and provider workflows defined
  • Catalog, policy, and instance workflows defined
  • Authentication and credential-handling checks defined
  • Remote enhancement-link checks defined
  • Published-site smoke validation defined
  • Current branch build, format, spelling, and whitespace checks passed

Summary by Sourcery

Establish a reusable, source-pinned acceptance process for validating DCM documentation against current implementations and deployed behavior.

New Features:

  • Add a reusable documentation release-validation plan covering automated site checks, live DCM workflows, source traceability, authentication, enhancement rendering, and published-site verification.

Enhancements:

  • Define release acceptance criteria, execution order, evidence requirements, cleanup expectations, and discrepancy handling for documentation validation.

Documentation:

  • Document validation procedures for control-plane, CLI, environment-agent, provider, UI, troubleshooting, and enhancement workflows.

Tests:

  • Add comprehensive documentation acceptance test cases spanning repository inventory, Hugo quality, CLI and API workflows, resource lifecycle, provider routing, authentication, regression review, and deployed-site smoke checks.

Chores:

  • Ignore dated documentation validation result artifacts so execution evidence is kept out of documentation changes.

Signed-off-by: Thomas Stetson <tstetson@redhat.com>
@qodo-code-review

qodo-code-review Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (1) 📘 Rule violations (0) 📜 Skill insights (0)

Grey Divider


Action required

1. Provider checks fail on current docs 🐞 Bug ≡ Correctness
Description
DOC-004 rejects the entire dcm sp provider command prefix even though the supported documentation
still uses its list and get subcommands. The check therefore fails this repository’s current
User Guide and the duplicated acceptance criterion cannot pass until unrelated documentation is
rewritten.
Code

test-plans/documentation-release-validation.md[R165-168]

+5. Confirm documented command names and flags using `dcm --help`, including
+   `dcm agent list` and `dcm agent get` where documented.
+6. Fail the test if any supported page still uses a removed `dcm sp provider`
+   command.
Evidence
The plan requires failure whenever a supported page contains the dcm sp provider prefix, while the
repository’s User Guide index identifies Providers as supported documentation and the Providers page
documents list and get commands. The CLI configuration page also documents `dcm sp provider list
-o json`, so the gate is guaranteed to fail on existing supported content.

test-plans/documentation-release-validation.md[165-168]
test-plans/documentation-release-validation.md[365-368]
content/docs/user-guide/_index.md[10-14]
content/docs/user-guide/providers.md[18-65]
content/docs/user-guide/cli-configuration.md[67-72]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

Issue description
The validation gate rejects every `dcm sp provider` command, while the current supported User Guide documents valid `list` and `get` commands under that prefix. This makes the release plan fail against the repository it is intended to validate.

Fix Focus Areas
- test-plans/documentation-release-validation.md[165-168]
- test-plans/documentation-release-validation.md[365-368]
- content/docs/user-guide/providers.md[18-65]

Recommended Fix
Replace the prefix-wide prohibition with an explicit list of commands confirmed to be removed by the recorded CLI revision, or update the check to validate documented commands against `dcm --help` and the CLI specification. Keep the acceptance criterion consistent with that narrower check.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Dismiss ↗ | View ↗


2. Enhancement results can use moving code ✓ Resolved
Description
DOC-011 records an Enhancements revision but the configured enhancementsBaseURL points at the
mutable main branch, so Hugo fetches whatever content is present there at build time. A branch
update between recording the revision and building the site can make the reported validation
evidence describe different enhancement content from the generated site.
Code

test-plans/documentation-release-validation.md[R286-289]

+1. Verify the configured enhancement base URL resolves at the recorded
+   enhancements revision.
+2. Compare the enhancement index links with the source repository directory.
+3. Build with network access and inspect representative enhancement pages for
Evidence
The new plan requires an exact Enhancements revision and says the fetched content must represent
that revision, but the repository configuration uses main. The remote shortcode consumes that URL
directly with resources.GetRemote, so no recorded revision is applied during the build.

test-plans/documentation-release-validation.md[21-39]
test-plans/documentation-release-validation.md[286-299]
hugo.yaml[52-52]
layouts/shortcodes/remoteMD.html[1-6]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

Issue description
The release plan requires validation against a recorded Enhancements revision, but the site fetches remote Markdown from the moving `main` branch. The build therefore cannot prove that the generated content corresponds to the revision recorded in the result file.

Fix Focus Areas
- test-plans/documentation-release-validation.md[286-299]
- hugo.yaml[52-52]
- layouts/shortcodes/remoteMD.html[1-6]

Recommended Fix
Change the release procedure to build with a revision-pinned enhancement base URL or add a documented, reproducible override that substitutes the recorded commit into the URL before running Hugo. Require the resolved URL or commit-pinned configuration to be captured in the results.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

3. Enhancement links stay site-relative ✓ Resolved
Description
DOC-011 requires relative and root-absolute enhancement links to be rewritten to recorded GitHub
source URLs, but the remoteMD shortcode only strips front matter and headings before passing
content to RenderString. Builds therefore have no implementation or procedure-defined
transformation that can satisfy the expected source-link behavior, and the published-site check
repeats the same unsupported assumption.
Code

test-plans/documentation-release-validation.md[R289-295]

+3. Build with network access and inspect representative enhancement pages for
+   title, headings, code blocks, images, and internal links.
+4. Verify rewritten relative and root-absolute enhancement links resolve to the
+   recorded GitHub source revision and return success.
+5. Verify that generated pages contain no site-root `/enhancements/*.md` links.
+6. Verify a missing or malformed remote enhancement fails visibly rather than
+   silently publishing an empty page.
Evidence
The plan requires rewritten links and rejects generated site-root Markdown links. The shortcode’s
only transformations remove front matter, the first H1, and Mermaid card syntax before directly
rendering the content; it contains no URL or link rewriting logic, while enhancement wrappers pass
only relative Markdown paths.

test-plans/documentation-release-validation.md[289-299]
test-plans/documentation-release-validation.md[345-351]
layouts/shortcodes/remoteMD.html[7-21]
content/docs/enhancements/acm-cluster-sp.md[7-7]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

Issue description
The plan asserts that fetched enhancement links are rewritten to revision-specific GitHub URLs, but the current shortcode renders fetched Markdown without rewriting relative or root-absolute links. The local and published-site checks cannot reliably validate this behavior as written.

Fix Focus Areas
- test-plans/documentation-release-validation.md[289-299]
- test-plans/documentation-release-validation.md[345-351]
- layouts/shortcodes/remoteMD.html[7-21]

Recommended Fix
Either implement and document deterministic link rewriting using the pinned enhancement revision, then validate the rewritten output, or change DOC-011 and DOC-014 to assert the link behavior that the site actually supports. Do not retain an expected result that is not produced by the rendering path.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


4. Dated results can enter the PR ✓ Resolved
Description
The new ignore rule matches only filenames containing -test-results-, while the evidence section
merely says to create a dated result file and does not prescribe that naming pattern. An operator
who follows the documented instruction with a natural name such as
documentation-release-validation-2026-10-19.md will create a generated artifact that remains
visible to Git and can be committed accidentally.
Code

.gitignore[11]

+test-plans/*-test-results-*.md
Evidence
The repository ignores only direct child Markdown files whose names contain -test-results-, but
the new plan instructs users only to create a dated file beside the plan and gives no required
filename. The documented workflow therefore does not ensure that generated results are ignored.

.gitignore[11-11]
test-plans/documentation-release-validation.md[387-390]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

Issue description
The ignore rule depends on a filename pattern that the result-file instructions never specify. Dated validation artifacts can therefore remain unignored despite the PR’s stated result-hygiene goal.

Fix Focus Areas
- .gitignore[11-11]
- test-plans/documentation-release-validation.md[387-390]

Recommended Fix
Define an exact ignored result filename pattern in the Evidence And Results section, such as `test-plans/documentation-test-results-YYYY-MM-DD.md`, and use that same pattern in `.gitignore`. Alternatively, broaden the ignore rule only to the explicitly documented result-file naming convention.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Context sources
Review mode: Auto: 🚀 Fast: Localized documentation and harmless ignore-rule change; low behavioral risk.

Grey Divider

Tip of the day
💡 Did you know, you can open the rule or relationship behind a finding in one click

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

Comment thread .gitignore Resolved

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've found 9 issues

Prompt for AI Agents
Please address the comments from this code review:

## Individual Comments

### Comment 1
<location path="test-plans/documentation-release-validation.md" line_range="273-274" />
<code_context>
+
+1. Follow the UI page to locate the documented route or Backstage path.
+2. Confirm the page loads and exposes the documented DCM navigation.
+3. Introduce a disposable service failure and follow the troubleshooting
+   commands for logs, status, and restart.
+4. Restore the service and verify the health check recovers.
+
</code_context>
<issue_to_address>
**Shared services stay disrupted**

When DOC-010 runs against a shared stack, or execution stops after introducing the failure but before restoring the service, the troubleshooting steps take a shared service down, interrupting other users; if execution stops before step 4, the service remains failed and later checks also run against the disrupted stack.

Run this test on an isolated stack and ensure the service is restored even when execution is interrupted.

Also at `test-plans/documentation-release-validation.md:275`.
</issue_to_address>

### Comment 2
<location path="test-plans/documentation-release-validation.md" line_range="197" />
<code_context>
+**Steps:**
+
+1. Follow `Create Placement Policy` using the documented policy file.
+2. Create, list, get, update, and delete a disposable policy.
+3. Exercise any documented filter, ordering, enabled-state, or merge-patch
+   examples.
</code_context>
<issue_to_address>
**Global policy redirects other placements**

When DOC-006 is run against a control plane shared with other users, the documented policy is `GLOBAL` and always selects `kubevirt-service-provider`, so creating and exercising it redirects other users’ instance placements on the same control plane during validation.

Require an isolated disposable control plane for DOC-006, or use a policy fixture scoped so it cannot affect other users’ placements.
</issue_to_address>

### Comment 3
<location path="test-plans/documentation-release-validation.md" line_range="183-184" />
<code_context>
+2. Create the item using the documented CLI command and optional ID.
+3. Retrieve it in table, YAML, and JSON output.
+4. Verify the item through the catalog-item API or control-plane state.
+5. Repeat the corresponding User Guide list, filter, pagination, and delete
+   examples where the release supports them.
+
+**Expected:** The YAML schema is accepted, the created resource contains the
</code_context>
<issue_to_address>
**Dependent checks lose prerequisites**

When the plan is followed in order and the documented delete operations are supported, dOC-005 can delete the catalog item before DOC-007 creates an instance from it, and DOC-006 deletes the policy before its placement check; DOC-009 also requires get checks without reseeding these records. The dependent checks then fail on missing resources or IDs.

Reorder the checks so dependent workflows run before deletes, or recreate the required resources before each dependent check.

Also at `test-plans/documentation-release-validation.md:197-201`, `test-plans/documentation-release-validation.md:213`, `test-plans/documentation-release-validation.md:222`, `test-plans/documentation-release-validation.md:255`.
</issue_to_address>

### Comment 4
<location path="test-plans/documentation-release-validation.md" line_range="83" />
<code_context>
+  authentication flow; never record secret values in results.
+
+Live tests must use disposable IDs and clean up created policies, catalog items,
+instances, providers, and containers after execution.
+
+## Execution Order
</code_context>
<issue_to_address>
**Registered agents remain after validation**

When an agent registration succeeds during DOC-008 or DOC-012, the cleanup requirement covers providers but not registered agents. A successful registration therefore leaves agent records in the control plane; later runs can encounter stale agents or route placement checks to an earlier run's agent.

Include registered agents in cleanup and verify that each run removes only the agent it created.

Also at `test-plans/documentation-release-validation.md:236-238`, `test-plans/documentation-release-validation.md:311-314`.
</issue_to_address>

### Comment 5
<location path="test-plans/documentation-release-validation.md" line_range="145-146" />
<code_context>
+1. Follow `Getting Started > Local Setup` from a clean disposable workspace.
+2. Clone the documented control-plane and CLI repositories.
+3. Start the documented core services and environment agent with the supported
+   SP profile.
+4. Run the documented `podman-compose ps`, control-plane health, agent health,
+   and agent provider-list checks.
+5. Build the CLI using the documented command and run `dcm version`.
</code_context>
<issue_to_address>
**Agent checks lack documented procedures**

When the plan is run against the current documentation set, the repository has no documented agent setup or `dcm agent list/get` examples, so operators cannot follow these steps as written and DOC-003 and DOC-009 cannot pass using the published instructions.

Add the missing agent setup and CLI instructions, or make the test explicitly report missing agent documentation as a gap rather than require undocumented steps.

Also at `test-plans/documentation-release-validation.md:254-255`.
</issue_to_address>

### Comment 6
<location path="test-plans/documentation-release-validation.md" line_range="167-168" />
<code_context>
+4. Run the documented shell completion commands for the supported shells.
+5. Confirm documented command names and flags using `dcm --help`, including
+   `dcm agent list` and `dcm agent get` where documented.
+6. Fail the test if any supported page still uses a removed `dcm sp provider`
+   command.
+
+**Expected:** Configuration, precedence, output formats, completion commands,
</code_context>
<issue_to_address>
**Current guides fail the release gate**

When the validation plan is run against the current supported documentation without first resynchronizing those guides, dOC-004 rejects the `dcm sp provider` commands still shown in `content/docs/user-guide/providers.md:18-21`, and DOC-008 flags the multiple-provider workflow in `content/docs/getting-started/register-another-provider.md:15-49`. A release run against the current supported guides therefore fails these checks unless it also performs the broader documentation resynchronization that the plan says is outside this gate.

Either include the affected guide updates in this release gate or scope these checks to pages actually covered by the release.

Also at `test-plans/documentation-release-validation.md:240-242`.
</issue_to_address>

### Comment 7
<location path="test-plans/documentation-release-validation.md" line_range="130-131" />
<code_context>
+3. Run `make check-spell`.
+4. Inspect generated output for Hugo errors, unresolved shortcodes, missing
+   images, and unexpected draft or future-dated pages.
+5. Check internal links and anchors in the generated site, including links
+   generated by the enhancement content integration.
+
+**Expected:** All commands pass; generated pages contain no broken internal
</code_context>
<issue_to_address>
**Generated links go unchecked**

When a release operator follows the listed automated checks without independently selecting a link checker, step 5 names no tool or command, and the Makefile has no link-check target, so no prescribed check verifies generated-site links or anchors. The build can pass with broken links, leaving DOC-002 without a defined link-check result.

Specify a reproducible link-check command and the result that causes the release check to fail.
</issue_to_address>

### Comment 8
<location path="test-plans/documentation-release-validation.md" line_range="253-254" />
<code_context>
+
+**Steps:**
+
+1. For Agents, Service Types, Catalog Items, Catalog Item Instances, Policies,
+   and Service Provider Resources, run at least one list and get example.
+2. Run every documented optional flag at least once: filters, pagination, output
+   format, ordering, and `--show-deleted` where applicable.
</code_context>
<issue_to_address>
**Provider CLI coverage is omitted**

When the release includes provider list/get documentation, dOC-009 requires list/get checks for several user-guide areas but omits Providers, so changes to the supported provider list/get workflow can go untested even when obsolete commands have been removed.

Add Providers to DOC-009 and exercise the supported list/get commands or API workflow with valid IDs and output examples.
</issue_to_address>

### Comment 9
<location path="test-plans/documentation-release-validation.md" line_range="389" />
<code_context>
+
+## Evidence And Results
+
+Create a dated result file beside this plan using the following structure:
+
+```text
</code_context>
<issue_to_address>
**Result files escape ignore rule**

When an operator names the dated result file without the literal `-test-results-` substring, the `.gitignore` pattern `test-plans/*-test-results-*.md` does not match the result file, so Git can include the generated evidence in the documentation PR.

Specify a result filename convention that includes `-test-results-`.

Also at `test-plans/documentation-release-validation.md:390`.
</issue_to_address>

Sourcery assessment

Approval pending. 9 findings to address first.

Blocking findings: test-plans/documentation-release-validation.md:274, test-plans/documentation-release-validation.md:197, test-plans/documentation-release-validation.md:184, test-plans/documentation-release-validation.md:83, test-plans/documentation-release-validation.md:146, and 4 more


Sourcery is free for open source - if you like our reviews please consider sharing them ✨

Signed-off-by: Thomas Stetson <tstetson@redhat.com>

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sourcery assessment

Approved.

@testetson22
testetson22 merged commit bc538f5 into dcm-project:main Oct 20, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant