Repository navigation
feat(explore): inherit machine exploration mode across Goals - #7392
Conversation
Signed-off-by: huangruiteng <huangrt01@163.com>
songoow
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; model=GPT-6 Astra Pro; provider=OpenAI; declaration_source=self_reported
详细中文评审
审查提交:e5a72a00c262857f0865f92daa120bf354d3d36c。实际合并基线:30ffb06b9ded2d08391ed8c58f05cc34db7d39bd。本评审基于完整 diff、相关调用链和独立执行的合成测试;发表前重新确认远端 head。
动机
本 PR 解决已有和新建 Goal 只能逐个配置 Explore 模式的问题:设备偏好提供 off/evidence/planning,Goal 显式模式及旧 enabled 字段保留优先级,清除覆盖后恢复实时继承。这个目标成立,读取时投影也避免了批量重写 Goal 注册表。
评审依据为本提交的 desktop-execution-frontends-v0 配置归属契约、Explore Machine default 契约,以及既有 canonical Todo 研究证据校验和 runtime source 路由契约。没有把配置启用或合成测试等同于真实模型采纳、任务收益或交付完成。
改动思路
保留当前总体设计:在已有 TypeScript Explore configuration owner 中解析有效模式,Python 负责机器配置 IO 与投影,机器命名空间沿用既有 preview/apply/revision 事务。机器只拥有 mode;profile、composition scope、spawn、lease、quota 和外部发布授权继续由各自边界管理。默认仍为 off,legacy false 保留显式覆盖语义。
需要补齐同一语义在生产决策入口和前端消费者中的使用。共享解析器只有被 canonical 完成校验、表单和全部相关调用者采用,才真正建立统一规则。本次问题主要是这些集成遗漏,当前修复边界应保持在 Explore 配置及其直接消费者内。
具体改动
| 变更面 | 已检查的主要实现与判断 |
|---|---|
| 有效配置与机器注册 | explore_configuration.ts、machine_defaults.py、effect_runtime_handlers.ts、machine configuration builtins;优先级、复制隔离及配置来源处理合理 |
| 设置与写入 | configuration catalog/UI、Goal API、configure-goal 及 CLI clear 参数;机器编辑器只暴露 mode,Goal 清除覆盖保留其他 spawn 设置,但稀疏覆盖值没有被既有前端正确消费 |
| 运行时消费者 | history/quota、turn context、branch planners、research evidence/frontier、composition frontier、material-refresh activation;已迁移的消费者能识别继承模式,但原生完成 guard 和一个 Todo 调用者遗漏 |
| 文档与验证 | 双语 RFC、双语 Explore 文档、三张设置截图、新增 Python/TS/API 用例;截图覆盖普通继承路径,未覆盖 profile-only 表单状态,既有作用域测试尚未同步 |
对主干的风险
F1 — [P1] 继承机器 planning 时,原生 canonical Todo 完成跳过研究结果校验
本次在 research_frontier.py:219 让 legacy completion 使用有效配置,但 ResearchTerminalEvidenceHost.qualify 仍只从原始 registry 读取 spawn_policy.explore_harness。Goal 只保留 composition_mode=explicit_only 和 composition_scope_id、mode 继承机器 planning 时,raw harness 没有 enabled;native guard 返回 required:false, allowed:true, evidence:null。
我在一次性真实 SQLite authority 上复用了 tests/control_plane/test_research_execution_authority.py::test_native_completion_refuses_missing_result_and_accepts_exact_observation 的研究任务和数据,仅改变 mode 的来源,执行实际完成函数并读取 canonical Todo:
| 同一缺少实验结果的任务 | Goal 显式 planning | 机器继承 planning |
|---|---|---|
| CLI frontier | scheduled=1, observed=0 | scheduled=1, observed=0 |
| 完成结果 | 拒绝:要求当前任务对应的 typed experiment observation | ok:true, completed:true, provider_status:applied |
| completion evidence | 必须具备;本次拒绝 | null |
| canonical Todo 状态 | open |
done |
因此这是实际持久状态正确性回归,不能用规划/展示端已统一配置来证明完成路径正确。最小修复是在 native terminal evidence owner 的 disabled early-return 前,按同一 source/runtime 读取并解析有效模式,复用现有 typed owner,保留 source revision 和图锁约束。补充显式/继承两种模式下缺少结果均拒绝、有效结果允许以及 replay 保留证据的真实后端用例。
F2 — [P2] profile-only Goal 覆盖使前端把继承 planning 显示并保存为 off
configuration_catalog.py:899 将 Explore 加入稀疏覆盖投影。有效的 Goal profile-only 配置现在返回 current={profile:"adaptive-resilient"},而 effective mode 为 planning/machine_default。既有 goal-capability-settings.tsx:100–111 优先取非空 current,再用产品默认值填补缺失字段,因而生成 mode:"off" 的表单。
通过实际 configure-goal/project_goal_configuration、生产 TS projectEditableCapabilityConfiguration 和写回处理函数复现:设备 planning + Goal 只有 profile → effective planning/machine_default;只改 profile 后保存 → off/goal_override。显式 mode-only 与 mode+profile 两个对照则保持正确。
修复应让表单显示真实 effective mode,并明确区分显示值与显式 mode 覆盖意图。仅把 effective 填入完整草稿,还可能在保存其他字段时将实时继承固定为当前值;可以复用相邻 cadence 编辑器区分 display/write intent 的方式。需要 profile-only、composition-only 和显式模式的往返测试。本复现执行了真实配置处理函数和生产 TS 字段投影器,没有声称运行浏览器交互。
F3 — [P2] Todo settlement plan 遗漏 runtime_root,混用其他运行目录的机器配置
project_settlement_attachment() 新增 runtime_root,quota 已传递,但 _todo_settlement_plan 仍只传 registry_path。新 _policy() 因而回退到 registry 声明的根目录,忽略调用者已经选定的显式 runtime root。
使用真实 Todo plan producer 和两个临时运行目录复现:registry root=off、selected root=planning 时错误省略 Explore attachment;两者反转时错误添加 attachment。计划中的 writeback 命令却正确指向 selected root,形成配置与命令目标不一致。这违反了既有 runtime route 的 explicit override 约定,也破坏本 PR 声明的隔离 runtime preference。
最小修复:在 _todo_settlement_plan 调用中传递 runtime_root=runtime_root,并在实际调用者层覆盖两个相反模式组合。
F4 — [P2] 已有作用域测试未随本次产品契约更新
四个聚焦配置测试模块共 85 passed / 2 failed。失败均为 tests/capabilities/test_capability_configuration_ui.py::test_capability_scope_matches_product_ownership 的两个 explore_harness 参数行:仍期望 ["goal"],当前结果为 ["machine", "goal"]。在准确合并基线运行同一作用域组,16 项全部通过。应按照本次已更新的配置归属契约同步预期,保留机器 mode-only、Goal-local profile/scope 及不支持作用域的拒绝断言。
我的整体评价
REQUEST_CHANGES。 功能目标和现有 owner 复用可以保留,但 F1 会在没有对应研究结果时真正完成 canonical Todo,应优先修复;F2、F3 分别导致错误配置写回和跨 runtime 配置混用。随后更新作用域测试。修复仍属于当前 PR 的完整功能切片,不需要扩展成无关框架或迁移。
| 独立执行的验证 | 结果 |
|---|---|
tests/capabilities/test_explore_machine_defaults.py + test_explore_turn_context.py |
49 passed |
tests/test_chat_machine_configuration_api.py、tests/test_chat_goal_configuration_api.py、tests/capabilities/test_capability_configuration_ui.py、tests/capabilities/test_machine_configuration_goal_defaults.py |
85 passed, 2 failed,失败见 F4 |
| 准确合并基线的 scope ownership 参数组 | 16 passed |
tests/control_plane_ts/explore_configuration.test.ts + explore_turn_context.test.ts |
两个测试文件通过 |
| 真实 SQLite 显式/继承完成对照 | F1 已复现,并读取到 open/done 差异 |
| 配置处理函数与生产 TS 表单投影往返 | F2 已复现 |
| 实际 Todo plan producer 的双 runtime 对照 | F3 已复现 |
验证输入均为一次性合成数据,未接触真实 Goal。未运行全库 CI、原生 Windows 或完整浏览器交互,不将作者报告的检查等同于本评审独立执行的证据。尚未复现的相邻锁/并发风险没有列为独立 finding。
评审工作流限制:本环境无法通过 GitHub CLI 完成 loopx pr-review 的元数据读取,未生成可用于 --check-result 的有效评审包,因此不声称自动评审包或结果校验通过。这里的保守 REQUEST_CHANGES 基于以上准确提交的源码和已执行证据;工作流缺口属于评审环境,不作为作者的代码缺陷,也不授予合并资格。
英文简短结论
English verdict: REQUEST_CHANGES — reviewed e5a72a00c262857f0865f92daa120bf354d3d36c. Machine-inherited planning allows a real SQLite canonical Todo to reach done without its required typed research result, while explicit Goal planning rejects the same input. Sparse Goal overrides also misinitialize the settings form, and Todo settlement plans omit the selected runtime root. Focused validation produced 49 passes plus 85 passes/2 new scope-test failures; the three behavioral counterexamples were independently reproduced. Preserve the current design and repair these integration gaps before merge.
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; gpt-6.1-sol; OpenAI; runtime_reported; reasoning_effort=max
Reviewed exact head: 92f739a565c8aa11d376df6636a4efde96d98616. Re-review of the complete PR after the four findings on e5a72a00c262857f0865f92daa120bf354d3d36c.
动机
希望在设备上统一选择探索模式、同时保留各 Goal 独立权限和覆盖值的用户。
用户把设备探索模式设为 planning 后,已有和新 Goal 应沿用该偏好,显式关闭的 Goal 仍保持关闭;修改其他字段不应偷偷固定模式,恢复沿用后应读回设备值。
174 项聚焦 Python 用例、39 项 typed 测试与真实页面保存回读通过,旧四项修复已有独立证据;但 refresh-state 的图更新仍忽略显式 runtime,两个相反配置都复现错误。
本 PR 不传播身份、派生权限、租约、配额或外部发布授权,也不证明模型采用、长期收益或已安装产品行为。
改动思路
设备模式属于可复用偏好,显式 Goal 模式与执行权限仍应由原 owner 管理;现有设置、typed resolver 与 canonical completion 可以承载此设计。
当前 PR 的边界是设备模式继承的完整用户路径及真实 runtime 消费者;需把 refresh-state 已选定的根传至图更新后置检查,不扩大到新执行权限。
设备只保存 mode 这一不可推导的用户偏好;有效模式是显式 Goal 值、设备值、默认 off 的派生投影,不能再保存一份需要同步的“有效模式”。Python 负责配置 IO/适配,TypeScript 继续拥有 mode/legacy flag 的语义。表单先展示有效值,只在用户真的修改模式时写入覆盖;profile 和 composition 的修改不构成模式授权。native completion 读取受锁保护的同一有效配置/研究图快照,随后仍由 canonical Todo transaction 校验 typed result、CAS 与 replay。这个完整路径比另建设置框架更小;复制 preset 也无法满足已有与新 Goal 的实时继承。
本次两种显式根输入的实际行为如下;表格只展示真实 CLI 结果,不是流程图或收益证明:
| registry 的模式 | 显式选定 runtime 的模式 | 应有 graph enabled | 当前 refresh-state |
|---|---|---|---|
| off | planning | true | false / disabled |
| planning | off | false | true / not_applicable |
两次 CLI 都 exit0 且 appended=true;这正说明写回成功不能代替后置语义一致。
具体改动
实际 merge-base 15803cd7dcc2fc517049809bbe58998f04f5acac 至 head 为40个文件、+747/-71,其中33条文本路径和7张PNG。完整检查了 typed resolver、Python消费者、设备/Goal目录与API、表单、native completion、材料写回、双语说明及截图;队列元数据中的额外 main 分歧不算进本 PR。
关键代码讲解
resolveExploreGoalConfiguration在同一 typed owner 中组合模式。显式 mode 或 legacy false 优先,只有 profile/composition 的稀疏对象不固定模式,默认仍为 off。resolve_explore_goal读取传入 runtime 的设备配置并投影副本,不重写 registry。此函数正确与否不能替调用方证明传进来的根就是本次选择的根。goalExploreWriteValue用临时 modeOverride 区分展示值与用户意图,支持 JSON/表单往返和恢复继承。真实页面只保存 profile 后,当前 Goal 没有 mode,回读仍为设备 planning;显式 off 清除后也读回 planning,spawn_allowed 仍为 false。sync_explore_graph_after_material_refresh新增设备模式解析,却在95行重新按 registry 选择根;refresh-state 调用方已经持有选定 runtime,未把它传到这里,形成新 F5。
规范依据为 docs/architecture/rfcs/desktop-execution-frontends-v0.md,spec_revision 15803cd7dcc2fc517049809bbe58998f04f5acac。该 RFC 自身在本 PR 成对修改,所以采用变更前的 ownership、一致性和继承恢复要求评判;原 Goal-only 模式拆成可复用偏好与本地绑定是本提案的明确行为变化,不能据新文案直接宣称所有消费者一致。
Settings ownership and scope:implemented。174 Python +39 TS; real device/Goal editor readback and seven committed captures.Catalog declarations, runtime resolution and the UI must agree:not_met。The accepted Goal-only scope is intentionally proposed to split reusable mode from local bindings; typed/UI scope does that, but refresh-state reads device mode from a different root than its explicitly selected runtime.Restoring inheritance:implemented。Actual browser profile-only save retains absent mode, JSON roundtrip and explicit-off override removal reads back planning.
旧四项分别保留结论:F1 native completion 的 machine-inherited 证据门已修复,旧 e5a 的同一测试在 File/SQLite 两次均出现 DID NOT RAISE,当前通过且覆盖精确 observation/CAS/replay;F2 稀疏 profile 的 mode 固定已修复,typed/API 用例与真实打包页面保存/JSON往返回读吻合;F3 Todo settlement plan 的显式根已修复,旧 head 两个相反根失败、当前通过;F4 scope matrix 的 Goal-only 重复行已改为设备仅 mode、Goal 完整字段,旧 head 两个 scope 断言失败、当前通过。旧审查记录不被抹去,也不能替代本 head 的整体判断。
对主干的风险
[P2 / F5] 材料写回后的图更新必须沿用显式选定 runtime。 activation.py:95–96 的路由调用没有 runtime_root_override。refresh-state 已经在显式根写回成功,后置 hook 却去 source registry 的设备设置读取 mode。两组相反模式通过未修改的真实 CLI 与一次性 File authority 均复现上表错误;probe 没有 mock 决策 hook。测试关闭外部 sink,图为空,所以不把结果扩大成实际外发、丢失 finding 或已发生执行。
最小修复:从 refresh-state 将已经确定的 runtime_root 传到 activation,并复用现有 route override;没有显式根时继续使用正常 source route。请在现有 tests/capabilities/test_explore_machine_defaults.py 加上两种真实 refresh-state 相反根场景,再重跑当前聚焦组;不能只再测 Todo settlement plan,也不能禁用 graph postcondition 来掩盖差异。
语义与 CI 对齐
现有 off/evidence/planning 词汇被复用,新增的是已注册的设备配置 envelope。关闭路径、legacy false、稀疏 profile、已有/新 Goal 与删除覆盖已作成对检查;但 selected-off 的材料写回仍不隔离,default_off_isolation 当前为 not_isolated。required-contract 文案从 Goal-only 改为设备或 Goal 选择是有意披露的激活条件变化;它没有授予 spawn/claim/lease/quota,native typed-result 要求仍是执行约束,不能称作可忽略的指导。没有新领域子串分类。
独立验证:174 Python passed、39 typed tests passed、control-plane typecheck 与 build:chat passed。premerge 的6项直接检查与19项自动检查通过;原始总结果保留 quality_stale_receipt 与7项图片人工 hold,七张PNG已逐一看像素/元数据,不能把原始运行改写为全绿。新的两个真实 CLI oracle 是失败,change-quality 因 F5 保持 FAIL。33条文本路径公开扫描通过。依 wait_for_ci=false 策略没有查询或等待 CI。没有把旧头的预期反例失败、测试启动时的配置错误或作者自报的更广测试结果冒充当前新缺陷。
我的整体评价
REQUEST_CHANGES。 设计规模与减少重复配置的需求相称,设置、typed resolver 和现有 mutation owner 的复用合理;无需新权限模型或扩展到其他 roadmap。兼容上应保留已存 legacy false 与显式模式意图,而不是为减代码抹去它们。long_horizon 仍为 regression:材料刷新与选择的设备状态不一致,会误报后续图交付姿态;user_experience 在真实配置保存与恢复路径上有已验证改善,但配置 UI 成功不足以资格化普通材料写回任务。
已检查真实后端打包页面的默认、展开与恢复状态,以及七张精确 head 中的公开截图;来源和配置范围可见,窄屏底部操作需在卡片内滚动。 未验证已安装桌面端、真实用户理解、模型采用或持续收益;窄屏展开 raw JSON 的完整可读性未资格化。截图不证明持久化,保存结论另由真实 API 回读支持。
页面验证使用当前源代码打包的 chat、生产 serve_chat 和真实 File store 的合成隔离数据,完成设备/Goal切换、profile保存、JSON往返、清除覆盖和状态回读;没有启动模型任务。默认页面把当前来源和主要输入置于卡片内,说明/原始JSON按需展开,窄屏通过卡片滚动到操作区;七张仓库截图的原作者证据来源另行保留,不能替代运行态回读。请修复 F5 并用两组真实消费者反例复审,当前不建议合并。
English verdict: REQUEST_CHANGES — reviewed 92f739a565c8aa11d376df6636a4efde96d98616. The four earlier fixes are independently supported, but material refresh still resolves device mode from the registry runtime instead of the explicitly selected runtime. Both opposite-root cases fail through the real CLI; carry the selected root into activation and cover both directions.
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent · gpt-6.1-sol · OpenAI · runtime_reported · reasoning_effort=max
动机
需要让多个现有及新建 Goal 沿用同一探索偏好的个人用户和维护者。
以前每个 Goal 都要分别设置探索模式,页面只改规划 Profile 还可能把继承值固化为关闭;现在设备只保存默认模式,Goal 可单独覆盖,清除覆盖后重新沿用当前设备值。
当前源码构建的页面已走通只改 Profile、显式关闭和恢复继承,并从真实隔离后端读回;显式选择运行时的刷新也使用该运行时的默认值。
本次评审确认提案的配置继承与执行边界,不认证已安装 App、Windows、真实模型长期收益,也不授予合并或自动执行权限。
改动思路
既有 TypeScript owner 决定模式,Python 只读取设备偏好并投影给现有调用方;配置写入、回滚和完成证据继续使用原 owner。
当前切片把设备默认、Goal 覆盖、页面回读和实际运行时消费接成一条路径;不继承 Profile、组合范围、派生权限或外部投递权限。
设备偏好是一项必须由用户表达的意图;当前生效模式及来源则可由设备值和 Goal 值计算,不需要把默认值复制进每个 Goal。沿用原配置预览、revision 比较、提交及回滚路径,使后续设备变更能被新旧 Goal 读取。若只批量改写 Goal,既会丢失继承关系,也增加以后逐个修正的成本。普通操作只需选择一次意图并完成原配置事务;导航、可选 JSON 检查与纠错不产生新的聊天确认轮次。
下表为 9b2de9385b93ecd6579a34c1849cc3c922f97ec2 源码推导的边界说明,不代替执行证据:
| 原始 Goal 模式 | 设备模式 | 生效结果 |
|---|---|---|
| 未填写,仅有 Profile | planning | 沿用设备 planning,Profile 仍归 Goal |
| 显式关闭,包括旧 enabled=false | planning | 保持关闭 |
| 清除覆盖 | planning | 重新沿用设备当前值 |
| 均未填写 | 未配置 | 保持 off |
具体改动
复审固定 9b2de9385b93ecd6579a34c1849cc3c922f97ec2,实际 merge-base 为 15803cd7dcc2fc517049809bbe58998f04f5acac;实际范围是 41 个文件、34 个文本文件与 7 张 PNG,文本 +811/-71。平台所列 79 个文件混入了分歧的主干历史,不能据此代替实际 diff。生产改动 26 个文件 +391/-63,六个测试/smoke +418/-6,其余为两份 RFC 文本和七张截图。最终 92f→9b 只修三处 +65/-1,本次仍检查整个提案。
依据变更前的 docs/architecture/rfcs/desktop-execution-frontends-v0.md,规范 revision 为 15803cd7dcc2fc517049809bbe58998f04f5acac:
Settings ownership and scope:implemented;设备只保存模式,Profile、组合范围和执行权限仍由 Goal 或原 owner 管理。Catalog declarations, runtime resolution and the UI must agree:implemented;目录、配置 schema、原 UI/API 与实际 CLI/native 消费者使用同一模式结果。旧规范确为 Goal-only,但允许 schema 与消费者一致后进行明确范围拆分;此次双语 RFC 改动是该提案的一部分,不能作为自身正确性的独立证明。Restoring inheritance:implemented;通过原配置写入路径移除覆盖,而非把当前设备值再写入 Goal。
关键代码讲解
- resolveExploreGoalConfiguration 用 enabled 属性是否存在决定 Goal 是否显式覆盖,false 也有效;单独的 Profile 不占据模式。模式关系继续由原 TypeScript owner 决定。
- resolve_explore_goal 从已选运行时读取设备值,仅投影该能力的小范围配置。新增 107 行模块承担 IO 及既有 typed effect 适配,不建立另一套 Python 规则,也不改写 registry。
- sync_explore_graph_after_material_refresh 接收原调用方的 runtime_root_override,交给既有 source route。独立 CLI 对照中,旧 92f 的两组相反模式都激活到错误结果;当前两组均正确,Run 留在已选运行时,registry 字节未变。旧/新环境分别记录 Python 3.14/3.12,不声称解释器完全相同。
- goalExploreEditorValue 将当前覆盖与生效值用于展示,另行记录真正的模式改动意图。实际页面只改 Profile 后,持久值没有 mode/enabled;切换关闭写入显式 false,恢复继承再移除原 Goal 配置。
对主干的风险
最高风险是把设备 planning 当作环境执行授权,或让 UI、终端完成及物料刷新分别解析出不同模式。当前 native 完成路径在早退前读取有效模式,并持有设备配置与图谱锁穿过事务;需要类型化结果的 Todo 仍拒绝缺失证据,observed/dismissed/deferred 及同操作重放由原证据 owner 处理。外部投递权限在生效投影前从显式原始配置取出,设备偏好不会开启派生、claim、lease、quota 或投递。
之前五项问题均逐项复核:继承模式不能绕过 native 类型化结果、稀疏 Profile 表单不固化关闭、Todo 结算读取已选运行时、目录与设备/Goal 范围一致、物料刷新遵循原 runtime override。独立运行 191 项集中与 44 项相邻 Python 测试、39 项 TypeScript 测试通过;配置 API、File/SQLite native 完成、失败/恢复与锁路径均在其中。源码构建的真实页面完成保存和纠错,并读回三个实际后端状态;没有用截图代替持久化证明。缺少 dashboard 依赖的首次构建失败保留,按 lockfile 安装原依赖后同一源码构建通过,未改产品断言。
默认关闭还通过原始 base 与当前 head 的三个实际 CLI 入口比较:未配置时仍 off,决策、拒绝原因和副作用边界保持;四个由临时路径派生的 route 摘要身份字段单独列明,planner 的 required_contract.note 有意增加设备模式入口说明。这是披露后的语义对照,不声称未经处理的整段 JSON 字节相等。当前/新建 Goal、同设备显式关闭、稀疏配置逃逸、清除恢复及有效证据后续完成均有独立用例。
语义与 CI 对齐
复用既有 off/evidence/planning 词汇,只为设备意图注册一个 mode-only namespace;没有按自然语言分类权限,也没有把强制证据称为可选建议。按当前 review policy,远端 CI 未查询、未轮询。
本地 required root Ruff 仍有三个 F811,位于未变的 tests/test_chat_conversation_bindings.py;真实 immutable base 与 head 的完整 stdout 字节相同。模块预算仍为 146>145,两边均 5 pass/1 fail,完整失败文本只排除 pytest 耗时后相同,测试、配置、模块集合和相关因果文件均未变。这两项判为 pre_existing_unrelated,绝不降低阈值或改称通过。改动范围 Ruff、原配置的 17 文件 mypy、TS typecheck、UI projector、bundle、diff、双语 RFC 和语义 advisory 通过。标准 premerge 的六个直接检查与 19 个选中检查通过,但严格质量回执 cqr_fe12f3888856f71867ce 仍 FAIL/invalid,整体 premerge 退出 1,并保留七张图片的人工门禁。
我的整体评价
对当前完整提案给出 APPROVE:有用的模式继承切片已在源码构建的 UI、真实后端与实际 CLI/native 消费路径连通,先前 F5 阻塞在当前头已由有失败灵敏度的对照验证解决。long_horizon 为 preserved:后续读取保持原意图、证据及事务恢复边界,没有宣称模型效果或总成本提升;user_experience 为 improved:默认只需配置一次,Goal 覆盖与纠错可从现有页面完成。
已查看原七张公开截图,并检查当前源码构建在 1200×888 与 390×844 的默认页、展开说明、下部操作和原始值。能力列表有重复长标签,Goal 名称中英混排;主值和生效来源保持可见,长说明与原始值按需展开,窄屏卡片内部滚动能到达下部操作。
未认证已安装桌面壳、Windows、全语言组合或辅助技术完整矩阵;公开截图原修复版本的 UI 在本次三文件运行时修复中未变化。
七张公开截图仍按原版本审视,本次三个运行时修复路径没有变动 UI;当前实际页面另行完成上述默认、展开、下部操作及恢复检查。窄屏原始 JSON 是可横向滚动的细节区,不要求默认页承载完整 schema 标识。新增 IO 适配和少量消费端连线成本与跨入口一致性问题相称,优先复用原 source route,未发现需要立即另建框架或 reviewer 改码的理由。
此结论不解除 required red/CQR/premerge 门禁,不撤销其他评审者的历史请求,也不执行合并。后续由各原门禁 owner 处理既有失败及评审收口,任何新 head 都需重新确认当前证据的适用性。
English verdict: APPROVE for 9b2de9385b93ecd6579a34c1849cc3c922f97ec2. The full mode-inheritance proposal and all five prior defects were independently rechecked. Required unchanged baseline failures, strict quality/premerge holds, other reviewers' decisions, and merge authority remain separate. Source-built behavior does not qualify installed hosts or long-horizon model benefit.
The merge-base changed after approval.
cocolord
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; model=GPT-family; provider=OpenAI; declaration_source=self_reported
REQUEST_CHANGES — 已确认一个 P2:模式门使用选定 runtime,真实材料图消费者却仍读取另一个 runtime 的证据与摘要。 审查 head 9b2de9385b93ecd6579a34c1849cc3c922f97ec2;当前实际 base/merge-base c6462f902a1c6a519eb4752b62637580f0e9cd35。这次是完整 79 文件、+1591/-206,不是旧评审的41文件范围;不继承此前被撤销的 APPROVE。
动机
需要让同一设备上多个现有及新建 Goal 沿用探索偏好的用户和维护者。
以前逐个配置 Goal;提案允许设备选择一次 planning,未显式选择模式的 Goal 实时沿用,显式关闭的 Goal 不受影响。
配置、覆盖、清除和回滚的真实读回已验证;但填入两套 runtime 的证据后,材料刷新仍读取了非选定 runtime 的图与摘要。
本 PR 不继承身份、Profile、组合范围、spawn、lease、quota 或外部发布权限,也不认证模型长期收益、已安装桌面端或其他宿主。
改动思路
现有配置事务和 TypeScript 模式 owner 足以承载此需求。设备 mode 是用户必须表达的偏好;有效模式及来源应从设备与原始 Goal 值派生,不能复制后要求逐 Goal 同步。Object.hasOwn 保留“未填写”与显式 false 的区别;仅有 Profile/组合范围不构成模式覆盖。未来同 runtime 的未覆盖 Goal 被明确纳入,显式关闭和其他 runtime 留在外面。preset 复制不能达到实时继承;另建服务、能力或 Python 策略则过重。
Profile 编辑先显示真实有效值,但只在模式确实被选择时写覆盖;清除通过原 preview/apply/readback 恢复继承。机器 namespace 只允许 mode,spawn/lease/quota/publication 不随偏好传播。原生研究完成仍需同一精确 typed result、source revision、图锁及事务证据,不能因继承 planning 而跳过。
完整diff另含原生私聊未完工作的一次续办、挂载读取器的导航修复、研究输入总量展示、拒绝错误注册表,以及社区文档。均纳入审查。续办复用原 typed planner、source/grant fences 和原 Session 队列;Python 仅解码报告/原生库存和适配 IO,不新增调度 owner。终态 Turn 不等于业务完成,但报告也不授予新权限。
具体改动
37个生产路径 +571/-90;16个测试/fixture +759/-12;8个文档 +261/-104;18张PNG。完整文本、测试、双语说明与全部PNG像素/元数据均检查;过滤后的41条不是审查范围。没有遗漏删除或lock路径。分组1/2实际并行;初批其余单元因队列/线程限额失败,由主评审在独立工作区完成,有实际跨组QA,不把preflight当审查。
关键代码讲解
resolveExploreGoalConfiguration将 legacy显式位、设备mode和off默认集中在已有typed owner,稀疏Profile不固定模式;machine_defaults.py是107行配置IO/复制隔离适配,并非第二模式策略。sync_explore_graph_after_material_refresh在96–100行按override读取正确设备模式,却没有将这个选择继续交给161–168行实际producer。见下方B1。goalExploreEditorValue/goalExploreWriteValue区分显示和写入意图;真实API/生产TS往返覆盖Profile-only、composition-only、显式off/evidence和清除恢复,设备后续变化不被普通字段保存固定。planUnfinishedWork在原owner检查精确私有source、原grant、稳定latest native inventory、停止/纠正/附件及一次预算;Python库存readback与dispatch重查为证据,不是第二权限规则。未知/后台/更新输入保持拒绝,crash采用原预留而非重复效果。
附带的 AppStewardEntry / PersonalGoalHome 保持同一个workspace和reader挂载;ChannelHeader 只移除重复来源标题,保留不同来源与read-only说明;ResearchProgress 显示总输入及缓存/未缓存子集,独立核对的全部请求是分母,不与session计数相加。read_delegation_facts 使用refusing loader,ENOTDIR/错误source profile不能伪装空注册表。README社区入口保留旧anchors与公开/私有边界,双语RFC成对更新。
spec_ref: docs/architecture/rfcs/desktop-execution-frontends-v0.md;spec_revision: c6462f902a1c6a519eb4752b62637580f0e9cd35。读取的是变更前Accepted契约;Goal-only→设备mode拆分是明确提案,改后的scope行不充当独立oracle。原生会话附带变化另对照同一revision的 docs/architecture/rfcs/app-conversation-and-async-inbox-v0.md,旧“completed不恢复”被明确披露为有界typed-intent扩展,而不是宣称默认字节相等。
| criterion_id | 当前处置与证据 |
|---|---|
| Settings ownership and scope | implemented:mode-only设备namespace,Profile/组合/身份/权限仍local;107配置/API、45独立typed场景组与真实恢复probe。 |
| Catalog declarations, runtime resolution and the UI must agree | not_met:目录/API/模式门一致,但实际材料图source/digest跨runtime,B1已复现。最小修复为贯通现有source route。 |
| Restoring inheritance | implemented:clear/remove/rollback真实回读;显式false优先,stale apply和旧rollback拒绝,清除后planning/machine_default。 |
| Packaged UI acceptance | deferred:API和projector/历史source-packaged图片有证据,当前会话whole viewport已运行;当前完整real-backend设置browser/installed App未认证,不能以mock或截图替代持久化。 |
| Execution frontend conformance | out_of_scope:不启动模型/新provider;attached/managed/其他宿主安装与外部connector完整资格不由设备偏好认证。 |
| Conversation source and grant | implemented:对照变更前会话契约的原owner/App/source/grant与no-unknown-effects边界;34 typed和13真实合成native/provider反例,group/attached/交办/附件/停止/未知库存不获新权限。 |
| Continuation replay and immutable prior result | implemented:预留/入队crash复用原Session和确定性work-1;旧Turn与已送达部分回复不改,未完成续办不能再落入另一retry,13原生案例实际读artifact/receipt。 |
| Reader continuity | deferred:当前源码真实viewport/reload/correction通过,pending discovery仍阻止queue;但当前remote upward-anchor失败未归因,source返回/installed资格不能由一个本地绿覆盖。 |
| Metric unit and scope | implemented:已读canonical docs/development/design.md 的计量窗口、单位、unknown不补零规则;本次只改读取展示,原source字段的total与cache子集并列,独立请求口径不混加,无scoring或生产freshness认证。 |
旧五项逐项复核
- F1:current native File/SQLite确已执行继承/显式planning、缺少/伪造/过期结果拒绝、精确observation允许、CAS/replay及deferred恢复;原终端guard不再仅读raw mode。54个case断言通过,但整个测试session退出1,见验证限制,不能写成全绿。
- F2:稀疏表单错误off/保存固定已由有效显示+modeOverride修复;生产TS→真实writer→独立readback与device后续变化有证据。图片不是持久化证明。
- F3:Todo settlement真实producer传selected runtime;相反两组模式下attachment和writeback目标一致。
- F4:scope矩阵已改machine+Goal,duplicate row移除,device-only mode/非法scope拒绝仍保留;当前配置测试通过。
- F5:旧的mode-gate错误已修正,原空图相反模式用例通过;但真实图source尚未修复,下方B1是更强、填充证据的反例,而非旧批准的继承。
对主干的风险
B1 — [P2,confidence 9/10] 选定runtime必须贯穿真实材料图读取,不能只修模式门
触发:registry runtime=off;显式 --runtime-root 所选runtime=planning;同Goal在两root分别填入 selected-evidence 与 other-runtime-evidence,另有真实、公开安全的材料fixture。未改决策hook,执行实际 refresh-state --suppress-external-sinks --no-global-sync。
| 真实路径 | 观察 |
|---|---|
| registry off / selected planning | exit0、appended=true、Run写到selected;enabled=true,但producer图含 other-runtime-evidence,不含 selected-evidence;其digest与CLI相同,仍回报satisfied=true。 |
| registry planning / selected off | hook正确disabled,其他root文件未变。 |
| 无override、同runtime planning | 图正确包含selected-evidence;digest与CLI一致。 |
原因:新 activation.py:96–100 的route只用于模式。其syncer调用仍只传registry;lark_explore_graph_syncer 把相同kwargs交给 sync_issue_fix_explore_on_material_change,后者的source guard和 project_issue_fix_explore_graph 重新按registry定位root,没有override。因此模式、Run与证据来源分别不同。现有两条修复测试只有空图,检查enabled/not_applicable/Run,无法识别此问题。 下游registry-only适配器是base既有实现;本PR新增的machine-enabled消费者进入它,却没有贯通选定route。这是新的runtime一致性承诺未闭合,不是把所有历史sink调用泛化成新缺陷。
最小修复:传既有override或已解析source route到预览/材料sync/图producer,包括canonical log/rollout读取;无override保持canonical source routing,保留独立sink授权门。扩展 tests/capabilities/test_explore_machine_defaults.py::test_refresh_state_uses_selected_runtime_for_graph_activation,让两root有不同真实证据,断言图内容与digest、排除其他root、其他root文件未变,并保留selected-off与同root正向对照。无需新capability、服务或第二Pythonpolicy。
这是已确认代码缺陷,影响本地证据、摘要及真假readback;没有演示外部发布、错误root写入或真实用户数据泄漏,不升级成猜测P1。原注册表/状态未改,机器planning没有赋予sink发布权限。
语义与 CI 对齐
复用off/evidence/planning与既有typed owners,false和absence绝不混淆。20个相同输入的base/head关闭projection观察全部字节相同,无normalization;合法无关namespace/discovery不激活,future同设备未覆盖Goal有意继承,explicitoff/其他root排除,clear/stale/remove/rollback经过真实owner。自动加载的project skill/autonomous references及typed turn-context源码hash相同,但这不证明installed host加载;disabled planner的 required_contract.note 有意改变机器或Goal激活说明,必须保留为披露的语义delta,不能删掉再声称完整prompt parity。材料B1跨source,scope隔离仍未闭合。
Planning提示与optional capture是建议;已安排研究Todo的精确typed-result完成校验是机器义务,忽略会拒绝完成。新unfinished_work是有界报告而非grant;generic quota/lease/claim义务未加入benchmark/product专用语言,没有新增领域子串分类。
独立执行:配置/API批107 pass;typed Explore相关39 pass(配置单测包含其中)、另45独立场景组与control-plane typecheck通过;native原生私聊13个完整counterfactual pass、34 typed会话case pass;实际当前conversation-activity浏览器pass,包含desktop/narrow、upward-reading、reload、未知回执/存储拒绝/中断纠错;双语RFC与diffcheck通过。18PNG均看像素/元数据。
如实保留失败:最初广native私聊批180秒timeout未认证,后来只运行 changed13矩阵而非重跑全套;native研究54case断言通过但sessionguard因隔离fixture HOME被另一probe建目录退出1,不是整session绿,也不作为PR代码bug。两个浏览器启动缺少包/误命名shell变量的失败保留;正确指定已核实资源后才实际执行一次scenario。当前UI仅source-dev+synthetic API/real SSE,不能推导production freshness、installed adoption或设置真实browser持久化。
按当前packet wait_for_ci=true 读取已有CI,没有轮询。module预算146>145在immutable base/head同command均1fail/6pass,完整normalized失败细节相同且因果paths/module集合不变,作为独立基线merge hold保留;checks/pytest/stage2c聚合门因前置失败/skipped退出,不冒充实际suite失败。build的upward-anchor断言失败仍未独立归因/排除间歇性,一个本地绿不足以消除;补充Ruff全root扫描也失败,不把它误称CI命令或全绿。未用无关红CI泛化拒绝;B1已独立决定当前代码结论,停止新的长soak/全套资格化。
我的整体评价
REQUEST_CHANGES。 设备偏好、读取时派生、现有typed配置owner、UI写意图与原事务复用有明确正价值且规模相称;其他实际79文件边界也逐一检查,不按标题删掉它们。bounded future-facing pass已应用于同一模式owner、稀疏editor与共享reader,剩余最有价值修复是现有source route贯通;不要求更大框架、迁移或作者改写无关代码。
long_horizon目前是regression:正确模式门/Run没有保证后续使用正确证据。user_experience是not_yet_proven:设置恢复有改善且会话纠错走通,但假成功图readback及未归因当前UI CI阻止整体认证。请先修B1并用填充双root证据回读,不靠更多空图smoke或元数据。保留native session失败、baseline/CI/manual图片/installed-host限制为各自门禁,不撤销旧评审、不提交/推送/改产品、不授予合并权限。
English verdict: REQUEST_CHANGES - 9b2de93. Full79-file rereview confirms a populated real material-refresh source mismatch: selected runtime mode and Run routing are correct, but the graph/digest comes from the registry runtime and is reported satisfied. Preserve the existing typed owners and pass the selected route into the real producer; retain selected-off/same-root controls. Focused native/typed/configuration and viewport evidence is recorded with failed setup/session and CI qualifications kept explicit; no merge or dismissal.
…-source-20261027 Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent · gpt-6.1-sol · OpenAI · runtime_reported · reasoning_effort=max
APPROVE — 714b4bb7fcd3d50f8eec35d858914a7101201dcb。 填充双 runtime 证据后,旧 B1 的错误图摘要在 File/SQLite 均可复现,当前 head 的四个正反对照通过。以下是完整提案的复审;旧评审、人工检查和合并权限分别保留。
动机
需要让同一设备上多个现有和新建 Goal 沿用探索偏好的用户与维护者。
以前逐个配置 Goal,修改规划 Profile 还可能意外固定模式;现在设备选择一次,未覆盖的 Goal 实时继承,显式关闭的 Goal 保持关闭,清除覆盖后恢复继承。
当前配置 API、生产表单投影、原生完成事务及填充证据的 refresh-state 已验证;选定 runtime 的模式、Run 与图摘要现在保持一致。
本提案不传播 Profile、研究范围、身份、spawn、lease、quota 或外部发布权限,不认证已安装 App、模型采用或长期净收益。这里的 runtime 指保存配置和运行证据的运行目录,选错来源会让成功回执描述错误的证据。
改动思路
保留已有 TypeScript 模式 owner、机器配置事务、Goal writer 和 source route。设备 mode 是不可推导的用户意图;有效模式及来源是派生值,无需复制到每个 Goal。Python 新增模块负责配置 IO 与现有 typed effect 的适配,不建立另一套模式策略。机器默认仍为 off;已有 legacy false 与显式 Goal 模式仍优先。
当前 PR 的边界是设备模式继承的完整配置与直接消费路径,包含原生完成校验和材料图来源;不新增服务、执行器或权限 owner。
只复制 preset 虽然更少改动,却不能实现已有与未来 Goal 的实时继承;另建同步状态则增加维护成本。现方案在原 owner 内连通 schema、编辑器与消费者,规模相称。只改 Profile 或组合字段时,显示生效模式而不写入 mode override;普通路径复用原预览、应用和读回,不增加聊天确认轮次。既有图锁和设备配置锁保护原生完成事务;图更新复用选定 source route,同步锁绑定相同配置,外发仍需原独立授权。
具体改动
本轮以实际 merge-base 47a525dcc8ca943c7e4ab39834c92e905892839c 审查完整 45 文件、+912/-82:28 个生产文件 +335/-61,6 个测试/smoke +500/-6,11 个文档或图片路径 +77/-15,包含七张 PNG。没有沿用旧 41 或 79 文件范围;已进入当前主干的其他工作不再计入本提案。
规范依据是变更前的 docs/architecture/rfcs/desktop-execution-frontends-v0.md,spec_revision 47a525dcc8ca943c7e4ab39834c92e905892839c,固定版本的设置归属合同。该合同原来明确 Goal-only,同时要求未来的偏好/绑定拆分同步修改 schema 与实际消费者。本 PR 成对修改 RFC 是明确的范围提案,不能用改后的文案证明自身正确。
- Settings ownership and scope:implemented。机器只保存 mode,Goal 保留 Profile、组合范围及其他绑定;真实 HTTP preview、stale apply 拒绝、apply/readback,以及 scope matrix 通过。
- Catalog declarations, runtime resolution and the UI must agree:implemented。目录、表单、CLI、native completion 和实际材料图消费使用同一模式/来源;本轮填充双目录的反例验证了原 B1 的修复。
- Restoring inheritance:implemented。清除通过原写入路径移除覆盖,其他 spawn 设置不变;稀疏字段保存及设备随后变更仍保留继承关系。
关键代码讲解
- resolveExploreGoalConfiguration 区分属性未填写与显式 false;只有 Profile/组合字段不构成模式覆盖,未配置仍回到 off。既有 off/evidence/planning 词汇被复用。
- resolve_explore_goal 读取所选 runtime 的设备偏好并返回副本。机器配置、移除和回滚继续使用既有 revision 事务,registry 不被批量改写。
- ResearchTerminalEvidenceHost.qualify 不再因 raw harness 缺少 enabled 而跳过继承 planning 的完成证据。snapshot host 持有配置锁与图锁直到事务释放,缺少/伪造/过期结果拒绝,精确 observation 和 replay 仍走原完成 owner。
- goalExploreWriteValue 将显示值与写入意图区分开;guided/JSON 往返只在 mode 确实显式选择时保存覆盖。
- project_issue_fix_explore_graph 复用原 source route,从选定 runtime 读取 result log 与 rollout。refresh-state → activation → sync adapter → producer 的 override 已贯通;缺省参数继续走 canonical 来源,singleflight 使用相同配置路径。
旧 F1–F4 的原生证据、稀疏表单、Todo settlement runtime 和 scope 修复均在当前源码及本轮测试中复核;F5 的模式门与本轮 B1 的真实图来源分别检查,不把模式正确等同于图内容正确。旧 9b2de9385b93ecd6579a34c1849cc3c922f97ec2 的 APPROVE 已被 DISMISSED,本轮重新判断,不继承该批准。
对主干的风险
最强反例是在 registry runtime=off、selected runtime=planning 时,向两处写入不同 node 和 rollout 事实,再执行真实 refresh-state。旧 head 仍成功写 Run,却给出另一处图的 digest;当前 head 与直接选定来源的独立图 oracle 一致,排除另一处证据且其文件字节不变。反向 selected-off 对照保持 disabled,不同步图或外发。相对 override、canonical source、已有同步锁和未获外发授权也有独立用例。
| 实际验证 | 结果 |
|---|---|
| 配置、HTTP API、表单往返、研究完成与锁/replay 聚焦组 | 184 passed |
| source runtime 与私有证据相邻组 | 15 passed |
| typed 配置、turn context、研究执行 | 31 passed |
| 同一填充 fixture 的旧 B1 head | 两条 planning/File、SQLite 的 digest 断言失败;两条 off 对照通过 |
| 当前 head 的相同四案例 | 四条通过;不是只有空图或 helper mock |
| root Ruff、配置的严格 mypy、control-plane typecheck、生产 editor smoke | PASS |
| 标准 premerge | 六项直接检查、19 项自动检查通过;原始整体仍为 manual_review_required,保留七张图片人工项 |
第一次独立 probe 因临时路径未规范化,在 canonical creation 的来源校验处失败;修正评审 harness 的路径与进程 temp 隔离后,两版本使用同一源码 fixture 重跑。该 setup 失败保留,不算产品缺陷,也不算 B1 反例通过。图片均看过像素和 PNG 结构,未发现私有材料;人工核验不改写自动 gate 的原始状态。
语义与 CI 对齐
原始 base 与当前 head 的三个真实关闭入口均保持 disabled、registry/state 不变。只排除四个由不同临时目录派生的 route 身份摘要;turn-context 的其余结构完全一致,两个 planner 只有 required_contract.note 有意从 Goal-only 更新为设备或 Goal 选择。该文案明确不授予 spawn、claim、lease、quota;没有删去模式门后宣称 prompt 字节相等,也没有证明模型理解或采用。
设备偏好覆盖同 runtime 的现有及未来未覆盖 Goal 是明确提案范围;同设备显式 off、其他 runtime、稀疏配置及清除恢复有反向验证。机器可用、namespace 被发现或配置页面被打开均不构成执行/外发授权。planning 建议仍是建议;研究任务的 typed-result 完成校验仍会拒绝无效完成,不称作可忽略 guidance。没有新增自然语言子串分类或领域专用 generic obligation。依当前 wait_for_ci=false,没有读取、轮询或等待远端 CI。
我的整体评价
完整提案的交付判断为 goal_achieved:设备模式继承、覆盖、恢复与直接运行时消费已连通,当前未发现阻断性 finding。long_horizon 为 preserved:实际图内容、失败恢复、typed completion 与 replay 保持原来源和权限,未把一次配置/测试通过推导为持续净收益;user_experience 为 improved:减少逐 Goal 重复设置,普通字段编辑不固定模式,纠错沿现有事务读回。
视觉证据复用 92f739a565c8aa11d376df6636a4efde96d98616 的真实隔离后端 source-packaged 设置旅程,并核对本次相关 editor、设置页、布局/本地化及七张图片未变。重新查看桌面/390px 默认页与原展开、下部操作 captures:有效来源和主值可见,说明按需展开,长能力列表保留,窄屏通过卡片滚动到操作区。当前 HTTP/typed writer 再次通过,图片本身不证明持久化。
未认证当前已安装桌面壳、其他宿主/Windows、完整辅助技术矩阵及窄屏原始 JSON 的全部排版;这些边界不被扩写成已通过。
有用切片已经落在原配置、source route 与完成 owner 内,新增 IO 适配和调用端连线成本相称;进一步大框架或语言迁移没有必要。保留 legacy 持久值和原 receipt 兼容;本轮合理整理是将同步锁和图 producer 绑定同一路由。repository experience 中“配置成功不代表后续有用结果”的提醒用于选择填充图反例,不继承其旧 verdict,也不声称 memory 已产生测得收益。
此 APPROVE 绑定本次 head;旧阻塞 review 是否撤销、GitHub 当前批准状态及合并资格仍须各自回读。本轮不执行 merge、安装或发布。
English verdict: APPROVE for 714b4bb. Populated File/SQLite counterfactuals verify the runtime-source repair; native completion and configuration paths pass, with historical failures, visual limits and merge gates retained.
按已要求的 resolved-review 收口,在当前 714b4bb 独立核验 F1–F4:继承 planning 的原生完成保持 typed-result 拒绝/精确结果/replay 和配置/图锁;稀疏 Profile/组合字段保存与 JSON 往返不固定模式;Todo settlement 使用 selected runtime;scope matrix 为机器 mode-only、Goal 完整字段。当前 184 项聚焦 Python、15 项相邻及31项typed检查通过。旧反例与讨论保留,实际修复证据见 #7392 (review) 。撤销该已解决的阻塞状态,原文保留;不认证安装、完整平台矩阵、远端CI或合并资格。
Explore mode is inherited live from the device by existing and future Goals; explicit Goal settings still win. This revision fixes material refresh reading graph evidence from a different runtime than the selected mode and Run.
设备模式默认仍为
off。机器只拥有 Explore mode;Profile、组合范围、身份、spawn、lease、quota 和外部发布权限继续由 Goal 及各自 owner 管理。仅编辑 Profile 或组合字段不会意外固定继承模式。当前修复
针对 本轮 B1 评审,将既有
runtime_root_override从材料刷新 activation 贯穿到同步预览、来源 guard、实际图 producer,以及对应配置的 singleflight 锁。Explore result log 与 rollout log 使用同一选定 runtime;未提供 override 时继续沿 canonical source registry 路由。之前:registry=off、selected=planning 时,模式和 Run 正确,但图与摘要来自另一套 runtime,仍可报告成功。
现在:图内容、rollout 事实和语义摘要均来自选定 runtime,另一套 runtime 文件保持不变。显式 selected-off 仍不读取或同步图;模式选择不授予外部发布权限。
原 F1–F5 修复继续保留:继承 planning 的 native completion 使用同一研究结果校验;稀疏设置保留显示值与写入意图;Todo settlement 与材料 activation 保留选定 runtime;scope 契约仍为设备 mode-only、Goal 完整配置。
本轮验证
代码 head:
714b4bb7fcd3d50f8eec35d858914a7101201dcb;已同步的目标 main / merge-base:47a525dcc8ca943c7e4ab39834c92e905892839c。sync_busy,不重复效果。loopx check的整体返回仍包含一个既有全局 Goal authority 诊断,未修改该状态,也未将它冒充代码扫描失败。manual_review_required,没有将其改写为全绿或合并就绪。本轮仅修复既有 IO 路由链,无新增 capability、服务、CLI 开关、持久权限或 Python 模式策略。相关整理复用已有 source-route owner,并将同步锁绑定到相同来源配置;无需另建抽象。
既有视觉证据
本轮未修改 UI。以下保留
92f739a565c8aa11d376df6636a4efde96d98616的 source-packaged 历史证据:同一合成后端下,稀疏 Goal 显示有效继承模式,Profile/JSON 保存不固定模式。它不认证本轮已安装 App、完整新包视觉验收或模型采用。原设备启用三张图片仍保留在 PR 的七图集合中;图片人工检查与自动文本扫描分别记账。