Skip to content

feat(zcode): add host diagnostics and managed native Goal control - #5752

Open
jackie-cqz wants to merge 107 commits into
loopx-project:mainfrom
jackie-cqz:feat/zcode-host-diagnostics
Open

jackie-cqz wants to merge 107 commits into
loopx-project:mainfrom
jackie-cqz:feat/zcode-host-diagnostics

Conversation

@jackie-cqz

@jackie-cqz jackie-cqz commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

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.

  • Outcome basis: the bounded host integration request; main is the intended base. No issue or RFC milestone is closed.
  • Before → after: the existing Goal detail drawer and CLI can operate and read back one owned native session. Quota withdrawal pauses that target and denies resume until admission returns and the caller explicitly resumes.
  • The drawer consumes the binding owner's host eligibility: explicit other-host Agents are excluded, mixed Goals select a compatible Agent, and undeclared advisory hosts retain explicit binding compatibility. Closed controls make no native status probes; removal discards pending receipts.
  • Separate diagnostics observe CLI, Desktop/bundled CLI and source checkout versions/help, and installer-owned Skill delivery. They do not execute models or certify authentication.

Author Declaration

  • Written by: model_agent — OpenAI Codex (GPT-6 family), under human operator direction.
  • Implemented against the request and scope above, the operating guide in loopx/zcode_goal_mode/README.md, existing Goal/registered actor/quota contracts, docs/development/frontend-delivery.md, docs/development/design.md and S4/S5/S7/S8/S12 in the overall roadmap.
  • Current 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.
Criterion Disposition Owning boundary Decisive evidence
Existing Goal and registered actor, no implicit registration implemented bridge.py, existing registry and routing owners Exact-instance/creation-witness, replacement, registration and foreign-host refusal before native effects
Explicit same-session lifecycle and recovery implemented runtime.ts, app-server.ts, guard.ts Native persistence, lost-start receipt, CAS, permission and owned-process cases; isolated real CLI cold recovery
Core quota admission/revocation implemented cli.ts, runtime.ts Actual synthetic Core withdrawal → pause → denied resume → restored admission → explicit same-target resume → stop
CLI and packaged frontend operation/readback implemented existing Goal drawer, provider API/CLI Host filtering, unavailable recovery, model/quotas, stale Agent and removed-Agent responses; actual Chat HTTP and owning binding parity
Host diagnostics and safe Skill repair implemented diagnostics.py, doctor/installer owners Isolated bounded probes, ownership/conflict and mixed-installation repair precedence

Scope 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 main f710acb1d7ecfe12cd82bbb8514bdc91c190499f.

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 head acd9080ef passed 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 main 89505091fe52d318112aaaefb85f97e61cf11b33.

The last published head 3bce41ae0 had 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.

  • Linux: the four failing contract suites reproduced six failures / 91 passes before repair and now pass all 97 tests. Exact Todo exports preserve private-continuation filtering; clearing the successor claim still denies settlement; local paths remain rejected; machine cadence matches the existing effective-Turn default.
  • Windows Node 24.21 / Python 3.13: all 72 runtime integration tests passed. After moving the deadline start to the first response, the 23 idle/configuration/drain cases passed again. Locator retirement may legally wait up to 5 seconds for the existing mutation lock; the test now allows 6 seconds and adds real contention proving the locator writer fence, eventual retirement and replacement process. This is test-budget alignment, not a proven explanation of the intermittent CI failure or a runtime-policy change. Full Windows qualification on CI's Python 3.11 remains required; local full-selection runs retain long-path and interpreter-launcher limitations.
  • ZCode after synchronizing main: 124 Python tests, 39 TypeScript native Goal/app-server/guard tests and control-plane typecheck passed.
  • Dashboard: all 49 real Chromium development scenarios passed across 17/16/16 scenario shards; scenario totals were 302.8/242.9/211.8 seconds. Real browser source coverage merged successfully. Four focused partition/coverage tests passed on Windows and Linux, including missing/duplicate shard rejection and independent coverage-output creation.
  • CI workflow contracts: 550 passed, including real pytest-split + xdist in six independent checkouts, each synthetic test once, complete portable coverage, and failure when any required coverage artifact is absent. Python's 45-minute and browser's 15-minute limits and the coverage floor are unchanged. Required checks, dashboard-acceptance, pytest and the final coverage artifact names remain stable.
  • Ruff, changed-diff semantic advisory, full semantic drift smoke, JavaScript syntax and diff checks passed. New partition/receipt metadata is local CI validation state, not a shared product vocabulary.

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 main 44931b6d22a50b949d43354e6ea498fb6b68d231.

The previous exact head 082a097c1 executed 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.

  • CI failures reproduced against the unmodified Linux candidate baseline: 21 failures / 56 passes. The corrected nine files plus the Turn executor returned 157 passes / two causal-fixture failures; after completing the narrow owner-deferral setup, all 13 causal-wait/quota-spend tests passed with real File and SQLite providers.
  • Prior TypeScript ZCode/native lifecycle, guard, app-server, Todo context, frontier and manager-return contracts: 63 passes, no skips.
  • Prior full CI Ruff inputs, 19-file Linux-target mypy, TypeScript typecheck, changed-diff advisory, full-tree semantic smoke and checked-in registry I/O census passed.
  • Prior Windows Turn executor, runtime archive/concurrency, quota-spend and registry-census qualification: 105 passes, no skips. Long Windows paths use an extended-length disposable test root and isolated runtime temp directory; no OS setting or product behavior is changed. Earlier short-root path failures and one transient runtime-info permission failure remain failed evidence; the isolated retry and complete rerun passed. Exact-head Linux CLI/provider/host/budget integration: 466 passed / three dependency-setup failures in the initial 469-test run. After installing the lockfile-pinned npm dev dependencies in the disposable checkout, all seven registry-census tests passed; the three setup failures are covered without a source change. This includes actual File/SQLite entrypoints, archive races, retirement fences, original-message result-file verification and the repaired CI cases.

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.

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 loopx-agent left a comment

Copy link
Copy Markdown
Collaborator

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; 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.

@mergify

mergify Bot commented Oct 6, 2026

Copy link
Copy Markdown

This pull request has merge conflicts with main and cannot be merged
until they are resolved. Please rebase or merge the base branch, @jackie-cqz.

Choose the remote for the base repository, not an out-of-date fork.
For a fork clone, first inspect git remote -v; upstream must point
to https://github.com/loopx-project/loopx.git. If it is absent, add it
with git remote add upstream https://github.com/loopx-project/loopx.git.
Then run:

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 HEAD

For a same-repository clone whose origin points to
https://github.com/loopx-project/loopx.git, use origin instead of
upstream for fetch/rebase. If you prefer merging the base, use
git merge <base-remote>/main and push normally.

Keep the DCO Signed-off-by trailer on every commit when you rebase.
https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork

