CRC wave 4: apply Agent, Handoff, Lint, Loud, Project, Verdict renames and moves #1095

Closed
opened 2026-10-17 21:44:50 +00:00 by jared · 2 comments
Owner

Problem

Apply 11 ledger rows (rename and move) for Agent, Handoff, Lint, Loud, Project, Verdict. Each row's path, constant, and test path change as listed in Approach.

Reproduce

n/a: structure-only refactor, no behavior change.

Approach

  1. Required work, in order:
    1. plugins/os-sdlc/lib/os_sdlc/agent_type.rb -> plugins/os-sdlc/lib/os_sdlc/agent/type.rb
      • constant: OsSdlc::AgentType -> OsSdlc::Agent::Type
      • test: plugins/os-sdlc/tests/agent_type_test.rb -> plugins/os-sdlc/tests/agent/type_test.rb
    2. plugins/os-sdlc/lib/os_sdlc/agent_type/unknown_error.rb -> plugins/os-sdlc/lib/os_sdlc/agent/type/unknown_error.rb
      • constant: OsSdlc::AgentType::UnknownError -> OsSdlc::Agent::Type::UnknownError
      • test: no test file
    3. plugins/os-sdlc/lib/os_sdlc/handoff_content/mutation.rb -> plugins/os-sdlc/lib/os_sdlc/handoff/content/mutation.rb
      • constant: OsSdlc::HandoffContent::Mutation -> OsSdlc::Handoff::Content::Mutation
      • test: no test file
    4. plugins/os-sdlc/lib/os_sdlc/handoff_content.rb -> plugins/os-sdlc/lib/os_sdlc/handoff/content.rb
      • constant: OsSdlc::HandoffContent -> OsSdlc::Handoff::Content
      • test: plugins/os-sdlc/tests/handoff_content_reroute_test.rb -> plugins/os-sdlc/tests/handoff/content_reroute_test.rb, plugins/os-sdlc/tests/handoff_content_test.rb -> plugins/os-sdlc/tests/handoff/content_test.rb
    5. plugins/os-sdlc/lib/os_sdlc/handoff_content/malformed_error.rb -> plugins/os-sdlc/lib/os_sdlc/handoff/content/malformed_error.rb
      • constant: OsSdlc::HandoffContent::MalformedError -> OsSdlc::Handoff::Content::MalformedError
      • test: no test file
    6. plugins/os-sdlc/lib/os_sdlc/lint_output.rb -> plugins/os-sdlc/lib/os_sdlc/lint/output.rb
      • constant: OsSdlc::LintOutput -> OsSdlc::Lint::Output
      • test: plugins/os-sdlc/tests/lint_output_test.rb -> plugins/os-sdlc/tests/lint/output_test.rb
    7. plugins/os-sdlc/lib/os_sdlc/lint_output/offense.rb -> plugins/os-sdlc/lib/os_sdlc/lint/output/offense.rb
      • constant: OsSdlc::LintOutput::Offense -> OsSdlc::Lint::Output::Offense
      • test: no test file
    8. plugins/os-sdlc/lib/os_sdlc/loud_exit.rb -> plugins/os-sdlc/lib/os_sdlc/loud/exit.rb
      • constant: OsSdlc::LoudExit -> OsSdlc::Loud::Exit
      • test: no test file
    9. plugins/os-sdlc/lib/os_sdlc/loud_error.rb -> plugins/os-sdlc/lib/os_sdlc/loud/error.rb
      • constant: OsSdlc::LoudError -> OsSdlc::Loud::Error
      • test: no test file
    10. plugins/os-sdlc/lib/os_sdlc/project_shell.rb -> plugins/os-sdlc/lib/os_sdlc/project/shell.rb
    • constant: OsSdlc::ProjectShell -> OsSdlc::Project::Shell
    • test: plugins/os-sdlc/tests/project_shell_test.rb -> plugins/os-sdlc/tests/project/shell_test.rb
    1. plugins/os-sdlc/lib/os_sdlc/verdict_outcome.rb -> plugins/os-sdlc/lib/os_sdlc/verdict/outcome.rb
    • constant: OsSdlc::VerdictOutcome -> OsSdlc::Verdict::Outcome
    • test: no test file
      Before you finish, grep the repository for each old file path and each old constant, not only the constant. Config and docs keep old paths (for example .rubocop.yml, loader collapse lists).
  2. Governing rulings:
    • R1
    • R2
    • R3
    • R16
    • R25
    • R38
    • R39
    • R69
    • R75
    • R102
    • R120
    • R124
    • R133

Acceptance criteria

  • Every named ledger row is applied, or logged in deviations.md, or reported blocked.
  • ruby plugins/os-sdlc/tests/all.rb 0 failures.
  • ruby -e 'require "./plugins/os-sdlc/lib/os_sdlc"; OsSdlc::Db.connect!(":memory:"); OsSdlc.loader.eager_load' silent.

Owner sketch

Each constant matches its new path; callers follow the new name.

