docs/plans/2026-04-18-block-start-api-hard-cut.md
Remove the leaky blockStart rule contract where custom rules have to manually
thread range and other base match data through resolveMatch. Core should
provide the base block-start match payload by default and merge custom match
extras on top.
blockStart already had a base match shape in core: { range, text }.resolveMatch, which replaced that base payload instead of
contributing extras on top.range, which is why list and
blockquote rules accumulated pointless resolveMatch: ({ range }) => ({ range }) boilerplate.resolveMatch returns extras, core merges them with
the base block-start match before apply.hard-cut, north-star, major-task, learnings-researcher,
planning-with-files, testing, tdd, and task.range manually.docs/solutions/best-practices/block-start-resolve-match-should-return-extras-while-core-provides-base-match.md.