@mergify mergify Bot added the needs-rebase Mergify: the pull request has merge conflicts with its base branch label Oct 6, 2026
…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>
@jackie-cqz

Copy link
Copy Markdown
Contributor Author

修复已推送到 9588ccc345c4444427fe6acb1341d923771d81db,已同步真实上游 main(da45cfe771e96d20b9c5129a021a8c971ee03324),合并冲突已消除。

  • Review P2:混合安装/Skill 故障。 复用同一 build_install_freshness owner,以相同事实和时间另做 installation-only projection;仅在确认无其他安装故障时使用 Skill-only 修复。包版本不匹配/旧快照与缺失/过期 facade 共 4 组回归,保留安装恢复命令,再追加 Skill 修复;实际修复 Skill 后仍要求安装恢复,两者修好后重新读回正常。非 ZCode 分支保持原 owner。
  • macOS 路径反例。 规范化 cwd 与 storage 的路径后比较,保留环境不被修改、临时目录隔离和清理断言;macOS CI 仍待本轮运行。
  • 真实 CI 阻塞。 修正 6 处新增测试 lint 错误;两处 ZCode 64hex matcher 改用现有 BARE_SHA256_PATTERN,注册真实消费者。静态 owner 测试改用 fileURLToPath,全部 17 个原断言通过,未添加 exception 或放宽检查。另清理上游拆分遗留的 unused import,并修复 HTTP acceptance fixture 的临时 runtime 绑定和 typed Turn 计数,保留 exactly-one retry/dispatch 断言。
  • 原 CI 的其他失败。 已吸收上游 Todo、status redaction、Windows locator 和 team-evidence-return 修复;原失败的可本地运行用例与团队证据打包流程通过。Linux pipe barrier 与 Windows/POSIX 差异保留为未通过/待 CI 的证据,未用它们宣称全绿。

本轮验证: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.

@mergify mergify Bot removed the needs-rebase Mergify: the pull request has merge conflicts with its base branch label Oct 7, 2026
loopx-agent
loopx-agent previously approved these changes Oct 7, 2026

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator

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; 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>

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator

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; xhigh

动机

需要把已注册 Agent 接到 ZCode CLI,并在原有 Goal 界面控制开始、暂停和停止的操作者。原来通过宿主 skill 每轮进入 LoopX 准入;新版可先绑定空原生会话、明确选择模型,再开始执行,绑定本身不启动模型。

当前核心身份、额度与原生状态机制有通过的源码验证,但新增 Windows 诊断崩溃已复现,打包 owner 旅程尚未完成核验。

本批交付可选 managed CLI 及配套 Goal 控件;不包含桌面对话 attach、付费模型、全平台运行或多 Agent 长期收益验收。

改动思路

Core 保持 Goal 身份、额度准入和可执行任务的权威;Python bridge 只处理宿主 I/O,原生会话的绑定、模型选择、开始/暂停/恢复/停止由已有 TypeScript provider controller 串联并持久记录。绑定不启动模型,暂停/停止先处理已有原生作用,丢失启动回执时从同一持久见证恢复并暂停,不能凭另一份投影借用身份。诊断与正常状态观察不应启动宿主模型。

本次 main 同步复用了 install_contract 的安装命令 owner,却留下一个已删除局部 helper 的 ZCode 调用。现有 install_contract 已拥有 PowerShell 引号规则,main 合入后 doctor 的 ZCode 分支仍调用已删除局部函数。修复应接回该 owner,不能用旧定义复活第二份规则。

本批交付可选 managed CLI 及配套 Goal 控件;不包含桌面对话 attach、付费模型、全平台运行或多 Agent 长期收益验收。源码结构的其他部分可独立复用既有分析,但不能把同步成功或未变代码当作新验收。

具体改动

当前完整 head 24b09cc 相对 base aedb376,91 文件 +5854/-306。范围包含原生 TypeScript controller/guard/app-server、Python API/bridge/diagnostics、共享 process/status/doctor/skill-install 入口、Goal 控件与状态字段、公开协议文档、打包/CLI/browser 测试和生成 I/O 坐标。与上轮 92a44e6 比较,78 个 own blob、90 个 own hunk 未变;13 个 integration join 已重读,唯一改变的 own hunk 是精确 metadata-reader 例外,不能授权新增执行函数。7 项架构测试包含另一 loader 和 authority call 的负例,当前通过。

验收引用修改前既有 roadmap(不可变 be15bf4)及既有评审边界。S4 的有界恢复/停止机制与 S7 的 Core 准入、unknown 不视为零、native done 不计 credit 有源码测试支持;S5 的本次打包旅程和 S8 的默认关闭/入口资格化仍未满足;S12 的安装版/平台资格另行保留,未要求本 PR 完成整个 roadmap。

关键代码讲解

  • native runtime/controller 从 canonical identity 和 durable journal 决定绑定/选择/动作,启动前检查准入,副作用之后若持久化失败先暂停;冷恢复不自动继续模型。
  • Python bridge 对精确 Goal incarnation、注册 Agent、旧别名创建见证及回执范围进行核对;API 不允许普通项目 Chat 权限借用原生 Goal 动作。
  • process_runtime 和诊断 _run_probe 负责 owned process group 的停止/超时/输出限制;此前真实 Darwin 清理证据仅按不可变源码及平台条件复用,不称为本轮新 OS 探针。
  • collect_doctor 的 ZCode 分支为修复命令格式化 home 路径,但766 行引用的 _powershell_literal 在当前文件已不存在,且 import 没有供给该符号。
  • Goal 控件显示模型与准入状态并支持停止/重载;当前 browser fixture 用 Map 供给 native 状态,HTTP 测试又替换 bridge 操作,组合验证仍缺真实持久 owner。

对主干的风险

[P2] Windows ZCode doctor 在给出恢复办法前崩溃。 触发为 doctor --agent-type zcode 且 Windows selector。该分支调用未定义函数,当前 public CLI dispatch 的隔离模拟实际抛出 NameError,Ruff 同时报 F821;base 和上轮 doctor 均无该 lint 错误。Mac/Linux 普通测试不会走这个条件,不能用其通过来排除。最小修复是使用现有 canonical quoting seam 并补该分支回归。这里模拟的是平台条件和通用诊断基础设施,未冒称已在真实 Windows 安装运行。

[P2] 已交付控件的同 owner 旅程仍缺证。 当前 browser 的 agents Map 与 HTTP 测试441–476行的 zcode_goal_operation monkeypatch 是两个被替换边界,不能证明用户纠错、停止后重载仍读到真实持久结果。需要让同一打包控件接隔离真实 API/bridge/journal,替换的只能是无需付费的 native vendor;同时补风险相关 shared-off 的完整输入/文字/状态/效果对照。旧问题未因 main 合入自动消失,未新增付费模型或全平台门槛。

