code-baseline 1.6.0

Enforce architectural decisions AI coding tools keep ignoring
Documentation
# r/webdev

**Title: CI tool that drives legacy code to zero and enforces the rules ESLint can't**

anyone who's tried to migrate a large codebase off an old pattern knows this: you can't touch everything at once. you chip away at it over weeks. then a PR lands with new code following the old pattern and the count goes back up.

ESLint can't help here because it's pass/fail. either every occurrence is an error or you ignore them all. there's no "allow the 200 existing ones but block new ones."

built Baseline for this. you set a ceiling on how many times a pattern can appear across your codebase. migrate some, lower the ceiling. CI blocks any PR that increases the count.

```toml
[[rule]]
id = "migrate-legacy-fetch"
type = "ratchet"
pattern = "legacyFetch("
max_count = 200
glob = "src/**/*.ts"
message = "Migrate to apiFetch"
```

next sprint you set it to 180. then 150. eventually 0. done.

other stuff it handles that ESLint can't:
- ban patterns scoped to specific paths ("no db calls in page files" is one line of config)
- ban dependencies in package.json directly, not just source imports
- proximity rules ("every DELETE query needs an orgId within 80 lines")
- require files to exist (LICENSE, CI config) or forbid them (.env)

TOML config, ships presets (`security`, `ai-codegen`), scans only changed files on PRs.

```
npx code-baseline scan
```

rust, single binary, no node runtime. open source MIT: https://github.com/stewartjarod/baseline