Skip to content

test(workspace): follow the renamed tentative-finding label - #7482

Merged
huangruiteng merged 1 commit into
loopx-project:mainfrom
JasonBuildAI:codex/research-finding-label-9k4x
Oct 27, 2026
Merged

huangruiteng merged 1 commit into
loopx-project:mainfrom
JasonBuildAI:codex/research-finding-label-9k4x

Conversation

@JasonBuildAI

@JasonBuildAI JasonBuildAI commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Goal And Delivered Outcome

The required dashboard-browser (2) and chat-bundle-browser (2) shard jobs deterministically fail on main because the packaged research-finding-reader scenario still asserts the retired 待检查 tentative-finding label. checks needs both jobs, so it cannot pass while that mismatch exists. This change follows the shipped 暂定结论 label and clears the failure.

  • Outcome basis / optional anchor: fixes [Bug]: required checks job is red on main — research-finding-reader asserts the retired 待检查 tentative label #7480 (reproduced at 17b2a0f9b; the hosted shard-2 jobs fail on the same assertion at an ancestor commit).
  • Goal/source and gap: #7368 (fix(research): distinguish tentative findings from queued checks) renamed the tentative state so a tentative finding is no longer called a queued check; the acceptance scenario research-finding-reader still pinned 待检查 in three assertions, so both shard-2 browser jobs aborted at line 64.
  • Observable before → after, with the validation row that proves it: packaged scenario exits 1 with assert.match(...) /已反驳 3.*待检查 4/ and actual: '已反驳 3 · 暂定结论 4' → exits 0 with personal-workspace-browser-smoke (packaged): ok.
  • Issue/task and intended base: Closes #7480; base loopx-project/loopx:main.

Author Declaration

  • Written by: model_agent (DeepSeek V4.1 via DeepSeek Harness), at the requesting operator's direction and under their review.

Implemented against

Criterion (spec clause) Disposition Symbol / path Test or command
The reader acceptance scenario asserts the shipped tentative label implemented examples/personal-workspace-browser/research-finding-reader.mjs lines 64, 118, 181 packaged research-finding-reader scenario
The Chinese and English assertions still describe the same state implemented same file, line 64/181 and the existing Tentative assertion at line 185 packaged research-finding-reader scenario
No product behavior, copy or fixture changes implemented test-only diff, 1 file +3/-3 git diff upstream/main...HEAD

Scope And Continuation

  • Completed scope and remaining work: complete within this scope. The assertion that aborted both shard-2 jobs at research-finding-reader now follows the shipped label. Earlier scenarios in those jobs already pass in the hosted run at the ancestor commit; the scenarios after this one in shard 2 are not exercised here (see Coverage and gaps). Any failure there would be a separate defect.
  • Slice boundary / successor: N/A.

Validation

  • Tested revision: 86ff8d7016431b3d46f1454728d9428778e1f530
  • Run state: finished
  • Input classes: synthetic
Check kind Result Public-safe evidence / limitation
regression_parity passed Packaged research-finding-reader scenario with the chat bundle built from this checkout. Base 17b2a0f9b: exit 1, AssertionError [ERR_ASSERTION]: The input did not match the regular expression /已反驳 3.*待检查 4/. Input: '已反驳 3 · 暂定结论 4'. Head 86ff8d701: exit 0, personal-workspace-browser-smoke (packaged): ok. Hosted evidence that the same scenario fails the shard jobs: main run 40454462809 at ancestor 218aa087b, dashboard-browser (2) job 122026651827 and chat-bundle-browser (2) job 122026651893. That run's checks job 122034119425 failed earlier on the TypeScript-core regression that #7459 has since fixed; the browser failures in the same run are the failure class this PR removes. No hosted run completed at 17b2a0f9b (the run was cancelled), so the base-level failure is the local reproduction above.
static passed git diff --check; node examples/personal-workspace-browser/shard.test.mjs (2 passed, shards still cover every scenario exactly once).
integration passed loopx canary premerge --from-git-diff --git-diff-base upstream/main: passed, direct checks 4/4, selected canaries 2/2, failures 0, public boundary scan passed on the changed scenario file.
unit not_run The diff touches one browser acceptance scenario; the Python and TypeScript unit suites do not execute it.
  • Coverage and gaps: The hosted shards were not re-run end to end locally. In the hosted run, the scenario aborts at line 64, so the eight later shard-2 scenarios (research-display-language, replan-cadence, goal-workspace-m2, since-you-looked, first-goal-agent-unavailable, attention-notifications, goal-suggestions, completed-history-isolation) were not exercised in CI; research-display-language already asserts 暂定结论 and the others are unrelated to this diff. This is a test-only change with no runtime behavior, so no real-backend or PostgreSQL qualification applies. Two leftovers from fix(research): clarify tentative findings and explicit status selection #7368 remain outside this scope: examples/research-history-lark/board.mts:41 and examples/personal-workspace-browser/research-history.md:195 still use the retired label.

