Skip to content

docs(runbook): §0 had no switch step, and port 15 had moved - #494

Merged
Gerrrt merged 1 commit into
mainfrom
gerrrt/nas-switch-vlan-docs-d1b71b
Sep 17, 2026
Merged

Gerrrt merged 1 commit into
mainfrom
gerrrt/nas-switch-vlan-docs-d1b71b

Conversation

@Gerrrt

@Gerrrt Gerrrt commented Sep 17, 2026

Copy link
Copy Markdown
Owner

build-the-nas.md §0 is written as the complete list of what can be done before
the drives land — BIOS, AMT, the static, the Kea reservation, the firewall
rules, then the proof. It was missing a step that had demonstrably been taken:
smaug's switch port moved from VLAN 30 to VLAN 40.

Read off neo on 2026-09-17: port 15 is untagged VLAN 40 with PVID 40,
smaug's MAC is learned on it in VLAN 40, and the link is up at 1000M full
— the fastest thing answering on that segment, which is what identifies the
port. The map was last read on 2026-09-04 with port 15 still ImaginationLAN's
and matching the documented map exactly, so the move happened between the two
readings. The install on 2026-09-16 is the obvious occasion, and that is written
down as an inference rather than a date, because the move itself was never
recorded.

Why it is a step and not a shrug

§0.3 and §0.4 hold the address twice "because either alone is a single point of
drift". The port is that argument one layer down: a NAS on a port still on the
lab segment takes a lab address, none of §0.5's rules reach it, and "can I
reach the NAS"
fails in a way indistinguishable from a firewall fault
which sends the search to the pfSense UI, where the answer is not. §0.5 warns
about the mirror image of that, a rule appended where it matches nothing and
leaves the question passing for the wrong reason.

The runbook also recorded no port number at all, so a successor re-cabling this
machine had nothing to re-cable it to.

§0.2b, not the §0.4b the issue suggested

The step has to precede §0.3. That step sets a static on 10.0.40.0/24 and
TrueNAS applies it on a test-and-confirm timer, so on a port still carrying VLAN
30 the static loses contact the moment it is applied and rolls itself back —
§0.4b would put the step after the two steps that depend on it.

A letter suffix rather than a renumber, because ADR-0016 and ADR-0040 both
cite this file's §0.5 by number
and ADR-0001 makes accepted ADRs immutable.
§0.3–§0.6 are untouched.

What the step carries

Port 15 on neo, untagged VLAN 40, PVID 40 — read back after saving, since membership and PVID are set separately on this firmware
Cable Yellow. VLAN 40 is yellow and VLAN 30 green (ADR-0009), so a port taken from the lab segment is holding the wrong lead — the trap that ADR exists to close, in the rack rather than on paper
Not port 1 (the trunk to morpheus) or port 3 (the unmanaged shelf switch)
The map stays on the wiki's infrastructure/switching page. Copying it here would be a second copy with nothing checking it (ADR-0026). Only this machine's own port is recorded

