Skip to content

docs(herdr-delegation): wait only for lane completion - #146

Merged
furedea merged 8 commits into
mainfrom
docs/wait-only-for-lane-completion
Nov 11, 2026
Merged

furedea merged 8 commits into
mainfrom
docs/wait-only-for-lane-completion

Conversation

@furedea-agent

@furedea-agent furedea-agent Bot commented Nov 10, 2026 •

Copy link
Copy Markdown
Contributor

Closes #144

変更(案 B)

lane が CI を裏で待つ間ターンを終えると Herdr では done に見え,親は本当の完了と区別できない.返答の目印による待ち直しはレビューのたびに新しい穴が見つかったため,原因側を直した.

  • delivery.md の Wait for CI:lane は gh run watch <run-id> --exit-status を前面で実行し(Bash タイムアウトは最大の 600000 ms),終わらなければ再実行して,CI が終わるまでターンを終えない.対話中のセッションは従来どおり裏で待つ
  • herdr-delegation/SKILL.md:親の待機は --until working → --until done --timeout 1800000(30 分).done は lane のターンの終わり(最終報告)とみなす.blocked は待たず,承認待ちを親は中継しない(Herdr の音・トースト・サイドバーと provider の通知 hook に任せる)
  • --timeout で返ったら herdr agent list で状態を見て,working / blocked なら待ち続け,done なら done と同じ手順,それ以外は利用者に報告する(herdr agent get は許可リストにないため list を使う)
  • branches.md は重複をやめ herdr-delegation を参照する

目印(LANE-READY / LANE-BLOCKED)による待ち直しの規則は置かない.lane が規則に反して早く終えた場合は,親が返答を読んで報告する.

検証

  • uv run pytest 通過.dprint check は main 上の同ファイルでも同じ指摘が出る既存の差分
  • codex-review は Codex の利用上限で失敗(外部要因)

🤖 Generated with Claude Code

@furedea

furedea commented Nov 10, 2026

Copy link
Copy Markdown
Owner

@codex review

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 10, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ❌ Failed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ❌ Failed 2026-11-11T06:31:57.813751Z
We couldn’t complete this review. Comment @codex review to try again.
bb293ac Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

Comment thread agents/skills/herdr-delegation/SKILL.md Outdated
Comment on lines +140 to +143
When the wait returns done, read the reply with `herdr agent read`. A reply without `LANE-READY`
or `LANE-BLOCKED` means the turn ended while work continues (for example the recipient is
waiting for CI in the background): treat it as incomplete and wait again from
`--until working`. Otherwise, for an implementation, check the PR state and report to the user.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 — The rule "a reply without LANE-READY or LANE-BLOCKED means … incomplete; wait again from --until working" applies to every recipient, but only implementation lanes emit those markers (L50-51). A plan-review recipient (L97-105) finishes with a findings list and no marker. Under this wording, the parent treats a finished review as incomplete and re-runs herdr agent wait <name> --until working. That call has no --timeout, and the reviewer stays idle, so the parent hangs with no limit and never reads or reports the review. Limit the marker check to implementation lanes, e.g. "For an implementation, a reply without …".

Comment thread agents/skills/herdr-delegation/SKILL.md Outdated
When the wait returns done, read the reply with `herdr agent read`. A reply without `LANE-READY`
or `LANE-BLOCKED` means the turn ended while work continues (for example the recipient is
waiting for CI in the background): treat it as incomplete and wait again from
`--until working`. Otherwise, for an implementation, check the PR state and report to the user.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 — When the parent waits again from --until working, nothing limits that wait. The 30-minute --timeout only covers the --until done step. Two cases hang forever without telling the user: (a) the lane ends its turn without a marker by mistake and never resumes; (b) the background work finishes and the lane goes working→done before the parent starts the new --until working wait. Add a --timeout to the --until working re-wait too, then check with herdr agent get and report to the user, as the done-timeout path does.

@github-actions

Copy link
Copy Markdown

Review summary

I reviewed this PR read-only and found 2 problems (1 blocking).

  • P1 herdr-delegation/SKILL.md L140-143: the rule "no LANE-READY / LANE-BLOCKED means incomplete, wait again" applies to every recipient. A plan reviewer never emits those markers, so the parent waits on --until working with no limit and never reports the review. Limit the rule to implementation lanes.
  • P2 herdr-delegation/SKILL.md L143: the --until working re-wait has no --timeout. If the lane forgot the marker, or went working→done before the parent started waiting again, the parent hangs without telling the user.

