Skip to content

fix(research): declare captured previews as read-only - #7312

Merged
huangruiteng merged 1 commit into
mainfrom
codex/research-preview-readonly-20261025
Oct 25, 2026
Merged

huangruiteng merged 1 commit into
mainfrom
codex/research-preview-readonly-20261025

Conversation

@loopx-agent

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

Copy link
Copy Markdown
Collaborator

Captured research-history readers deny execution writes, but previously identified themselves as the ordinary local workspace. Opening the steward home therefore showed a missing-runtime installation warning with fixture command paths and offered an unusable composer.

The fixture now advertises the existing read-only source catalog with its Goal scope and uses the supported full-status fallback when directory hydration cannot carry that identity. Existing frontend behavior identifies the preview and removes execution affordances; POST/PUT/DELETE still return 405. Ordinary missing-runtime onboarding is unchanged.

Validation at bbf1dd0dad3c4ae9c63d9cac1421af816ccefe8c: exact-head packaged build/typecheck and the complete packaged research-history scenario passed (144.835s), including native results, saved reports, citations, previous versions, recovery, home/Goal read-only identity, and POST/PUT/DELETE rejection. runtime-readiness passed on the unchanged proposed source tree (0.946s), preserving ordinary setup/recheck behavior. The settled target-main baseline fails the new source assertion, reporting “本机 / 本机交互”. Premerge completed all 5 direct and 6 selected checks with zero failures; its gate remains manual_review_required for the four image evidence files. The first premerge attempt failed because repository-root TypeScript dependencies were absent; after the prescribed root npm ci --ignore-scripts, the semantic-vocabulary check and complete premerge rerun passed their automated checks. Independent visual review remains outstanding.

No new protocol or capability: the fixture consumes the existing StatusSourceCatalog owner. The full-status fallback can read more than metadata-only discovery; no latency improvement is claimed. This is a source-packaged captured-reader correction, with shared App installation and independent visual review separate.

Visual evidence uses public synthetic research data, a harmless missing-command placeholder, and the same packaged UI source (61b83ac); the provider changes from target-main behavior to this proposal. Desktop 1280×900 and narrow 390×844 retain readable layout and show no horizontal overflow. The preview identity, warning withdrawal and removed composer are visible; captured execution coverage remains unknown.

Before After
Desktop Before desktop After desktop
Narrow Before narrow After narrow

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)

动机

读取已捕获研究结果的人打开预览首页时,会被缺少 Agent 运行环境的安装提示和无法执行的输入框干扰。

此前捕获预览被显示为“本机交互”,还列出 fixture 的不可执行命令;现在同一已打包界面识别 Research preview 为只读来源,直接保留 Goal、研究记录和原文入口,去掉运行环境安装提示与执行输入框。

已通过真实捕获 HTTP/SQLite、完整 packaged 场景和桌面/窄屏实看验证只读身份及阅读路径;POST、PUT、DELETE 仍被 405 拒绝,原始捕获来源未改变。

本次只修复捕获研究预览及其回归场景,不新增执行服务、修改普通工作区的安装引导,也不代表已安装 App、真实模型或完整研究科学效果验收。

改动思路

最有力的反对理由是:为一个示例修改共享权限或增加前端特判,成本会大于问题本身。当前改动没有这样扩展。捕获预览已经拒绝写入,问题在于它仍把自己投影成本机交互来源;在既有 HTTP 所有者补齐已有来源目录,让前端读同一事实,是更小且可回滚的修复。浏览器继续使用已有 StatusSourceCatalog 和 activeSource.readOnly,不需要第二份手动同步的权限状态。

目录轻读不能携带来源身份时返回 404,触发既有完整状态回退。完整响应只在成功的状态读取上声明相同 loopback 来源,并保留 goal_id;未知 Goal 的错误仍由原来源读取器展示。回退增加读取成本,作者没有把它包装成优化。读取已保存的研究无需安装运行环境、重填已知信息或再做确认;执行权限仍由 HTTP 写入拒绝独立保证。

具体改动

接受依据 docs/development/design.md,固定版本 61b83ac745a49f9eafadd7b87b085d567a9dca11;并核对同版本 goal-workspace-surface-v0.md 的 shared Goal source reading checkpoint。逐项映射:

  • Earn The User's Attention:implemented。捕获预览首页直接显示只读来源和 Goal,移除不相关的运行环境安装任务;同一 packaged UI 的基线服务器仍显示本机交互、安装墙和输入框,当前服务器消除了这组错误提示。
  • Research Workspace / 研究工作台:implemented。原生测量、首次值、未知保留结果和引用原文继续可读;20 条长结论、24 条混合状态记录的负结果、受阻来源及全部记录在展开和窄屏下仍可访问。只读展示没有成为执行授权。
  • Explanations On Demand:implemented。来源、测量限制、历史与完整记录仍按需展开;缺失 Goal 404 可见,返回有效来源后恢复阅读,不以缓存数据假装成功。

