Follow-up named in ADR-022 ("grow the remote model" — right direction, deliberately sequenced after the url-ok escape hatch).
Problem
A remote is currently one directory of code-named files: [luria.remotes.SG] has a single dir (and optional url template), so every composed code constructs into the same place. That's right for SG-ADR-* and wrong for SG-DP-* — a document-rendered scheme's documents are sections, not files, and the construction confidently produces a URL to a file that has never existed (the failure ADR-016's "discovery is authoritative" rule answers for the lockfile rung, but not for code-only construction).
Today the only correct citation is a hand URL acknowledged with url-ok — e.g. SG-DP-18 in DP-9 points at docs/design-principles.md#18-the-affordance-is-the-contract by hand. Per ADR-022, each such acknowledgement's reason is a description of a construction gap; this issue is the recurring shape.
Proposed direction
Remote config mirrors the local scheme model — a remote gains per-scheme entries, so different code families in one namespace construct differently:
[luria.remotes.SG]
name = "strata-g"
repo = "dmarx/strata-g"
[luria.remotes.SG.schemes.ADR]
dir = "docs/decisions" # today's behavior, per scheme
[luria.remotes.SG.schemes.DP]
document = "docs/design-principles.md" # document-rendered: file + anchor
anchor = "dp-{number}" # Luria's stable-anchor convention
For a remote on current Luria conventions, SG-DP-18 then constructs to …/docs/design-principles.md#dp-18 with near-zero config — the stable #dp-N anchors exist for exactly this. Defaults should mirror Luria's own conventions, the way Remote.dir already defaults to the decisions path.
Design notes:
- Back-compat: a remote with no scheme entries behaves exactly as today (one dir, all codes).
Remote.dir stays as the ADR-scheme shorthand.
_upstream_dir-style discovery could read the remote's own luria.toml to learn its scheme shapes when public, same as it reads dir now.
url-ok retirement loop: when this lands, any acknowledged hand URL the new construction covers becomes fixable — delete the hand URL, let it construct, and the stale-directive report retires the url-ok. ADR-022's consequences describe this closing loop; verify it fires (DP-6).
- The residue stays annotated: legacy heading-derived anchors (strata-g's
#18-the-affordance-is-the-contract) need a slug no template can compute, and discovery can't read private repos — those remain url-ok's jurisdiction. The SG-DP-18 citation in DP-9 is therefore expected to keep its annotation even after this ships; it's the test case for not over-claiming.
remotes --check should verify per-scheme constructions the way it verifies file URLs today (an anchor isn't HEAD-verifiable; checking the file is the honest limit unless we fetch and grep for the anchor).
🤖 Generated with Claude Code
https://claude.ai/code/session_014H7APrKgWA23SVZMNF8H86
Follow-up named in ADR-022 ("grow the remote model" — right direction, deliberately sequenced after the
url-okescape hatch).Problem
A remote is currently one directory of code-named files:
[luria.remotes.SG]has a singledir(and optionalurltemplate), so every composed code constructs into the same place. That's right forSG-ADR-*and wrong forSG-DP-*— a document-rendered scheme's documents are sections, not files, and the construction confidently produces a URL to a file that has never existed (the failure ADR-016's "discovery is authoritative" rule answers for the lockfile rung, but not for code-only construction).Today the only correct citation is a hand URL acknowledged with
url-ok— e.g.SG-DP-18in DP-9 points atdocs/design-principles.md#18-the-affordance-is-the-contractby hand. Per ADR-022, each such acknowledgement's reason is a description of a construction gap; this issue is the recurring shape.Proposed direction
Remote config mirrors the local scheme model — a remote gains per-scheme entries, so different code families in one namespace construct differently:
For a remote on current Luria conventions,
SG-DP-18then constructs to…/docs/design-principles.md#dp-18with near-zero config — the stable#dp-Nanchors exist for exactly this. Defaults should mirror Luria's own conventions, the wayRemote.diralready defaults to the decisions path.Design notes:
Remote.dirstays as the ADR-scheme shorthand._upstream_dir-style discovery could read the remote's ownluria.tomlto learn its scheme shapes when public, same as it readsdirnow.url-okretirement loop: when this lands, any acknowledged hand URL the new construction covers becomes fixable — delete the hand URL, let it construct, and the stale-directive report retires theurl-ok. ADR-022's consequences describe this closing loop; verify it fires (DP-6).#18-the-affordance-is-the-contract) need a slug no template can compute, and discovery can't read private repos — those remainurl-ok's jurisdiction. The SG-DP-18 citation in DP-9 is therefore expected to keep its annotation even after this ships; it's the test case for not over-claiming.remotes --checkshould verify per-scheme constructions the way it verifies file URLs today (an anchor isn't HEAD-verifiable; checking the file is the honest limit unless we fetch and grep for the anchor).🤖 Generated with Claude Code
https://claude.ai/code/session_014H7APrKgWA23SVZMNF8H86