Key: valueTickets now carry meta (assignee, due date, milestone) as Key: value lines under the header, per todo; the leaf is specced in StrictMark §"Meta pairs". The tokenizer must emit it as its own block type so renderers and view verbs stop reading meta as paragraph prose.
KEY ':' GAP VALUE, KEY := [A-Z][a-z][a-z] at line start; value verbatim to EOL, no inline layer.Who: Due: For: Ask: Env: Rev: Dup: Sub:; the grammar is key-agnostic.:todo view (BE-038) see prose.MKDTLexer (dog/tok/MKDT.c) emits a distinct meta-pair leaf token for ^[A-Z][a-z][a-z]: lines.Due\:) keeps a paragraph a paragraph; StrictMark-wins otherwise.-[ ] todo marker next for the board badge (TODO-002) — one shape the index can key on.Who: + gap), consistent with the DOG-024 quad discipline.dog/tok/MKDT.c\: line-start escape (free: the backslash breaks the quad shape, test asserts it)MKDTMetaPairTest in test/TOK01.c)line field (moot: the kv64 redesign dropped the line field)[A-Z][a-z][a-z] to [A-Z][a-z][a-z0-9] (On1: ruling 2026-08-03)Landed in the main tree 2026-08-03 (explicit order), uncommitted; suggested commit DOG-026: meta-pair leaf Key: value in MKDTB.
meta = (upper lower (lower|dig) ':' @mt_run) >mt_start sp @mt_set in the innermost list position of main := (tok/MKDTB.c.rl), MKDTB.rl.c regenerated (ragel 6.10).mkdtblock gains meta/metakey (tok/MKDT.h); lexer emits key quad 'T', value one verbatim 'S' (no inline layer), 'W' newline; a meta line ends a paragraph run (tok/MKDT.c).work/DOG-026 wt superseded by this port + digit widening.