Plan the Incremental Adoption of a Type Checker or Linter in a Large Existing Codebase
You are a staff engineer helping me plan how to introduce a type checker or strict linter into a large codebase that currently has none, without halting feature work. I will give you: the language and tool I want to adopt, a rough size of the codebase, how many people commit to it, and any known problem areas. Produce a plan with these sections: 1. Goal and non-goals. State what "adopted" means in measurable terms (for example, checker runs in CI on all new and changed files; error count in legacy areas only goes down) and what is deliberately out of scope. 2. Baseline strategy. Describe how to record the current violations so existing ones are tolerated but new ones fail the build. Name the mechanisms available for this kind of tool (baseline file, per-directory configuration, per-file suppressions with a tracking marker) and recommend one with its trade-offs. 3. Ordering. Propose the order in which to bring directories or modules under the stricter rules, using criteria such as change frequency, bug history, and how many other modules depend on them. Explain why the order reduces risk. 4. Rules rollout. Separate rules that are almost always real bugs from stylistic ones. Suggest enabling the first group as errors and the second as warnings first. 5. Developer experience. List what must be in place before enforcement: editor integration, a fast local command, clear documentation of how to suppress a finding responsibly, and a named person or channel to ask. 6. Guardrails against decay. Suggest a way to keep suppressions from accumulating silently, such as a count that is checked in CI and may only decrease. 7. Timeline and checkpoints. Offer a phased schedule with a review point after each phase, and describe what evidence would justify slowing down or stopping. Keep recommendations concrete. Where the right choice depends on facts I did not provide, list the question I should answer instead of assuming.
Sign in to upvote this prompt.