Repository navigation
Conversation
herdr 0.8.2's `agent start` returns only once the agent is idle; a claude worker handed /work-system:continue is busy from the first second, so every native claude:* launch ended blocked=unverified while the worker ran, and herdr never registered its name. - On `code=timeout` only, poll `pane get` (CONFIRM_SECONDS, 10s) for the expected kind in that pane: found → moved=yes, else unverified as before - Name the confirmed worker via `agent rename <pane> <label>`; best-effort, a refusal is reported on stderr - Print herdr's timeout error only when confirmation fails - Hermetic tests for detected / name taken / nothing / wrong kind - Knowledge: 0.8.2 readiness semantics, measured live Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FqXCdJZeE2VMqC9dZ1Qnh6
A bounded read stalled past its 10s bound on a loaded runner is killed after the herdr stub already counted it, so every later canned answer shifts by one and the suite failed on a different assertion each run. - WORK_SYSTEM_HERDR_PROBE_SECONDS / WORK_SYSTEM_AGENT_PROBE_SECONDS replace the literal `run_bounded 10` (production default unchanged) - Env.__init__ pins both plus HA_CALL_TIMEOUT_SECS to 120s - Knowledge gotcha; work-system 1.28.2 with changelog Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FqXCdJZeE2VMqC9dZ1Qnh6
gering
force-pushed
the
task/fix-herdr-launch-unverified-on-0-8-2
branch
from
October 26, 2026 15:35
c5697c3 to
35ffcba
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
agent startreturns only once the agent is idle. A nativeclaude:*worker handed/work-system:continueis busy from the first second, so every such kickoff endedblocked=unverifiedwhile the worker ran, and herdr never registered the agent name (agent get <label>→agent_not_found).herdr-launch.shnow confirms acode=timeoutstart from process state and names the worker; other errors and an undetected worker stay fail-closed.fix-flaky-herdr-launch-test: seams for the literal 10s probe bounds, pinned in the test harness, plus the residual cause.Changes
timeoutcode only): bounded poll ofpane get(WORK_SYSTEM_HERDR_CONFIRM_SECONDS, 10s) for the expected kind in that pane →moved=yes; nothing or a wrong kind →blocked=unverified. Nothing is retried, no second worker.agent rename <pane> <label>after confirmation, best-effort (agent_name_takenis reported on stderr, the launch stays confirmed).WORK_SYSTEM_HERDR_PROBE_SECONDS,WORK_SYSTEM_AGENT_PROBE_SECONDSreplace the eight literalrun_bounded 10(production default unchanged);Env.__init__pins them andHA_CALL_TIMEOUT_SECSto 120s.herdr-kickoff-automation.md): 0.8.2 readiness semantics + the stub-shift gotcha. work-system 1.28.2.Live measurements (herdr 0.8.2)
pane getreportsagent=claude0.6s after the start;agent start --timeout 10000timed out at 10.4s with the agentworking. A start whose/work-system:statusturn took 16s returned at 17s — readiness = idle.agent rename <pane> <name>fixes it (idempotent).agent_not_ready("blocked during startup") is CC's trust dialog in an untrusted cwd — staysunverified.herdr error code=timeout→moved=yes, agent reachable by its label.Flaky test: cause and measurement
pane getunder a 1s bound turnswrapper wrong kind: stops immediatelyfrom 1 poll into 2; a 0.15s bound reproduces exactly the fivemodern --grokassertions seen before (thegrok modelsprobe). This explains every assertion in the original report.cc-harness-agentson PATH (not called byresolve).for k in 1 2 3; do <20 concurrent runs>; done→ 0/20, 0/20, 0/20 (198–235s each).Readiness
scripts/check-structure.py(incl. plugin tests)Test plan
check-structure.pygreenclaude:*kickoff on herdr 0.8.2 returnsmoved=yesandherdr agent get <label>resolves🤖 Generated with Claude Code
https://claude.ai/code/session_01FqXCdJZeE2VMqC9dZ1Qnh6