227 -> 115 effective lines, split into .claude/rules/{hub,website,manifests,docs}.md, and
repo_gates.py gains gate 6. Trim first, register second: a registered-but-failing gate refuses
every push through the pre-push hook, which is why this repo -- the one that OWNS the gate --
was the only one not running it.
Register discipline and the R-110 installer fence deliberately stayed in the core; both have
triggers no fixed glob covers, and scoping them would have rebuilt the failure class they exist
to prevent.
Scoping proven from the InstructionsLoaded hook log in two fresh sessions, not from frontmatter.
2.1 KiB
paths
| paths | |
|---|---|
|
Documentation — routing and register discipline
documentation/ is the authoritative design home for the whole Felhom system, not just this
repo. Sibling repos point here; this is where the pointed-at thing must actually be.
Where a fact goes — one home each
| Fact | Home |
|---|---|
| the locked design | architecture/01..05-*.md |
| capability status + its evidence | architecture/00-capability-map.md |
| host addresses, routes, node names, break-glass, what is provisioned | operations/nodes.md |
| Tailscale topology, accept-dns/accept-routes | operations/tailscale.md |
| which box may be broken, and what may be done to it | runbooks/target-selection.md |
| an operational procedure | runbooks/RUNBOOK-*.md |
| logging levels and phrasing | runbooks/logging-conventions.md |
| a spike or campaign result | audits/ |
| every open finding | backlog/OPEN-ITEMS.md |
| the operator's one-screen view | root STATUS.md |
Do not restate a fact that has a home — point at it. Re-check an address rather than trusting one written down.
Register discipline
The end-of-session register rules (OPEN-ITEMS.md first, STATUS.md is a view, nothing exists only
in a report) are in the repo core CLAUDE.md deliberately — they apply to every session that
ships or decides something, not only to sessions that touch documentation/, so they must load
unconditionally. This file adds only the routing above.
The coupling rule
A recipe or contract section is a TWO-REPO change. If a document here defines something a sibling consumes — a DR recipe's producers, an allow-list, an event type — the consumer's code and this document move in the same session, or the hub silently drops what it does not recognise.
Version literals
No component version literal in any instruction file, and none in a doc that reads as current fleet state. Versions change several times a day and the fleet is not uniform. A historical citation ("fixed in hub v") is fine in an audit or an HTML comment beside the rule it justifies — it cannot go stale the way "this box currently runs agent v" can.