Replace the three drifting filter implementations (counter, list loader, regroup) with one ITaskListFilter strategy per list kind. Counter and list loader now share the same predicates, so they cannot diverge again. Planning hierarchy rules (parent-as-context, orphan handling) live in PlanningRules and are unit-tested via 29 new tests in ClaudeDo.Data.Tests. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>