Repository navigation
F117 Phase 4 修复:超时成员以带 timeout 的 done 收尾,不再多出一行 Error - #201
Merged
Merged
Conversation
Why: alpha self-test of Phase 4 (CLI_TIMEOUT_MS=60s, codex-sol running `sleep 150`). The member was stopped at the 2x cap and its response failed with reason timeout as designed, but a second "Error: 响应超时…" row appeared at the bottom of the thread, along with a "猫猫出错了" push. The timed-out member had no done in the serial route, and a done without an errorCode in the parallel one. So the Queue found no success witness, threw, and broadcast an unstamped final error, which the web shows as its own row. A failed provider turn avoids that because its done carries PROVIDER_EXECUTION_FAILED and the Queue settles the entry failed from it. Now a timed-out member ends the same way, with a done whose errorCode is `timeout`. The F117 J4 notes also record that CLI carriers effectively get the 2x deferral, because an idle Codex CLI still crosses F118's 50ms/60s "busy" threshold. [宪宪/claude-opus-5-5🐾] Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mindfn
added a commit
that referenced
this pull request
Sep 27, 2026
Why: Landy 09-27 (…000735, …000742) asked that cats self-test features in alpha (3011) with a browser before handing them to her on 3001, and that alpha acceptance goes to sol by default. The Phase 4 self-test found an extra "Error: 响应超时…" row on a member timeout; the fix is #201. The convention also records the alpha env hazard: alpha-worktree.sh does not clear an inherited REDIS_DATA_DIR/REDIS_BACKUP_DIR, and start-dev treats them as CLI overrides, so the alpha Redis would use the runtime's data dir. [宪宪/claude-opus-5-5🐾] Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Owner
Author
验证结果(
|
mindfn
added a commit
that referenced
this pull request
Sep 27, 2026
Why: kimi approved both (…000774). #201 (9b43eb4) ends a timed-out member with a done naming the timeout, so no second Error row; #202 (0e4c6ec) keeps alpha's Redis out of the runtime's data dir, so the convention no longer needs the manual unset. The one Phase 4 behaviour not yet seen in a real run, siblings running on after a member times out, goes to sol in alpha per convention 11. [宪宪/claude-opus-5-5🐾] Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
为什么
Phase 4(#200)合入后在 alpha 自测(develop_base
900d87835,CLI_TIMEOUT_MS=60000,让 codex-sol 执行sleep 150)。超时本身符合设计:距最后一次输出 120 秒时成员被停下,R 为 failed /timeout,诊断silenceDurationMs=120001。但对话底部多出一行「Error: 响应超时:2 分钟没有任何输出,已停止。」,还推送了一条「猫猫出错了」。原因:超时的成员在串行 route 里没有 done,在并行 route 里 done 不带 errorCode。QueueProcessor 找不到这个成员的成功凭据,只能走抛异常的兜底路径,广播一条不带 messageId 的最终 error,web 把它显示成单独一行。provider 失败不会这样,因为它的 done 带着
PROVIDER_EXECUTION_FAILED,QueueProcessor 直接据此把条目记为失败。做了什么
timeout的 done(MEMBER_TIMEOUT_REASON)。timeout。1398-phase4-member-timeout-stop的assertTimedOutMember增加断言:超时成员的最后一个 done 带errorCode === 'timeout',并且失败事件在 done 之前。串行和并行都覆盖。alpha 复验(修复后,同一配置)
sleep 150:R…000001-3a50e1ac为 failed /timeout,诊断silenceDurationMs=120002、processAlive=true、lastEventType=tool_use。界面上是一条「响应超时:2 分钟没有任何输出,已停止。」加「回复失败。」,底部不再有单独的 Error 行。…000004-e1b24cb7completed)。a2a_timeout信号,和本修复无关。验证
回退兼容
只是给 done 补上了已有字段
errorCode的一个取值;回退后回到 #200 的行为(多出那一行 Error),数据格式不变。[宪宪/claude-opus-5-5🐾]
🤖 Generated with Claude Code