CRC wave 4: apply FormatValidationRaisingInInitialize, ForwardingClass, Implementation, InwardDependency, LifecycleIvarBehindAttrReader, OwnedMessage, SimulatedPolymorphism, UnreadInstanceVariable renames and moves #1267

Closed
opened 2026-10-23 18:17:14 +00:00 by jared · 3 comments
Owner

Problem

Apply 9 ledger rows (rename and move) for FormatValidationRaisingInInitialize, ForwardingClass, Implementation, InwardDependency, LifecycleIvarBehindAttrReader, OwnedMessage, SimulatedPolymorphism, UnreadInstanceVariable. 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/cops/format_validation_raising_in_initialize/condition_inspection.rb -> plugins/os-sdlc/lib/os_sdlc/cops/format_validation_raising_in_initialize/validation_condition.rb
      • constant: RuboCop::Cop::Sdlc::Structural::FormatValidationRaisingInInitialize::ConditionInspection -> RuboCop::Cop::Sdlc::Structural::FormatValidationRaisingInInitialize::ValidationCondition
      • test: no test file
    2. plugins/os-sdlc/lib/os_sdlc/cops/forwarding_class/forwarder.rb -> plugins/os-sdlc/lib/os_sdlc/cops/forwarding_class/class_match.rb
      • constant: RuboCop::Cop::Sdlc::Structural::ForwardingClass::Forwarder -> RuboCop::Cop::Sdlc::Structural::ForwardingClass::ClassMatch
      • test: no test file
    3. plugins/os-sdlc/tests/support/open_implementation.rb -> plugins/os-sdlc/tests/support/open_implementation_fixture.rb
      • constant: OpenImplementation -> OpenImplementationFixture
      • test: no test file
    4. plugins/os-sdlc/lib/os_sdlc/cops/constant_reference.rb -> plugins/os-sdlc/lib/os_sdlc/cops/inward_dependency/constant_reference.rb
      • constant: RuboCop::Cop::Sdlc::Structural::ConstantReference -> RuboCop::Cop::Sdlc::Structural::InwardDependency::ConstantReference
      • test: no test file
    5. plugins/os-sdlc/lib/os_sdlc/cops/lifecycle_ivar_behind_attr_reader/attr_lifecycle_mismatch.rb -> plugins/os-sdlc/lib/os_sdlc/cops/lifecycle_ivar_behind_attr_reader/attr_lifecycle_offense.rb
      • constant: RuboCop::Cop::Sdlc::Structural::LifecycleIvarBehindAttrReader::AttrLifecycleMismatch -> RuboCop::Cop::Sdlc::Structural::LifecycleIvarBehindAttrReader::AttrLifecycleOffense
      • test: no test file
    6. plugins/os-sdlc/lib/os_sdlc/cops/owned_message/sender.rb -> plugins/os-sdlc/lib/os_sdlc/cops/owned_message/send_match.rb
      • constant: RuboCop::Cop::Sdlc::Dry::OwnedMessage::Sender -> RuboCop::Cop::Sdlc::Dry::OwnedMessage::SendMatch
      • test: no test file
    7. plugins/os-sdlc/lib/os_sdlc/cops/simulated_polymorphism/offense_message.rb -> plugins/os-sdlc/lib/os_sdlc/cops/simulated_polymorphism/message.rb
      • constant: RuboCop::Cop::Sdlc::Structural::SimulatedPolymorphism::OffenseMessage -> RuboCop::Cop::Sdlc::Structural::SimulatedPolymorphism::Message
      • test: no test file
    8. plugins/os-sdlc/lib/os_sdlc/cops/unread_instance_variable/generated_members.rb -> plugins/os-sdlc/lib/os_sdlc/cops/unread_instance_variable/member_generating_call.rb
      • constant: RuboCop::Cop::Sdlc::Structural::UnreadInstanceVariable::GeneratedMembers -> RuboCop::Cop::Sdlc::Structural::UnreadInstanceVariable::MemberGeneratingCall
      • test: no test file
    9. plugins/os-sdlc/lib/os_sdlc/cops/unread_instance_variable/scope.rb -> plugins/os-sdlc/lib/os_sdlc/cops/unread_instance_variable/unread_assignments.rb
      • constant: RuboCop::Cop::Sdlc::Structural::UnreadInstanceVariable::Scope -> RuboCop::Cop::Sdlc::Structural::UnreadInstanceVariable::UnreadAssignments
      • 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:
    • R74
    • R102
    • R103
    • R105

