Hot path in cmdRoadmapAnnotateDependencies called planData.find() on every checklist line. Replaced with a first-wins Map built once before the loop so each line resolves in O(1); first-wins preserves exact .find() semantics and null-on-miss → wave-1 default is unchanged. Fixes #314 Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>