SF-in-Lean has a repeatable low-level proofreading pass — commas, agreement,
articles, markup slips — built around the principle that a decision is made
once: an edit the author declines is recorded in a ledger, never proposed
again in any chapter, and a category declined repeatedly is promoted to a
house rule that stops it being proposed at all. See PROOFREADING.md and
scripts/proofread.py in that repository.
This fits CSwL harder than it fits them. A translation pass makes systematic
errors — one term rendered wrong the same way in forty places, one
construction consistently over-literal — and a rejection ledger is exactly the
instrument that catches a systematic error after the second instance.
It is a build, not a copy: a script, a Claude skill, a git hook, and a ledger
file. Deferred until the chapters are stable enough that a low-level pass is
not overtaken by the next rewrite. The term list in STYLE-WRITING.md is the
seed of the house rules.
SF-in-Lean has a repeatable low-level proofreading pass — commas, agreement,
articles, markup slips — built around the principle that a decision is made
once: an edit the author declines is recorded in a ledger, never proposed
again in any chapter, and a category declined repeatedly is promoted to a
house rule that stops it being proposed at all. See
PROOFREADING.mdandscripts/proofread.pyin that repository.This fits CSwL harder than it fits them. A translation pass makes systematic
errors — one term rendered wrong the same way in forty places, one
construction consistently over-literal — and a rejection ledger is exactly the
instrument that catches a systematic error after the second instance.
It is a build, not a copy: a script, a Claude skill, a git hook, and a ledger
file. Deferred until the chapters are stable enough that a low-level pass is
not overtaken by the next rewrite. The term list in
STYLE-WRITING.mdis theseed of the house rules.