os-sdlc reviewer-guidance proposal: Write reviewer guidance on near-duplicate sibling classes #212
Labels
No labels
P0
P1
P2
P3
bug
create
delete
enhancement
filed-by/agent
filed-by/user
frozen
lint-rule
needs-info
needs-triage
next
plugin/cc-architect
plugin/os
plugin/os-adr
plugin/os-aidd-lint
plugin/os-backlog
plugin/os-context
plugin/os-doc-hygiene
plugin/os-sdlc
plugin/os-vault
project/cc-os
ready-for-agent
ready-for-human
recurring
review
update
waiting
wayfinder:grilling
wayfinder:map
wayfinder:map
wayfinder:research
wayfinder:task
wayfinder:task
wontfix
worklist/deviations
worklist/lint-rule
worklist/new-implement-build
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
jared/cc-os#212
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Context: Discovered during architectural review of caldotcom-api (generated by the api-wrapper skill) vs hand-written shortpixel gem, 2026-08-01. Generality-tested against both repos. Pending validation via os-sdlc check before implementation.
This is a judgment-tier reviewer-prompt rule, NOT a RuboCop cop — the offense is cross-file/aggregate
in scope, which RuboCop's single-file cops cannot see.
Problem:
/home/jared/dev/ruby-gems/caldotcom-api/lib/caldotcom/resources/routing_forms.rband.../routing_forms_scoped.rbare two classes differing only in mount point; likewisebookings.rb/scoped_bookings.rb.scoped_bookings.rb:5-8even documents the smell in a comment:"reusing Resources::Bookings wholesale would expose methods that 404, so this is a separate class."The
Scopevalue object exists precisely so one parameterized class could serve both mounts.Detection: Judgment-tier — reviewer guidance, not a cop. The offense is cross-file structural
similarity between two class bodies; RuboCop cops are single-file scoped (confirmed: even
Sdlc/Dry/DuplicatedStatementSequenceonly compares statement windows acrossdefs inside onefile). Deciding whether the delta is a real capability difference or duplicated ceremony requires
reading the upstream API contract.
Solution: Reviewer prompt rule: "When two classes in the same directory share a name stem
(
Foo/ScopedFoo/FooScoped), require the author to justify why a single class parameterizedby its collaborator (mount, scope, adapter) is insufficient."
Depends on: none
Note (exclusion check performed during decomposition):
Sdlc/Dry/DuplicatedStatementSequenceiswithin-file, across-
defstatement windows (on_new_investigation→collect_defs(processed_source.ast)),so it does NOT reach this cross-file near-duplicate class pair. This finding is genuinely novel but
judgment-tier, not mechanically detectable.
Discoverer: ruby-gems/caldotcom-api, session id unavailable, 2026-08-01. Filed during os-sdlc lint-mining of the api-wrapper skill output; ticket belongs on cc-os's tracker per cross-project filing.
Deferred per ADR-0044: provenance is api-wrapper skill output (caldotcom/shortpixel gems), not an os-sdlc pipeline run — no reviewer has approved a sibling near-duplicate pair. Also likely unactionable: reviewer sees one ticket's diff; sibling classes arrive across tickets. Re-open trigger: an os-sdlc run ships an approved Foo/ScopedFoo pair.
Frozen in the 2026-08-16 backlog reset — see #419 for the expiry procedure. Do not work unless a live run rediscovers this issue.