Repository navigation
feat(zcode): add host diagnostics and managed native Goal control - #5752
Conversation
Separate CLI, Desktop, bundled agent and source metadata. Use isolated bounded help/version probes and report observed interfaces without claiming native execution readiness. Read the installer-owned ZCode facade set from its own skills root. Reuse one renderer, preserve custom CLI invocations and installation repair precedence, and leave other host diagnostics unchanged. Signed-off-by: jackie-cqz <2557911191@qq.com>
Cover host identity, independent versions, relative paths, probe deadlines and output limits, facade conflicts and freshness, and Windows source-entry fixtures. Signed-off-by: jackie-cqz <2557911191@qq.com>
Signed-off-by: jackie-cqz <2557911191@qq.com>
…ostics Signed-off-by: jackie-cqz <2557911191@qq.com>
Bind an explicitly selected CLI session to existing Goal and registered Agent authority. Add model selection, native lifecycle operations, durable recovery, quota admission and revocation, and owned process cleanup through the CLI and Goal drawer. Keep the Skill facade as default. Native completion and unknown usage do not settle Core Goals or debit credits; Desktop attachment remains a separate stage. Signed-off-by: jackie-cqz <2557911191@qq.com>
Cover stale identity fences, quota denial and revocation, protocol and permission failures, lost receipts, durable empty-session binding and process ownership. Exercise the packaged Goal controls and contract-aware frontend freshness. Signed-off-by: jackie-cqz <2557911191@qq.com>
Document CLI and frontend activation, model selection, quota coordination, stop and recovery, legacy identity limits, and the bounded roadmap checkpoint. Signed-off-by: jackie-cqz <2557911191@qq.com>
…ostics Signed-off-by: jackie-cqz <2557911191@qq.com> # Conflicts: # loopx/chat_server.py
Keep legacy Skill activation available without advertising native operations for unregistered actors. Prove ordinary Chat project context cannot be injected into Goal control requests. Refresh registry I/O source locations after synchronizing main. Signed-off-by: jackie-cqz <2557911191@qq.com>
Add public synthetic desktop and mobile illustrations to the managed provider guide and include them in the package. The figures illustrate UI states and do not claim live execution or billing evidence. Signed-off-by: jackie-cqz <2557911191@qq.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=xhigh
Reviewed exact head: dc32655a7c81026157dc565b4c7ce38b07f6e82f; immutable base 42e55a809eb94f13443d303d76118735d4112182. 完整范围:45 个文件、+4405/-61,包含 provider、诊断/安装、CLI/HTTP、打包与界面、验证和文档。
动机
在已有 LoopX Goal 下使用 ZCode 的人,需要能明确绑定一个受托管的 CLI 会话,再启动、暂停、恢复、停止并核对它的状态。之前只有 skill 入口,用户无法从 Goal 详情控制这个独立会话;发生暂停或连接丢失后,也缺少一致的读回路径。本 PR 提议保留 skill 默认入口,增加显式绑定和同一目标的控制,让界面读回与 CLI 使用同一 provider。已验证的改善是打包界面可以完成模型选择与控制/异常恢复,协议层拒绝旧身份和越界响应;发现的缺陷是安装版本不匹配同时缺失 skill 时,恢复指引只修 skill,丢失真正的版本修复。原生模型调用费用、逐次调用硬预算、Desktop 附着和多 Agent 长程效益均未因此成立。真实已安装 ZCode 的恢复与长程净效率仍待独立核验,混合安装故障的恢复分支需要修复。
改动思路
spec_ref: docs/architecture/rfcs/loopx-overall-roadmap-v0.md; spec_revision: 42e55a809eb94f13443d303d76118735d4112182,按修改前的 S4、S5、S7、S8、S12 要求评估,有效 provider 是有界增量,不能用 PR 新写的 checkpoint 给自己认证。
S4:现有 Goal/注册 Agent、实例/创建凭据校验;独立 native session/target、串行操作、失去 broker 时终止自有进程树,unit/子进程负例通过,但本审查尚未独立复现作者所述真实已安装 ZCode 的恢复证据。S5:CLI 与 Goal 详情抽屉共用读回;打包浏览器覆盖绑定、模型/推理级别、quota 拒绝、旧 Goal 凭据、错误回执恢复和 Agent 切换,所替代的是 HTTP/provider fixture,不能证明真实提供方行为。S7:启动/恢复复用 Core quota;撤销后暂停、不把 native completion 当 LoopX 验收/扣费,未知 token 保持未知;逐调用预算/fleet 成本仍是剩余边界。S8:明确 opt-in、版本/权限、停止/卸载/恢复,provider 不增加一个平行 Core 决策 owner;真实入口/隔离证据仍须与声明对齐。S12:构建、打包来源与正常 skill 行为已核对,恢复顺序的混合失败反例未满足。
具体改动
Python zcode_goal_operation 校验权威身份,生成当前 heartbeat 任务并经同一解释器桥接 TypeScript;NativeGoalController 管理不可推导的绑定意图、目标、丢失开始回执和恢复,不重新定义 Core quota。ZCodeAppServer 对接 NDJSON 协议,验证 session/target/revision,拒绝交互权限,暂停后确认停止;guardian 把失去 broker 的取消传到自有进程树。ZCodeGoalControl 的操作集合由 provider 读回,修改 CLI 路径不隐藏暂停/停止,旧身份或未知操作结果要求先读回再操作。doctor 分开观察 CLI、Desktop、源码版本,仅 version/help;skill 检查复用 installer 的渲染,保护用户文件;构建指纹包含共享 provider 契约。
正向路径:打开 Goal 详情→已有注册 Agent→绑定 CLI(不启动模型)→必要时选已有模型/推理级别→显式启动→暂停/恢复同一目标→停止并读回断开。每个必需步骤提供身份、定位、模型选择或效果授权;无需另建 Goal/Agent。负向路径:同名 Goal 的创建凭据改变,旧面板 POST 被拒绝,零模型启动,刷新后才能继续;quota 撤销保持目标并暂停,不能仅凭 paused 绕过当前准入。
对主干的风险
阻断发现 [P2]:混合安装失败时丢失版本修复指引。 loopx/doctor.py:885–891 仅凭 repair_recommended 与坏 skill 覆盖 upgrade_command,1252–1257 又以 facade_problem 覆盖 fix。触发:release manifest 版本与运行包不一致(manifest_package_version_matches_runtime=false),同时 ZCode facades 缺失/过期。用相同合成事实在基线与 head 调用生产 collect_doctor(agent_type="zcode"):基线保留 install/upgrade 指引;head 仍报告 requires_upgrade=true,却只返回 slash-commands --install --surface zcode。该命令只修文本,不能修复包/manifest 不匹配,用户会多跑一轮甚至重复停在同一错误。最小修复:只有已确认“仅 skill 不新鲜”时使用 skill-only 修复;包/版本/运行时故障保留其 owner 的安装恢复,再追加 skill 修复。不要依赖总 status 或某个先出现的 reason 判断唯一原因。回归:在现有 test_zcode_doctor_skill_delivery.py 增加“版本不匹配 × 缺失/过期 facade”的组合,验证完整恢复和修复后读回。该反例无需模型/网络调用;基础设施用合成替身,生产诊断/恢复决策未替换。
另外,新增 test_probe_uses_disposable_storage_and_preserves_parent_environment 在 macOS 的 /var→/private/var 别名下失败。真实目录隔离并未因此失效;应规范化两侧路径/比较目录身份并保留原有隔离、环境不被修改、临时目录清理断言,勿直接删测试或放宽为任意目录。
本地验证:39 项 TS 协议/控制/guardian 测试通过;Python 新功能与 bundle 检查为 126 passed / 1 failed(上述路径断言);182 项既有 doctor/activation/installer 测试通过;TS 类型检查、chat 构建/校验、打包 zcode-goal 浏览器场景、全树语义 smoke 通过;独立混合恢复反例失败并在同一 base/head 比较定位到新覆盖分支。7 份默认 ZCode skill 内容在 base/head 字节相同,Codex activation 完全相同;ZCode activation 仅新增可用 provider 信息和明确默认仍是 skill 的说明,没有因此启动执行。新增词表属于 provider 状态/本地诊断,Core 资格/结算 owner 未替换。无 CI 拉取或等待。未独立完成真实已安装 ZCode 的完整恢复、live billing 或多 Goal 并发测量;作者声明不代替这些证据。
我的整体评价
REQUEST_CHANGES。交互和隔离方向有正向价值,但“可控且可恢复”需要同时覆盖普通路径和安装组合故障,当前遗漏会给后续升级/重试增加成本。长程净效率还不能判为已改善:每个活跃托管会话约每 2 秒启动权威/quota 子进程,一小时截止,缺少规模成本和真实有效产出测量。保留这个明确有界的 provider,先修具体恢复分支和 macOS 验证;无需顺便承诺 per-call 预算、Desktop 或 fleet。最近相关复用已检查:Core quota/身份保持原 owner,provider transport/state 需要自己的宿主边界;更小的纯 skill 文档改动无法交付这些控制。未来整理宜继续聚焦同一恢复 owner,避免另增一套“诊断成功”判断或新配置协议。修复后重新在变更 head 核验,不从此次 passing 项推导上层验收或合并授权。
English verdict: REQUEST_CHANGES — exact head dc32655; mixed package-version/skill failures replace required installation recovery with skill-only guidance. Protocol, packaged UI and legacy checks passed; one new macOS path assertion failed and real installed-host recovery/net-efficiency remain unverified.
|
This pull request has merge conflicts with Choose the remote for the base repository, not an out-of-date fork. 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 HEADFor a same-repository clone whose Keep the DCO |
…ostics Signed-off-by: jackie-cqz <2557911191@qq.com> # Conflicts: # apps/presentation/dashboard/src/data/chat.ts # loopx/semantics/project_registry_io_manifest_v1.json
Reuse the installation freshness owner without Skill admission to retain required package/runtime repair before ZCode facade repair. Cover mixed missing/stale Skill faults through real installer repair and complete readback, canonicalize macOS temporary paths, and qualify the added bridge tests with CI lint. Signed-off-by: jackie-cqz <2557911191@qq.com>
Replace the two provider matcher copies with the existing content digest owner and register the actual consumers. Use fileURLToPath in the unchanged static ownership check so Windows runs all original assertions, with no exceptions or relaxed matching. Signed-off-by: jackie-cqz <2557911191@qq.com>
Bind the HTTP acceptance fixture to its disposable runtime root and count persisted Turns by the existing schema owner instead of incidental JSON filenames. Retain exactly-one acceptance and dispatch assertions, and remove the unused import left by the upstream Todo module split. Signed-off-by: jackie-cqz <2557911191@qq.com>
|
修复已推送到
本轮验证:Python focused 55 + 75 + 82 项通过;ZCode TS 39、digest owner 17 项通过;完整类型检查、lint、Linux 目标 kernel mypy、semantic smoke、打包来源检查通过。浏览器 49 个场景中 48 通过(含 ZCode);1 个主干原样的 Windows 子进程 cleanup 断言失败。新 wheel 中 1,643 个 LoopX 文件与源码一致;真实已安装 CLI bind → stop → immediate status → cold bind 恢复同一 session,0 次模型调用。 PR 描述已将新 head 验证、旧 head quota/本地模型证据、平台失败和未测范围分开。仍然只交付有界 managed CLI provider;不新增 per-call hard budget、Desktop attachment、live billing 或 fleet/net-efficiency 完成声明。本轮 GitHub CI 已排队/运行,尚未确认全绿,请在此精确 head 重新 review;这不是合并批准。 Known review findings addressed; pending exact-head re-review and GitHub CI. |
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; gpt-6.1-sol; OpenAI; runtime_reported; reasoning_effort=xhigh
Reviewed exact head: 9588ccc345c4444427fe6acb1341d923771d81db; immutable base da45cfe771e96d20b9c5129a021a8c971ee03324. Whole PR: 48 files, +4512/-71. This is a fresh full-scope re-review, not a reuse of the old approval state.
动机
在已有 LoopX Goal 下使用 ZCode 的人,需要明确绑定一个受托管的 CLI 会话,再启动、暂停、恢复、停止并核对状态。 之前只有 skill 入口,用户无法从 Goal 详情控制这个独立会话;连接丢失后,也缺少保留同一会话的读回与恢复路径。 现在增加显式控制:打包界面通过模型选择与异常恢复检查,真实 CLI 和生产 HTTP 入口都在停止后恢复同一个空闲会话,旧 Goal 凭据与外部网页请求被拒绝。 这次验证没有运行付费模型;逐调用硬预算、Desktop 附着、live billing 和多 Agent 长程净收益仍未成立。 活跃模型的真实取消/恢复、规模化监测成本与持续有效产出仍待限定场景实测;当前交付是可停止、可冷恢复的单会话可选 provider。
改动思路
spec_ref: docs/architecture/rfcs/loopx-overall-roadmap-v0.md; spec_revision: da45cfe771e96d20b9c5129a021a8c971ee03324。用修改前 S4/S5/S7/S8/S12 的宿主监督、共享投影、准入/消耗区分、provider 生命周期与安装恢复来判断有界增量,不用 PR 自己新增的 checkpoint 认证自己。
Core 身份与 quota 保留唯一 owner,TypeScript 管理宿主状态/效果,Python 只桥接现有权威;同一会话的真实冷恢复证明了这层 provider 边界有用,纯 skill 文档无法交付这些控制。 当前 PR 保留一个明确 opt-in、可停止的单会话 provider 和既有 Goal 抽屉入口;不新增通用能力、默认执行或账户配置,活跃模型与 fleet 成本继续由现有 S4/S7/S8 验收持有。
最强反对理由是约 4.5k 行引入 broker、journal、guardian 与轮询成本,若只是给 skill 加说明会过大。但纯文档无法控制 native session,取消、恢复和旧身份拒绝必须跨真实 provider。这里复用 Core,新增状态只保存不能从注册关系推导的 session/target/已授权启动意图;没有额外通用配置框架。S4 中真实运行模型的取消/恢复,以及 S7/S8 的 live 成本和规模验收仍未完成,不能从空闲会话恢复推导它们。
具体改动
CLI/生产 HTTP 都经 Python bridge 读取现有 Goal、已注册 Agent、实例或创建凭据,然后进入同一 TypeScript controller。controller 串行管理模型选择、明确启动、暂停、停止和 durable intent;app-server 校验 session/target/revision,拒绝交互权限;guardian 在 broker 丢失时关掉自有进程树。Goal 抽屉共用契约和可用动作,未知结果先清空旧 snapshot,重新读回后再操作;不同 Agent 的迟到读回不污染当前选择。doctor 分开观察 CLI/Desktop/源码版本,用 installer 渲染判断 skill,不把版本/help 成功当完整运行资格。
相关 refactor 已在现有 owner 内完成:复用 canonical digest 正则,使用 fileURLToPath 保留跨平台路径身份,移除一个未使用导入;HTTP acceptance fixture 用 typed Turn schema 计数并指向自己的临时 runtime,未改变产品 Turn 规则。没有必要增加另一套状态分类或 freshness owner。
正向体验:打开已有 Goal→选已注册 Agent→绑定实际 CLI(不运行模型)→需要时选择已有模型/推理级别→明确启动→读回/暂停/恢复/停止。Agent 提供作用对象、CLI 路径提供宿主选择、启动提供效果授权,刷新为旧或未知结果提供当前权威;这些步骤没有重复创建 Goal/Agent。现有默认模型保留,模型修改是可选操作。
负向及恢复:生产 HTTP 的外部 Origin 返回 403,旧 Goal 实例凭据返回 409,均在 native launch 前;新鲜读回可继续绑定。实际 CLI 和 HTTP 分别完成 bind→stop→status→cold bind→stop,冷绑定恢复各自同一 session、无 target、保持 idle,模型目录为空时启动不可用,自有 owner 锁释放,registry 字节未改变。
对主干的风险
原审查 5426602303 的两项问题已逐项核验:组合故障恢复现在先保留包/manifest 版本修复,再追加 ZCode facade 修复。相同合成事实调用基线/head 的生产 doctor,当前 head 不再把 requires_upgrade=true 的包故障替换成 skill-only 指令;四个 missing/stale × version-mismatch 用例验证“只修 facade 仍不就绪、完整修复后就绪”。macOS 临时路径改为目录身份规范化,保留隔离、父环境未修改和临时目录清理断言,当前全部通过。原来的阻断不再适用于这个 head。
当前 exact-head 本地检查:131 个 touched Python 检查、182 个既有安装/doctor/activation 检查、56 个 TS 检查(含实际 owned-process 清理与共享 digest owner)通过;类型、构建/安装/来源校验、全树 semantic smoke、diff 检查通过。打包 desktop/mobile 场景通过:折叠时零探测、模型/推理级别、quota 拒绝、旧创建凭据、未知操作恢复、Agent 切换及 viewport 布局。它使用 stateful HTTP/provider fixture;另有生产 ChatHTTPServer+Core+真实官方 CLI 的独立 8 请求资格,不能混称为真实模型端到端。既有真实 HTTP acceptance retry 两个故障场景也通过。
真实宿主取自官方 ZCode macOS release,CLI 自报 0.16.9。全新隔离环境中直接调用 Desktop JS bundle 最初因其找不到 bundled provider config 而退出;同一 CLI 直接协议探测复现了这个 upstream 启动问题。显式提供该发布包已有的 provider config 后,CLI 与生产 HTTP 的空闲冷恢复通过。没有安装或修改用户账户、没有模型请求;这个边界应与通常已配置 CLI 的可运行环境区分。doctor 的 version/help 观察也不代表 app-server 一定可运行。
默认关闭核验:同一基线/head 的 7 份 managed facade 字节一致,Codex activation 一致;ZCode 只增加明确可选 provider 的信息与默认仍为 skill 的说明,collapsed panel 没有请求。没有默认启动、Automations、quota 结算或 native completion 转 Goal 验收。CI 按 capability 未拉取/等待;live billing、逐调用硬预算、Desktop 附着与多 Goal 长程净效率没有实测。
我的整体评价
APPROVE,限定为本次可选单会话 provider。恢复阻断已修复,真实宿主的会话留存/冷恢复和当前权限边界已独立验证;用户从“靠外部会话手动猜状态”进入“同一 Goal 内明确控制与读回”,升级组合错误也避免无效重试,局部体验和恢复效果是正向的。
效率采用明确有界取舍:每个活跃会话约两秒一次串行权威/quota 子进程、十秒检查超时、一小时执行安全截止、五分钟空闲退出;该成本仅在显式启用 provider 后产生,失败暂停、恢复不自动续跑。因此当前证据支持可控恢复的正向增量,不能支持 fleet 长程净效率已经提高。未来测量应沿现有 S4/S7/S8 做真实活跃模型与成本/有效产出资格,不增加推测性框架。已考虑同域 refactor 并复用 digest/诊断 owner;暂不扩大为 per-call budget 或 Desktop 控制。合并与通用无人值守验收是独立责任。
English verdict: APPROVE — exact head 9588ccc. The prior mixed-install recovery and macOS path blockers are resolved. Current protocol/process, packaged UI, legacy installation and real official idle CLI/production HTTP cold-session recovery pass. This approves the bounded opt-in provider, not active-model/fleet efficiency, live billing, Desktop attachment or autonomous merge authority.
…ostics Signed-off-by: jackie-cqz <2557911191@qq.com>
…ostics Signed-off-by: jackie-cqz <2557911191@qq.com>
Signed-off-by: jackie-cqz <2557911191@qq.com>
Signed-off-by: jackie-cqz <2557911191@qq.com>
Signed-off-by: jackie-cqz <2557911191@qq.com>
Signed-off-by: jackie-cqz <2557911191@qq.com>
Signed-off-by: jackie-cqz <2557911191@qq.com>
|
This pull request has merge conflicts with Choose the remote for the base repository, not an out-of-date fork. 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 HEADFor a same-repository clone whose Keep the DCO |
Signed-off-by: jackie-cqz <2557911191@qq.com>
|
Conflict sync completed on Validation: 103 focused storage-default and fallback-disposition tests passed on an isolated Linux checkout of this head; frontend TypeScript check passed; browser scenario sharding tests passed (2); registry manifest current (296 sites); Python syntax, F821 and diff checks passed. The native Windows exploratory run was interrupted after encountering fixture limitations (including WinError 1314 at symlink creation); it is not reported as passing validation. A complete installed wheel/sdist qualification was not rerun in this conflict-only pass. No runtime authority behavior was authored by resolution. CI and maintainer review remain required; this PR is not merged. |
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent · gpt-6.1-sol · OpenAI · runtime_reported · xhigh
动机
需要把已注册 ZCode Agent 绑定到当前 Goal、选择模型并控制托管 CLI 的操作者。原路径只有 skill facade,缺少既有 Goal 内的托管 Session 控制和同一 journal 的重载读回;宿主诊断也没有把版本发现与接口资格清楚分开。新增有明确目标的绑定、模型选择、启动/暂停/恢复/停止及真实状态读回;原生完成不完成 Core Todo,未知用量保持未知。不把 Desktop、MCP/hooks、Automations、逐次模型硬限额、真实付费模型、安装态或多 Agent fleet 效果纳入当前资格。原浏览器验证的 locale 阻塞仍需修复;真实 Windows、安装态、计费和长期运行仍是独立验收。对已经注册的 ZCode Agent,改动前仅通过 facade 自行维护会话;改动后在当前 Goal 内绑定、选择模型、启动,并沿同一 journal 重载读回。这份改动的有用结果是本地用户能在当前 Goal 内控制一个明确的 native 会话,并在失败或重载后看到真实状态;Session 存在、测试数量或 native completed 都不能代替业务完成。
改动思路
既有 Core 继续拥有 Goal/Agent、配额、权限和任务完成;TS provider controller 只拥有精确 Session/target 与 journal,Python 负责宿主/CLI transport 和 canonical adapter。当前批次是可独立回滚的托管 CLI 控制、诊断和既有 Goal drawer 旅程;原 required browser smoke 未通过,所以本轮不批准。最强反对理由是为一个可选宿主扩张公共 doctor/process/installer 和前端范围,可能让未启用的人承担行为变化、误把 provider 状态当 Core 权限。保留 facade 不足以实现明确要求的托管控制,但再建一个 Goal/配额 owner 也无必要;当前方案复用原 authority 与 effect IO,native IO、状态机、投影和诊断分开。绑定与启动分别授权不同效果,模型选择是实际启动的必要前提,不是额外重复确认;失败后留有“回读状态”恢复,不要求用户重复创建 Goal。
具体改动
当前完整 head 072a1a940271a37a401df2d1644cfddbea63e583,冻结基线 83c2d8fb473954faa9568baf9e1a17eebf749148。依据变更前 docs/development/frontend-delivery.md 的 Task-first delivery / 从用户任务开始,以及同版 docs/development/design.md 的 Earn The User's Attention。具体映射:Compare the journey 保留当前 Goal/已注册 Agent,绑定、选择模型、启动并读回;Choose the owner and composition 复用 Core/TS owner 和已有详情入口;Implement and challenge 的持久恢复原验证未满足,见阻塞;Walk the actual product 本轮已用当前打包 UI/真实后端跑通明确 locale 下的失败到恢复;Deliver and read back 仅资格化源码构建及真实 journal,安装和 fleet 验收分开。新 README/roadmap 是待审行为声明,不自行证明原验收已关闭。
完整 95 文件 +6428/-309,包括托管 native provider、doctor/宿主版本探针、共享进程与 skill 安装支撑、既有 CLI/HTTP/状态接线、Goal drawer/data/i18n/CSS、包资源/typecheck/census、双语使用与截图,以及持久恢复、共享关态、Core 旧测试语义和浏览器分片/coverage 合并。不是只审最后一个 locator。
关键代码讲解
validate_zcode_binding:56从 canonical 注册身份与宿主 profile 判定 eligibility,核对 Goal instance/creation witness;UI 只消费zcode_goal_eligible_agent_ids,不从昵称、任务 claimant 或 Session 发现猜权限。CLI 与 HTTP 使用同一 bridge;远端只读、旧/未知绑定和错 Agent 不会获得启动操作。NativeGoalController:66串行管理一个 native Session/target,启动前 journalstart_pending和 canonical objective digest;重载只能收养已 journal 且 objective 匹配的目标并先确认暂停。启动/续跑读 Core quota,运行中撤销暂停;clear 后单独读回不再 running,Core Todo 保持 open。app-server.ts只适配有界 NDJSON native IO,未知 provider exception 不把任意原文带到公共错误。ZCodeGoalControl:12在已有 Goal drawer 以 canonical eligible IDs 提供显式控制,折叠时不探测 native。ZCodeAgentControl:33在 Goal/Agent 切换时丢弃过期请求,失败后撤销旧 snapshot、禁用写操作并要求读回;编辑 CLI 路径不自动换宿主。绑定不执行模型,使用已配置模型与启动分开,未知配额/用量不显示零或完成。collect_zcode_host_diagnostics:321把 CLI/Desktop/source 发现、版本和 advertised/not_advertised/unverified 分开,未把版本命令当 MCP、插件或 Desktop 操作资格。run_capped_process、hosts/skill_facade.py和SkillFacadeReadbackStatus支撑有界进程、原文件 ownership/readback;通用机制不另建 provider 专用 authority。诊断和 skill 数据不激活 native Goal。- workflow/浏览器改动加入持久恢复 smoke、完整 scenario 分片及 disjoint coverage merge;重复/缺失分片会拒绝。旧 fixture 对 canonical default、claim/lease、output-budget、scheduler receipt、history 和 context-delivery 的调整保留原 owner 语义,不能把变绿当权限扩大。包包含 TS/contract/使用图片;IO census 只是注册既有 codec 调用位置,README/roadmap 明确不关闭 G1/fleet。
对主干的风险
本轮相对上次 f2d09b0 的完整 base/head 矩阵有 82 路径两端字节相同、13 路径变化;13 项完整重读,涵盖主干移动后的 frontend 资格投影、i18n、工作区模型、roadmap、browser fixture/typed-actions、installed source capture、census 和 package/typecheck。没有把字节相同当 consumer 兼容性证明:当前 head 重新执行 164 项 provider/doctor/bridge/process Python、1081 项共享路径 Python、60 native TS、4 browser helper、typecheck、打包构建与 source verify。
共享测试另有 3 项 scheduler-ack 失败:冻结主干独立重跑同三项,也在同一 ACK 阶段得到 rrule_mismatch,host observation 为空,appended/registry mutation 均为 false;保留完整 receipt,没有把不同临时 fixture 的 effect identity 当成相同。第一个测试的改动调整 stale receipt 的顺序,但双方新的合法 ACK 同样缺 host observation;其余两项函数字节相同。native premerge 5 direct 通过,19 selected 中 18 通过、Goal frontier 的 maintainability ratchet 失败;同一冻结主干独立复现,相关 owner 源码未改。不将这些基线问题算作本 PR 新阻塞,也不宣称 required checks 全绿。
本轮同脚本完整 12 场景 shared-off 对照 doctor、status、activation、installer 的 JSON/Markdown/持久哈希、turn-plan 和 process 正常/超限/超时,两端输出完全相同。只固定/归一化已声明的观察时间、耗时及 interpreter/source/fixture 位置,保留全部键、类型、错误文本、权限/配额状态和 durable hash。首次复用非空私有 fixture 目录失败,保留失败并重建同一干净 fixture 后完成对照;不是选一次绿值抹去差异。
当前阻断发现
[P2] 为持久恢复验证固定语言环境或使用与语言无关的定位。 examples/zcode-persistent-browser-smoke.mjs:29 创建 fresh Page 未设置 locale,:36 却只查找中文“概览”,随后又依赖“Goal 信息”等中文。本轮运行未改动的 node examples/zcode-persistent-browser-smoke.mjs:真实页面显示 English Overview,30 秒 timeout,尚未走到 native 控制断言。该命令已被加入 required browser workflow,因此默认英文环境无法验证本 PR 核心的持久恢复。最低修复是显式 locale: "zh-CN",或稳定的语义/标识定位,然后让原命令通过;不能只用中文开发会话或页面 route mock 作通过证明。
独立诊断副本仅加 zh-CN(及私有文件搬移所需路径重定位),当前打包 UI → 实际 Chat HTTP → Python bridge → TS controller/Core SQLite/journal 全程通过:错误 CLI 拒绝且保留 draft,合法绑定、选择模型、启动、重载、暂停、恢复、停止、再重载使用同一 Session/journal,vendor 已停止,Core Todo 仍 open。仅 vendor NDJSON 被替换,没有路由拦截或 fake API owner。这证明有用路径已存在,不能证明原 smoke 已修。当前 Ego 还核对 1512 桌面与 390 窄屏的实际失败状态;390/390 无横向溢出,失败后仅回读可用,未绑定任何真实 vendor。原 NameError/重复 import 的历史阻塞未复现,源文件及本轮相关调用验证相符。
语义与 CI 对齐
发展期 advisory 的 6 个 vocabulary carrier 已逐项核对:既有 bundle source 集合扩展、skill readback 的局部类型,以及 provider-owned identity/native-status/diagnostic 类型;不是新增 Core Goal 生命周期。完整 semantic check 通过。native status/liveness 来自 readGoal,usage unknown 和 native/Core 完成边界保留;没有 substring runtime gate,也没有将机器准入写成可忽略 guidance。界面原始 binding_missing/部分英文诊断可进一步转为 owner 语言,是非阻断整理;真实 Windows、付费模型、安装态和长期恢复不由 source test 数量认证。未查询或等待 CI。
我的整体评价
REQUEST_CHANGES,当前阻断为原持久浏览器 smoke 的可复现 locale 问题。架构与已验证产品路径的有界增量成立:long_horizon 的同一 journal/身份/配额撤销与重载读回已在真实 owner 上观察,user_experience 有已有 Goal 内的明确控制及失败读回,仍不能把 native completed 当业务完成。95 文件体量大但包含同一 provider 从 transport 到现有 UI/包/验证的完整阶段,不能用一个 CLI 文件替代这条旅程;也不为本批强加所有 fleet/RFC 项。相邻整理已将 skill facade、native IO、typed lifecycle 和 projection 分到各自 owner;更广通用 provider 重构不在本批引入。原浏览器验证的 locale 阻塞仍需修复;真实 Windows、安装态、计费和长期运行仍是独立验收。保持旧评审讨论与未解决发现,修好原命令后按完整当前 head 再核验。
English verdict: REQUEST_CHANGES - 072a1a9; the unmodified required persistent-browser smoke times out in its fresh English context before native controls because it hardcodes Chinese locators. Current locale-only real-owner recovery, 12-case shared-off parity, 1245 Python/60 TS and 4 helper tests pass; 3 quota-test failures and one ratchet failure were independently reproduced on the frozen baseline, not relabeled passes.
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; gpt-6.1-sol; OpenAI; runtime_reported; xhigh.
REQUEST_CHANGES — exact head dbe902bbc004af90ebfff354e7990c9eb78a6bf5。
动机
需要为既有 Goal 操作 ZCode 原生会话的用户 此前只能通过 Skill 入口衔接;现在可绑定一个已注册 Agent 的会话,选择模型、启停并在刷新后恢复同一状态。 固定中文的诊断验证了同一持久会话、journal 和实际停止;原验收命令仍因语言不匹配而失败,尚不能作为可重复的交付验收。 仅管理显式绑定的本地 CLI 会话,不交付 Desktop 会话附着、真实计费或整个团队验收。
原浏览器命令须固定语言后重跑;实际 Windows、付费模型、Desktop 附着、逐次调用硬预算和多 Agent 长期效果仍未验证。
改动思路
入口沿用 CLI 和现有 Goal 详情抽屉,身份、注册关系和配额仍由 Core 决定;TypeScript provider 管理 vendor 会话、进程和持久 journal。绑定、选择模型和启动是分别显式的操作,诊断与 Skill 修复不启动模型。正确路径是绑定已有 actor、运行、刷新回读、暂停/恢复、停止后再次回读。冷恢复必须回到原 session/target,配额撤销会暂停目标;无法确认持久化或遇到错实例时拒绝续跑。这使真实工作能接续,也保留权限与错误状态。
具体改动
覆盖完整 95 文件、+6428/-309:原生 TS provider/guardian/app-server、Python bridge/diagnostics 和 CLI/API、Skill installer/doctor/process 公共路径、Goal 抽屉/数据/i18n/CSS、打包 manifest、双语使用边界、CI 分片/coverage 和相应回归。本次重新核验自己此前完整评审的 82 个 base/head 文件字节对;13 个变化对已重读,运行当前共享消费者,而未继承旧 verdict。
bridge.py:56 validate_zcode_binding复用实际 Goal/Agent/creation witness;原先只衔接 Skill,现在绑定前拒绝错实例、替代身份和不兼容 host。runtime.ts:66 NativeGoalController新增同一 journal 的显式生命周期;失败持久化、冷导入和丢 start 回复都走原 owner,不能从 native completed 推导 Core 完成。zcode-goal-control.tsx:33 ZCodeAgentControl在原抽屉消费 eligible 注册 actor,关闭时不探测,移除 actor 时丢弃旧 pending 状态,修改 CLI 路径须重新绑定。
冻结 docs/development/frontend-delivery.md 于 2e3ab4c4a5665378b9e422f9483a820066fca40b 的 Task-first delivery (4):实际打包产品、真实拥有状态及恢复反例已经执行;所声明的原生验收入口仍缺可重复性。[P2 blocker] examples/zcode-persistent-browser-smoke.mjs:29 未固定语言,open() 第36行却查中文“概览”,默认英文新上下文在30秒超时,尚未进入恢复检查。 保留后端、全部原断言和 vendor 协议 fixture,只加中文初始化后,刷新保持同一 session/journal,实际 stop 清除 vendor target,Core Todo 仍 open。请修复原脚本,再跑原命令;诊断副本的成功不能代替它。
对主干的风险
当前 1245 项 Python 通过,3 项 ACK 失败在独立 immutable base 的相同3案例重现;60 项 TS、typecheck、打包 build/verify 和语义 advisory 通过。19 项风险检查实际执行,原 canary 有两处失败:模块 metric debt 在 base 同样失败;quota JSON 在原 canary 隔离环境为15657/15500,base 的同一 runner 也重现,直接运行 base/head 均为15489。保留这些失败,没有扩大上限或压缩义务文案,不能称 canary 全绿。
12 个 shared-off 场景按相同输入比较完整 JSON、Markdown、状态摘要,全部一致;仅规整观察时钟/成本和 fixture/源码/解释器位置。普通 host 的准入、Skill、配额、调度与持久作用未变化;ZCode-specific availability 和显式控制是已披露增量。native 状态协议、diagnostic/installer 分类由各 typed/local owner 拥有,无 substring 分类或第二份 Core 权威。真实 API/bridge/journal 已测;vendor NDJSON 是替代协议,Windows、付费调用、真实用量和舰队吞吐未测。按当前策略没有查询或等待 CI。
我的整体评价
交付判断为 not_yet_proven:固定中文的诊断验证了同一持久会话、journal 和实际停止;原验收命令仍因语言不匹配而失败,尚不能作为可重复的交付验收。 体验的正向部分是刷新、暂停、恢复和停止能沿同一持久对象接续,减少重建和错误结算;目前只有受控流程证据,尚不能量化长期效果或算力节省。当前拒绝合并的 PR 缺口是新验收入口仍失败;独立主干已存在的 canary/ACK 问题另保留,不转嫁为此 PR 的新增故障。
同一实际 HTTP 场景还验证:绑定后新注册的 compatible peer 不继承会话,注册的 codex-only peer 被拒绝,改写实例的 start 在执行前409;恢复后仍能完成原任务控制。
未来改动的有界整理已检查:provider 请求/状态留在自己的模块,公共 transport 与 Core 判断复用,暂不抽象更宽的 host 框架。
English verdict: REQUEST_CHANGES - dbe902b: the unmodified new recovery smoke still times out in its default English context before Chinese-only selectors. A locale-only counterfactual completes the same real owner; 1245 Python and60 TS passed, with3 independently reproduced baseline ACK failures and preserved canary holds. Native Windows/paid-model/fleet outcomes remain unqualified.
Signed-off-by: jackie-cqz <2557911191@qq.com>
|
The reproducible acceptance-entry gap is repaired on The runner used Chinese accessible labels while leaving Playwright's browser locale unspecified. The workspace now follows browser language, so an English environment could fail before the native journey. The shipped runner now explicitly creates its browser page with After rebuilding the packaged frontend (typecheck and both builds passed), the documented command The reviewer's compatible-peer non-inheritance, codex-only rejection and changed-instance pre-execution 409 observations remain independent review evidence; this bounded locale repair did not rerun or broaden those claims. Long-term performance or compute savings remain unquantified. Independent main canary/ACK concerns are not relabeled as new PR failures. This fixes the stated new acceptance-entry blocker, but does not self-certify merge readiness; CI and maintainer exact-head review remain required. |
|
This pull request has merge conflicts with Choose the remote for the base repository, not an out-of-date fork. 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 HEADFor a same-repository clone whose Keep the DCO |
Signed-off-by: jackie-cqz <2557911191@qq.com>
|
Conflict sync published on The workflow resolution keeps the new pytest timing plugin and the existing six-shard matrix, split count and coverage aggregation consistently. The settlement test retains upstream's isolated Host observation and stale receipt assertions before fresh Turn recovery. Existing ZCode locale/recovery repairs are retained. No new provider or authority behavior was authored by resolution. Exact-head validation: 548 focused Linux tests passed (workflow contracts and public CLI stale-Heartbeat settlement); registry manifest current (296 sites); changed-test F821, browser runner syntax and diff checks passed. Full packaged/provider qualification was not repeated for this workflow/test-only conflict. New CI and maintainer review remain required; the PR is not merged. |
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; gpt-6.1-sol; OpenAI; runtime_reported; xhigh.
APPROVE — exact head 1332a1d980e64d27d6a8ed885c1a39b6986cfcf0,认可有界的托管 CLI 增量。
动机
需要为既有 Goal 操作 ZCode 原生会话的用户。此前主要通过 Skill 衔接;现在可绑定已注册 Agent 的会话,选模型后启停,并在刷新后读回同一对象。原始打包界面命令已完成绑定、启动、刷新、暂停、恢复和停止;会话及持久日志保持一致,停止后原任务仍未完成。仅交付显式绑定的本地 CLI 控制;不交付 Desktop 会话附着、真实计费或整个团队验收。Windows、真实模型用量、逐次调用硬预算和多 Agent 长期业务收益尚未验证。
改动思路
Keep common authority in Core and native lifecycle in its TS provider; explicit existing drawer operation. 身份、注册关系和配额继续从原控制面读取;TypeScript provider 管理一个原生会话、目标和持久日志。Python 转交请求和诊断,界面消费同一状态。绑定、选择模型和启动各自提供新的配置或执行决定;刷新不要求重新输入已知会话。关闭的控件不探测原生宿主,元数据可用不等于激活。
判断框架为变更前 docs/development/frontend-delivery.md,固定于 60d833b13c85135587b725013b247e827663ffb9。Compare the journey:既有 Goal 概览→Goal 信息→原生控制,修正 CLI 后选择已配置模型并启动,必要步骤分别确立 actor、宿主和执行选择。Walk the actual product:使用当前打包产品、生产 HTTP/SQLite/Python/TS 及持久日志运行原验收命令,并实际验证失败纠正和刷新。路线中相关宿主/准入/恢复边界按本次有界能力判断,未把整个多 Agent 路线当作已交付。
具体改动
完整 95 文件、+6433/-291,覆盖 TS provider/app-server/guardian、Python bridge/diagnostics/CLI/API、doctor/Skill/process 公共路径、现有 Goal 抽屉及数据/i18n/CSS、打包资源、使用文档、CI 分片/coverage 与回归。对自己上一轮完整评审的 81 个 base/head 文件字节对重新核对;14 个变化对重读。旧结果的规则、消费者、依赖和平台假设分别检查,当前测试与界面重新运行,未继承旧 verdict。
bridge.py:56 validate_zcode_binding读取真实来源、已注册 actor、Goal 实例及创建见证,不创建替代身份;同一 Goal 的不兼容 actor 被拒绝,新兼容 actor 保持未绑定。runtime.ts:66 NativeGoalController在同一日志内串行处理操作。冷恢复暂停原目标,丢 start 回复只接续已记录的匹配目标;持久化失败或准入撤销不能放任执行。stop 先确认暂停再清目标,vendor completed 不会完成 Core 任务或记账。zcode-goal-control.tsx:33 ZCodeAgentControl读取当前绑定,出错后重新回读再操作,保留用户修正路径,身份切换取消旧请求;不会从控件状态伪造执行结果。
上一轮的实际阻塞已修复:原脚本现在明确选择 zh-CN 并断言页面语言,同一未修改命令能完成所有原断言;不再用语言修正的诊断副本代替验收。工作流保留现有 pytest timing 插件,六个 Python 分片和三个浏览器分片仍要求完整并集和缺片失败;较宽的 idle 清理测试期限服从现有 5 秒 locator 锁等待,新增合法争用负例,未改变生产 idle 策略或移除写者隔离要求。
对主干的风险
当前源码 Python 3.14.8:842 项 provider/宿主/process/workflow/turn/handoff 加 407 项共享消费者,共 1249 passed;仅保留预期的重复 ZIP 警告。上一轮三个 ACK 用例在当前原生产规则下通过,测试明确提供宿主观察,并继续拒绝过期回执。47 项 TS provider/进程树与分片合并检查、control-plane typecheck、打包 build/verify、语义 advisory 均通过。原生 canary 当前 5 direct / 19 selected 全通过,严格 exact-scope quality receipt 有效。
12 个 ordinary/shared-off 场景,在相同输入下比较完整 JSON、用户文案和持久状态摘要,与上述 immutable base 全量一致;只规整已声明的观察时钟/成本和源码、解释器、fixture 位置。实际 HTTP 另外验证:新兼容 actor 不继承绑定、不兼容同容器 peer 拒绝、改变实例的 start 在副作用前返回409;缺失 CLI 纠正后实际完成绑定、选模型、启停。原界面刷新保留 session/journal,stop 后 vendor 已停止、target 清空,Core Todo 仍 open,原 registry/Goal 字节未改。
当前编译界面也在完整桌面及390px视口检查了目标、归属、未知用量和停止后的不可用状态,未见横向溢出。界面与 API、控制器、SQLite 都是生产代码,vendor NDJSON 协议端是隔离替身;这些证据不能推广为真实付费模型、原生 Windows、生产数据排序新鲜度或长期舰队吞吐。初次 build 因未装 dashboard 依赖失败,保留该 setup 记录;按锁文件安装后原 build 通过,未修改源码。当前策略 wait_for_ci=false,没有查询或等待 CI。
语义候选逐项归属:资源闭集属于现有打包 owner,Skill facade 状态复用原共享枚举,原生 Goal 状态/身份及 probe/interface 状态留在明确的 provider typed/local 契约;无第二份 Python Core 决策权威或以 substring 判定业务分类。普通指令未压缩,显式宿主说明保留模型准入、停止与结算边界。新 host 控制是公开说明的增量。
我的整体评价
当前 useful operator slice 已可独立验收,上轮 locale 阻塞解决,批准这次 head。长程体验预期正向:失败后修正原绑定,刷新、暂停和恢复接续原对象,降低重复创建、身份漂移和错误结算成本。效率有流程证据——刷新不重建会话、停止无需重建任务;但 supervisor/日志和周期性权限检查也有成本,未测得 token、时延或业务产出的净收益,不能直接称总体效率已提高。
最强反面是能力只覆盖显式 managed CLI,未知原生用量、环境依赖和运行监督成本仍存在;独立接受的有界宿主/恢复旅程解释这个阶段边界。后续保持已有平台、用量与长期协作验收开放。未来整理已审视:provider 请求和状态已从通用 transport 分开,共同 authority 继续复用;保留真实持久兼容,不引入更宽的宿主框架。当前评审批准不等于合并授权或整个 Goal 已完成。
English verdict: APPROVE - 1332a1d: the unmodified packaged recovery smoke now passes; same-session/journal continuation and actual stop preserve canonical open work.1249 Python,47 typed tests,12 full shared-off comparisons and5 direct/19 selected canaries passed. Vendor NDJSON is substituted; native Windows, paid-model utility and net long-run efficiency remain unqualified.
|
This pull request has merge conflicts with Choose the remote for the base repository, not an out-of-date fork. 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 HEADFor a same-repository clone whose Keep the DCO |
Signed-off-by: huangruiteng <huangrt01@163.com> # Conflicts: # loopx/semantics/project_registry_io_manifest_v1.json # tests/architecture/test_source_session_registry_denial.py
Signed-off-by: jackie-cqz <2557911191@qq.com>
|
CI admission repair published on On the preceding head, The tests now explicitly require six distinct shared admission groups and exercise absent/empty coverage for every partition, including 5 and 6. Workflow runtime, concurrency policy and coverage floor are unchanged. No new contract or abstraction is needed for this bounded fixture correction. Exact-head Linux validation passed the production CI command |
huangruiteng
left a comment
There was a problem hiding this comment.
Approval conclusion (maintainer review)
Reviewer: model_agent (self_reported); model=DeepSeek V4 Flash; provider=DeepSeek.
评审 #5752 feat(zcode): add host diagnostics and managed native Goal control
Review exact head: 47f233d5e262273440544fd0b73505785df98a5f;PR base main:b77f63495f2619237380755178c0780ae10a0f26(此前评审 head 1332a1d980)。
动机
一个想在 LoopX 里用 ZCode 作为受管原生 Goal 宿主的操作者会遇到这个问题:在此之前 ZCode 只能通过 LoopX Skill facade 进入,缺少机器支撑的原生 Goal 控制;本 PR 之后,CLI 与 Goal 详情抽屉可以操作并回读一个归属于该 Goal 的原生会话,包含模型选择、start/pause/resume/stop 与状态回读,并接入既有 Core 配额准入;配额被收回会暂停该目标并拒绝恢复,直到准入恢复且调用者显式 resume。边界:Desktop 会话挂载、MCP/Hooks/plugins、Automations、实时 provider 计费与按模型调用硬预算都不在本切片内;原生用量未知,原生完成不结算 LoopX Goal、也不扣减额度。
改动思路
ZCode 适配沿用既有 loopx/*_goal_mode 放置方式,Python 只适配既有注册表、Goal 生命周期、配额与路由 owner,TypeScript runtime 拥有原生生命周期,前端消费其回读。本 PR 只交付显式 CLI 会话这一受限切片,Skill facade 仍可用、原生执行仍是显式 opt-in。loopx/zcode_goal_mode/bridge.py 只做适配:validate_zcode_binding 用既有 agent_registry、Goal 生命周期与 exact-instance/creation-witness 在产生任何原生副作用前拒绝替换、未注册与异 host 绑定;cli.ts/runtime.ts 用 CAS 与自有进程守护实现原生持久化、丢失 start 回执与恢复;guard.ts 隔离命令;diagnostics.py 复用既有 doctor/installer 归属做有界探测与 Skill 修复;前端在既有 Goal 抽屉内消费 provider 回读,provider 专属校验/请求被移出通用 Chat data。
具体改动
96 文件 +6434/−284(相对当前 main)。新增宿主:loopx/zcode_goal_mode/{bridge.py,api.py,contract.ts,contract.json,app-server.ts,runtime.ts,guard.ts,cli.ts,diagnostics.py,README.md} 与 loopx/hosts/skill_facade.py、loopx/cli_commands/zcode_goal.py;前端 apps/presentation/dashboard/src/data/zcode-goal.ts、.../zcode-goal-control.tsx 与既有 context-drawer.tsx/dashboard-page.tsx;CI 侧 scripts/ci/merge-dashboard-coverage.mjs、.github/workflows/python-tests.yml 与 test_review_gate.py;以及 28 个测试文件与浏览器/持久化夹具。
本 head 含 maintainer 的 sync merge(9e1a361f4d)与作者在其上的一个跟进提交(47f233d5e2,仅对齐 scripts/ci/test_review_gate.py 的六分片)。合并冲突有两个:tests/architecture/test_source_session_registry_denial.py(main 把单文件例外扩展为 named_readers 多文件集合,PR 引入 METADATA_READER_FUNCTIONS + source_session_recreation 的 location-only 断言;我合并为在 PR 的 helper/结构上并入 main 的 chat_server/chat_status_api/new_goal_storage_transport/goal_amendment_api 例外)与生成文件 loopx/semantics/project_registry_io_manifest_v1.json(用生成器在以并集为 previous 的合并树上重新生成,304 sites / 0 unclassified)。
对主干的风险
最危险的反例有三类。第一类是绕过归属直接控制原生目标:绑定在产生副作用前就要求 exact Goal instance、creation witness 与已注册 actor,异 host 与 legacy alias 被拒;关闭的控件不发原生状态探测,移除时丢弃待处理回执。第二类是配额与生命周期不一致:Core 收回准入 → 暂停 → 拒绝 resume → 准入恢复 → 仅显式同目标 resume,cli.ts/runtime.ts 用 CAS 串行化,隔离真实 CLI 冷恢复已覆盖。第三类是诊断放大权限:diagnostics.py 只做有界、隔离的版本/help 探测,不执行模型、不认证身份、不改写未归属的 Skill。
已知局限与我的处置:验证使用合成/隔离夹具(合成历史、临时 File/SQLite、真实 loopback HTTP),不证明线上 provider 计费、已安装 App 或 fleet 效率,PR 已如实申报。本机 macOS 上 test_crowded_turn_plan_budget_preserves_executable_vision_authoring[True] 失败(21238 > 18000),但在未修改的 main 上以完全相同的签名复现(main 的 Linux CI 为绿),属平台相关的既有观察,非本 PR 引入;因此按既有失败归类为非阻断。语义 advisory 提示 6 处新增闭集词表(ZCode identity scope / native goal status / diagnostics 状态 / SkillFacadeReadbackStatus / bundle 源文件),均为 provider-local 或既有回读状态,未新增平行控制面 owner。
我的整体评价
这个切片值得合并:它把 ZCode 从「只能走 Skill facade」推进到「显式受管原生 Goal 会话」,并用既有注册表/生命周期/配额/路由 owner 做适配,TypeScript runtime 拥有原生生命周期,前端在既有抽屉内完成操作与回读;失败关闭(异 host、替换、未注册、配额收回)都有负例覆盖,边界如实(原生用量未知、不结算 Goal、不扣额度、不主张线上计费)。它体量很大、跨 Python/TypeScript/前端/CI,属最难审的一类 PR,这也是它经历多轮 review 的原因;但当前 head 的冲突解决只触及一个测试的例外集合与生成账本,且已有相当完整的正负例与真实后端证据。无阻断项。
English verdict: APPROVE - head 47f233d: the ZCode host adapter adds explicit managed native Goal control bound to an existing Goal and registered Agent, with exact-instance/creation-witness refusal before any native effect, CAS-backed lifecycle and cold recovery, Core quota admission -> pause -> denied resume -> restored admission -> explicit resume, host diagnostics that do not execute models or certify auth, and a packaged drawer consuming the provider readback; my sync merge combined the source-session placement test with main's named-reader set and regenerated the registry-I/O census (304 sites, 0 unclassified), and the head passes the ZCode Python (132) and TypeScript (43) suites, the 28-file changed Python surface (1248 passed; one macOS-local budget failure reproduces identically on unmodified main), the census/denial tests, Ruff, mypy and the 19-check premerge gate.
Maintainer merge recordMerged at exact head Changed surfaces
Merge resolution. Two conflicts: Checks run at this head
Failures / skips / holds
Coverage sufficiency. The native path is additive and explicit opt-in, the |
Goal And Delivered Outcome
ZCode previously entered through the LoopX Skill facade without machine-backed native Goal control. This adds an explicit managed CLI session bound to an existing LoopX Goal and registered Agent, with model selection, start/pause/resume/stop, status readback and Core quota admission/revocation.
mainis the intended base. No issue or RFC milestone is closed.Author Declaration
loopx/zcode_goal_mode/README.md, existing Goal/registered actor/quota contracts,docs/development/frontend-delivery.md,docs/development/design.mdand S4/S5/S7/S8/S12 in the overall roadmap.main(f710acb1d) is included. The provider's TypeScript runtime owns native lifecycle; Python adapts existing canonical authority, and the frontend consumes its readback. No parallel quota or Goal decision owner is added.bridge.py, existing registry and routing ownersruntime.ts,app-server.ts,guard.tscli.ts,runtime.tsdiagnostics.py, doctor/installer ownersScope And Continuation
Managed CLI scope only; the existing ZCode Skill facade remains available and native execution remains explicit opt-in. Desktop conversation attachment, MCP/Hooks/plugins, Automations, live provider billing, per-model-call hard budgets and fleet efficiency remain outside this slice. Native usage is unknown; native completion does not settle a LoopX Goal or debit credits. Exact instance identifiers and existing creation witnesses are fenced; legacy aliases without either cannot distinguish identical deletion/recreation.
The CI repair follows the current canonical contracts. Synthetic histories explicitly opt into the existing completed-Todo cadence instead of relying on the new effective-Turn default. Causal waiting acquires a lease before installing a pending dependency, applies successor planning with that proof, and uses the narrow owner-deferral transition to atomically retire the lease. Exact Todo reads preserve full requirements and reject
--thin. History reduction remains tolerant while authoritative status fails closed on malformed settlement evidence. Explore's scoped hook body is already delivered by the typed context owner; source commands are provenance, and redundant or retargeted tool execution remains rejected. Windows lock-holder metadata is distinguished from committed journal/run records. No product permissions, quota limits or admission rules are weakened by these fixture corrections.The future-facing pass moves provider-only frontend validation/requests out of generic Chat data, preserving one provider vocabulary and the existing request transport. The source observation seam reuses existing bounded/cached canonical reads; eligibility adds zero source reads or native probes. Broader host composition is deferred until a real caller needs it.
Validation
Current candidate:
fa943bf1b49125c03b54bbc6e0237887d4ec2d2d, including mainf710acb1d7ecfe12cd82bbb8514bdc91c190499f.Latest lease-settlement and ambiguous-disposition cold-import qualification merged without conflicts. Exact-head checks: all 18 cold-source disposition end-to-end tests passed, zero skips, using isolated synthetic state; changed-source advisory, full semantic drift and diff checks passed. No runtime/permission change was authored by this sync. The bounded future-facing pass reuses existing cold-import/disposition ownership with no added abstraction.
Remote comparison confirms
behind_by=0; new CI and maintainer review remain required. Previous headacd9080efpassed 79 Python/33 typed tests and the packaged real HTTP/File/SQLite import/recovery journey after explicitly qualifying interpreter source provenance. Those remain prior-head results, not fresh complete platform/UI qualification on this candidate. Failed setup observations remain recorded in earlier comments; no benchmark/model job was launched.Prior CI-repair qualification
Prior CI-repair candidate:
1f308bbdf974ca652eba2e7d22c3b9c5b37cea32, including main89505091fe52d318112aaaefb85f97e61cf11b33.The last published head
3bce41ae0had six obsolete-contract Python failures, two Windows runtime-retirement deadline failures, a Dashboard 15-minute timeout, and two Python 45-minute timeouts. Python shard 2 actually passed 4,725 tests before its artifact upload was cancelled. These are distinct failure causes; cancelled jobs are not passes.checks,dashboard-acceptance,pytestand the final coverage artifact names remain stable.Remote CI is running for the current exact head. The owning acceptance is reliable complete qualification (S2/S10 validation boundary); no roadmap checkpoint is closed from local passes alone. The related refactor consolidates browser coverage merging and canonical relative paths; no product lifecycle, quota, admission or permission owner changes.
Retained prior qualification
Candidate head:
3bce41ae082d06a2a0f093aed22e5d545da72250, including main44931b6d22a50b949d43354e6ea498fb6b68d231.The previous exact head
082a097c1executed Python shards 1 and 2 and failed obsolete fixture assumptions; shards 3 and 4 were cancelled. TypeScript, real PostgreSQL, packaged browser, static, dashboard and Windows jobs passed on that earlier head. Those results are retained as prior evidence, not a green result for this candidate.Prior feature qualification remains available: the packaged frontend's 49 scenes plus real HTTP storage/recovery, native CLI cold recovery, quota withdrawal/pause/denied-resume/restored-admission/explicit-resume, and the original matched 96-workload presentation checks. Live billing, Desktop conversation attachment and per-model-call hard budgets remain unqualified and out of scope. No benchmark/model job or external notification was launched by this CI repair.
Remote CI and independent review must qualify the published head. This control-plane/provider PR remains for maintainer review and merge.