Non-goals

  • No behavior change.
  • No new tests.
  • No deletion of code that has callers.

Origin

  • Session: 629ed31a-21f2-4ddb-8f68-bc053959bd30
  • Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os/629ed31a-21f2-4ddb-8f68-bc053959bd30.jsonl
  • Where: plugins/os-sdlc/lib/os_sdlc/agent_type.rb, plugins/os-sdlc/lib/os_sdlc/agent_type/unknown_error.rb, plugins/os-sdlc/lib/os_sdlc/handoff_content/mutation.rb, plugins/os-sdlc/lib/os_sdlc/handoff_content.rb, plugins/os-sdlc/lib/os_sdlc/handoff_content/malformed_error.rb, plugins/os-sdlc/lib/os_sdlc/lint_output.rb, plugins/os-sdlc/lib/os_sdlc/lint_output/offense.rb, plugins/os-sdlc/lib/os_sdlc/loud_exit.rb, plugins/os-sdlc/lib/os_sdlc/loud_error.rb, plugins/os-sdlc/lib/os_sdlc/project_shell.rb, plugins/os-sdlc/lib/os_sdlc/verdict_outcome.rb
  • CRC refactor run: docs/crc/os-sdlc.
  • Ledger: docs/crc/os-sdlc/ledger.tsv
  • Wave: 4.
## Problem Apply 11 ledger rows (rename and move) for Agent, Handoff, Lint, Loud, Project, Verdict. Each row's path, constant, and test path change as listed in Approach. ## Reproduce n/a: structure-only refactor, no behavior change. ## Approach 1. Required work, in order: 1. `plugins/os-sdlc/lib/os_sdlc/agent_type.rb` -> `plugins/os-sdlc/lib/os_sdlc/agent/type.rb` - constant: `OsSdlc::AgentType` -> `OsSdlc::Agent::Type` - test: `plugins/os-sdlc/tests/agent_type_test.rb` -> `plugins/os-sdlc/tests/agent/type_test.rb` 2. `plugins/os-sdlc/lib/os_sdlc/agent_type/unknown_error.rb` -> `plugins/os-sdlc/lib/os_sdlc/agent/type/unknown_error.rb` - constant: `OsSdlc::AgentType::UnknownError` -> `OsSdlc::Agent::Type::UnknownError` - test: no test file 3. `plugins/os-sdlc/lib/os_sdlc/handoff_content/mutation.rb` -> `plugins/os-sdlc/lib/os_sdlc/handoff/content/mutation.rb` - constant: `OsSdlc::HandoffContent::Mutation` -> `OsSdlc::Handoff::Content::Mutation` - test: no test file 4. `plugins/os-sdlc/lib/os_sdlc/handoff_content.rb` -> `plugins/os-sdlc/lib/os_sdlc/handoff/content.rb` - constant: `OsSdlc::HandoffContent` -> `OsSdlc::Handoff::Content` - test: `plugins/os-sdlc/tests/handoff_content_reroute_test.rb` -> `plugins/os-sdlc/tests/handoff/content_reroute_test.rb`, `plugins/os-sdlc/tests/handoff_content_test.rb` -> `plugins/os-sdlc/tests/handoff/content_test.rb` 5. `plugins/os-sdlc/lib/os_sdlc/handoff_content/malformed_error.rb` -> `plugins/os-sdlc/lib/os_sdlc/handoff/content/malformed_error.rb` - constant: `OsSdlc::HandoffContent::MalformedError` -> `OsSdlc::Handoff::Content::MalformedError` - test: no test file 6. `plugins/os-sdlc/lib/os_sdlc/lint_output.rb` -> `plugins/os-sdlc/lib/os_sdlc/lint/output.rb` - constant: `OsSdlc::LintOutput` -> `OsSdlc::Lint::Output` - test: `plugins/os-sdlc/tests/lint_output_test.rb` -> `plugins/os-sdlc/tests/lint/output_test.rb` 7. `plugins/os-sdlc/lib/os_sdlc/lint_output/offense.rb` -> `plugins/os-sdlc/lib/os_sdlc/lint/output/offense.rb` - constant: `OsSdlc::LintOutput::Offense` -> `OsSdlc::Lint::Output::Offense` - test: no test file 8. `plugins/os-sdlc/lib/os_sdlc/loud_exit.rb` -> `plugins/os-sdlc/lib/os_sdlc/loud/exit.rb` - constant: `OsSdlc::LoudExit` -> `OsSdlc::Loud::Exit` - test: no test file 9. `plugins/os-sdlc/lib/os_sdlc/loud_error.rb` -> `plugins/os-sdlc/lib/os_sdlc/loud/error.rb` - constant: `OsSdlc::LoudError` -> `OsSdlc::Loud::Error` - test: no test file 10. `plugins/os-sdlc/lib/os_sdlc/project_shell.rb` -> `plugins/os-sdlc/lib/os_sdlc/project/shell.rb` - constant: `OsSdlc::ProjectShell` -> `OsSdlc::Project::Shell` - test: `plugins/os-sdlc/tests/project_shell_test.rb` -> `plugins/os-sdlc/tests/project/shell_test.rb` 11. `plugins/os-sdlc/lib/os_sdlc/verdict_outcome.rb` -> `plugins/os-sdlc/lib/os_sdlc/verdict/outcome.rb` - constant: `OsSdlc::VerdictOutcome` -> `OsSdlc::Verdict::Outcome` - test: no test file Before you finish, grep the repository for each old file path and each old constant, not only the constant. Config and docs keep old paths (for example .rubocop.yml, loader collapse lists). 2. Governing rulings: - R1 - R2 - R3 - R16 - R25 - R38 - R39 - R69 - R75 - R102 - R120 - R124 - R133 ## Acceptance criteria - Every named ledger row is applied, or logged in deviations.md, or reported blocked. - `ruby plugins/os-sdlc/tests/all.rb` 0 failures. - `ruby -e 'require "./plugins/os-sdlc/lib/os_sdlc"; OsSdlc::Db.connect!(":memory:"); OsSdlc.loader.eager_load'` silent. ## Owner sketch Each constant matches its new path; callers follow the new name. ## Non-goals - No behavior change. - No new tests. - No deletion of code that has callers. ## Origin - Session: 629ed31a-21f2-4ddb-8f68-bc053959bd30 - Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os/629ed31a-21f2-4ddb-8f68-bc053959bd30.jsonl - Where: plugins/os-sdlc/lib/os_sdlc/agent_type.rb, plugins/os-sdlc/lib/os_sdlc/agent_type/unknown_error.rb, plugins/os-sdlc/lib/os_sdlc/handoff_content/mutation.rb, plugins/os-sdlc/lib/os_sdlc/handoff_content.rb, plugins/os-sdlc/lib/os_sdlc/handoff_content/malformed_error.rb, plugins/os-sdlc/lib/os_sdlc/lint_output.rb, plugins/os-sdlc/lib/os_sdlc/lint_output/offense.rb, plugins/os-sdlc/lib/os_sdlc/loud_exit.rb, plugins/os-sdlc/lib/os_sdlc/loud_error.rb, plugins/os-sdlc/lib/os_sdlc/project_shell.rb, plugins/os-sdlc/lib/os_sdlc/verdict_outcome.rb - CRC refactor run: docs/crc/os-sdlc. - Ledger: docs/crc/os-sdlc/ledger.tsv - Wave: 4.
Author
Owner