Frontend / Visual Evidence

  • UI impact: none — the product copy and components are unchanged; only the acceptance scenario's expected label follows the already-shipped text.
  • Before: N/A
  • After: N/A
  • First viewport and preview: N/A
  • States and viewports shown: N/A
  • Source data: synthetic (existing packaged scenario fixture)
  • Attention review: N/A
  • Craft review: N/A

Type of Change

  • Test update

LoopX Area

  • Public docs or presentation surface (dashboard)

Boundary Checklist

  • Neither the diff nor this PR body/comments/attachments disclose private state, credentials, raw traces or verifier output, internal links, or local machine paths.
  • I did not duplicate maintainer-owned benchmark work.
  • I kept the change scoped to the linked issue/task.
  • No existing English/Chinese RFC pair changed.
  • UI impact is none, as recorded above.
  • The commit includes a DCO Signed-off-by trailer (git commit -s).

AI Disclosure

AI disclosure: this change was drafted with AI assistance at my request, under my direction and review.

loopx-project#7368 renamed the tentative finding state from 待检查 to 暂定结论 so the
reader no longer calls a tentative finding a queued check. The packaged
research-finding-reader acceptance scenario still pinned the retired label
in three assertions, so dashboard-browser (2) and chat-bundle-browser (2)
aborted there and the required checks job failed for every PR.

Follow the shipped label and keep the Chinese/English assertions paired.

Closes loopx-project#7480

Signed-off-by: JasonBuildAI <jasonbuildai@gmail.com>

@cocolord cocolord left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Reviewer: model_agent; GPT-5; OpenAI; self_reported

动机

维护个人工作台浏览器验收的开发者会遇到一个确定性问题:产品已经把研究结论的 tentative 状态显示为“暂定结论”,但 packaged research-finding-reader 场景仍在三处断言“待检查”,因此 required shard 在第一处断言即停止,后续覆盖无法执行。保持现状会持续制造所有相关 PR 的红灯;修改产品文案去迁就旧测试则会倒退 #7368 已交付的语义区分。这个 PR 的目标只是让既有验收跟随已发布文案,不改变产品状态、用户权限或运行时行为。

维护个人工作台浏览器验收的开发者会遇到确定性的旧文案断言失败。同一 packaged 场景在 base 于第 64 行失败,在 exact head 完整通过。真实 chat bundle 上三个中文观察点和后续英文断言均通过。本 PR 不修改产品状态、用户权限、运行时行为、Lark board 示例或研究说明。

在 exact head 86ff8d7016431b3d46f1454728d9428778e1f530 上,我独立构建真实 chat bundle 并运行 packaged 场景:同一场景在 base 17b2a0f9b818dc6e6fe77ccc567b20ff91b3bc40 于第 64 行按 待检查 失败,在 head 完整通过。当前 hosted shard 也已经越过 research-finding-reader,随后才在未修改的 goal-suggestions 场景失败,因此不能把那条红灯归因于本次三行修复。

改动思路

改动复用现有 researchFindingReaderScenario、现有 synthetic fixture 和现有 packaged catalog,不新建第二套 smoke 或 helper。三个断言分别覆盖概览计数、历史分组 header 和选择 tentative 结论后的正文;全部改为产品 copy owner explore-finding-copy.ts 已使用的“暂定结论”,英文 Tentative 对照和其余行为断言保持不变。这样既恢复 required shard 的真实路径,也保留了对中文状态语义的回归保护。

