Skip to content

fix(ci): restore status-only browser qualification - #6753

Merged
huangruiteng merged 1 commit into
mainfrom
codex/ci-status-mode-browser-20261017
Oct 17, 2026
Merged

huangruiteng merged 1 commit into
mainfrom
codex/ci-status-mode-browser-20261017

Conversation

@loopx-agent

@loopx-agent loopx-agent commented Oct 17, 2026 •

Copy link
Copy Markdown
Collaborator

The status-only chat route is now an independent toggle, but three browser journeys still try to select its retired executor-menu option. This makes locale, conversation recovery and real runtime-readiness qualification fail before they can verify their intended behavior. The failures are visible in main run 39035597399; the same locale assertion was reproduced against the packaged current source at c8a01299f.

This updates the existing journeys to use the localized button and verify its pressed state. History/readiness select it only when inactive, preserving a previously selected read-only mode. Project conversations explicitly verify that the button is absent. The original persistence, exact-history identity, draft recovery and no-model-Turn assertions remain in place.

Validation

At 2102126bfffcbaebff8cbf3fab9d13c1cbbca1d3 (macOS, Python 3.11.17, Node 24.21.0):

  • Built and validated the packaged chat frontend from base c8a01299f; product source is unchanged by this test-only commit.
  • Complete packaged workspace-locale, conversation-history-recovery and runtime-readiness-live scenarios passed. The last uses a disposable real chat service: manager and Goal questions persist in both languages, narrow views remain usable, unavailable project requests retain their draft without Session admission, and no model Turn starts.
  • loopx canary premerge --from-git-diff: four direct checks plus all five selected checks passed, including full semantic inventory and the public-boundary scan. JavaScript syntax and staged bilingual-RFC checks also passed.

This qualifies the repaired browser journeys. Complete hosted Python partitions, JUnit/coverage aggregation, the 60-minute critical path and installed/released behavior remain unqualified. No workflow, worker count, deadline, coverage threshold or runtime behavior changes are included.

Future-facing review: each existing journey owns its distinct assertions; no additional module or shared decision owner is needed.

中文

“仅查状态”已改为独立按钮,旧浏览器测试仍从执行器下拉框选择它,导致主干四个浏览器 job 失败。本次修复三个实际场景的调用入口,检查按钮选中态,并保留项目会话不可用、草稿恢复、历史消息身份和不启动模型 Turn 的原有断言。

三个完整打包场景均通过;运行环境检测场景包含隔离的真实后端保存/读回、中英文与窄屏。精确提交的 premerge 四项直接检查和五项所选检查全部通过。完整托管 Python、合并覆盖率及发布安装资格仍需后续真实结果,不能由本次局部恢复代替。

Current hosted qualification

Natural run 39039133589 tested merge 8f5ddd098b7c632e0a033a07650855bf682df7b6 (this head with main 90932447eb5ed38a0d3fec8c57e21a62f57f849c). All three packaged-browser shards and dashboard-browser shards 1/2 passed. The logs explicitly complete conversation-history recovery and packaged runtime readiness; this observation does not separately certify the standalone locale script.

The overall workflow and installed-page Release Artifacts check failed at the existing model-selector phone-width assertion. A same-source packaged reproduction observed a transient 0px reading followed by 152px; #6760 proposes waiting for the fresh model catalog before accepting its controls. These failed overall checks, incomplete full Python qualification and independent exact-head review remain open; the green browser shards do not settle them.

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)

动机

需要依靠浏览器验收确认聊天、历史恢复和运行环境提示仍可用的维护者。

产品已把“仅查状态”移到独立按钮,旧测试仍寻找执行器菜单里的选项,因此在进入原有验收之前失败。

本次把三个现有场景接到实际按钮,恢复状态问答、精确历史身份和不可执行时保留草稿的验证。

本次只修复验证入口;不改变产品交互、工作流并发或模型执行,也不证明完整 hosted 流水线、发布安装或长期稳定性。

改动思路

三个既有场景各自拥有不同业务断言;产品继续持有全部状态与保存规则,原地调整控件选择已足够。

独立按钮的可见名称随语言变化,aria-pressed 表示当前是否选择只读模式。测试应操作这个现有控件,而不是恢复已删除的菜单选项。语言场景明确验证初始未选和点击后选中;历史、运行环境场景只在未选中时点击,避免将已选中的模式反向关闭。项目会话没有该入口,直接检查按钮不存在。

这是对已有验收消费者的修复:产品仍拥有模式、Session、消息保存和拒绝执行规则,测试只观察并操作它们。修改既有三个场景已足够,不需要新测试框架、配置项或共享状态 owner。新旧产品源码相同;正常构建后的36个实际交付文件逐字节相同,另一个 manifest 文件只在 source_revision 上不同。下面的比较表是验证范围说明。

场景 原缺口 本轮实际验证
语言 寻找已退役选项,断言失败 独立按钮、选中态、无模型 Turn,语言选择与存储失败/重载保留
历史恢复 无法进入最后的只读消息验收 完整场景通过,历史读取失败/重试、草稿、原 Session 和消息身份断言保留
运行环境 Manager/Goal 仍从旧菜单选择,项目仍查旧选项 隔离真实服务四组问答保存读回,项目无按钮、拒绝后保留草稿且不 admission