关键代码讲解

  1. Handler._send_json 仅对成功的 /status.json 且含 run_history 的响应添加现有 read_only_sources,保留其他 API 字段,URL 的 goal_id 经标准编码。它陈述这个捕获读取器的性质,不是新权限引擎。
  2. Handler.do_GET 对目录轻读返回已有兼容回退信号;其余原生研究、状态、原文 API 仍走原处理器。do_POST/do_PUT/do_DELETE 的 405 独立边界保留。
  3. runtimeStatusSourceCatalog 是未改动的共享消费者:核对 loopback URL 是否匹配当前来源,将其投影为 runtime/readOnly;researchHistoryScenario 则在原来的真实 native 开场用首页、Goal 范围、窄屏及三种写入方法保护这条组合路径。

文字改动在两个已有示例文件中为 +44/-2,并提供四张公开合成截图。已检查四张实际像素和 PNG 元数据:仅 ICC 色彩配置,没有私有路径、真实会话或账号信息。现有截图直接展示桌面结果与窄屏结果;它们的边界是 captured packaged preview。

对主干的风险

没有发现阻塞问题。 最强风险是首页标签修好了,Goal 范围读取却丢掉身份,或隐藏输入框被误当成权限保护。独立真实 HTTP 对照确认:基线目录 200 但无来源目录;当前目录 404 后完整状态携带匹配来源,Goal 查询保留范围;未知 Goal 仍 404。原生场景实际发送 POST、PUT、DELETE 均为 405,mutation_attempts=3 且 source_unchanged=true。同一 packaged UI 的基线/当前服务器对照复现并消除了原缺陷,没有用 mocked 最终状态供应待证明结论。

新构建 Chat bundle 通过;完整 research-history packaged 场景通过(144070ms),普通 runtime-readiness 安装/重新检查对照通过(934ms)。完整场景后半仍包含既有合成展示/竞态注入,不能把它当真实模型效果;原生 HTTP、SQLite 和原文开场单独可辨。原生 premerge 为 5 direct + 6 selected 通过、0 failed,结果仍是 manual_review_required,4 个图片人工标记。本评审已检查其像素/元数据,但没有把自动返回改写为绿色,也没有查询或等待远端 CI。

新增断言进入既有 native 场景,补的是普通来源开关测试未覆盖的“捕获后端 + directory hydration”组合回归;没有新增同形 smoke 或测试框架。未发现同作者队列中的重复批量测试问题。现有产品目录与权限所有者复用,未引入新的共享词表、配置或持久化字段。

我的整体评价

APPROVE,固定头 bbf1dd0dad3c4ae9c63d9cac1421af816ccefe8c;以 COMMENTED 记录批准结论。 当前登录账号与 PR 作者相同,GitHub 不允许正式自批准;这不表示发起任务的 Agent 与评审 Agent 相同,更不授予合并权。用户体验 improved、长程读取与续用 preserved:修复的是不必要的安装/执行暗示,研究结果、负结果、未知、完整证据、来源恢复及写入拒绝都保留。

在 1280×900 和 390×844 的实际预览中,只读来源替代了错误的本机安装任务;研究数据、完整原文与来源详情仍可读。另实看了 24 条混合状态记录和 20 条长结论,正文、负结果、未知与下部受阻记录仍可达。

视觉范围为本次 packaged 捕获预览;未覆盖已安装 App、真实远端 SSH 与真实模型产物,未据此作出这些交付结论。

这是一项已有捕获读取器上的完整窄修复,无需扩展共享目录协议或另造阶段。接受完整状态回退的额外 IO;不据此宣称延迟改善、已安装产品交付、真实模型采用或科学收益。人工标记、独立 merge-readiness 与维护者合并权限仍需分别处理。

English verdict: APPROVE at bbf1dd0dad3c4ae9c63d9cac1421af816ccefe8c (COMMENTED author-account fallback). The actual captured reader now advertises its existing read-only nature through the shared catalog and supported full-status fallback. Packaged/native research reading, ordinary missing-runtime control, desktop/narrow expanded views, scope recovery and HTTP405 write fences passed. Native premerge retains four manual image-review holds; no installed/live-model qualification or merge authorization is implied.

@huangruiteng
huangruiteng merged commit 06f51b7 into main Oct 25, 2026
23 of 36 checks passed
@huangruiteng
huangruiteng deleted the codex/research-preview-readonly-20261025 branch October 25, 2026 13:59
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