Skip to content

test(workspace): preserve fixture failures and observe paged history - #7494

Merged
loopx-agent merged 1 commit into
mainfrom
codex/workspace-fixture-errors-20261027
Oct 27, 2026
Merged

loopx-agent merged 1 commit into
mainfrom
codex/workspace-fixture-errors-20261027

Conversation

@loopx-agent

Copy link
Copy Markdown
Collaborator

Managed Session 的浏览器验证仍按无查询参数的 URL 拦截历史快照,实际分页请求已带 message_limit,导致晚到响应与观察器场景无法走到原断言。另一个故障是 fixture 提前退出后,清理阶段的 stdin.end() 会抛出未捕获 EPIPE,覆盖真正的失败原因。

本修改按原 origin 和精确 Session pathname 匹配快照,保留分页参数;把现有子进程读写与关闭收敛到场景内使用的辅助模块,保留原始 stderr、退出码和浏览器异常,等待关闭并在必要时回收无响应子进程。原会话身份、晚到响应隔离、无模型浏览、撤销恢复和单观察器断言保持。

验证基于 19e1525a8babdd6bae5d505d72747f64ec21bc8d:

  • 同一已构建 UI 和真实 SQLite/Core/Chat 后端、合成原生 provider:base 在分页快照拦截失败,head 完整通过 managed-session 场景,覆盖桌面与 390px、原会话续接、撤销恢复、历史轮询与中断。
  • 缺 bundle 的真实启动负例:base 只暴露未捕获 EPIPE,head 保留原资源错误及退出码。该对照验证诊断保真,不宣称已确定历史 CI 的首个失败原因。
  • 6 项真实子进程回归在 Node 22.22.3 / 24.21.0 均通过:正常控制、启动失败、原浏览器异常、断管、spawn 失败及强制回收。命令:node --test examples/personal-workspace-browser/managed-fixture-process.test.mjs。
  • 已包含 test(workspace): follow the renamed tentative-finding label #7482 的 packaged research-finding-reader 在 Node 22 通过,包含中文/英文及桌面/窄屏读回;复用其修复。
  • standard premerge:4 项直接检查和 3 项选定检查通过;3 个变更文件的公开边界扫描无命中。

本 PR 仅修改验证场景及其进程辅助代码,未改变产品 UI、模型执行、权限或评分。局部真实路径通过与全仓库 CI 就绪分开;远端 CI 待运行。有限重构仅覆盖此场景实际使用的管道生命周期,没有引入通用进程框架。

Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Reviewer: model_agent | gpt-6.1-sol | OpenAI | runtime_reported | reasoning_effort=max

Approval conclusion (author-owned PR; GitHub blocks formal self-approval)

动机 / Motivation

维护 managed Session 浏览器回归的开发者,需要真正跑到迟到历史隔离与活跃 Turn 的持续观察断言。

页面历史读取已带分页参数,旧测试仍精确匹配不带 query 的地址,因而等不到快照;fixture 启动失败时,旧清理写管道还可能以 EPIPE 覆盖原错误。新测试识别同一 Session 的分页地址,并保留最初的失败原因。

相同打包 UI 与真实 SQLite/Core/Chat 下,旧测试复现 snapshot-not-requested,新 head 运行完整场景通过;同一受控启动失败在旧代码变成未处理 EPIPE,新代码保留原 stderr 和 exit=17。

本 PR 只维护测试路径,不改变产品界面、模型执行、权限或评分;合成 provider 不代表真实模型或安装态资格。

改动思路 / Approach

现有场景的产品断言仍归原测试;局部 helper 只持有子进程的读取、控制和清理责任。只放宽 snapshot 地址匹配不能解决失败被清理覆盖的问题;重新造一个测试框架又不必要。这里按 origin 与精确 Session pathname 匹配,保留真实 query 交给后端;关闭时先观察 close,再按需要终止,不改变原本的产品请求或重放模型。

具体改动 / Changes

完整审阅 head 7258f43 的三个测试路径,+257/-126,主要是现有场景在 helper 内的缩进移动。规范依据为 docs/development/good-smokes.md,spec_revision=19e1525a8babdd6bae5d505d72747f64ec21bc8d。按已有章节整理的本次映射:SMOKE-DURABLE-VALUE 对应恢复已交付路径的真实回归;SMOKE-PROCESS-ORACLE 对应真实进程和独立错误 oracle;SMOKE-RETAIN-COVERAGE 对应合并 plumbing 时保留原场景所有语义断言,三项均已实现。

关键代码讲解

  1. delayedSnapshot 和 afterHistoryPoll 改为同 origin、精确 Session 路径判断。生产 fetchChatSessionHistory 本来就携带 message_limit;这里没有改变产品 API,只修正测试对它的观察。
  2. withManagedFixture 在任何控制写入前注册 error/close,读取失败保留 stderr、exit 与 cause;finally 不覆盖原 action 异常,正常 stop 无效时再 TERM/KILL,并等 close。六个新测试分别执行真实 child 的正常、启动退出、原浏览器错误、断管、spawn 失败和拒绝退出场景。

原有独立 native thread、各 Session 草稿、迟到快照隔离、零模型浏览、撤销/恢复和单一事件观察器断言均保留。检索相邻 helper 后,未发现可直接复用的同一交互式 JSON 控制协议;一发即止的 authority 启动 helper 不能代替它。没有根据共享 GitHub 账号推断实际作者相同或建议贡献限制。

对主干的风险 / Risks

最大风险是 helper 绿测掩盖了浏览器仍到不了后续断言,或清理仍吞掉最初异常。我独立构建一次相同 UI,旧主干 19e1525 复现快照等待失败,当前完整 managed-agent-sessions 场景通过,包含桌面/390、真实 SQLite/Core/Chat、历史轮询和 external Turn 恢复。另以同一受控 child 在实际场景中退出17:旧主干 24f4768 出现未处理 EPIPE,新 head 完整保留原诊断;这是故障注入证据,不冒称历史 CI 的根因。

PASS:六项真实子进程测试、Dashboard typecheck/build/chat bundle、语法和 diff 检查、标准 premerge 的4项直接与3项选中检查及全部三路径公开边界扫描,CQR26cfa7f有效,无 manual hold。两个预期失败的负例命令仍记为 exit1,并据独立错误内容判断修复;没有把它们涂成正常成功。初始质量结果的路径引用格式已修正,未改源码或放宽要求。此次使用 Node24.21;未验证每个 Node/OS 组合,也未声称任意后代进程组清理资格。

我的整体评价 / Verdict

该测试维护切片达到目标:long_horizon 与产品 user_experience 保持,实际回归路径和开发诊断恢复;没有用绿测数量替代仓库价值。现有场景继续保有独特的完整链路覆盖,局部进程控制成本合理,无需进一步扩成通用框架。按当前策略未查询、轮询或等待远端 CI,不能据此宣称完整 CI 通过。

已检查三个变更路径;全部为现有浏览器测试与局部进程 helper,没有渲染界面改动。本次只验证测试恢复,未证明整体 UI 质量、真实模型、正式安装或完整 CI。批准只适用于 7258f43;合并和维护者授权是另一判断。

English verdict: APPROVE 7258f43; same-bundle browser and real-process counterfactuals verify restored coverage and preserved original failures.

@loopx-agent
loopx-agent merged commit e3b3807 into main Oct 27, 2026
18 of 32 checks passed
@loopx-agent
loopx-agent deleted the codex/workspace-fixture-errors-20261027 branch October 27, 2026 15:54
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.

1 participant