Shrink the inward-dependency baseline and re-layer IssueSource, Map, Records #741
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#741
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
The inward-dependency rule now lives at plugins/os-sdlc/lib/os_sdlc/lint/inward_dependencies.rb and plugins/os-sdlc/bin/lint-inward-dependencies, unit-tested by plugins/os-sdlc/tests/lint/inward_dependencies_test.rb. Running the bin script against current main reports 62 outward references. The tool carries no KNOWN_VIOLATIONS baseline and is not wired into the suite as a gate — nothing fails when the count changes.
Of the three concepts named in the original ticket, two are resolved: Map moved fully under model/ (ADR-0228). Records no longer exists as a class or constant anywhere in the lib tree — dissolved during the CRC pass. IssueSource remains split across two role directories:
Every adapter/issue_source/* file depends on command/issue_source.rb, which is an inward (command -> adapter direction crossing) reference under ADR-0222's role-layer ordering.
Approach
Decide IssueSource's correct layer from the 62-reference report, move it, then make the lint tool an enforced gate with a baseline that only tolerates ADR-allowed lines.
Required work:
Acceptance criteria
ruby plugins/os-sdlc/bin/lint-inward-dependencies, when run, then no IssueSource line appears in its output.Reproduce
Current output: 62 outward references, no gate enforcing them.
Origin
Scanner now resolves nested role objects to their own file's role via OsSdlc.loader.all_expected_cpaths; baseline re-recorded at 75 (13 real model/adapter -> Map/Project/Probe/FlayCheck edges surfaced, 10 first-segment false positives dropped). Commit
c78dd226.Filed #744, #745, #746 as children of this baseline-shrinking work: #744 fixes inward_dependency_test's comment/string false positives (KNOWN_VIOLATIONS re-record), #745 adds the analogous guard for concepts with a missing or misplaced namespace root under ADR-0222 item 3 (KNOWN_ROOTLESS baseline), and #746 moves RunnerCLI out of pipeline/ into cli/, which shrinks that same baseline by 2 entries.
Re-spec review, 2026-09-28: ticket's evidence is stale and the goal is largely already resolved or no longer applicable. Recommend CLOSE, not implement.
Findings against current main:
ruby bin/lint-inward-dependencieson current main returns 62 outward references (not the ticket's cited 72), none tracked as a baseline anywhere.grep -rn "class Map\b" plugins/os-sdlc/libshows every Map file under lib/os_sdlc/model/map/ (plus one adapter/map/loader.rb helper and one parser/map/* file, both legitimate role objects, not the core class).class Recordsor referencesOsSdlc::Records. The concept named in the ticket was dissolved/renamed during the CRC pass (#779-#787, ADR-0222/0235/0236/0237); there is nothing left to re-layer.Given the baseline mechanism the ticket is built around doesn't exist, two of its three named concepts are already resolved or gone, and the count itself is wrong, the ticket cannot be re-specced against current evidence without functionally rewriting it as a new ticket. Recommend closing #741 and, if IssueSource's split still matters, filing a fresh, narrowly-scoped ticket against the current lint tool and the 62-reference figure.
Session 95e8b17c.
Re-specced 2026-09-28 (session 95e8b17c). The ticket body has been rewritten against current main. My earlier comment recommending closure is withdrawn: two parts of the original complaint are still live — IssueSource is split between adapter/issue_source/ (5 files) and command/issue_source.rb, and plugins/os-sdlc/bin/lint-inward-dependencies currently reports 62 outward references with no baseline and no suite gate. New Required work: (1) decide and move IssueSource's layer, (2) wire the lint bin into the suite as a gate backed by a baseline file, (3) shrink that baseline to zero or ADR-allowed lines. Map (ADR-0228) and Records (dissolved) are noted as already resolved in the Problem section.
Resolution
Done: folded into #748 per ruling (d) 2026-10-16
Evidence: bin/lint-inward-dependencies still reports unmapped lines; Phase 7 of docs/crc/PLAN.md deletes the ratchet (#748)
Follow-ups: folded into #748