box/host
dan-claude-bot b3fa94a7d4 fix: teardown-host refuses a terminal-less run instead of aborting mute
host/teardown-host.sh had no `[ -t 0 ]` check before its confirmation
prompt. Without --yes/BOX_YES and without a terminal — CI, a pipe, a
nohup — it fell into `read`, took the instant EOF and exited 1 saying
only "aborted": a refusal naming neither the cause nor the override, in
the most destructive script in the tree.

It now refuses with the override named, exit 2 — "you invoked this
wrong", matching host/revoke-user.sh --purge and install.sh's confirm(),
versus 1 for "you were asked and you said no".

The gate sits below the --yes/BOX_YES arm, so consent given
non-interactively still runs headless, and above the first incus call,
so the refusal needs no daemon — which is what lets test/cli.sh drive it
for real instead of grepping for it.

Refs #113
2026-07-20 14:45:23 +00:00
..
box-firewall.service Give box-firewall.service RemainAfterExit so its state means something 2026-07-17 14:05:23 +00:00
box-firewall.sh fix: the fresh-UFW test block no longer flakes on a missing log 2026-07-19 18:17:42 +00:00
grant-user.sh fix: grant the 'incus' membership to incus-admin members too (#101 review) 2026-07-19 17:33:37 +00:00
migrate-host.sh refactor(templates): the tenant seeds carry rig's -box family suffix 2026-07-20 00:01:29 +00:00
revoke-user.sh fix: close the silent-EOF class at the two host/ gates it also reached (#111) 2026-07-19 21:08:25 +00:00
setup-host.sh feat(setup-host): auto-pick a free subnet — nested box-in-box, zero flags (#80) 2026-07-18 21:22:00 +00:00
teardown-host.sh fix: teardown-host refuses a terminal-less run instead of aborting mute 2026-07-20 14:45:23 +00:00