Cross-linking and paths

July 31, 2026 · View on GitHub

OKF (§6) uses standard markdown links to express relationships between concepts. This is what makes a bundle graph-shaped, not just tree-shaped: concepts form directed edges regardless of the directory hierarchy. It is the OKF equivalent of Obsidian [[wikilinks]], but using portable markdown link syntax.

Changed from v0.1. This section was §5 in v0.1; it is §6 in v0.2, and now also defines path-valued fields (§6.2) and the references/ convention (§6.3). v0.1's written guidance was in flux over which link form to recommend; v0.2 settles it: absolute (bundle-relative) links are the recommended form because they are stable when documents are moved within their subdirectory. See the note at the bottom on what this bundle does in practice.

Two forms are supported:

  • Absolute (bundle-relative) — begins with /, interpreted relative to the bundle root (e.g. /tables/customers.md). This is the recommended form in v0.2 because it survives a document moving within its subdirectory. It requires an OKF-aware resolver: a standard renderer resolves the leading / against the host/repository root, not the bundle root.
  • Relative — a standard relative markdown path, e.g. [Frontmatter](./frontmatter.md) or [up](../concepts/llm_wiki.md). Resolves in any renderer with no OKF-aware tooling. Drawback: a link breaks if the target file moves to a different directory depth.

§6.2 Path-valued fields

Several fields name a path or URI: resource, sources[].resource, computation, executor.resource, and attester.resource (§10). A sources[].resource may instead be a scope descriptor (§5.1), in which case it is not a path. Each path-valued field accepts an absolute URL, a bundle-relative path beginning with /, or a relative path.

§6.3 The references/ convention

A references/ subdirectory conventionally mirrors external material, run instructions, or code as first-class concepts within the bundle. Sources, executors, and attesters commonly point into it (e.g. references/attesters/revenue.py). It is a naming convention, not a requirement.

  • A link asserts an untyped relationship; the kind of relationship (parent/child, references, joins-with, depends-on) is conveyed by the surrounding prose, not by the link itself. There is no rel= or edge-type vocabulary.
  • Consumers treat links as directed edges and MAY compute backlinks ("cited by").
  • Consumers MUST tolerate broken links. A link to a not-yet-written concept is not an error — it may simply mark knowledge that has not been captured yet. (The lint operation surfaces broken links as a health signal, but they never invalidate a bundle.)

Whether to include the .md extension in link targets is a producer choice; this bundle includes it so the links resolve when the files are browsed directly on disk or on GitHub.

Note (what this bundle does). Although v0.2 recommends the absolute (bundle-relative) form, this bundle uses relative links throughout, because it ships as a nested knowledge/ subdirectory (§3 allows this) and must render correctly on GitHub and for any non-OKF-aware reader — where a leading / mislinks against the repository root. We converted this bundle from absolute to relative links (473 links across 51 files) on 2026-07-01 for exactly that reason. See OKF Spec Evolution.

Citations

  1. OKF Specification (SPEC.md)