Skip to content

test: restore shared storage and workspace readback qualification - #6607

Merged
huangruiteng merged 3 commits into
loopx-project:mainfrom
songoow:codex/shared-ci-regressions-20261016
Oct 16, 2026
Merged

huangruiteng merged 3 commits into
loopx-project:mainfrom
songoow:codex/shared-ci-regressions-20261016

Conversation

@songoow

@songoow songoow commented Oct 16, 2026 •

Copy link
Copy Markdown
Collaborator

Shared CI exposed stale validation assumptions after the Goal overview gained Results and retained visited panels. Clean-main reproductions also found a retired fixture import and synthetic tests reading presentation data from the wrong backend. This proposal repairs those reusable checks in one place; product runtime, authority, layout and scoring are unchanged.

  • Storage collection imports the existing source_modules_present fixture with cold_api, retaining both source-presence and registry-alias variants.
  • Managed/research results assert directory zero reads, one exact read for visible overview Results, and a fresh inventory-bound read in Files. Existing stale/malformed/privacy/wrong-Goal/keyboard/phone/no-model checks remain.
  • Monitor and blocker readback forward the presentation URLs advertised by real status to that same disposable real backend. The old fixture instead reached the unrelated packaged fixture service and returned 400. Responses and zero-console-error assertions remain enforced; no failure is filtered out.
  • Blocker and user-action navigation select the current visible Tasks panel. The same Todo may correctly appear in overview, rail and Tasks; the old whole-page locator was ambiguous. It does not use an arbitrary first match or change the underlying state.

Validation

Current head bce38448905789e078703149907580c86c4c4a61: five affected normal packaged scenarios pass (managed-goal-results, research-results, monitor-readback, blocked-reason-readback, attention-user-action). Monitor and blocker cases exercise actual isolated CLI/File-authority/HTTP readback in Chinese/English on desktop/390px, including missing-field, cycle/recovery and no-write cases. Both newly uncovered failures were reproduced before the patch with their original assertions; the exact 400 URLs and multiple matching views were identified.

The unchanged storage test/fixture files retain the parent f94619f1f qualification: 33 tests collect and four real HTTP/SQLite cold-recovery cases pass. Normal bundle product sources are unchanged. Changed-source semantic advisory and whitespace checks pass; no new state vocabulary or product abstraction is introduced. Source/native storage qualification uses Python3.12.13 and Node22.22.3/SQLite3.51.3.

Scope: six durable validation files, existing shared fixture/proxy/panel owners, roadmap S12. Future-facing pass retains the common Host/Origin rebasing helper and makes active view ownership explicit. No model, active Goal, live benchmark, hidden evaluator, installed-App, deployment or Windows qualification is claimed. No private operating evidence is committed.

Old failed hosted jobs remain failed; the new head requires natural CI and independent review. This is a shared dependency for the affected author PRs, not authorization to rerun, merge or waive their checks.

The last user-action regression also reproduced a retained hidden text match in attention-user-action. The test now uses the current Tasks panel in ordinary and real bound-actor journeys; done/defer/cancel/reply, failed-preview recovery, exact confirmed-write counts and wrong-actor refusals still pass. Advertised presentation reads use the same isolated backend here too.

Remaining qualification: the prior head also failed a Linux Release Artifacts quickstart-anchor check. An independent local public export passes controlled font reflow/user-scroll cancellation and all four fragment/history matrices (1440/390px × normal/reduced motion), so that anchor counterexample is not locally reproduced or declared fixed. The full local public-route run later stops at a documentation link because this standalone export omits the workflow's MkDocs pages; it is not full CI qualification. No homepage source, viewport assertion, timeout or acceptance budget is changed. The natural CI of this real source update must read that remaining result back.

Signed-off-by: song <liusongstep@gmail.com>
@songoow songoow changed the title test: restore storage collection and overview results smokes test: restore shared storage and workspace readback qualification Oct 16, 2026
Signed-off-by: song <liusongstep@gmail.com>

@loopx-agent loopx-agent 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-6.1-sol; OpenAI; runtime_reported; reasoning_effort=max

APPROVE — 已独立评审完整六文件差异,并在 bce38448905789e078703149907580c86c4c4a61 验证修复前后的实际失败路径,未发现阻塞项。此结论是源码评审,不是合并、安装或发布资格。

动机

维护者验证存储恢复、读取 Goal 成果或处理“等你”任务时,会被已经失配的共享测试阻断。

