2026-09-20 — Lint pass: housekeeping checks, three tool bugs fixed
This is a report on today's automated session for the TKG English Learner's Dictionary, an original English-English dictionary written for intermediate and advanced learners, built one word (or "entry") at a time by language models and stored as one file per word.
What kind of session this was
The project runs unattended sessions ("Routine runs") a few times a day. Each run picks one of several jobs — drafting new entries, reviewing existing ones, building the website, or a periodic housekeeping pass called "lint." A built-in selector chose lint for today's run because five runs had passed since the last one, which is the project's rule of thumb for how often to check on the machinery itself rather than the dictionary's content.
At the start, the session checked for unfinished work left by a previous run (an open pull request that never got merged, or an abandoned branch). There was none — the previous run had already finished cleanly, and the code was already caught up with the shared main copy of the project.
What the lint pass checked
Lint mode runs a battery of automated checks over the whole project and then reads several key pages by eye, looking for things a script cannot catch — contradictions between pages, stale notes, missing cross-links. Today's results:
- Word-count and line-count limits on key files: all within limits.
- Every link between pages in the project's internal wiki: all resolve correctly.
- Cross-references between dictionary entries (e.g., "see also," "compare with"): the tool added two missing links it found (on the entries for something and themselves) and reported no errors.
- A vocabulary check that flags words used in definitions that are not on the dictionary's own approved word list: no real problems, only expected warnings about proper nouns and technical terms that don't need entries.
- Leftover temporary files from abandoned work: three stale files were cleaned up.
- A measurement of how reliable the two AI reviewers who check each new entry have been, broken down by the type of issue they raise. Five categories were switched off in an earlier run because those reviewers were wrong more than 70% of the time in them (for example, one reviewer kept objecting to a house style rule about how many examples a phrase needs, even though the rule allows it). Today's re-check confirmed those five switches are working as intended — no new complaints are trickling in from the disabled categories — and no new category needs switching off.
Three small bugs fixed in the project's own tools
Earlier runs had noticed three problems with the scripts the project uses and, following the project's rule against making changes on a whim, had written them down for a scheduled lint pass to actually fix. Today was that pass:
- A silent reviewer failure could look like a real "all clear." When an AI reviewer's response got cut off or came back malformed, the tool recorded that reviewer as having found zero problems — indistinguishable from an entry that genuinely had no issues. Fixed: the entry-checking tool now specifically detects this failure case and blocks the entry from being marked "reviewed" until that reviewer's check is properly re-run.
- Recording a decision about one reviewer comment could get attached to the wrong comment. When a reviewer raised two separate concerns about the same part of an entry, the tool that logs "I agree" or "I disagree" with a reviewer could only ever record the decision against the most recent of the two concerns, even if the note explained the other one. Fixed: the tool now lets the session specify which exact wording it's deciding about, and refuses to guess when it's ambiguous.
- A word-classifying helper defaulted to the wrong grammatical category. When queuing up new candidate words the dictionary should eventually cover, a helper script guesses each word's part of speech from its spelling. Words like additional (an adjective) were being mis-guessed as nouns with no warning that it was only a guess. Fixed: the script now recognizes more adjective patterns directly, and flags any remaining guesses so a future drafting session double-checks before writing the entry.
Each fix came with new automated tests; the project's full test suite grew from 292 to 297 tests, and all pass.
What this means, and what's next
No dictionary content changed today beyond two small added cross-reference links — this was pure infrastructure maintenance, which is what lint mode is for. The three tool fixes reduce the chance of a future session being fooled by bad data (an unreviewed entry that looks reviewed, or a mis-attributed decision record).
Nothing here needs the owner's attention. The three items already flagged for the owner remain open and unchanged: whether to turn on the public website (GitHub Pages), and two small style questions about pronoun entries and visual formatting, both listed in the project's open-questions page with the working assumptions the project is using meanwhile.
The next lint pass is due in about five runs. The next scheduled check of whether entries look copied from existing dictionaries (an "originality check") is due within the next several runs, as tracked automatically by the project.