Repository navigation
fix(e2e)+check-fork:被拒重跑可见、去掉交回写者、pin 一致性守卫 - #33
Merged
Merged
Conversation
- 提示词与 docstring 删掉"或交回写者",流程回到超时预算假设的三轮。 - ShellCommand 加 ran:解析层保留被拒、无结果的调用并标 ran=False, 由 _rerun_by_parent 判定;checks.json 因此能区分"没重跑"和"重跑被拒"。 Claude 父会话命令按调用顺序列出。 - model_mismatch 拆成独立用例,回执用固定模型加 resolved_models 的真实形状, 并以同形状的超时回执作对照。 - _xagent_attempts 的分组 key 只写一处;测试里 ran 不再一词多义; docstring 说明 model_mismatch 只排除运行窗口。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ADAPTATION 首行、README.md、README.zh-CN.md 必须引用 UPSTREAM.json 的 版本和提交(README 用 8 位短 SHA 与 tree 链接)。同步时只需改 UPSTREAM.json, 守卫会点名其余没跟上的副本。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
- validatePin 加入 .claude-plugin、.codex-plugin 的 version 前缀 "<upstream version>-shared.",并先校验 UPSTREAM.json 的版本和 SHA 格式; ADAPTATION 收尾句写明 manifest 重置为 -shared.1,守卫清单与 docs/ci.md 同步。 - HostAdapter.parent_commands 注释改为"返回宿主自己的每次调用并标 ran"。 - _xagent_attempts 预先算好每张回执的分组 key;ran 规则只在字段注释和 _claude_result/_codex_command 里各说一次;ran 用关键字传参。 - 测试:pin 用例断言完整消息、覆盖 manifest 和格式错误的 UPSTREAM.json; Claude 无结果的调用记为未执行;Codex 用例变量改名。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 宿主 manifest 的版本前缀改在 validateManifests 里按解析后的 version 字段检查, 不再在 JSON 文本里找子串;每个 manifest 只读一次、只报一次。 - check-fork 导出 readPin,一次校验 UPSTREAM.json 的 repository、path、commit、 version(含类型),check-upstream.mjs 改用它,commit 正则不再复制。 格式错误单独成用例。 - 夹具预检不再沿用 --check-timeout:负载下 1 秒不够 Python 启动,会让 "宿主留下死循环"用例偶发失败(审查者负载下 3/4 复现)。用例改用 0.05 秒, 旧写法必定失败。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- "宿主留下死循环"用例恢复 1 秒检查时限:0.05 秒时 Python 来不及启动, 换成正确代码也照样通过,前提不起作用。预检不受 --check-timeout 影响 另由新用例验证(正确 stub、0.05 秒,断言夹具失败已记录且宿主运行过)。 两个用例共用 exercise_claude_stub,宿主时限 5 秒。 - readPin 报错写出每个字段的期望格式;UPSTREAM.json 为 null 时按格式错误报。 - check-upstream.mjs 不再引入被参数遮蔽的 path,repo 按校验过的前缀截取。 - validateManifests 在判空后才拼版本前缀;validatePin 只接受非 null 的 pin。 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.
要解决的问题
收拾 #32 thermos 第 4 轮留下的 4 类非阻断项,补上 #31 时发现缺的 pin 一致性守卫,并修掉验证中发现的一个偶发失败的门禁用例。不改上游,不碰
bin/xagent*。改动
pstack-host-e2e.py):提示词和 docstring 去掉"或交回写者"。父会话只在自己的 checkout 里修复发现,流程回到WORST_CASE_ATTEMPTS = 3 * 2假设的三轮,默认--host-timeout仍为 6246 s。e2e-native-evidence.py、pstack-host-e2e.py):ShellCommand新增ran。解析层保留被拒或没有结果的调用,并标为ran=False:Exit code N开头,算执行过;exit_code才算执行过。_rerun_by_parent要求command.ran,判定结果与之前一致。checks.json的parent_commands带上ran,能直接区分"没重跑"和"重跑被拒"。model_mismatch用例:拆成独立用例,回执用真实形状(固定模型、resolved_models、reason: model_mismatch)。同一用例里加对照:同形状的超时回执能填上写者槽位。_xagent_attempts的分组 key 只算一次;ran只有一个含义;check-fork.mjs):readPin校验UPSTREAM.json的 repository、path、commit、version,报错写明各字段的期望格式;check-upstream.mjs改用它,正则不再重复。validatePin要求 ADAPTATION 首行、两份 README 引用当前版本和提交(README 用 8 位短 SHA 加 tree 链接)。validateManifests要求.claude-plugin、.codex-plugin的version以<upstream version>-shared.开头。UPSTREAM.json,manifest 重置为-shared.1,其余副本由守卫点名。exercise的夹具预检沿用了--check-timeout。"宿主留下死循环"用例传入 1 秒,负载下 Python 启动加 unittest 会超时,报FAILED (failures=1);审查者在负载下复现了 4 次中的 3 次。验证(最终 HEAD
7182195)bash scripts/check.sh runtime(macOS,gnubin 在前)退出 0。node 测试 92/92;statechart 196 个通过、0 个失败;harness 两套测试 31/31、29/29;其余三套 OK。statechart 的 differential 和 render 按设计跳过,~/.cache/statechart没有重新创建node scripts/check-fork.mjs输出 "… manifests, upstream pin.";check-fork.test.mjs13/13node scripts/check-upstream.mjs退出 0:cursor/plugins、up-to-date、0.15.36、0 个新提交_rerun_by_parent的ran判断;去掉 model_mismatch 过滤;Claude 的ran恒为 True;只去掉Exit code分支;Codex 的ran恒为 True;预检改回旧时限(只有新用例失败);死循环用例换成正确 stub(该用例失败)checkFork不调用 pin 校验;去掉某个 manifest 的版本检查;去掉版本正则;去掉类型检查;readPin不处理 nulldd8f7c3..7182195)UPSTREAM.json,每种都只报一行;check-upstream在仓库外运行正常。代码质量审查剩 3 个写法小项,见「限制」。结论对应 HEAD7182195fcffcbf无发现限制
pstack-host-e2e.test.py:459-460的注释写的是审查经过,里面的"1 s"指的是旧参数;run = directory.parent可以直接写成directory / name;check-upstream.mjs用fileURLToPath(new URL('..', import.meta.url))定位仓库根,同目录其他脚本用的是import.meta.dirname。🤖 Generated with Claude Code