Repository navigation
docs(adr): plan the NAS on VLAN 40 — pull into it, never push out (#95) - #254
Merged
Merged
Conversation
ADR-0016 answers the four questions #95 raised before hardware: capacity and redundancy, the firewall rule written down before it is created, where the backups go, and what "terminal" means for CasaBonita afterwards. Reading the enforced ruleset on morpheus first — ADR-0013's method — changed two of the answers. 50→40 is not a rule to add. Hicks and Winterfell each carry an explicit "Block access to CasaBonita" above their catch-all, so the pass has to be ordered in front of a deny. One appended where new rules naturally land would match nothing, which is the fault ADR-0013 found in "Allow Hicks access to ImaginationLAN". And one rule is not enough. Every other host here is monitored and backed up by pushing, so a NAS built like the others would have its Alloy agent initiating 40→99 — the first upward path in the estate, and the end of the property ADR-0008 claims to keep. The ADR reverses the direction instead: node_exporter scraped rather than Alloy pushing, the metadata backup pulled by prometheus rather than sent. That costs the NAS its logs, because Loki has no pull and its ingest is unauthenticated; the gap is named rather than absorbed. Three rules, all inbound, all host- and port-scoped, written down and deliberately not created — a pass to an address with nothing behind it is a rule nobody can test. Terminal survives in the direction that carries it: CasaBonita stops being terminal inbound and stays terminal outbound, with #223's tripwire untouched. Capacity buys a four-bay chassis with two bays filled and a ZFS mirror. The bay count is the half that cannot be changed later; the library's size is a number nobody has. The library itself is not backed up — that is ADR-0008's placement decision arriving at its end, not an oversight. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
There was a problem hiding this comment.
🟡 Changes recommended
There are documentation clarity/correctness issues in the updated roadmap and network text that could mislead readers about directionality and intent.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Adds a new ADR documenting the planned NAS placement on VLAN 40 (CasaBonita) and updates existing documentation to reflect that plan, without making any infrastructure/config changes.
Changes:
- Add ADR-0016 describing the NAS plan, directionality constraints, and proposed firewall rule intent.
- Update the roadmap entry for #95 to reference ADR-0016 and summarize the key conclusions.
- Update the CasaBonita section in
docs/network.mdto include the planned NAS host/IP and link to ADR-0016.
File summaries
| File | Description |
|---|---|
| docs/roadmap.md | Expands the #95 roadmap item with ADR-0016 reference and a detailed summary of the revised plan. |
| docs/network.md | Adds planned NAS hostname/IP for VLAN 40 and explains intended impact relative to existing segmentation docs. |
| docs/adr/0016-open-casabonita-inward-and-keep-it-terminal-outward.md | New ADR capturing the NAS-on-VLAN-40 decision, constraints, and operational implications. |
Review details
- Files reviewed: 3/3 changed files
- Comments generated: 2
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Comment on lines
+184
to
+189
| - The planned NAS lands here — `zion` at `10.0.40.30`, decided by | ||
| [ADR-0016](adr/0016-open-casabonita-inward-and-keep-it-terminal-outward.md) | ||
| and not yet bought. It does not change the *Reaches* column: nothing on this | ||
| segment will initiate anywhere, and the three rules that ADR writes down all | ||
| let a more trusted segment reach **in**. That is the direction this row | ||
| records, and it is the one that is unchanged. |
Comment on lines
+194
to
+197
| property ADR-0008 claims to keep. The ADR reverses the direction instead — | ||
| `node_exporter` scraped rather than Alloy pushing, the metadata backup pulled | ||
| by `prometheus` rather than sent — which costs the NAS its logs, because Loki | ||
| has no pull and its ingest is unauthenticated. Three rules, all inbound, all |
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.
Plans the NAS, and builds nothing. Closes #95 by answering its four questions in
ADR-0016.
The starting point was the enforced ruleset on
morpheusrather than the proseabout it — ADR-0013's method — and it changed two of the answers.
50→40 is not a rule to add
Hicks and Winterfell each carry an explicit Block access to CasaBonita above
their catch-all:
So the pass has to be ordered in front of a deny, not appended. One added
where new rules naturally land — next to Allow internet — would match nothing,
which is exactly the fault ADR-0013 found in Allow Hicks access to
ImaginationLAN, a rule that has done nothing since it was written. The failure
mode is a firewall that looks configured and a NAS that is unreachable.
One rule is not enough
Every other host in the estate is monitored and backed up by pushing —
Saruman,oracleandprometheusall run Alloy agents thatremote_writeto10.0.99.20:9090and push to:3100. Build the NAS the way the others arebuilt and its agent initiates 40→99: the first upward path in the estate, and
the end of the property ADR-0008 claims to keep when it says "nothing untrusted
ever initiates upward".
The ADR reverses the direction instead.
node_exporterscraped over99→40:9100 rather than Alloy pushing; the metadata backup pulled by
prometheusover 99→40:22 rather than sent. Three rules, all inbound, all host-and port-scoped — and deliberately not created, because a
passto an addresswith nothing behind it is a rule nobody can test.
That costs the NAS its logs. Loki has no pull, and its ingest is unauthenticated
(ADR-0012), so a 40→99:3100 rule would not just move logs — it would let
anything reaching the NAS write to the log store the rest of the estate is
judged by. The NAS gets metrics and no logs, which makes it the one host whose
compromise is invisible. Named rather than absorbed.
The rest
half that cannot be changed later; the library's size is a number nobody has,
and an ADR that names a drive capacity is wrong within a year.
the ADR says out loud that a mirror is not a backup.
and that is the whole reason ADR-0008 allowed it on the segment with the
televisions;
oraclehas 67 GB behind a 100 Mb/s NIC and could not hold it ifit were wanted. The Jellyfin database and configuration are, encrypted on the
NAS with
age -rso a VLAN 40 host holds ciphertext and no key.direction. CasaBonita stops being terminal inbound and stays terminal
outbound; TerminalSegmentReachedInternalNetwork cannot fire — the firewall logs blocks only #223's tripwire is untouched, and its counter staying at zero after
the rules land is the test.
it authenticates clients through
plex.tveven on a LAN, in an estate thatwent to the trouble of keeping the wiki internal.
oracle's hand-made wikicontainers are what an appliance OS costs, and they took until Put the wiki on oracle into the repository, and back up its database #251 to become
visible.
One disagreement with the issue
#95 opens by calling the NAS "the first machine in the estate holding data whose
loss would actually matter". ADR-0008 already ruled the opposite way — this data
is replaceable, which is why it is allowed on 40 at all — and the machine whose
loss matters is the sensitive-tier box on Winterfell. Keeping that distinction
is what lets the backup answer be as small as it is.
Verification
make check-docsand./scripts/lint.shboth pass. Nothing was changed onmorpheus, and no hardware was bought.🤖 Generated with Claude Code