mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-09 12:17:13 +00:00
The script promises at :12-13 that a host which cannot deliver the stated filesystem declines and reports when REQUIRED is false. The zfs branch did not: `zpool create` stood unguarded, so a random pick that the host could not satisfy exited 1. In run 30781723102 that killed the swarm lab bring-up on all five nodes of the nested svc-db-postgres drill (compose/swarm/playbook.yml:84) and cascaded through swarm-zombie to a red Workspace (debian:bookworm) job. The pre-flight could not have caught it: it only tested that /dev/zfs exists as a character device, and on those nodes it did while the module was unusable. Guarding the real operation instead removes the predictor entirely - whatever makes zfs undeliverable now routes through decline, and REQUIRED=true still fails hard there. The teardown is required because a loop device is already attached to the image at that point and decline exits 0. This does NOT fix why the module is unusable on debian nodes. That is pre-existing and was already silent: the mariadb drill in the same job declined zfs on all five nodes and stayed green, while ubuntu applied zfs on ten. The change makes the two paths consistent; it does not restore the lost coverage. To make the loss diagnosable rather than invisible, modprobe's output is no longer discarded into `|| true` but reported and attached to the decline reason, and verdict() now records the reason in the step summary, folded to one line so the markdown list item survives a multi-line stderr. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>