#Ruling (gritzko, 2026-07-28): EVERY StrictMark block marker is exactly one 4-char quad and is self-delimiting — there is no gap space outside the quad. A heading is a run of 1-4 # padded with spaces in any columns (# , # , # , #, ## , ## , ##, ### , ###, ####), its level the COUNT of #; a todo marker is exactly -[ ] / -[v] / -[-] / -[x], four chars, no trailing space. Content always begins at depth*4+4; a leading space there is content, and the renderer trims it. MKDTB (MKDTB.c.rl:58,65) implements neither rule, and the JS port has already drifted from the C one on the todo case.
todo = '-' '[' (…) ']' sp (MKDTB.c.rl:58) requires a 5th byte, so JAB-001:51-57's gapless -[v]New … lines are not todo items at all — they render as paragraphs.heading = ('#'{1,4}) sp @h_level (sp* $h_space) (MKDTB.c.rl:65) demands the run start at the quad's column 0 AND be followed by >=1 space: bare #### is rejected, and # / # / # fall through to paragraph.classify (render.js:322) already disagrees with C: its todo is 4 chars wide (content = i + 4), its heading takes #{1,4} before a space OR EOL, still unpadded — two renderers, two grammars.### , ## , # ); 5 are ### and 1 is #### (fine — the extra space becomes content).MKDTBlock accepts the padded #-run quad like it already accepts padded quote/bullet, with b->heading = the count of # bytes.b->content is depth*4+4 for every marker shape; C and JS classify identically.MKDTB.c.rl (ragel -C MKDTB.c.rl -o MKDTB.rl.c -L) — no hand-rolled line scanning creeps back into MKDT.c.blog/follow-up.mkd:1 # "New model economics" is a 3-char prefix and needs one more space.#### + " Smallest header" still renders the old text (MARK.c:336-340, render.js heading branch).heading mirrors the existing quote/bullet shape: the alternation of #-run positions inside the quad, level from the run length, content at the quad end.TOK01 cases for ## Sub, #Top, ####Smallest, -[v]New.MKDTB.c.rl: padded heading quad + level-by-count; todo drops the trailing sp.classify (render.js:322); C and JS agree case-for-case.blog/follow-up.mkd:1; re-render the site and diff for stray changes.wiki/StrictMark.mkd :68 (gap space), :70-:71 (exception list), §Headers example block.