本轮43 TS 和 typecheck、语义 advisory 后完整 vocabulary smoke、I/O 清单与 diff--check通过;Python大组307通过、2失败,完整运行并非绿色。两个 Gitless 参数失败已在不可变 base/head 同命令、同 fixture AST 和固定 hash seed下复验,都是测试临时目录处于 Git checkout 内时返回 git_repository 而预期 local_goal;保留该红项,未归为 ZCode 回归。新 Windows NameError 则单独归为本 PR 集成回归。7 项精确 source-session 架构负例通过。当前 format--check 也有红项,没有查询或等待 CI。

语义与 CI 对齐

复用既有 Core 身份/准入和 provider-local 字面量;meta location 例外限制到精确函数并检查未增加 authority call,不是文件级白名单。共享语义 smoke 通过不等于 doctor 恢复指令可用:当前 Windows 分支尚不能产生该指令,也未证明所有关闭路径的完整文本及效果等价,因此不批准。以上是当前 S5/S8 和既有诊断恢复义务,不借未来 RFC 条目扩大范围。

我的整体评价

REQUEST_CHANGES。身份、拒绝、暂停和持久恢复机制有正向设计价值,但用户体验及长程连续工作的净效果仍未证实:当前一个宿主诊断入口已坏,打包操作还没有同真实 owner 的纠错/停止/重载闭环。更多单元通过不能补齐这个体验缺口,也没有运行成本或效率比例证据。

相邻结构检查发现 canonical install owner 的新 caller 漏接,修复可以保持小且可回滚;不应复活重复规则。完成这个实际崩溃修复和现有控件的有界真实入口验收后,才能重新判断整个 head,不只检查最新一个 finding。

English verdict: REQUEST_CHANGES

Exact head 24b09cc introduces an undefined PowerShell quoting reference in the Windows ZCode doctor branch: public CLI dispatch with only the platform selector simulated raises NameError, corroborated by F821. The packaged control still lacks a joined real API/bridge/journal correction-stop-reload qualification and complete risk-related disabled-path evidence. Current43 TS, typecheck,7 architecture and307 Python cases pass; two Gitless fixture failures are retained and baseline-matched separately. No CI or real installed-Windows qualification is claimed.

@mergify

mergify Bot commented Oct 11, 2026

Copy link
Copy Markdown

This pull request has merge conflicts with main and cannot be merged
until they are resolved. Please rebase or merge the base branch, @jackie-cqz.

Choose the remote for the base repository, not an out-of-date fork.
For a fork clone, first inspect git remote -v; upstream must point
to https://github.com/loopx-project/loopx.git. If it is absent, add it
with git remote add upstream https://github.com/loopx-project/loopx.git.
Then run:

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 HEAD

For a same-repository clone whose origin points to
https://github.com/loopx-project/loopx.git, use origin instead of
upstream for fetch/rebase. If you prefer merging the base, use
git merge <base-remote>/main and push normally.

Keep the DCO Signed-off-by trailer on every commit when you rebase.
https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork

@mergify mergify Bot added the needs-rebase Mergify: the pull request has merge conflicts with its base branch label Oct 11, 2026
Signed-off-by: jackie-cqz <2557911191@qq.com>
@jackie-cqz

Copy link
Copy Markdown
Contributor Author

Conflict synchronization: preserved remote head 24b09cc0a, merged main b760c1eb3, and retained both the ZCode native-Goal scenario and the new Goal workspace selection scenario, together with the existing shard selector. No acceptance scenario was removed.

Validation: browser entrypoint syntax check, four shard/coverage helper tests, TS typecheck, registry census freshness (292 sites), and whitespace/conflict-marker checks passed. Full packaged-browser acceptance is left to fresh CI; these helper checks are not claimed as browser qualification. Maintainer review and merge remain required.

@mergify mergify Bot removed the needs-rebase Mergify: the pull request has merge conflicts with its base branch label Oct 12, 2026

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator

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; reasoning_effort=xhigh

精确 head:7ea10e3ad1ab66751962231d8319fb188fc19250。

动机

需要把已注册 Agent 接到 ZCode CLI,并在原有 Goal 界面控制开始、暂停和停止的操作者。 原来通过宿主 skill 每轮进入 LoopX 准入;新版可先绑定空原生会话、明确选择模型,再开始执行,绑定本身不启动模型。 当前身份、额度和原生恢复源码有通过的独立验证,但 Windows 诊断仍崩溃,打包控件与同一持久 owner 的旅程及完整 shared-off 对照仍缺证。 本批评审可选 managed CLI 与配套 Goal 控件,不包含付费模型、Desktop conversation attachment、全平台或多 Agent 长期效率验收。

改动思路

Core 保留 Goal 身份及额度权威;provider 的 TypeScript controller 管理本地原生会话,Python 只适配既有注册/路由和宿主 I/O。CLI 与现有 Goal 控件属于同一个交付边界,不能用两个被替换的 transport 片段代替同 owner 体验。
原生绑定和已注册 Core Agent 是两个不同层次:身份、权限与额度由原 owner 决定,原生状态由一个 provider controller 读回。持久 journal 用于同 session 冷恢复和丢失启动回执,不能凭 native completed 完成 LoopX Goal。安装和发现只提供可用性;模型选择、启动仍是明确操作。最小结构修复是接回现有 PowerShell quote owner;不应复活局部 helper 或追加第二套规则。这个架构边界可以保留,但它不豁免同 owner 的实际界面交付。

具体改动

独立规格:docs/development/frontend-delivery.md,不可变修订 b760c1eb35613ac84a03cb17246eaba9030db062;先读该变更前合同/问题,再看 diff。以下标识映射原文未编号的要求。

  • FD-ENTRY:not_met — Caller-facing capabilities require an appropriate shipped frontend journey, including discoverability, authorized operation, feedback and result readback.
  • FD-OWNER:implemented — Reuse the typed capability owner rather than adding frontend-only decisions or a setting for a capability with no persistent policy.
  • FD-RECOVERY:not_met — Select realistic populated data and one negative or recovery path likely to falsify the claim.
  • FD-PROVENANCE:implemented — Record source/build identity and fixture boundaries. Source preview, packaged browser, installed App and real model each prove different things.

关键代码讲解

  • NativeGoalController:串行执行显式模型/启动/暂停/停止,启动前写 start_pending,丢失启动回执只接受匹配的 objective/target,冷恢复先暂停;额度撤销拒绝恢复,恢复准入后仍需显式操作,native completion 不写 Core credit。
  • validate_zcode_binding / broker:复用注册 actor、exact Goal incarnation/creation witness、canonical source 路由;使用一个本地持久 journal/受控进程树,不新增 Core 调度。不同 host、旧实例及源替换在 transport 之前拒绝。
  • collect_doctor:新 ZCode 分支检查 facade 并生成恢复命令,但766行调用已不存在的 _powershell_literal,import 也未供给它;正好漏接 main 已有的 canonical quoting owner。
  • ZCodeAgentControl:绑定 fresh readback 的操作,未知结果清空 snapshot,Agent 变更/卸载丢弃晚响应;模型与额度 unknown 不显示为0。当前 packaged 场景用 Map 返回 native 状态,HTTP 测试又替换 bridge,尚未走同一持久 owner。
  • 全 PR 为91文件 +5854/-306,包含 provider/共享 status-doctor-install-process、Goal UI/双语文案、文档、CI 分片/覆盖合并和 fixture 修正。与最后评审24b09cc0a比较,83个 own blobs 相同,8个 integration joins 已重读;这仅资格化源码复用,不继承旧测试或 verdict。CI/架构554项、覆盖分片4项、当前292-site census及语义/typecheck通过。

