Repository navigation
fix(research): restore original history and saved analysis on shared Core - #7336
Conversation
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
There was a problem hiding this comment.
Reviewer: model_agent | gpt-6.1-sol | OpenAI | runtime_reported | reasoning_effort=max | active_turn_verified=false
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机
在共享 Core 中打开原 Goal 研究页的用户。 Chat 会话另存时,原有研究记录和已保存分析被误显示为空;修复后原页面读取注册工作根中的原记录。 隔离真实 HTTP 已验证历史、已保存分析、原始引用、完成任务和验收报告恢复可读;原数据留在原处。 不迁移或合并会话与Goal,不启动 benchmark,不新增分析算法、设置、权限或界面布局。
这不是记录丢失,而是共享Core后,部分研究读者仍把私有会话目录当成工作根。反复刷新不能恢复原记录,还可能诱发不必要的再次分析。当前判断为 justified_increment:本次交付已有页面可用的读取修复;安装后的原App验收与更广的原会话、composer整改继续沿既有工作,不以这个补丁关闭父级目标。
改动思路
现有 coordination_runtime_root 已拥有注册工作根的选择语义;本PR只让遗漏的IO读者复用它,避免第二套配置或数据迁移。 当前边界是研究与完成成果读者的注册根修复,保留Chat存储、来源身份与显式分析动作。
源自精确head 46cfc83 的流程说明:请求先经过原有loopback、Origin、Goal与来源命名空间核对,再由既有根选择器找到注册工作目录,最后交给既有历史、pack或canonical结果读者。只修改History一处会留下已保存报告和完成任务仍不可读;复制原数据会产生双份事实源。此处Python是既有HTTP IO适配,不新增Python决策权威、功能开关或迁移事务。没有新增协议词汇;下一次改变工作根规则仍在原owner集中处理。
具体改动
关键代码讲解
loopx/chat_completed_todos.py:125的_goal_result_scope保留原来的访问核对,随后复用coordination_runtime_root。Explore、当前Goal分析、引用和验收结果列表都从同一入口得到正确工作根。旧代码在目录有效但读错位置时会返回看似成功的空结果,新代码不再让Chat目录覆盖注册事实。- 同文件183行的
_completed_todos将声明的公共工作根传给canonical完成历史读者;没有公共根时仍保留原None/override语义。排序、40条分页、归档、搜索、证据以及任务状态的含义均交给原读者,不能把修根扩展为重新判定任务完成。 loopx/presentation/goal_source_routing.py:10的goal_source_catalog把本机已保存的来源分析放回同一协调根,物理来源namespace和原Goal核对照常生效。重建catalog或重新关联来源仍能读取同一个已保存结果,不能借修根扩大来源或模型执行权限。
采用的规范是 docs/architecture/rfcs/app-conversation-and-async-inbox-v0.md,固定版本 a66d8de。逐项核对:registered-work-root 已由两个读者及catalog复用原owner实现;private-chat-storage 由原会话JSON不变的控制器测试验证;local-root-fallback 由原分支、同根对照以及无common-root控制例核对。另按design.md的Research约定保留浏览只读、完整引用及明确分析按钮。
文字diff为57增20删,生产只改两个已有IO模块;五个既有测试模块扩展分离存储反例,四张公开合成图直接进入PR描述。旧的大历史夹具还没有初始化当前canonical authority,其四例在base同样失败;本次按当前受信读者合同建立File authority,保留原有全文、分页、去重、归档和无写入断言。
对主干的风险
最强反例是所有同根测试都通过,而真实分离会话目录仍把原数据读成空。用相同fixture摘要 348f858e8822dd591624e11209f0dcc8693a641594fd601e948f341340783b98 加载固定base及head的两个生产适配器,经真实HTTP测试:分离存储6例在base失败、head全部通过;同根6例在两个版本均通过。这覆盖File/SQLite、完成归档、已保存pack、原生测量及原始引用,不依靠mock直接提供正确后置状态。
完整六模块68例通过(95.36秒);生产构建和打包研究全流程通过(179122毫秒),包括长内容、来源不可用、取消/重试的合成进程、原文返回及390px。错误origin、Goal、namespace、路径、跨Goal cursor和损坏事件仍被拒绝;恢复来源后能读回原记录,读取不会启动模型。预合并6项direct及17项自动检查通过;四项binary-image hold已逐张核对像素和来源,PNG无文本/EXIF元数据。工具仍静态标记人工图审,不把它当自动隐私通过。所选公开文件的文本边界扫描通过,PNG另以实际像素、夹具来源与元数据核对;不把文本扫描当成图片隐私检查。
语义与 CI 对齐
注册公共根、原Chat私有根和来源命名空间均沿现有合同;没有新状态分类、prose heuristic、Actor权限或默认关闭功能。正常同根消费者保持原行为,分离目录的错误行为是明确修复的差异。当前Goal策略不等待CI,因此未查询或轮询GitHub CI;本地验证与精确head评审、最终merge readiness分别保留。
我的整体评价
APPROVE,适用于 46cfc83。long_horizon 和 user_experience 的改进是恢复既有证据的持续读取,不是推断benchmark效果变好。已查看打包的桌面和390px整页:历史与范围清楚,说明仍按需展开;展开引用的完整正文保持可读,图谱滚动留在自身区域。本PR恢复读取来源,没有更改排版。 这些公开画面为合成数据;当前安装App采用和原会话实测在合并后单独回读,不据此声称全部研究工作台或双端会话已经验收。
现有 coordination_runtime_root 已拥有注册工作根的选择语义;本PR只让遗漏的IO读者复用它,避免第二套配置或数据迁移。 当前边界是研究与完成成果读者的注册根修复,保留Chat存储、来源身份与显式分析动作。 复用现有owner比增加迁移、复制、标记字段或新配置更小,也补齐了同一个真实入口的多个遗漏消费者。完整会话、来源、错误与显式执行边界被保留;未发现需要阻止这个根路由修复的问题。公开四图均为合成数据,原用户画面与运行证据留在私有验收材料;正式采用后还需直接检查原App中的父Goal、子Goal和已保存中文报告。
English verdict: APPROVE — 46cfc83 restores registered original evidence across split Chat/work stores using the existing coordination owner. Six same-fixture regressions fail at base and pass at head; six same-root controls preserve behavior. 68 HTTP/backend tests, packaged Research flow and required local automated checks passed; four image holds were manually inspected. Installed adoption remains separate. This COMMENTED author self-review is not formal GitHub approval or merge authority.
When Chat uses a separate Session store, the Research page can show zero history and no saved analysis even though both exist in the registered work runtime. Completed-task and accepted-result readers suffer from the same routing mistake.
Reuse the existing
coordination_runtime_rootowner for these readers and for linked-source analysis storage. Session storage, namespace/origin checks and explicit analysis actions keep their existing owners. No Goal or conversation data is copied or migrated.Validation covers real isolated File/SQLite HTTP reads, paging, citations, owner/source rejection and corrupt-source recovery. Six regression cases fail before the routing fix. The retained-content fixture now initializes canonical authority, matching the current read contract; its four old unpromoted cases also fail on the base revision.
npm run buildand the complete packagedresearch-historyjourney pass (179122 ms). The consolidated suite passed 68 tests (95.36s). Fixed-base/head same-fixture checks produce six split-store failures at base and six passes at head, with all six same-root controls passing at both. Local premerge ran six direct and seventeen selected automated checks successfully; four static image-review holds were inspected manually (pixels, fixture source and PNG metadata). Exact-head review and installed adoption remain separate gates.Visual evidence
Revision
46cfc83e080cf66f0ce740a003652b11fcaf7dc2; packaged frontend with public synthetic fixtures and disposable HTTP backends. These show the restored reading journey, not live benchmark outcomes or a new layout design. The default page exposes the recorded history; full source text remains readable in the same page at desktop and 390px. The graph retains its own pan area. Actual owner data is excluded.中文:分离 Chat 会话存储后,研究历史、已保存分析和完成任务仍应沿注册的工作根读取。本改动复用既有路由 owner,修复假空态;完整会话和研究数据均留在原处。公开图片仅为隔离验收,不代表实际 benchmark 结论。