mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-11 21:26:44 +00:00
The summary named the filesystem that was picked, never the one the run got. A host that declines - no root, missing tooling, no /dev/zfs - still deploys, and nothing recorded on what, so a red run could not be reproduced. docker_dataroot.sh now ends every path with a verdict that measures the data root with `stat -f -c %T` and reports applied, declined, already-prepared, unchanged or required-but-unavailable. Compose and host write it straight into the step summary; swarm runs the script inside each node, where that variable does not exist, so the playbook lifts the verdict line into the deploy log and report.sh aggregates it afterwards. `hostname` is resolved with a fallback: it is not installed by default on the RedHat family, and under `set -euo pipefail` a bare command substitution would have turned the decline path - which exits 0 - into a hard failure. test-deploy-host.yml gains the `filesystem` input. single-node has been passing it since the per-matrix selection landed, and a reusable workflow that receives an undeclared input fails the whole run with a startup_failure whose only trace is a banner on the run page. The single-node line was skipped in the run that would have shown it. A lint now pairs every local `uses:` with the callee's declared inputs, and also demands that required inputs without a default are supplied. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Compose Configuration 🧩
This directory holds the static configuration assets consumed by the top-level compose.yml of the local development and CI testing stack.
Scope 📋
- The directory MUST contain only files that are bind-mounted into a
service defined in
compose.yml. - The directory MUST NOT host application configuration that belongs to
an Ansible role. Per-role compose payloads live under
roles/<role>/templates/. - The directory MUST NOT host workflow scripts, test fixtures, or
build helpers. Those belong under
scripts/ortests/.
Layout 🗂️
Each compose service that needs static configuration owns a
sub-directory whose name matches the service. New service-specific
config MUST go into the matching sub-directory rather than at the
compose/ root.
For the rules that govern compose.yml itself (env-variable contract,
profile gating, resource caps), see
compose.yml.md.