Repository navigation
refactor(runtime): remove the redundant Host stdout iterator alias - #7795
Conversation
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; gpt-6.1-sol; OpenAI; runtime_reported; reasoning_effort=max.
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机
维护 Generic Turn 与 Codex CLI 的开发者在校验共享 Host 子进程适配器时会遇到这个问题。
此前真实基线的 run_host_process 有 91 条语句,超过现有 90 条回归预算;本次删除对文本 stdout 的重复迭代器别名后降为 90 条,同一调用路径的输出、失败与清理结果保持一致。
独立基线运行复现了维护性检查失败;当前 head 通过原检查,七组真实子进程调用的完整观测逐项相同,未提高预算或删除判断。
本次不声称提高模型效果或运行性能,不修改调度、额度、权限及停止规则,也不证明原生 Windows 运行。
改动思路
保留现有 Python IO 适配器与 TypeScript 监督器分工;直接读取已有文本流,删除冗余别名即可,不需要新 helper、协议或状态。
当前 PR 的交付边界是恢复现有维护性回归检查并保持共享 Host 真实调用语义;更广的函数拆分和产品收益不属于本次结论。
Popen 在这里明确使用 UTF-8 文本 PIPE,文本流本身就是迭代器。删除 iter(...) 的局部别名不会换掉读取对象、缓冲区或 EOF 规则。带 launch guard 的分支仍由 GuardedHostBridge.next 处理;超时、输出预算及进程停止仍由既有 TypeScript supervisor 负责。
接受依据是 docs/development/testing-and-quality.md,固定修订 b0768d953a6d9cc9a0786255f3969594535dabda:Refactor Real-Path Gate 要求真实入口和后端验证,Budget Failure Decisions 要求同一 workload 比较、审查冗余并保留语义。本次按这两个标准判断,没有用 PR 中的声明或绿色计数替代独立证据。
具体改动
关键代码讲解
run_host_processL264 将无 guard 分支改为直接next(proc.stdout, None),保留原 JSON event 解码和 stdout/stderr callback。spawned事件仍先释放 launch guard;原 finally 与 containment 仍负责异常后的物理清理。这里没有另造业务规则或重复状态。_run_hostL811 是未修改的真实消费者:完整观测且退出码为零后,才接受一个 JSON object。非零退出保留returncode、完整 reason 与stderr_chars;数组和截断结果继续拒绝。对这一消费者验证比仅断言新表达式更有区分力。
独立运行的同一合成脚本在真实 Python → TypeScript supervisor → 子进程链上比较七组完整结果:Unicode/空串/零值、exit7 与 stderr 计数、非 object、无 deadline 的 callbacks、guard 在 callback 前释放、撤销 launch 不启动子进程且记录不变、callback 异常保留原因并完成 drain。两端七组全部相同,观测摘要为 2397e1e892729b7a9ee130888f526b001df3653288bc3740331c4dec2c544b9c。再将转发的 stdout 在内存中故意改成空串,同一个 Generic 入口在完整 JSON 用例失败;正常 head 通过,说明 oracle 能发现事件丢失。
对主干的风险
主要风险是共享适配器丢失/重复输出或异常时漏清理,会同时影响 Generic 与 Codex。独立本地检查覆盖该风险:六个 owning pytest 文件 187 passed、7 skipped;七个跳过项是当前 macOS 不能执行的原生 Windows 用例,不能据此宣称 Windows 实机合格。可移植 Windows fixture 与实际本地 subprocess 路径已覆盖。基线 Host 子集16项通过但原 debt 检查失败,head 原 debt 检查通过;原 owner 计算为 91/49 → 90/49,原 90/60 预算没有变。
changed Python compile、ruff、diff hygiene 通过。带 Goal 质量策略的标准 premerge 首次因旧 scope receipt 失效而阻止;完成当前 exact-scope 独立质量记录 cqr_d129cd925943dd14fbfb 并验证后,重跑得到 6 direct + 10 selected checks 全通过,无手工 hold。未查询、轮询或等待 CI;CI 未知不构成本次否决依据。没有 live model、安装升级、合并或主动修改源文件。
我的整体评价
APPROVE,限当前 exact head 9be73ab0f8818f49c919692bfce240ad89f3dcaf。真实缺口是现有维护性回归失败;删除的局部冗余可以独立验证和回滚,未发现阻塞性代码问题。进一步拆函数会增加本次机制成本,暂不需要。本结论保持 Host 输出、失败、授权和后续清理语义,不把语句数、测试数或质量 receipt 当成长程效果提升证据。
已检查共享 Host 适配器及 Generic/Codex 调用链,本次没有渲染页面变化,visual_review 不适用。
原生 Windows 与实际模型会话未运行;本次没有可视页面变动。GitHub 同作者限制下用 COMMENTED 发布此批准结论;它不等于平台 formal approval,也不授予 merge/dismiss 权限。
English verdict: APPROVE — redundant iterator alias removed; real Host behavior preserved at 9be73ab0f8818f49c919692bfce240ad89f3dcaf. Native Windows remains unqualified.
run_host_processkept a redundant iterator alias for itsPopentext stdout. Removing it restores the existing maintainability regression: 91 → 90 statements, with 49 decision points and the original 90/60 ceilings. Generic Turn and Codex CLI continue through the same Python IO adapter and TypeScript supervisor; launch fences, deadlines, output limits, cleanup and authority are unchanged.This is a bounded S4/S10/S12 maintenance slice alongside the controller/executor work. It does not complete C1, introduce a new protocol or qualify model effectiveness. Written by: model_agent.
Validation at
9be73ab0f8818f49c919692bfce240ad89f3dcaf, based onb0768d953a6d9cc9a0786255f3969594535dabda:cqr_d129cd925943dd14fbfbis valid and passing; safe-fix allowed, zero review-time fix passes and zero blockers. Its derived test-validation risk retains the optional Windows skip. Standard premerge passed four direct checks, Python compile and ten selected smokes, with zero failures or manual holds. Scope:d129cd925943dd14fbfb0de5943f46c0946ea75be2bd6b2a99e145ea0dc9eeac.UI impact: none. Native Windows execution, live account/model use and long-horizon cost/benefit were not qualified. This normal author proposal remains subject to independent review and maintainer merge authority; no installation or merge is performed.