Drift vs Ruff¶
Drift and Ruff solve different problems.
Ruff is a local correctness, style, and linting tool. Drift is a deterministic architectural linter for cross-file coherence problems.
Short answer¶
Use Ruff to keep individual files clean.
Use drift when the missing question is whether the repository is fragmenting structurally across modules and over time.
Comparison¶
| Question | Ruff | Drift |
|---|---|---|
| Local linting and style | Yes | No |
| Fast feedback in a single file | Yes | No |
| Cross-file coherence | No | Yes |
| Pattern fragmentation across one module | No | Yes |
| Layer and import boundary drift | No | Yes |
| Near-duplicate structural patterns | No | Yes |
| Architectural findings in SARIF/JSON | Indirectly, depending on rule set | Yes |
When teams use both¶
The normal path is not Ruff or drift.
The useful path is Ruff and drift:
- Ruff keeps local code quality consistent.
- drift highlights architectural erosion that local rules do not model.
Example difference in practice¶
If a service has four incompatible error-handling shapes inside one module, Ruff may consider all four variants syntactically fine.
Drift can still report the fragmentation as a structural finding because the issue is inconsistency, not syntax.