uncomment 3.7.0

A CLI tool to remove comments from code using tree-sitter for accurate parsing
# Generated by scripts/migrate_to_poly.py from .pre-commit-config.yaml + tool configs. Review before committing.

[defaults]
line_length = 120
line_ending = "lf"
final_newline = true
trim_trailing_whitespace = true

[discovery]
exclude = [
  "**/*.lock",
  "**/*.svg",
  "**/Cargo.lock",
  "**/go.sum",
  "**/package-lock.json",
  "**/pnpm-lock.yaml",
  "**/uv.lock",
  "fixtures/**",
  "node_modules/**",
  "npm-package/**",
  "pip-package/**",
  "target/**",
]

[lint.typos]
extend_words = { ba = "ba", edn = "edn" }
# The linting-directive fixtures spell words wrong on purpose, to prove a
# cspell/spell-checker directive keeps the comment carrying it alive.
extend_exclude = ["CHANGELOG.md", "tests/linting_directives_simple_test.rs"]

[lint.uncomment]
enabled = true
remove_todos = false
remove_fixme = false
remove_docs = false
use_default_ignores = true
preserve_patterns = [
  "SAFETY",
  "HACK",
  "WORKAROUND",
  "NOTE",
  "Copyright",
  "Licensed",
  "License",
  "SPDX",
  "Apache",
  "MIT",
  "WITHOUT WARRANTIES",
  "limitations under the License",
  "copyright",
  "licensed",
  "license",
  "apache",
  "you may not use this file except in compliance",
  "You may obtain a copy of the License",
  "you may obtain a copy of the license",
  "http://www.apache.org/licenses/LICENSE-2.0",
  "http://www.apache.org/licenses/license-2.0",
  "Unless required by applicable law",
  "unless required by applicable law",
  "distributed under the License",
  "distributed under the license",
  "AS IS",
  "as is",
  "without warranties",
  "specific language governing permissions",
  "limitations under the license",
]

# The code-quality tier measures structural budgets off the tree-sitter parse.
# These are the ceilings the codebase actually needs; the defaults (80-line
# functions, 1000-line files, nesting 4, complexity 20) fire on long-established
# config/CLI parsing and integration-test functions.
[lint.rust.quality]
file_too_long_lines = 2000
function_too_long_lines = 400
nesting_too_deep_depth = 6
cyclomatic_complexity_max = 30

# lazy-ignore fires on suppression directives (eslint/biome/v8 etc.) that lack a
# reason. These files carry directive *text* on purpose: preservation.rs is the
# catalog of markers uncomment must keep, and the test files feed that text to the
# removal engine and assert on the outcome.
[per-file-ignores]
"src/rules/preservation.rs" = ["lazy-ignore"]
"tests/linting_directives_simple_test.rs" = ["lazy-ignore"]
"tests/output_reporting_test.rs" = ["lazy-ignore"]

[lint.markdown.rumdl]
disable = ["MD033", "MD041"]

[hooks]
stages = ["pre-commit"]

[hooks.builtin]
lint = { exclude = [
  "**/*.lock",
  "**/*.svg",
  "**/Cargo.lock",
  "**/go.sum",
  "**/package-lock.json",
  "**/pnpm-lock.yaml",
  "**/uv.lock",
  "fixtures/**",
  "node_modules/**",
  "npm-package/**",
  "pip-package/**",
  "target/**",
] }
fmt = { exclude = [
  "**/*.lock",
  "**/*.svg",
  "**/Cargo.lock",
  "**/go.sum",
  "**/package-lock.json",
  "**/pnpm-lock.yaml",
  "**/uv.lock",
  "fixtures/**",
  "node_modules/**",
  "npm-package/**",
  "pip-package/**",
  "target/**",
] }
commit = { stages = ["commit-msg"] }
file_safety = { exclude = [
  "**/*.lock",
  "**/*.svg",
  "**/Cargo.lock",
  "**/go.sum",
  "**/package-lock.json",
  "**/pnpm-lock.yaml",
  "**/uv.lock",
  "fixtures/**",
  "node_modules/**",
  "npm-package/**",
  "pip-package/**",
  "target/**",
] }
cargo = true

[tools.shfmt]
enabled = true

[tools.actionlint]
enabled = true
[[hooks.sources]]
id = "ai-rulez"
git = "https://github.com/Goldziher/ai-rulez.git"
revision = "v4.9.3"
hooks = ["ai-rulez-validate"]