Skip to content

refine(research): consolidate source states and safe recovery - #7275

Merged
loopx-agent merged 1 commit into
mainfrom
codex/research-source-states-20261025
Oct 24, 2026
Merged

loopx-agent merged 1 commit into
mainfrom
codex/research-source-states-20261025

Conversation

@loopx-agent

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

Copy link
Copy Markdown
Collaborator

Change

Research without an analysis source rendered a second explanation card above its history. Failed history refreshes also repeated recovery instructions. The existing analysis help now names the source state, while the existing shared refresh remains the recovery entry. Full causes are available on hover, focus and tap; failure, cached-record state and Retry remain visible.

A failed analysis refresh now opens read/recovery instead of dispatching from an old unanalysed pack. Successful readback restores the existing explicit analysis action. Source identity, stored records, native results, model-use consequences and backend authorization remain unchanged.

Validation

  • Final packaged research-history scenario passed, including complete paged history, source/citation failure and recovery, language and scope isolation, original readers, keyboard return, narrow layouts, and zero analysis writes. A cached unanalysed pack cannot dispatch while its refresh is unavailable, and a successful retry restores its explicit action.
  • Same-input before/head SQLite + HTTP inspection: the extra explanation card changes from 1 to 0 in both empty and populated views. Source bytes remain unchanged and mutation attempts stay at zero. Hover/focus/tap/Escape and Chinese/English narrow help passed.
  • Dashboard TypeScript, Chat build, CSS token checks, Node syntax and bilingual RFC diff checks passed. Exact-scope quality receipt: cqr_dab1ea6733afcdb37d0d.
  • Local risk-based premerge: four direct checks and thirteen selected checks pass; eight PNGs require and received manual visual review. The first run captured a stale quality receipt; qualification and premerge were rerun. An initial mixed text/binary boundary scan could not decode PNGs; the supported five-file text scan passed and the synthetic images were inspected separately. Remote CI is not queried under the Goal's configured validation policy.

Boundary: packaged UI with an isolated real SQLite/HTTP owner and public synthetic inputs. No model, benchmark or real-session send was used. Installed adoption is a separate post-merge readback.

Visual evidence

Tested head 423a15471f8c0cd07506fc5cc6635a1aae84bbaa, before UI 984691c6ac54686d6747f4325564e68d81397f85; desktop 1280×900 and narrow 390×844. The empty-source explanation no longer occupies a second card. With cached records and a failed refresh, the graph becomes visible earlier while the failure and Retry stay legible. Expanded help preserves the full reason and guidance. Full-suite populated history and original-evidence reading remain available; these screenshots are synthetic, not live operating context.

View Before After
Empty desktop Before empty desktop After empty desktop
Empty narrow Before empty narrow After empty narrow
Failed refresh Before failed refresh After failed refresh
Requested detail Populated default
Source help on narrow screen Populated research default

Installed readback

Post-merge qualification used the native desktop App with runtime faebe5e08a927e04c2895bd47daf1baa3ef81e6b. The normal research entry shows source absence through its contextual help and existing shared refresh. Original linked research, measured values, source reading and exact return remain available; existing sessions were retained. No model or real-message test was used. Live operating captures remain private.

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 · max

Approval conclusion (author-owned PR; GitHub blocks formal self-approval)

动机

研究页读者在空来源或刷新失败时,需要辨认当前能读什么、能否分析以及如何恢复。 此前无分析来源会在历史上方再铺一张说明卡,失败后重复恢复提示;现在由分析入口的状态帮助解释原因,失败与重试保留在记录旁。 默认页面优先显示现有记录;按需查看完整原因,缓存分析来源读取失败时不发起模型,成功重试后恢复原来的显式分析操作。 本段不改研究历史、来源或分析权限,也不证明模型分析质量、长程收益或全产品会话交付已经完成。 安装采用仍需合并后的真实 App 回读;其余工作台、跨会话与双端协作验收不由本段结清。

我从现有入口复现了这条阅读路径,再核对固定输入下的新旧页面。只删一句话会留下多余刷新入口和缓存来源失败后的执行分支;所选改动同时收敛该状态的展示与恢复,构成完整的局部交付,而不是把静态截图当作全产品改善。

改动思路

复用现有 ContextHelp、共享刷新与读状态 owner,删除重复空态卡片和过时样式;只从当前读取错误派生操作可用性,不增设配置、存储或权限权威。

当前 PR 交付研究页空来源、历史读取失败及缓存分析恢复的完整阅读路径;不重构后台、会话绑定或分析方法。

