8.3 KiB
Test Suite Audit Plan
Status: complete
Objective
Audit the implemented integration tests for the three completed standalone roles against the workspace's classical, state-based testing policy. The audit will identify tests that protect stable role-owned behavior, tests that should be simplified or replaced, and tests whose maintenance cost exceeds their value.
This is a review plan, not authorization to change role code or test suites. Any proposed remediation will be reviewed before a separate implementation plan is prepared.
Scope
The audit covers the test harnesses, playbooks, fixtures, inventories, and test-related documentation in:
ansible-role-seriatimansible-role-auditaansible-role-notarius
Production role tasks, defaults, templates, and metadata may be inspected when needed to determine whether a test protects public role behavior or merely repeats an implementation detail. They are not remediation targets during the audit.
The audit does not cover the proof-of-concept rakestraw-ansible role, the
suite-level role, or the collection. Those projects do not form part of the
three completed standalone-role test suites.
Governing Standard
Apply the normative testing house style in docs/testing.md. In
particular, the audit will favor tests that exercise the role through its
public variables and inspect meaningful final application behavior. It will
disfavor tests that:
- freeze current defaults or other intentionally changeable values;
- assert task names, order, individual task status, or other execution traces;
- independently re-prove the documented postconditions of trusted Ansible modules;
- exhaustively exercise self-evident assertions or equivalent low-value combinations; or
- duplicate another test without protecting a distinct requirement or plausible regression.
An immediate second convergence with no reported changes remains required for each role. An explicitly selected version may be verified through the application's native interface; the role's current default version may not be treated as a permanent expected value.
Classification Rubric
Classify every behavioral test case, including each materially distinct case embedded in a shared playbook or shell harness, as one of the following:
- Retain: protects stable, role-owned behavior through an externally meaningful outcome.
- Simplify: protects useful behavior but includes redundant assertions, duplicated setup, or implementation coupling that can be removed.
- Replace: addresses a valid requirement through an unstable or indirect assertion and should be expressed as a state-based outcome instead.
- Remove: tests a mutable default, trusted module behavior, an implementation trace, or behavior without a stated requirement or plausible regression.
- Add: identifies a material role-owned behavior that currently lacks representative coverage.
Each classification must state the behavior at issue and the reason for the recommended action. File length, test count, and aesthetic preference are not sufficient reasons by themselves.
Audit Record
Write the completed review to
docs/roadmap/test-suite-audit-findings.md. Record each finding in a table with
these fields:
| Repository | Test or case | Behavior protected | Classification | Recommended action | Rationale |
|---|
The report must also provide a proposed lean target suite for each role and identify any shared harness behavior that should be made consistent across the three repositories. Recommendations to remove coverage must state whether the behavior remains covered elsewhere or why it does not warrant coverage.
Stage 1: Establish the Baseline
-
Confirm that the workspace and all three role repositories begin clean.
-
Inventory every test entry point, playbook, fixture, inventory, helper, and test-related README statement in scope.
-
Run each existing integration entry point without modification:
(cd ansible-role-seriatim && tests/integration) (cd ansible-role-audita && tests/integration) (cd ansible-role-notarius && tests/integration) -
Record success or failure, the scenarios exercised, and any environmental assumptions needed to reproduce the result. A pre-existing failure is audit evidence, not permission to repair it during this stage.
Completion criterion: the report contains a reproducible baseline and a complete test inventory for all three roles.
Stage 2: Audit Seriatim
- Map every Seriatim test case to a documented public behavior or classify it as lacking one.
- Review version selection, caller-supplied build tooling, rebuild behavior, metadata handling, platform validation, and repeat convergence using the common rubric.
- Identify assertions that inspect Ansible execution details or separately verify state already owned by trusted modules.
- Propose the smallest representative Seriatim suite that preserves valuable regression protection.
Completion criterion: every Seriatim case is classified and the report states the proposed retained, revised, removed, and missing coverage.
Stage 3: Audit Audita
- Map every Audita test case to a documented public behavior or classify it as lacking one.
- Review explicit version selection, native application verification, configuration rendering, omission of null settings, preservation of falsey values, platform validation, and repeat convergence.
- Distinguish tests of the role's configuration decisions from tests that
merely repeat
template,file,git, or package-module guarantees. - Propose the smallest representative Audita suite that preserves valuable regression protection.
Completion criterion: every Audita case is classified and the report states the proposed retained, revised, removed, and missing coverage.
Stage 4: Audit Notarius
- Map every Notarius test case to a documented public behavior or classify it as lacking one.
- Review explicit version selection, native application verification, optional configuration rendering, falsey values, caller-composed pipeline mappings, platform validation, and repeat convergence.
- Distinguish tests of role-authored mapping and rendering behavior from assertions about trusted module mechanics or the current implementation layout.
- Propose the smallest representative Notarius suite that preserves valuable regression protection.
Completion criterion: every Notarius case is classified and the report states the proposed retained, revised, removed, and missing coverage.
Stage 5: Reconcile the Three Suites
- Compare classifications across roles so equivalent patterns receive equivalent treatment, while preserving genuine application differences.
- Identify duplicated harness machinery, inconsistent terminology, and documentation that describes implementation details or mutable defaults as promised test behavior.
- Separate static validation such as syntax checking and linting from behavioral integration coverage.
- Produce a repository-by-repository remediation proposal ordered by value and dependency. Do not propose a shared abstraction unless it removes demonstrated duplication without obscuring the individual role suites.
- Confirm that the proposed target for every role still includes a default or representative convergence, an immediate clean second convergence, and focused coverage of each retained role-owned behavior.
Completion criterion: the findings report is internally consistent, gives a lean target suite for each repository, and contains enough detail to support a later implementation plan without leaving test-policy decisions to the executor.
Audit Completion Criteria
The audit is complete when:
- every implemented behavioral case across all three repositories has an explicit classification and rationale;
- baseline results and reproduction commands are recorded;
- proposed removals do not silently discard coverage of a required public behavior;
- proposed additions are limited to material role-owned behavior;
- README and harness-documentation corrections are identified alongside test changes;
- no production or test implementation has been changed during the audit; and
- the findings have been reviewed before any remediation plan is written to
docs/roadmap/implementation.md.