Ruling (gritzko, 2026-07-29): mark is JS ONLY — the HTML generator is verbs/mark/mark.js + verbs/mark/render.js in the be tree; beagle/mark/MARK.c is NOT the site generator and is out of scope here. mark.js must support the new libdog StrictMark changes from BOTH DOG-024 (dog 737d196b: self-delimiting 4-char marker quads, blank-line-only paragraph breaks, one-tilde strike, literal escapes) and DOG-025 (code inners tokenized, formatting-blind).
# run padded in ANY column ( ## , #, ####Smallest), level = COUNT of #; bare #### valid, a 3-char # prefix is a paragraph; the renderer trims the leading content space at depth*4+4.-[v]New gapless is a todo); one tab = one indent quad; --- short ruler; [x]: refdef quad.paraFlush joins, but must agree with the lexer on continuation-prefix shedding (quote lines are MARK-005 ground).~x~ (~~ is an unmatched delimiter), \<char> escapes are literal-next-char (the swallow-to-the-closer form is retired).render.js classify (render.js:322) had drifted from the C grammar before DOG-024 already — the JS grammar must rejoin the lexer case-for-case; the dog reference case list is dog/test/TOK01.c MKDTBlockQuadTest + MKDTCodeInnerTest (in wt work/DOG-025).make re-renders the site; the html/ diff is reviewed for stray changes and shows only intended fixes.MKDTBlockQuadTest and the inline/code deltas, in the be tree's existing test arrangement, before the fix.blog/follow-up.mkd:1 fourth prefix char, site re-render + html/ diff review) execute at land time, not in the worker wt.MKDTBlockQuadTest marker shapes, the inline deltas, and the DOG-025 code cases.~x~ strike, literal \<char>, spans across wraps, verbatim code bodies.blog/follow-up.mkd:1 gets its fourth prefix char (land time; the one corpus break, a content fix not a test edit).make site re-render; review the html/ diff for stray changes (land time).work/DOG-025, staged, 72/72 green) — its dog-side behavior is the reference; landing order is gritzko's call.