fix: first-run drill defects — pipefail false FAILs, exec-pty hang, DHCP race #19
No reviewers
Labels
No labels
blocked
blocker:ci-red
blocker:conflict
blocker:drill-pending
blocker:unrequested
bug
claimed
documentation
enhancement
epic
merge-next
needs-triage
ready
release
scope:cli
scope:drill
scope:host
scope:installer
scope:templates
scope:tiers
stale
state:addressing
state:bots-reviewing
state:building
state:needs-human
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: heavy-duty/box#19
Loading…
Reference in a new issue
No description provided.
Delete branch "drill/first-run-fixes"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The first live drill run (on the throwaway server, per #15) surfaced three defects in the drill itself. All three are fixed; none require re-provisioning.
set -o pipefail. Every check shapedclaudebox <refusal> 2>&1 | grep -q 'text'failed even when the text matched: the refusals exit 1/2 by design, andgrep -qSIGPIPEs the left side when it matches early (this is whyinfo | grep -q authed"failed" while the--from drill/authedcheck — matching the last line — passed, and why the boundary trio "failed" while payroll is still running, untouched passed: the refusals were actually working). The pipeline's verdict must be grep's alone; pipefail is removed with a comment so it doesn't come back.nohup python3 -m http.server … &) inherited the exec session's pty, soincus execwaited on it forever. Now abox_listenhelper:</dev/nullon the child (load-bearing) plustimeout 20on the client.could not read peer's eth0 address):wait_boxproves the agent answers, but DHCP hands out the address a few seconds later.eth0_ipnow retries for up to 30s.Also, the one FAIL that may be a real claudebox bug —
'claude --version' failed inside the boxwhileghpassed — now self-diagnoses: the check distinguishes installed but not on exec's PATH (a repo bug; the help promisesclaudebox exec work -- claude --versionverbatim) from not installed (cloud-init issue), and printscloud-init status+ the~/.local/binlisting in the latter case.Confirmed-good from the interrupted run, no re-verification needed: all of phase A (both #15 mechanism checks included), the VM trust boundary, egress, box→host and RFC1918 drops, IPv6-off — and the DNS-enumeration leak is live-confirmed exactly as #12 predicted (
peerresolves from a sibling box).Re-run after merge, on the same server, no cleanup needed — the drill resets its own leftovers:
🤖 Generated with Claude Code