Link: file.c:12, the search file.c::'grep' and the petrified file.c:12:d8

A link is an in-prose reference to a file and a position in it. Links are used in code comments, tickets, chats and docs. A link differs from a URI in its minimal syntax. It merely needs a file name and enough of a path to disambiguate. A link is resolved by an index, not by a filesystem. For that reason, absolute or relative paths are unnecessary. A link is three slots, file:line:proof; an author writes a seat or a search, wordy if need be, and the commit hook petrifies it short (petrify). The shape is Pike's sam address, file:address, as the Plan 9 plumber reads it off plain prose; the :: search is Org-mode's inspired.

Syntax

The grammar accepts ticket | relfile | rooted | authed | scope; a nav target is a ticket code, or a name carrying evidence — a known extension, or an anchor past a slash. Examples, one per accepted shape:

Slots

A target may stand alone, naming the whole file (main.js, LITE-029). Past the first colon come a LINE slot and a PROOF slot, file:line:proof, at least one of them filled: main.js: and main.js:: are nothing. A line alone is a SEAT, transient; an empty line slot is a SEARCH (::); a line with a proof is petrified. The proof kind is told by its first character. Ruled 2026-09-22; the single-colon search forms of BEE-073 retire once the grammar lands.

Petrifying

Raw forms are for writing and may be wordy: a seat f.c:12, a search f.c::'Earliest wins the tie', a proofed seat f.c:12:"earliest($1)". The hook (same repo, at commit) and bee mint (any repo, any time) turn each into the short form f.c:12:d8, line plus hashlet. Stability is the LINE's, not the file's: a line whose content stands in a trunk-reachable blob gets a BLOB hashlet, of the newest such blob, with the line's number in that blob (LITE-025), so the follow can diff since then and show the original line. A line in doubt gets a TOKEN hashlet, one ron64 char per token: uncommitted, or committed on a topic branch only. Tokens survive re-indent, re-wrap, reformat, rebases, squashes and rewrites; the line tells repeated content apart by proximity, so 2..4 chars do (BEE-073).

Scopes

A target may be a scope, not one file; the link is then a query. A scope link opens the search view on all the matches, has no line slot ever, and is never petrified.