commit f54309cc86f08cbaa6fff2c379ea8c5dd043e44c Author: Reavo End Date: Sun Sep 6 03:50:39 2026 -0700 docs(webserve): ADR-0056 Amendment 1 — root docs files protected by URL shape, no node-name admission policy todlando measured that node names are bare OS hostnames (trim + non-empty only) with no mint or rename verb, so "root files can never be node names" was false. Replaced: a single-segment path naming a docs root file serves it (rule 2.5), because a node-prefixed URL always carries a segment after the prefix; reserved facet hostnames are loud at startup, never refused; dotted hostnames are grandfathered; admission policy is intake, not a W0 rider. Co-authored by: doyle diff --git a/docs/adr/0056-node-prefixed-url-namespace.md b/docs/adr/0056-node-prefixed-url-namespace.md index f23448d9..5281efe0 100644 --- a/docs/adr/0056-node-prefixed-url-namespace.md +++ b/docs/adr/0056-node-prefixed-url-namespace.md @@ -67,9 +67,22 @@ canonical twin `//docs/` that never flips. Resolving the alias make a peer's canonical URL unreachable from this node — exactly the "URL that only works on one machine" this ADR forbids. The shadow is per section and only while such a peer is in the subnet; the serving page documents it as the alias's one caveat and points at the canonical -form. Root files with an extension (`llms.txt`, `manifest.schema.json`, `*.md`) can never be -node names, so the llms contract is never shadowed. - -**Reserved facet names are not node names.** A node named `docs`, `f`, `a`, `m`, `bin` or -`install` is refused wherever node names are minted, and reported loud at subnet join if one -arrives from elsewhere; the router never treats a top-level facet token as a node. +form. + +**The docs root files are never shadowed — by shape, not by admission policy.** A node name is +the OS hostname (`hostlabel::os_hostname` trims and rejects empty, nothing more; dotted +hostnames exist and there is no node-name mint or rename verb to refuse at). So the llms +contract's verbatim root surface (`/llms.txt`, `/llms-full.txt`, `/manifest.schema.json`, the +root `*.md` twins) is protected structurally: a node-prefixed URL always has a segment after the +prefix (`//…`; a bare `/` 302s to `//`), while a root file is a single leaf +segment. Rule 2.5, between local and peer: a **single-segment path that exactly names a docs +root file** serves that file. A hostname equal to a root filename loses only that one leaf URL +on other machines; its prefixed grammar `//…` is untouched. + +**Reserved facet names are not node names, and W0 adds no admission policy.** There is no +mint to refuse at, and a daemon must not refuse to boot on the shape of its hostname. A node +whose hostname is `docs`, `f`, `a`, `m`, `bin` or `install` is reported loud at daemon startup +(and by the peer that learns of it at join), and the router never treats a top-level facet +token as a node — such a node is unreachable by prefix from other machines until renamed at +the OS. Dotted hostnames are grandfathered as ordinary node names. Node-name admission +(shape rules, a rename verb) is an intake candidate, not a WEBSERVE rider.