docs: six VLANs and the untagged LAN, and count them from the table (#209) - #314
Merged
Conversation
…209) `morpheus` routes six 802.1Q VLANs. Six places said seven — one more than #209 found, and the extra one is the reason: the claim in restore-the-firewall.md wraps as "all seven\nVLANs", so a line-by-line search never saw it. #209's own table missed ADR-0008 for the same reason it missed nothing else. Seven is nearly right and the fix keeps what is true in it. `morpheus` routes seven internal networks: six VLANs plus the untagged switch-management LAN at 10.7.7.1/24, which network.md's table has always recorded with a dash because it carries no tag. "Seven networks" is true; "seven VLANs" is not. The runbook gets the wording #209 suggested, because that is the load-bearing one: someone restoring six VLANs from a document saying seven goes looking for a missing one, and the untagged LAN — the segment the switch is managed from, needed precisely when a VLAN is misconfigured — is what gets missed. Both ADRs are corrected in place rather than annotated, which is the opposite of how #161 treated ADR-0008's "long earmarked as the spare". That was an accurate record of a belief that shaped a decision. This was never true: ADR-0002's own table has enumerated exactly six since it was written, so the sentence contradicted the document containing it. Neither decision changes. The count now comes from network.md's segment table, read off the tag column so the untagged LAN stays uncounted and "seven internal networks" stays sayable. check_counts scanned line by line, so every claim in it was blind to a claim that wraps — including the receiver count added for #212 a few commits ago. It now matches against whole files, with a whitespace run that may cross one line break and never a blank line, so a count ending a paragraph cannot bind to a noun starting the next. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #209.
There were six, not five
README.md:29README.md:49docs/network.md:3docs/adr/0002-vlan-segmentation-strategy.md:36docs/adr/0008-place-services-by-data-trust.md:43docs/runbooks/restore-the-firewall.md:16The two the issue missed are the same defect it is about.
restore-the-firewall.md's claim wraps across a line break, so no line-based grep could see it; ADR-0008 was simply not swept. A number asserted six times and enumerated zero times is hard to count by hand, which is the argument for the guard below.What the wording does
Per the issue, seven is nearly right and the fix keeps what is true in it —
morpheusroutes seven internal networks: six VLANs plus the untagged switch-management LAN at10.7.7.1/24, whichnetwork.md's table already records with a dash because it carries no tag.restore-the-firewall.mdgets the issue's own suggested wording, since it is the load-bearing one:The ADRs are corrected in place, not annotated
This is deliberately the opposite of how #161 handled ADR-0008's "long earmarked as the spare", which was left alone. That sentence was an accurate record of a belief that shaped a decision, and rewriting it would have destroyed the reasoning.
This is not that. ADR-0002's own table has enumerated exactly six since the day it was written, so "Seven VLANs" contradicted the document containing it — never true, rather than true-when-written. Correcting it makes the ADR self-consistent. Neither decision changes.
The guard
check_docs.pyderives the count fromnetwork.md's segment table, reading the tag column rather than the row count, so the untagged LAN stays uncounted and "seven internal networks" stays sayable.Seven VLANsin README)seven\nVLANsin the runbook)One thing this changes beyond #209
check_countsscanned line by line, so every claim in it was blind to a claim that wraps — including the receiver count added for #212 a few commits ago. It now matches whole files, with a whitespace run that may cross one line break and never a blank line, so a count ending one paragraph cannot bind to a noun starting the next.That gap is why this issue existed for as long as it did.
Checks
validate.sh— 45 PASS, 0 FAIL, 2 SKIP (the usual environmental two).Worth recording: the first validation run failed, with
docs/network.md:3 claims Seven VLANs; the repository has 6. Agit checkout --cleaning up after a guard test also reverted the uncommitted fix to that file. The check added by this PR caught a regression of the very issue this PR closes, in the PR that closes it.🤖 Generated with Claude Code