# Comment limits: the measurement, the options, and where we are This measured what the comments in `src/` cost, tested the three claims that prompted the question, priced every cap we could set, and now records the decision taken and what is left to do. **Decided and shipped.** A comment may run at most **12 lines**, and one of its lines at most **100 columns**. `deno task check:comments` enforces both in `precommit`; the numbers live in `scripts/check-comments/run.ts` and are meant to come down. See [Where we are](#where-we-are) for the remaining steps. **Decided and shipped.** A comment also holds to the mechanical Simplified Technical English rules: contractions, banned modals, present-perfect forms, semicolons, participles after a comma, the wordy list, and sentences past 25 words. `deno task check:comment-ste` enforces these in `precommit` against per-file counts that only fall. Quoted code and quoted error messages keep their own spelling. A bullet's marker is not a word, and the sentence after it holds to the limit. A table in a comment follows the Markdown rules, so the checker does not read a real table's rows. A fenced code block and an example body are not prose. The checker reads the explanation after a directive, and does not read the directive itself. The judgement half — a word too fancy, a sentence that says the wrong thing — stays with the person. All measurements come from `src/` at commit `470b47e` (1,181 files, 161,904 lines), counted with the repo's own lexer (`scripts/typescript-lex.ts`), so a `//` inside a string is never miscounted. They describe the tree **before** the first ratchet step, which is what makes the costs below meaningful. **One unit, used throughout.** A "comment" below means one comment as the lexer sees it — a `/* */` or `/** */` block, or a single `//` line — and excludes the machine-read directives, which are not prose and cannot be deleted. Every table in this document counts that way, so a cap in one table can be compared with a cost in another. Two other counts exist and are reported once, here, so they are never confused with the working unit: - **12,045** comments including directives, of which **630** are directives: 542 `jscpd:ignore`, 80 `