Repository navigation
test(workspace): open every closed work disclosure in goal-workspace-m2 - #7554
loopx-agent merged 1 commit into
Conversation
|
All six browser jobs passed on this head ( |
|
This pull request has merge conflicts with Choose the remote for the base repository, not an out-of-date fork. git fetch upstream
git rebase upstream/main
# Resolve each conflict, git add the resolved files, then git rebase --continue.
git push --force-with-lease origin HEADFor a same-repository clone whose Keep the DCO |
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
动机
维护者运行工作台浏览器验收时,需要区分产品不可达与测试自己误关分组。 在真实页面第一次展开后控制一次负责人组重排,旧循环只留下126项可见;新循环达到200项,并继续满足原两秒展开限制。
同一产品包和一次重排条件下,原脚本126/200失败、新脚本完整通过;真实无法展开的情况仍会失败。 本 PR 只修已有验收驱动,不改变产品排序、权限或性能预算,也不认证所有历史CI失败的原因。
不稳定的驱动会制造错误红项、重复重跑,并削弱对真实200项可达性回归的判断。 原测试有真实维护价值:它保护200项工作展开可达及性能。此次是否值得接受,取决于驱动修正后仍能发现产品回归;不能只看新脚本一次通过。
改动思路
只修改原M2的操作驱动:每轮从当前DOM查找仍关闭的details,用原键盘Enter打开,直到原200项oracle成立。原两秒预算仍从第一次操作前计时,5秒只限制错误情况下的重试,不能让2秒至5秒之间的结果通过。
依据 docs/development/good-smokes.md,固定修订 843be494266774b63b3de61d0adf5dd7f4f877a2,使用其中未编号的两条原文,评审引用标签为 SMOKE-DURABLE(已交付路径的稳定不变量)和 SMOKE-ORACLE(独立规则定义期望结果)。两个标签仅用于本次引用。改动复用既有场景、fixture和catalog,没有新增一份同形验收。
具体改动
完整diff仅 examples/personal-workspace-browser/goal-workspace-m2.mjs,+8/-3。第151–164行以closed locator和可见数替换旧positional列表,保留200项、初始15项、展开2秒与后续任务选择/视图/只读断言。原RemainingWork仍使用native details,负责人key及选中任务自动打开逻辑未改,产品行为没有被此PR修改。
独立验证使用同一个新编译产品包,分别加载不可变base与exact head的原M2脚本:
- PASS:head原packaged完整场景11.93s;base原驱动普通场景11.47s也通过。这说明一次普通绿测无法解释历史间歇失败。
- PASS(回归敏感性):只在第一次native disclosure toggle后,把已打开的负责人组移动一次位置。旧脚本重按位置并关闭已打开组,实际 126/200 失败;新脚本完整场景10.79s通过,且原展开 <2秒 断言仍成立。控制只改变测试DOM的顺序,未改产品或断言,不能据此声称这是所有历史CI失败的唯一成因。
- PASS(防止假绿):在同一实际页面禁止summary Enter的默认展开动作,新head仍在原断言得到 15/200 FAIL;预期的负例确认循环退出没有被误当作成功。
- PASS:
node --check、public/private扫描、standard premerge 4直接+3选中,零失败/跳过/人工hold;strict CQRcqr_9e52aef14800bc381420当前有效。编译包来自本次源码。未启动模型或真实任务执行。
已有覆盖审查:M2从主catalog和现行browser分片执行,包含200项、长中英文任务、地图/看板/恢复与remote readonly;goal-work-map、selection和hierarchy保护其他独立语义。此次没有重复它们。同作者本批#7550是生产来源恢复修复,本PR是现有M2驱动维护;当前完整队列/实际diff未见同形批量造smoke证据,也无可据此建议限制贡献的重犯事实。最高价值的精简就是保留在这一处,不增加wrapper或新测试平台。
对主干的风险
重点防止重试掩盖真实不可达或放松性能。实际拒绝展开的反例仍失败;200项与2秒预算均原样,deadline之后仍先断言200再验证耗时,没有吞异常或无限等待。测试fixture仍是合成状态/delivery响应,实际编译页面和native键盘/DOM是真实的;这不认证真实后端状态或原历史CI完整因果。
作者评论中的CI/Windows说明及冲突机器人评论已读,未查询、等待或重跑远端CI。本结论绑定此head;与当前main的冲突/集成须由作者维护,并在新head重新验证,不以本评审替代merge-readiness。
我的整体评价
APPROVE。改动直接修复已有有价值验收的驱动,独立控制重现旧126并让新200通过,而且真正不能展开仍会报错;属于可审阅、可回退的维护结果。没有要求把旧自然间歇失败的未知历史原因写成已确定,也没有把5秒deadline当性能预算放宽。
视觉审阅不适用:完整diff只改测试驱动,没有DOM/CSS、可见文案或页面构图变化;不宣称视觉改善。正式安装App、独立用户理解和全站视觉质量未验,合成API与测试层重排控制也不替代实际生产采用。维护者仍从原入口运行,无新增准备、确认或配置轮次;合并资格与冲突处理另行保留。
English verdict: APPROVE — head 026d26d; the unchanged 200-item/two-second oracle distinguishes the old positional retoggle from the corrected driver on the same compiled UI, and deliberately blocked expansion still fails. Local validation passes; historical CI causality and current-main integration are not certified.
026d26d to
4630c86
Compare
The 200-item expansion toggled each "其余 N 项任务" summary from a positional list taken before the first toggle. Hosted dashboard-browser shard 2 still stops at "All work remains reachable" with 126 of 200 visible, even after polling for five seconds: exactly two of the five 37-item disclosures stay closed. A positional list that re-resolves while owner groups re-render can toggle an open disclosure shut and skip another. Open, by keyboard, whichever disclosure is still closed until all work is visible, inside the same budget. The assertions and the 2s budget are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Lihua <1017343802@qq.com>
4630c86 to
4a00f4b
Compare
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent | GPT-5 | OpenAI | self_reported
动机
维护者和 CI runners 执行现有的 goal-workspace-m2 浏览器验收,以证明全部 200 个合成任务仍然可达。旧驱动在切换前缓存了 summary locator;owner 分组重渲染后,后续 positional locator 可能关闭一个已打开分组,同时跳过另一个分组。
Maintainers and CI runners executing the existing goal-workspace-m2 browser acceptance.
The scenario captured summary locators before toggling. A re-render could make a later nth locator target the wrong group, leaving exactly two of five 37-item groups closed and producing 126/200.
Before, the scenario toggled a precomputed positional list and intermittently stopped at 126 visible items. Now each loop iteration focuses a currently closed disclosure and presses Enter until the unchanged 200-item oracle succeeds.
At the final head, two development and three installed-wheel packaged runs observed nodeCount 200, with expansion times between 85ms and 115ms under the unchanged 2s budget.
This is test-only maintenance; it does not change product behavior, permissions, benchmark scoring or installed native WebView behavior.
改动思路
复用现有场景、200 项合成状态、原生 details 控件和断言。只替换不稳定的 positional 展开循环:每次从当前 DOM 选择 .goal-work-more:not([open]) > summary,聚焦第一个仍关闭的 disclosure 并按键展开,直到原断言看到 200 项。这样同时覆盖 owner 重排和延迟挂载,不新增第二套 smoke,也不放宽两秒性能预算。
浏览器场景仍是权威的可执行验收。fixture 提供五个 owner 分组和 200 项;Playwright 执行真实键盘与 DOM 交互;既有 visibleWork 计数和渲染耗时保持独立 oracle。真实展开失败仍会到达原断言,而不会被重试改写成通过。
具体改动
精确 diff 为一个测试文件,+8/-9。它移除预先取得 positional summary 的循环,新增一个有界循环,持续聚焦第一个仍关闭的 disclosure,直到 200 项可见或既有重试截止时间到达。
Spec basis: docs/development/good-smokes.md#review-checklist at revision ffc90182bc2a896aa9980cf24dcf23a0e3276e3d; durable-smoke-boundary implemented and independent-oracle implemented.
关键代码讲解
goal-workspace-m2.mjs每一轮都从当前 DOM 得出closedWork,owner 分组位置变化不会让后续操作命中已失效的分组。- 循环保留原
visibleWork() === 200、两秒展开预算,以及后续任务选择、看板、readonly 和顺序断言。 - rebase 与 main 的 owner-id 快照循环冲突时,选择当前仍关闭 disclosure 的 selector;一条规则同时覆盖 owner 重排和延迟挂载。
对主干的风险
目前没有阻断性发现。最强回归风险是真实无法展开时被重试掩盖;但有界循环结束后仍执行原 200 项断言,独立反例在禁止展开时保持 15/200 FAIL。旧 positional 驱动在受控 owner 重排后复现 126/200,修复后的驱动达到 200。
最终 head 通过 2/2 开发页面和 3/3 安装 wheel 后的 packaged 运行,每次 nodeCount 都是 200,展开耗时 85–115ms。前一个 rebase head 也通过 3/3 开发页面和 3/3 packaged。node --check、diff hygiene 和 premerge 均通过,包含 4 个 direct checks、2 个 catalog canaries 和 public-boundary scan,没有 manual hold。托管 Linux 时序和无关的长跑 CI shard 保持为独立观察项。
我的整体评价
APPROVE. This is a necessary, minimal repair to an existing valuable browser regression. It preserves the product oracle and performance budget, handles the observed owner-group re-render mode, and does not add duplicate smoke scaffolding. Product behavior is preserved; visual review is not applicable because no DOM, CSS, copy or navigation code changed. Hosted timing and unrelated CI failures are not claimed as resolved.
long_horizon behavior is preserved, while user-facing product experience is unaffected because the scope is test-only. The CQR receipt cqr_e3761af6a6d89f0ece69 is valid; exact-head merge readiness remains a separate gate.
English verdict: APPROVE - 4a00f4b5226155e25768fcfee1d69c9dd95906af makes the existing 200-item goal-workspace expansion reachable after owner-group reordering while preserving the unchanged two-second oracle. Final-head development and installed-wheel runs pass, and genuine expansion failure remains observable.
huangruiteng
left a comment
There was a problem hiding this comment.
Reviewer: model_agent | GPT-5 | OpenAI | self_reported
动机
维护者和 CI runners 执行现有的 goal-workspace-m2 浏览器验收,以证明全部 200 个合成任务仍然可达。旧驱动在切换前缓存了 summary locator;owner 分组重渲染后,后续 positional locator 可能关闭一个已打开分组,同时跳过另一个分组。
Maintainers and CI runners executing the existing goal-workspace-m2 browser acceptance.
The scenario captured summary locators before toggling. A re-render could make a later nth locator target the wrong group, leaving exactly two of five 37-item groups closed and producing 126/200.
Before, the scenario toggled a precomputed positional list and intermittently stopped at 126 visible items. Now each loop iteration focuses a currently closed disclosure and presses Enter until the unchanged 200-item oracle succeeds.
At the final head, two development and three installed-wheel packaged runs observed nodeCount 200, with expansion times between 85ms and 115ms under the unchanged 2s budget.
This is test-only maintenance; it does not change product behavior, permissions, benchmark scoring or installed native WebView behavior.
改动思路
复用现有场景、200 项合成状态、原生 details 控件和断言。只替换不稳定的 positional 展开循环:每次从当前 DOM 选择 .goal-work-more:not([open]) > summary,聚焦第一个仍关闭的 disclosure 并按键展开,直到原断言看到 200 项。这样同时覆盖 owner 重排和延迟挂载,不新增第二套 smoke,也不放宽两秒性能预算。
浏览器场景仍是权威的可执行验收。fixture 提供五个 owner 分组和 200 项;Playwright 执行真实键盘与 DOM 交互;既有 visibleWork 计数和渲染耗时保持独立 oracle。真实展开失败仍会到达原断言,而不会被重试改写成通过。
具体改动
精确 diff 为一个测试文件,+8/-9。它移除预先取得 positional summary 的循环,新增一个有界循环,持续聚焦第一个仍关闭的 disclosure,直到 200 项可见或既有重试截止时间到达。
Spec basis: docs/development/good-smokes.md#review-checklist at revision ffc90182bc2a896aa9980cf24dcf23a0e3276e3d; durable-smoke-boundary implemented and independent-oracle implemented.
关键代码讲解
goal-workspace-m2.mjs每一轮都从当前 DOM 得出closedWork,owner 分组位置变化不会让后续操作命中已失效的分组。- 循环保留原
visibleWork() === 200、两秒展开预算,以及后续任务选择、看板、readonly 和顺序断言。 - rebase 与 main 的 owner-id 快照循环冲突时,选择当前仍关闭 disclosure 的 selector;一条规则同时覆盖 owner 重排和延迟挂载。
对主干的风险
目前没有阻断性发现。最强回归风险是真实无法展开时被重试掩盖;但有界循环结束后仍执行原 200 项断言,独立反例在禁止展开时保持 15/200 FAIL。旧 positional 驱动在受控 owner 重排后复现 126/200,修复后的驱动达到 200。
最终 head 通过 2/2 开发页面和 3/3 安装 wheel 后的 packaged 运行,每次 nodeCount 都是 200,展开耗时 85–115ms。前一个 rebase head 也通过 3/3 开发页面和 3/3 packaged。node --check、diff hygiene 和 premerge 均通过,包含 4 个 direct checks、2 个 catalog canaries 和 public-boundary scan,没有 manual hold。托管 Linux 时序和无关的长跑 CI shard 保持为独立观察项。
我的整体评价
APPROVE. This is a necessary, minimal repair to an existing valuable browser regression. It preserves the product oracle and performance budget, handles the observed owner-group re-render mode, and does not add duplicate smoke scaffolding. Product behavior is preserved; visual review is not applicable because no DOM, CSS, copy or navigation code changed. Hosted timing and unrelated CI failures are not claimed as resolved.
long_horizon behavior is preserved, while user-facing product experience is unaffected because the scope is test-only. The CQR receipt cqr_e3761af6a6d89f0ece69 is valid; exact-head merge readiness remains a separate gate.
English verdict: APPROVE - 4a00f4b5226155e25768fcfee1d69c9dd95906af makes the existing 200-item goal-workspace expansion reachable after owner-group reordering while preserving the unchanged two-second oracle. Final-head development and installed-wheel runs pass, and genuine expansion failure remains observable.
Goal And Delivered Outcome
dashboard-browserjob of Python Tests. Shard 2 still fails intermittently atgoal-workspace-m2.mjs:158("All work remains reachable in the original owner order",126 !== 200), most recently on fix(workspace): let Back restore its source over an in-flight re-scope #7550 (run 40648716499).locator('.goal-work-more > summary').all(), which yields positionalnth(i)locators that re-resolve on each use. If owner groups re-render while the loop runs, one index can re-toggle an already-open disclosure shut and another can be skipped..goal-work-more:not([open]) > summary) until all 200 items are visible. The fact asserted (all work reachable, in owner order) and the 2s expansion budget are unchanged.main.Author Declaration
Implemented against
examples/personal-workspace-browser/goal-workspace-m2.mjsLOOPX_PERSONAL_WORKSPACE_SCENARIO=goal-workspace-m2Scope And Continuation
goal-hierarchysource restore), whosedashboard-browser (2)run hit this failure.Validation
4a00f4b52(onmainffc90182b).real_entrypointpassedregression_parityuntested126 !== 200failure does not reproduce locally, so there is no local negative control.real_entrypointpendingFrontend / Visual Evidence
Type of Change
LoopX Area
Technical Direction
dashboard-browserlane.Shared-authority RFC fixture impact
N/A
Boundary Checklist
none.Signed-off-bytrailer.🤖 Generated with Claude Code