Wholehog
Implement the best final change implied by the preceding context. Aim for the correct end-state now, not a transition plan.
Default Stance
- Prefer the optimal design over the easiest incremental patch.
- Replace superseded behavior completely.
- Leave the codebase simpler after the change, not more layered.
Clean Cutover
When new code replaces old code, delete the old path entirely:
- Old functions, modules, components, and routes
- Compatibility shims and adapters
- Migration code, dual-read, and dual-write paths
- Temporary flags or rollout switches kept only for safety
- Legacy tests, docs, config, and unused dependencies tied to the old approach
Rules
- No shortcuts, scaffolding, or intermediate stepping stones.
- No preserving old APIs or behavior unless the user explicitly asks for compatibility.
- Update callers to the new design directly.
- Remove dead code in the same change.
- If a true clean cutover is blocked by a hard constraint, state it explicitly and take the smallest possible compromise.