aidd-lint rule: sentence-complexity #105
Labels
No labels
P0
P1
P2
P3
bug
create
delete
enhancement
filed-by/agent
filed-by/user
frozen
lint-rule
needs-info
needs-triage
next
plugin/cc-architect
plugin/os
plugin/os-adr
plugin/os-aidd-lint
plugin/os-backlog
plugin/os-context
plugin/os-doc-hygiene
plugin/os-sdlc
plugin/os-vault
project/cc-os
ready-for-agent
ready-for-human
recurring
review
update
waiting
wayfinder:grilling
wayfinder:map
wayfinder:map
wayfinder:research
wayfinder:task
wayfinder:task
wontfix
worklist/deviations
worklist/lint-rule
worklist/new-implement-build
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
jared/cc-os#105
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
Sentences too long/complex to parse or grep. Verbatim,
plugins/os-sdlc/skills/mine-lints/SKILL.md:47-52as of5ea6bbf(trimmed inc6a4177):One ~40-word sentence with a six-item parenthetical. Pre-AI readability tooling (Flesch-Kincaid, Gunning fog -- the SEO-era grade-level scores) is pure arithmetic over word/sentence/syllable counts and applies unchanged; retrieval and instruction-following degrade on long clause chains the same way human skimming does.
Detection
.aidd-lint.yml(defaults:max_words_per_sentence: 30,max_grade_level: 12advisory). Tunable./[.!?]\s+(?=[A-Z"'(])/` (deterministic heuristic; abbreviation false-splits acceptable at this threshold).max_words_per_sentence-> offense.max_grade_level-> advisory-severity offense."<file>:<line>: sentence is <N> words (max <T>). Split it -- one instruction per sentence.""<file> section '<name>': reads at grade <G> (advisory max <T>). Consider shorter sentences and plainer words."Correction
Pass/fail examples
plugins/os-sdlc/skills/implement/SKILL.md; a 40-token line inside a code fence; a long literal path in inline code (stripped before counting).Provenance
mine-lints simplification 2026-07-23; user-proposed sister rule to step-bulk. Part of the aidd-lint system (see mapping ticket).
Implementation plan
AUDIT DEFAULTS FIRST: check Ruby readability gems (e.g.
odyssey) before hand-rolling FK scoring; the words-per-sentence check is trivial either way. TDD with fixtures.Implemented on branch aidd-lint/tier-1 (plugins/os-aidd-lint, cop: sentence_complexity.rb). 55-test suite green; report-only corpus scan run. Awaiting human review — open items noted on #109.
Implemented on branch aidd-lint/tier-1 (plugins/os-aidd-lint, cop: sentence_complexity.rb). 55-test suite green; report-only corpus scan run. Awaiting human review — open items noted on #109.
Implemented on main:
lib/aidd_lint/cops/sentence_complexity.rb, registered inregistry.rb(SentenceComplexity), tests attests/cops/sentence_complexity_test.rb(13 runs, 33 assertions, 0 failures). Closing.