The branches.md change and the test allowlist look consistent (the herdr agent wait ... --timeout form is already covered by tests/hooks/test_allowed_command.py). This PR changes docs only, so no new tests are needed.

@furedea

furedea commented Nov 10, 2026

Copy link
Copy Markdown
Owner

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

Comment thread agents/skills/herdr-delegation/SKILL.md Outdated
`--until working --timeout 1800000`, then `--until done --timeout 1800000`. A review recipient
carries no marker, so read its findings instead. Otherwise check the PR state and report to the
user. Treat `LANE-BLOCKED` and its reason as incomplete work. When any wait returns on
`--timeout`, check `herdr agent get <name>`: if it is blocked, wait again; otherwise report the

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: The new timeout step tells the parent to run herdr agent get <name>, but no pattern in agents/hooks/rules/allowed_commands.json matches it. The herdr allowlist has agent list, agent read, agent wait, workspace get and others, but not agent get. The step exists so the parent can check state on its own while the user approves in the lane pane. As written, every timeout raises a permission prompt or a denial instead. Either use an allowlisted command (for example herdr agent list, which already reports agent state) or add an ^herdr agent get [^ -][^ ]*$ pattern with a test in tests/hooks/test_allowed_command.py.

@github-actions

Copy link
Copy Markdown

Review summary (read-only)

The PR only changes docs: the parent now waits with --until working, then --until done --timeout 1800000, and leaves approval prompts for the user to handle in the lane's own pane. The new wait commands match the existing herdr agent wait allowlist pattern and herdr_grammar form, so they still run without a prompt.

Findings:

  • P2: The timeout fallback uses herdr agent get <name>, which is not in allowed_commands.json, so every timeout will raise a permission prompt (see the inline comment).

No P0 or P1 issues.

🤖 Generated with Claude Code

@furedea

furedea commented Nov 10, 2026

Copy link
Copy Markdown
Owner

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

Comment thread agents/skills/herdr-delegation/SKILL.md Outdated
`--until working --timeout 1800000`, then `--until done --timeout 1800000`. A review recipient
carries no marker, so read its findings instead. Otherwise check the PR state and report to the
user. Treat `LANE-BLOCKED` and its reason as incomplete work. When any wait returns on
`--timeout`, check the recipient's state with `herdr agent list`: if it is blocked, wait again; otherwise report the

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 — On timeout, only blocked leads to waiting again; anything else, including a recipient that is still working, means "report the state to the user". So any implementation lane that runs past 30 minutes (implementation + verification + CI is common) makes the parent stop watching and report a lane that is still in progress. After that, no background wait is left to notice when it finishes. Consider waiting again while the state is working (or blocked) and reporting only for an unexpected or idle state.

Comment thread agents/skills/herdr-delegation/SKILL.md Outdated
Comment on lines +140 to +143
When the wait returns done, read the reply with `herdr agent read`. For an implementation, a reply
without `LANE-READY` or `LANE-BLOCKED` means the turn ended while work continues (for example the
recipient is waiting for CI in the background): treat it as incomplete and wait again with
`--until working --timeout 1800000`, then `--until done --timeout 1800000`. A review recipient

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 — A done reply without a marker always gets re-waited with --until working --timeout 1800000. That assumes the recipient will start working again on its own (for example from a background CI notification). Two cases break this:

  1. The turn simply ended: the recipient asked a question, failed, or forgot the marker. It never becomes working, so the parent sits idle for 30 minutes before the timeout path reports it. The old flow treated this as incomplete right away.
  2. The background job wakes the recipient and it finishes (working → done) between the parent's agent read and the new wait starting. --until working then misses that work, and on timeout the state is done, so the parent reports it as unfinished even though the lane may have printed LANE-READY.

Consider checking herdr agent list / re-reading the reply first, or treating a marker-less reply as something to look at right away rather than always re-waiting.

@github-actions

Copy link
Copy Markdown

Review summary

No blocking findings. I left two P2 inline comments on the new wait rules in herdr-delegation/SKILL.md:

  • P2 The timeout path only waits again when the recipient is blocked. A lane still working after 30 minutes gets reported to the user and nothing keeps watching it.
  • P2 A done reply without a marker always gets re-waited with --until working. If the turn simply ended, or the recipient wakes up and finishes before the new wait starts, the parent sits idle for 30 minutes and then reports a lane that may have actually finished.

