Development record
Bundle a WRITING rule domain so the review-only writing-style rules reach agents in every managed repo. docs/reference/writing-style.md holds the canonical rules, but none of the eight bundled domains (COMMITTING, DOCUMENTATION, ROADMAP, ISSUES, INTENTS, LIFEBOAT, PII, OPINIONS) carries them, so an agent in a managed repo never sees them unless the repo declares a custom domain. The four review-only rules (capital after a colon, lower case after a semicolon, serial comma, no em dash inside a list item) are exactly the ones no lint catches (adr-54), so injection is the only enforcement they can have; the observed effect in TeachingPrep is repeated lowercase-after-colon in agent-written handover files and ledger text from two different agent sessions. TeachingPrep has added a repo-override WRITING domain in .abcd/rules.json as the interim; a bundled default with the same rules and a broad recall list (write, draft, prose, note, handover, readme, markdown, document, report, message, edit, style) would replace it, and the repo override should then be removed. Relation to iss-2609012039220931: a bundled domain with common-word recall is exactly the case where recall breadth is a design choice rather than an abuse, so decide the two together.
Bundle a WRITING rule domain so the review-only writing-style rules reach agents in every managed repo. docs/reference/writing-style.md holds the canonical rules, but none of the eight bundled domains (COMMITTING, DOCUMENTATION, ROADMAP, ISSUES, INTENTS, LIFEBOAT, PII, OPINIONS) carries them, so an agent in a managed repo never sees them unless the repo declares a custom domain. The four review-only rules (capital after a colon, lower case after a semicolon, serial comma, no em dash inside a list item) are exactly the ones no lint catches (adr-54), so injection is the only enforcement they can have; the observed effect in TeachingPrep is repeated lowercase-after-colon in agent-written handover files and ledger text from two different agent sessions. TeachingPrep has added a repo-override WRITING domain in .abcd/rules.json as the interim; a bundled default with the same rules and a broad recall list (write, draft, prose, note, handover, readme, markdown, document, report, message, edit, style) would replace it, and the repo override should then be removed. Relation to iss-2609012039220931: a bundled domain with common-word recall is exactly the case where recall breadth is a design choice rather than an abuse, so decide the two together.
Remedy grounds (2026-09-29)
- adr-54 keeps these four rules out of the lints, so injection is the only enforcement they can have; the open choice is recall breadth, which is local policy, and no outside practice was consulted.
- Rejected: a lint for the four rules, which adr-54 rules out.
Frontmatter
| id | iss-2609200618138053 |
|---|---|
| type | issue |
| lifecycle | open |
| severity | minor |
.abcd/work/issues/open/iss-2609200618138053-bundle-a-writing-rule-domain-so-the.md
open on GitHub ↗ · commit history ↗
mentions2
- adr-54Punctuation enforcement stays mechanical-only
- iss-2609012039220931A custom domain with `"recall": ["the"]` in `.abcd/rules.json` fires on ordinary English prose (reproduced at v0.7.0: it injected on "update the roadmap"), so a repository can make any domain — and any override text — inject on nearly every prompt. Recall matching (`termHit`, internal/core/rules/rules.go) is word-bounded and stemmed but has no notion of a keyword too common to be a signal. Whether to refuse or warn on stop-word recall terms, and against which list, is a policy question rather than a mechanical fix; captured so the decision has a marker. Sibling of GHSA-22f8-qf5r-gjgq: the provenance marker that fix adds makes such a domain visible as a repo override but does not stop it firing.