v0.2.3 — task-extraction hardening
extract_tasks tolerates small-model output returning tasks as an object/string/null instead of an array (coerce lone object → list, drop others → empty, skip non-dict items). Prevents a crash on ollama/openrouter/nim.