[Page] with no def renders as ./Page.html (StrictMark.mkd:46)
StrictMark now defines a THIRD link case — Implicit (StrictMark:46): a shortcut [StrictMark] with NO definition becomes a link to ./StrictMark.mkd. The beagle/mark renderer implements explicit refs, defined shortcuts, and an unresolved ABSOLUTE shortcut [/path] (a root-relative path link via mark_emit_pathlink), but an unresolved RELATIVE shortcut [Page] currently falls through to an EMPTY href (MARK.c:243-250; the 236-240 comment states undefined brackets keep the empty-href behavior). This ticket adds the implicit relative case so [Page] renders <a href="./Page.html">Page</a> (.mkd→.html, like every page link). The change is presentation-only in mark — the MKDT grammar (dog/tok) is untouched; mark drives MKDTDecomposeSpan and emits HTML. See StrictMark; method Issues.
[StrictMark] becomes a link to ./StrictMark.mkd": the wiki convention's "definition is optional" shortcut, the bare-[Page] cross-link used across the wiki and tickets.mark_emit_link (MARK.c:223): a found ref/shortcut → its url; unresolved + shortcut + ABSOLUTE (PATHu8sIsAbsolute) → mark_emit_pathlink (root-absolute, root-probe → .html); unresolved + RELATIVE → EMPTY href. The relative-implicit case is the gap.mark_emit_url (.mkd→.html), mark_trim_pageext, s_dot_html, mark_emit_pathlink (MARK.c:129-221).test/MARK.c (render/escape/link/budget) + the MARKpathlinks fixture; fuzz/MARK.c is no-crash only.[Page] (label == text, not absolute, not found) renders <a href="./Page.html">Page</a> — extensionless [Page] → ./Page.html; an explicit .mkd/.md in the bracket → .html.[text][L] with an undefined label (→ empty href; it is NOT a shortcut), images ![..], and the absolute [/x] path link.ctest green; no fuzz crash.beagle C core, ABC style (CLAUDE): typed slices + PATH helpers, no pointer arithmetic, sane()/call()/done. Render-only change in mark; do NOT touch the MKDT grammar.test/MARK.c (CLAUDE §3); update mark/INDEX.md and the MARK.c:236 comment if the behavior note changes./home/gritzko/journal/beagle); no be get (a committable beagle clone is GET-033-blocked).mark_emit_link add implicit = !found && shortcut && !PATHu8sIsAbsolute(text). Emit href ./ + text with the page extension rewritten to .html (extensionless → append nothing, just ./text.html; explicit .mkd/.md → .html). Display = the bracket text (basename/trim — harmless for a plain name).mark_emit_implicitlink parallel to mark_emit_pathlink but RELATIVE (./ prefix, NO root probe — the spec mandates the link unconditionally, no existence check).MARK.c:236-240 "empty href" comment to record the new relative-implicit behavior.[dir/Page], mirror the absolute basename/trim display (show "Page")? Spec example is a single token; confirm whether relative [dir/Page] forms are expected before special-casing.test/MARK.c: implicit/implicit-mkd/implicit-md + unchanged implicit-defined/implicit-image cases (test/MARK.c:82-99, d36afdc9).mark_emit_implicitlink (MARK.c:229) + the implicit = !found && shortcut && !absolute branch in mark_emit_link (MARK.c:275-283, d36afdc9).ctest green — landed d36afdc9; re-verified 2026-07-07 via ~/bin/mark: [Page]→<a href="./Page.html">Page</a>, [Note.mkd]→./Note.html.mark/INDEX.md (implicit-link paragraph) + the MARK.c empty-href comment (now records the relative-implicit case) — d36afdc9.beagle get needed.d36afdc9 (29Jun, "WIKI-001: implicit link handling"): mark_emit_implicitlink + the implicit branch in mark_emit_link, table cases, INDEX.md.~/bin/mark — bare [Page] renders ./Page.html, [Note.mkd] renders ./Note.html; defined shortcuts and images unchanged.