Cut Lint -> Gate: move Gate::ExitClassification into Lint #1165

Closed
opened 2026-10-19 20:13:14 +00:00 by jared · 2 comments
Owner

Problem

The Lint concept calls into the Gate concept. Lint::GreenAssert classifies an exit status with Gate::ExitClassification.classify (lint/green_assert.rb:11). That call is the only caller of Gate::ExitClassification in lib. The edge Lint -> Gate lies on 71 concept cycles. The module belongs with its only caller.

Reproduce

n/a: structure-wave cut, nothing to reproduce

Approach

Required work:

  1. Move plugins/os-sdlc/lib/os_sdlc/gate/exit_classification.rb to plugins/os-sdlc/lib/os_sdlc/lint/exit_classification.rb and rename the module to OsSdlc::Lint::ExitClassification. Behavior stays the same — check: present ExitClassification in plugins/os-sdlc/lib/os_sdlc/lint/exit_classification.rb
  2. In plugins/os-sdlc/lib/os_sdlc/lint/green_assert.rb, change the call to ExitClassification.classify(exit_status) — check: absent Gate::ExitClassification in plugins/os-sdlc/lib/os_sdlc/lint/green_assert.rb
  3. Move plugins/os-sdlc/tests/gate/exit_classification_test.rb to plugins/os-sdlc/tests/lint/exit_classification_test.rb and update the constant to OsSdlc::Lint::ExitClassification.
  4. In plugins/os-sdlc/reference/adding-a-summary-parser.md line 15, change the name Gate::ExitClassification to Lint::ExitClassification.

Acceptance criteria

  1. Given the suite, when run after the change, then it passes with no new failures.
  2. Given the lib tree, when bin/crc-cycle-edges runs, then no edge Lint -> Gate lists lint/green_assert.rb:11.
  3. Given the lib tree, when OsSdlc::Gate::ExitClassification is referenced, then the constant does not load.

Owner sketch

module OsSdlc::Lint::ExitClassification
  def self.classify(exit_status) # :pass or :fail
end

Lint::GreenAssert calls ExitClassification.classify(exit_status). Pinning tests: tests/lint/green_assert_test.rb, tests/lint/base_assert_test.rb, tests/lint/gated_run_test.rb.

Retired tests

plugins/os-sdlc/tests/gate/exit_classification_test.rb

Origin

  • Trigger: os-sdlc CRC run 3, structure-ruling wave step 1 (bin/crc-cycle-edges on main 049a7820)
  • Improvised this session: none
  • Chain: concept cycle Lint -> Gate (cycles_through 71) ← lint/green_assert.rb:11 ← DESIGN (docs/crc/os-sdlc/wave0/structure-rulings.tsv S1)
  • Root candidate: none found; searched ExitClassification, Gate, Lint
  • Where: plugins/os-sdlc/lib/os_sdlc/lint/green_assert.rb
  • Ledger: docs/crc/os-sdlc/ledger.tsv
  • Rulings: docs/crc/os-sdlc/wave0/structure-rulings.tsv
  • Session: 2e167079-f404-4139-9cfa-6c0c937ce9f0
  • Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os/2e167079-f404-4139-9cfa-6c0c937ce9f0.jsonl

VERDICT: CREATE

