Development record
docs-lint enforces the writing style guide's machine-checkable rules: an em dash inside a list item, a lower-case letter opening a list lead-in after its colon, and a capital letter after a semicolon are flagged as findings, with code spans and fenced blocks masked, so the canonical style guide's machine-enforceable subset is a shipped gate rather than a review habit — and the guide marks a rule machine-enforced only once its lint ships
⚠️ Superseded by ADR-54 (the em-dash core shipped as the
punctuation/em-dash-in-list-itembanned token via iss-2608280706531199; corpus evidence showed the casing rules have zero true positives with unclosable false-positive classes, so they arereviewby nature and the staged lint is not built; the continuation-line residual has zero instances and reopens as a fresh intent on first regression). Retired 2026-08-28 fromdrafts/at the planning interview — never planned, never specced. Preserved as historical record per the supersession lifecycle.
Typed links: refines the docs-lint rule family (native banned-token and
structural rules; this adds a prose-style family). The canonical style guide
lands at docs/reference/writing-style.md in the same change that files this
draft; the guide labels these rules review until this intent ships
(enforcement-claims-are-facts).
Press Release
Seeded from a quoted-text intent capture. Expand into the full press-release narrative before planning.
Why This Matters
The style guide's punctuation rules (no em dash inside a list item — use a
colon; a capital letter after a colon; lower case after a semicolon) are
mechanical enough for a deterministic check, and a rule that is checked by
machine stays followed long after review attention moves on. The
enforcement-claims-are-facts principle requires the guide to label each rule
honestly; shipping this lint is what flips the punctuation labels from
review to machine-enforced.
SOTA
- Native docs-lint now; Vale is the named preferred future upgrade path (maintainer ruling, 2026-08-22). The rules land as native docs-lint checks — no new dependency, same gate as the existing families. Vale (the open-source prose linter whose packages ship whole style guides as configuration) is recorded here as Related/SOTA: if abcd ever wants full-guide enforcement rather than a house subset, adopting Vale beats reimplementing it. That adoption is not this intent.
- Adopt-not-author exploration (run at the SOTA pass): Candidates for
adopting an existing open-licensed writing guide rather than authoring more
house rules — the Google developer-documentation style guide, the Microsoft
Writing Style Guide, the GitLab documentation style guide, and the
errata-ai/styles packages that ship guides as Vale configurations. Design
direction: An abcd-managed repo chooses among guides via its
.abcd/rules.jsonoverride — the existing per-repo mechanism; point, don't copy. Print references the maintainer rates are copyright-bound: consult-only via the private sources corpus if acquired, never redistributed or quoted at length; open-licensed guides are the adoptable ones.
Acceptance Criteria
BDD format, per the itd-1 discipline.
- Given a docs page whose list item contains an em dash outside any code
span, when
abcd docs lintruns, then anem-dash-in-list-itemfinding names the file and line — and a test watched the rule fail before the change and pass after. - Given a list lead-in whose text after the colon opens lower-case, or a clause after a semicolon opening with a capital, when the lint runs, then the case rule flags it.
- Given the same tokens inside a code span, fenced block, or frontmatter, when the lint runs, then no finding is emitted (masking).
- Given the lint ships, when the style guide is read, then the punctuation rows are labelled machine-enforced with the shipped rule ids, and no rule anywhere in the guide claims enforcement its lint does not perform.
Open Questions
- Whether the case-after-colon rule is scoped to list lead-ins only (the low-false-positive core) or extended to running prose, where legitimate exceptions multiply.
- Whether an adopted open-licensed guide (see SOTA) replaces parts of the
house guide, and how a managed repo's
.abcd/rules.jsonnames its chosen guide.
Audit Notes
Empty. Populated by intent-auditor when intent moves to shipped/.
Frontmatter
| id | itd-141 |
|---|---|
| type | intent |
| lifecycle | superseded |
| kind | standalone |
| severity | minor |
.abcd/development/intents/superseded/itd-141-docs-lint-enforces-the-writing-style.md
open on GitHub ↗ · commit history ↗
Referenced by2
mentions8
- dcn-26082200000000082026-08-22 — Writing style guide: One canonical reference page
- dcn-26082800000000012026-08-28 — Punctuation enforcement stays mechanical-only (adr-54): the
- iss-2608280706531199docs/ violates the writing-style em-dash rule in list items across explanation, how-to and reference pages; the rule is review-only, so nothing gates it
- iss-2608280801427648whether an adopted open-licensed style guide (Google, Microsoft, GitLab, errata-ai/Vale packages) replaces parts of the house writing guide, and how a managed repo names its chosen guide in .abcd/rules.json: routed out of itd-141 at its closure (adr-54); files as its own intent if it goes live
- iss-2608280801428646writing-style guide forward-claims staged masking lints (itd-141) that corpus evidence shows cannot ship as machine checks: the staged-lints sentence and the two lint-staged row labels over-state future machinery
- iss-2608280813441672the rules-loader DOCUMENTATION domain text in .abcd/rules.json still claims the punctuation lint is staged as itd-141, which adr-54 falsified at the planning interview
- itd-1Every Intent Has Acceptance Criteria; Every Audit Verifies Them
- itd-145An adopted idea cannot ship uncredited: abcd enforces its own acknowledgement convention mechanically, so a record that cites an external source, standard, or tool without a matching ACKNOWLEDGEMENTS entry fails the record gate and names what is missing. 'Credit in the same change that lands it' stops depending on the author remembering. Seeded by a real miss in this repo: the maritime signal-flag standard the livery logo encodes and the NO_COLOR convention the colour ladder implements both shipped before their credit landed, and nothing caught it.