box/host
dan-claude-bot bb51aeeca9 fix: close the silent-EOF class at the two host/ gates it also reached (#111)
The first pass fixed #111 where it was reported — confirm() and
uninstall_confirm() in bin/box — and stopped there, while the same defect
sat at two more destructive gates in this repo:

  · host/revoke-user.sh:50 guards 'box revoke --purge', the prompt whose
    own text says "this cannot be undone";
  · host/teardown-host.sh:31 guards a full host teardown.

Both run under 'set -euo pipefail', so an unguarded 'read' returning
non-zero on EOF ends the run before the 'case' that names the abort —
exit 1, in silence, at the moment the script asked. Each now carries the
guard in its own script's wording rather than importing bin/box's die().

The three drill/ prompts are deliberately untouched: they run under
'set -u' only, so EOF falls through to the '*)' arm and already aborts
out loud. install.sh:65 was already guarded.

What keeps the class closed is a repo-wide sweep in test/cli.sh: every
statement-initial 'read' fed from stdin, in any file that turns on
errexit, must carry a '||' guard — 'while read' loops and '<<<'
herestrings excluded, since neither is a prompt. Removing any of the four
guards makes it fail and name the file:line; it flags nothing else across
the tree's fifteen shell files. The absence of exactly this check is why
the host/ pair was missed the first time.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 21:08:25 +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 feat(setup-host): refuse a claimed subnet, and BOX_SUBNET to move off one (#80) 2026-07-18 19:46:58 +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: close the silent-EOF class at the two host/ gates it also reached (#111) 2026-07-19 21:08:25 +00:00