例如,打开 Goal 时 Overview 已经展示成果,旧测试仍要求正文只读取一次;在不改产品的情况下,新测试分别验证目录零读取、Overview 首次读取、成果页重新核验。另两类旧问题是导入已删除的 fixture,以及保留 Overview 后测试点到隐藏或重复的任务副本。

这次恢复的是现有共享测试对真实恢复和交互路径的验证能力:既能走完正常路径,也继续拒绝过期、错 Goal、错误 actor 和未确认写入。

本次不修改产品行为,不证明完整 Python 六分片、持续运行、Windows、已安装 App 或发布探针通过。

改动思路

补丁留在现有测试 owner,没有为了变绿修改运行时或放宽断言。存储测试复用 cold_api 当前真正依赖的 source_modules_present;浏览器场景继续运行实际编译的界面。两个成果场景根据“当前可见区域才读取”的既有页面合同增加中间断言,而不是简单把最终计数从一改为二。

监控和阻塞场景的状态来自隔离 File authority,经真实 CLI 和 HTTP 生成;状态中声明的扩展展示请求现在也送到同一个隔离后端。fetchWorkspaceBackend 保留请求路径、查询和正文,只把本来同源的 Host/Origin 重定位到该后端,外部 Origin 不会因此被授权。没有伪造成功响应或过滤错误。任务点击限定在当前可见 Tasks 面板,仍由 Playwright 严格匹配,避免用全页 .first() 掩盖隐藏副本。

原失败入口 当前验证的行为
存储模块导入不存在的 capture_present 当前 fixture 完整收集,旧预览的原始意图在真实 HTTP/SQLite 冷恢复中保留
成果读取计数停留在旧页面结构 目录零读取;可见 Overview 读取;进入 Files 再取 inventory 并核验正文
展示请求落到只有静态资源的服务器 请求到同一真实隔离 registry,零写入和错误检查继续生效
全页选择器命中隐藏/重复任务 打开可见 Tasks,再操作同一个稳定任务身份并读回结果

最强的反对理由是这些只是“把测试改成当前输出”。独立反证是:旧基线在同一环境分别复现导入错误、计数错误、400 和隐藏/重复定位失败;head 不仅通过,还继续跑完错 Goal、过期响应、缺字段、循环依赖修复、失败预览、错误 actor 拒绝和精确一次确认写入。回退产品页面或删掉这些保护,才会改变已经接受的行为;修复测试是更小的合适边界。

具体改动

完整差异为六个验证文件,新增 30 行、删除 10 行,没有生产源码、默认配置、协议词汇或持久化格式变更。

关键内容讲解

  • test_chat_goal_storage.py:9:纠正共享 fixture 导入。收集到的四个冷恢复组合覆盖实体/父目录别名 registry,以及旧 source modules 存在/缺失;没有删除恢复用例。
  • managed-goal-results.mjs:35 与 research-results.mjs:62:分别检查目录、Overview 和 Files 的读数。原来的 stale/malformed 清理、owner-only 不取详情、错 Goal、精度、哈希、手机宽度及不调用模型的断言仍在。
  • monitor-readback.mjs:84 与 blocked-reason-readback.mjs:111:复用既有请求代理,把展示读取接到正确 owner。后者还限定当前 Tasks 看板;中英文桌面/390px、缺字段、同一抽屉更新、循环恢复、完成归档和零 UI 写入继续验证。
  • attention-user-action.mjs:70:补齐真实 bound-actor 后端的展示路由,并把五处任务定位限定到可见 Tasks。原有 done/defer/cancel/reply、失败后重试、缺稳定身份不写入、错误 actor 拒绝,以及独立 CLI 读回均保留。

规范依据是 docs/architecture/rfcs/goal-workspace-surface-v0.md,固定接受文本 revision 为 de41d2d310ccb9d259200d81d6182a32824ca556;另核对同 revision 的 docs/reference/local-authority-provider-selection.md 和测试质量指南。逐项映射如下:

  • V9:打开、刷新和切换视图无执行副作用。该受影响路径已验证,监控/阻塞 UI 写入为零、成果不启动模型;不把局部通过扩大为整个页面的全部资格。
  • V7:沿既有 action 就地处理并记录读回,失败保留可恢复路径。本次用户操作场景验证失败预览零写、确认一次、依赖按 complete/cancel 的不同语义读回,错误 actor 不能执行。
  • Existing canonical Goal storage in the App:原始预览/收据与当前存储分开读取,恢复不能重选 provider 或覆盖后续写入;33 个真实 File/SQLite HTTP 用例实际通过,其中四个原始冷恢复组合均执行成功。

