fix(doctor): read the isolation off the bridge, not off the config #39
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#39
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/isolation-ground-truth"
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?
Two bugs, opposite directions.
1. The new assertion cried wolf
setup-host.shrannft list table bridge claudeboxwithout sudo.nftneeds root, so it failed with permission denied and warned about a rule that is demonstrably present:A check that cries wolf is worse than no check. Fixed.
2. Every check so far asked the config, not the kernel
This is the deeper one, and it is the same shape as the original bug.
Boxes still reach each other.
security.port_isolation: "true"is in the profile. So either Incus did not accept it, or it accepted it and the kernel never setisolated onon the VM's tap — in which case every config in sight says the boxes are isolated and they are not. That is exactly how the ACL fooled us: it looked airtight, and it never saw the traffic.So
doctor.shnow reads the kernel's view:isolated onis the fact. The profile key is a claim. If they disagree, we learn it in one second instead of after another ten-minute drill — and we learn that VM taps don't honour the flag, which sends the fix somewhere else entirely.No more mechanisms proposed until the kernel says what it is doing. I have guessed three times (ACL, nft bridge hook, port_isolation) and been wrong three times; the pattern is that I keep reasoning about the mechanism instead of measuring it.
🤖 Generated with Claude Code