forked from heavy-duty/box
The old tmux check hardcoded blank/claude/codex/grok, so a new template could ship without CI ever reading it. The suite now discovers templates/*/ and, for each: drives the REAL load_template (extracted from bin/box, the same trick box_tier and install.sh's DEST block get) so box.env must parse against the actual allowlist with BOX_IMAGE + BOX_USER present; asserts user-data.yaml exists, declares #cloud-config, and is well-formed YAML (python3+pyyaml, skipped loudly where absent — CI has both); and keeps the #65 tmux contract. Fixtures prove the dies a green parse cannot: an unknown key (no template grows a network) and a missing required key. Staging-specific: both boot demands proven through the parser, docker + rig preinstalled, and a creds-free refusal grep — no tailscale/authkey/ssh in effective cloud-init lines; rig installs those inside the guest. Plus the cmd_new half, grepped the way the expose guard is: the REQUIRE_VM refusal orders after pick_mode, and boot.autostart is stamped only under the T_AUTOSTART guard. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| cli.sh | ||