## Problem The Lint concept calls into the Gate concept. `Lint::GreenAssert` classifies an exit status with `Gate::ExitClassification.classify` (lint/green_assert.rb:11). That call is the only caller of `Gate::ExitClassification` in lib. The edge Lint -> Gate lies on 71 concept cycles. The module belongs with its only caller. ## Reproduce n/a: structure-wave cut, nothing to reproduce ## Approach Required work: 1. Move `plugins/os-sdlc/lib/os_sdlc/gate/exit_classification.rb` to `plugins/os-sdlc/lib/os_sdlc/lint/exit_classification.rb` and rename the module to `OsSdlc::Lint::ExitClassification`. Behavior stays the same — check: present `ExitClassification` in `plugins/os-sdlc/lib/os_sdlc/lint/exit_classification.rb` 2. In `plugins/os-sdlc/lib/os_sdlc/lint/green_assert.rb`, change the call to `ExitClassification.classify(exit_status)` — check: absent `Gate::ExitClassification` in `plugins/os-sdlc/lib/os_sdlc/lint/green_assert.rb` 3. Move `plugins/os-sdlc/tests/gate/exit_classification_test.rb` to `plugins/os-sdlc/tests/lint/exit_classification_test.rb` and update the constant to `OsSdlc::Lint::ExitClassification`. 4. In `plugins/os-sdlc/reference/adding-a-summary-parser.md` line 15, change the name `Gate::ExitClassification` to `Lint::ExitClassification`. ## Acceptance criteria 1. Given the suite, when run after the change, then it passes with no new failures. 2. Given the lib tree, when `bin/crc-cycle-edges` runs, then no edge Lint -> Gate lists `lint/green_assert.rb:11`. 3. Given the lib tree, when `OsSdlc::Gate::ExitClassification` is referenced, then the constant does not load. ## Owner sketch ```ruby module OsSdlc::Lint::ExitClassification def self.classify(exit_status) # :pass or :fail end ``` `Lint::GreenAssert` calls `ExitClassification.classify(exit_status)`. Pinning tests: `tests/lint/green_assert_test.rb`, `tests/lint/base_assert_test.rb`, `tests/lint/gated_run_test.rb`. ## Retired tests plugins/os-sdlc/tests/gate/exit_classification_test.rb ## Origin - Trigger: os-sdlc CRC run 3, structure-ruling wave step 1 (bin/crc-cycle-edges on main 049a7820) - Improvised this session: none - Chain: concept cycle Lint -> Gate (cycles_through 71) ← lint/green_assert.rb:11 ← DESIGN (docs/crc/os-sdlc/wave0/structure-rulings.tsv S1) - Root candidate: none found; searched ExitClassification, Gate, Lint - Where: plugins/os-sdlc/lib/os_sdlc/lint/green_assert.rb - Ledger: docs/crc/os-sdlc/ledger.tsv - Rulings: docs/crc/os-sdlc/wave0/structure-rulings.tsv - Session: 2e167079-f404-4139-9cfa-6c0c937ce9f0 - Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os/2e167079-f404-4139-9cfa-6c0c937ce9f0.jsonl VERDICT: CREATE
Author
Owner

Work started: os-sdlc CRC run 3 structure wave (S1), /os-sdlc:implement on branch crc-os-sdlc-run-3 (structure-change map).

Work started: os-sdlc CRC run 3 structure wave (S1), /os-sdlc:implement on branch crc-os-sdlc-run-3 (structure-change map).
Author
Owner

Resolution

Done: Gate::ExitClassification moved to Lint::ExitClassification; Lint::GreenAssert calls it bare; test moved to tests/lint/exit_classification_test.rb; reference doc updated. Edge Lint->Gate is gone; cycle edges 43 -> 23.

Evidence: f8a06e1d (runner), c67ca2b3 (staged deletion + test restore), a960f488 (ledger S1); suite 2248 runs 0 failures 0 errors; eager load silent; crc-inward-delta new 0; rubocop 3 files no offenses

Follow-ups: Runner commit left a staged deletion: occurrence posted on #916. Moved test listed under Retired tests was deleted: fixed in the S2/S8 ticket bodies before they run.

## Resolution **Done:** Gate::ExitClassification moved to Lint::ExitClassification; Lint::GreenAssert calls it bare; test moved to tests/lint/exit_classification_test.rb; reference doc updated. Edge Lint->Gate is gone; cycle edges 43 -> 23. **Evidence:** f8a06e1d (runner), c67ca2b3 (staged deletion + test restore), a960f488 (ledger S1); suite 2248 runs 0 failures 0 errors; eager load silent; crc-inward-delta new 0; rubocop 3 files no offenses **Follow-ups:** Runner commit left a staged deletion: occurrence posted on #916. Moved test listed under Retired tests was deleted: fixed in the S2/S8 ticket bodies before they run.
jared closed this issue 2026-10-19 20:20:38 +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#1165
No description provided.