:'text', :"snippet", :/re/, :nameBEE-073 rules four new anchors after a link target's :. LINK.rl knows digits only, so CAPO.c:'Compose URI' fuses as CAPO.c and the anchor falls into prose. Extend anchor, make commit disjoint from line, give long anchors a cap of their own, and ship a ragel splitter so no consumer peels a ref by hand. Seven includers regenerate their twins.
tok/LINK.rl:88:GG line, tok/LINK.rl:89:GG commit, tok/LINK.rl:90:GG anchor, which relanch and ticket take.:30:4711 matches line and commit both; scanner order decides today.tok/*.c.rl); each binds the parts and owns a generated twin.TOKUNCUT retreat: tok/FREE.c.rl:118:yQ, tok/MDT.c.rl:108:6z, tok/TOKL.c.rl:53:IB.F themselves today (bee door.js:517, by lastIndexOf(":")); a body with a colon breaks that.seg never starts with a dot and rooted heads are / or ./ only (tok/LINK.rl:94:GG): no .c scope, no //repo head.grep = ":" "'" body "'", spot = ":" '"' body '"', regex = ":" "/" body "/"; body = ([^delim\\\n] | "\\" any)+.sym = ":" [A-Za-z_] [A-Za-z0-9_]*, disjoint from line by its first byte.commit = ":" [0-9]{1,10} ":" (ron64{2,10} - [0-9]+): a hashlet carries a non-digit, so :30:4711 is line:col only.line/commit vouch for relanch and rooted; sym rides relknown and ticket only.main.c:'open stays main.c plus prose.query = grep | spot | regex | sym; scope = dirs? ext query | dirs query: .c:/re/, abc/.c:'x', abc/:'x' (BEE-073).ext faces the KNOWN gate as relknown does; a scope never takes line or commit.authed = "//" seg "/" (relanch | scope): one seg of authority, then a path, then the mandatory anchor.authority and scope (dir, ext) beside the rest, so a consumer tells a query from a reference.either/or:pick, 12:30, example.com:http, main.c:'open, a body past the cap; x.c:30:4711 fuses as line:col.//localhost:8080, https://foo.io/bar.c, http://host/a.c:12, //repo/x.c, a bare .c, .c:30.F token covers target plus anchor whole (DOG-043); the header comment of LINK.rl stays the spec of record.tok/INDEX.md gains the splitter entry (index); comment budgets per comment.ron64{2,10} - [0-9]+) over scanner order: the two anchors stop overlapping in the grammar itself.sym does not vouch: a/b:word is common prose, while a quoted or slashed body after a colon is not.*/ would close the comment a link sits in.scheme:// run must stay prose: no includer has a URL rule to eat it first, so the guard is part of this ticket.authed takes authsym too (review, 2026-09-18): without it //libdog/HUNK.c:sym lexed HEADLESS, resolving elsewhere.on_gated action serves a scope and an authsym: both rest on the KNOWN gate and both must survive the cap.// head, with the scheme:// guardfile.c:k4:d8K3 and DOG-032:k4:d8K3 read :k4 as a SYM anchor now, so the dead ron64 offset fuses that far.FPSPS -> FPS; the one pre-existing test this ticket touched.authed had no authsym, so //libdog/HUNK.c:sym lexed headless and resolved elsewhere.scheme:// guard eats the slashes only: http://host/a.c:12 still fuses its inner host/a.c:12, as it does today.{"https://foo.io/bar.c", "SPPPSSSPF"} pins bar.c fusing, and no test may be edited.//repo/x.c fuses repo/x.c on its known ext; only the AUTHORITY reading is blocked, which is what was asked.TOKUNCUT still trims when a ron64 byte follows a CLOSED delimiter, so x.c:/re/g retreats; harmless, but not exact.tok/INDEX.md does not exist; the splitter's entry went to the tok section of dog/INDEX.md instead.dog/build (gcc, no libFuzzer), so the short fuzz run was skipped.Working tree only, nothing committed: tok/LINK.rl grew the anchors, the
scope, authsym and the authority head; tok/LINK.h + tok/LINK.c.rl are
the new splitter; the seven includers and tok/TOK.c bind them; twins
regenerated, and all 85 tests pass.