Acceptance criteria

  • Every named ledger row is applied, or logged in deviations.md, or reported blocked.
  • cd plugins/os-sdlc && ruby 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: c1bedec6-7e01-45ab-b9db-22d63652c19f
  • Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os--claude-worktrees-crc-os-sdlc-run-4/c1bedec6-7e01-45ab-b9db-22d63652c19f.jsonl
  • Where: plugins/os-sdlc/lib/os_sdlc/cops/format_validation_raising_in_initialize/condition_inspection.rb, plugins/os-sdlc/lib/os_sdlc/cops/forwarding_class/forwarder.rb, plugins/os-sdlc/tests/support/open_implementation.rb, plugins/os-sdlc/lib/os_sdlc/cops/constant_reference.rb, plugins/os-sdlc/lib/os_sdlc/cops/lifecycle_ivar_behind_attr_reader/attr_lifecycle_mismatch.rb, plugins/os-sdlc/lib/os_sdlc/cops/owned_message/sender.rb, plugins/os-sdlc/lib/os_sdlc/cops/simulated_polymorphism/offense_message.rb, plugins/os-sdlc/lib/os_sdlc/cops/unread_instance_variable/generated_members.rb, plugins/os-sdlc/lib/os_sdlc/cops/unread_instance_variable/scope.rb
  • CRC refactor run: docs/crc/os-sdlc.
  • Ledger: docs/crc/os-sdlc/ledger.tsv
  • Wave: 4.