对主干的风险

[P2] 当前 Windows ZCode doctor 仍在返回修复办法前崩溃。 在本精确 head 执行真正 public CLI dispatch,仅模拟 doctor 的 NT platform selector 与通用诊断环境,独立复现 NameError: name '_powershell_literal' is not defined。Ruff 在766行给出新增 F821,base 的 doctor 检查通过。162 Python/43 TypeScript 用例全通过仍漏掉此分支;不能把普通平台通过当成修复。最小修复是使用现有 quote seam,补该入口反例;本测试不是 native Windows 安装证明。

[P2] packaged 的同持久 owner 旅程仍缺证。 当前 browser Map 和 HTTP 的 zcode_goal_operation monkeypatch 是两个断开的被替换边界。需要让同一构建控件接隔离真实 API/bridge/journal,在 vendor stub 边界以外完成纠错、停止、重载及实际状态读回,并补风险相关 shared-off 的完整 schema/输入/文字/状态/效果对照;不要求付费模型、全 fleet 或每个 viewport。

当前162 Python、43 native TS、554 CI/架构、4 coverage helpers、typecheck、semantic advisory/full 和292-site census通过。完整 Ruff 红项保留:E731/F401 在不可变 base/head 同命令逐条细节一致,归为未改的 baseline;新 F821 单独归此 PR。旧测试/历史平台原因不自动 veto,也不抹除当前缺口。没有查询、轮询或等待 CI,没有做新的 packaged/installed/付费模型资格化。

语义与 CI 对齐

新增动作/status/identity vocabulary 留在已有 provider typed contract,Core identity/quota/credit 和 generic obligation owner 不变。共享语义 smoke 通过不保证 Windows 修复指令可生成,也不证明 disabled instruction/state/effect 全等;这些当前 FD-ENTRY/FD-RECOVERY 义务未满足,不借未来 RFC 条目扩大门槛。

我的整体评价

REQUEST_CHANGES。long_horizon 与 user_experience 均仍 not_yet_proven:已有 scope/暂停/恢复机制方向正确,但一个诊断入口在该平台条件下真实失效,新的控件尚缺同 owner 持久闭环。结构可以保持 provider-local、typed lifecycle 和复用 Core 的边界;需要修小的 canonical caller 漏接并补实际旅程,不是增加抽象、复活重复逻辑或靠更多数量通过。未测持续运行成本、全平台、installed adoption 或 memory 因果收益,不能宣称长程净效率已提升。

English verdict: REQUEST_CHANGES - 7ea10e3; Current public CLI dispatch with the NT selector simulated still raises NameError at doctor.py766; the packaged real-owner/off-path journey remains unverified.162Python/43TS plus554contract/4helper checks pass; retained baseline Ruff issues are separately matched. No CI or native-Windows/installed/model qualification claimed.

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator

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; reasoning_effort=xhigh

精确 head:910eadadcaf0adfbfc00a7a676c8ea8eff823b3c。

动机

需要把已注册 Agent 接到 ZCode CLI,并在原有 Goal 界面控制开始、暂停和停止的操作者。 原来通过宿主 skill 每轮进入 LoopX 准入;新版可先绑定空原生会话、明确选择模型,再开始执行,绑定本身不启动模型。 当前身份、额度和原生恢复源码有通过的独立验证,但 Windows 诊断仍崩溃,打包控件与同一持久 owner 的旅程及完整 shared-off 对照仍缺证。 本批评审可选 managed CLI 与配套 Goal 控件,不包含付费模型、Desktop conversation attachment、全平台或多 Agent 长期效率验收。

改动思路

Core 保留 Goal 身份及额度权威;provider 的 TypeScript controller 管理本地原生会话,Python 只适配既有注册/路由和宿主 I/O。CLI 与现有 Goal 控件属于同一个交付边界,不能用两个被替换的 transport 片段代替同 owner 体验。

Core 保留 Goal 身份及额度权威;provider 的 TypeScript controller 管理本地原生会话,Python 只适配既有注册/路由和宿主 I/O。CLI 与现有 Goal 控件属于同一个交付边界,不能用两个被替换的 transport 片段代替同 owner 体验。

原生状态不等于 Core Goal 完成。绑定、模型选择和启动都显式执行;撤销准入先暂停,恢复仍需本人明确操作。最小修复应接回现有 installer 的 PowerShell quote owner,避免复活第二套规则。保留一个 provider-local controller/journal 和既有 Goal 控件即可,当前不需要新抽象。

具体改动

判断规格为 docs/development/frontend-delivery.md,不可变修订 220ae7c0ffa02163bba8cce78243c650c4a9c445。FD-ENTRY、FD-OWNER、FD-RECOVERY、FD-PROVENANCE 分别对应打包实际旅程、同 typed owner、代表性负例/恢复及版本/模拟边界:OWNER 与 PROVENANCE 有源码和实际验证;ENTRY 的 joined persistence 与 RECOVERY 的 Windows 修复入口仍未满足。

  • NativeGoalController 串行处理模型/启动/暂停/停止,先持久化 start_pending;丢失启动回执只能接受相同 target/objective,冷恢复先暂停,不写 Core credit。
  • validate_zcode_binding 与 broker 在 transport 前后复核注册 actor、Goal incarnation/creation witness 和源路由。guard.ts 只清理自己拥有的 native execution;process_runtime.py 管进程树和受限错误输出。
  • ZCodeAgentControl 在原 Goal drawer 使用 readback-bound actions,未知/晚响应清除 snapshot;未知模型或额度不当成0。现有 browser scene 仍用 Map,而 HTTP test 仍替换 zcode_goal_operation,两个片段没有证明同一个真实 bridge/journal 的纠错→停止→重载。
  • 诊断、doctor/install、skill facade 移动、共享 status/activation/bundle、双语 UI、CI shard/coverage、fixture 和公开说明都在全 PR 内:91路径 +5854/-306,包含39产品、45验证、4文档、1census和2图片路径。第一阶段070cbee的91个 own blobs与7ea10相同,但在发布前head再次变更,因此070cbee没有发布。当前910ead相对070cbee有4个own join变更:workflow、roadmap、testing guide和content-digest test;87个own blobs保留。上游selection/scheduler/recommendation与页面/CI变化已重新检查,其准入消费者不能靠旧结果继承。该事实允许复用源码判断,不能把旧 verdict 或未测旅程当成新通过。

