# `mix tack.rules_check`
[🔗](https://github.com/giggleton/pica/blob/v0.1.0/dev/mix/tasks/tack.rules_check.ex#L1)

Runs `Tack.RulesCheck` over the working tree and fails the gate on any finding.

    mix tack.rules_check [--tighten]

Three checks: CLAUDE.md may not exceed its line budget; every `paths:` glob in
`.claude/rules/*.md` must match at least one file; and the number of `lib/**/*.ex` files no glob
covers may not exceed its budget. The budgets live in `.claude/rules/BUDGET` and are ratchets —
`--tighten` lowers each to today's measurement and never raises one. Raising a budget is a
deliberate edit to that file, visible in the diff.

Globs are expanded with `Path.wildcard/2` against the working tree, dotfiles included, which is
what the harness sees too: an untracked file counts. The rationale for each check is on
`Tack.RulesCheck`; this task owns the IO.

A `mix quality` step; runs in CI.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