Checks:

  • The 2→4 space list re-indent matches the dprint listIndentKind: pythonMarkdown setting and renders the same.
  • herdr agent wait ... --until done --timeout N and herdr agent list both match the allowlist in allowed_commands.json.
  • The PR body says herdr agent get, but the doc uses herdr agent list. get is not in the allowlist, so the doc is correct.
  • This PR only changes docs, so no tests are needed.

@furedea

furedea commented Nov 10, 2026

Copy link
Copy Markdown
Owner

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

Comment thread agents/skills/herdr-delegation/SKILL.md Outdated
Comment on lines +142 to +145
`LANE-BLOCKED` may mean the turn ended while work continues (for example the recipient is waiting
for CI in the background): check `herdr agent list`. If the recipient is working, or blocked,
wait again with `herdr agent wait <name> --until done --timeout 1800000`; if it is already done
or idle, the turn really ended, so report the reply to the user at once. Otherwise check the PR

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1: The recheck for a done reply with no marker almost never sees the lane still running, so the case this PR is meant to fix still ends in an early report.

The parent runs herdr agent list right after --until done returned done, so the list will nearly always show done too. Take the example the text itself gives: a lane whose turn ended while it waits for CI in the background. That lane sits in done until the background task finishes and wakes it, which can be minutes later. By the rule here ("if it is already done or idle, the turn really ended, so report the reply to the user at once"), the parent reports the unfinished work straight away and stops waiting. Re-waiting with --until done would not help either, because it returns at once on a lane that already shows done, which is the stale-done problem the earlier paragraph describes.

The PR description says the parent should restart the wait from herdr agent wait <name> --until working when no marker is present, and the doc does not do that. Suggest: when the reply has no LANE-READY / LANE-BLOCKED, wait --until working --timeout <bound>, then --until done --timeout 1800000. Report to the user only if the --until working wait times out.

Comment thread agents/skills/herdr-delegation/SKILL.md Outdated
Comment on lines +146 to +148
state and report to the user. Treat `LANE-BLOCKED` and its reason as incomplete work. When a wait
returns on `--timeout`, check `herdr agent list` the same way: wait again while the recipient is
working or blocked, re-read the reply if it is done, and report any other state to the user. This

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: The timeout loop has no limit and never reports. When a wait returns on --timeout and the lane is working or blocked, the parent waits again with no cap and no message to the user.

Example: the user is away and misses Herdr's toast or sound for an approval prompt. The lane stays blocked, and the parent restarts a 30-minute wait over and over without telling anyone. A lane stuck working (a hung command, or a CI poll that never ends) has the same problem. Before this PR, --until blocked at least brought this back to the parent.

Suggest reporting the blocked or long-running state to the user after the first timeout, or after N timeouts, while waiting continues.

@github-actions

Copy link
Copy Markdown

Review summary

  • P1: A done reply without LANE-READY / LANE-BLOCKED is checked with herdr agent list right after the wait returned done, so the lane will almost always still show done. A lane waiting for CI in the background is therefore reported as finished at once. This does not match the PR description, which says to restart the wait from --until working.
  • P2: After a --timeout, a lane that stays blocked or working is waited on again forever, and the parent never tells the user.

Checked and fine: herdr agent list and agent wait --timeout are both allowed by command_permissions.json and herdr_grammar.py. The 2→4-space re-indent of list continuations does not change how the Markdown renders. It does differ from the dprint indentWidth: 2 setting, but that is formatting, not a correctness issue.

🤖 Generated with Claude Code

@furedea

furedea commented Nov 10, 2026

Copy link
Copy Markdown
Owner

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

Comment thread agents/skills/herdr-delegation/SKILL.md Outdated
Comment on lines +141 to +145
marker, so read its findings. For an implementation, a reply without `LANE-READY` or
`LANE-BLOCKED` means the turn ended while work continues (for example the recipient is waiting
for CI in the background): treat it as incomplete and wait again with
`--until working --timeout 1800000`, then `--until done --timeout 1800000`. If the
`--until working` wait times out, the turn really ended: report the reply to the user. Otherwise

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: The "no marker → --until working → timeout means the turn really ended" rule can report a stale reply as final.

  1. Race: the recipient is waiting for CI in the background, so it shows done. It can resume (become working) and finish (back to done with LANE-READY) between the parent's herdr agent read and its --until working call. That wait never sees working, times out after 30 minutes, and the parent reports the old marker-less reply as the final result.
  2. Slow CI: if the background CI wait takes more than 30 minutes, --until working also times out and the parent concludes the turn ended, while the lane is still waiting to resume.

