Repository navigation
docs(roadmap): give ADR-0008's tier a shape, and read the fourth rule (#102) - #269
Merged
Merged
Conversation
…#102) ADR-0008's sensitive tier was tracked by one line in "Decided but not built", and that line repeated the claim the issue exists to correct — "its two new firewall rules". The count was retired by ADR-0013 and the additions turned out not to be additions. The tier moves to Infrastructure beside #95, its sibling tier, with the build's actual shape: the nine services, the unmade purchase, and four firewall rules rather than two. Three of the four are ADR-0016's, carried by #95 with the hardware. The fourth — 99→20, for Home Assistant reaching IoT devices — is the row the issue said should be read before it is written down. Read on morpheus 2026-09-04, pfctl -sr with the interface tables resolved: Winterfell blocks every other VLAN above its egress pass, Block access to Skids among them, so that rule is an insertion above a deny like the other three and not an append. Skids as a source is untouched, its return traffic is carried by state, and #223's tripwire must stay at zero — the same trade ADR-0016 made for CasaBonita. What the ruleset cannot settle is the rule's width: the source host does not exist yet, and the destination is a whole segment unless the IoT devices get statics. The same read found #228's premise stale. The Hicks tab was narrowed on 2026-09-02 — the day after ADR-0013 was written — and now carries ten host- and port-scoped passes into Winterfell above a logged Block access to Winterfell that has dropped 22 packets. Hicks no longer reaches all of Winterfell; ImaginationLAN is the half still open, and network.md's segment table still says otherwise. That is recorded on #228 rather than fixed here. Two of the three orderings the issue asserts have also been retired since it was filed: #67's watcher went to oracle under ADR-0015, and #97's host override was never downstream of AdGuard per ADR-0018. #98 is the one that stands. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
There was a problem hiding this comment.
🟢 Approval recommended
Documentation-only changes with validated internal links and no apparent formatting or consistency issues in the updated roadmap entries.
Pull request overview
Updates the HomeLab roadmap documentation to more accurately reflect ADR-0008’s “sensitive tier” work items and their concrete prerequisites, and to correct the previously-stated firewall-rule shape/order based on an actual ruleset read.
Changes:
- Rewrites the #228 roadmap entry to record the now-enforcing Winterfell/Hicks rule posture (with dates and observed behavior) and clarify what remains open (ImaginationLAN).
- Moves #102’s roadmap representation into a detailed Infrastructure entry that captures the tier’s service set, purchase dependency, and the four firewall-rule insertions (including the newly-verified 99→20 ordering note).
- Retains a brief “Decided but not built” pointer for #102 that now references the Infrastructure entry rather than repeating the outdated “two rules” claim.
File summaries
| File | Description |
|---|---|
| docs/roadmap.md | Refines roadmap entries for #228 and #102 to reflect the updated firewall reality and the ADR-0008 sensitive-tier work shape, keeping an abbreviated pointer under “Decided but not built”. |
Review details
- Files reviewed: 1/1 changed files
- Comments generated: 0
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
"Every pass above it is matching" was a claim the counters do not support: of the ten passes into Winterfell, Allow NTP and Allow HTTP to Mjolnir are both still at zero. Name the number that is load-bearing — 834,283 packets through Allow SSH to Winterfell — and name the two exceptions, rather than rounding a mixed reading up to "every". 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 #102.
ADR-0008's sensitive tier was tracked by a single line in Decided but not
built — and that line repeated the exact claim the issue exists to correct:
"its two new firewall rules". The count was retired by ADR-0013, and the
additions turned out not to be additions.
What changed in
docs/roadmap.mdThe tier moves to Infrastructure, beside #95. The two ADR-0008 tiers now
read together, sensitive first, and the entry carries the build's shape: the
nine services, the unmade purchase, and four firewall rules rather than two.
Three of the four are ADR-0016's and are carried by #95 with the hardware,
because a
passto an address with no NAS behind it is untestable. A pointerstays in Decided but not built so the accepted ADR is still visible there.
The fourth rule was read before being written down. The issue asked for
exactly this.
pfctl -sronmorpheus, 2026-09-04, interface tables resolved:Block access to Skids (
10.0.99.0/24 → 10.0.20.0/24, id 1760994422) is oneof them. 99→20 is an insertion above a deny, like the other three — it
goes beside the two SNMP passes that already sit above that block stack, not
appended next to Allow internet.
tripwire (evaluations 280711, packets 0), then egresses. Return traffic
for a session Home Assistant opens is carried by state and never reaches the
ruleset. Skids stops being terminal inbound and stays terminal outbound —
the same trade ADR-0016 made for CasaBonita, with the same test.
host- and port-scoped; this one has a source host that does not exist yet and
a destination that is a whole segment unless the IoT devices get statics. Also
flagged: Home Assistant discovers over mDNS, which is link-local and does not
cross a VLAN boundary, so nothing on 20 appears by itself however the pass is
written.
Two findings the same read turned up
#228's premise is stale, and the roadmap entry now says so. The Hicks tab
was narrowed on 2026-09-02 — the day after ADR-0013 was committed. It now
carries ten host- and port-scoped passes into Winterfell (SSH, the pfSense
management UI, the resolver, NTP, ping, the wiki ×2, Grafana,
mjolnir×2)above a logged Block access to Winterfell, plus a logged Block access to
LAN, and only then the catch-all. The block is enforcing — 22 packets dropped —
and every pass above it is matching. So:
still open; nothing blocks it, and the catch-all still grants it entire.
interface in the same batch. ADR-0013's dead rule is fixed — it matches now,
and grants nothing the catch-all was not already granting.
destination narrowly and on purpose") no longer holds; ten such rules exist.
Decide whether Hicks should reach all of Winterfell and ImaginationLAN #228 is still worth settling first, but for position rather than precedent.
network.md's segment table still says Hicks reaches "Internet, 99, 30",which is now wrong in the direction of too wide. Recorded on Decide whether Hicks should reach all of Winterfell and ImaginationLAN #228, not fixed
here — narrowing the description is Decide whether Hicks should reach all of Winterfell and ImaginationLAN #228's work, not this issue's.
Two of the three orderings the issue asserts have been retired since it was
filed. #67's watcher went to
oracleunder ADR-0015 and needs no self-hostedntfy; #97's host override was never downstream of AdGuard, per ADR-0018 and
ADR-0010. #98 is the one that stands. The entry also names what moving ntfy
in-house does change — the heartbeat's whole value is that it leaves the
house, and an endpoint with no external exposure cannot reach a phone that is
not on the network.
Not done here
No ADR is written or amended (per ADR-0001, ADR-0016's now-stale aside about "a
catch-all nobody wrote" is left as written), no firewall rule is created, and
nothing is bought.
make lintandmake check-docspass.🤖 Generated with Claude Code