os-sdlc: bring bin/ scripts under lint coverage (bin/os-sdlc is 1075 unlinted lines) [capture] #267

Closed
opened 2026-08-04 17:38:48 +00:00 by jared · 3 comments
Owner

Context

Noticed live while triaging #265: plugins/os-sdlc/bin/os-sdlc is 1075 lines and has never been linted. Double blind spot: (1) all lint invocations (os-sdlc lint, bin/lint-worklist) pass only project.yaml code_path — typically lib/ — so bin/ is never handed to rubocop; (2) even if it were, rubocop skips extensionless scripts unless AllCops Include lists them (neither plugins/os-sdlc/.rubocop.yml nor root .rubocop.yml has an Include). Other unlinted bin/ files: lint-worklist (184), os-sdlc-workspace (74), dup-sweep (36), dead-code-sweep (23). Fix likely: AllCops Include for bin/* in the plugin config + widen the lint path; see ADR-0091 (LintWorklistRubocopConfig is the single config authority) and ADR-0066. Expect a large offense backlog on first run — likely wants /os-sdlc:fix-lints treatment and possibly extracting bin/os-sdlc logic into lib/.

## Context Noticed live while triaging #265: plugins/os-sdlc/bin/os-sdlc is 1075 lines and has never been linted. Double blind spot: (1) all lint invocations (os-sdlc lint, bin/lint-worklist) pass only project.yaml code_path — typically lib/ — so bin/ is never handed to rubocop; (2) even if it were, rubocop skips extensionless scripts unless AllCops Include lists them (neither plugins/os-sdlc/.rubocop.yml nor root .rubocop.yml has an Include). Other unlinted bin/ files: lint-worklist (184), os-sdlc-workspace (74), dup-sweep (36), dead-code-sweep (23). Fix likely: AllCops Include for bin/* in the plugin config + widen the lint path; see ADR-0091 (LintWorklistRubocopConfig is the single config authority) and ADR-0066. Expect a large offense backlog on first run — likely wants /os-sdlc:fix-lints treatment and possibly extracting bin/os-sdlc logic into lib/.
Author
Owner

Work started (main branch, /implement session): AllCops Include for bin/* + widening the lint path per ticket, then offense backlog cleanup.

Work started (main branch, /implement session): AllCops Include for bin/* + widening the lint path per ticket, then offense backlog cleanup.
Author
Owner

Pipeline run complete on branch sdlc/267 (worktree .sdlc/worktrees/sdlc-267, commit f7d8d32). Reviewer verdict: APPROVE after two REQUEST-CHANGES rounds. Awaiting human merge gate. Note: the predicted offense backlog did not materialize -- bin/ was already clean (117 files, 0 offenses). ADR-0100 records the lint-scope decision.

Pipeline run complete on branch sdlc/267 (worktree .sdlc/worktrees/sdlc-267, commit f7d8d32). Reviewer verdict: APPROVE after two REQUEST-CHANGES rounds. Awaiting human merge gate. Note: the predicted offense backlog did not materialize -- bin/ was already clean (117 files, 0 offenses). ADR-0100 records the lint-scope decision.
Author
Owner

Resolution

Done: bin/ scripts brought under lint coverage: lint_path returns code_path plus Ruby files in its sibling bin/ as explicit rubocop file args; Lint#call and RubocopReportFetcher multi-path single-invocation; both the os-sdlc lint gate and bin/lint-worklist consume the widened set. AllCops Include deliberately NOT used (resolves relative to the defining config; breaks shared-config targets). ADR-0100 records the decision. Suite OS_SDLC_TARGET ambient-leak fixed in test_helper.

Evidence: Merge daeb1ad (branch sdlc/267, commit f7d8d32) on main; reviewer APPROVE after two REQUEST-CHANGES rounds; suite 716 runs 0 failures; worktree lint gate inspects 117 files (112 lib + 5 bin), 0 offenses -- predicted backlog did not exist

Follow-ups: none

## Resolution **Done:** bin/ scripts brought under lint coverage: lint_path returns code_path plus Ruby files in its sibling bin/ as explicit rubocop file args; Lint#call and RubocopReportFetcher multi-path single-invocation; both the os-sdlc lint gate and bin/lint-worklist consume the widened set. AllCops Include deliberately NOT used (resolves relative to the defining config; breaks shared-config targets). ADR-0100 records the decision. Suite OS_SDLC_TARGET ambient-leak fixed in test_helper. **Evidence:** Merge daeb1ad (branch sdlc/267, commit f7d8d32) on main; reviewer APPROVE after two REQUEST-CHANGES rounds; suite 716 runs 0 failures; worktree lint gate inspects 117 files (112 lib + 5 bin), 0 offenses -- predicted backlog did not exist **Follow-ups:** none
jared closed this issue 2026-08-05 21:54:53 +00:00
jared referenced this issue from a commit 2026-08-06 12:52:09 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
jared/cc-os#267
No description provided.