1d0cce87 (pure moves, intermediate) + 68f0f263 (renames and nesting; suite green at HEAD); rows applied 9/11; rows deviated 0; rows blocked 2 (agent_type.rb, agent_type/unknown_error.rb: Event uses AgentType before the bind, Agent::Type would load the Agent Sequel model with no database; Event.new(...).agent_type raised)

1d0cce87 (pure moves, intermediate) + 68f0f263 (renames and nesting; suite green at HEAD); rows applied 9/11; rows deviated 0; rows blocked 2 (agent_type.rb, agent_type/unknown_error.rb: Event uses AgentType before the bind, Agent::Type would load the Agent Sequel model with no database; Event.new(...).agent_type raised)
Author
Owner

Resolution

Done: Applied 9 of 11 rows (R133): Handoff::Content with MalformedError and Mutation, Lint::Output with Offense, Loud::Error, Loud::Exit, Project::Shell, Verdict::Outcome. The 2 Agent::Type rows are blocked and recorded as question cells in the ledger.

Evidence: 4403f485 (squash of 1d0cce87 and 68f0f263, which the work comment names), records 270f4ad3; suite 2055 runs, 0 failures, 0 errors; eager load silent; lint-sweep 1425 files, 206 offenses (baseline 209: 9 unmapped gone, 6 existing outward edges now mapped, deviations.md)

Follow-ups: Agent::Type needs a ruling (keep top-level, or move the pre-bind Event use out of the Agent model namespace); Implementation::CompletionIntake defines its own VerdictOutcome, and the ledger evidence names it as a caller of Verdict::Outcome

## Resolution **Done:** Applied 9 of 11 rows (R133): Handoff::Content with MalformedError and Mutation, Lint::Output with Offense, Loud::Error, Loud::Exit, Project::Shell, Verdict::Outcome. The 2 Agent::Type rows are blocked and recorded as question cells in the ledger. **Evidence:** 4403f485 (squash of 1d0cce87 and 68f0f263, which the work comment names), records 270f4ad3; suite 2055 runs, 0 failures, 0 errors; eager load silent; lint-sweep 1425 files, 206 offenses (baseline 209: 9 unmapped gone, 6 existing outward edges now mapped, deviations.md) **Follow-ups:** Agent::Type needs a ruling (keep top-level, or move the pre-bind Event use out of the Agent model namespace); Implementation::CompletionIntake defines its own VerdictOutcome, and the ledger evidence names it as a caller of Verdict::Outcome
jared closed this issue 2026-10-17 21:54:17 +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#1095
No description provided.