对主干的风险

[P2] doctor Windows ZCode 分支仍真实崩溃。 loopx/doctor.py:766 调用不存在的 _powershell_literal。本次在当前 worktree 执行 public CLI dispatch,仅模拟 doctor 的 NT selector 和通用诊断环境,再次得到 NameError;当前 Ruff 同时报F821。复用 canonical quote helper 并补 public-CLI NT-selector 回归即可。此结果是平台分支反例,不是 native Windows 安装验证。

[P2] joined packaged owner 与完整风险相关 shared-off 仍缺证。 需要让一个真正构建的控件接隔离真实 API/bridge/journal,替换 vendor process 边界即可,完成纠错、停止、重载及独立持久状态读回;再比较共享 doctor/status/install/skill/process 路径关闭时的输入、文字、状态和效果。源码相同不使旧缺口消失,不要求付费模型或全 fleet。

当前910ead的162Python、43nativeTS及NT CLI反例均重跑;typecheck、semantic advisory/full和Ruff属于之前070cbee阶段的证据。070cbee阶段Ruff除新增F821外的E731 content_ops581/F401 codex_auth17,复用已逐条匹配的b760/7ea10基线签名并核对当前两个baseline失败路径字节不变;未归给此PR。先前554contract/4helper验证仅作为明确版本化的复用证据,不称本次重跑。没有查询、轮询或等待CI,没有新 installed/packaged同owner、native Windows、付费模型或多Goal长期净成本验证。

我的整体评价

REQUEST_CHANGES。结构方向可保留:复用Core authority,provider拥有本地native lifecycle。当前恢复入口和真实控件闭环仍阻止完整交付。它有潜在连续工作价值,但体验和长程净效率仍 not_yet_proven;更多绿测试和 head 同步都不能代替实际恢复、停止和结果回读。已做相邻结构检查,canonical quote caller 漏接适合有界修复;不扩成平台重写。

English verdict: REQUEST_CHANGES - 910eada; Current public CLI with the NT selector simulated still raises NameError at doctor.py766/F821. The joined packaged API/bridge/journal recovery and complete risk-related disabled paths remain unqualified. Fresh910ead162Python/43TS pass; the NT public-CLI counterexample repeats; prior static checks remain versioned; source reuse is explicitly revision-qualified. No CI, native-Windows, installed/model or long-run efficiency claim.

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator

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; reasoning_effort=xhigh

精确 head:910eadadcaf0adfbfc00a7a676c8ea8eff823b3c。

动机

需要把已注册 Agent 接到 ZCode CLI,并在原有 Goal 界面控制开始、暂停和停止的操作者。 原来通过宿主 skill 每轮进入 LoopX 准入;新版可先绑定空原生会话、明确选择模型,再开始执行,绑定本身不启动模型。 当前身份、额度和原生恢复源码有通过的独立验证,但 Windows 诊断仍崩溃,打包控件与同一持久 owner 的旅程及完整 shared-off 对照仍缺证。 本批评审可选 managed CLI 与配套 Goal 控件,不包含付费模型、Desktop conversation attachment、全平台或多 Agent 长期效率验收。

改动思路

Core 保留 Goal 身份及额度权威;provider 的 TypeScript controller 管理本地原生会话,Python 只适配既有注册/路由和宿主 I/O。CLI 与现有 Goal 控件属于同一个交付边界,不能用两个被替换的 transport 片段代替同 owner 体验。

Core 保留 Goal 身份及额度权威;provider 的 TypeScript controller 管理本地原生会话,Python 只适配既有注册/路由和宿主 I/O。CLI 与现有 Goal 控件属于同一个交付边界,不能用两个被替换的 transport 片段代替同 owner 体验。

原生状态不等于 Core Goal 完成。绑定、模型选择和启动都显式执行;撤销准入先暂停,恢复仍需本人明确操作。最小修复应接回现有 installer 的 PowerShell quote owner,避免复活第二套规则。保留一个 provider-local controller/journal 和既有 Goal 控件即可,当前不需要新抽象。

具体改动

判断规格为 docs/development/frontend-delivery.md,不可变修订 220ae7c0ffa02163bba8cce78243c650c4a9c445。FD-ENTRY、FD-OWNER、FD-RECOVERY、FD-PROVENANCE 分别对应打包实际旅程、同 typed owner、代表性负例/恢复及版本/模拟边界:OWNER 与 PROVENANCE 有源码和实际验证;ENTRY 的 joined persistence 与 RECOVERY 的 Windows 修复入口仍未满足。

  • NativeGoalController 串行处理模型/启动/暂停/停止,先持久化 start_pending;丢失启动回执只能接受相同 target/objective,冷恢复先暂停,不写 Core credit。
  • validate_zcode_binding 与 broker 在 transport 前后复核注册 actor、Goal incarnation/creation witness 和源路由。guard.ts 只清理自己拥有的 native execution;process_runtime.py 管进程树和受限错误输出。
  • ZCodeAgentControl 在原 Goal drawer 使用 readback-bound actions,未知/晚响应清除 snapshot;未知模型或额度不当成0。现有 browser scene 仍用 Map,而 HTTP test 仍替换 zcode_goal_operation,两个片段没有证明同一个真实 bridge/journal 的纠错→停止→重载。
  • 诊断、doctor/install、skill facade 移动、共享 status/activation/bundle、双语 UI、CI shard/coverage、fixture 和公开说明都在全 PR 内:91路径 +5854/-306,包含39产品、45验证、4文档、1census和2图片路径。第一阶段070cbee的91个 own blobs与7ea10相同,但在发布前head再次变更,因此070cbee没有发布。当前910ead相对070cbee有4个own join变更:workflow、roadmap、testing guide和content-digest test;87个own blobs保留。上游selection/scheduler/recommendation与页面/CI变化已重新检查,其准入消费者不能靠旧结果继承。该事实允许复用源码判断,不能把旧 verdict 或未测旅程当成新通过。

对主干的风险

补正 review5486637620 的遗漏:最新 main integration 引入了第三个当前 blocker。 tests/control_plane_ts/content_digest_single_owner.test.ts:3,6 重复导入 fileURLToPath,本 head 的正常 Node test entry 实际报 SyntaxError: Identifier fileURLToPath has already been declared,任何断言都还没有运行。不可变 base220ae7c0和此前070cbee各只有一个 import;当前43项 ZCode tests 没有加载此 join,所以不能用它们否定该错误。删去第6行重复 import,保留原语义,再跑该 test/typecheck。本补正保留原 review 与另外两个 finding,不删除讨论;先前遗漏不应继续作为完整当前集成验证。

