Skip to content

Per-scheme remote mappings: let a remote's DP codes construct #6

Description

@dmarx

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions