Skip to content

Keep saved research readable on read-only sources - #7327

Closed
loopx-agent wants to merge 1 commit into
mainfrom
codex/research-readonly-availability-20261025
Closed

loopx-agent wants to merge 1 commit into
mainfrom
codex/research-readonly-availability-20261025

Conversation

@loopx-agent

Copy link
Copy Markdown
Collaborator

A saved research report could say “Analysis is unavailable; refresh to retry” while its findings and citations were readable. The reader treated permission to execute as source availability, so refreshing could never resolve the warning on a read-only source.

Keep those existing facts separate. Valid saved reports remain readable, and an eye glyph in the existing scope help explains the execution restriction. Start, retry and cancel stay unavailable there. Sources that changed or cannot be read, failed refreshes and historical failures keep their own feedback and recovery. Writable analysis retains its existing explicit action and separate-usage consequence.

研究页将“禁止执行”误判为“分析不可用”。本次保留已保存汇报的正常阅读,把只读限制放进现有范围帮助;真正的来源变化、读取失败和历史失败继续保留。同步补入设计规范与既有浏览器回归。

Validation:

  • Full packaged research-history passed (175.888 s) through the real isolated qualification/process/store/HTTP reader, including Chinese/English, 390px, complete findings/citations, previous versions, focus/Back and read failures. Synthetic sources only; no live model or benchmark execution.
  • Same-harness target-main comparison: baseline 6275d1803 fails at both 1280px and 390px for the false warning; the proposal keeps the same report, source digest and zero mutation attempts. The affected baseline reader is unchanged at final target main 9a8b74bf0.
  • Production TypeScript/build/bundle verification and the focused reader comparison passed again after integration onto 9a8b74bf0. Additional controlled running/failed receipt checks verify disabled read-only cancellation/retry and zero writes.
  • Premerge automated checks: four direct and thirteen selected executions passed. Five binary-image holds are reviewed separately as pixels and metadata; the raw image gate is retained. Exact-scope change-quality receipt: cqr_e1f03139d53e39cd74ab. An initial result exceeded a field-length limit and was corrected before qualification.
  • Changed text paths pass the public-boundary scan; the separate live-registry check retains two pre-existing authority errors outside this change. The isolated premerge scan passes.

No protocol, permission, persistence or model-dispatch owner changes. The bounded simplification reuses the current controller and scope help. Installed-App adoption and broader workbench/IME/queue/Lark acceptance remain separate; this is not a whole-product readability or research-efficiency claim.

Visual evidence at b30588d416b56718a2f15134e4b6fa0214f7a3a2: source-packaged production UI, public synthetic fixtures, real isolated reader backend. Primary question: can I read the saved report, and which actions are allowed? The existing report still leads; the false warning is removed, and its place is not filled by another paragraph. The eye help supports focus, Escape and tap. Long findings, unknown retention, invalid candidates and competing explanations remain in the populated report at body size. The pre-existing shared source footer is outside this slice.

View Before After
Desktop 1280 × 900 Before desktop After desktop
Narrow 390 × 844 Before narrow After narrow

Read-only scope help at 390px

Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
@mergify

mergify Bot commented Oct 25, 2026

Copy link
Copy Markdown

This pull request has merge conflicts with main and cannot be merged
until they are resolved. Please rebase or merge the base branch, @loopx-agent.

Choose the remote for the base repository, not an out-of-date fork.
For a fork clone, first inspect git remote -v; upstream must point
to https://github.com/loopx-project/loopx.git. If it is absent, add it
with git remote add upstream https://github.com/loopx-project/loopx.git.
Then run:

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 HEAD

For a same-repository clone whose origin points to
https://github.com/loopx-project/loopx.git, use origin instead of
upstream for fetch/rebase. If you prefer merging the base, use
git merge <base-remote>/main and push normally.

Keep the DCO Signed-off-by trailer on every commit when you rebase.
https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork

@mergify mergify Bot added the needs-rebase Mergify: the pull request has merge conflicts with its base branch label Oct 25, 2026

@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)

动机

研究者在只读来源打开已经保存的研究汇报。修改前,正文和引用能读,却提示分析不可用并要求刷新;修改后,正常阅读汇报,执行限制通过范围旁的眼睛图标按需查看。同一份已保存汇报不再显示错误的不可用警告,受限操作仍不能执行。本次不改变模型调用、来源校验、权限或保存结果,也不宣称整个研究工作台已完成整改。真实安装态的本次采用、原生窄屏及完整会话和用量归因验收仍需继续。误报并不是正文读不到,刷新也不能改变来源权限;因此这个修复应当消除错误诊断,同时保留真正的来源失效和执行限制。

改动思路

不做修改会持续要求读者进行无效刷新;直接删除全部警告又会隐藏已经变更或无法读取的来源。当前实现选择已有 owner 内更小的修复:后端提供的来源有效性只决定来源警告,原有只读和读取错误事实继续决定操作能否执行。默认不增加说明段落,眼睛图标复用现有范围帮助,阅读和原文往返仍使用同一份结果。执行处理函数及后端权限不变,属于局部投影修复,无须新增枚举、配置、页面或状态同步。

保留 typed 来源事实与既有效果守卫,投影区分来源有效性和执行资格,并复用现有帮助。本 PR 仅修研究阅读器、设计澄清及既有回归;不新增后端或整页框架。

具体改动

依据变更前的 docs/development/design.md,固定版本 9a8b74bf0ad50c92077080bf80bf9b5576dfad44。Research Workspace:打开研究内容只读取,分析执行保留单独动作及权限;本次正常显示有效汇报,原文、完整正文和来源继续可查。Explanations On Demand:可选说明按需打开,但真实错误和权限后果不能消失;本次复用范围帮助并保留来源变化、不可读和503恢复。Populated Page Review:桌面、窄屏及展开内容需要实际观察;五张公开合成图含长结论、无效候选、未知保留结果与竞争解释,不能用折叠或无溢出检查代替视觉判断。新增设计段落是对这些既有准则的落实,不作为自己的独立验收标准。

关键代码讲解

  • ResearchAnalysisButton:已有结果继续“查看分析”,只读且尚无结果时显示“分析详情”;仍沿原条件打开阅读器,可写路径的显式执行和用量后果保留。
  • ResearchAnalysisPanel:来源有效性取 pack.availability,执行资格额外保留 !a.readOnly 和 !a.readError。有效的只读汇报不再进入来源错误分支;只读取消和重试保持禁用,失败记录仍可读。范围帮助用现成组件解释限制,未改变执行 handler。

既有 research-history 回归增加只读无结果、中文/英文范围帮助与焦点返回,以及来源变更/不可读的反例。完整175.888秒打包旅程通过实际隔离的来源校验、保存和HTTP读取;基线 6275d180366bcd0963073d7e6b0b7005b0b6d79e 在1280和390两种宽度均因错误警告退出1,当前头 b30588d416b56718a2f15134e4b6fa0214f7a3a2 保留相同正文、来源指纹和零写入并通过。目标main推进到 9a8b74bf0ad50c92077080bf80bf9b5576dfad44 后相关reader文件未变,重新构建及同一读取探针再次通过。

对主干的风险

主要风险是以“简洁”为由把真实来源错误一起抹去,或者把有结果理解为拥有执行权限。本次没有采用这两条路线:来源变化、来源不可读、真实503读取失败与恢复均通过原回归验证;只读无结果及受控运行/失败回执的分析、取消和重试禁用,保存来源未变且无写入。模型、原Session、保存数据和后端权限均未迁移,回滚本提交即可恢复旧呈现。

本地四项直接检查及十三项选择检查通过,精确范围 cqr_e1f03139d53e39cd74ab 有效。原始premerge保留五张PNG人工核验状态,五图像素、尺寸和元数据已逐项检查,不把原始gate改称全自动通过。早期CQR字段长度错误和记账前启动的旧检查保留,修正后的receipt与最终检查覆盖当前头。独立全局registry读检查仍有两项既存authority错误,其原因路径未修改;隔离的改动文本边界扫描通过。依当前策略不查询或等待远端CI。没有引入可选能力,因此不存在新增feature-off路径;既有可写执行路径及只读拒绝由原测试和handler继续覆盖。

我的整体评价

无阻塞发现,APPROVE。long_horizon 为 preserved:没有调度、重规划或科学收益证据变化,也没有净效率收益推断;user_experience 在本次错误诊断路径为 improved。机制和问题相称,复用typed来源及原帮助组件,局部语义保持可检查。已逐张查看桌面和390px的完整汇报与范围帮助:正文继续领先,删除误报警告后可在同一视口读到更多解释,未新增默认说明段落。本次安装态采用与原生390px未验;共享来源页脚说明仍是现有样式,整体工作台可读性和研究净效率未据此判定。安装态、跨平台和更广的工作台任务继续独立验收,不能由这次通过替代。精确头为 b30588d416b56718a2f15134e4b6fa0214f7a3a2,发布前再次核对。

English verdict: APPROVE at b30588d416b56718a2f15134e4b6fa0214f7a3a2. The reader separates source validity from execution permission, removes the false warning over valid saved reports, and preserves real source errors and read-only refusals. Packaged reading, negative cases, exact-scope qualification and manual visual evidence support this bounded change; installed/native and whole-workbench qualification remain separate.

@loopx-agent

Copy link
Copy Markdown
Collaborator Author

Superseded by #7315, merged as 630ce1b while this proposal was under review. Both separate source validity from read-only execution and disable ineffective cancellation. The main implementation also keeps explicit empty/failed/running reader recovery. Closing this duplicate to preserve that implementation rather than overwrite it. The review and baseline/head captures here remain historical evidence for this proposal; they are not approval to merge it over the newer main implementation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-rebase Mergify: the pull request has merge conflicts with its base branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant