os-sdlc: evidence collect with general names runs 6 minutes and the probe daemon fails, which ends the implementation at change-auditor #1678
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#1678
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
change-auditoragent runsbin/evidence collect --root <target root> --expect-new ... <tokens>. When the agent passes general names as tokens, the command does far more work than the audit needs, and theruby-lspprobe daemon does not answer in time. The agent's role then requires the verdicterror, and the Runner ends the implementation withimplementation_failed(reason: verdict:error). The run cannot continue. The orchestrator must find the cause and open a new implementation.Observed
On 2026-11-10 in a new worktree (
ticket-1676), implementations 272 and 273 for ticket #1676 both failed at the first node. Dispatches 2668 and 2669 ranevidence collectwith 21 tokens:CLI Emitter Result Run Boot Inputs CrcArgv ArgvOption UsageText TABLE ProcessIO Project Outcome SUBCOMMANDS connect_project! crc_run_dir_input crc_jobs crc_inward_delta crc_ledger_commits crc_shares shares_request. Both gotRuntimeError: lsp-probe: the ruby-lsp daemon socket never came up at /run/user/1000/procman/835165fdb843/lsp-probe/daemon.sockfromlib/os_sdlc/daemon/client.rb:59, at a different token each time (SenderRow#escalation_fields, thenSenderRow#confirmed). The orchestrator then ran the same command by hand with a warm daemon: exit 0 after 6 min 1 s wall time (553 s user CPU), with 2,654,075 bytes on stdout. Implementation 274 passed the node after the orchestrator told the agent to pass only names specific to the ticket (Emitter,CrcArgv,shares_request) and to read the general names from the files.Reproduce
In a fresh worktree of cc-os, from
plugins/os-sdlc:bin/evidence collect --root "$PWD" --expect-new Crc::Jobs::CLI CLI Emitter Result Run Boot Inputs Project ProcessIO Outcome TABLE. Expected: an answer in seconds, or a refusal that names the tokens that are too general. Actual: minutes of work and megabytes of output; on a cold daemon, the socket error above.Origin
Trigger: implementations 272 and 273 failed at change-auditor with verdict error (dispatches 2668, 2669)
Improvised this session: the orchestrator ran the evidence command by hand to find the cause, then gave the third auditor a token list
Chain: implementation ends at the first node ← role maps an evidence-tool failure to verdict
error← daemon socket does not come up under load ← evidence collect accepts any token and probes every sender of a general nameSession: a48658d5-b566-40ce-8257-ebeabf56f7e1
Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os-plugins-os-sdlc/a48658d5-b566-40ce-8257-ebeabf56f7e1.jsonl
Where: plugins/os-sdlc/lib/os_sdlc/evidence/collection.rb (OsSdlc::Evidence::Collection), plugins/os-sdlc/lib/os_sdlc/daemon/client.rb:59 (OsSdlc::Daemon::Client#connect), plugins/os-sdlc/agents/change-auditor.md
Root candidate: none found; searched evidence collect, daemon socket, general names, too general, change-auditor, lsp-probe, evidence/collection
VERDICT: CREATE
REASON: This was a real, complete run in a fresh worktree, and it failed twice at the first node of #1676. The chain ends in the evidence tool (
evidence collectaccepting very general tokens), not in an agent improvisation. Open #967 covers a different fault, and open #1288 covers a PHANTOM verdict on non-Ruby files.Occurrence: change-auditor slow with a narrow token list
Seen: implementation 275 (ticket #1677), dispatch 2685, node change-auditor
Run: session a48658d5-b566-40ce-8257-ebeabf56f7e1
Adds: the dispatch took about 40 minutes of wall time and returned verdict pass. The prompt gave a narrow token list and the ruby-lsp daemon was warm (lsp-probe symbols ran first from the worktree). A narrow token list therefore does not remove the delay. The cause of this delay is not measured yet.
Occurrence: Fix slow or failing evidence collect and lsp daemon in change-auditor
Seen: plugins/os-sdlc/lib/os_sdlc/daemon/client.rb:9,56-59; plugins/os-sdlc/eval/ticket-takedown/lib/takedown/command/evidence_check.rb:5,44
Run: Session a48658d5-b566-40ce-8257-ebeabf56f7e1 (implementations of #1675 to #1682)
Adds: per-implementation timings and the remark of the owner on 2026-11-10 ("11 minutes on the change-auditor is crazy. Something is broken - lsp probably."). Detail follows.
Observed
elapsed_sof eachchange-auditordispatch, read from the Runner report in the transcript (sessiona48658d5, 2026-11-10):elapsed_slsp-probe: the ruby-lsp daemon socket never came up at /run/user/1000/procman/835165fdb843/lsp-probe/daemon.socklsp-probeFor implementations 272 and 273 the agent ran
bin/evidence collectwith 21 tokens, among them general names (CLI,Result,Run,Project,ProcessIO).The error came from
RuntimeErroratplugins/os-sdlc/lib/os_sdlc/daemon/client.rb:59(connectraises afterREADY_TIMEOUT = 15seconds, line 9).lsp-probe warm --root <worktree>and a second run failed the same way (dispatch 2668).The orchestrator ran the command by hand with a warm daemon: exit 0 after 6 min 1 s wall time, 553 s CPU, 2,654,075 bytes on stdout (#1678).
The user wrote "11 minutes on the change-auditor" while ticket #1682 ran.
The Runner recorded 206 s for that dispatch (implementation 277). The whole run took 38 min 5 s over 11 dispatches; the agent time was 1,313 s (22 min), and 16 min passed between dispatches.
The session did not find where the 11 minutes came from; it planned to add the difference to #1678.
The takedown design phase also runs
bin/evidence collectonce atfinal-check: four runs took 75 s to 327 s, and a 600 s timeout fails the run (plugins/os-sdlc/eval/ticket-takedown/lib/takedown/command/evidence_check.rb:5,44).After the failures the user ordered: "After this ticket, Implement the rest by hand."
The session then dropped the pipeline for the remaining pieces.
Reproduce
This is the command from #1678. Expected: an answer in seconds. Actual: minutes of work and megabytes of output; on a cold daemon, the socket error above.
Approach
Merge into #1678.
Add the gap that #1678 does not name: a change-auditor step that spends more than 600 s with no daemon failure (implementations 270, 271, 275), and 16 min between dispatches in implementation 277 that the Runner report does not explain.
Decide in the ticket decomposition whether
evidence collectrefuses or bounds a token list that names a general class, and whether the daemon starts before the first query (lsp-probe warmdid not help).Correction 2026-11-12
The "Reproduce" tokens name classes that no longer exist:
Boot,Inputs,CrcArgv, andTABLE. The command in that section no longer reproduces the run as written.Commits
07e780513ande357262f3(#1693, 2026-11-11) changed the daemon handshake and the process start ofruby-lsp.Nobody has seen the socket failure again since #1693.
This comment does not claim that the defect is fixed. A new observation with current tokens must confirm or refute it.