file.c:100:a7, ron60 words after the colonRuling (gritzko 2026-08-14): a path ref takes an optional anchor tail — ":" anchor (":" anchor)? — and an anchor is 1..10 chars of the RON Base64 alphabet (abc/RON.h: 0-9 A-Z _ a-z ~, a ron60 word). Decimal digits are a ron60 subset, so file.c:100 (a line), file.c:100:12 (line:col, the compiler/grep shape) and file.c:100:a7 (a generalized ron60 anchor, e.g. a stable weave/op id) all ride the SAME rule. The lexer only fuses; what an anchor MEANS is the consumer's business.
DOG-033 fuses dir/base.ext (and KnownExt-gated bare base.ext) into one F token, but an anchor shears off: abc/TCP.c:100 lexes as F(abc/TCP.c) + : + number, so a click loses the line. host:port stays out for free — the tail is admitted ONLY after a shape that already qualified as a path, and localhost:8080 (no dot) / example.com:443 (com fails TOKKnownExt) never reach it.
path#L<n> status URI re-typeable) is deliberately NOT here — it is lite work, its own ticket on gritzko's order.Both DOG-033 tiers gain the optional anchor tail; one F token includes it.
pathslash | pathbare-gated followed by (":" ron64{1,10} (":" ron64{1,10})?)? where ron64 = [0-9A-Z_a-z~]; fused into the SAME F token, both FREE.c.rl and MKDT.c.rl.PATHu8sExt must see file.c, not file.c:100 — split the tail off the matched bytes first in the emit action.see TCP.c: the socket keeps F(TCP.c) + punct); a trailing lone colon stays punct.abc/TCP.c:100, file.c:100:12, file.c:100:a7, dog/tok/FREE.c.rl:122; never fuse localhost:8080, example.com:443; still crumbs e.g:100 (gate kills the base); file.c: → F(file.c) + punct; ABC-123 untouched..rl.c twins with ragel, never hand-edit generated files.