具体改动

完整 head 2102126bfffcbaebff8cbf3fab9d13c1cbbca1d3,实际不可变 merge base c8a01299f2933801b579f58327956dd532f6674b;全部3个路径、+12/-10。未找到专门定义这三个测试选择器的已接受书面规格;独立依据是改动前真实控件及原有场景的业务断言、实际复现的旧菜单失败,而非用补丁新增断言自行定义正确性。产品控制和持久化源码均未改变。

关键代码讲解

  1. verifyWorkspaceLocales,apps/presentation/dashboard/smoke/workspace-locale-browser-smoke.mjs:5,在第74行开始选择英文独立按钮,检查 aria-pressed=false→true,随后仍发送状态问题并断言 api.turnRequests.length===0。原语言检测、选择保存、存储拒绝、重载和手机布局都继续运行。旧 base 的同一完整打包命令在第76行报 English Runtime picker shows the translated status-only route;head 完整通过。
  2. conversationHistoryRecoveryScenario.run,examples/personal-workspace-browser/conversation-history-recovery.mjs:211,第292行仅在未选中时切换。此前的503历史读取、当前会话恢复中禁止发送、恢复后沿用精确 Session、草稿保留、返回不重复工作,以及后续只读消息的精确身份均保留;完整场景通过。这里使用共享合成 API,不能当作真实消息存储证据。
  3. runtimeReadinessLiveScenario.run,examples/personal-workspace-browser/runtime-readiness-live.mjs:20,第88行对中英文和 Manager/Goal 复用相同选择规则,第125行检查项目会话按钮不存在。它实际启动隔离的 loopx chat 服务,路由转发到真实 HTTP/消息 owner;保存后的 Session 与用户、回答消息按返回身份重新读取。随后项目执行不可用的拒绝路径仍检查草稿和 Session admission 数量,最后重新探测可执行文件使环境提示消失。

三个入口都已接入现有 personal-workspace-browser-smoke.mjs 场景目录。本轮没有新增重复 smoke;同作者相邻 #6760 处理另一个模型目录加载时序,未将其改动混入这里,也未把它的修复当作当前证据。

对主干的风险

未发现阻断项。最值得反证的是:按钮本来已经选中,测试再次点击反而关闭只读模式;当前两个条件点击和选中态断言避免了这一点。缺失按钮不会静默跳过,查询/断言仍会失败。项目负例直接检查控件不存在,并通过真实后端确认拒绝执行时不会创建 Session 或丢失输入。

独立验证使用 macOS、Python3.12.15、Node24.21.0:正常 Chat 构建通过;完整 packaged workspace-locale、conversation-history-recovery、runtime-readiness-live 三项通过。真实服务记录四组201状态问答和两组项目拒绝,模型 Turn 为0。语言和历史场景是合成 API;运行环境场景的服务与消息持久化是真实本地实现,可执行文件和 Goal 为隔离合成输入,不调用真实模型。

标准 premerge 的4项直接检查、5项所选检查全部通过,包括完整 semantic 和公开边界检查。先运行的 advisory 没有支持的新词汇载体;这不代表动态语义自动得到认证。桌面和手机截图已查看,现有源/控件和恢复反馈可读;截图不替代持久化读回。最初在仓库根运行了不存在的 build:chat script,未开始构建;改用实际 dashboard package 的正常命令后构建通过,保留原失败。正常构建有既有分包大小警告,未修改阈值。

本轮没有查询、派发或等待 CI。作者 PR 中说明的整体工作流/Release Artifacts 失败、完整 Python 和发布安装资格仍独立保留,不由这些局部通过结果关闭。

我的整体评价

APPROVE — 当前3路径完整恢复了原有验收的可执行入口,且保留原先负例和结果断言。实际旧失败→新通过、同产品交付字节、完整三个场景以及真实服务拒绝/恢复共同支持这个有用的测试维护切片;不是只把选择器改到能点击。

持续使用和用户旅程在本修改范围内保持:产品操作没有增加导航、重填或确认轮次;已有意图和授权下增加的用户交互为0。历史失败后仍可恢复原会话,运行环境修复后仍可重试。未来改动检查已完成:三个场景分别拥有不同业务断言,当前没有需要抽象的新生产机制;继续留在既有测试 owner 最便于定位与回滚。没有新前端/Lark/CLI 操作需要补交付面。

English verdict: APPROVE - 2102126 restores all three existing browser journeys to the independent status-only control. The old packaged locale check fails at the retired option; all three complete head scenarios and4 direct/5 selected checks pass. Real isolated service readback covers four saved status exchanges, two refused project requests and zero model Turns; full hosted and release qualification remain separate.

@huangruiteng
huangruiteng merged commit e22819c into main Oct 17, 2026
34 of 39 checks passed
@huangruiteng
huangruiteng deleted the codex/ci-status-mode-browser-20261017 branch October 17, 2026 16:27
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.

2 participants