我也核对了最新 main 30760fd360582643bd1d6312428898fd8d478bdb 的相关变化。新的验收卡片和研究历史设计没有改动这六个验证文件及这里的读数、面板、共享 fixture owner;本次执行资格仍明确只属于 PR 的精确 head,不声称已验证合并后的 main。

对主干的风险

主要风险是测试绕过真实后端、选错隐藏节点,或更新计数时丢掉惰性/身份约束。这次通过保留现有 HTTP/authority、明确可见面板和新增阶段断言处理这三个风险。成果 API 的成功/损坏响应仍是脚本 fixture,因此它证明编译前端的消费与拒绝行为,不单独证明生产研究发布、验收真实性或持久化;监控、阻塞和 bound-actor 操作则真正经过隔离后端,存储经过真实 File/SQLite。截图检查了英文手机阻塞抽屉、研究手机内容和中文真实撤回确认视图,未将截图当作持久化证据。

独立验证环境为 macOS arm64、Python 3.11.17、Node 24.21.0、SQLite 3.53.1,源码路径已核对。执行:

  • python scripts/chat_bundle.py build 与 python scripts/chat_bundle.py verify --source:成功,正常构建带既有 chunk-size 提示,无阈值调整。
  • LOOPX_PERSONAL_WORKSPACE_PACKAGED=1 LOOPX_PERSONAL_WORKSPACE_SCENARIO=<case> node examples/personal-workspace-browser-smoke.mjs:managed-goal-results、research-results、monitor-readback、blocked-reason-readback、attention-user-action 全部通过;同样命令在上述固定 base 全部复现旧失败。
  • python -m pytest tests/control_plane/test_chat_goal_storage.py --collect-only -q:base 为 capture_present ImportError,head 正常收集 33 项。
  • python -m pytest tests/control_plane/test_chat_goal_storage.py -q:head 33 项通过,包含四个真实 HTTP/SQLite 原始冷恢复组合,以及来源漂移、损坏记录、外部 Origin、活动 lease 和重启/后续写入保护。
  • git diff --check:通过;三次提交均带 DCO sign-off。

依当前评审合同 wait_for_ci=false,没有查询、等待或重跑 hosted CI。作者保留的旧 Linux quickstart-anchor 失败及本地未复现记录仍是历史限制;这里没有宣称它被修复,也没有用缺 MkDocs 构建的独立路线冒充完整发布验证。完整 Python 分片/报告/覆盖率、Linux/Windows 和发布资格仍由各自集成验收负责。

我的整体评价

这是完整、可独立回滚的共享验证修复,goal_achieved 只指恢复这六个现有验证入口。长期工作维度为 preserved:不改调度、任务、lease 或收据语义,恢复了阻止后续修复重复撞旧测试的有效回归入口,未据此宣称持续运行资格。用户体验维度为 preserved:产品导航与确认轮次没有增加,读取零额外确认;实际变更仍沿已有 preview→一次确认→当前状态读回,恢复和取消仍可用。

已有覆盖与同作者最近 100 个 PR 已做有界扫描;本 PR 修复既有场景,不新增平行 smoke。重叠的 #6608/#6609 已关闭,#5248 的相邻场景修订应在共享修复采纳时收敛;这不是对 #5248 整案的批准。同作者其它当前提案属于不同产品/研究边界,没有需要在这里合并的重复测试批次。近邻重构检查已做:现有 fetchWorkspaceBackend 正是共享 Host/Origin owner,少量场景路由声明和局部选择器无需再造一个注册框架;持久化兼容分支也没有新增。本次没有 typed vocabulary、默认开关或权限边界变更。

APPROVE。发布前已再次核对 head 和原生评审状态;本结论不授权 merge/admin,也不把独立评审等同 main 采纳。

English verdict: APPROVE — bce3844. The full six-file test-only repair restores current fixture, lazy readback, backend routing and visible-panel selection without weakening the existing negative cases. Independent packaged scenarios and real File/SQLite HTTP tests passed; matched base runs reproduced the old failures. Hosted CI, installed behavior and release qualification were not assessed.

@huangruiteng
huangruiteng merged commit ca09c75 into loopx-project:main Oct 16, 2026
27 of 34 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.

3 participants