Test the lint gate test_command and ArtifactDir lint paths after LintTarget deletion #824

Open
opened 2026-09-29 15:41:15 +00:00 by jared · 0 comments
Owner

Problem

#802 deleted Project::LintTarget and its test file tests/model/project/lint_target_test.rb. Four members moved to new owners, and no test covers them now. The contract-auditor did not judge the move, because implementation 77 stopped at suite-check.

Before (LintTarget) After
ledger_path ArtifactDir#lint_ledger (model/project/artifact_dir.rb)
batch_dir ArtifactDir#lint_batch
residual_dir ArtifactDir#lint_residual
test_command built inline in LintWorklist.run_gate (controller/lint_worklist.rb)
# controller/lint_worklist.rb, after #802
test_command = "cd #{Shellwords.escape(project.root.to_s)} && #{target.test.command}"

The controller now composes the command that the lint gate runs. A decision about how to run a target's tests is not controller work. Decide whether a model (for example Target or Project) owns it.

Reproduce

n/a: coverage and placement gap, not a runtime failure. Suite is green at c70f7e8d.

Origin

  • Trigger: /os-sdlc:implement #802, implementation 77, suite-check error, hand-finished
  • Improvised this session: hand-fixed tests/ticket_573_lint_config_test.rb (removed paths: []); merged without the contract-auditor pass (user decision A, 2026-09-29)
  • Chain: members untested ← test-writer deleted lint_target_test.rb without moving its cases (ticket named no new owner) ← #802 Approach said "ArtifactDir for whatever else it holds" (DESIGN: ADR-0245)
  • Root candidate: this ticket
  • Where: plugins/os-sdlc/lib/os_sdlc/controller/lint_worklist.rb
  • Session: 175d0e16-79aa-402d-8a69-56c74e4d5764
  • Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os--claude-worktrees-crc-pass-os-sdlc/175d0e16-79aa-402d-8a69-56c74e4d5764.jsonl
## Problem #802 deleted `Project::LintTarget` and its test file `tests/model/project/lint_target_test.rb`. Four members moved to new owners, and no test covers them now. The contract-auditor did not judge the move, because implementation 77 stopped at suite-check. | Before (LintTarget) | After | |---|---| | `ledger_path` | `ArtifactDir#lint_ledger` (`model/project/artifact_dir.rb`) | | `batch_dir` | `ArtifactDir#lint_batch` | | `residual_dir` | `ArtifactDir#lint_residual` | | `test_command` | built inline in `LintWorklist.run_gate` (`controller/lint_worklist.rb`) | ```ruby # controller/lint_worklist.rb, after #802 test_command = "cd #{Shellwords.escape(project.root.to_s)} && #{target.test.command}" ``` The controller now composes the command that the lint gate runs. A decision about how to run a target's tests is not controller work. Decide whether a model (for example `Target` or `Project`) owns it. ## Reproduce n/a: coverage and placement gap, not a runtime failure. Suite is green at c70f7e8d. ## Origin - Trigger: /os-sdlc:implement #802, implementation 77, suite-check `error`, hand-finished - Improvised this session: hand-fixed `tests/ticket_573_lint_config_test.rb` (removed `paths: []`); merged without the contract-auditor pass (user decision A, 2026-09-29) - Chain: members untested ← test-writer deleted `lint_target_test.rb` without moving its cases (ticket named no new owner) ← #802 Approach said "ArtifactDir for whatever else it holds" (DESIGN: ADR-0245) - Root candidate: this ticket - Where: plugins/os-sdlc/lib/os_sdlc/controller/lint_worklist.rb - Session: 175d0e16-79aa-402d-8a69-56c74e4d5764 - Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os--claude-worktrees-crc-pass-os-sdlc/175d0e16-79aa-402d-8a69-56c74e4d5764.jsonl
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#824
No description provided.