最小替代方案正是修改这三处 stale oracle。两处仍使用旧词的 Lark board 示例和研究说明不在本 issue 的 browser-acceptance 修复范围内;它们没有被本 PR 静默改写,也不影响这里的 packaged 场景结论,可另行按各自产品/文档语义处理。

具体改动

全 PR 只有 examples/personal-workspace-browser/research-finding-reader.mjs,共 +3/-3,无产品代码、fixture、状态模型、依赖或 workflow 变化。

关键内容讲解

  • 第 64 行:概览异常计数从匹配 已反驳 3.*待检查 4 改为 已反驳 3.*暂定结论 4;这是 base 实际失败的位置。
  • 第 118 行:历史分组 header 的 20 条记录、已反驳数和 tentative 数仍全部校验,只替换状态名称。
  • 第 181 行:选中 finding-4 后仍要求文章显示 tentative 状态,并继续执行后面的英文 Tentative 断言,未缩短场景。

规范依据是 issue #7480,spec_revision 2026-10-27T09:43:31Z。无原始编号的验收点以本评审标签列出:

  • I7480-THREE-ASSERTIONS — implemented:三处 stale 中文断言全部更新,diff 中没有删除断言。
  • I7480-PACKAGED-SCENARIO — implemented:base 同场景 exit 1,head 同场景完整 exit 0;hosted shard 日志显示该场景已执行到 scenario-end。
  • I7480-NO-PRODUCT-CHANGE — implemented:仅修改一个既有 acceptance scenario,产品 copy 与 fixture 未动。

对主干的风险

主要风险不是三处字符串本身,而是“测试通过但真实 packaged 路径没有跑完”或为了变绿而删除后续语义断言。我使用本 checkout 的依赖构建 chat bundle,再从公开 scenario entrypoint 运行 research-finding-reader;head 输出 scenario-end=research-finding-reader 和 packaged ok,base 则复现原始正则失败。另运行 shard partition test,2 项全部通过,证明场景仍被 catalog 唯一覆盖。该验证没有使用 mock 返回值直接伪造被审结论。

Hosted chat-bundle-browser (2) 当前仍红,但完整日志显示 research-finding-reader 已通过,失败发生在八个步骤之后的未修改 goal-suggestions.mjs:133。没有同一 immutable base 的该后续失败对照,因此我把它保留为 unresolved merge hold,不把它虚构成 pre-existing outage,也不要求本 PR 修复无关场景。当前其他 browser/stage2c 红项同样没有足够归因,APPROVE 不代表可合并。

这是一个薄且耐久的 smoke 修复:它保护已经发布的 tentative 状态标签和 required packaged journey,而不是添加一次性 walkthrough。对同作者 open PR 的扫描只看到三个分别绑定独立 issue 的 encoding、Turn race 和本测试修复,形状与 owner 不同,没有同形批量刷 PR 的证据。bounded future-facing pass 的边界检查结论是无需新增抽象;保留现有单一场景最易定位、回滚和维护。

我的整体评价

结论是 goal_achieved。long_horizon=preserved:运行时、调度、持久化和后续工作完全未变,required shard 能继续执行后续场景。user_experience=preserved:产品已经显示“暂定结论”,本 PR 只让验收重新如实观察该界面,不增加用户步骤或改变默认行为。

完整 diff 方向明确正向,真实 base/head packaged 对照、三处断言覆盖、shard catalog 以及 hosted 日志都支撑这一点;未发现阻断性代码问题。批准该 exact head,但保留当前未归因 CI 红项、pending shards、required checks 和 merge policy 作为独立合并条件。本评审不授权 merge、dismiss 或扩大改动范围。

English verdict: APPROVE - 86ff8d7 updates all three stale tentative-label assertions; the exact packaged scenario fails on base and passes on head, while the current hosted shard fails later in unchanged goal-suggestions coverage.

@huangruiteng
huangruiteng merged commit f29bd90 into loopx-project:main Oct 27, 2026
23 of 36 checks passed
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.

[Bug]: required checks job is red on main — research-finding-reader asserts the retired 待检查 tentative label

3 participants