os-sdlc: survivors gate step and slow-step warning (#1638 part C) #1641
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#1641
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
os-sdlc-survivorscommand exists, but no map runs it, so a survivor does not stop a ticket. A Mutineer run that takes much longer than expected gives no signal.Approach
Design:
docs/system-design-format/proof/2026-11-08-os-sdlc-mutation-survivors.md, sections 3 to 5, build slice 6 (slice 7 is orchestrator work below). Parent: #1638.Required work:
survivorstoGate::Name::ALLand map it inGate::Commands#to_htoos-sdlc-survivors <implementation-id>— check: presentos-sdlc-survivorsinplugins/os-sdlc/lib/os_sdlc/gate/**/*.rbStepOutcome#gate_typemapssurvivorstosurvivor(notmutation, which is the seeded-patch gate's name);Gate::ViolationRecord::PARSERS["survivor"]records oneViolationper survivor throughMutationTest::Outcome.parse(output).survivors.violations— check: presentMutationTest::Outcome.parseinplugins/os-sdlc/lib/os_sdlc/gate/**/*.rbsurvivorsstep that exits 3 gives the verdicterror, notfail, so a tool failure never routes to a test-writing node — check: present"survivor"inplugins/os-sdlc/lib/os_sdlc/**/*.rbGate::SlowStepwithLIMITS = { "survivors" => 500 }seconds andwarning(outcome);Gate::Reply#to_haddswarningson every verdict when a limit gives a line — check: presentwarningsinplugins/os-sdlc/lib/os_sdlc/gate/**/*.rbOrchestrator work: after this ticket merges, edit
plugins/os-sdlc/maps/poodr-ticket-implementation.yaml(design section 3 and slice 7): nodesurvivor-check(agentsuite-check,gates: [survivors], instructions to runos-sdlc-gatewith a Bash timeout of 600000 ms,pass: contract-auditor,fail: survivor-tests); nodesurvivor-tests(agenttest-writer,gates: [survivors, test-lint], instructions to write tests that kill the listed survivors and pass on the current code,pass: suite-check,fail: { to: survivor-tests, bound: 2 });suite-checkpass:goes tosurvivor-check. A run on this map that edits the map file fails its own map-digest check, so this edit is not in the pipeline run. Verify with the map document test andMap::Check.Acceptance criteria
gates: [survivors]and a survivors command that exits 0, when the gate runs, then the verdict is pass.survivorholds two violations with the survivors' files and lines.warningsline naming the step and its time, and the verdict is the same as without the warning.warningskey.survivorviolations are resolved andlintandtestviolations are not touched.Owner sketch
Blocking edges
Blocked by #1640.
Origin
docs/system-design-format/proof/2026-11-08-os-sdlc-mutation-survivors.md(commitf0e172b7) for parent #1638docs/system-design-format/proof/2026-11-08-os-sdlc-mutation-survivors.md)VERDICT: CREATE
Blocked on #1640 (MutationTest::Outcome and os-sdlc-survivors).
Unblocked: #1640 is closed (MutationTest::Outcome and os-sdlc-survivors are built). The waiting label stays until the CLI can remove labels.
Work started on branch ticket-1641 (os-sdlc pipeline, map poodr-ticket-implementation).
Resolution
Done: Gate type survivor wired through Gate::Name, Gate::Commands, StepOutcome and ViolationRecord; MutationTest::Survivors#violations folds survivors into gate violations; Gate::SlowStep owns the non-blocking 500 s limit and adds a warning to the gate reply.
Evidence: Implementation 265 implementation_complete: 10 dispatches, 0 retries, 14 min 0 s; Runner commit on branch ticket-1641 (11 paths, none overlapping or dirty). Suite gate passed in 54.6 s. Contract-auditor passed with no LENS lines.
Follow-ups: Map edit (survivor-check and survivor-tests nodes, suite-check pass edge) is orchestrator work after this merge, per the design doc slice 7; done in this session under #1638.