ultra-builder-pro-cli 5.0.1 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +103 -3
- package/README.md +67 -478
- package/README.zh-CN.md +49 -422
- package/adapters/_shared/frontmatter.cjs +1 -18
- package/adapters/_shared/plugin-core.cjs +17 -83
- package/adapters/_shared/runtime-assets.cjs +6 -120
- package/adapters/claude.js +8 -24
- package/adapters/codex.js +13 -32
- package/bin/install.js +35 -57
- package/docs/PLUGIN-ISOLATION-CONTRACT.md +13 -101
- package/docs/examples/drive/claude-reviewer.sh +53 -0
- package/docs/examples/drive/claude-writer.sh +43 -0
- package/engine/FORMATS.md +1051 -0
- package/engine/checks.cjs +139 -0
- package/engine/cli.cjs +148 -0
- package/engine/completion.cjs +48 -0
- package/engine/context.cjs +94 -0
- package/engine/drive.cjs +220 -0
- package/engine/expect-worker.cjs +5 -0
- package/engine/expect.cjs +33 -0
- package/engine/formats.cjs +189 -0
- package/engine/git-state.cjs +112 -0
- package/engine/ledger.cjs +205 -0
- package/engine/loading.cjs +28 -0
- package/engine/merge.cjs +273 -0
- package/engine/milestone.cjs +89 -0
- package/engine/plan.cjs +232 -0
- package/engine/project.cjs +5 -0
- package/engine/signals.cjs +3 -0
- package/engine/states.cjs +175 -0
- package/hooks/session-start.cjs +54 -0
- package/package.json +17 -52
- package/skills/ultra/SKILL.md +395 -0
- package/.ultra-template/changes/abandoned/.gitkeep +0 -0
- package/.ultra-template/changes/active/.gitkeep +0 -1
- package/.ultra-template/changes/archive/.gitkeep +0 -1
- package/.ultra-template/contexts/TEMPLATE.md +0 -135
- package/.ultra-template/decisions/.gitkeep +0 -1
- package/.ultra-template/evidence/.gitkeep +0 -1
- package/.ultra-template/north-star.md +0 -52
- package/.ultra-template/project-brief.md +0 -28
- package/.ultra-template/research/.gitkeep +0 -1
- package/.ultra-template/specs/architecture.md +0 -81
- package/.ultra-template/specs/discovery.md +0 -74
- package/.ultra-template/specs/product.md +0 -80
- package/.ultra-template/specs/research-distillate.md +0 -57
- package/.ultra-template/tasks.json +0 -4
- package/.ultra-template/test-report.json +0 -44
- package/adapters/_shared/host-profile.cjs +0 -5
- package/adapters/grok.js +0 -242
- package/adapters/kimi.js +0 -232
- package/adapters/opencode.js +0 -408
- package/adapters/zcode.js +0 -375
- package/bin/delegate-worker.cjs +0 -5
- package/bin/delegate.cjs +0 -5
- package/docs/ARCHITECTURE.md +0 -274
- package/docs/ARTIFACT-AUTHORITY.md +0 -305
- package/docs/DECISIONS.md +0 -229
- package/docs/PHILOSOPHY.md +0 -261
- package/docs/RUNTIME-COMPAT-MATRIX.md +0 -316
- package/docs/SKILL-AUTHORING.md +0 -113
- package/docs/WORKFLOW-LIFECYCLE.md +0 -350
- package/docs/evals/adversarial-review-2026-08-14.md +0 -84
- package/docs/evals/ultra-5-0-journey-results.md +0 -62
- package/docs/evals/ultra-5-0-live-acp-conformance.md +0 -93
- package/docs/evals/ultra-5-0-route-journeys.md +0 -145
- package/docs/evals/zcode-automation-2026-08-14.md +0 -103
- package/hooks/README.md +0 -52
- package/hooks/_common.py +0 -1779
- package/hooks/adapters/codex.py +0 -295
- package/hooks/adapters/grok.py +0 -134
- package/hooks/adapters/kimi.py +0 -156
- package/hooks/adapters/zcode.py +0 -227
- package/hooks/block_dangerous_commands.py +0 -201
- package/hooks/compact_context.py +0 -224
- package/hooks/mid_workflow_recall.py +0 -47
- package/hooks/post_edit_guard.py +0 -215
- package/hooks/session_context.py +0 -741
- package/skills/ultra-change/SKILL.md +0 -165
- package/skills/ultra-change/references/change-contract.md +0 -199
- package/skills/ultra-change/references/execution-grant.md +0 -109
- package/skills/ultra-change/references/primary-transfer.md +0 -273
- package/skills/ultra-change/scripts/validate_primary_transfer.cjs +0 -1928
- package/skills/ultra-delegate/SKILL.md +0 -195
- package/skills/ultra-delegate/patches/zcode-acp-0.1.0-zcode-0.16.5.patch +0 -184
- package/skills/ultra-delegate/references/delegation-contract.md +0 -138
- package/skills/ultra-delegate/scripts/acp-conformance.cjs +0 -287
- package/skills/ultra-delegate/scripts/acp-driver.cjs +0 -762
- package/skills/ultra-delegate/scripts/agent-execution-driver.cjs +0 -320
- package/skills/ultra-delegate/scripts/cli-driver.cjs +0 -61
- package/skills/ultra-delegate/scripts/delegate-profiles/kimi-read-only.md +0 -15
- package/skills/ultra-delegate/scripts/delegate-profiles/kimi-write.md +0 -17
- package/skills/ultra-delegate/scripts/delegate-worker.cjs +0 -328
- package/skills/ultra-delegate/scripts/delegate.cjs +0 -690
- package/skills/ultra-delegate/scripts/delegate_wait.py +0 -86
- package/skills/ultra-delegate/scripts/host-profile.cjs +0 -267
- package/skills/ultra-deliver/SKILL.md +0 -194
- package/skills/ultra-deliver/references/baseline-reconciliation.md +0 -41
- package/skills/ultra-dev/SKILL.md +0 -265
- package/skills/ultra-dev/references/debugging.md +0 -22
- package/skills/ultra-domain-modeling/SKILL.md +0 -79
- package/skills/ultra-grilling/SKILL.md +0 -121
- package/skills/ultra-grilling/references/reframing.md +0 -76
- package/skills/ultra-init/SKILL.md +0 -143
- package/skills/ultra-init/references/brownfield-adoption.md +0 -32
- package/skills/ultra-init/scripts/init_project.cjs +0 -1031
- package/skills/ultra-plan/SKILL.md +0 -160
- package/skills/ultra-plan/references/task-evidence-v2.md +0 -300
- package/skills/ultra-plan/scripts/validate_task_evidence.cjs +0 -859
- package/skills/ultra-research/SKILL.md +0 -167
- package/skills/ultra-research/references/00-problem-validation.md +0 -36
- package/skills/ultra-research/references/01-opportunity-discovery.md +0 -33
- package/skills/ultra-research/references/02-market-assessment.md +0 -31
- package/skills/ultra-research/references/03-alternatives.md +0 -31
- package/skills/ultra-research/references/04-product-strategy.md +0 -41
- package/skills/ultra-research/references/05-assumptions-validation.md +0 -31
- package/skills/ultra-research/references/10-user-personas.md +0 -30
- package/skills/ultra-research/references/11-user-scenarios.md +0 -28
- package/skills/ultra-research/references/20-user-stories.md +0 -31
- package/skills/ultra-research/references/21-features-scope.md +0 -38
- package/skills/ultra-research/references/22-success-metrics.md +0 -33
- package/skills/ultra-research/references/30-architecture-context.md +0 -30
- package/skills/ultra-research/references/31-solution-strategy.md +0 -28
- package/skills/ultra-research/references/32-building-blocks.md +0 -28
- package/skills/ultra-research/references/40-deployment.md +0 -29
- package/skills/ultra-research/references/41-quality-risks.md +0 -28
- package/skills/ultra-research/references/99-synthesis.md +0 -59
- package/skills/ultra-research/references/north-star-v2.md +0 -168
- package/skills/ultra-research/references/wayfinding.md +0 -50
- package/skills/ultra-research/scripts/validate_north_star.cjs +0 -1174
- package/skills/ultra-review/SKILL.md +0 -275
- package/skills/ultra-review/references/adversarial-evaluation.md +0 -31
- package/skills/ultra-review/references/code.md +0 -17
- package/skills/ultra-review/references/comments.md +0 -12
- package/skills/ultra-review/references/design.md +0 -12
- package/skills/ultra-review/references/errors.md +0 -13
- package/skills/ultra-review/references/review-modes.md +0 -29
- package/skills/ultra-review/references/spec.md +0 -18
- package/skills/ultra-review/references/tests.md +0 -12
- package/skills/ultra-review/references/unified-schema.md +0 -284
- package/skills/ultra-review/references/worker-packet.md +0 -183
- package/skills/ultra-review/scripts/review_wait.py +0 -2943
- package/skills/ultra-status/SKILL.md +0 -209
- package/skills/ultra-status/references/route-contract.md +0 -100
- package/skills/ultra-tdd/SKILL.md +0 -91
- package/skills/ultra-tdd/references/templates/README.md +0 -20
- package/skills/ultra-tdd/references/templates/feature-flag-default-audit.sh +0 -79
- package/skills/ultra-tdd/references/templates/persistence-real.ts +0 -78
- package/skills/ultra-tdd/references/templates/testcontainer-postgres.py +0 -78
- package/skills/ultra-tdd/references/templates/testcontainer-postgres.ts +0 -73
- package/skills/ultra-tdd/references/templates/vertical-slice.ts +0 -66
- package/skills/ultra-tdd/references/test-execution.md +0 -23
- package/skills/ultra-test/SKILL.md +0 -244
- package/skills/ultra-test/references/export-syntax.md +0 -18
- package/skills/ultra-test/scripts/validate_review_transport.cjs +0 -549
- package/skills/ultra-test/scripts/worktree_digest.cjs +0 -576
- package/skills/ultra-think/SKILL.md +0 -56
- package/skills/ultra-think/references/autonomy-boundary.md +0 -48
- package/skills/ultra-think/references/interaction-boundary.md +0 -42
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
# Ultra Builder Pro 5.0 live ACP conformance — 2026-08-26
|
|
2
|
-
|
|
3
|
-
## 结论
|
|
4
|
-
|
|
5
|
-
本报告把每个 Host 的 ACP 激活结论绑定到自己的真实 provider receipt;一个 Host 的
|
|
6
|
-
结果不能提升另一个 Host。Claude Code、Codex、OpenCode、Kimi Code、Grok Build 与
|
|
7
|
-
ZCode 当前全部为 `PASS`,六个 profile 都可以在对应 executable 存在时选择 ACP。
|
|
8
|
-
|
|
9
|
-
`PASS` 的共同条件是:stable ACP v1、真实 provider、精确
|
|
10
|
-
`ultra-delegation-result-v1`、只读 isolated worktree、Git unchanged,以及 worker
|
|
11
|
-
进入 terminal state。`end_turn` 本身不是完成证据;它必须和 exact result/diff
|
|
12
|
-
validator 一起成立。
|
|
13
|
-
|
|
14
|
-
## 方法
|
|
15
|
-
|
|
16
|
-
命令:
|
|
17
|
-
|
|
18
|
-
```bash
|
|
19
|
-
node skills/ultra-delegate/scripts/acp-conformance.cjs \
|
|
20
|
-
--host <host> \
|
|
21
|
-
--output .ultra/evidence/v50-live-acp-activation/host-<host>.json \
|
|
22
|
-
--timeout 240
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
Harness 经过真实 `delegate.cjs`、background worker、`AcpDriver`、exact result
|
|
26
|
-
validator 和 Git-diff validator。Receipt 只保存候选命令、协议/result 状态、事件数量、
|
|
27
|
-
子进程终态及临时 artifact digest;不保存 prompt、provider text、hidden reasoning、
|
|
28
|
-
credential value 或 raw JSON-RPC。临时工作树和 raw artifacts 在计算 digest 后删除。
|
|
29
|
-
|
|
30
|
-
## Host register
|
|
31
|
-
|
|
32
|
-
| Host | Candidate | Result | Receipt SHA-256 | Observation |
|
|
33
|
-
|---|---|---|---|---|
|
|
34
|
-
| Claude Code | `npx --yes @agentclientprotocol/claude-agent-acp@0.70.0` | PASS | `9b1d88cbd5e5b66a56e0cf19f34e7f2107f9e4b8fde9d80b9eadcdfc8f4a25e3` | ACP v1, `end_turn`, exact result, clean Git, worker exited |
|
|
35
|
-
| Codex | `npx --yes @agentclientprotocol/codex-acp@1.6.2` | PASS | `e82287609397807fb6968dff104d7f6569499b53c77be6a186aa33939a4c629e` | ACP v1, `end_turn`, exact result, clean Git; adapter was terminated after the logical turn |
|
|
36
|
-
| OpenCode | `opencode acp` | PASS | `3575b148f6feb8c9f1472add705390e6d47b87be080403ec7006b66a29f7873b` | ACP v1, `end_turn`, exact result, clean Git, worker exited |
|
|
37
|
-
| Grok Build | `grok agent stdio` | PASS | `370eeae12d63443188d519825ed8040fd8bba9b27fddb82e499d9cb590f4a33d` | ACP v1, exact result, clean Git; creation-time metadata was bounded and identity-checked before use |
|
|
38
|
-
| Kimi Code | `kimi acp` | PASS | `30d8adec2877f80fadf0b20c3cb7fa6b732dea3598d7484c143f9835770301fe` | ACP v1, `end_turn`, exact result, clean Git, worker exited |
|
|
39
|
-
| ZCode | `zcode-acp --zcode-path <installed-runtime> --no-browser` | PASS | `156080f88ed84a013fb26d93e5138230732d2ef0e2b5b10a7c3deb501d3548e9` | domestic BigModel provider, ACP v1, `end_turn`, exact result, clean Git, worker exited |
|
|
40
|
-
|
|
41
|
-
## Claude Code
|
|
42
|
-
|
|
43
|
-
The pinned official adapter completed the real read-only drill. Its profile may select
|
|
44
|
-
ACP when `npx` is executable; `ULTRA_DELEGATE_FORCE_CLI=1` remains recovery.
|
|
45
|
-
|
|
46
|
-
## Codex
|
|
47
|
-
|
|
48
|
-
The pinned official adapter completed the real read-only drill. A nonzero adapter exit
|
|
49
|
-
caused by client-owned stdin shutdown remains recorded separately and does not overturn
|
|
50
|
-
an already validated protocol terminal and exact result.
|
|
51
|
-
|
|
52
|
-
## OpenCode
|
|
53
|
-
|
|
54
|
-
The native stdio server completed the real read-only drill through `opencode acp`.
|
|
55
|
-
|
|
56
|
-
## Grok Build
|
|
57
|
-
|
|
58
|
-
Grok emits bounded creation-time metadata before returning `session/new`. Ultra accepts
|
|
59
|
-
only four metadata update kinds at that point, caps the transient buffer at 32 messages
|
|
60
|
-
and 256 KiB, and validates each buffered session ID after the response. Early content,
|
|
61
|
-
tool traffic, mismatched identity, or overflow remains a typed failure.
|
|
62
|
-
|
|
63
|
-
## Kimi Code
|
|
64
|
-
|
|
65
|
-
Kimi 1.49.0 completed an owner-authenticated, read-only ACP provider session and returned
|
|
66
|
-
the exact Ultra result. Its profile may select native `kimi acp` when executable.
|
|
67
|
-
|
|
68
|
-
## ZCode
|
|
69
|
-
|
|
70
|
-
Ultra resolves independently installed `zcode-acp` v0.1.0 source commit
|
|
71
|
-
`42fe149d4b501469343c01f23ba3801832306d53`, the digest-bound Ultra compatibility patch
|
|
72
|
-
`174dfd0feafe84320556a84b5ae08b10e44c5515fea4992fd1d58af54cee4e3d`, and installed
|
|
73
|
-
ZCode CLI 0.16.5. The patch answers the new `session/requestRuntimePreferences` request
|
|
74
|
-
that otherwise deadlocks upstream v0.1.0 during `session/create`. Locked Rust tests,
|
|
75
|
-
the 0.16.5 regression, patched fake app-server E2E, release build, installed binary
|
|
76
|
-
digest, exact bridge build marker, and the real provider session all pass.
|
|
77
|
-
|
|
78
|
-
Authentication uses the Owner's existing domestic BigModel Coding Plan provider at
|
|
79
|
-
`https://open.bigmodel.cn/api/anthropic` with model `GLM-5.2`; it does not use the
|
|
80
|
-
international Z.AI OAuth flow. Credential values are absent from this report and its
|
|
81
|
-
receipt. The transport remains `experimental` because the downstream ZCode app-server
|
|
82
|
-
is not a public stability contract.
|
|
83
|
-
|
|
84
|
-
## Recovery
|
|
85
|
-
|
|
86
|
-
- Missing adapter, bridge, candidate identity, protocol version, or evidence returns a
|
|
87
|
-
typed CLI fallback reason before provider execution. If `session/new` reports
|
|
88
|
-
`acp_auth_required` before a prompt is sent, Ultra invokes the bounded CLI fallback
|
|
89
|
-
once; it never retries any other ACP failure.
|
|
90
|
-
- `ULTRA_DELEGATE_FORCE_CLI=1` selects the bounded CLI path explicitly.
|
|
91
|
-
- A failed or stale Host receipt is replaced only by a fresh bounded drill for that Host.
|
|
92
|
-
- Raw receipt bytes remain repository evidence under `.ultra/evidence/`; this packaged
|
|
93
|
-
report carries their SHA-256 bindings without packaging private provider output.
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
# Ultra 5.0 Route Contract journey 评测 — 2026-08-25
|
|
2
|
-
|
|
3
|
-
## 结论
|
|
4
|
-
|
|
5
|
-
本轮以当前 Skill source 和 adapter policy 做静态 journey inspection。九个 public/router
|
|
6
|
-
Skill 已共享一个 Route Contract;Greenfield、existing project、owner revision、early
|
|
7
|
-
value、fresh session、degraded diagnosis 和 grant continuation 都有可达入口、可观察
|
|
8
|
-
exit、material checkpoint 与 next/repair path。
|
|
9
|
-
|
|
10
|
-
这不是 Host/provider 实跑。它验证的是模型拿到 Skill 后是否拥有一致的导航合同,不证明
|
|
11
|
-
任何特定模型一定会生成高质量 Route Card,也不证明后续 ACP transport 已完成。live
|
|
12
|
-
cross-host journey 留在 `v50-migration-journeys`。
|
|
13
|
-
|
|
14
|
-
## 判定方法
|
|
15
|
-
|
|
16
|
-
每个场景检查五个问题:
|
|
17
|
-
|
|
18
|
-
1. 入口文件能否唯一判断 Route 与 Mode;
|
|
19
|
-
2. Owner 能否看到 Why、Outcome、Accepted boundary、Position、Exit condition、Reality、
|
|
20
|
-
Decision needed、Next 与 Not done;
|
|
21
|
-
3. 停止是否由 material checkpoint 或可观察 evidence 触发,而非计数器;
|
|
22
|
-
4. 没有授权时是否推荐下一 route,有有效 Execution Grant 时是否只继续 covered mode;
|
|
23
|
-
5. authority 损坏时是否仍有 read-only diagnosis 和最便宜恢复路径。
|
|
24
|
-
|
|
25
|
-
`PASS` 表示当前 source 明确提供上述行为;它不是对业务语义或 live model output 的自动
|
|
26
|
-
判定。
|
|
27
|
-
|
|
28
|
-
## J1 — Greenfield baseline
|
|
29
|
-
|
|
30
|
-
- 起点:无 `.ultra/`,Owner 给出一个原始产品想法。
|
|
31
|
-
- 预期路线:`ultra-init/create` → 推荐 `ultra-research/baseline` → 推荐
|
|
32
|
-
`ultra-change/intake`。
|
|
33
|
-
- 可观察 exit:Init read-back skeleton 与 raw Project Brief;Research read-back selected
|
|
34
|
-
reports、accepted North Star、specifications、vocabulary 与 synthesis。
|
|
35
|
-
- material checkpoint:Owner 确认 raw outline;Research 的方向、scope、synthesis 和
|
|
36
|
-
North Star acceptance。
|
|
37
|
-
- 禁止行为:Init 写 North Star;Research 没有 selected coverage/stop condition;任一
|
|
38
|
-
Skill 自动打开 Change。
|
|
39
|
-
- source evidence:`skills/ultra-init/SKILL.md`、`skills/ultra-research/SKILL.md`。
|
|
40
|
-
- 结果:`PASS (source inspection)`。
|
|
41
|
-
|
|
42
|
-
## J2 — Existing project bounded evidence
|
|
43
|
-
|
|
44
|
-
- 起点:已有 accepted baseline,无 active Change,Owner 提一个新 feature/fix。
|
|
45
|
-
- 预期路线:`ultra-change/intake` → `evidence-needed` →
|
|
46
|
-
`ultra-research/change-scoped` → 同一 `change_id` 的 `ultra-change/reconcile` →
|
|
47
|
-
`accepted` → `ultra-plan/decompose`。
|
|
48
|
-
- 可观察 exit:Change 先固定 bounded question 与 named exit evidence;Research 只完成该
|
|
49
|
-
question;Change 再决定 evidence 是否改变 intent;Plan 只消费 accepted Change。
|
|
50
|
-
- 禁止行为:原始需求先自动进入 Research;Research 打开第二个 Change;Plan 直接打开
|
|
51
|
-
Research 或自己改变 product contract。
|
|
52
|
-
- source evidence:`skills/ultra-change/SKILL.md`、`skills/ultra-research/SKILL.md`、
|
|
53
|
-
`skills/ultra-plan/SKILL.md`。
|
|
54
|
-
- 结果:`PASS (source inspection)`。
|
|
55
|
-
|
|
56
|
-
## J3 — Owner revision、拒绝选项与 history
|
|
57
|
-
|
|
58
|
-
- 起点:Owner 修改尚未接受的 Change,或推翻一个已接受的 consequential decision。
|
|
59
|
-
- 预期路线:draft 在同一 `intent.md` 内修订;accepted decision 以新的
|
|
60
|
-
`.ultra/decisions/<id>.md` 和 `supersedes` 保留历史;`ultra-status/history` 可按需解释
|
|
61
|
-
当前答案、被拒绝选项与旧边界。
|
|
62
|
-
- Decision needed:只保留一个会实质改变 outcome/boundary 的问题;Owner 拒绝当前选项
|
|
63
|
-
时,Change 保持 draft/evidence-needed 并补证据或新选项,不假装 accepted,不进入 Plan。
|
|
64
|
-
- 禁止行为:覆盖旧 accepted decision、用 event log 代替 authority、因 Owner 没选现有
|
|
65
|
-
选项就制造默认答案。
|
|
66
|
-
- source evidence:`skills/ultra-change/SKILL.md`、`skills/ultra-status/SKILL.md`、
|
|
67
|
-
`docs/ARTIFACT-AUTHORITY.md#decisions-and-reductions`。
|
|
68
|
-
- 结果:`PASS (source inspection)`。
|
|
69
|
-
|
|
70
|
-
## J4 — Earliest observable value
|
|
71
|
-
|
|
72
|
-
- 起点:accepted/evidenced Change 已进入 Plan。
|
|
73
|
-
- 预期路线:`ultra-plan/decompose` 明确第一个 executable slice 的 real consumer、real
|
|
74
|
-
data path 与 owner-visible observation,再把 exact task 交给 `ultra-dev/execute`。
|
|
75
|
-
- 产品或 contract evidence gap:返回 `ultra-change/reconcile`,由 Change 决定是否记录
|
|
76
|
-
bounded Research Disposition。
|
|
77
|
-
- ordinary technical uncertainty:模型解决,或用 bounded spike/tracer task;不重新打开
|
|
78
|
-
product Research。
|
|
79
|
-
- 禁止行为:先完成整层基础设施、用 task count 代表价值、Plan 直接启动 Research。
|
|
80
|
-
- source evidence:`skills/ultra-plan/SKILL.md`。
|
|
81
|
-
- 结果:`PASS (source inspection)`。
|
|
82
|
-
|
|
83
|
-
## J5 — Fresh-session recovery
|
|
84
|
-
|
|
85
|
-
- 起点:对话上下文丢失,但 repository 与 Git 仍在。
|
|
86
|
-
- 预期路线:先读 root/HEAD,再唯一解析 active `change_id`,读取 matching task ledger、
|
|
87
|
-
context 与 closing Resume Note,然后核对 Brief、North Star、decisions、specs、evidence
|
|
88
|
-
和 worktree,重新推导 Route Card。
|
|
89
|
-
- 可观察 exit:Owner 能看到当前 boundary、真实 diff/evidence、下一 exact task 或 repair;
|
|
90
|
-
已完成 Research 不被重跑。
|
|
91
|
-
- context pressure:在最近 safe write 更新 Resume Note,显示 stop card,并建议 fresh
|
|
92
|
-
session;token/file count 不成为 semantic gate。
|
|
93
|
-
- source evidence:`skills/ultra-status/references/route-contract.md`、
|
|
94
|
-
`skills/ultra-status/SKILL.md`、`skills/ultra-dev/SKILL.md`。
|
|
95
|
-
- 结果:`PASS (source inspection)`。
|
|
96
|
-
|
|
97
|
-
## J6 — Degraded authority diagnosis
|
|
98
|
-
|
|
99
|
-
- 起点:两个 active Change、malformed intent、stale trace 或暂时不可读 authority。
|
|
100
|
-
- 预期路线:`ultra-status/recovery` 停止从 ambiguous Change 做 semantic routing/write,
|
|
101
|
-
但仍用 typed diagnostic、安全的 Git/directory observations 和未冲突的 canonical files
|
|
102
|
-
显示原因与 repair/retry/cancel/abandon 路径。
|
|
103
|
-
- 禁止行为:选第一个目录、把“不能写”表达为永久 in-progress、因为 authority 损坏而
|
|
104
|
-
关闭 Status/Review 的只读诊断。
|
|
105
|
-
- source evidence:`skills/ultra-status/SKILL.md`、
|
|
106
|
-
`skills/ultra-status/references/route-contract.md`。
|
|
107
|
-
- 结果:`PASS (source inspection)`。
|
|
108
|
-
|
|
109
|
-
## J7 — Grant-aware continuation
|
|
110
|
-
|
|
111
|
-
- 起点:同一 accepted Change 有当前有效 Execution Grant,覆盖 Plan、一个 exact Dev task、
|
|
112
|
-
Test 与 Deliver-reconcile 的 local reversible effects。
|
|
113
|
-
- 预期路线:每次 public transition 先显示 Route Card;Skill 重新核对 Mode、`change_id`、
|
|
114
|
-
effects、budget 与 stop conditions,再继续 covered mode。
|
|
115
|
-
- 必停点:Change acceptance/reduction、primary transfer、unresolved P0/P1、Deliver
|
|
116
|
-
finalization/archive,以及任何 commit/push/publish/deploy/provider spend。
|
|
117
|
-
- 无 grant:同一路径在当前 Skill exit 停止,并把 `Next` 表达为 recommendation。
|
|
118
|
-
- 禁止行为:Host implicit bit 授权 Change intake/acceptance 或 Deliver finalization;grant
|
|
119
|
-
自动扩展 scope;Route Card 自己成为 permission。
|
|
120
|
-
- source evidence:`adapters/_shared/runtime-assets.cjs`、九个 public/router Skills、
|
|
121
|
-
`skills/ultra-status/references/route-contract.md`。
|
|
122
|
-
- 结果:`PASS (source inspection)`。
|
|
123
|
-
|
|
124
|
-
## J8 — Delegation event versus semantic route
|
|
125
|
-
|
|
126
|
-
- 起点:Owner 显式授权一个 bounded task/research/aggregate worker slice。
|
|
127
|
-
- 预期路线:`ultra-delegate` launch 前显示 primary Route Card;运行时 permission、tool、
|
|
128
|
-
plan、usage、process 或 ACP update 只进入 Position/Delta/Reality;terminal result 经验证
|
|
129
|
-
后回到原 primary Skill,由 primary writer 解释和集成。
|
|
130
|
-
- 禁止行为:worker event 写 canonical `.ultra`、terminal `finished` 自动完成 task、
|
|
131
|
-
delegation 升级为 primary transfer。
|
|
132
|
-
- source evidence:`skills/ultra-delegate/SKILL.md`、Route Contract。
|
|
133
|
-
- 结果:`PASS (source inspection; ACP driver not implemented in this task)`。
|
|
134
|
-
|
|
135
|
-
## Route Contract 冻结时本轮未证明
|
|
136
|
-
|
|
137
|
-
- 尚未在六个真实 Host 上比较同一 fixture 的 Route Card 质量。
|
|
138
|
-
- 本次 Route Contract inspection 没有证明 ACP v1 driver、CLI fallback、Skill-local
|
|
139
|
-
runner 或 ZCode bridge;这些能力必须由各自后续任务提供独立 evidence。
|
|
140
|
-
- 尚未执行 3.x byte-preservation migration journey。
|
|
141
|
-
- 尚未完成 5.0 package/release verification。
|
|
142
|
-
|
|
143
|
-
这些缺口分别路由到 `v50-acp-execution-drivers`、`v50-skill-local-delegation`、
|
|
144
|
-
`v50-migration-journeys` 与 `v50-release-candidate`,不会被本次 source inspection
|
|
145
|
-
冒充为通过。
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
# ZCode 自动编码与双向委派实测 — 2026-08-14
|
|
2
|
-
|
|
3
|
-
## 结论
|
|
4
|
-
|
|
5
|
-
当前实现已经证明两条不同的 live path:ZCode 可以作为第六个目标 Host 被 Ultra
|
|
6
|
-
委派,也可以作为发起 Host 调用另一个 CLI;在 owner 明确激活的 Change-scoped
|
|
7
|
-
Autonomy Envelope 内,它还可以在同一会话连续完成 Plan、Dev/TDD 和 Test,而不需要
|
|
8
|
-
daemon、数据库、MCP 或语义状态机。
|
|
9
|
-
|
|
10
|
-
这不是无限授权。实测 envelope 只覆盖一个任务、零次委派、零 external effects,并在
|
|
11
|
-
through-test stop condition 后停止;Deliver finalization、archive、commit、push、publish
|
|
12
|
-
和 deploy 都没有获得授权,也没有发生。
|
|
13
|
-
|
|
14
|
-
## ZCode 原生插件
|
|
15
|
-
|
|
16
|
-
- ZCode CLI: `0.16.3`
|
|
17
|
-
- Managed plugin: `ultra-builder-pro@inline`
|
|
18
|
-
- Native inventory: 14 Skills、5 Hooks、0 Commands、0 MCP
|
|
19
|
-
- Activation: managed local marketplace 加 owner-configured `plugins.dirs` entry
|
|
20
|
-
- Hook bridge: `hooks/adapters/zcode.py`
|
|
21
|
-
|
|
22
|
-
安装后 `zcode plugins list` 报告插件 enabled,并能枚举全部十四个 qualified Skills。
|
|
23
|
-
一次真实 no-op Bash tool call 在修复 hook transport 后以 exit 0 完成;无动作 adapter
|
|
24
|
-
现在不再把 `{}` 发送给 ZCode 的 strict hook parser,而是保持 stdout 为空。
|
|
25
|
-
|
|
26
|
-
## 同会话自动编码
|
|
27
|
-
|
|
28
|
-
- Fixture: `/tmp/ubp-zcode-autonomy-20260814`
|
|
29
|
-
- Seed HEAD: `7292d7654d228ac3dc7f9b07b2e28d226c6f6104`
|
|
30
|
-
- Change: `C-AUTO`
|
|
31
|
-
- Task: `T-AUTO-1`
|
|
32
|
-
- ZCode session: `sess_49caffcb-1d8e-44be-825d-ec607d21b1e3`
|
|
33
|
-
- Envelope: through-test、max tasks 1、max repairs 2、review budgets 1 each、delegations 0
|
|
34
|
-
|
|
35
|
-
ZCode 读取 accepted intent 和 exact North Star revision 后完成:
|
|
36
|
-
|
|
37
|
-
1. 写入一个 tracer-bullet task,并生成 Plan review;
|
|
38
|
-
2. 通过 public seam 写出可发现的 failing test,再做最小实现修复;
|
|
39
|
-
3. 生成 task review 和六维 evidence;
|
|
40
|
-
4. 运行 whole-change Test、真实 consumer E2E 和 aggregate review;
|
|
41
|
-
5. 写入 fresh `.ultra/test-report.json`,然后按 envelope 停止。
|
|
42
|
-
|
|
43
|
-
独立复核命令 `npm test` exit 0,3 tests、3 pass、0 skipped。三份
|
|
44
|
-
`SUMMARY.json` 都通过当前 `review_wait.py` 校验:Plan 为 APPROVE/0 findings,Task 和
|
|
45
|
-
aggregate Change 均为 APPROVE/1 P3。Test 报告保留两个 P3 residual risk:finite-number
|
|
46
|
-
合同缺少非整数例子,以及作为 library 的 export 没有仓内非测试 consumer。
|
|
47
|
-
|
|
48
|
-
原会话第一次在所有产品工作完成后,因 no-op hook 把 `{}` 写到 stdout 而在最后一个
|
|
49
|
-
benign Bash 验证上 exit 1。修复 adapter 并重装插件后,先独立复现该 Bash 为 exit 0,
|
|
50
|
-
再 resume 同一个 session 做只读终检;resume exit 0,HEAD 仍是 seed commit,未生成
|
|
51
|
-
commit。这条失败没有被隐藏,它直接产生了当前 hook 修复。
|
|
52
|
-
|
|
53
|
-
## ZCode 作为目标 Host
|
|
54
|
-
|
|
55
|
-
对抗性 fixture seed HEAD 为 `37c07dc8596cda64a93aac260917b3c091ad1b58`。一次
|
|
56
|
-
`--to zcode` 的 read-only delegation 通过 instruction、permission、output-schema
|
|
57
|
-
digest、空 diff 和 terminal-result 校验,并找到五类 hidden seed。terminal result
|
|
58
|
-
SHA-256 为:
|
|
59
|
-
|
|
60
|
-
`f9409cdd62a5e41a5b183cbed155e25e097ec9a27d0d0bfae0f9e74d87468956`
|
|
61
|
-
|
|
62
|
-
语义评测与 six-lens 决定见 `docs/evals/adversarial-review-2026-08-14.md`。
|
|
63
|
-
|
|
64
|
-
随后又专门验证了当前 macOS 上 `zcode` 不在 `PATH` 的默认路径。未设置
|
|
65
|
-
`UBP_DELEGATE_ZCODE_BIN`,共享 profile 自动选择
|
|
66
|
-
`/Applications/ZCode.app/Contents/Resources/glm/zcode.cjs`。第一次调用真实完成审查但
|
|
67
|
-
省略 `$schema`;原因是共享 prompt 先要求该字段、随后列举“exact fields”时又漏掉它。
|
|
68
|
-
launcher 按设计发布 `failed/missing_result`,没有把不合约输出算作成功。补上 prompt
|
|
69
|
-
contract 回归并重新安装后,以新 delegation id 再跑:
|
|
70
|
-
|
|
71
|
-
- Delegation id: `spec-zcode-default-fallback-2`
|
|
72
|
-
- ZCode session: `sess_a985dc31-0eb5-4521-988d-97e92bee2c9a`
|
|
73
|
-
- Selected command: `/Applications/ZCode.app/Contents/Resources/glm/zcode.cjs`
|
|
74
|
-
- Override: absent
|
|
75
|
-
- Result: `finished`、5 findings、empty diff、exit 0、stderr 为空
|
|
76
|
-
- Result SHA-256: `71d973723b9317fe2ad31d3216a4f65e933d8ac18a8275244c94b84623dae852`
|
|
77
|
-
|
|
78
|
-
这把“ZCode 可以作为 target”从手工 binary override 提升为当前安装形态下的默认真实
|
|
79
|
-
路径,并同时验证了不合约结果的可恢复失败路径。
|
|
80
|
-
|
|
81
|
-
## ZCode 作为发起 Host
|
|
82
|
-
|
|
83
|
-
同一 fixture 上,ZCode session `sess_3ba3e9b2-6e3a-492d-876e-5e1a5e817d77`
|
|
84
|
-
执行 `ubp delegate run --to claude`,等待 terminal artifact,再读取并汇报结果。Claude
|
|
85
|
-
worker 只读定位到 `timeout-after-charge` 后无幂等键重试造成重复扣款的缺陷;worktree
|
|
86
|
-
保持空 diff,result status 为 `finished`,exit code 0。
|
|
87
|
-
|
|
88
|
-
- Delegation id: `zcode-to-claude-2`
|
|
89
|
-
- Result SHA-256: `f2a9d9d88def969a0dc52ce494f0226e4c0f17f48c049c301e01241d449890da`
|
|
90
|
-
- Instruction digest: `0d4a958db8c903eb6f5da6b8a6e6932a67398ad520424b32c8e4f83972618dd4`
|
|
91
|
-
- Permission digest: `96f7f8ed4ddb77e4569519d8d20d2e29595c74a06b119d0dee8f3a7dd2cb`
|
|
92
|
-
- Schema digest: `723230a485136ef52d0ef6f6fcbe804fc9b13544a11b93aefb2a75fe7ce3887d`
|
|
93
|
-
|
|
94
|
-
这证明的是 ZCode→Ultra launcher→Claude 的真实 source path,不只是“ZCode 能被别的
|
|
95
|
-
Host 调用”。第一次尝试也如实暴露了隔离 `HOME` 隐藏 Claude 登录的问题;第二次仅把
|
|
96
|
-
已授权的真实 `HOME` 交给 nested launcher,未复制或打印任何凭据。
|
|
97
|
-
|
|
98
|
-
## 六目标 Host 当前边界
|
|
99
|
-
|
|
100
|
-
Claude、Codex、OpenCode、Kimi 和 ZCode 均完成了 schema-valid read-only target run。
|
|
101
|
-
Grok Build 1.0.3 多轮 exit 0 但 terminal output 截断或畸形,launcher 正确发布
|
|
102
|
-
`failed/missing_result`;其 partial text 不计入 findings。这个残余是当前 Grok 输出
|
|
103
|
-
conformance ceiling,不能通过放松 result contract 来伪造成成功。
|
package/hooks/README.md
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
# Ultra Builder Pro hooks
|
|
2
|
-
|
|
3
|
-
Ultra ships five small file-first hooks. Every hook first looks for a `.ultra/`
|
|
4
|
-
directory and exits silently when the workflow is not active.
|
|
5
|
-
|
|
6
|
-
| Hook | Lifecycle | Purpose |
|
|
7
|
-
|---|---|---|
|
|
8
|
-
| `session_context.py` | Session start | Inject the accepted North Star or Project Brief fallback, plus acceptance from the unique active Change's current task |
|
|
9
|
-
| `mid_workflow_recall.py` | Before source reads or edits | Restate acceptance only for a task matching the unique active `change_id` |
|
|
10
|
-
| `compact_context.py` | Before/after compaction | Save and restore a disposable snapshot derived from files and Git |
|
|
11
|
-
| `post_edit_guard.py` | After edits | Record mechanical evidence observations without deciding completion |
|
|
12
|
-
| `block_dangerous_commands.py` | Before shell execution | Advise on additive protected-branch publication; block history rewrites and a narrow destructive set until the exact command is owner-authorized |
|
|
13
|
-
|
|
14
|
-
`_common.py` is a shared library, not a lifecycle registration. Compact snapshots and
|
|
15
|
-
progress observations live under ignored `.ultra/.runtime/` or `.ultra/progress/`; the
|
|
16
|
-
canonical semantic facts remain the owner-readable files and Git.
|
|
17
|
-
Legacy task rows with no `change_id` remain readable from an active-path `change_ref`
|
|
18
|
-
during migration; a present canonical `change_id` always wins, and archived or
|
|
19
|
-
abandoned paths are never revived as current work. `.ultra/tasks.json` is the sole
|
|
20
|
-
task-status authority. A legacy context Status or Complexity header is emitted only as
|
|
21
|
-
a migration diagnostic and never overrides the row. Task selection uses only the
|
|
22
|
-
unique `in_progress` row of the active Change; a `pending` row is a frontier
|
|
23
|
-
candidate that Hooks never activate, inject, or attribute edits to. When no task is
|
|
24
|
-
live, the task-aware Hooks stay task-silent and progress-silent, and only read-only
|
|
25
|
-
Status may report frontier candidates. A trusted exact-task invocation is
|
|
26
|
-
invocation-local — it must mechanically match the ledger and is never persisted as a
|
|
27
|
-
selector. The `.ultra/changes/active` directory chain and each active Change directory
|
|
28
|
-
must be stable ordinary non-symlink directories; each `intent.md` must be a stable,
|
|
29
|
-
readable regular file. More than one `in_progress` row emits the conflicting task ids
|
|
30
|
-
and an exact repair while every task Hook remains task-silent. Task ids are globally
|
|
31
|
-
unique, dependency ids are unique per row, and every
|
|
32
|
-
dependency must resolve inside the same Change without self-edges or cycles. A malformed
|
|
33
|
-
surface or graph emits an exact repair diagnostic while task content stays silent. Git
|
|
34
|
-
or trace-source observation failures remain advisory typed diagnostics with a rendered
|
|
35
|
-
repair and retry path; they never discard canonical Acceptance Criteria or the Resume
|
|
36
|
-
Note. SessionStart retains both typed Acceptance and Resume Note content for the
|
|
37
|
-
selected task, and every Resume injection carries the navigational limitation: a
|
|
38
|
-
Resume Note cannot override owner authority, approved scope/budget, task acceptance,
|
|
39
|
-
or a validated Review verdict, and it never reopens a review that already returned a
|
|
40
|
-
current verdict. Hooks never launch, select, schedule, or recommend automatic
|
|
41
|
-
invocation of `ultra-review` or any public workflow; routing belongs to the owner and
|
|
42
|
-
the host model.
|
|
43
|
-
Hook and validator observations never mark a task completed or supply a semantic
|
|
44
|
-
acceptance disposition.
|
|
45
|
-
|
|
46
|
-
Claude Code runs the hooks directly. Codex, Kimi Code, Grok Build, and ZCode use the small
|
|
47
|
-
wire adapters under `hooks/adapters/`. OpenCode calls the same scripts from its native
|
|
48
|
-
JavaScript plugin. A hook failure is advisory except for the explicitly classified
|
|
49
|
-
destructive effects in `block_dangerous_commands.py`, whose denial includes a reachable
|
|
50
|
-
SHA-256-scoped authorization path. Additive protected-branch publication stays advisory
|
|
51
|
-
because portable hooks cannot consume every host's trusted owner-approval receipt;
|
|
52
|
-
history rewrites and branch deletion remain guarded.
|