diff --git a/tasks/in-progress/41-the-drawer-renders-wrapped-lists-as-lists.md b/tasks/in-progress/41-the-drawer-renders-wrapped-lists-as-lists.md
new file mode 100644
index 0000000..df74434
--- /dev/null
+++ b/tasks/in-progress/41-the-drawer-renders-wrapped-lists-as-lists.md
@@ -0,0 +1,116 @@
+# 41 — The drawer renders a wrapped list item as one item
+
+**Status:** In Progress
+**Assignee:** istos
+**Priority:** High — the drawer is where every card is actually read, and
+it currently mangles the section reviews judge against
+**Type:** Bug
+
+Open any card with an Acceptance list and the drawer invents bullets: the
+second line of a wrapped item becomes its own bullet, so "…serves the
+built landing page" and "over" are two entries, and `- [ ]` checkboxes
+render as a literal `[ ]`. The renderer is line-based and the task files
+are hard-wrapped, so almost every list on the board comes out wrong.
+
+## Context
+
+`manager/core/board.html:1904` — `md()`, "small markdown renderer — enough
+for these task files, no dependencies". It splits the source into blocks
+on blank lines, then treats each **physical line** inside a block as a
+unit. Task files are wrapped at ~74 columns (`tasks/task-template.md` and
+every card follow it), so "enough for these task files" is exactly what it
+is not.
+
+Four defects, one root cause:
+
+- `:1941` — `'
' + lines.map(l => '- ' + inline(l.replace(/^\s*[-*]\s+/, '')) + '
')`.
+ A continuation line has no marker, so the strip does nothing and the
+ line becomes a bullet of its own. Ordered lists have the identical bug
+ at `:1943`.
+- **Task-list syntax is unsupported.** `- [ ] Given a request…` has its
+ `- ` stripped and renders the `[ ]` as text. Every Acceptance section
+ on the board reads as literal brackets.
+- **Nesting flattens.** `lines.map` ignores indentation, so a nested
+ sub-list renders at the same level as its parent.
+- `:1949` — paragraphs join their lines with `
`, so prose keeps the
+ author's 74-column ragged edge instead of reflowing to the drawer's
+ width. The blockquote branch at `:1945` does the same.
+
+The renderer serves two surfaces: the card drawer (`:1445`, `md(t.body)`)
+and the plans/reference file viewer (`:1415`, `md(f.content)`) — so
+`AGENTS.md`-style documents with deeper nesting go through it too.
+
+**Affected areas:** `manager/core/board.html`, the `md()` function and its
+list/paragraph CSS.
+
+## What to build
+
+- **Group physical lines into logical items before rendering.** Within a
+ list block, a new item begins only at a marker; a following line
+ without one is continuation text joined to the current item with a
+ space. That single change fixes the phantom bullets and the ragged
+ paragraphs together.
+- **Honour indentation.** A marker indented past the current item opens a
+ nested list; the nesting closes when the indent returns. Two levels
+ handled properly is enough for these documents — more should degrade to
+ flat rather than break.
+- **Render task-list items as checkboxes.** `- [ ]` and `- [x]` become a
+ checkbox glyph plus the item text, never a literal bracket pair. They
+ are **not** interactive: the file is the source of truth, and the
+ drawer must not quietly become an editor. Colour only ever means state,
+ so a ticked box may read as settled (`--calm`) while an empty one stays
+ neutral — nothing here should read as an alarm.
+- **Reflow paragraphs.** Join a paragraph's source lines with a space
+ rather than `
`, so prose wraps to the drawer instead of to the
+ author's editor. Same for blockquotes.
+- **Keep it small and dependency-free.** `board.html` is a single
+ self-contained file that makes no network requests; this stays a
+ function in it, not a library.
+- Fenced code, tables, headings and horizontal rules already work —
+ leave them alone, and make sure the list rewrite does not disturb the
+ fence state machine at `:1913-1924`, which spans blocks.
+
+**Out of scope** — tempting neighbours left alone:
+
+- A full CommonMark implementation. The target is the markdown these
+ files actually contain.
+- Editing task files from the drawer, including clickable checkboxes.
+- Rewrapping or reformatting task files themselves. The files are fine;
+ the renderer is wrong.
+- The card face, the ticker, or any other surface that does not use
+ `md()`.
+
+## Acceptance
+
+- [ ] Given an Acceptance list whose items wrap across two or three
+ source lines, when the card opens in the drawer, then there is
+ exactly one bullet per item and no bullet begins mid-sentence.
+- [ ] `- [ ]` and `- [x]` items render as unticked and ticked checkboxes
+ with their text beside them; no `[` or `]` appears as text.
+- [ ] Clicking a checkbox does nothing and changes no file.
+- [ ] Given a nested list, when it renders, then the child items are
+ indented under their parent rather than flattened beside it.
+- [ ] A hard-wrapped paragraph reflows to the drawer's width — narrowing
+ the drawer rewraps it, and no `
` survives at the author's wrap
+ column.
+- [ ] Fenced code blocks are unchanged: the ASCII directory tree in
+ `AGENTS.md` renders through the file viewer exactly as it does
+ today, line breaks intact.
+- [ ] Edge case: a list item containing inline code with a hyphen, and an
+ item whose continuation line itself starts with a word like "and",
+ both stay single items.
+- [ ] Edge case: a table immediately following a list still renders as a
+ table — card 30's wrong/right table is the live case.
+- [ ] Covered by a test in the same style as the board's existing
+ `tests/test_*.py` checks on `board.html`.
+
+## Notes
+
+The comment above `md()` is the bug in miniature: it was written for these
+task files, and these task files are hard-wrapped prose. A renderer that
+splits on newlines was only ever going to work while every list item fit
+on one line.
+
+Worth checking after the fix: the same wrapped-line assumption may show up
+in the card face's activity line and in the ticker, which also carry text
+extracted from these files.