ultra-builder-pro-cli 0.26.2 → 5.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/.ultra-template/contexts/TEMPLATE.md +70 -29
- package/.ultra-template/north-star.md +35 -18
- package/.ultra-template/tasks.json +1 -0
- package/.ultra-template/test-report.json +17 -1
- package/CHANGELOG.md +235 -1
- package/README.md +210 -50
- package/README.zh-CN.md +440 -0
- package/adapters/_shared/host-profile.cjs +3 -95
- package/adapters/_shared/plugin-core.cjs +61 -5
- package/adapters/_shared/runtime-assets.cjs +66 -5
- package/adapters/zcode.js +375 -0
- package/bin/delegate-worker.cjs +2 -325
- package/bin/delegate.cjs +3 -461
- package/bin/install.js +11 -6
- package/docs/ARCHITECTURE.md +133 -31
- package/docs/ARTIFACT-AUTHORITY.md +185 -24
- package/docs/DECISIONS.md +153 -18
- package/docs/PHILOSOPHY.md +58 -7
- package/docs/PLUGIN-ISOLATION-CONTRACT.md +34 -12
- package/docs/RUNTIME-COMPAT-MATRIX.md +195 -23
- package/docs/SKILL-AUTHORING.md +19 -6
- package/docs/WORKFLOW-LIFECYCLE.md +196 -44
- package/docs/evals/adversarial-review-2026-08-14.md +84 -0
- 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/docs/evals/zcode-automation-2026-08-14.md +103 -0
- package/hooks/README.md +27 -4
- package/hooks/_common.py +1678 -61
- package/hooks/adapters/zcode.py +227 -0
- package/hooks/compact_context.py +176 -17
- package/hooks/mid_workflow_recall.py +27 -5
- package/hooks/post_edit_guard.py +133 -23
- package/hooks/session_context.py +707 -22
- package/package.json +7 -3
- package/skills/ultra-change/SKILL.md +69 -12
- package/skills/ultra-change/references/change-contract.md +93 -27
- package/skills/ultra-change/references/execution-grant.md +109 -0
- package/skills/ultra-change/references/primary-transfer.md +273 -0
- package/skills/ultra-change/scripts/validate_primary_transfer.cjs +1928 -0
- package/skills/ultra-delegate/SKILL.md +103 -8
- 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 +80 -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 +98 -11
- package/skills/ultra-dev/SKILL.md +188 -42
- package/skills/ultra-grilling/SKILL.md +10 -7
- package/skills/ultra-grilling/references/reframing.md +7 -3
- package/skills/ultra-init/SKILL.md +56 -7
- package/skills/ultra-init/scripts/init_project.cjs +968 -21
- package/skills/ultra-plan/SKILL.md +91 -47
- package/skills/ultra-plan/references/task-evidence-v2.md +300 -0
- package/skills/ultra-plan/scripts/validate_task_evidence.cjs +859 -0
- package/skills/ultra-research/SKILL.md +70 -14
- package/skills/ultra-research/references/04-product-strategy.md +11 -2
- package/skills/ultra-research/references/21-features-scope.md +8 -0
- package/skills/ultra-research/references/22-success-metrics.md +4 -3
- package/skills/ultra-research/references/99-synthesis.md +19 -2
- package/skills/ultra-research/references/north-star-v2.md +168 -0
- package/skills/ultra-research/references/wayfinding.md +8 -0
- package/skills/ultra-research/scripts/validate_north_star.cjs +1174 -0
- package/skills/ultra-review/SKILL.md +201 -27
- package/skills/ultra-review/references/adversarial-evaluation.md +31 -0
- package/skills/ultra-review/references/spec.md +5 -0
- package/skills/ultra-review/references/unified-schema.md +146 -11
- package/skills/ultra-review/references/worker-packet.md +151 -8
- package/skills/ultra-review/scripts/review_wait.py +2653 -63
- package/skills/ultra-status/SKILL.md +129 -15
- package/skills/ultra-status/references/route-contract.md +100 -0
- package/skills/ultra-tdd/SKILL.md +11 -4
- package/skills/ultra-tdd/references/test-execution.md +6 -1
- package/skills/ultra-test/SKILL.md +161 -18
- package/skills/ultra-test/scripts/validate_review_transport.cjs +549 -0
- package/skills/ultra-test/scripts/worktree_digest.cjs +518 -30
- /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,6 +1,6 @@
|
|
|
1
1
|
# Runtime compatibility matrix
|
|
2
2
|
|
|
3
|
-
Ultra Builder Pro adapts one fourteen-Skill, five-hook contract to
|
|
3
|
+
Ultra Builder Pro adapts one fourteen-Skill, five-hook contract to six native hosts.
|
|
4
4
|
This document records the differences that belong in adapters rather than shared
|
|
5
5
|
Skills.
|
|
6
6
|
|
|
@@ -13,6 +13,7 @@ Skills.
|
|
|
13
13
|
| OpenCode | `<config>/.ultra-builder-pro` plus `<config>/plugins/ultra-builder-pro.js` | managed `<config>/skills/<name>` | native JS events call shared Python scripts |
|
|
14
14
|
| Kimi Code | `<config>/plugins/managed/ultra-builder-pro` plus `installed.json` | nested `skills/<name>` | `hooks/adapters/kimi.py` |
|
|
15
15
|
| Grok Build | `<GROK_HOME>/.ubp/plugin-sources/ultra-builder-pro` | nested `skills/<name>` | `hooks/adapters/grok.py` |
|
|
16
|
+
| ZCode | `~/.zcode/cli/plugins/marketplaces/ultra-builder-pro/plugin` plus managed local marketplace and `plugins.dirs` entry | nested `skills/<name>` | `hooks/adapters/zcode.py` |
|
|
16
17
|
|
|
17
18
|
Every host receives the same eight owner workflows, five model disciplines, and one
|
|
18
19
|
router. Codex alone needs generated `agents/openai.yaml` files to express display data
|
|
@@ -27,40 +28,56 @@ and implicit-invocation policy; those are host metadata, not custom agents.
|
|
|
27
28
|
| OpenCode | `${XDG_CONFIG_HOME:-~/.config}/opencode` | `<cwd>/.opencode` | `OPENCODE_CONFIG_DIR` or `OPENCODE_CONFIG` |
|
|
28
29
|
| Kimi Code | `~/.kimi-code` | no project plugin scope | `KIMI_CODE_HOME` |
|
|
29
30
|
| Grok Build | `~/.grok` | no project plugin scope | `GROK_HOME` |
|
|
31
|
+
| ZCode | `~/.zcode` | no project plugin scope | adapter `ZCODE_HOME` override |
|
|
30
32
|
|
|
31
33
|
An explicit `--config-dir` wins over all defaults and becomes the home for any
|
|
32
34
|
host-owned sidecar as well. This rule makes isolated installation tests trustworthy.
|
|
33
35
|
With multiple selected runtimes, the CLI passes `<config-dir>/<runtime>` to each adapter
|
|
34
36
|
instead of merging incompatible host layouts.
|
|
35
|
-
Kimi and
|
|
37
|
+
Kimi, Grok, and ZCode currently expose user-scoped plugin installation only. `--local` rejects
|
|
36
38
|
them before mutating another host; an explicit `--config-dir` remains available for an
|
|
37
39
|
isolated user-scope installation test.
|
|
38
40
|
|
|
39
41
|
## Invocation policy
|
|
40
42
|
|
|
41
|
-
|
|
|
43
|
+
| Invocation class | Owner can route directly | Model can select implicitly |
|
|
42
44
|
|---|---:|---:|
|
|
43
|
-
|
|
|
44
|
-
|
|
|
45
|
-
| `
|
|
45
|
+
| `explicit-entry` public mode | yes | no |
|
|
46
|
+
| `grant-continuable` public mode | yes | only under a valid Execution Grant covering that mode |
|
|
47
|
+
| five `model-discipline` Skills | no | as an internal method of a covered workflow |
|
|
48
|
+
| `ultra-status` `router` modes | yes | no; other Skills derive their cards directly from the shared contract |
|
|
49
|
+
|
|
50
|
+
The canonical per-mode map is `PUBLIC_SKILL_INVOCATION_MODES` in
|
|
51
|
+
`adapters/_shared/runtime-assets.cjs`. Init and Delegate are explicit-only. Research has
|
|
52
|
+
explicit `baseline` and grant-continuable `change-scoped`; Change has explicit
|
|
53
|
+
intake/evidence/acceptance and grant-continuable same-Change reconciliation; Deliver has
|
|
54
|
+
grant-continuable reconciliation and explicit finalization. Plan, Dev, and Test modes
|
|
55
|
+
are grant-continuable. Every public mode remains directly owner-invocable.
|
|
46
56
|
|
|
47
57
|
Claude and Grok receive `user-invocable` / `disable-model-invocation` frontmatter.
|
|
48
58
|
Kimi receives its native equivalent. Codex receives
|
|
49
|
-
`policy.allow_implicit_invocation` in `agents/openai.yaml`.
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
59
|
+
`policy.allow_implicit_invocation` in `agents/openai.yaml`. Those Hosts expose only a
|
|
60
|
+
coarse Skill-level bit, so a Skill with any grant-continuable mode is discoverable to the
|
|
61
|
+
model; the loaded Skill must still verify the selected mode, same active `change_id`,
|
|
62
|
+
grant, effects, and material checkpoints. In particular, the coarse bit does not permit
|
|
63
|
+
baseline Research, Change intake/acceptance, or Deliver finalization.
|
|
64
|
+
|
|
65
|
+
OpenCode uses portable source frontmatter and native discovery, but its current Skill
|
|
66
|
+
schema has no equivalent owner/model routing bit: all fourteen Skills remain
|
|
67
|
+
discoverable and their descriptions plus the same in-Skill guard guide selection. Ultra
|
|
68
|
+
does not add a semantic interception hook to imitate a Host feature OpenCode does not
|
|
69
|
+
expose. ZCode likewise discovers all plugin Skills and relies on their portable
|
|
70
|
+
descriptions and runtime guard rather than a fabricated routing flag.
|
|
54
71
|
|
|
55
72
|
## Hook compatibility
|
|
56
73
|
|
|
57
|
-
| Hook | Claude | Codex | OpenCode | Kimi | Grok |
|
|
58
|
-
|
|
59
|
-
| session context | yes | normalized | native bridge | normalized to message | executed; host stdout limits apply |
|
|
60
|
-
| mid-workflow recall | yes | handles `apply_patch` | native bridge | normalized | executed |
|
|
61
|
-
| compact context | pre/start | pre/post | native compact event | pre/post | pre-compact |
|
|
62
|
-
| post-edit observation | Write/Edit | Write/Edit/`apply_patch` | write/edit/patch | Write/Edit | Write/Edit/patch |
|
|
63
|
-
| dangerous command guard | Bash advisory/deny | Bash advisory/deny | bash advisory/deny | Bash advisory/deny | Bash allow/deny mapping |
|
|
74
|
+
| Hook | Claude | Codex | OpenCode | Kimi | Grok | ZCode |
|
|
75
|
+
|---|---:|---:|---:|---:|---:|---:|
|
|
76
|
+
| session context | yes | normalized | native bridge | normalized to message | executed; host stdout limits apply | normalized |
|
|
77
|
+
| mid-workflow recall | yes | handles `apply_patch` | native bridge | normalized | executed | handles `ApplyPatch` aliases |
|
|
78
|
+
| compact context | pre/start | pre/post | native compact event | pre/post | pre-compact | `SessionStart: compact` |
|
|
79
|
+
| post-edit observation | Write/Edit | Write/Edit/`apply_patch` | write/edit/patch | Write/Edit | Write/Edit/patch | Write/Edit/ApplyPatch |
|
|
80
|
+
| dangerous command guard | Bash advisory/deny | Bash advisory/deny | bash advisory/deny | Bash advisory/deny | Bash allow/deny mapping | Bash advisory/deny |
|
|
64
81
|
|
|
65
82
|
All hooks share the same `.ultra/` idle guard. Wire adapters normalize payload and
|
|
66
83
|
output fields only; they do not change semantic policy. Codex installation health and
|
|
@@ -68,9 +85,47 @@ hook activation are distinct: Codex skips newly installed non-managed plugin hoo
|
|
|
68
85
|
until the user reviews and trusts the current definition, so Doctor reports
|
|
69
86
|
`hook_activation: user_review_required` without pretending the hook already ran.
|
|
70
87
|
|
|
71
|
-
##
|
|
88
|
+
## Agent execution driver selection
|
|
89
|
+
|
|
90
|
+
| Host | ACP candidate observed locally | Versioned conformance | 5.0 active driver | Fallback reason |
|
|
91
|
+
|---|---|---|---|---|
|
|
92
|
+
| Claude Code | pinned `@agentclientprotocol/claude-agent-acp@0.70.0` stdio adapter | PASS, real provider receipt | ACP when `npx` exists | `acp_command_unavailable` when absent |
|
|
93
|
+
| Codex | pinned `@agentclientprotocol/codex-acp@1.6.2` stdio adapter | PASS, real provider receipt | ACP when `npx` exists | `acp_command_unavailable` when absent |
|
|
94
|
+
| OpenCode | native `opencode acp` stdio server | PASS, real provider receipt | ACP when executable exists | `acp_command_unavailable` when absent |
|
|
95
|
+
| Kimi Code | documented [`kimi acp`](https://moonshotai.github.io/kimi-code/en/reference/kimi-acp.html) stdio server | PASS, real provider receipt | ACP when executable exists | `acp_command_unavailable` when absent |
|
|
96
|
+
| Grok Build | documented [`grok agent stdio`](https://docs.x.ai/build/cli/headless-scripting) | PASS, real provider receipt | ACP when executable exists | `acp_command_unavailable` when absent |
|
|
97
|
+
| ZCode | source-pinned `zcode-acp` v0.1.0 plus digest-bound 0.16.5 patch translating to installed `app-server` | PASS, domestic BigModel provider receipt | ACP when bridge exists and `--ack-experimental` is supplied | `acp_command_unavailable` when absent |
|
|
98
|
+
|
|
99
|
+
Selection is ACP-first only after the exact Host row is `passed` and names a non-empty
|
|
100
|
+
evidence reference: stable protocol v1, stdio, executable availability, read-only,
|
|
101
|
+
bounded write, permission denial,
|
|
102
|
+
cancellation/no-orphan, cwd/diff parity, result parity, and credential/event redaction
|
|
103
|
+
must all hold. Static capability inspection never starts the provider. A candidate,
|
|
104
|
+
binary, help output, SDK version, or successful fake-agent suite alone cannot promote a
|
|
105
|
+
Host. The stable wire contract follows the official
|
|
106
|
+
[ACP v1 schema](https://github.com/agentclientprotocol/agent-client-protocol/blob/main/schema/v1/schema.json);
|
|
107
|
+
unstable v2 features are outside the 5.0 required path.
|
|
108
|
+
|
|
109
|
+
All Driver receipts and terminal results expose the selected driver, ACP capability,
|
|
110
|
+
and fallback reason. Doctor reports the same facts separately from installation health.
|
|
111
|
+
`AcpDriver` stores a bounded redacted `events.jsonl`, never raw protocol messages or
|
|
112
|
+
hidden reasoning. Status re-projects every displayed latest event through that fixed
|
|
113
|
+
safe shape and treats a corrupted journal as unavailable. `CliDriver` bounds
|
|
114
|
+
stdout/stderr while retaining the output tail so the existing exact Ultra result
|
|
115
|
+
extractor remains compatible.
|
|
72
116
|
|
|
73
|
-
`
|
|
117
|
+
During `session/new`, `AcpDriver` may temporarily buffer only the bounded creation-time
|
|
118
|
+
metadata updates emitted by some conforming agents. It rejects message/tool content,
|
|
119
|
+
wrong session identities, more than 32 updates, or more than 256 KiB before the response;
|
|
120
|
+
accepted metadata is exposed only after every buffered `sessionId` matches the created
|
|
121
|
+
session. `ULTRA_DELEGATE_FORCE_CLI=1` is an explicit per-run recovery seam: it selects
|
|
122
|
+
the same bounded CLI result path and records `acp_forced_cli` without changing the
|
|
123
|
+
Host's stored conformance status.
|
|
124
|
+
|
|
125
|
+
## CLI fallback argv
|
|
126
|
+
|
|
127
|
+
`skills/ultra-delegate/scripts/host-profile.cjs` records current non-interactive
|
|
128
|
+
invocation for:
|
|
74
129
|
|
|
75
130
|
- Claude print mode with structured output and an explicit file-tool allowlist; read-only
|
|
76
131
|
uses `plan`, while bounded write uses `acceptEdits` without Bash or web tools;
|
|
@@ -81,14 +136,129 @@ until the user reviews and trusts the current definition, so Doctor reports
|
|
|
81
136
|
- Kimi prompt mode with a launch-only read or write agent profile that exposes only
|
|
82
137
|
file tools and no Bash, web, MCP, Skills or subagents;
|
|
83
138
|
- Grok single-turn mode with `read-only` or `workspace` OS sandbox, structured output,
|
|
84
|
-
no memory, web search or subagents
|
|
139
|
+
no memory, web search or subagents, and a twelve-turn ceiling;
|
|
140
|
+
- ZCode headless prompt mode with native `plan` or `edit`; the current CLI accepts the
|
|
141
|
+
camel-case `--disallowedTools` surface used to deny Bash, web, subagents, and (in
|
|
142
|
+
read-only mode) write tools. The launcher's timeout remains the execution bound.
|
|
143
|
+
|
|
144
|
+
The installed ZCode 0.16.5 runtime advertises `--max-turns`, `--allowed-tools`, and
|
|
145
|
+
`--settings` in help but rejects them at the live root parser. Ultra therefore does not
|
|
146
|
+
pass those flags. ZCode headless delegation also requires an explicit CLI model
|
|
147
|
+
provider. Host/runtime identity and provider identity remain separate: the verified
|
|
148
|
+
local path uses ZCode Desktop with the Owner's domestic BigModel Coding Plan provider,
|
|
149
|
+
not international Z.AI OAuth. Ultra's package does not silently copy Desktop credentials;
|
|
150
|
+
the user controls the provider entry in `~/.zcode/cli/config.json`.
|
|
151
|
+
|
|
152
|
+
On macOS, the Skill-local host profile uses
|
|
153
|
+
`/Applications/ZCode.app/Contents/Resources/glm/zcode.cjs` when that App-bundled CLI
|
|
154
|
+
exists, then falls back to `zcode` on `PATH`. `UBP_DELEGATE_ZCODE_BIN` remains an explicit
|
|
155
|
+
test or operator override; the normal source-to-ZCode path does not require it.
|
|
156
|
+
|
|
157
|
+
The ACP bridge is independently installed from `jpalmae/zcode-acp` v0.1.0 at source
|
|
158
|
+
revision `42fe149d4b501469343c01f23ba3801832306d53`, then patched by the shipped
|
|
159
|
+
`zcode-acp-0.1.0-zcode-0.16.5.patch` with SHA-256
|
|
160
|
+
`174dfd0feafe84320556a84b5ae08b10e44c5515fea4992fd1d58af54cee4e3d`. The patch
|
|
161
|
+
answers the `session/requestRuntimePreferences` server request introduced by ZCode
|
|
162
|
+
0.16.5 before and after session creation. The pinned source plus patch passes the locked
|
|
163
|
+
Rust tests, reproduced RED, patched fake App-server E2E, release build, and real provider
|
|
164
|
+
session before use. It stamps the bridge as
|
|
165
|
+
`zcode-acp 0.1.0+ultra.zcode.0.16.5`; selection requires that marker and an installed
|
|
166
|
+
runtime reporting `0.16.5`. Ultra records both source inputs and ships only the patch; it
|
|
167
|
+
redistributes neither the bridge binary nor any ZCode Desktop bytes.
|
|
168
|
+
|
|
169
|
+
**ZCode transport maturity is `experimental`** (recorded in
|
|
170
|
+
`skills/ultra-delegate/scripts/host-profile.cjs`): the App-bundled CLI is a verified-local
|
|
171
|
+
surface — it exists, launches, and passed the 2026-08-26 conformance drill — but
|
|
172
|
+
the provider publishes no headless CLI, SDK, A2A, or ZCode Protocol stability
|
|
173
|
+
contract. Promotion to `supported` requires both official documentation and a
|
|
174
|
+
full recovery drill; a binary's existence, working help, or zero exit status is
|
|
175
|
+
never sufficient. The other five delegate transports are documented and locally
|
|
176
|
+
verified through the same launcher. The maturity is live-enforced, not just
|
|
177
|
+
recorded: `delegate run --to zcode` refuses to launch without the explicit
|
|
178
|
+
`--ack-experimental` flag, prints a stderr warning, and stamps
|
|
179
|
+
`transport_maturity`, the exact `transport_surface` wording, and
|
|
180
|
+
`experimental_ack: true` onto the receipt, worker spec, and every terminal
|
|
181
|
+
result (including failure, cancellation, and timeout), so no delegation record
|
|
182
|
+
can present an internal CLI run as the documented ZCode Desktop interactive
|
|
183
|
+
surface. The documented interactive primary path for ZCode is the Desktop task
|
|
184
|
+
surface itself, not this headless transport.
|
|
185
|
+
|
|
186
|
+
## Installed delegation runner
|
|
187
|
+
|
|
188
|
+
Every managed plugin contains `ultra-delegate/scripts/delegate.cjs`, its worker, the
|
|
189
|
+
canonical Host profile, all three driver modules, and the Kimi launch-only profiles.
|
|
190
|
+
The loaded Skill resolves
|
|
191
|
+
that directory and invokes Node directly, so a clean plugin install does not require a
|
|
192
|
+
persisted Ultra package binary on `PATH` and never uses `npx` to rediscover Ultra.
|
|
193
|
+
The source-pinned Claude and Codex ACP adapters may themselves run through their exact
|
|
194
|
+
`npx --yes <package>@<version>` profiles. Doctor
|
|
195
|
+
reports `delegation_runner`, `acp_capability`, `agent_execution_driver`, its fallback
|
|
196
|
+
reason, and ZCode maturity separately from Skill discovery and Hooks. The package
|
|
197
|
+
`ubp delegate` surface remains a thin one-release compatibility wrapper around the same
|
|
198
|
+
functions; receipts and recovery commands point to the canonical Skill-local entrypoint.
|
|
199
|
+
|
|
200
|
+
### ZCode Desktop Workspace Memory (post-turn host effect)
|
|
201
|
+
|
|
202
|
+
ZCode Desktop ships an optional Workspace Memory feature that extracts project
|
|
203
|
+
memory after a completed turn into provider-local files under
|
|
204
|
+
`~/.zcode/cli/memories/projects/<project>/memory`. Corrected facts
|
|
205
|
+
(2026-08-17):
|
|
206
|
+
|
|
207
|
+
- the feature is operator-controlled through the documented Workspace Memory
|
|
208
|
+
setting (`memoryEnabled` in `~/.zcode/v2/setting.json`); it is not always
|
|
209
|
+
default-off — it was observed enabled on this machine, and a fresh task
|
|
210
|
+
inherits the operator's current selection;
|
|
211
|
+
- `memoryEnabled=false` is the single effective master gate: the App runtime
|
|
212
|
+
injects `memory:{enabled:false}`, and every recall, root access, and
|
|
213
|
+
post-turn extraction path resolves through one enabled-root resolver that
|
|
214
|
+
returns no root while it is false. The logged `memoryExtractionEnabled` and
|
|
215
|
+
`memoryUse` values are absent-key, disable-only defaults, not independent
|
|
216
|
+
owner-facing gates;
|
|
217
|
+
- the extracted files are ordinary local files outside the repository that the
|
|
218
|
+
operator can browse and clear directly; they are non-authoritative and
|
|
219
|
+
non-portable — never Git content, never shared authority, never Ultra
|
|
220
|
+
evidence;
|
|
221
|
+
- when the feature is enabled, the post-turn extraction is a Host external
|
|
222
|
+
effect: an owner-authorized transfer must allow it in the OFFER `effects`
|
|
223
|
+
and disclose it in the RESULT `external_effects`
|
|
224
|
+
(`skills/ultra-change/references/primary-transfer.md`); a strict
|
|
225
|
+
zero-external-effect pass requires a fresh task with the master setting off
|
|
226
|
+
plus an independent reviewer postflight;
|
|
227
|
+
- Ultra never parses or mutates the provider setting.
|
|
228
|
+
|
|
229
|
+
The accepted r3 design document's section 7.1 local-memory snapshot
|
|
230
|
+
("local-only, default-off, cannot be browsed or cleared") is superseded by the
|
|
231
|
+
current documented UI and the observed runtime behavior above; the frozen
|
|
232
|
+
design bytes stay unedited.
|
|
85
233
|
|
|
86
234
|
The launcher accepts no external-effect authority. It binds instruction, permission and
|
|
87
235
|
output-schema digests, a clean Git worktree, allowed write roots, actual changed paths,
|
|
88
236
|
strict result schema, timeout and cancellation. Empty roots select read-only mode. The
|
|
89
237
|
model returns structured output and never authors the receipt. Host-native permissions
|
|
90
238
|
are the execution boundary; the primary host still inspects and integrates the isolated
|
|
91
|
-
diff.
|
|
239
|
+
diff. The launcher embeds the digest-bound packet in the prompt because OpenCode's
|
|
240
|
+
correct `external_directory: deny` policy prevents reading packet paths beside the
|
|
241
|
+
worktree. Codex receives a native-schema-compatible projection; the launcher separately
|
|
242
|
+
enforces non-empty strings, normalized unique paths, exact fields, and the observed diff.
|
|
243
|
+
|
|
244
|
+
### Authenticated delegation conformance — 2026-08-14
|
|
245
|
+
|
|
246
|
+
One clean, read-only seeded repository was used to exercise the current launcher against
|
|
247
|
+
all six installed CLIs. Claude Code, Codex, OpenCode, Kimi Code, and ZCode each produced
|
|
248
|
+
a validated `finished` result with an empty diff and found the seeded consequential
|
|
249
|
+
defect. Grok Build 1.0.3 exited zero but repeatedly emitted truncated or malformed
|
|
250
|
+
structured output; the launcher correctly published `failed/missing_result` and did not
|
|
251
|
+
count partial text as evidence. This is a current host-result conformance ceiling, not a
|
|
252
|
+
permission bypass or a semantic review result.
|
|
253
|
+
|
|
254
|
+
ZCode was also exercised as the source host: one ZCode session invoked
|
|
255
|
+
`ubp delegate run --to claude`, waited for the terminal artifact, and reported Claude's
|
|
256
|
+
digest-bound read-only result without changing the worktree. Separately, one bounded
|
|
257
|
+
ZCode Autonomy Envelope completed Plan, Plan review, TDD, task review, Test, and aggregate
|
|
258
|
+
review for one task, then stopped before ungranted delivery and Git effects. Exact
|
|
259
|
+
fixtures, session boundaries, checks, and residual risks are recorded in
|
|
260
|
+
`docs/evals/adversarial-review-2026-08-14.md` and
|
|
261
|
+
`docs/evals/zcode-automation-2026-08-14.md`.
|
|
92
262
|
|
|
93
263
|
## Lifecycle verification
|
|
94
264
|
|
|
@@ -96,7 +266,9 @@ Each adapter must pass isolated install, doctor, reinstall, and uninstall tests.
|
|
|
96
266
|
global doctor additionally asks the native host where supported, but never repairs or
|
|
97
267
|
installs. Codex still performs native registration under `--config-dir`; its host process
|
|
98
268
|
inherits the same isolated `HOME` and `CODEX_HOME`. Grok native registration is skipped
|
|
99
|
-
only in explicit isolated test mode.
|
|
269
|
+
only in explicit isolated test mode. ZCode uses its documented inline-plugin directory
|
|
270
|
+
configuration for immediate activation while also publishing an importable local
|
|
271
|
+
marketplace; real global Doctor verifies the native plugin inventory. Lifecycle tests also require the isolated config
|
|
100
272
|
and fake HOME to contain zero children after uninstall, while separate ownership tests
|
|
101
273
|
prove that pre-existing empty Codex and Kimi registries survive.
|
|
102
274
|
|
package/docs/SKILL-AUTHORING.md
CHANGED
|
@@ -7,12 +7,17 @@ owner boundaries; host-specific discovery and invocation policy belong in adapte
|
|
|
7
7
|
|
|
8
8
|
Choose exactly one role before writing:
|
|
9
9
|
|
|
10
|
-
- **
|
|
10
|
+
- **public workflow**: an owner-invocable workflow with one or more declared modes and
|
|
11
|
+
a durable outcome;
|
|
11
12
|
- **model-invoked**: a reusable discipline used by at least two canonical workflows;
|
|
12
13
|
- **router**: read-only diagnosis that recommends the smallest next public route.
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
Every public mode is `explicit-entry` or `grant-continuable`. A public workflow may
|
|
16
|
+
continue to another public mode only when a currently valid Execution Grant covers the
|
|
17
|
+
same Change, exact mode, effects, and stop conditions, and only after showing the Route
|
|
18
|
+
Card. Otherwise it stops and recommends the owner-invoked route. Host metadata never
|
|
19
|
+
substitutes for that in-Skill check. A discipline with only one real caller should be
|
|
20
|
+
inlined.
|
|
16
21
|
|
|
17
22
|
## Portable frontmatter
|
|
18
23
|
|
|
@@ -25,7 +30,8 @@ description: What this produces and the concrete situations that trigger it.
|
|
|
25
30
|
---
|
|
26
31
|
```
|
|
27
32
|
|
|
28
|
-
Adapters generate Claude/Grok/Kimi invocation flags
|
|
33
|
+
Adapters generate Claude/Grok/Kimi invocation flags, Codex `agents/openai.yaml`, and
|
|
34
|
+
ZCode-native plugin metadata.
|
|
29
35
|
Do not put host paths, dependency declarations, plugin policy, or release history in
|
|
30
36
|
source frontmatter.
|
|
31
37
|
|
|
@@ -41,6 +47,12 @@ Every Skill has one outcome-led title and these semantic sections:
|
|
|
41
47
|
## References
|
|
42
48
|
```
|
|
43
49
|
|
|
50
|
+
Every public workflow and router also has `## Route modes` with a `Mode | Entry |
|
|
51
|
+
Observable exit | Next` table and references the canonical
|
|
52
|
+
`ultra-status/references/route-contract.md`. Shared card fields, material checkpoints,
|
|
53
|
+
continuation, and degraded recovery live only in that reference; each Skill owns only
|
|
54
|
+
its modes and workflow-specific facts.
|
|
55
|
+
|
|
44
56
|
User workflows first resolve at most one active `change_id`, then read only matching
|
|
45
57
|
rows from `.ultra/tasks.json`, the frontier task's `context_file` and Resume Note,
|
|
46
58
|
`CONTEXT.md`, and relevant decisions. Historical or abandoned rows never become current
|
|
@@ -72,7 +84,7 @@ wholesale into project authority.
|
|
|
72
84
|
## Language and host neutrality
|
|
73
85
|
|
|
74
86
|
Model-facing Skills, references, scripts, comments, and identifiers are English.
|
|
75
|
-
Shared Skills never mention `.claude`, `.codex`, `.opencode`, `.kimi`, `.grok`, or a
|
|
87
|
+
Shared Skills never mention `.claude`, `.codex`, `.opencode`, `.kimi`, `.grok`, `.zcode`, or a
|
|
76
88
|
host-only question surface. Use “host-native question surface” and put the translation
|
|
77
89
|
in the adapter.
|
|
78
90
|
|
|
@@ -92,9 +104,10 @@ For every changed Skill:
|
|
|
92
104
|
|
|
93
105
|
1. run the Skill Creator validator;
|
|
94
106
|
2. resolve every relative reference in the source and installed artifact;
|
|
95
|
-
3. verify its role metadata on all
|
|
107
|
+
3. verify its role metadata on all six hosts;
|
|
96
108
|
4. test the accepted workflow with representative valid and adversarial inputs;
|
|
97
109
|
5. confirm no retired runtime vocabulary or host-specific path entered portable text.
|
|
110
|
+
6. run the Route Contract structural test and inspect the applicable owner journey.
|
|
98
111
|
|
|
99
112
|
The repository's `tests/skill-authoring.test.cjs` and
|
|
100
113
|
`tests/v026-contract.test.cjs` mechanize the portable parts of this contract.
|