Delete lint_paths: a target lints only its own path (T6, coding map) #802
Labels
No labels
P0
P1
P2
P3
bug
category/code-change
category/cross-repo
category/eval-run
category/investigation
category/no-test-target
category/owner-ruling
category/prose-artifact
category/recurring-chore
category/structure
category/umbrella
crc-refactor
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
rule-proposal
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#802
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
After #790 to #795 a Project holds many Targets, and each Target resolves its test and code paths from itself.
lint_pathsis the last key that still resolves from the repo root:Project::LintTarget#configured_lint_pathsjoins every entry to the project root (model/project/lint_target.rb:40). The os-sdlc target carrieslint_paths: [tests, lib]only because ADR-0103 (now Superseded by ADR-0224) assigned repo-root code to os-sdlc through that key. The target's own path (<root>/plugins/os-sdlc) already covers everything the target owns, includingplugins/os-sdlc/tests, so the key has no remaining job. Its only production reader is the lint worklist (controller/lint_worklist.rb:27,32).User ruling 2026-09-29 (session 175d0e16), superseding the 2026-09-28 option A: lint only the target. Delete
lint_paths; add norepo-roottarget. Rootbin/,lib/,tests/leave pipeline lint scope; a target is added only when a ticket first works on root code.Reproduce
n/a: design change. Run on maps/coding.yaml.
Approach
Delete the
lint_pathsfeature end to end.Project::LintTargetdissolves intoTarget#lint_path(root)(returnsFile.join(root, path)) andArtifactDirfor whatever else it holds.Project::Lintlosespaths:.parser/project/config/document.rbFLAT_KEYSloseslint_paths. The root.sdlc/project.yamlos-sdlc entry loses itslint_paths:line.Files: model/project/lint_target.rb, model/project/target.rb, model/project/lint.rb, controller/lint_worklist.rb, parser/project/config/document.rb, the root .sdlc/project.yaml, and the tests that pin lint paths (
grep -rln "lint_path" plugins/os-sdlc/tests).ADRs: run /os-adr:find on the files above before the first edit. Record an ADR only if an Accepted ADR still assigns root code to a target through
lint_paths.Required work:
Project::LintTargetis deleted;Target#lint_path(root)returns the target directory only. — check:! grep -rn LintTarget plugins/os-sdlc/liblint_paths. — check:! grep -rn -E "lint_paths|lint\.paths" plugins/os-sdlc/lib.sdlc/project.yamlhas nolint_pathskey. — check:! grep -n lint_paths .sdlc/project.yamlruby plugins/os-sdlc/tests/all.rbRejected: a
repo-roottarget withpath: .(needs sibling-path exclusion inTarget#include?and a second cop set for code the pipeline never works on). Rejected:../..entries in os-sdlclint_paths.Acceptance criteria
plugins/os-sdlc(includingplugins/os-sdlc/tests) and no file under the repo-rootlib/ortests/..sdlc/project.yamlwhose target still has alint_pathskey, when the project loads, then it loads the same as without the key or fails loudly naming the key; it never lints the listed paths.Owner sketch
Blocking edges
Blocked by: #795 (closed). Independent of #796.
Origin
Triage 2026-09-29: still valid on main
bf926443. Project::LintTarget still joins lint paths to the project root (model/project/lint_target.rb configured_lint_paths); root .sdlc/project.yaml has no repo-root target; os-sdlc still lists lint_paths [tests, lib]. Not fixed, not a duplicate. Blocker #795 is closed; ticket says independent of #796 (shipped). Body has Approach, Required work with checks, acceptance criteria and a user ruling (option A). Verdict: ready-for-agent, change type update. Note: work must first run /os-adr:find and supersede the ADR-0103 clause, amend ADR-0210 rule 6. No open ticket among #805 #806 #811 #812 #818 blocks or duplicates it.lint_paths resolve relative to the target; a repo-root target owns root-level code (T6, coding map)to Delete lint_paths: a target lints only its own path (T6, coding map)Work started on branch ticket-802 via /os-sdlc:implement (map poodr-ticket-implementation, target os-sdlc).
Resolution
Done: lint_paths deleted: Target#lint_path(root) returns the target directory; Project::LintTarget gone; Project::Lint has only config; FLAT_KEYS ignores a leftover lint_paths; ArtifactDir owns lint_ledger/lint_batch/lint_residual; root .sdlc/project.yaml and setup-project SKILL.md no longer carry the key; ADR-0245 supersedes ADR-0102.
Evidence: Commits
c70f7e8dand89298735on ticket-802 (merged via worktree finish). Implementation 77: 11 dispatches, 12 min 32 s, suite-check error on a missed test caller, hand-finished per escalation step 4. Suite 1307 runs, 0 failures, 0 errors. Required work checks R1-R3 pass.Follow-ups: #824 tests and placement for the moved lint members (user decision A). #825 unmapped-cop offenses crash the lint worklist (pre-existing on main). #665 comment for the missed test caller.