Move store-evidence batch to role-correct directories per roles-store-evidence.md #786

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

Problem

Store-evidence files sit in role directories with no concept root or with single-caller top-level objects.
The role table in roles-store-evidence.md names the moves to consolidate store-evidence concepts under role-correct directories.

Reproduce

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

Approach

Apply the move map in roles-store-evidence.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: GoalpostCheck to model/; Fingerprint::MethodProbes to adapter/; the four Report entry objects split between command/report/ and model/report/; CommandSupport to presenter/; ProjectValidationError stays (live). 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-store-evidence.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-store-evidence.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::GoalpostCheck; end
class OsSdlc::Fingerprint; 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-store-evidence.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-store-evidence.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 Store-evidence files sit in role directories with no concept root or with single-caller top-level objects. The role table in roles-store-evidence.md names the moves to consolidate store-evidence concepts under role-correct directories. ## Reproduce n/a: structure-only refactor from a role-morph table. ## Approach Apply the move map in roles-store-evidence.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: GoalpostCheck to model/; Fingerprint::MethodProbes to adapter/; the four Report entry objects split between command/report/ and model/report/; CommandSupport to presenter/; ProjectValidationError stays (live). 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-store-evidence.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-store-evidence.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::GoalpostCheck; end class OsSdlc::Fingerprint; 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-store-evidence.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-store-evidence.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: 1bfea020 (GoalpostCheck->model/), 87d6bd9d (MethodProbes->adapter/fingerprint/), d21ae5d6 (Report entry-object split across command/report+model/report), 0ef5d5b2 (CommandSupport->presenter/).
Rows applied: 7/7, 0 deviations.
Final suite: 1300 runs, 2851 assertions, 0 failures, 0 errors, 10 skips. Final inward-lint: 64 crossings, exit 0.

Commits: 1bfea020 (GoalpostCheck->model/), 87d6bd9d (MethodProbes->adapter/fingerprint/), d21ae5d6 (Report entry-object split across command/report+model/report), 0ef5d5b2 (CommandSupport->presenter/). Rows applied: 7/7, 0 deviations. Final suite: 1300 runs, 2851 assertions, 0 failures, 0 errors, 10 skips. Final inward-lint: 64 crossings, exit 0.
Author
Owner

GoalpostCheck fix: commit 1a676442

GoalpostCheck fix: commit 1a676442
Author
Owner

Resolution

Done: store-evidence batch: GoalpostCheck to model/ and now receives changed paths from ObjectionIntake (A6/A11), Fingerprint::MethodProbes to adapter/, Report entry objects split between command/report/ and model/report/, CommandSupport to presenter/; 7 of 7 rows.

Evidence: Commits 1bfea020..1a676442 on crc-pass-os-sdlc; suite 1300 runs 0 failures; inward lint 62 lines exit 0.

Follow-ups: #788 renames the Violations ledger to end the Gate::Violations name shadow (skeptic VERDICT: CREATE).

## Resolution **Done:** store-evidence batch: GoalpostCheck to model/ and now receives changed paths from ObjectionIntake (A6/A11), Fingerprint::MethodProbes to adapter/, Report entry objects split between command/report/ and model/report/, CommandSupport to presenter/; 7 of 7 rows. **Evidence:** Commits 1bfea020..1a676442 on crc-pass-os-sdlc; suite 1300 runs 0 failures; inward lint 62 lines exit 0. **Follow-ups:** #788 renames the Violations ledger to end the Gate::Violations name shadow (skeptic VERDICT: CREATE).
jared closed this issue 2026-09-28 01:18:36 +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#786
No description provided.