Repository navigation
Conversation
b82f409 to
0a57b72
Compare
0.3.0 — verification (2026-11-04)Environment: ZCode CLI 0.17.1, macOS 27.0.1 arm64, Python 3.14.4, git 2.x. Installed from a local marketplace → Ran the deterministic controller from that installed copy against a scratch OpenSpec project (
Repo-side: Note on scope: 0.3.0 removes the generic resource queue ( Not covered: a full dispatch → subagent → sealed-receipt round (needs a hosted DSH session), and Windows. |
Addendum — also run inside a real ZCode agent sessionNot only the CLI from the cache: a headless ZCode session ( |
|
✅ Internal validation passed. A ZCode maintainer will review the change next; after acceptance, release checks run separately and this PR is closed automatically. |
Third round — review & simplification (2026-11-05)No new features. This pass asked whether the documentation still matches the code, and found one thing that would have broken a first-time user: The skill was teaching a command that does not exist. Dead code removed (1283 lines of Python, 8440 → 7157). Everything was pre-verified as zero-call:
Leases are now documented. They are fixed at 7200 s with no renewal entry point, so a ticket longer than two hours always comes back as Verification: 156 tests pass and Payload: re-synced, 28 files, verified blob-by-blob against Not verified this round: the full dispatch loop over a real change (unchanged code path, but the payload's CLI was only smoke-tested for |
|
✅ Internal validation passed. A ZCode maintainer will review the change next; after acceptance, release checks run separately and this PR is closed automatically. |
|
Repushed to 0.3.2: head This round is a correctness pass over the integration path plus the leftovers of the 0.3.0 queue extraction. Every fix below was reproduced against a real git repo first and now has a regression test. Three defects in the merge/integration path
Two behaviour corrections
Dead code removed (the 0.3.0 queue extraction's leftovers): the resource-lease subsystem ( Docs corrected: New drift tripwire: Evidence
Migration notes (also in CHANGELOG): a packet prepared by 0.3.1 carries the removed |
|
Re-pushed this branch as 1. The PR now follows 2. The entry named the repo-root 3. The package file list no longer drops documentation. Re-verified against the branch itself (not a local checkout):
Request: the earlier 中文摘要:本轮只补元数据与载荷完整性 —— 恢复了模板要求的插件类型声明与自查清单、标题加上 |
Plugin type (required) / 插件类型(必填)
Affected plugin name(s) / 涉及的插件名称:
batonWhat / 改动内容
EN — Adds
baton, a deterministic ticket/DAG/subagent control plane over OpenSpec changes: a local Python CLI computes the task frontier and returns session actions; the main session dispatches each task packet to a subagent in an isolated git worktree, and only a sealed receipt with green verification counts as done.session_control.pydrives dispatch, bind and reconcile;receipt.pyverifies and seals;ticket_board.pyrenders a static progress board (no process, no port).receiptHash), so an edited exit code, changed-file list or commit SHA is rejected before anything is merged.abandonis the operator escape hatch, and a dirty integration worktree is reported as a namedblockedaction instead of wedging the run.statusis a pure read, and task checkboxes are written back totasks.mdin both directions with line endings preserved.中文 — 新增
baton:OpenSpec 变更上的确定性 ticket/DAG/子代理控制面。本地 Python CLI 计算任务前沿并返回会话动作,主会话把任务包派发给隔离 worktree 中的子代理,只有密封回执(整包哈希)加验证全绿才算完成;集成串行加锁,冲突归因到真正引入它的分支。Visible behavior and testing / 可见行为与测试
python3 -m pytest tests -q→ 179 passed (21 s);tests/regression.shis the same suite plus the live-CLI and docs stages.tasks.mdwritten back to[x]— so the bundled scripts are what was exercised.blocked-review; a dirty integration worktree produces a namedblockedaction instead of raising on everyactionscall; a hard merge failure lands inblocked-reviewinstead of sitting inintegratinguntil the 2 h lease expires.tests/test_receipt.py).Not covered by this round / 本轮未覆盖:
Version and marketplace registration / 版本与市场注册
external_plugins/baton/(33 files, 254 KiB), manifest andmarketplace.jsonentry both at 0.3.2.developer-tools; icon added at the repo-root path the entry uses (assets/baton/icon.png, 512×512).description_i18ncarriesenandzh-CN, identical in both files.README.md/README_CN.md/CHANGELOG.mdare all in the payload — the previous package file list omitted the Chinese README and the changelog, which is fixed in the source repository (14438b0).Dependencies, network, permissions, side effects / 依赖、网络、权限与副作用
git(worktrees, merges, the integration lock)..dsh/baton/queue.db, per-assignmentruns/<id>/{packet,verification,receipt}.json, the liveplan.jsonprojection, and isolated git worktrees/branches.Licensing / provenance / 许可与来源
LICENSEships in the plugin directory); code written for this submission.Self-check / 自查清单
external_plugins/baton/; existing fixes retain ownership / 插件名唯一且 kebab-case,外部新增插件位于external_plugins/baton/,已有插件修复保留原归属categoryis set independently of publisher ownership / 用途分类category已填写,与维护归属分开:developer-toolsversionbumped in BOTHplugin.jsonandmarketplace.json(artifacts are immutable) /plugin.json与marketplace.json两处版本号已同步升级:0.3.2README.md(EN) andREADME_CN.md(中文) both updated and equivalent / 中英文 README 均已更新且语义一致description_i18nhas bothenandzh-CN/description_i18n包含en与zh-CNpython3 scripts/validate.pypasses on this branch, and the plugin artifact was built through the samebuild_zip()code path CI uses (size and sha256 in the comment below). The fullpython3 scripts/build_dist.pyneeds the repo's UI-pluginpnpm buildand fails identically on upstreammain(excalidraw: incomplete build), so CI runs it here — see the note above. / 本地validate.py通过,本插件产物用 CI 同一条build_zip()路径打出(体积与 sha256 见下方评论);完整build_dist.py依赖仓库自带 UI 插件的pnpm build,在main上同样失败,交由 CI 执行