当前状态 页面行为 恢复边界
已知没有分析来源 原入口的语义帮助说明原因,完整记录继续显示 复用现有研究刷新
来源刷新失败但有缓存 明确失败并保留旧记录,入口只打开读回与恢复 成功读取后恢复显式分析
来源可用 原来的分析按钮及单独用量提示保留 用户明确操作才请求模型

此表说明本次精确版本的界面与控制分支;执行证据来自隔离真实后端和完整打包测试,不由表格本身证明。原后端仍负责来源、权限和分析生命周期,页面没有新增执行授权。

具体改动

书面依据是 docs/development/design.md@984691c6ac54686d6747f4325564e68d81397f85。explanations-on-demand 已实现:缺失来源和重复恢复说明归到所属入口,真实失败、缓存状态和 Retry 仍可见;populated-page-review 已实现:同输入空/丰富/失败和展开状态检查桌面及窄屏,八张公开合成图直接进入 PR 描述。已安装采用仍单独验收,不能从这些图推定。

关键代码讲解

两个原有 CSS 文件删除不再使用的空态卡片和技术折叠规则,并把失败原因的帮助符号与当前状态对齐。原 browser scenario 新增缺失来源、共享刷新、完整帮助、缓存未分析包读回失败和恢复正反例;保留完整分页、原始引用、历史来源、跨范围、语言和焦点返回断言。其余八个路径都是已逐张检查的公开合成 PNG,无真实机器、会话、凭据或运行素材。

对主干的风险

最强反例是说明收拢后实际失败不可见,或者缓存包仍被误认为当前可执行。已实际检查失败状态及 Retry 在默认视图中可见,完整技术原因通过就近帮助可读;缓存 native 值保留为 3,分析写入次数为 0,成功重试后原显式操作重新可用。源缺失、初次加载、刷新失败和历史结果没有被合成一个成功状态;没有用 unknown 补零,也未改变源内容、权限或模型用量后果。

最终完整打包研究场景、TypeScript、Chat 构建、CSS token、Node 语法和 RFC/差异检查通过。标准本地预合并的 4 个直接检查与 13 个选择检查均通过,精确范围 CQR 为 cqr_dab1ea6733afcdb37d0d;8 个 PNG 的手工检查 hold 已逐项核实,未称自动消失。初始截图等待条件、PNG 的文本解码和不一致的质量结果字段失败均保留,修正后才重新验证;第一次预合并读到旧质量回执,最终重跑质量有效且无自动检查失败。当前配置不等待远端 CI,本次没有查询 CI。后端接口和存储未改,模型实际执行、全产品会话与 Lark 双端验收均不由本测试替代。

语义与 CI 对齐

本次复用现有 availability、作用域内 readError 和来源身份,没有新增 Enum、Literal、协议或文字匹配分类器。语义 advisory 未报告其支持的新载体,但这不是任意 TSX 语义覆盖证明;完整 typed read 状态与执行分支另由代码和浏览器反例核查。现有默认关闭/来源不可用路径依然只读,不启动模型、调度器或来源写入。

我的整体评价

长程路径判断为 preserved:原历史、证据、未知与明确执行 owner 保留,不宣称新增科学或效率收益。用户体验判断为 improved:这是同输入下实际观察到的局部可读性改善,无新增用户确认、复制命令或模型等待。

已观察相同合成输入的桌面、390px默认、失败和展开页面:重复说明卡片消失,窄屏失败与重试保持可见,原因帮助贴近状态,图表更早进入视野,主控件没有被新增图标挤换行。

未将合成截图当作安装采用、真实模型质量、独立理解度或量化效率收益;完整原会话与双端协作不在本次评审结清范围。

代码规模与问题相称:77 行新增、24 行删除,集中在现有读回与呈现 owner;八张图用于独立可评审的前后/异常证据,没有引入新框架、状态存储或兼容分支。建议批准精确 head 423a15471f8c0cd07506fc5cc6635a1aae84bbaa;在发布此记录后仍须检查该 head 的远端线程与 merge readiness,并沿既有授权合并。

English verdict: APPROVE — 423a15471f8c0cd07506fc5cc6635a1aae84bbaa. The existing Research reader now consolidates absent-source guidance, keeps failed reads and Retry visible, and prevents analysis dispatch from a stale unanalysed pack until read recovery. Full packaged regression, same-input real-owner captures, type/build/CSS, exact-scope quality and local premerge checks passed. Eight visual holds were inspected manually. Installed adoption and model/scientific benefit remain separate.

@loopx-agent
loopx-agent merged commit faebe5e into main Oct 24, 2026
25 of 31 checks passed
@loopx-agent
loopx-agent deleted the codex/research-source-states-20261025 branch October 24, 2026 17:26
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.

1 participant