ADR-004. An ansible-test sanity that examined nothing is a failure
Status: accepted, 1 September 2026. Still in force.
Context
The first version of this repository kept the collection at the root and
assembled a copy elsewhere for ansible-test. ansible-test sanity ran, exited
0, and examined zero files. The build was green, and it measured nothing.
The failure mode is general, and this repository has hit it more than once: a control whose scope silently collapses to nothing reports the same green as a control that passed. Nothing was measured is not nothing was wrong.
Decision
Three rules, each aimed at that failure:
the collection lives where Ansible requires it, under
ansible_collections/stephrobert/scaleway/.ansible-test,antsibull-docsandansible-playbookwork in place, with no assembled copy. The price is that both the path andgalaxy.ymldeclare the namespace and Ansible reads both, soload_collectionrequires them to agree.a control that examined nothing fails.
scripts/sanity.pyrefuses a run with no target; the package check refuses an archive with no module and aplugins/directory that exists and holds nothing;mise run histoirerefuses to run over an empty file list.a control that cannot say where it strikes fails. The falsification harness refuses an ambiguous pattern rather than mutating the first match: a mutation that does not know where it strikes proves nothing.
Consequences
Every gate in this repository states the size of what it examined, and the
number is read from the run rather than from a constant. 50 module(s) interrogé(s) is the useful half of the message; ok alone is not.
mise run falsify is the general form of the same rule applied to guards: a
guard whose removal leaves every test green is a comment. It runs after any
added guard, validation or refusal.
What this record does not decide
What makes generated documentation acceptable. That is ADR-005.