Move pipeline-tests batch to concept roots and fold Assert under Gate per roles-pipeline-tests.md #787

Closed
opened 2026-09-27 23:05:50 +00:00 by jared · 2 comments
Owner

Problem

Pipeline-tests files sit in role directories with no concept root or with single-caller top-level objects.
The role table in roles-pipeline-tests.md names the moves to consolidate pipeline-tests concepts under proper roles and fold Assert under Gate.

Reproduce

n/a: structure-only refactor from a role-morph table.

Approach

Apply the move map in roles-pipeline-tests.md with git mv; rename constants; update every caller in lib/, bin/, hooks/, agents/, skills/; move tests to mirror the new paths; update lib/os_sdlc.rb inflections and lint/inward_dependencies.rb tables as needed. Rulings adopted: BaseAssert, GreenAssert, GateResult nest under Gate (Gate::BaseAssert, Gate::GreenAssert, Gate::AssertResult); OpenImplementation becomes Implementation::Open; Readiness and Target go to LspSession (ticket C owns them; skip here if C landed); CommandResult under Gate; DispatchBudget, NodeName, Router under Implementation; DispatchPacker under Worklist; RetiredTestsCheckResult and WorkOrder under Dispatch; GateViolations and TestViolations under Gate; RedTests under Brief; Router::UnroutableVerdict and NextStep::UnexplainedStateError stay rescued at the Dispatch boundary. Decide by the lens heuristics (skills/lens-architecture, lens-tactics, lens-principles); where an Accepted ADR conflicts with a lens rule, follow the lens and record the deviation in docs/crc/os-sdlc/deviations.md.

Required work:

  1. Every row of the move map in roles-pipeline-tests.md applied, or a one-line reason in deviations.md for each row skipped — check: git diff --stat main -- plugins/os-sdlc/lib
  2. Suite green — check: cd plugins/os-sdlc && ruby tests/all.rb
  3. Inward-dependency lint not above baseline — check: plugins/os-sdlc/bin/lint-inward-dependencies
  4. bin/ script stdout byte-identical on the commands the batch touches — check: diff against recorded output

Acceptance criteria

  1. Given the move map in roles-pipeline-tests.md, when the branch is diffed against main, then each listed file is at its proposed path with its proposed constant, or deviations.md names it.
  2. Given the suite, when run, then it passes with zero failures and no new tests.
  3. Given the bin scripts the batch touches, when run against fixtures, then stdout is byte-identical to before.

Owner sketch

class OsSdlc::Gate::BaseAssert; end
class OsSdlc::Implementation::Open; end

Non-goals

No behavior change. No new tests. Dead-code deletion is ticket A.

