CEP-0044: First-Class Lint Engine¶
Draft
Draft proposal for a full compiler-integrated lint engine. V1 catalogs lintable patterns but does not require a lint engine, lint configuration, or source-level suppression.
Summary¶
Catalyst should eventually define a first-class lint engine architecture with categories, severities, configuration, autofixes, and project integration.
V1 keeps linting advisory: lint identities and suggested severities are cataloged, but lint findings are optional tooling output and do not define source validity.
Example¶
Possible future configuration shape:
[lint]
unused = "warn"
resource_leak = "deny"
style.naming = "allow"
[lint.autofix]
organize_imports = true
The proposal must decide configuration location, severity model, local suppressions, generated-code behavior, autofix representation, and whether Catalyst wants a source-level suppression attribute such as a future @allow.
Motivation¶
Linting is part of the language experience. A first-class engine can keep warnings, style guidance, resource checks, and migration help consistent across CLI and IDEs.
Proposed Direction¶
The proposal should cover:
- lint identities and categories;
- default lint sets;
- severities and promotion/demotion;
- project/module configuration;
- local suppressions, including whether to add a source-level suppression attribute such as
@allow; - autofix representation;
- phase ownership and generated-code behavior.
V1 Compatibility¶
V1 may document and optionally implement targeted lint behavior without committing to the full engine architecture. The active cross-domain lint identities live in Lint Catalog.