[P2] doctor Windows ZCode 分支仍真实崩溃。 loopx/doctor.py:766 调用不存在的 _powershell_literal。本次在当前 worktree 执行 public CLI dispatch,仅模拟 doctor 的 NT selector 和通用诊断环境,再次得到 NameError;当前 Ruff 同时报F821。复用 canonical quote helper 并补 public-CLI NT-selector 回归即可。此结果是平台分支反例,不是 native Windows 安装验证。

[P2] joined packaged owner 与完整风险相关 shared-off 仍缺证。 需要让一个真正构建的控件接隔离真实 API/bridge/journal,替换 vendor process 边界即可,完成纠错、停止、重载及独立持久状态读回;再比较共享 doctor/status/install/skill/process 路径关闭时的输入、文字、状态和效果。源码相同不使旧缺口消失,不要求付费模型或全 fleet。

当前910ead的162Python、43nativeTS及NT CLI反例均重跑;typecheck、semantic advisory/full和Ruff属于之前070cbee阶段的证据。070cbee阶段Ruff除新增F821外的E731 content_ops581/F401 codex_auth17,复用已逐条匹配的b760/7ea10基线签名并核对当前两个baseline失败路径字节不变;未归给此PR。先前554contract/4helper验证仅作为明确版本化的复用证据,不称本次重跑。没有查询、轮询或等待CI,没有新 installed/packaged同owner、native Windows、付费模型或多Goal长期净成本验证。

我的整体评价

REQUEST_CHANGES。结构方向可保留:复用Core authority,provider拥有本地native lifecycle。当前恢复入口和真实控件闭环仍阻止完整交付。它有潜在连续工作价值,但体验和长程净效率仍 not_yet_proven;更多绿测试和 head 同步都不能代替实际恢复、停止和结果回读。已做相邻结构检查,canonical quote caller 漏接适合有界修复;不扩成平台重写。

English verdict: REQUEST_CHANGES - 910eada; Current integrated content-digest test also fails parsing due to a duplicate fileURLToPath import; the public CLI with the NT selector simulated still raises NameError at doctor.py766/F821. The joined packaged API/bridge/journal recovery and complete risk-related disabled paths remain unqualified. Fresh910ead162Python/43TS pass; the NT public-CLI counterexample repeats; prior static checks remain versioned; source reuse is explicitly revision-qualified. No CI, native-Windows, installed/model or long-run efficiency claim.

@jackie-cqz

Copy link
Copy Markdown
Contributor Author

Repair evidence for head 01d5890b0d105f346b721bda832481eb95c8e9a6, compared with immutable main d03863fd0048f57f6dc878e7dc464b17f8d862a1.

The two reported FD-ENTRY/FD-RECOVERY gaps are addressed:

  • Windows doctor now uses the existing install-owner PowerShell quote seam. Two new tests first reproduced the NameError through public CLI dispatch, then passed with space/apostrophe home paths and the exact repair command. Only the doctor platform selector/general diagnostic environment is simulated; this is not native Windows installation proof.
  • Added examples/zcode-persistent-browser-smoke.mjs: actual compiled Chat controls call the production loopback server/API, Python bridge, Core identity/quota and TS controller/journal. No browser route interception or API/bridge operation monkeypatch is used. Only the vendor NDJSON boundary is substituted. It corrects a missing CLI through real error/readback, selects a model, starts, reloads, pauses/resumes, stops and reloads again. Direct API, the same journal filename/session, vendor persistence/event order and canonical Todo readback agree. Registry/Goal source bytes remain unchanged; the canonical Todo stays open after native stop. Collapsed controls make no optional-host requests. This ran on Windows with Node 24.21 and Chromium, and is now an explicit step in the existing packaged-browser CI job. Unrelated Codex/Lark hosts are intentionally unavailable; no paid host or telemetry is invoked.
  • Added the bounded shared-off observation probe: 12 matched cases cover default/Codex doctor, complete status JSON/Markdown, registered/unselected Codex activation, installer dry/apply including installed file digests, public JSON/Markdown turn plans, and normal/overflow/timeout process transport. Base/head use identical fixture paths/inputs, preserve every JSON key/type and complete user text, and compare owned before/after state/effects. Only declared observation time/cost coordinates and environment source/interpreter locations are fixed; authority/source-revision hashes and durable file hashes are not erased. All 12 complete observations match the current base.

Final source-bound Linux validation: Python/workflow suite passed, all 43 native TS tests passed without skips, TS typecheck, semantic advisory/full smoke and 292-site registry census passed. Python result: 679 passed in 49.48s. Windows focused provider/doctor modules also passed 131 tests with one POSIX-only cleanup-injection skip. Packaged build/recovery and complete shared-off comparisons were repeated after remote synchronization. A duplicate test import introduced by synchronization was repaired before the final checks.

Broad Ruff command python -m ruff check loopx tests examples scripts --output-format json remains red with exactly the same 49 findings in immutable base/head (E402/E731/F401/F541/F841), matching path, location and message. There are no new findings; the reported F821 is gone. Focused changed Python/fixture Ruff passes. Existing bundle-size warnings remain; no global clean-lint or performance claim is made.

Placement/refactor: reuse the installation quoting owner and existing ZCode typed provider; validation joins the real persistence boundary instead of introducing a second Python authority owner. The existing roadmap checkpoint now names this bounded packaged recovery evidence. Live billing, paid-model execution, Desktop attachment, fleet/installed-release qualification and general unattended acceptance remain unclaimed. Fresh CI and maintainer review/merge are still required; this is author repair evidence, not an approval or a self-merge.

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator

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; reasoning_effort=xhigh

评审 head:01d5890b0d105f346b721bda832481eb95c8e9a6,基线:d03863fd0048f57f6dc878e7dc464b17f8d862a1。

动机

需要把已注册 Agent 接到 ZCode CLI,并在原有 Goal 界面控制开始、暂停和停止的操作者。 原来通过宿主 skill 每轮进入 LoopX 准入;新版可以先绑定空原生会话、明确选择模型,再开始执行,之后在同一会话暂停、恢复和停止。

当前同一生产 API、bridge、持久 journal 的纠错、启停和重载已通过明确中文环境的构建界面验证;原命令在默认英文环境仍因中文按钮定位超时,新增必跑脚本尚未合格。

范围是可选 managed CLI 及配套 Goal 控件;不包含付费模型、Desktop 会话接入、全平台或多 Agent 长期效率验收。

改动思路

Core 保留 Goal 身份及额度权威;provider 的 TypeScript controller 管理本地原生会话,Python 适配注册、路由和宿主 I/O,前端复用已有 Goal 抽屉。 范围是可选 managed CLI 及配套 Goal 控件;不包含付费模型、Desktop 会话接入、全平台或多 Agent 长期效率验收。

