round_tests must skip test files deleted in the current round #823
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#823
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
The
round_testsbrief fact crashes when a red round deletes a test file after a programmer dispatch has passed.git diff --name-onlylists deleted paths, andProject::Changes#test_pathspasses them toGit::Repo#modified_since?. That method callsFile.mtimeon each path, andFile.mtimeraises on a missing file. The test-reviewer brief is then never built, and the run stops. A ticket with## Retired testsmakes the test-writer delete test files, so this can happen on the behavior-verifier fail edge that #811 fixed.Reproduce
n/a: needs a red round after a passed programmer dispatch that deletes a test file; acceptance criterion 1 states the setup.
Approach
A deleted test cannot be red, so
round_testsmust not name it. Mapped test paths are not affected, becauseCodebase#tests_forreturns only existing candidates.Required work:
Git::Repo#modified_since?returns false for a path that does not exist.Rejected:
rescue Errno::ENOENTinmodified_since?— exception for control flow; the missing file is an expected state.Acceptance criteria
round_testsfact is built, then it names the new test file, does not name the deleted file, and does not raise.Owner sketch
Origin
Errno::ENOENTfromFile.mtime←Git::Repo#modified_since?reads deleted git-diff paths (behavior-verifier 750 and contract-auditor 752 GAP items) ← DESIGN (plugins/os-sdlc/lib/os_sdlc/adapter/git/repo.rb, added in11339a12)Git::Repo#modified_since?VERDICT: CREATE — user approved filing this follow-up of #811 on 2026-09-29.
Work started on branch ticket-takedown (worktree .claude/worktrees/ticket-takedown), via /os-sdlc:implement.
Resolution
Done: Git::Repo#modified_since? returns false for a missing path; round_tests no longer raises on test files deleted in the current round
Evidence: branch ticket-takedown commit
40a523d8(history rowf95388d1); implementation 76: 8 dispatches, all pass, suite-check green; regression test test_round_that_deletes_an_earlier_test_names_only_the_new_testFollow-ups: none: auditors noted Changes#test_diff passes deleted paths to Repo#diff; a diff of a deleted tracked path shows the deletion, which the reviewer needs for retired tests, so it is not a defect