Lint Engine
The linter is a pure function:lint(profile, document, context) → results[]. No network calls, no LLM, no database lookups. It runs nine independent check functions and concatenates their results.
Check functions
| Function | What it checks | Source |
|---|---|---|
checkLimits | Page and word counts against judge/local rule limits | Standing order + EDNY LR 7.1(c) |
checkFormat | Font size, margins, line spacing | EDNY LR 7.1(b) |
checkStructural | Required document sections (caption, signature, TOC, etc.) | FRCP + EDNY LR (21 declarative checks) |
checkPrivacy | PII redaction (SSN, DOB, minor names, financial accounts) | FRCP 5.2(a) |
checkWordCountConsistency | Certificate word count vs. actual (5% tolerance) | EDNY LR 7.1(c) |
checkCourtesyCopies | Whether courtesy copies are required | Standing order |
checkPreMotionConference | PMC requirements, exemptions, letter format | Standing order |
checkFilingGate | Whether motions must be fully briefed before filing | Standing order |
checkBundling | Whether papers must be filed together | Standing order |
How limits work
Page limits and word limits are independent constraints — both apply simultaneously. A document can pass the word limit but fail the page limit, or vice versa. Whendocument_scope is brief_opposition, the engine looks up limits under brief_support (opposition briefs share the same limits as support briefs).
Structural checks
The 21 structural checks are defined declaratively with trigger conditions:| Trigger | When it fires |
|---|---|
always | Every filing |
motion | Any motion filing |
Rule_56 | Summary judgment motions |
Rule_12 | Rule 12 motions |
discovery | Discovery motions |
motion_to_amend | Motions to amend |
motion_in_limine | Motions in limine |
pages_gte_10 | Documents with 10+ pages |
opposing_pro_se_Rule_56 | SJ motions against pro se parties |
opposing_pro_se_Rule_12 | Rule 12 motions against pro se parties |
Pre-motion conference logic
PMC checking follows a specific decision tree:- If PMC is not required for dispositive motions → skip
- If the filing party is pro se and
"pro_se"is in exemptions → skip (with INFO message) - If the motion type is in the exemptions list → skip (with INFO message)
- If PMC has been completed (
pmc_completed: true) → PASS - Otherwise → FAIL with letter format requirements
response_required, response_days).
Result statuses
| Status | Meaning |
|---|---|
FAIL | Rule violated — document is non-compliant |
PASS | Rule satisfied — included for transparency |
ACTION_REQUIRED | Not a violation, but requires attention (e.g., “submit courtesy copy”) |