Repository navigation
fix(workspace): expose original state from same-named source Goals - #8278
Conversation
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
huangruiteng
left a comment
There was a problem hiding this comment.
Reviewer: model_agent · gpt-6-astra · OpenAI · runtime_reported · xhigh
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机 / Motivation
研究多个独立实验的工作台用户需要在父 Goal 下阅读每个实验的真实状态。两个独立实验都叫 solver-goal,旧版拒绝第二个连接;现在用各自工作台路由进入,任务和历史仍归原始来源。父页面可进入两份同名来源,读取真实任务、完成历史和研究记录,来源丢失显示错误并可重试。不恢复 solver 执行,不补造缺失记录,不授权源端写入,也不证明 benchmark 效果。
本机安装及真实来源连接仍须在合并后完成;归档缺失的 state 文档不能由界面补造。
改动思路 / Approach
原始 registry、SQLite 和研究日志仍是事实来源,本地父 Goal 只组织读取入口。仅改标题无法解决同名 id 冲突,改写原实验 id 又会破坏证据身份。因此在既有 source link 上加可选工作台 id,交给 TypeScript 验证和投影,Python 只执行既有 CLI 读取。任务、运行和研究事件保持原始 id;分析包继续按物理来源隔离。完成任务列表把既有投影提取为共用函数,两个读取入口不保留两份排序规则。身份与来源资格保留在原owner,新增值只用于工作台路由,完成列表规则单处复用。原生read access与导航,不是benchmark分析算法或执行恢复。
具体改动 / Changes
规范依据:7cf1aecd5255 frontend delivery。original-source-state 已实现:显式连接、源身份校验、原生 Task/history 读取、父子导航和失败重试均有真实 HTTP 路径。installed-app 延后到合并安装后的当前交付继续资格验证;这不等于已验收安装版,也不等于归档完整。
关键代码讲解
- projectGoalSourceLinks 保留省略 alias 的旧路径,拒绝覆盖本地 Goal、重复 view 和同一物理来源。显示别名不成为新执行 Goal。
- projectGoalSourceStatus 要求源状态恰好属于原 Goal,再投影路由字段;原 Task/run id、正文和来源 descriptor 保留,原 parent 另存,不修改来源文件。
- 来源完成历史 在 loopback 和 namespace 校验后调用原 Todo CLI,复用完成排序/筛选与短期游标;错误来源和移除后的游标不能读取兄弟来源。
- GoalResearchWorkbench 把工作台路由和原始 Goal 身份分别传入,默认展示 linked source 原记录,保留主动选择解读文章的入口。
对主干的风险 / Risks
最强风险是两份同名来源看似打开成功、实际读错任务或分析包。这里用真实临时 SQLite、native CLI 和同源 HTTP 验证不同任务正文、错误 namespace 拒绝、单独移除链接、重开 catalog 和分析包隔离,未用 mock 声明这些结果。baseline 的同名 alias POST 返回409,head 接受;未加 alias 的原任务/历史观察相同,源文件字节不变。完成历史初次测试暴露不支持的 CLI 参数,已修为 include-archived 并以同一场景重测通过。
PASS:8条TS投影测试、41条来源/研究API检查,完成历史扩展覆盖33条检查;packaged chat构建和研究读取smoke通过;standard premerge的6个直接检查与19个选定检查零失败。首次检查缺root npm依赖且与编辑并行,安装依赖并冻结head后完整重跑通过。配置 wait_for_ci=false,因此未查询或等待远端CI。没有支付模型调用、solver运行或效果因果验证。保留源失联、历史缺口和本机安装尚未资格验证的边界;不以已有状态声明实时运行。
语义与 CI 对齐
可选 workspace_goal_id 扩展既有来源链接语义,original_goal_id 是派生展示信息;没有新增生命周期枚举或另建 authority。语义advisory及全树检查通过。共享 completed Todo 投影保留本地行为;linked source 默认研究历史和可读取完成历史是明确披露的展示变化。
我的整体评价 / Verdict
当前完整PR是有用且可回滚的增量:长期研究保留原始证据身份与重开后的持久入口,用户体验减少切外部Dashboard找状态的步骤。父子导航、原生历史与任务正文可直接找到,来源只读状态保留,窄屏详情不横向溢出。安装后的 native WebView 与缺失原始 state 文档仍未在本 PR 提交前资格验证。 已检查真实113条混合状态历史、长任务和公开合成来源的桌面/窄屏展开内容;正文、状态和原文入口可辨识。343增104删主要来自所有读消费者的身份贯穿,共用完成列表规则是已完成的有界简化;无需新增runtime或迁移源state。
Exact head: 7cf1aecd5255e33c17428ad94a83dcc7010b73e7.
English verdict: APPROVE — the original-state reading slice is validated; installed rollout and incomplete historical captures remain explicitly bounded.
huangruiteng
left a comment
There was a problem hiding this comment.
Reviewer: model_agent · gpt-6-astra · OpenAI · runtime_reported · xhigh
Approval conclusion (same-agent author audit; authenticated reviewer account differs from PR author)
动机 / Motivation
研究多个独立实验的工作台用户需要在父 Goal 下阅读每个实验的真实状态。两个独立实验都叫 solver-goal,旧版拒绝第二个连接;现在用各自工作台路由进入,任务和历史仍归原始来源。父页面可进入两份同名来源,读取真实任务、完成历史和研究记录,来源丢失显示错误并可重试。不恢复 solver 执行,不补造缺失记录,不授权源端写入,也不证明 benchmark 效果。
本机安装及真实来源连接仍须在合并后完成;归档缺失的 state 文档不能由界面补造。
改动思路 / Approach
原始 registry、SQLite 和研究日志仍是事实来源,本地父 Goal 只组织读取入口。仅改标题无法解决同名 id 冲突,改写原实验 id 又会破坏证据身份。因此在既有 source link 上加可选工作台 id,交给 TypeScript 验证和投影,Python 只执行既有 CLI 读取。任务、运行和研究事件保持原始 id;分析包继续按物理来源隔离。完成任务列表把既有投影提取为共用函数,两个读取入口不保留两份排序规则。身份与来源资格保留在原owner,新增值只用于工作台路由,完成列表规则单处复用。原生read access与导航,不是benchmark分析算法或执行恢复。
具体改动 / Changes
规范依据:7cf1aecd5255 frontend delivery。original-source-state 已实现:显式连接、源身份校验、原生 Task/history 读取、父子导航和失败重试均有真实 HTTP 路径。installed-app 延后到合并安装后的当前交付继续资格验证;这不等于已验收安装版,也不等于归档完整。
关键代码讲解
- projectGoalSourceLinks 保留省略 alias 的旧路径,拒绝覆盖本地 Goal、重复 view 和同一物理来源。显示别名不成为新执行 Goal。
- projectGoalSourceStatus 要求源状态恰好属于原 Goal,再投影路由字段;原 Task/run id、正文和来源 descriptor 保留,原 parent 另存,不修改来源文件。
- 来源完成历史 在 loopback 和 namespace 校验后调用原 Todo CLI,复用完成排序/筛选与短期游标;错误来源和移除后的游标不能读取兄弟来源。
- GoalResearchWorkbench 把工作台路由和原始 Goal 身份分别传入,默认展示 linked source 原记录,保留主动选择解读文章的入口。
对主干的风险 / Risks
最强风险是两份同名来源看似打开成功、实际读错任务或分析包。这里用真实临时 SQLite、native CLI 和同源 HTTP 验证不同任务正文、错误 namespace 拒绝、单独移除链接、重开 catalog 和分析包隔离,未用 mock 声明这些结果。baseline 的同名 alias POST 返回409,head 接受;未加 alias 的原任务/历史观察相同,源文件字节不变。完成历史初次测试暴露不支持的 CLI 参数,已修为 include-archived 并以同一场景重测通过。
PASS:8条TS投影测试、41条来源/研究API检查,完成历史扩展覆盖33条检查;packaged chat构建和研究读取smoke通过;standard premerge的6个直接检查与19个选定检查零失败。首次检查缺root npm依赖且与编辑并行,安装依赖并冻结head后完整重跑通过。配置 wait_for_ci=false,因此未查询或等待远端CI。没有支付模型调用、solver运行或效果因果验证。保留源失联、历史缺口和本机安装尚未资格验证的边界;不以已有状态声明实时运行。
语义与 CI 对齐
可选 workspace_goal_id 扩展既有来源链接语义,original_goal_id 是派生展示信息;没有新增生命周期枚举或另建 authority。语义advisory及全树检查通过。共享 completed Todo 投影保留本地行为;linked source 默认研究历史和可读取完成历史是明确披露的展示变化。
我的整体评价 / Verdict
当前完整PR是有用且可回滚的增量:长期研究保留原始证据身份与重开后的持久入口,用户体验减少切外部Dashboard找状态的步骤。父子导航、原生历史与任务正文可直接找到,来源只读状态保留,窄屏详情不横向溢出。安装后的 native WebView 与缺失原始 state 文档仍未在本 PR 提交前资格验证。 已检查真实113条混合状态历史、长任务和公开合成来源的桌面/窄屏展开内容;正文、状态和原文入口可辨识。343增104删主要来自所有读消费者的身份贯穿,共用完成列表规则是已完成的有界简化;无需新增runtime或迁移源state。
Exact head: 7cf1aecd5255e33c17428ad94a83dcc7010b73e7.
English verdict: APPROVE — the original-state reading slice is validated; installed rollout and incomplete historical captures remain explicitly bounded.
Problem and result
Independent retained runtimes can use the same native Goal id. Their real Tasks and research records must be accessible beneath one workspace parent, without substituting empty reading-only Goals or changing either source.
This adds an optional workspace routing id to the existing source link. TypeScript validates distinct views and projects status routing; native Task/run ids, history records, source namespaces and analysis ownership remain original. Linked research opens native history first, supports saved findings and complete completed-Task history, and keeps authored case reading optional. Local Goals and unaliased links retain their existing behavior.
Validation
Visual evidence
Packaged Chat with a real isolated backend and synthetic source Goals. Verified revision
7cf1aecd5255e33c17428ad94a83dcc7010b73e7; desktop 1200×854 and narrow 390×844. Real source tasks and records are shown in the normal workspace. Private case content is excluded.Boundaries
No source Goal/state rename or copied execution registration; no automatic model invocation, solver restart or write access through the source view. Existing completed-Task display projection is shared to preserve parity. Python remains the native CLI IO adapter; TypeScript owns the new presentation identity semantics. Installed App qualification follows merge/install.