rig/commands
dan-claude-bot 00f6351e28 fix(bootstrap): stop telling operators to run bare roles; pin the migration
Two review findings from the bot round on this stack.

BLOCKING (codex-bot, claude-bot -- both, independently). bootstrap-tenant.sh
emits the staging guest's tailnet-join next step at the end of a converge
("box shell -> sudo rig bootstrap workload"), repeats it in usage, and two of
its refusals recite the old machine-role list. Fixed here rather than on the
stacked tenant PR because THIS is the branch that removes the `workload` role
-- shipping it alone would print a next step naming a role that no longer
exists.

None of those four sites is code that ACCEPTS a role, which is why the rename
missed them, and is also what makes them the worse failure. A stale flag dies
immediately with a usage error. A stale next-step is copy-pasted by a human
onto a DIFFERENT box, minutes after the run that printed it reported success,
and dies there with no thread back to the cause.

So test/cli.sh sweeps every shipped script under bin/ and commands/ for
`rig bootstrap <pre-#76 name>` rather than pinning the four known sites: the
next instance of this class will be somewhere else. Proven non-vacuous --
reintroducing the bare `workload` next-step turns the suite red (412/1),
restoring it turns it green (413/0).

NON-BLOCKING (claude-bot). The migration story was documented and untested:
every marker fixture was renamed alongside the code, so nothing asserted what
a real pre-rename box does. A `role=control-plane` fixture now pins both
halves of the promise -- such a box WARNS on the coolify verbs (its marker no
longer names a role that exists) and is never REFUSED. Both halves matter: a
rename that turned this into a refusal would break the exact boxes the
CHANGELOG promises keep working, on the command that installs the control
plane.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-20 00:36:00 +00:00
..
lib fix(users): the host= marker gates the box role, not the incus group 2026-07-19 17:29:20 +00:00
bootstrap-tenant.sh fix(bootstrap): stop telling operators to run bare roles; pin the migration 2026-07-20 00:36:00 +00:00
bootstrap.sh feat(bootstrap)!: machine roles carry a -server suffix; staging-server restored 2026-07-20 00:36:00 +00:00
coolify-backup-install.sh feat(bootstrap)!: machine roles carry a -server suffix; staging-server restored 2026-07-20 00:36:00 +00:00
coolify-install.sh feat(bootstrap)!: machine roles carry a -server suffix; staging-server restored 2026-07-20 00:36:00 +00:00
db.sh feat(db): bring ad-hoc dump/restore on-box as rig db 2026-07-17 15:16:35 +00:00
runner-install.sh fix: headless credential prompts refuse loudly, naming their variable (#42) 2026-07-19 12:15:08 +00:00
runner-remove.sh fix: headless credential prompts refuse loudly, naming their variable (#42) 2026-07-19 12:15:08 +00:00
runner-repoint.sh fix: headless credential prompts refuse loudly, naming their variable (#42) 2026-07-19 12:15:08 +00:00
runner-status.sh fix(runner): install refuses a box registered to another repo 2026-07-13 14:57:28 +00:00
users-apply.sh feat: users apply grants the box tier, not just the socket 2026-07-19 19:10:29 +00:00
users-close-root.sh fix(close-root): the gate judges AllowGroups/DenyGroups too — same door, other hinge 2026-07-18 17:17:39 +00:00
users-status.sh fix(users): review findings — invoker gate, real SSH revocation, StrictModes-shaped close-root gate, trait-aware box role 2026-07-17 20:01:19 +00:00