A hedge the reading earns: port 15 is a fact about neo, and the MikroTik
bought to replace it (#444) will need its own reading.

§7 gains the assertion, taken in the switch UI rather than over SNMP
ADR-0025 records that Winterfell's only durable path to 10.7.7.2 is SNMP, and
that the 10.0.99.20 → 10.7.7.2:80/tcp pass which would carry an HTTP check
"grants access nothing uses" and is due for removal. A check built on it would
rot.

Blast radius

  • No change to network segmentation or firewall rules
  • No new port published to a VLAN that could not already reach the service
  • No credential added outside secrets/*.sops.yaml

The port move already happened on the switch; this records it. Documentation
only — no host, service or config is touched.

Verification

make lint        PASS  (yamllint, markdownlint-cli2, shellcheck, actionlint, editorconfig-checker)
make check-docs  docs OK — 82 Prometheus + 18 Loki rules, 7 dashboards, 141 panels, 10 assertions

make validate was started and had not cleared the observability promtool test rules stage after several minutes on a host at load 32 — the known local flake
under a busy shared docker daemon. Nothing in a prose edit to one runbook can
reach it, and CI runs it on a clean runner.

Out of scope, filed separately

A three-versus-four rule count contradicting itself in two documents: §0.5's
heading and table say three rules while the status callout says four were
created, and network.md's CasaBonita notes say "the three rules created that
day" in one bullet and "four host-scoped, port-scoped passes" in the next.
Neither is guarded by check_docs.py.

Closes #481

🤖 Generated with Claude Code

`build-the-nas.md` §0 reads as the complete list of what can be done before
the drives land — BIOS, AMT, the static, the reservation, the rules, the proof
— and it was missing a step that had demonstrably been taken: `smaug`'s switch
port moved from VLAN 30 to VLAN 40.

Read off `neo` on 2026-09-17: port 15 is untagged VLAN 40 with PVID 40,
`smaug`'s MAC is learned on it in VLAN 40, and the link is up at 1000M full.
The map was last read on 2026-09-04 with port 15 still ImaginationLAN's and
matching the documented map exactly, so the move happened between those two
readings. The install is the obvious occasion and that is recorded as an
inference rather than a date, because the move itself was never written down.

Adds §0.2b rather than the §0.4b the issue suggested. The step has to precede
§0.3: that step sets a static on 10.0.40.0/24 and TrueNAS applies it on a
test-and-confirm timer, so on a port still carrying VLAN 30 the static loses
contact and rolls itself back. Inserted as a letter suffix rather than a
renumber because ADR-0016 and ADR-0040 both cite this file's §0.5 by number and
ADR-0001 makes accepted ADRs immutable.

The step records this machine's port and not the port map — that lives on the
wiki's `infrastructure/switching` page, and copying it here would be a second
copy with nothing checking it (ADR-0026). It also carries the re-patch: VLAN 40
is the yellow cable and VLAN 30 the green one, so a port taken from the lab
segment is holding the wrong lead, which is the trap ADR-0009 exists to close.

§7 gains the reading that proves it, taken in the switch UI rather than over
SNMP. §0.3–§0.6 are untouched.

Refs #481

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Gerrrt
Gerrrt merged commit 41beef8 into main Sep 17, 2026
3 checks passed
@Gerrrt
Gerrrt deleted the gerrrt/nas-switch-vlan-docs-d1b71b branch September 17, 2026 23:28
Gerrrt added a commit that referenced this pull request Sep 17, 2026
main landed #481's switch step (PR #494) while this branch was doing the same
work. Resolved by taking main's §0.2b wholesale — it is the better section:
it has the cable-colour re-patch (ADR-0009), the TrueNAS test-and-confirm
rollback that explains *why* the order matters, and the port 1 / port 3
exclusions. This branch's own §0.2b is dropped entirely.

Four conflicts, each resolved to keep both intents:

- Header "You will need": main's `neo` web UI and yellow lead, plus this
  branch's correction that smaug's web UI cannot run §2 or §6 and SSH is off.
- Status block: main's, which carries the §0.2b line and the note that it is
  the one step in §0 without a date.
- §0.2b: main's, plus one sentence this branch had and main lacks — that the
  section must stay lettered, because renumbering §0.3 onward would move §0.5,
  which ADR-0016 and ADR-0040 both cite by name and ADRs are immutable.
- §7: main's port-15 bullet, which is better worded (read in the switch UI,
  not inferred from the host having an address), plus this branch's #256
  cross-reference on the 9100 bullet and the packets-versus-evaluations split
  on the tripwire.

main's §0.5 still said "Create the three rules", so this branch's rule-count
correction is unaffected and still needed.

NOTE: main is red independently of this merge — README.md:95-96 claim 41 ADRs
and 26 runbooks against 42 and 27 on disk, and two ADR-0041 files exist
(0041-run-the-crs326-... and 0041-terminate-the-remote-path-...). None of
those files are touched by this branch.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

build-the-nas §0 has no switch step, but port 15 moved from VLAN 30 to VLAN 40

1 participant