Suggested fix: when the --until working wait times out, re-read the reply with herdr agent read (or check herdr agent list) and look for a marker before reporting the turn as ended, the same way the --until done timeout path re-reads.

@github-actions

Copy link
Copy Markdown

Review summary (read-only)

  • P2 (inline, herdr-delegation/SKILL.md ~L141-145): after a done reply with no marker, the parent waits --until working and treats a timeout as "the turn really ended". That can report a stale reply if the lane resumes and finishes before that wait starts, or if background CI takes more than 30 minutes. Re-read the reply before reporting.

Checked and fine:

  • herdr agent wait … --until done --timeout N, --until working --timeout N and herdr agent list all match the allowlist and the grammar in allowed_commands.json and herdr_grammar.py.
  • The 2→4 space list re-indent comes from dprint's listIndentKind: pythonMarkdown and renders the same.

No P0/P1 findings.

🤖 Generated with Claude Code

furedea and others added 5 commits November 11, 2026 04:16
Wait with --until done --timeout 1800000 instead of also waiting for blocked,
so approvals are handled by the user in the lane's pane and not relayed by
the parent. Treat a done reply without LANE-READY/LANE-BLOCKED as incomplete,
and check `herdr agent get` on timeout. branches.md now refers to
herdr-delegation for the handling.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…nd the re-wait

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…gent list

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@furedea
furedea force-pushed the docs/wait-only-for-lane-completion branch from bca10cd to fd002af Compare November 10, 2026 19:26
@furedea

furedea commented Nov 10, 2026

Copy link
Copy Markdown
Owner

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

Comment thread agents/skills/herdr-delegation/SKILL.md Outdated
Comment on lines +143 to +146
for CI in the background): treat it as incomplete and wait again with
`--until working --timeout 1800000`, then `--until done --timeout 1800000`. If the
`--until working` wait times out, the turn really ended: report the reply to the user. Otherwise
check the PR state and report to the user. Treat `LANE-BLOCKED` and its reason as incomplete

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P2] 「Otherwise check the PR state and report to the user.」が直前の「If the --until working wait times out ...」に続いているため,「--until working が timeout せずに返ったら PR 状態を確認して報告する」と読めます.その読み方だと,lane がまた working に戻った時点で親が報告してしまい,--until done の再待機と,その後に返信を読み直してマーカーを確認する手順が飛ばされます.本来の意図はおそらく「返信に LANE-READY があれば PR 状態を確認して報告する」と,「再待機の --until done が返ったら返信を読み直してマーカー確認からやり直す」の 2 点です.分岐ごとに文を分けて,条件を明示するのがよいと思います.

Comment thread agents/skills/herdr-delegation/SKILL.md Outdated
Comment on lines +144 to +145
`--until working --timeout 1800000`, then `--until done --timeout 1800000`. If the
`--until working` wait times out, the turn really ended: report the reply to the user. Otherwise

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P3] 再待機の --until working --timeout 1800000 には競合があります.親が herdr agent read で返信を読んでいる間に,lane が working に戻ってそのまま done まで進むことがあります(例: バックグラウンドの CI がすぐ終わった場合).この場合 --until working は 30 分待って timeout し,手順どおりなら「the turn really ended」として古い返信(マーカーなし)を報告してしまいます.timeout 時には herdr agent read で返信を読み直し,前回から変わっていないか(新しく LANE-READY / LANE-BLOCKED が出ていないか)を確かめてから報告するよう書いておくと安全です.

@github-actions

Copy link
Copy Markdown

レビュー結果

ブロッキングな指摘はありません(P0: 0,P1: 0).

  • [P2] herdr-delegation/SKILL.md 143-146 行: "Otherwise check the PR state" が --until working の timeout 分岐に続いて読めます.そのため,lane が working に戻った時点で --until done を待たずに報告してしまう恐れがあります.
  • [P3] herdr-delegation/SKILL.md 144-145 行: 親が返信を読んでいる間に lane が working から done まで進むと,--until working は 30 分待って timeout し,古い返信を報告してしまいます.

確認したこと:

  • herdr agent wait ... --until done --timeout <n> は allowed_commands.json と herdr_grammar.py で許可されている.
  • herdr agent list は allowlist に入っている.
  • 変更はドキュメントだけなので,テストの追加は不要と判断した.
  • リスト継続行のインデント変更(2 → 4 スペース)は Markdown の描画を変えない.

補足: PR 本文には timeout 時に herdr agent get を使うとありますが,SKILL.md では herdr agent list になっています.

🤖 Generated with Claude Code

