FTwo StrictMark verbatim sites hand their body out as ONE flat token and never run the link recognizer over it, so a reference written there fuses no F and clicks nowhere: an inline code span (MKDT.c:47 MKDTonCode, body 'H', DOG-024) and a meta-pair value (MKDT.c:238 MKDTEmitValue, value 'S', DOG-026). Backticking a path is the house style (index, todo) and the meta keys See: Sub: Dup: On1: Rev: Rep: exist to point at other tickets, so the two documents whose job is to point at things are exactly the ones whose pointers are dead — in the pager, in bee http and in bee lindex alike.
Found 2026-08-16 reading bee http pages of JAB-036 and JAB-032 off bee-journal: the same JAB-035 links five times in prose and not once on line 5, and no backticked path on JAB-032 links at all.
/bee-journal/todo/JAB/JAB-036.mkd, line 5 See: JAB-035: paints tok-T See: + one tok-S JAB-035, no F; the same code in prose from line 7 links fine./bee-journal/cat/todo/JAB/JAB-032.mkd, line 52 ` test/fsw.js : paints tok-G backtick + one tok-H body + tok-G backtick; fTokens yields 16 F` on that page and not one of them is a backticked name.*test/fsw.js* -> F, a `` `-fenced ` block -> F, a 4-space indented block -> F, test/fsw.js -> nothing, See: test/fsw.js` -> nothing.FREE.rl.c:47..59 mirrors MKDTonCode deliberately (DOG-024: "a comment and a .mkd page tokenize their markup identically"), so a comment's code span is dark the same way.bee's index/hook.js fTokens is the ONE recognizer by the 2026-08-15 ruling, and index/lindex.js mints its LINK rows off the same call — so a ticket named ONLY from a meta pair gets no backlink row either.A nav target written inside a code span or a meta value fuses one F, exactly as the same bytes do in prose; nothing else about either body changes.
test/fsw.js , JAB-035 , dog/tok/LINK.rl:70 , See: JAB-035, Rep: ///jab, On1: DOG-024`. GPL-2.0 , ISO-8859-1 , .. , foo (no evidence), a bare --flag ` — every DOG-036 non-ref stays dark inside a span too.'G', non-ref body text keeps its own tag ('H' in a span, 'S' in a value), and NO inline layer opens — no emphasis, no nested span, no punctuation splitting.bee http, and bee lindex mints rows for a code named only from a meta pair.quickjab/dog — explicit permission for this ticket only, the DOG-039 precedent; dog/tok + fixtures (dog/test/TOK01.c) only; NO VC ops of any kind.ragel -C <X>.c.rl -o <X>.rl.c -L.bee needs NO edit: it already resolves whatever F it is handed. A fix that touches bee2 is the wrong fix.ctest green in quickjab/build-bee2; test/refline, test/perma and test/click identical to baseline.ONE new primitive, two call sites, no grammar change and no precedence change. TOKLinkText(u8 tag, u8cs text, TOKcb cb, void *ctx) sits beside TOK.h:77 TOKSplitText — the existing "re-grain a verbatim blob under a caller-chosen tag" primitive — and is backed by a LINK-only ragel machine over the already-shared LINK.rl definitions: each fused nav target emits 'F', every run between emits tag.
MKDTonCode (MKDT.c:59) swaps cb('H', body) for TOKLinkText('H', body, ...); MKDTEmitValue (MKDT.c:246) swaps cb('S', val) for TOKLinkText('S', val, ...); FREE.rl.c:52,59 takes the identical edit so a comment span matches a page span, as DOG-024 requires.MDT.c.rl's scanner is NOT touched, so its ruling that "a decorated ref stays in its span" — the code rule outranking relknown by length — remains exactly true; this ticket only changes what the span HANDLER does with a body it has already isolated.keyvoid and dotdot come along free from LINK.rl, so ` GPL-2.0 and .. ` stay dark inside a span with no guard of their own.MKDT and FREETOKLinkText + its LINK-only machine, declared in dog/tok/TOK.hMKDTonCode, MKDTEmitValue, FREE's code-span leg; regenerate twinsctest green; refline / perma / click vs baselinebee http; bee lindex row for a meta-only codeRep: ///jab was listed as a positive and does NOT fuse — rooted always
demands an anchor (DOG-036), so a bare repo URI is no ACCEPT anywhere, in
a value or in prose. Pinned as TSW with the reason; a grammar change
was out of scope here and wants its own ticket.dog/CMakeLists.txt is outside dog/tok, so the new twin could not be
listed as a source; TOK.c #includes TOKL.rl.c instead, which also
puts TOKLinkText in the same TU as TOKSplitText. Move it to a
CMakeLists line whenever the scope allows.Done in the MAIN TREE quickjab/dog (edited, nothing staged, no VC op run).
A code span's body and a meta pair's value keep their verbatim tag and now
fuse the nav targets written in them.
dog/tok/TOKL.c.rl (new) — the LINK-only scanner. It binds LINK.rl's
components and NOTHING else, in the includers' own order: a fused ACCEPT
emits 'F', every run between refs emits the caller's tag in ONE token,
and code keyvoid / dotdot / the catch-all any8 emit nothing but grow
the pending run. TOKLFuse flushes that run, fuses the ref and reopens
past it; a TOKUNCUT-trimmed anchor or an ext-gate miss simply stays run.dog/tok/TOKL.rl.c (new) — the twin, ragel -C TOKL.c.rl -o TOKL.rl.c -L.dog/tok/TOK.h — TOKLinkText(u8 tag, u8cs text, TOKcb cb, void *ctx)
declared beside TOKSplitText; dog/tok/TOK.c includes the twin (see
Bummers — dog/CMakeLists.txt was out of scope).dog/tok/MKDT.c — MKDTonCode and MKDTEmitValue swap their cb('H',
body) / cb('S', val) for TOKLinkText; both legs of the code handler.dog/tok/FREE.c.rl — FREEEmitCode takes the identical edit (DOG-024:
a comment's span and a page's span tokenize alike); twin regenerated.MDT.c.rl, RSTT, TXTT, LINK.rl and the TOKPathRefKnown gate are
NOT touched — no grammar change, no precedence change, no new rule.dog/test/TOK01.c: DOG040_SPAN_CASES, ONE 12-case list run
through MKDTCodeLinkTest + FREECodeLinkTest (24 assertions), plus
MKDTMetaLinkTest, 10 meta-value cases. 34 assertions, 18 RED against
the pre-fix lexer and all green after; 16 were pins carried along. Reds:
` test/fsw.js , JAB-035 , dog/tok/LINK.rl:70 ,
TCP.c , see test/fsw.js here , see TCP.c now (GHG ->
GFG / GHFHG, per machine, 12 of them), and See: JAB-035, On1: DOG-024,
Sub: DOG-040/README.mkd:18, Rev: abc/S.h:12, the indented See:,
For: bold ABC-123 link` (TSW -> TSFW / TSFSW, 6). GPL-2.0 , ISO-8859-1 ,
.. , foo , --flag and bold em all stay
GHG — keyvoid and dotdot came along free and no inline layer opens;
Who:, Due: 2026-08-05 EOD, Now: OPEN, Rep: ///jab stay TSW`. file.c:100 (FREE + MKDT anchor tests), ABC-123 ,
diff/color.js -> GFG; On1: DOG-025 -> TSFW;
For: bold ABC-123 link -> TSFSW and its continuation-line twin
-> TSWRFSW. Nothing else in TOK01.c` needed a byte.ctest -j8 in quickjab/build-bee2: 144/144, same as the pre-edit
baseline — NO pre-existing failure in this build dir. TOK01test green.build-bee2/bin/bee: test/refline 38
checks 0 bad, test/perma 51 checks 0 bad, test/click 26 checks 0 bad —
all identical to baseline.bee http /bee-journal/todo/JAB/JAB-036.mkd: line 5 now paints
tok-T See: + tok-S gap + <a href="/bee-journal/todo/JAB/JAB-035.mkd">
around a tok-F JAB-035./bee-journal/cat/todo/JAB/JAB-032.mkd: the backticked
` test/fsw.js is tok-G + <a href="/quickjab/test/fsw.js">tok-F</a>
+ tok-G; the page's tok-F` count went 16 -> 52.bee lindex: on a throwaway fixture repo whose ZZZ-001.mkd names
ZZZ-002 ONLY from a See: meta pair, bee lindex ZZZ-002 lists
ZZZ-001.mkd; the pre-fix binary on the same bytes listed it not.Suggested commit: DOG-040: a code span and a meta value fuse their links