## Problem Apply 9 ledger rows (rename and move) for FormatValidationRaisingInInitialize, ForwardingClass, Implementation, InwardDependency, LifecycleIvarBehindAttrReader, OwnedMessage, SimulatedPolymorphism, UnreadInstanceVariable. 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/cops/format_validation_raising_in_initialize/condition_inspection.rb` -> `plugins/os-sdlc/lib/os_sdlc/cops/format_validation_raising_in_initialize/validation_condition.rb` - constant: `RuboCop::Cop::Sdlc::Structural::FormatValidationRaisingInInitialize::ConditionInspection` -> `RuboCop::Cop::Sdlc::Structural::FormatValidationRaisingInInitialize::ValidationCondition` - test: no test file 2. `plugins/os-sdlc/lib/os_sdlc/cops/forwarding_class/forwarder.rb` -> `plugins/os-sdlc/lib/os_sdlc/cops/forwarding_class/class_match.rb` - constant: `RuboCop::Cop::Sdlc::Structural::ForwardingClass::Forwarder` -> `RuboCop::Cop::Sdlc::Structural::ForwardingClass::ClassMatch` - test: no test file 3. `plugins/os-sdlc/tests/support/open_implementation.rb` -> `plugins/os-sdlc/tests/support/open_implementation_fixture.rb` - constant: `OpenImplementation` -> `OpenImplementationFixture` - test: no test file 4. `plugins/os-sdlc/lib/os_sdlc/cops/constant_reference.rb` -> `plugins/os-sdlc/lib/os_sdlc/cops/inward_dependency/constant_reference.rb` - constant: `RuboCop::Cop::Sdlc::Structural::ConstantReference` -> `RuboCop::Cop::Sdlc::Structural::InwardDependency::ConstantReference` - test: no test file 5. `plugins/os-sdlc/lib/os_sdlc/cops/lifecycle_ivar_behind_attr_reader/attr_lifecycle_mismatch.rb` -> `plugins/os-sdlc/lib/os_sdlc/cops/lifecycle_ivar_behind_attr_reader/attr_lifecycle_offense.rb` - constant: `RuboCop::Cop::Sdlc::Structural::LifecycleIvarBehindAttrReader::AttrLifecycleMismatch` -> `RuboCop::Cop::Sdlc::Structural::LifecycleIvarBehindAttrReader::AttrLifecycleOffense` - test: no test file 6. `plugins/os-sdlc/lib/os_sdlc/cops/owned_message/sender.rb` -> `plugins/os-sdlc/lib/os_sdlc/cops/owned_message/send_match.rb` - constant: `RuboCop::Cop::Sdlc::Dry::OwnedMessage::Sender` -> `RuboCop::Cop::Sdlc::Dry::OwnedMessage::SendMatch` - test: no test file 7. `plugins/os-sdlc/lib/os_sdlc/cops/simulated_polymorphism/offense_message.rb` -> `plugins/os-sdlc/lib/os_sdlc/cops/simulated_polymorphism/message.rb` - constant: `RuboCop::Cop::Sdlc::Structural::SimulatedPolymorphism::OffenseMessage` -> `RuboCop::Cop::Sdlc::Structural::SimulatedPolymorphism::Message` - test: no test file 8. `plugins/os-sdlc/lib/os_sdlc/cops/unread_instance_variable/generated_members.rb` -> `plugins/os-sdlc/lib/os_sdlc/cops/unread_instance_variable/member_generating_call.rb` - constant: `RuboCop::Cop::Sdlc::Structural::UnreadInstanceVariable::GeneratedMembers` -> `RuboCop::Cop::Sdlc::Structural::UnreadInstanceVariable::MemberGeneratingCall` - test: no test file 9. `plugins/os-sdlc/lib/os_sdlc/cops/unread_instance_variable/scope.rb` -> `plugins/os-sdlc/lib/os_sdlc/cops/unread_instance_variable/unread_assignments.rb` - constant: `RuboCop::Cop::Sdlc::Structural::UnreadInstanceVariable::Scope` -> `RuboCop::Cop::Sdlc::Structural::UnreadInstanceVariable::UnreadAssignments` - 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: - R74 - R102 - R103 - R105 ## Acceptance criteria - Every named ledger row is applied, or logged in deviations.md, or reported blocked. - `cd plugins/os-sdlc && ruby 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: c1bedec6-7e01-45ab-b9db-22d63652c19f - Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os--claude-worktrees-crc-os-sdlc-run-4/c1bedec6-7e01-45ab-b9db-22d63652c19f.jsonl - Where: plugins/os-sdlc/lib/os_sdlc/cops/format_validation_raising_in_initialize/condition_inspection.rb, plugins/os-sdlc/lib/os_sdlc/cops/forwarding_class/forwarder.rb, plugins/os-sdlc/tests/support/open_implementation.rb, plugins/os-sdlc/lib/os_sdlc/cops/constant_reference.rb, plugins/os-sdlc/lib/os_sdlc/cops/lifecycle_ivar_behind_attr_reader/attr_lifecycle_mismatch.rb, plugins/os-sdlc/lib/os_sdlc/cops/owned_message/sender.rb, plugins/os-sdlc/lib/os_sdlc/cops/simulated_polymorphism/offense_message.rb, plugins/os-sdlc/lib/os_sdlc/cops/unread_instance_variable/generated_members.rb, plugins/os-sdlc/lib/os_sdlc/cops/unread_instance_variable/scope.rb - CRC refactor run: docs/crc/os-sdlc. - Ledger: docs/crc/os-sdlc/ledger.tsv - Wave: 4.
Author
Owner

fc4f216d; rows applied 9/9; rows deviated 0; rows blocked 0

fc4f216d; rows applied 9/9; rows deviated 0; rows blocked 0
Author
Owner

Correction to the earlier comment: commit 2c7d21f2; rows applied 9/9; rows deviated 0; rows blocked 0

Correction to the earlier comment: commit 2c7d21f2; rows applied 9/9; rows deviated 0; rows blocked 0
Author
Owner

Resolution

Done: Applied 9 of 9 rows: 8 cop helper renames and moves, plus OpenImplementation -> OpenImplementationFixture.

Evidence: Commit 2c7d21f2; ledger commits a09feda6; suite 2458 runs 0 failures; eager load silent; crc-ledger-check and crc-placement exit 0.

Follow-ups: none

## Resolution **Done:** Applied 9 of 9 rows: 8 cop helper renames and moves, plus OpenImplementation -> OpenImplementationFixture. **Evidence:** Commit 2c7d21f2; ledger commits a09feda6; suite 2458 runs 0 failures; eager load silent; crc-ledger-check and crc-placement exit 0. **Follow-ups:** none
jared closed this issue 2026-10-23 18:43:39 +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#1267
No description provided.