Roadmap: what's shipped and what's next
alint is planned in versions with a fixed scope and no dates, because a missed date does more harm than none. Work that doesn't fit a version moves to a later one, and the plan changes in public commits to the alint repository.
Planned next
- v1.0
Stability
The config format will stop changing, the public API of the
alint-corelibrary will be frozen, and the docs will keep a version for each release. - Later
Plugins and duplicate code
Plugins compiled to WebAssembly, run in a sandbox and installed from a signed registry, and a duplicate-code detector that works across languages. Neither has a version yet.
Recently shipped
- v0.22 7 November 2026
Cross-file checks on one layer
The cross-file rule that compares values between files now runs on the layer that
key_paritybrought in v0.21, and the old code is gone. Findings are unchanged on 106 real repositories, and checks run as fast as in v0.21. A finding whose path was read from the environment now gets a baseline fingerprint without the path, so a baseline file no longer gives the path away; v0.23 stops accepting the old form, so re-runalint baselinebefore upgrading to it.fix --dry-runpredicts files created through a symlink that leads nowhere yet. For library users, threealint-coretypes are now built through constructors instead of struct literals. - v0.21 1 November 2026
Keys in step
A new rule,
key_parity, keeps locale and environment files in step: every peer must declare the same keys as a reference file, across JSON, YAML, TOML,.env, INI, Java properties, Android string resources and .NET.resx. It compares keys, never values, and can treat CLDR plural forms as one key. Underneath is a new internal layer that later cross-file rules will share, and a first draft of the contract that plugins will use once alint can load them. The v0.21.1 patch stops a.gitignoreabove the repository from hiding the tree and makes configuration errors readable again without showing values read from the environment. The v0.21.2 patch makesfix --dry-runandfix --diffagree withfixabout creating files in more layouts, and keeps more values read from the environment out of reports and log lines. - v0.20 21 October 2026
Tests for your policies
alint testruns your rules against small fixture repositories through the real engine, and every bundled ruleset ships with tests of its own.alint explainwith--traceshows why one rule passed or failed without leaking sensitive values, and each config can name the config version and the minimum alint it needs. The v0.20.1 patch makes common checks faster and warns when a content pattern's^or$anchors to the whole file instead of a line.
v0.1 to v0.19 are on the full roadmap, and every release's changes are in the changelog.
What alint won't do
alint checks the files in a repository and the values inside them. It doesn't parse the code in those files. For these jobs, use a tool built for them:
| Out of scope | Use instead |
|---|---|
| Checks that parse your code: names, unused imports, types | Your language's linter: ESLint, Clippy, Ruff, golangci-lint, mypy |
| Security analysis of code: tainted data flow, injection, dangerous APIs | Semgrep, CodeQL |
| Security policy for Terraform, Kubernetes and Docker resources | Checkov, Conftest, Trivy |
| Secrets such as API keys and tokens in files and git history | gitleaks, TruffleHog |
| Installing and running a set of other linters, each with its own toolchain | MegaLinter, pre-commit, lintrunner |
| Running code generators to check what they produce | Your build. alint runs one only if your own config adds a generated_file_fresh or command_idempotent rule |
| Dependencies between modules and packages: unused dependencies, version conflicts, package cycles | cargo-deny, knip, madge, bazel mod |
Two jobs near that line are in scope. The commit rules check every commit in a range: messages, sign-offs, fixups, authors and GPG signatures. And file_graph with require: acyclic finds cycles between files. Compare covers the tools whose job overlaps with alint's.
How versions are planned
- A larger feature starts as a design document in docs/design before any code.
- A new rule kind gets built when several repositories need it. A list in the alint repository counts the repositories behind each candidate.
- Questions and feature requests go to GitHub discussions, and bugs to GitHub issues.
Watch GitHub releases for new versions, or subscribe to the release feed.