Prepare the Seriatim simplification sprint
This commit is contained in:
@@ -29,14 +29,23 @@
|
||||
`community.general` is an approved, stable dependency and its modules may be
|
||||
selected freely when appropriate; declare and pin the collection wherever a
|
||||
role or collection depends on it.
|
||||
- Trust the documented contract of each Ansible module, including its
|
||||
idempotence and change detection.
|
||||
- Gather state only when the result controls necessary behavior that the
|
||||
responsible module cannot determine. Fingerprints, checksums, sidecar state,
|
||||
manual drift detection, and speculative recovery paths require an explicit
|
||||
acceptance criterion and rationale. Do not precede a declarative module with
|
||||
a probe or recreate its internal logic unless a concrete requirement cannot
|
||||
be expressed by the module itself.
|
||||
- Do not strengthen the specification. Implement the requested invariants
|
||||
without inventing additional guarantees for integrity, provenance, drift
|
||||
recovery, corruption detection, rollback, or similar behavior.
|
||||
- Prefer convergence over state inspection. Declare what should be true and
|
||||
let the relevant module reconcile it.
|
||||
- Trust Ansible's abstraction boundary. A module that manages state owns the
|
||||
checks necessary to manage that state. Inspect it beforehand only when the
|
||||
observed state is independently required.
|
||||
- Complexity requires a requirement. Every additional task, conditional,
|
||||
registered variable, or state probe must correspond to behavior the role is
|
||||
required to provide.
|
||||
- Persisted role-private state is a design smell. Fingerprints, checksum
|
||||
databases, stamps, manifests, and similar bookkeeping require specific
|
||||
justification.
|
||||
- **Assume convergence first.** Before adding machinery for an edge case,
|
||||
determine whether rerunning the ordinary desired-state operations already
|
||||
repairs it.
|
||||
- Consider whether a conditional task or a notified handler best expresses the
|
||||
dependency. A `when` condition keeps triggers visible at the action site but
|
||||
grows with their number. Notifications keep the action independent of the
|
||||
|
||||
Reference in New Issue
Block a user