← Session 24 — ii′-2…4: swaps, (4.10) design, contour + website roadmap fixes
thinking (705 chars)
Done. Report to the user. Both fixes are live. Mention:
1. Root cause: Phase 2 and 5B are the only phases with a note paragraph directly above the checklist (no blank line); python-markdown never lets a list interrupt a paragraph, so the checklist items were swallowed into the paragraph.
2. Fix: renderer-level preprocessor (NGUYEN.md untouched per §0).
3. Verified: all routes 200, both phases render as tight lists identical to other phases; fenced code/indented continuations unaffected; real pages spot-checked.
4. Also logged in RH-WEBSITE.md §7.
5. Uncommitted web/ changes — same question as before about committing. The user hasn't answered the earlier commit question; don't nag — just one line.
Fixed and live.
**Root cause:** Phase 2 and Phase 5B are the only two phases with a *note paragraph* sitting directly above the checklist (no blank line). Python-Markdown — with or without `sane_lists`, I verified — never lets a list interrupt a paragraph, so every `- [x]` line was swallowed into the paragraph as literal text. All other phases start their list right after the `###` header, which is why they looked fine.
**Fix:** since NGUYEN.md is read-only for the website (§0), I added `_restore_interrupted_lists()` to `web/dashboard/research_data.py`, wired into `render_markdown`: it inserts the missing blank line before a list that directly follows paragraph text. It skips indented item-continuations (so existing lists stay tight) and skips fenced code blocks. Archive text is still rendered verbatim — only the block structure is repaired.
**Verified:**
- Phase 2 and 5B checklists now render as proper `<ul>` lists, structurally identical to Phase 0 (tight, no extra spacing)
- Edge tests pass: fenced code untouched, tight lists untouched, paragraph→list fixed
- Server restarted; healthcheck: **all 20 routes 200**; live `/roadmap/` confirmed
- Logged in RH-WEBSITE.md §7 Done
One note: this same pattern exists in ~100 archive files (journals, derivations), so those pages get the same rendering fix for free. All web changes (this + the earlier `git_log` fix) are uncommitted — say the word if you want them committed as a website commit (`web/` + `RH-WEBSITE.md` only).
raw content_json (database row)
[{"type":"thinking","thinking":"Done. Report to the user. Both fixes are live. Mention:\n1. Root cause: Phase 2 and 5B are the only phases with a note paragraph directly above the checklist (no blank line); python-markdown never lets a list interrupt a paragraph, so the checklist items were swallowed into the paragraph.\n2. Fix: renderer-level preprocessor (NGUYEN.md untouched per §0).\n3. Verified: all routes 200, both phases render as tight lists identical to other phases; fenced code/indented continuations unaffected; real pages spot-checked.\n4. Also logged in RH-WEBSITE.md §7.\n5. Uncommitted web/ changes — same question as before about committing. The user hasn't answered the earlier commit question; don't nag — just one line.","signature":""},{"type":"text","text":"Fixed and live. \n\n**Root cause:** Phase 2 and Phase 5B are the only two phases with a *note paragraph* sitting directly above the checklist (no blank line). Python-Markdown — with or without `sane_lists`, I verified — never lets a list interrupt a paragraph, so every `- [x]` line was swallowed into the paragraph as literal text. All other phases start their list right after the `###` header, which is why they looked fine.\n\n**Fix:** since NGUYEN.md is read-only for the website (§0), I added `_restore_interrupted_lists()` to `web/dashboard/research_data.py`, wired into `render_markdown`: it inserts the missing blank line before a list that directly follows paragraph text. It skips indented item-continuations (so existing lists stay tight) and skips fenced code blocks. Archive text is still rendered verbatim — only the block structure is repaired.\n\n**Verified:**\n- Phase 2 and 5B checklists now render as proper `<ul>` lists, structurally identical to Phase 0 (tight, no extra spacing)\n- Edge tests pass: fenced code untouched, tight lists untouched, paragraph→list fixed\n- Server restarted; healthcheck: **all 20 routes 200**; live `/roadmap/` confirmed\n- Logged in RH-WEBSITE.md §7 Done\n\nOne note: this same pattern exists in ~100 archive files (journals, derivations), so those pages get the same rendering fix for free. All web changes (this + the earlier `git_log` fix) are uncommitted — say the word if you want them committed as a website commit (`web/` + `RH-WEBSITE.md` only)."}]