furedea and others added 2 commits November 11, 2026 15:22
A lane that waits for CI in the background ends its turn and shows done in Herdr,
which the parent cannot tell from completion. Lanes now run gh run watch in the
foreground until CI finishes, so done means the final report. Remove the marker
based re-wait rules.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@furedea

furedea commented Nov 11, 2026

Copy link
Copy Markdown
Owner

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@furedea

furedea commented Nov 11, 2026

Copy link
Copy Markdown
Owner

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

Comment on lines +143 to +145
When the wait returns done, read the reply with `herdr agent read`. For an implementation, check
for `LANE-READY`, check the PR state, and report to the user. Treat `LANE-BLOCKED` and its reason
as incomplete work. When the wait returns on `--timeout`, check `herdr agent list`: keep waiting

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: The PR description says that if the wait returns done but the reply has neither LANE-READY nor LANE-BLOCKED, the parent should treat the lane as unfinished and wait again starting from --until working. That rule isn't written here or in branches.md. With the new design, a lane that ends its turn early (for example, it backgrounds gh run watch despite delivery.md, or stops to ask a question) shows up as done with no marker. The parent then just reads and reports, and doesn't resume waiting. Either add the stated re-wait rule or update the PR description to match.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PR description was rewritten for option B before this commit's review: it no longer describes a marker re-wait, and it states that a lane that ends its turn early is read and reported by the parent. The text and the description now agree, so no re-wait rule is added. Recorded in the PR body.

Comment thread agents/skills/herdr-delegation/SKILL.md Outdated
Comment on lines +145 to +146
as incomplete work. When the wait returns on `--timeout`, check `herdr agent list`: keep waiting
while the recipient is `working` or `blocked`; report any other state to the user. This works for

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: In the timeout branch, any state other than working/blocked falls under "report any other state to the user", and that includes done. If the lane finishes between the 30-minute timeout and the herdr agent list check, the parent will report a bare state and skip the done path (read the reply, check LANE-READY, check the PR). Consider saying "if done, continue as for a done return". (Also, the PR description says herdr agent get but the text uses herdr agent list. Worth making them agree.)

@github-actions

Copy link
Copy Markdown

Review summary

Found no blocking issues (no P0/P1). The change is documentation only. Under the new wait flow (--until working, then --until done --timeout 1800000), a stale done isn't a risk, the anchor delivery.md#wait-for-ci resolves, and the test allowlist in tests/hooks/test_allowed_command.py accepts --timeout.

Inline findings:

  • P2: The PR description promises a rule that isn't in the docs: if done comes back without LANE-READY/LANE-BLOCKED, wait again from --until working.
  • P3: In the timeout branch, a lane that is already done falls under "report any other state" instead of the read-the-reply path. The description also says agent get while the text uses agent list.

🤖 Generated with Claude Code

…nds done

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@furedea

furedea commented Nov 11, 2026

Copy link
Copy Markdown
Owner

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@github-actions

Copy link
Copy Markdown

Review summary

No blocking findings. I found no correctness, security, or test-coverage problems worth raising.

What I checked:

  • Allowlist: agents/hooks/rules/allowed_commands.json already allows the new commands, so they run without approval prompts:
    • herdr agent wait <name> --until done --timeout 1800000 matches ^herdr agent wait [^ -][^ ]*( --until [a-z]+| --timeout [0-9]+)*$.
    • herdr agent list matches ^herdr agent list( |$).
  • Waiting logic: The --until working → --until done order still covers a stale done left from an earlier turn. If the lane is blocked, the done wait keeps waiting until the user approves. If the wait returns because it timed out, the PR says to check herdr agent list and covers working, blocked, done and any other state.
  • Lane CI wait: In delivery.md, a lane now waits for CI in the foreground (600000 ms, re-running until the run finishes). That matches the Claude Code Bash maximum, and the doc still keeps lanes apart from interactive sessions, which wait in the background.
  • Cross-references: branches.md now points to herdr-delegation instead of repeating it. I found no leftover --until blocked guidance in the changed skills.
  • Tests: The changes are documentation only. The existing allowlist tests (tests/hooks/test_allowed_command.py) already cover the forms of herdr agent wait with --until and --timeout, so no new tests are needed.

🤖 Generated with Claude Code

@furedea
furedea merged commit 347ec94 into main Nov 11, 2026
22 of 24 checks passed
@furedea
furedea deleted the docs/wait-only-for-lane-completion branch November 11, 2026 06:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

docs(herdr-delegation): wait only for lane completion and leave approvals to the user

1 participant