fix(drill): read eth0 from inside the box; settle the flaky dns.mode verdict #21
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#21
Loading…
Reference in a new issue
No description provided.
Delete branch "drill/a3-and-flaky-dns"
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?
Run 3 scored 48/49. This PR fixes the last FAIL and one thing that is quietly worse than a FAIL.
The last FAIL: A3 was never a network finding, it was a parse bug
could not read peer's eth0 address— but run 3's own DNS note showspeerresolving to 10.87.0.210. The address was there all along.eth0_ipusedincus list "^peer$", and incus name filters are not regexes, so the anchored form matched nothing. Three runs, one silent parse bug, and the single probe #12 hangs on never fired.Now read from inside the box:
ip -4 -o addr show dev eth0. No CSV quoting, no filter semantics, no ambiguity about which of a Docker-running box's addresses is the one on claudenet.The thing that is worse than a FAIL: B3 flipped between runs
B3 egress under dns.mode=none: BROKEN — design vetoB3 egress under dns.mode=none: intact — safe to shipA verdict that flips is a verdict you cannot design #16 on. Setting
dns.moderestarts the network's dnsmasq, so a probe fired two seconds later can catch it mid-restart — run 2 caught it, run 3 didn't. The probe now distinguishes transient (recovers within 30s → shippable, and #16 must not probe DNS mid-restart) from broken (never recovers → genuine veto), and says which in the answers block.If run 4 reports transient, my #16 comment claiming a design veto on
dns.mode=noneis wrong and I'll retract it — the knob is fine and the run-2 reading was an artifact.Also
docker infowas failing because a fresh exec session may not have picked up thedockergroup — not because of filtering. The check now probes the daemon withsudoand actually pulls and runs a container, which is the thingipv4_filteringcould plausibly break (docker0's egress). That closes B5's last unknown.Re-run, same server:
This run should answer A3 — the last open probe in #15 — and settle B3.
🤖 Generated with Claude Code