Mirror each os-sdlc test file to its source path, a ledger pass #1644
Labels
No labels
P0
P1
P2
P3
bug
category/code-change
category/cross-repo
category/eval-run
category/investigation
category/no-test-target
category/owner-ruling
category/prose-artifact
category/recurring-chore
category/structure
category/umbrella
crc-refactor
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
rule-proposal
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#1644
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?
Problem
Ruby convention and Mutineer pairing expect
lib/foo/bar.rbto pair withtest/foo/bar_test.rb. In os-sdlc only 180 of 1,120 lib files have a test at the mirrored path, and 168 test files sit flat at the top of the test directory. Tests were never moved during the four CRC refactor runs that moved their sources. Mutineer autopair fails for most files, so the survivor gate and the whole-codebase pass carry explicit test lists as a workaround (ruling 86, 2026-11-08).Reproduce
n/a: structure ticket, no behavior change.
Approach
A ledger pass like crc-refactor over the test files, not the sources. One ledger row per test file naming the source it exercises. Evidence order: the whole-codebase kill matrix (
os-sdlc-mutation-pass run ., which shows the source files each test kills mutants in), then the constant under test. Thengit mvin green batches with suite and rubocop after each batch. A test that exercises several sources is split or placed with the primary owner and noted in the ledger. Same pass for os-backlog, os-git, os, os-adr, os-aidd-lint after os-sdlc. Blocked by: branchtests-to-test(thetests/totest/rename) merging first.Required work: none beyond the acceptance criteria.
Origin
tests/VERDICT: CREATE
Evidence ready: first whole-codebase kill matrix, 2026-11-08. Record and TSVs in docs/research/mutation-testing/2026-11-08-first-whole-codebase-pass/ (
60f373a4c). overlap.tsv sole_foreign_killer and many_killers name the test files that kill each source file's mutants; use them as the owner evidence for the ledger. The tests/ to test/ rename is merged (c8deb07b), so this ticket is unblocked.Rulings 100 and 101 (predicted, 2026-11-09): the mirror target is test/os_sdlc/_test.rb, because Mutineer pairs lib/os_sdlc/x.rb only with test/os_sdlc/x_test.rb (commit
543eade6put the new map check tests there). The last acceptance criterion is a suite-level check that each lib file has a paired test or a ledger row naming its owner test. No baseline.jared referenced this issue2026-11-10 13:31:56 +00:00