评审沿用接受的 frontend-delivery.md,用 FD-ENTRY(可发现、操作、反馈、读回)、FD-OWNER(同一类型化 owner)、FD-RECOVERY(负例及恢复)和 FD-PROVENANCE(源码、构建及 mock 边界)标记原文要求。前三项现在有实际链路证据:打包页面经生产 loopback API、Python bridge、Core 身份/额度校验和 TypeScript controller 操作同一个持久 journal;只替换了厂商 NDJSON 模型进程。没有用页面拦截、替换 bridge 或修改产品后置状态来拼接成功。FD-PROVENANCE 必须保留“原脚本失败、仅显式中文 locale 的诊断运行通过”的区别。

具体改动

全量差异为 95 个路径,+6430/-306。生产部分包括 managed CLI 的 broker、session/journal/guard,validate_zcode_binding 的既有注册、Goal 实例及创建见证校验,现有 Goal 抽屉内的 ZCodeAgentControl,以及状态、doctor、技能安装和进程传输接缝;文档说明 provider 范围与恢复,测试、浏览器 fixture、CI 分片和 IO 清单覆盖这些接缝。84 个当前 head blob 及相应 base blob 与上一轮评审相同,11 个变动路径重新读取;共享调用者仍在当前源码重跑验证,未继承旧批准。

NativeGoalController 区分绑定、选择模型和执行,额度或身份失效时暂停自己拥有的目标;停止后保留会话供重载读回。原生“完成”只是观察,不会代替 Core Todo 完成或发额度。现代精确实例和 legacy alias 都有明确边界;缺少历史创建见证的 legacy alias 无法区分同 ID 重建,文档已披露这一限制。

上一轮三处阻塞现已逐项复核:digest 的重复 import 已删,正常 Node 入口可加载;doctor 复用既有 _powershell_literal,包括空格/单引号路径的模拟 NT 公开分支通过;同一持久 owner 纠错、启停、重载链路及 12 个 shared-off 全输出/状态对照已补齐。这里的 NT 分支测试不等同于真实 Windows 验收。

对主干的风险

[P2] 新增必跑浏览器脚本应固定测试语言。 examples/zcode-persistent-browser-smoke.mjs:29 创建 page 时没有指定 locale,随后 open() 只查找中文“概览”。直接运行 node examples/zcode-persistent-browser-smoke.mjs 时,新鲜英文环境在 locator.click 等待 30 秒后超时,尚未到达原生控件。该脚本也已加入 Python workflow 的必跑步骤。我只给同一个浏览器 fixture 增加 locale: 'zh-CN' 后,其余 API、bridge、journal 和断言全部保留,纠错、start/reload/pause/resume/stop/reload 均通过,且 Core Todo 仍 open。最小修复是在测试 context 明确中文,或使用不依赖显示语言的定位;随后按原命令验证。不要靠全局浏览器偏好、更长超时或删除断言遮盖它。

当前本地验证:774 项 Python、60 项原生 TS、control-plane typecheck、打包 build、语义清单/漂移检查、292 个 IO 清单站点及四个 browser helper 检查通过。12 个相同合成输入的 shared-off 场景逐项比较完整 JSON、Markdown 和状态文件摘要,一致;只规整预先声明的观察时钟/成本坐标和源码/解释器位置,没有抹掉权威值或持久摘要。广域 Ruff 的 49 项在 immutable base 与 head 的路径、代码、位置和消息签名相同,无新 F821,不能称全树 lint 通过。按当前评审配置未查询 CI。

用 Ego 检查了真实构建页面的桌面和 390px 窄屏:需进入概览/Goal 信息才能展开控件,绑定和模型选择各提供必要的新信息,绑定本身不启动任务;停止后的不可用读回没有伪报运行或完成,窄屏无横向溢出。非阻塞建议是把顶层 controller_disconnected 转成可理解的中文恢复说明;它不影响本批已通过的持久性证据。没有付费模型、已安装宿主、实际 Windows、全体 Agent 成本或长期吞吐实测。

我的整体评价

REQUEST_CHANGES。产品链路相较上轮已有正向增量:同一原生会话可在暂停、重载后继续,Core 身份和额度仍是单一权威;由同一个 Goal 控件完成纠错和读回,减少重复进入的负担。12 项关闭功能的实测未发现对已有调用者的隐性义务变化。这支持有界持续使用的收益,尚不能量化长期总效率。

当前阻塞收敛为新增接受脚本的语言依赖,修复 owner 是这个 fixture 的创建/定位边界。相关未来改动便利性检查已落实在本 PR 的规范 PowerShell quoting 复用、单一类型化 action 合同及现有抽屉的数据/控件分工,不要求另起框架、重写 Core 或完成整个父路线图。修复后应重跑原脚本并保留真实 owner 和 feature-off 对照。

English verdict: REQUEST_CHANGES - 01d5890: previous doctor/import/joined-owner blockers are resolved; the new required persistent-browser command still times out with its default English context and Chinese-only selectors. Explicit-locale diagnosis qualifies the real same-owner journey; 774 Python, 60 TS, build/typecheck and 12 full shared-off comparisons passed. Native Windows, paid models and installed/fleet efficiency remain untested.

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator

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; reasoning_effort=xhigh

评审 head:f2d09b0b4a2f428f01f4e6ed4a7f6017a6bc47ef,基线:a663ce390ac72510ae8d4b5b723647438cc321ef。

动机

需要把已注册 Agent 接到 ZCode CLI,并在原有 Goal 界面控制开始、暂停和停止的操作者。 原来通过宿主 skill 每轮进入 LoopX 准入;新版可以先绑定空原生会话、明确选择模型,再开始执行,之后在同一会话暂停、恢复和停止。

当前同一生产 API、bridge、持久 journal 的纠错、启停和重载已通过明确中文环境的构建界面验证;原命令在默认英文环境仍因中文按钮定位超时,新增必跑脚本尚未合格。

范围是可选 managed CLI 及配套 Goal 控件;不包含付费模型、Desktop 会话接入、全平台或多 Agent 长期效率验收。

改动思路

Core 保留 Goal 身份及额度权威;provider 的 TypeScript controller 管理本地原生会话,Python 适配注册、路由和宿主 I/O,前端复用已有 Goal 抽屉。 范围是可选 managed CLI 及配套 Goal 控件;不包含付费模型、Desktop 会话接入、全平台或多 Agent 长期效率验收。

评审沿用接受的 frontend-delivery.md,用 FD-ENTRY(可发现、操作、反馈、读回)、FD-OWNER(同一类型化 owner)、FD-RECOVERY(负例及恢复)和 FD-PROVENANCE(源码、构建及 mock 边界)标记原文要求。前三项现在有实际链路证据:打包页面经生产 loopback API、Python bridge、Core 身份/额度校验和 TypeScript controller 操作同一个持久 journal;只替换了厂商 NDJSON 模型进程。没有用页面拦截、替换 bridge 或修改产品后置状态来拼接成功。FD-PROVENANCE 必须保留“原脚本失败、仅显式中文 locale 的诊断运行通过”的区别。

具体改动

