ultra-builder-pro-cli 3.0.2 → 5.0.1
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/.ultra-template/contexts/TEMPLATE.md +6 -0
- package/CHANGELOG.md +83 -1
- package/README.md +126 -36
- package/README.zh-CN.md +440 -0
- package/adapters/_shared/host-profile.cjs +3 -151
- package/adapters/_shared/plugin-core.cjs +57 -0
- package/adapters/_shared/runtime-assets.cjs +64 -12
- package/adapters/codex.js +3 -6
- package/bin/delegate-worker.cjs +2 -345
- package/bin/delegate.cjs +3 -530
- package/docs/ARCHITECTURE.md +59 -18
- package/docs/ARTIFACT-AUTHORITY.md +21 -5
- package/docs/DECISIONS.md +31 -10
- package/docs/PLUGIN-ISOLATION-CONTRACT.md +28 -12
- package/docs/RUNTIME-COMPAT-MATRIX.md +106 -26
- package/docs/SKILL-AUTHORING.md +15 -3
- package/docs/WORKFLOW-LIFECYCLE.md +83 -29
- package/docs/evals/ultra-5-0-journey-results.md +62 -0
- package/docs/evals/ultra-5-0-live-acp-conformance.md +93 -0
- package/docs/evals/ultra-5-0-route-journeys.md +145 -0
- package/package.json +2 -1
- package/skills/ultra-change/SKILL.md +30 -4
- package/skills/ultra-delegate/SKILL.md +80 -7
- package/skills/ultra-delegate/patches/zcode-acp-0.1.0-zcode-0.16.5.patch +184 -0
- package/skills/ultra-delegate/references/delegation-contract.md +60 -1
- package/skills/ultra-delegate/scripts/acp-conformance.cjs +287 -0
- package/skills/ultra-delegate/scripts/acp-driver.cjs +762 -0
- package/skills/ultra-delegate/scripts/agent-execution-driver.cjs +320 -0
- package/skills/ultra-delegate/scripts/cli-driver.cjs +61 -0
- package/skills/ultra-delegate/scripts/delegate-worker.cjs +328 -0
- package/skills/ultra-delegate/scripts/delegate.cjs +690 -0
- package/skills/ultra-delegate/scripts/host-profile.cjs +267 -0
- package/skills/ultra-deliver/SKILL.md +13 -0
- package/skills/ultra-dev/SKILL.md +18 -2
- package/skills/ultra-init/SKILL.md +12 -0
- package/skills/ultra-plan/SKILL.md +21 -3
- package/skills/ultra-research/SKILL.md +33 -5
- package/skills/ultra-status/SKILL.md +37 -7
- package/skills/ultra-status/references/route-contract.md +100 -0
- package/skills/ultra-test/SKILL.md +16 -1
- /package/{adapters/_shared → skills/ultra-delegate/scripts}/delegate-profiles/kimi-read-only.md +0 -0
- /package/{adapters/_shared → skills/ultra-delegate/scripts}/delegate-profiles/kimi-write.md +0 -0
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
# Ultra Builder Pro workflow lifecycle
|
|
2
2
|
|
|
3
|
-
Ultra
|
|
3
|
+
Ultra 5.0 has no fixed runtime state machine. Skills define checkable entry and exit
|
|
4
4
|
criteria; repository files record facts; the host model chooses the route.
|
|
5
5
|
|
|
6
6
|
## Capability flow
|
|
7
7
|
|
|
8
8
|
```text
|
|
9
|
-
ultra-init ──raw Project Brief──► ultra-research
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
ultra-init/create|recover ──raw Project Brief──► ultra-research/baseline
|
|
10
|
+
│
|
|
11
|
+
▼
|
|
12
|
+
ultra-change/intake
|
|
13
|
+
│
|
|
14
|
+
┌── ultra-research/change-scoped ◄──┤ evidence-needed
|
|
15
|
+
└── ultra-change/reconcile ─────────┘
|
|
16
|
+
│ accepted
|
|
17
|
+
▼
|
|
12
18
|
|
|
13
19
|
ultra-change ─► ultra-plan ─► ultra-dev (per task) ─► ultra-test ─► ultra-deliver
|
|
14
20
|
▲ │ │
|
|
@@ -18,14 +24,16 @@ ultra-status read-only router at any point
|
|
|
18
24
|
ultra-delegate orthogonal bounded execution on another CLI
|
|
19
25
|
```
|
|
20
26
|
|
|
21
|
-
Arrows are recommendations
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
Arrows are recommendations unless a live owner-activated Execution Grant authorizes the
|
|
28
|
+
exact next mode. Public modes are either `explicit-entry`, `grant-continuable`, or
|
|
29
|
+
read-only `router`; model-only methods are `model-discipline`. Scoped Research,
|
|
30
|
+
same-Change reconciliation, Plan, Dev, Test, and Deliver reconciliation may continue
|
|
31
|
+
only when the grant covers the same `change_id`, mode, effects, and stop conditions.
|
|
32
|
+
Init, Change intake/evidence/acceptance/abandonment/primary transfer, Delegate, Deliver
|
|
33
|
+
finalization, archive, and every external effect remain explicit-entry. Status remains
|
|
34
|
+
owner-invoked, read-only, and supplies no continuation authority. Delivery archives one stable
|
|
35
|
+
`change_id`; the next request opens a new active id while prior task rows remain in the
|
|
36
|
+
append-only ledger.
|
|
29
37
|
|
|
30
38
|
## Topology and checkpoints
|
|
31
39
|
|
|
@@ -43,10 +51,14 @@ Every owner-facing checkpoint — a WIP at a stop, a closing Resume Note, a deli
|
|
|
43
51
|
report — carries the eight fixed semantics defined in
|
|
44
52
|
[artifact authority](ARTIFACT-AUTHORITY.md#owner-checkpoint-semantics): why, outcome,
|
|
45
53
|
accepted boundary, delta, reality, decision needed, next bounded action, and not-done.
|
|
46
|
-
|
|
47
|
-
|
|
54
|
+
The shared [Route Contract](../skills/ultra-status/references/route-contract.md) adds
|
|
55
|
+
Route, Mode, Position, and Exit condition as navigation around those semantics. Every
|
|
56
|
+
public Skill shows the card at entry, a material checkpoint, pause/blocked exit, normal
|
|
57
|
+
exit, and before a public transition. Cards are derived observations, not stage markers,
|
|
58
|
+
permission, or persisted route state; alignment failure stops work until the owner
|
|
59
|
+
re-accepts an outcome.
|
|
48
60
|
|
|
49
|
-
## Common entry contract
|
|
61
|
+
## Common mode-aware entry contract
|
|
50
62
|
|
|
51
63
|
Every user-invoked Skill reads, in order:
|
|
52
64
|
|
|
@@ -62,6 +74,11 @@ Every user-invoked Skill reads, in order:
|
|
|
62
74
|
Missing files produce a precise recovery or initialization recommendation. They do not
|
|
63
75
|
cause the Skill to invent a state transition.
|
|
64
76
|
|
|
77
|
+
After reading these facts, the Skill chooses only one mode declared in its own Route
|
|
78
|
+
table and emits the entry Route Card. If model-selected, it revalidates that this mode is
|
|
79
|
+
grant-continuable and that the grant covers the same Change and effects. Host metadata
|
|
80
|
+
is only coarse discovery; it never substitutes for this runtime check.
|
|
81
|
+
|
|
65
82
|
## Initialization
|
|
66
83
|
|
|
67
84
|
Init writes the raw Project Brief and stable empty skeleton. `ultra-init` preserves the
|
|
@@ -73,22 +90,29 @@ launch another workflow.
|
|
|
73
90
|
|
|
74
91
|
## Research
|
|
75
92
|
|
|
76
|
-
Research turns the brief into an accepted North
|
|
77
|
-
|
|
93
|
+
Research has two modes. `baseline` explicitly turns the brief into an accepted North
|
|
94
|
+
Star and evidence-backed baseline. `change-scoped` answers only one active Change's
|
|
95
|
+
recorded Research Disposition and returns named evidence to that same Change for
|
|
96
|
+
reconciliation. `ultra-research` uses Wayfinding only when a multi-lens path is unclear,
|
|
97
|
+
then records entry question, selected lenses, omissions, dependencies, source plan,
|
|
98
|
+
material checkpoints, observable stop condition, and return route before mapping the
|
|
78
99
|
question to the smallest useful subset of seventeen focused references. The first six
|
|
79
100
|
are semantic lenses with real dependencies: `00` precedes `01`; conditional `02` and
|
|
80
101
|
`03` may fan out after the boundary is known; `04` consumes their relevant conclusions
|
|
81
102
|
and is the first owner checkpoint; `05` extracts assumptions from `00` through `04`.
|
|
82
103
|
Grilling controls how missing owner inputs are asked, Think tests one consequential
|
|
83
104
|
decision, and Domain Modeling writes settled vocabulary; none owns the Research route.
|
|
84
|
-
The
|
|
85
|
-
three specifications, and a source-hash-bound distillate.
|
|
105
|
+
The baseline synthesis promotes accepted conclusions into the North Star, `CONTEXT.md`,
|
|
106
|
+
three specifications, and a source-hash-bound distillate. A change-scoped run updates
|
|
107
|
+
only its mapped sections and never changes Change acceptance on its own. Lens counts are
|
|
108
|
+
navigation facts, not semantic progress or a completion signal.
|
|
86
109
|
|
|
87
110
|
## Change reconciliation
|
|
88
111
|
|
|
89
|
-
Change updates only the touched baseline rather than rebuilding it.
|
|
90
|
-
|
|
91
|
-
|
|
112
|
+
Change updates only the touched baseline rather than rebuilding it. Its visible modes
|
|
113
|
+
are `intake`, `evidence-needed`, `reconcile`, and `accepted`. `ultra-change` first
|
|
114
|
+
compares requested behavior with accepted product truth and current code. It classifies
|
|
115
|
+
changes by the resulting commitments:
|
|
92
116
|
|
|
93
117
|
- expansion and correction may proceed inside accepted intent;
|
|
94
118
|
- a reduction waits for explicit owner authority.
|
|
@@ -99,6 +123,16 @@ existing evidence; `bounded` or `required` names the exact question, lenses, and
|
|
|
99
123
|
evidence. Unsatisfied exit evidence routes to Research, then back through Change
|
|
100
124
|
reconciliation before planning when the accepted contract needs an update.
|
|
101
125
|
|
|
126
|
+
Draft intent is mutable. Revising a consequential accepted answer creates a superseding
|
|
127
|
+
decision record so Status can reconstruct history without treating an event log as
|
|
128
|
+
authority. Only same-Change, non-material `reconcile` may continue under a valid grant;
|
|
129
|
+
opening or accepting a boundary, abandoning it, reducing a commitment, or changing the
|
|
130
|
+
canonical writer is an explicit owner checkpoint.
|
|
131
|
+
|
|
132
|
+
If the owner rejects the offered options as inadequate, Change preserves that answer,
|
|
133
|
+
keeps the draft unresolved, and returns to evidence or materially different options. It
|
|
134
|
+
never selects the closest rejected option or advances to Plan by default.
|
|
135
|
+
|
|
102
136
|
A micro edit that makes no specification sentence false stays outside the Ultra
|
|
103
137
|
lifecycle and uses ordinary repository TDD/verification. Once an active Change exists,
|
|
104
138
|
Plan creates the smallest graph justified by the real seams, evidence, review, and
|
|
@@ -121,6 +155,12 @@ coupling and recovery risk justify a whole-path check. Cycles and broken trace p
|
|
|
121
155
|
repaired before handoff. Complexity, file, task, line, and context counts are
|
|
122
156
|
observations rather than plan-quality gates.
|
|
123
157
|
|
|
158
|
+
Plan names the earliest executable tracer bullet's real consumer, real data path, and
|
|
159
|
+
owner-visible observation. A product or contract evidence gap returns to
|
|
160
|
+
`ultra-change/reconcile`; Change decides whether bounded Research is required. Ordinary
|
|
161
|
+
technical uncertainty remains model-owned or becomes a bounded spike/tracer task, so
|
|
162
|
+
Plan never bypasses Change by opening product Research directly.
|
|
163
|
+
|
|
124
164
|
## Task development
|
|
125
165
|
|
|
126
166
|
`ultra-dev` writes the implementation plan into the task context before code. It uses
|
|
@@ -208,17 +248,17 @@ effects. Readiness grants none automatically.
|
|
|
208
248
|
`ultra-status` infers the smallest next route from observable files:
|
|
209
249
|
|
|
210
250
|
- no healthy skeleton or usable raw brief → init;
|
|
211
|
-
- raw brief without an accepted baseline
|
|
251
|
+
- raw brief without an accepted baseline → baseline research;
|
|
212
252
|
- requested outcome without active Change → change;
|
|
213
253
|
- draft or blocking active intent → change;
|
|
214
|
-
- unsatisfied Research Disposition → research;
|
|
254
|
+
- unsatisfied Research Disposition → change-scoped research, then the same Change reconciliation;
|
|
215
255
|
- active Change without matching executable tasks → plan;
|
|
216
256
|
- the unique matching `in_progress` task → dev;
|
|
217
257
|
- only `pending` tasks remaining → report them as frontier candidates and recommend
|
|
218
258
|
one exact task id for an explicit owner invocation of dev;
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
259
|
+
- a completed ledger row with missing, stale, or invalid v2 evidence/task review → dev
|
|
260
|
+
to record affected criteria and reason, explicitly reopen, and repair provenance;
|
|
261
|
+
- completed current-Change tasks with current v2 evidence and no matching fresh report → test;
|
|
222
262
|
- false report → route by finding and owner disposition, not by the boolean alone;
|
|
223
263
|
- fresh, dispositioned report and unarchived Change → deliver.
|
|
224
264
|
|
|
@@ -229,6 +269,12 @@ replays the existing structural validators; they observe transport and freshness
|
|
|
229
269
|
never decide semantic acceptance. Age, complexity, and file/task counts may be reported
|
|
230
270
|
as context but never decide staleness or quality. It does not mutate artifacts.
|
|
231
271
|
|
|
272
|
+
Status outputs the Route Card by default and expands `history`, `installation`,
|
|
273
|
+
`delegation`, or `recovery` on request. An ambiguous or malformed active authority stops
|
|
274
|
+
semantic routing and writes, but not diagnosis: recovery mode reports the typed fact,
|
|
275
|
+
safe Git/directory observations, and the cheapest repair/retry/cancel/abandon path
|
|
276
|
+
without selecting an ambiguous intent as truth.
|
|
277
|
+
|
|
232
278
|
## Delegation
|
|
233
279
|
|
|
234
280
|
`ultra-delegate` is orthogonal to the lifecycle and requires explicit owner authority.
|
|
@@ -238,6 +284,10 @@ the latter two may be read-only and do not require a task, so both pre-Plan evid
|
|
|
238
284
|
post-task review remain reachable. Every scope still binds the one active `change_id`, a
|
|
239
285
|
clean isolated worktree, strict permission/result schemas, and primary-host inspection.
|
|
240
286
|
The worker cannot write canonical `.ultra` files or perform external effects.
|
|
287
|
+
Delegation itself is explicit-entry. Tool calls, plans, usage, permissions, process
|
|
288
|
+
output, ACP updates, and terminal transport state remain execution observations; only
|
|
289
|
+
the primary writer interprets the validated result against Research, task, review, or
|
|
290
|
+
Test acceptance and selects the semantic route.
|
|
241
291
|
|
|
242
292
|
## Artifact closure
|
|
243
293
|
|
|
@@ -263,7 +313,7 @@ session contains `WORKER-PACKET.json`, `ADMISSION.json`, every selected speciali
|
|
|
263
313
|
artifact, and `SUMMARY.json`; retain it until aggregate Test and Deliver have both consumed it
|
|
264
314
|
successfully, then it may be garbage-collected. Premature loss requires a fresh Review
|
|
265
315
|
and Test; never reconstruct the old receipt. Other derived observations keep their
|
|
266
|
-
explicit rebuild or rerun paths. No route creates an unowned drift log,
|
|
316
|
+
explicit rebuild or rerun paths. No route creates an unowned drift log, parallel planning file,
|
|
267
317
|
technical-debt report, or second delivery summary.
|
|
268
318
|
|
|
269
319
|
## Interruption and cross-host continuation
|
|
@@ -275,7 +325,11 @@ task, evidence, or report authority would lose meaning.
|
|
|
275
325
|
|
|
276
326
|
Before stopping, the active task context records current facts, exact verification,
|
|
277
327
|
open questions, Completion, and a closing Resume Note. The next session or host repeats
|
|
278
|
-
the common entry contract
|
|
328
|
+
the common entry contract, compares the working tree with those claims, and derives a
|
|
329
|
+
fresh Route Card. It does not rerun completed Research merely because conversation
|
|
330
|
+
memory is gone. When context pressure threatens a reliable continuation, the current
|
|
331
|
+
Agent finishes the nearest safe write, refreshes the Resume Note, shows a stop card, and
|
|
332
|
+
recommends a fresh session; context size does not become route authority.
|
|
279
333
|
|
|
280
334
|
This path remains valid when hooks and `ubp` are disabled. A compact snapshot may be
|
|
281
335
|
used as a hint, then checked against canonical files and Git.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Ultra Builder Pro 5.0 journey 验收结果 — 2026-08-26
|
|
2
|
+
|
|
3
|
+
## 结论
|
|
4
|
+
|
|
5
|
+
14 条已接受 journey 都有可观察结果并全部为 `PASS`。2026-08-25 的初始候选曾把
|
|
6
|
+
ZCode ACP promotion 记为诚实 `STOP`;2026-08-26 的 live activation 先复现并修复
|
|
7
|
+
ZCode 0.16.5 runtime-preferences handshake,再通过国内 BigModel provider 完成真实
|
|
8
|
+
receipt,因此该行已经由新证据取代。之后六 Host real user-HOME install/Doctor、
|
|
9
|
+
Windows descendant cleanup 和 same-commit 三平台 CI 也分别完成;公共 registry 与
|
|
10
|
+
GitHub Release 仍由最后的 release task 独立验证。
|
|
11
|
+
|
|
12
|
+
这里的证据分为三类,不能互相冒充:
|
|
13
|
+
|
|
14
|
+
- `source-contract`:验证 Skill 得到一致、可到达、可停止的导航合同,不断言任一模型的
|
|
15
|
+
实际表达质量;
|
|
16
|
+
- `isolated-runtime`:运行真实 installer/Doctor/runner 代码,但只使用临时 config、fake
|
|
17
|
+
Codex registration 或 fake ACP/CLI target;
|
|
18
|
+
- `live-provider`:六个 Host 分别完成 one bounded read-only ACP provider session;
|
|
19
|
+
receipt 只保留协议/result/进程/Git 事实和 digest,不保留 prompt 或 provider text。
|
|
20
|
+
|
|
21
|
+
## Journey register
|
|
22
|
+
|
|
23
|
+
| ID | Journey | Result | Observable success or stop | Executed evidence | Deliberate gap |
|
|
24
|
+
|---|---|---|---|---|---|
|
|
25
|
+
| J1 | Greenfield | PASS | `init/create` 停在 raw brief,`research/baseline` 以 selected coverage 与 stop condition 产出 accepted baseline,再推荐首个 Change | `tests/route-contract.test.cjs`; `docs/evals/ultra-5-0-route-journeys.md#j1--greenfield-baseline` | source-contract;六 Host live output 未跑 |
|
|
26
|
+
| J2 | Existing project | PASS | 新请求先进入 Change;有界证据问题经 change-scoped Research 回到同一 `change_id`,accepted 后才进入 Plan | `tests/route-contract.test.cjs`; route journey J2 | source-contract;不把模型语义质量机械化 |
|
|
27
|
+
| J3 | Micro edit | PASS | 不使 specification 失真的 edit 明确退出 Change lifecycle,使用 ordinary repository TDD/verification | `skills/ultra-change/SKILL.md`; `docs/WORKFLOW-LIFECYCLE.md#change-reconciliation` | source inspection;实际 edit 由调用项目验证 |
|
|
28
|
+
| J4 | Owner revision | PASS | draft 原地修订;accepted consequential answer 以 `supersedes` record 保留旧 authority;拒绝现有选项不会默认进入 Plan | route journey J3;`skills/ultra-change/SKILL.md`; `skills/ultra-status/SKILL.md` | source-contract;owner judgment 不由 fixture 代替 |
|
|
29
|
+
| J5 | Fresh session | PASS | 从 root/HEAD、唯一 active Change、matching ledger/context/Resume、baseline 与 Git 重建 Route Card,不重跑已完成 Research | `tests/ultra-5-journeys.test.cjs`; README;`docs/WORKFLOW-LIFECYCLE.md#interruption-and-cross-host-continuation` | 本地 artifact route;本轮未做六 Host live output 对比 |
|
|
30
|
+
| J6 | Early value | PASS | Plan 的第一个 slice 必须穿过真实 consumer 与 data path,并命名 owner-visible observation | `tests/ultra-5-journeys.test.cjs`; `skills/ultra-plan/SKILL.md`; lifecycle | source-contract;真实产品 observation 由调用项目提供 |
|
|
31
|
+
| J7 | Degraded state | PASS | 两个 active Change 产生 `active_change_ambiguous`;不读任一 intent body,不写 progress,并给出显式保留/archive/abandon/retry 路径 | `tests/ultra-5-journeys.test.cjs` 真实 SessionStart Hook scenario;Status/Review source | Review 在 ambiguity 时停在 packet write 前;不会制造 current scope |
|
|
32
|
+
| J8 | Clean install delegation | PASS | isolated install 后从 loaded `ultra-delegate/scripts/delegate.cjs` 直接运行;不依赖 global `ubp`,Doctor 可见 runner;六个真实 Host home 的最终 Doctor 也都选择 ACP | `tests/install.test.cjs`; `tests/package-smoke.test.cjs`; migration fixture;`.ultra/evidence/v50-real-home-activation/` | published-registry consumer install 由 public-release task 验证 |
|
|
33
|
+
| J9 | ACP happy path | PASS | stable v1 initialize -> session/new -> bounded derived updates -> exact Ultra terminal result | `tests/acp-driver.test.cjs`; `tests/delegate.test.cjs`; fake ACP agent | synthetic executable protocol evidence,不是 Host/provider conformance |
|
|
34
|
+
| J10 | Permission denial | PASS | envelope 内写请求仅 `allow_once`;scope widening 立即拒绝,不能转成 successful Ultra result | `tests/acp-driver.test.cjs`; `tests/delegate.test.cjs` | fake agent;没有真实 provider permission UI |
|
|
35
|
+
| J11 | Cancellation | PASS | cancel/timeout 到 typed terminal result,释放 delegation lock,POSIX process group 无 descendant orphan;`windows-latest` 的 cancel 与 timeout 也都终止真实 grandchild,可用 fresh id 重试 | `tests/delegate.test.cjs`; `tests/acp-driver.test.cjs`; GitHub Actions run `32935138736` | 若 Windows `taskkill` 不可用,fallback 只能保证 direct child cleanup |
|
|
36
|
+
| J12 | CLI fallback | PASS | 六个 Host 都只在自己的 current receipt、stable ACP v1 和 executable 同时成立时选择 ACP;任一条件缺失仍选择 result-compatible CliDriver,并在 receipt/result/Doctor 显示 typed reason | `tests/acp-driver.test.cjs`; `tests/install.test.cjs`; six live receipts;migration Doctor scenario | provider retry 与 fallback 不自动改变 credential 或语义 authority |
|
|
37
|
+
| J13 | ZCode bridge | PASS | installed ZCode 0.16.5 通过 `zcode-acp` v0.1.0 + digest-bound compatibility patch 接入 ACP v1,并用国内 BigModel provider 返回 exact Ultra result、clean Git 与 terminal worker | `skills/ultra-delegate/patches/zcode-acp-0.1.0-zcode-0.16.5.patch`; bridge receipt;`host-zcode.json`; live conformance report | transport maturity 仍为 `experimental`,因为 `app-server` 没有公开稳定性合同;缺 bridge/executable 时仍 typed fallback |
|
|
38
|
+
| J14 | 3.x migration | PASS | 18 个 seeded project-owned files(覆盖 baseline、spec、active/archive Change、decision、task/context、Research、evidence、test report 与 binary bytes)在 install -> update -> Doctor -> uninstall 前后 mode、length 与 SHA-256 全相同;六 Host Doctor healthy 且显示 driver health | `tests/ultra-5-journeys.test.cjs` before/after digest 与 Doctor diagnostic | fixture 证明 updater 的真实文件边界,不声称覆盖未知第三方 artifact 语义 |
|
|
39
|
+
|
|
40
|
+
## 可复现命令
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
node --test tests/ultra-5-journeys.test.cjs \
|
|
44
|
+
tests/route-contract.test.cjs \
|
|
45
|
+
tests/acp-driver.test.cjs \
|
|
46
|
+
tests/delegate.test.cjs \
|
|
47
|
+
tests/install.test.cjs \
|
|
48
|
+
tests/package-smoke.test.cjs
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
其中 migration case 会在临时目录执行六 Host install、第二次 install(update)、JSON
|
|
52
|
+
Doctor 与 uninstall,并在 TAP diagnostic 中打印 canonical before/update/uninstall digest
|
|
53
|
+
和每个 Host 的 selected driver/fallback reason。
|
|
54
|
+
|
|
55
|
+
## 尚待 public-release task 完成的验证
|
|
56
|
+
|
|
57
|
+
- 六个真实 Host 对同一 route fixture 的 Route Card 输出质量对比;
|
|
58
|
+
- `v5.0.0` annotated tag、npm trusted publication、GitHub Release 与 published-package
|
|
59
|
+
consumer install 的同源性。
|
|
60
|
+
|
|
61
|
+
六个 live ACP provider receipt、real-HOME activation、Windows cleanup 和三平台 CI
|
|
62
|
+
已经完成;剩余 registry/release 缺口属于 public-release task,不会被本报告冒充完成。
|
|
@@ -0,0 +1,93 @@
|
|
|
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.
|
|
@@ -0,0 +1,145 @@
|
|
|
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
|
+
冒充为通过。
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ultra-builder-pro-cli",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.1",
|
|
4
4
|
"description": "File-first Ultra Builder Pro workflows for Claude Code, OpenCode, Codex CLI, Kimi Code, Grok Build, and ZCode.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"ultra-builder-pro-cli": "bin/install.js",
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"hooks/README.md",
|
|
30
30
|
"LICENSE",
|
|
31
31
|
"CHANGELOG.md",
|
|
32
|
+
"README.zh-CN.md",
|
|
32
33
|
".ultra-template",
|
|
33
34
|
"docs/PHILOSOPHY.md",
|
|
34
35
|
"docs/ARCHITECTURE.md",
|
|
@@ -8,17 +8,35 @@ description: Open or reconcile one bounded unit of work by comparing specificati
|
|
|
8
8
|
A Change connects research, plan, implementation, verification, review, and delivery.
|
|
9
9
|
Reconcile first so new intent does not bury an existing specification/code conflict.
|
|
10
10
|
|
|
11
|
+
## Route modes
|
|
12
|
+
|
|
13
|
+
| Mode | Entry | Observable exit | Next |
|
|
14
|
+
|---|---|---|---|
|
|
15
|
+
| `intake` | Explicit owner request with no active Change | One stable draft `change_id` captures outcome, acceptance, non-goals, seams, trace, and Research Disposition | Stay in `ultra-change` for acceptance or move to `evidence-needed` |
|
|
16
|
+
| `evidence-needed` | The draft names one load-bearing question and required exit evidence | The bounded Research Disposition is owner-visible and records its return to this Change | Recommend `ultra-research/change-scoped` |
|
|
17
|
+
| `reconcile` | Explicit invocation or a valid Execution Grant for the same active Change | Research or implementation evidence is dispositioned in the same intent and any material delta is accepted | Recommend or continue to `ultra-plan/decompose` when the intent is accepted |
|
|
18
|
+
| `accepted` | Explicit owner acceptance of the Change outcome and boundary | Accepted intent, current trace, satisfied Research Disposition, and resolved material decisions are read back | Recommend `ultra-plan/decompose` |
|
|
19
|
+
|
|
20
|
+
Follow `../ultra-status/references/route-contract.md`. A draft may be revised in place;
|
|
21
|
+
an already accepted owner decision is revised by a superseding decision record so its
|
|
22
|
+
history remains recoverable. Show a Route Card before each public transition. Under a
|
|
23
|
+
valid grant only the non-material `reconcile` mode may continue implicitly.
|
|
24
|
+
|
|
11
25
|
## Before you start
|
|
12
26
|
|
|
13
|
-
1.
|
|
27
|
+
1. If model-selected, require `reconcile` mode for the same active Change and verify a
|
|
28
|
+
live grant under `references/execution-grant.md`. Any intake, evidence-needed boundary,
|
|
29
|
+
acceptance, abandonment, reduction, or primary transfer stops and recommends current
|
|
30
|
+
explicit owner invocation; a coarse Host invocation bit cannot authorize it.
|
|
31
|
+
2. Read `references/change-contract.md` and apply its **Active Change authority
|
|
14
32
|
resolution** before reading any active `intent.md`, relying on a current `change_id`,
|
|
15
33
|
or creating or writing a Change. Continue only from its positively observed stable
|
|
16
34
|
zero-or-one result; return its typed repair for any other result. With one active
|
|
17
35
|
Change, read `.ultra/tasks.json`, then only its unfinished `context_file` values.
|
|
18
36
|
Update the same `change_id`; never open a second active Change.
|
|
19
|
-
|
|
37
|
+
3. Read `.ultra/project-brief.md`, `CONTEXT.md`, relevant `.ultra/decisions/`, and
|
|
20
38
|
`.ultra/north-star.md` for raw provenance, accepted language, and direction.
|
|
21
|
-
|
|
39
|
+
4. Grep archive and abandoned Changes that touched this area. Prefer archived
|
|
22
40
|
`delivery.md`; otherwise read `archive-summary.md`, `verification.md`, `intent.md`,
|
|
23
41
|
and remaining Markdown. Read abandoned Changes as history of rejected boundaries and
|
|
24
42
|
reusable evidence, never current intent. A missing `delivery.md` does not mean no history;
|
|
@@ -100,7 +118,9 @@ count.
|
|
|
100
118
|
|
|
101
119
|
Output active `intent.md` under a stable id, justified specification patches, qualifying
|
|
102
120
|
decision or vocabulary updates. For an evidence gap recommend `ultra-research`; when
|
|
103
|
-
evidenced recommend `ultra-plan`. Invoke neither
|
|
121
|
+
evidenced recommend `ultra-plan`. Invoke neither without a covering grant; with a valid
|
|
122
|
+
grant covering same-Change reconciliation and Plan, show the transition Route Card and
|
|
123
|
+
allow Plan to re-verify its own entry contract.
|
|
104
124
|
|
|
105
125
|
## Abandoning a Change
|
|
106
126
|
|
|
@@ -128,6 +148,11 @@ Every non-empty bucket, the Change boundary, abandonment, and anything
|
|
|
128
148
|
reconciliation turns up that shrinks a prior commitment. A change that makes no
|
|
129
149
|
specification sentence false needs no permission at all.
|
|
130
150
|
|
|
151
|
+
If the owner rejects the presented options or says none is adequate, preserve that
|
|
152
|
+
answer as current intake and keep the intent draft or move it to `evidence-needed`.
|
|
153
|
+
Gather the missing discriminating evidence or present materially different options; do
|
|
154
|
+
not select the nearest rejected option, manufacture acceptance, or route to Plan.
|
|
155
|
+
|
|
131
156
|
## References
|
|
132
157
|
|
|
133
158
|
- `../ultra-grilling/SKILL.md` — the loop for settling the boundary.
|
|
@@ -135,5 +160,6 @@ specification sentence false needs no permission at all.
|
|
|
135
160
|
`intent.md` structure, and profile fields.
|
|
136
161
|
- `references/execution-grant.md` — read when the owner requests bounded workflow continuation under a session-local or durable grant.
|
|
137
162
|
- `references/primary-transfer.md` — read when the owner moves the work package's canonical writer to another Agent (OFFER → ACK → RESULT).
|
|
163
|
+
- `../ultra-status/references/route-contract.md` — owner-visible route, checkpoint, and recovery output.
|
|
138
164
|
- `../ultra-think/references/autonomy-boundary.md` — read before removing a promise.
|
|
139
165
|
- `../ultra-tdd/SKILL.md` — read for an evidenced one-slice correction.
|