Origin

  • Trigger: CRC session 13 role-morph pass, docs/crc/os-sdlc/roles-pipeline-tests.md
  • Improvised this session: none
  • Chain: scattered concepts ← per-file role rename (#737, ADR-0222) ← DESIGN (ADR-0222; corrected by ROLE-MORPH-BRIEF.md "decide the role per concept")
  • Root candidate: this ticket
  • Where: plugins/os-sdlc/lib/os_sdlc/ (files listed in roles-pipeline-tests.md)
  • Session: e64808e4-7c0b-4664-9d13-177acbbc143c
  • Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os--claude-worktrees-crc-pass-os-sdlc/e64808e4-7c0b-4664-9d13-177acbbc143c.jsonl
## Problem Pipeline-tests files sit in role directories with no concept root or with single-caller top-level objects. The role table in roles-pipeline-tests.md names the moves to consolidate pipeline-tests concepts under proper roles and fold Assert under Gate. ## Reproduce n/a: structure-only refactor from a role-morph table. ## Approach Apply the move map in roles-pipeline-tests.md with git mv; rename constants; update every caller in lib/, bin/, hooks/, agents/, skills/; move tests to mirror the new paths; update lib/os_sdlc.rb inflections and lint/inward_dependencies.rb tables as needed. Rulings adopted: BaseAssert, GreenAssert, GateResult nest under Gate (Gate::BaseAssert, Gate::GreenAssert, Gate::AssertResult); OpenImplementation becomes Implementation::Open; Readiness and Target go to LspSession (ticket C owns them; skip here if C landed); CommandResult under Gate; DispatchBudget, NodeName, Router under Implementation; DispatchPacker under Worklist; RetiredTestsCheckResult and WorkOrder under Dispatch; GateViolations and TestViolations under Gate; RedTests under Brief; Router::UnroutableVerdict and NextStep::UnexplainedStateError stay rescued at the Dispatch boundary. Decide by the lens heuristics (skills/lens-architecture, lens-tactics, lens-principles); where an Accepted ADR conflicts with a lens rule, follow the lens and record the deviation in docs/crc/os-sdlc/deviations.md. Required work: 1. Every row of the move map in roles-pipeline-tests.md applied, or a one-line reason in deviations.md for each row skipped — check: git diff --stat main -- plugins/os-sdlc/lib 2. Suite green — check: cd plugins/os-sdlc && ruby tests/all.rb 3. Inward-dependency lint not above baseline — check: plugins/os-sdlc/bin/lint-inward-dependencies 4. bin/ script stdout byte-identical on the commands the batch touches — check: diff against recorded output ## Acceptance criteria 1. Given the move map in roles-pipeline-tests.md, when the branch is diffed against main, then each listed file is at its proposed path with its proposed constant, or deviations.md names it. 2. Given the suite, when run, then it passes with zero failures and no new tests. 3. Given the bin scripts the batch touches, when run against fixtures, then stdout is byte-identical to before. ## Owner sketch ```ruby class OsSdlc::Gate::BaseAssert; end class OsSdlc::Implementation::Open; end ``` ## Non-goals No behavior change. No new tests. Dead-code deletion is ticket A. ## Origin - Trigger: CRC session 13 role-morph pass, docs/crc/os-sdlc/roles-pipeline-tests.md - Improvised this session: none - Chain: scattered concepts ← per-file role rename (#737, ADR-0222) ← DESIGN (ADR-0222; corrected by ROLE-MORPH-BRIEF.md "decide the role per concept") - Root candidate: this ticket - Where: plugins/os-sdlc/lib/os_sdlc/ (files listed in roles-pipeline-tests.md) - Session: e64808e4-7c0b-4664-9d13-177acbbc143c - Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os--claude-worktrees-crc-pass-os-sdlc/e64808e4-7c0b-4664-9d13-177acbbc143c.jsonl
Author
Owner

Commits: 172aeeeb Assert->Gate, 92a3473a OpenImplementation->Implementation::Open, 80c19552 CommandResult->Gate::CommandResult, 10d63d6f DispatchBudget->Implementation::DispatchBudget, 2a6a752f DispatchPacker->Worklist::DispatchPacker, 14da3e66 NodeName->Implementation::NodeName, 03a3f359 RetiredTestsCheckResult->Dispatch::RetiredTestsCheckResult, fc5f0ea0 WorkOrder->Dispatch::WorkOrder, 5d262554 GateViolations/TestViolations->Gate::Violations/Gate::TestViolations + StepResult dependency inversion, efb10efe RedTests->Brief::RedTests, 1ff7d748 Router->Implementation::Router.
Rows applied: 12 of 12 (row 1 was the 3-item Assert cluster; rows 9-10 landed together).
Rows deviated: 1 — logged in docs/crc/os-sdlc/deviations.md: GateViolations move required inverting StepResult's lint-step dependency (A11) instead of a straight move, resolving the pre-existing baseline violation (62 -> 61 inward-lint lines). No rows skipped.

Commits: 172aeeeb Assert->Gate, 92a3473a OpenImplementation->Implementation::Open, 80c19552 CommandResult->Gate::CommandResult, 10d63d6f DispatchBudget->Implementation::DispatchBudget, 2a6a752f DispatchPacker->Worklist::DispatchPacker, 14da3e66 NodeName->Implementation::NodeName, 03a3f359 RetiredTestsCheckResult->Dispatch::RetiredTestsCheckResult, fc5f0ea0 WorkOrder->Dispatch::WorkOrder, 5d262554 GateViolations/TestViolations->Gate::Violations/Gate::TestViolations + StepResult dependency inversion, efb10efe RedTests->Brief::RedTests, 1ff7d748 Router->Implementation::Router. Rows applied: 12 of 12 (row 1 was the 3-item Assert cluster; rows 9-10 landed together). Rows deviated: 1 — logged in docs/crc/os-sdlc/deviations.md: GateViolations move required inverting StepResult's lint-step dependency (A11) instead of a straight move, resolving the pre-existing baseline violation (62 -> 61 inward-lint lines). No rows skipped.
Author
Owner

Resolution

Done: pipeline-tests batch: Assert folded under Gate (Gate::BaseAssert/GreenAssert/AssertResult), Gate::CommandResult/Violations/TestViolations, Implementation::Open/Router/NodeName/DispatchBudget, Dispatch::WorkOrder/RetiredTestsCheckResult, Worklist::DispatchPacker, Brief::RedTests; StepResult now receives lint steps from Brief::Facts (A11); 12 of 12 rows.

Evidence: Commits 172aeeeb..1ff7d748 on crc-pass-os-sdlc; suite 1300 runs 0 failures; inward lint 61 lines exit 0; ADR-0237.

Follow-ups: #788 renames the Violations ledger (skeptic VERDICT: CREATE); cross-concept errors stay a boundary contract per the user's ruling, none.

## Resolution **Done:** pipeline-tests batch: Assert folded under Gate (Gate::BaseAssert/GreenAssert/AssertResult), Gate::CommandResult/Violations/TestViolations, Implementation::Open/Router/NodeName/DispatchBudget, Dispatch::WorkOrder/RetiredTestsCheckResult, Worklist::DispatchPacker, Brief::RedTests; StepResult now receives lint steps from Brief::Facts (A11); 12 of 12 rows. **Evidence:** Commits 172aeeeb..1ff7d748 on crc-pass-os-sdlc; suite 1300 runs 0 failures; inward lint 61 lines exit 0; ADR-0237. **Follow-ups:** #788 renames the Violations ledger (skeptic VERDICT: CREATE); cross-concept errors stay a boundary contract per the user's ruling, none.
jared closed this issue 2026-09-28 01:18:42 +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#787
No description provided.