Keep failure blocks in takedown green-suite recorded output #1425
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#1425
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 ticket-takedown
green-suitestep records a failing test path but drops the failure text. The takedown fails with no evidence to debug from.Observed
In run
docs/takedown/1416-20261027-123627, files14-green-suite.jsonand20-green-suite.jsonlistplugins/os-sdlc/tests/crc/tickets_bin_test.rbintargets[0].failing_paths.targets[0].outputholds 14,480 characters of repeated sqlitefork_safety.rb:43warnings.It holds no failure line, no backtrace, and no Minitest summary.
Takedown::SuiteRun#failing_pathsparses the full output, butTakedown::SuiteRun#entrykeeps onlyoutput.lines.last(TAIL)withTAIL = 40.Warnings printed after the failure block fill the last 40 lines, so the failure block falls outside the kept window.
The same test file passes 3/3 alone and in the full suite on main.
Reproduce
The fork warnings no longer appear on main
bb9f1f88(#1421 removedInProcessBin#forked). Reproduce with any failing test that prints more than 40 lines of noise after its Minitest failure block:The result contains no
Failure:line.Approach
Keep the Minitest failure blocks in the recorded output, not only the last 40 lines.
Required work:
failing_pathsalready finds, plus the final summary — check: absentoutput.lines.last(TAIL)inplugins/os-sdlc/eval/ticket-takedown/lib/takedown/model/suite_run.rbAcceptance criteria
outputcontains the failure block.outputis empty.Owner sketch
Origin
docs/takedown/1416-20261027-123627, steps 14 and 20entrykeeps only the last 40 lines (plugins/os-sdlc/eval/ticket-takedown/lib/takedown/model/suite_run.rb:18) <- DESIGN (tail window chosen without regard to trailing noise)VERDICT: CREATE
Diagnosis of the recurring
plugins/os-sdlc/tests/crc/tickets_bin_test.rbgreen-suite failure (runs 1416-20261027-123627, 1415-20261027-123629, 1415-20261027-125443 and earlier). This is a separate defect from the truncation in this ticket. The 40-line tail hid it.Environment of the step.
ScratchRepo#build(plugins/os-sdlc/eval/ticket-takedown/lib/takedown/adapter/scratch_repo.rb) runsgit archiveof the base commit, stripsplugins/os-sdlc/evalanddocs/handoffs, thengit initand one commit named "base".SuiteRunnerrunssh -c "ruby plugins/os-sdlc/tests/all.rb"with cwd = that repo. The scratch repo has one commit.Reproduction (same recipe, main
6a0acac0, no design applied): 2776 runs, 1 failure.Cause. Helper
ledger_at(tickets_bin_test.rb:115-120) runsgit -C <repo root> show 88a6bd35:docs/crc/os-sdlc/ledger.tsv. It needs historic commit88a6bd35. In the scratch repo git saysfatal: invalid object name '88a6bd35'(exit 128). The test passes on main because main has that history. It fails for every design, with no design applied.Smallest fix. Commit the ledger blob as a fixture (for example plugins/os-sdlc/tests/fixtures/crc/os-sdlc-ledger-88a6bd35.tsv) and read it with File.read in
ledger_at. This removes the history dependency.Follow-ups. The sqlite3 fork_safety warning repeats in the output and floods the tail; filter it when fixing #1425. Keep failure blocks, not the log tail.
Work started: worktree .claude/worktrees/ticket-1425, branch ticket-1425.
Resolution
Done: SuiteRun#recorded_output records each failure block (capped at 30 lines) plus the Minitest summary; falls back to the last 40 lines when the output has no failure block (crash before Minitest runs).
Evidence: main
d6190950(commits81c92611,19883ddc,e3532310). test/model/suite_run_test.rb: 3 tests. Takedown suite 624 runs, 0 failures; rubocop clean. Built by hand in a worktree, test first, not via /os-sdlc:implement.Follow-ups: #1432 RedCheck 40-line tail (skeptic VERDICT: CREATE, no root candidate); shared block parser for failing_paths and recorded_output: dropped, no defect.