全量差异为 95 个路径,+6430/-306。生产部分包括 managed CLI 的 broker、session/journal/guard,validate_zcode_binding 的既有注册、Goal 实例及创建见证校验,现有 Goal 抽屉内的 ZCodeAgentControl,以及状态、doctor、技能安装和进程传输接缝;文档说明 provider 范围与恢复,测试、浏览器 fixture、CI 分片和 IO 清单覆盖这些接缝。本次是同步主干后的重新评审:94 个当前 head blob 及相应 base blob 与刚刚的 01d589 评审相同;唯一差异是 IO 清单内备份源码行号。额外 9 个上游变动涉及备份、恢复文档及对应测试,已核查与该原生调用链无关;Core 入口、额度、registry 和 frontend-delivery 规格内容相同。当前 head 另跑 100 项 bridge/doctor、构建、原脚本、locale 诊断和语义/清单检查,旧证据按源码和依赖失效条件复用,未继承旧 verdict。

NativeGoalController 区分绑定、选择模型和执行,额度或身份失效时暂停自己拥有的目标;停止后保留会话供重载读回。原生“完成”只是观察,不会代替 Core Todo 完成或发额度。现代精确实例和 legacy alias 都有明确边界;缺少历史创建见证的 legacy alias 无法区分同 ID 重建,文档已披露这一限制。

上一轮三处阻塞现已逐项复核:digest 的重复 import 已删,正常 Node 入口可加载;doctor 复用既有 _powershell_literal,包括空格/单引号路径的模拟 NT 公开分支通过;同一持久 owner 纠错、启停、重载链路及 12 个 shared-off 全输出/状态对照已补齐。这里的 NT 分支测试不等同于真实 Windows 验收。

对主干的风险

[P2] 新增必跑浏览器脚本应固定测试语言。 examples/zcode-persistent-browser-smoke.mjs:29 创建 page 时没有指定 locale,随后 open() 只查找中文“概览”。直接运行 node examples/zcode-persistent-browser-smoke.mjs 时,新鲜英文环境在 locator.click 等待 30 秒后超时,尚未到达原生控件。该脚本也已加入 Python workflow 的必跑步骤。我只给同一个浏览器 fixture 增加 locale: 'zh-CN' 后,其余 API、bridge、journal 和断言全部保留,纠错、start/reload/pause/resume/stop/reload 均通过,且 Core Todo 仍 open。最小修复是在测试 context 明确中文,或使用不依赖显示语言的定位;随后按原命令验证。不要靠全局浏览器偏好、更长超时或删除断言遮盖它。

本次新 head 的 100 项 bridge/doctor Python、打包 build、语义清单/漂移及 292 站点 IO 检查通过。774 项 Python、60 项原生 TS、control-plane typecheck 和四个 browser helper 来自 01d589 的通过证据,按上述相同源码/base/依赖条件复用,不声称在 f2 全部重跑。复用的 12 个相同合成输入 shared-off 场景逐项比较完整 JSON、Markdown 和状态文件摘要,一致;只规整预先声明的观察时钟/成本坐标和源码/解释器位置,没有抹掉权威值或持久摘要。广域 Ruff 的 49 项在 immutable base 与 head 的路径、代码、位置和消息签名相同,无新 F821,不能称全树 lint 通过。按当前评审配置未查询 CI。

用 Ego 检查了真实构建页面的桌面和 390px 窄屏:需进入概览/Goal 信息才能展开控件,绑定和模型选择各提供必要的新信息,绑定本身不启动任务;停止后的不可用读回没有伪报运行或完成,窄屏无横向溢出。非阻塞建议是把顶层 controller_disconnected 转成可理解的中文恢复说明;它不影响本批已通过的持久性证据。没有付费模型、已安装宿主、实际 Windows、全体 Agent 成本或长期吞吐实测。

我的整体评价

REQUEST_CHANGES。产品链路相较上轮已有正向增量:同一原生会话可在暂停、重载后继续,Core 身份和额度仍是单一权威;由同一个 Goal 控件完成纠错和读回,减少重复进入的负担。12 项关闭功能的实测未发现对已有调用者的隐性义务变化。这支持有界持续使用的收益,尚不能量化长期总效率。

当前阻塞收敛为新增接受脚本的语言依赖,修复 owner 是这个 fixture 的创建/定位边界。相关未来改动便利性检查已落实在本 PR 的规范 PowerShell quoting 复用、单一类型化 action 合同及现有抽屉的数据/控件分工,不要求另起框架、重写 Core 或完成整个父路线图。修复后应重跑原脚本并保留真实 owner 和 feature-off 对照。

English verdict: REQUEST_CHANGES - f2d09b0: previous doctor/import/joined-owner blockers are resolved; the new required persistent-browser command still times out with its default English context and Chinese-only selectors. Explicit-locale diagnosis qualifies the real same-owner journey; 100 current-head Python, build, semantic/IO checks and fresh locale-only recovery passed; prior 774 Python, 60 TS, typecheck and 12 full shared-off observations were reused after explicit base/head/dependency invalidation. Native Windows, paid models and installed/fleet efficiency remain untested.

@mergify

mergify Bot commented Oct 12, 2026

Copy link
Copy Markdown

This pull request has merge conflicts with main and cannot be merged
until they are resolved. Please rebase or merge the base branch, @jackie-cqz.

Choose the remote for the base repository, not an out-of-date fork.
For a fork clone, first inspect git remote -v; upstream must point
to https://github.com/loopx-project/loopx.git. If it is absent, add it
with git remote add upstream https://github.com/loopx-project/loopx.git.
Then run:

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 HEAD

For a same-repository clone whose origin points to
https://github.com/loopx-project/loopx.git, use origin instead of
upstream for fetch/rebase. If you prefer merging the base, use
git merge <base-remote>/main and push normally.

Keep the DCO Signed-off-by trailer on every commit when you rebase.
https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork

@mergify mergify Bot added the needs-rebase Mergify: the pull request has merge conflicts with its base branch label Oct 12, 2026
Signed-off-by: jackie-cqz <2557911191@qq.com>
@jackie-cqz

Copy link
Copy Markdown
Contributor Author

Sync resolved on head f3c7fdeae4a62c8b670d80683b4bab3f9bbcdb97, incorporating main ffbd579502e6559ecf4d551b8837da1d6dd40a90. Kept ZCode acceptance and scenario sharding alongside both new upstream workspace scenarios; retained the persisted host-gate fixture semantics. No provider or authority behavior was added by conflict resolution.

Validation: frontend typecheck and packaged build passed; scenario sharding tests passed (2); registry manifest current (292 sites); packaged ZCode recovery passed against the real API/bridge/journal with only the vendor boundary substituted, preserving session/journal through stop and reload. GitHub readback reports mergeable: true; required checks/review remain separate merge gates. This PR is left for maintainer review and merge.

@mergify mergify Bot removed the needs-rebase Mergify: the pull request has merge conflicts with its base branch label Oct 12, 2026

This branch has not been deployed

No deployments
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.

2 participants