os-aidd-lint tier1 gap: sentence-complexity misses hard-wrapped sentences #143
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#143
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?
Context
Found by
/os-aidd-lint:mine-blindspots(f7c52e1) on 2026-07-26 — causal bucket (a): "rule exists, logic gap" — tier-1 cop bug, not new rule.Summary
The
sentence-complexitycop only measures sentences within a single physical line. When a logical sentence is hard-wrapped across multiple lines, each fragment is measured separately and stays under the 30-word threshold, even if the complete sentence exceeds it.Root cause
Code:
plugins/os-aidd-lint/lib/aidd_lint/cops/sentence_complexity.rb:41check_sentence_lengthsiteratesdocument.lines.each_with_indexand splits sentences WITHIN each physical line. Logical sentences spread across N hard-wrapped lines are never reassembled, so each fragment remains under threshold.Observed missed instances
Fix direction
Join hard-wrapped continuation lines into logical sentences before measuring.
Caveat on the fix directions in this batch, 2026-07-26.
The code citations in #143-#147 were independently verified against source. The "fix direction" lines were NOT — they were written from reading the regexes, not from testing a fix. Treat them as starting points, not specifications. Specifically: the
hard-wrapcop fires on the same wrapped paragraphs these gaps involve (49 hits in os-doc-hygiene/skills/check/SKILL.md alone). If the house style is genuinely one-logical-line-per-paragraph, thenhard-wrapis the primary offense and several of #143-#147 are partly downstream of files violating it. That may change the sequencing — consider whether fixing hard-wrap compliance across the corpus reduces the surface of the other gaps before implementing per-cop joins.Verified: HardWrap cop (plugins/os-aidd-lint/lib/aidd_lint/cops/hard_wrap.rb) already exists, is Autocorrectable, and its
joinalready merges wrapped continuation lines into one physical line, preserving list-marker starts via BLOCK_START. Confirmed live: running aidd-lint against os-backlog/skills/capture and route/SKILL.md shows HardWrap firing on the exact lines cited here (e.g. capture:21, route:12). Running the HardWrap autocorrect across the corpus first will eliminate the currently-observed instances (the corpus becomes compliant, so sentence-complexity sees whole sentences on one line). This doesn't fix the underlying sentence-complexity parser gap for any future file that transiently violates hard-wrap, but it does shrink/reshape this ticket's scope to defense-in-depth. Recommend sequencing the corpus HardWrap fix before implementing this cop's join logic.This was generated by AI during triage.
Implemented via os-sdlc pipeline (test-writer -> red -> programmer -> green -> ac-lint -> lint -> reviewer APPROVE). Merged to main in
6f03749.