Repair the boundary cop offenses and move the three cops from sweep to gate #1745

Open
opened 2026-11-12 22:34:45 +00:00 by jared · 0 comments
Owner

Problem

Three boundary cops run in the sweep tier only: Sdlc/Dry/LibraryOutsideOwner (#1744), Sdlc/Structural/NestedConstantOutsideConcept (#1743), and Sdlc/Structural/ConceptCycle (#1742). A sweep reports and is not a gate, so an agent can still add a new offense of each kind. Each cop can move to .rubocop.yml only when the tree has no offense of its kind, because the suite must stay free of offenses. No ticket holds the repair work or the move.

Observed

  • Sdlc/Structural/NestedConstantOutsideConcept: 200 offenses in 115 library files on branch ticket-1743 (2026-11-12). 30 name one nested error class. 28 nested constants have callers in 2 or more other concepts; those need the "make it top-level" repair.
  • Sdlc/Dry/LibraryOutsideOwner: 84 files (58 library, 26 test) on branch ticket-1744. The #1718 child tickets move this code to OsSdlc::CodeShape; the sweep count is their measure.
  • Sdlc/Structural/ConceptCycle: one loop of nine concepts exists. The smallest cut is 7 edges with 14 sites; the practical plan is 11 site changes and the move of the pipeline scripts out of the CLI concept.
  • Analyses with the repair plans: docs/research/lint-lessons/2026-11-12-domain-boundary-cops/.
bin/lint-sweep

Reproduce

n/a: umbrella ticket for planned repair work.

Origin

  • Trigger: close of #1743 and #1744, 2026-11-12; each cop shipped in the sweep tier because true offenses exist
  • Improvised this session: none
  • Chain: three cops report and do not gate ← the tree has 200, 84 (files), and 14 true offense sites, and a gate cop needs zero ← DESIGN (#1742, #1743, #1744 Approach, "Enable the cop in the sweep tier only")
  • Root candidate: none found; searched sweep, gate, promote, must-pass, NestedConstantOutsideConcept, ConceptCycle, LibraryOutsideOwner, concept loop, cycle, PipelineScript, Loud::Error top-level, burn down
  • Where: plugins/os-sdlc/.rubocop-sweep.yml
  • Parent: #1743
  • Session: 4ee81bfb-d577-49b1-a9cf-617e4d2dae5f
  • Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os-plugins-os-sdlc/4ee81bfb-d577-49b1-a9cf-617e4d2dae5f.jsonl

VERDICT: CREATE (ticket-skeptic, 2026-11-12, full gauntlet): the three cops are in the sweep tier only because true offenses exist; #1742 and #1743 defer the gate move to a later ticket, and #1718 and its children cover only the LibraryOutsideOwner migration.

## Problem Three boundary cops run in the sweep tier only: `Sdlc/Dry/LibraryOutsideOwner` (#1744), `Sdlc/Structural/NestedConstantOutsideConcept` (#1743), and `Sdlc/Structural/ConceptCycle` (#1742). A sweep reports and is not a gate, so an agent can still add a new offense of each kind. Each cop can move to `.rubocop.yml` only when the tree has no offense of its kind, because the suite must stay free of offenses. No ticket holds the repair work or the move. ## Observed - `Sdlc/Structural/NestedConstantOutsideConcept`: 200 offenses in 115 library files on branch `ticket-1743` (2026-11-12). 30 name one nested error class. 28 nested constants have callers in 2 or more other concepts; those need the "make it top-level" repair. - `Sdlc/Dry/LibraryOutsideOwner`: 84 files (58 library, 26 test) on branch `ticket-1744`. The #1718 child tickets move this code to `OsSdlc::CodeShape`; the sweep count is their measure. - `Sdlc/Structural/ConceptCycle`: one loop of nine concepts exists. The smallest cut is 7 edges with 14 sites; the practical plan is 11 site changes and the move of the pipeline scripts out of the `CLI` concept. - Analyses with the repair plans: `docs/research/lint-lessons/2026-11-12-domain-boundary-cops/`. ``` bin/lint-sweep ``` ## Reproduce n/a: umbrella ticket for planned repair work. ## Origin - Trigger: close of #1743 and #1744, 2026-11-12; each cop shipped in the sweep tier because true offenses exist - Improvised this session: none - Chain: three cops report and do not gate ← the tree has 200, 84 (files), and 14 true offense sites, and a gate cop needs zero ← DESIGN (#1742, #1743, #1744 Approach, "Enable the cop in the sweep tier only") - Root candidate: none found; searched sweep, gate, promote, must-pass, NestedConstantOutsideConcept, ConceptCycle, LibraryOutsideOwner, concept loop, cycle, PipelineScript, Loud::Error top-level, burn down - Where: plugins/os-sdlc/.rubocop-sweep.yml - Parent: #1743 - Session: 4ee81bfb-d577-49b1-a9cf-617e4d2dae5f - Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os-plugins-os-sdlc/4ee81bfb-d577-49b1-a9cf-617e4d2dae5f.jsonl VERDICT: CREATE (ticket-skeptic, 2026-11-12, full gauntlet): the three cops are in the sweep tier only because true offenses exist; #1742 and #1743 defer the gate move to a later ticket, and #1718 and its children cover only the LibraryOutsideOwner migration.
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#1745
No description provided.