* cmd/planctl/scan.go: Scan() / scanBytes() construct a goldmark parser with
the TaskList extension; AST walk populates InCode[] for CodeBlock /
FencedCodeBlock / HTMLBlock and LineMask[] for inline CodeSpan nodes with
+/-1 byte extension to cover the surrounding backticks.
* offsetToLineCol folds '\n' bytes into the preceding line so block segment
Stop-1 maps correctly — a subtle off-by-one that tripped the closing fence
and trailing blank-line tests before the fix landed.
* cmd/planctl/scan_test.go: 7 test functions covering fenced / indented /
HTML blocks, inline code spans (substring + exact-range), nested emphasis
around code, mixed features in one document, EOF-in-fenced-block, and
trailing-newline splitLines variations.
* go.mod: goldmark promoted from indirect to direct (scan.go imports it).
Parent task 2.0 from dev/plans/26172-planctl/tasks.md.
Codex code-review session 019db23c-6c44-7d00-b3a4-6653882f0964 (2 rounds).
Planner→implementer handoff per dev/README.md: move the 26172-planctl plan dir (prd, design, tasks, codex-sessions, handoff) from the shared plans commit into this feature branch via jj squash, so tasks.md is visible in the branch's history for /process-task-list to consume.
Parent task 0.0 from dev/plans/26172-planctl/tasks.md.