Skip to content

links

Provenance

  • Source: .spec/spexcode/spec-forge/links/spec.md
  • Source SHA-256: efd895c587401915a15d0d5e8b883ce62a4776b0df662e01962fb58f57bc6ee1

The host-agnostic heart of [[spec-forge]]. Given whatever a driver read off a host (open issues + PRs) and the set of real node ids, it inverts them into per-node link lists: node → { issues, prs }. Pure — no network, no git, no writes — so it is the same on every host; only the [[port]]'s driver is vendor-aware.

It establishes a link three ways:

  • branch — a PR heading off node/<id> links to that node. Because a node id itself contains dashes, the branch is resolved by longest-match against the known ids (strip node/, take the longest id that equals the rest or is its <id>-… prefix), never by guessing where the -<sha> suffix begins.
  • marker — an issue body line Spec: <id>[, <id>] (case-insensitive). Ids are validated against the known set, so a typo'd marker links nothing rather than inventing a node.
  • pr (transitive) — an unmarked issue a PR closes (closesIssues) inherits that PR's node.

A node's issue list is de-duplicated so an issue reached by both a marker and a PR appears once — marker wins (the explicit intent outranks the inferred link). Only nodes that actually have links are returned.

The split this encodes: the forge declares which node its work serves, but a node's status is never touched here — definition and execution stay on separate axes (see [[spec-forge]]).