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
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const fs = require('node:fs');
|
|
4
|
+
const path = require('node:path');
|
|
5
|
+
|
|
6
|
+
const KIMI_PROFILE_ROOT = path.join(__dirname, 'delegate-profiles');
|
|
7
|
+
const ZCODE_BUNDLED_CLI = '/Applications/ZCode.app/Contents/Resources/glm/zcode.cjs';
|
|
8
|
+
const CLAUDE_ACP_PACKAGE = '@agentclientprotocol/claude-agent-acp@0.70.0';
|
|
9
|
+
const CODEX_ACP_PACKAGE = '@agentclientprotocol/codex-acp@1.6.2';
|
|
10
|
+
const ZCODE_ACP_SOURCE = Object.freeze({
|
|
11
|
+
repository: 'https://github.com/jpalmae/zcode-acp',
|
|
12
|
+
version: '0.1.0',
|
|
13
|
+
commit: '42fe149d4b501469343c01f23ba3801832306d53',
|
|
14
|
+
buildMarker: 'zcode-acp 0.1.0+ultra.zcode.0.16.5',
|
|
15
|
+
runtimeVersion: '0.16.5',
|
|
16
|
+
patch: Object.freeze({
|
|
17
|
+
path: 'skills/ultra-delegate/patches/zcode-acp-0.1.0-zcode-0.16.5.patch',
|
|
18
|
+
sha256: '174dfd0feafe84320556a84b5ae08b10e44c5515fea4992fd1d58af54cee4e3d',
|
|
19
|
+
compatibility: 'ZCode CLI 0.16.5 runtime-preferences handshake',
|
|
20
|
+
}),
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
// The ZCode app-bundled CLI is a verified-local surface, not a provider
|
|
24
|
+
// stability promise: official documentation plus a full recovery drill must
|
|
25
|
+
// both hold before any transport may claim 'supported'.
|
|
26
|
+
const TRANSPORT_MATURITY = Object.freeze({
|
|
27
|
+
claude: 'documented+verified',
|
|
28
|
+
codex: 'documented+verified',
|
|
29
|
+
opencode: 'documented+verified',
|
|
30
|
+
kimi: 'documented+verified',
|
|
31
|
+
grok: 'documented+verified',
|
|
32
|
+
zcode: 'experimental',
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
const ACP_CONFORMANCE = Object.freeze({
|
|
36
|
+
claude: Object.freeze({
|
|
37
|
+
status: 'passed',
|
|
38
|
+
evidence: 'docs/evals/ultra-5-0-live-acp-conformance.md#claude-code',
|
|
39
|
+
receiptSha256: '9b1d88cbd5e5b66a56e0cf19f34e7f2107f9e4b8fde9d80b9eadcdfc8f4a25e3',
|
|
40
|
+
}),
|
|
41
|
+
codex: Object.freeze({
|
|
42
|
+
status: 'passed',
|
|
43
|
+
evidence: 'docs/evals/ultra-5-0-live-acp-conformance.md#codex',
|
|
44
|
+
receiptSha256: 'e82287609397807fb6968dff104d7f6569499b53c77be6a186aa33939a4c629e',
|
|
45
|
+
}),
|
|
46
|
+
opencode: Object.freeze({
|
|
47
|
+
status: 'passed',
|
|
48
|
+
evidence: 'docs/evals/ultra-5-0-live-acp-conformance.md#opencode',
|
|
49
|
+
receiptSha256: '3575b148f6feb8c9f1472add705390e6d47b87be080403ec7006b66a29f7873b',
|
|
50
|
+
}),
|
|
51
|
+
kimi: Object.freeze({
|
|
52
|
+
status: 'passed',
|
|
53
|
+
evidence: 'docs/evals/ultra-5-0-live-acp-conformance.md#kimi-code',
|
|
54
|
+
receiptSha256: '30d8adec2877f80fadf0b20c3cb7fa6b732dea3598d7484c143f9835770301fe',
|
|
55
|
+
}),
|
|
56
|
+
grok: Object.freeze({
|
|
57
|
+
status: 'passed',
|
|
58
|
+
evidence: 'docs/evals/ultra-5-0-live-acp-conformance.md#grok-build',
|
|
59
|
+
receiptSha256: '370eeae12d63443188d519825ed8040fd8bba9b27fddb82e499d9cb590f4a33d',
|
|
60
|
+
}),
|
|
61
|
+
zcode: Object.freeze({
|
|
62
|
+
status: 'passed',
|
|
63
|
+
evidence: 'docs/evals/ultra-5-0-live-acp-conformance.md#zcode',
|
|
64
|
+
receiptSha256: '156080f88ed84a013fb26d93e5138230732d2ef0e2b5b10a7c3deb501d3548e9',
|
|
65
|
+
}),
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
function zcodeBinary({ platform = process.platform, exists = fs.existsSync } = {}) {
|
|
69
|
+
return platform === 'darwin' && exists(ZCODE_BUNDLED_CLI)
|
|
70
|
+
? ZCODE_BUNDLED_CLI
|
|
71
|
+
: 'zcode';
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function opencodePermission(writableRoots) {
|
|
75
|
+
const edit = { '*': 'deny' };
|
|
76
|
+
for (const root of writableRoots) {
|
|
77
|
+
if (root === '.') edit['*'] = 'allow';
|
|
78
|
+
else edit[`${root}/**`] = 'allow';
|
|
79
|
+
}
|
|
80
|
+
return JSON.stringify({
|
|
81
|
+
share: 'disabled',
|
|
82
|
+
permission: {
|
|
83
|
+
'*': 'deny',
|
|
84
|
+
read: 'allow',
|
|
85
|
+
glob: 'allow',
|
|
86
|
+
grep: 'allow',
|
|
87
|
+
list: 'allow',
|
|
88
|
+
lsp: 'allow',
|
|
89
|
+
edit,
|
|
90
|
+
external_directory: 'deny',
|
|
91
|
+
bash: 'deny',
|
|
92
|
+
task: 'deny',
|
|
93
|
+
webfetch: 'deny',
|
|
94
|
+
websearch: 'deny',
|
|
95
|
+
question: 'deny',
|
|
96
|
+
skill: 'deny',
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
const PROFILES = Object.freeze({
|
|
102
|
+
claude: Object.freeze({
|
|
103
|
+
binary: 'claude',
|
|
104
|
+
acp: Object.freeze({
|
|
105
|
+
surface: `official ${CLAUDE_ACP_PACKAGE} stdio adapter`,
|
|
106
|
+
transport: 'stdio',
|
|
107
|
+
protocolVersions: [1],
|
|
108
|
+
conformance: ACP_CONFORMANCE.claude,
|
|
109
|
+
command: () => 'npx',
|
|
110
|
+
argv: () => ['--yes', CLAUDE_ACP_PACKAGE],
|
|
111
|
+
}),
|
|
112
|
+
delegateArgv: (prompt, _cwd, options) => [
|
|
113
|
+
'-p', prompt,
|
|
114
|
+
'--permission-mode', options.readOnly ? 'plan' : 'acceptEdits',
|
|
115
|
+
'--no-session-persistence',
|
|
116
|
+
'--output-format', 'json',
|
|
117
|
+
'--tools', options.readOnly ? 'Read,Grep,Glob' : 'Read,Write,Edit,Grep,Glob',
|
|
118
|
+
],
|
|
119
|
+
}),
|
|
120
|
+
codex: Object.freeze({
|
|
121
|
+
binary: 'codex',
|
|
122
|
+
acp: Object.freeze({
|
|
123
|
+
surface: `official ${CODEX_ACP_PACKAGE} stdio adapter`,
|
|
124
|
+
transport: 'stdio',
|
|
125
|
+
protocolVersions: [1],
|
|
126
|
+
conformance: ACP_CONFORMANCE.codex,
|
|
127
|
+
command: () => 'npx',
|
|
128
|
+
argv: () => ['--yes', CODEX_ACP_PACKAGE],
|
|
129
|
+
}),
|
|
130
|
+
delegateArgv: (prompt, cwd, options) => [
|
|
131
|
+
'exec', '--ephemeral', '--ignore-user-config',
|
|
132
|
+
'--sandbox', options.readOnly ? 'read-only' : 'workspace-write',
|
|
133
|
+
'--cd', cwd,
|
|
134
|
+
'--config', 'sandbox_workspace_write.network_access=false',
|
|
135
|
+
'--output-schema', options.schemaFile,
|
|
136
|
+
'--output-last-message', options.hostOutput,
|
|
137
|
+
'--json', prompt,
|
|
138
|
+
],
|
|
139
|
+
}),
|
|
140
|
+
opencode: Object.freeze({
|
|
141
|
+
binary: 'opencode',
|
|
142
|
+
acp: Object.freeze({
|
|
143
|
+
surface: 'native OpenCode ACP stdio server',
|
|
144
|
+
transport: 'stdio',
|
|
145
|
+
protocolVersions: [1],
|
|
146
|
+
conformance: ACP_CONFORMANCE.opencode,
|
|
147
|
+
command: ({ cliCommand }) => cliCommand,
|
|
148
|
+
argv: () => ['acp'],
|
|
149
|
+
}),
|
|
150
|
+
delegateArgv: (prompt, cwd) => [
|
|
151
|
+
'run', '--dir', cwd, '--format', 'json', '--auto', prompt,
|
|
152
|
+
],
|
|
153
|
+
delegateEnv: (options) => ({
|
|
154
|
+
OPENCODE_CONFIG_CONTENT: opencodePermission(options.writableRoots),
|
|
155
|
+
}),
|
|
156
|
+
}),
|
|
157
|
+
kimi: Object.freeze({
|
|
158
|
+
binary: 'kimi',
|
|
159
|
+
supportsModelSelection: true,
|
|
160
|
+
acp: Object.freeze({
|
|
161
|
+
surface: 'Kimi Code ACP stdio server',
|
|
162
|
+
transport: 'stdio',
|
|
163
|
+
protocolVersions: [1],
|
|
164
|
+
conformance: ACP_CONFORMANCE.kimi,
|
|
165
|
+
command: ({ cliCommand }) => cliCommand,
|
|
166
|
+
argv: () => ['acp'],
|
|
167
|
+
}),
|
|
168
|
+
delegateArgv: (prompt, _cwd, options) => {
|
|
169
|
+
const args = ['-p', prompt, '--output-format', 'stream-json'];
|
|
170
|
+
if (options.model) args.push('--model', options.model);
|
|
171
|
+
args.push(
|
|
172
|
+
'--agent-file',
|
|
173
|
+
path.join(
|
|
174
|
+
KIMI_PROFILE_ROOT,
|
|
175
|
+
options.readOnly ? 'kimi-read-only.md' : 'kimi-write.md',
|
|
176
|
+
),
|
|
177
|
+
);
|
|
178
|
+
return args;
|
|
179
|
+
},
|
|
180
|
+
}),
|
|
181
|
+
grok: Object.freeze({
|
|
182
|
+
binary: 'grok',
|
|
183
|
+
acp: Object.freeze({
|
|
184
|
+
surface: 'Grok agent stdio candidate',
|
|
185
|
+
transport: 'stdio',
|
|
186
|
+
protocolVersions: [1],
|
|
187
|
+
conformance: ACP_CONFORMANCE.grok,
|
|
188
|
+
command: ({ cliCommand }) => cliCommand,
|
|
189
|
+
argv: () => ['agent', 'stdio'],
|
|
190
|
+
}),
|
|
191
|
+
delegateArgv: (prompt, cwd, options) => [
|
|
192
|
+
'--cwd', cwd, '--single', prompt,
|
|
193
|
+
'--permission-mode', options.readOnly ? 'plan' : 'acceptEdits',
|
|
194
|
+
'--sandbox', options.readOnly ? 'read-only' : 'workspace',
|
|
195
|
+
'--no-memory', '--no-subagents', '--disable-web-search',
|
|
196
|
+
'--verbatim',
|
|
197
|
+
'--max-turns', '12',
|
|
198
|
+
'--output-format', 'json',
|
|
199
|
+
],
|
|
200
|
+
}),
|
|
201
|
+
zcode: Object.freeze({
|
|
202
|
+
binary: zcodeBinary(),
|
|
203
|
+
installedRuntimeOnly: true,
|
|
204
|
+
acp: Object.freeze({
|
|
205
|
+
surface: `installed ZCode Desktop runtime through zcode-acp ${ZCODE_ACP_SOURCE.version}`,
|
|
206
|
+
transport: 'stdio',
|
|
207
|
+
protocolVersions: [1],
|
|
208
|
+
conformance: ACP_CONFORMANCE.zcode,
|
|
209
|
+
command: ({ env }) => env.ULTRA_ZCODE_ACP_COMMAND || 'zcode-acp',
|
|
210
|
+
argv: ({ cliCommand }) => ['--zcode-path', cliCommand, '--no-browser'],
|
|
211
|
+
identityProbes: ({ command, cliCommand }) => [
|
|
212
|
+
{
|
|
213
|
+
label: 'zcode_bridge',
|
|
214
|
+
command,
|
|
215
|
+
args: ['--version'],
|
|
216
|
+
expectedStdout: ZCODE_ACP_SOURCE.buildMarker,
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
label: 'zcode_runtime',
|
|
220
|
+
command: cliCommand.endsWith('.cjs') ? process.execPath : cliCommand,
|
|
221
|
+
args: cliCommand.endsWith('.cjs') ? [cliCommand, '--version'] : ['--version'],
|
|
222
|
+
expectedStdout: ZCODE_ACP_SOURCE.runtimeVersion,
|
|
223
|
+
},
|
|
224
|
+
],
|
|
225
|
+
}),
|
|
226
|
+
delegateArgv: (prompt, cwd, options) => [
|
|
227
|
+
'--cwd', cwd,
|
|
228
|
+
'--mode', options.readOnly ? 'plan' : 'edit',
|
|
229
|
+
'--json', '--no-color',
|
|
230
|
+
'--disallowedTools', options.readOnly
|
|
231
|
+
? 'Bash Write Edit ApplyPatch Agent WebFetch WebSearch'
|
|
232
|
+
: 'Bash Agent WebFetch WebSearch',
|
|
233
|
+
'--prompt', prompt,
|
|
234
|
+
],
|
|
235
|
+
}),
|
|
236
|
+
});
|
|
237
|
+
|
|
238
|
+
function hostProfile(runtime) {
|
|
239
|
+
const profile = PROFILES[runtime];
|
|
240
|
+
if (!profile) throw new Error(`unsupported delegate host: ${runtime}`);
|
|
241
|
+
return { ...profile, transportMaturity: TRANSPORT_MATURITY[runtime] };
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
// The live delegate surface names honestly what a run actually used. The ZCode
|
|
245
|
+
// headless transports are app-internal surfaces, never the documented ZCode
|
|
246
|
+
// Desktop interactive primary path, so every receipt that records one says so.
|
|
247
|
+
function transportSurface(runtime, binary = PROFILES[runtime] ? PROFILES[runtime].binary : undefined) {
|
|
248
|
+
if (runtime === 'zcode') {
|
|
249
|
+
const source = binary === ZCODE_BUNDLED_CLI ? 'the App-bundled headless CLI' : 'the zcode headless CLI on PATH';
|
|
250
|
+
return `${source} (experimental; not the documented ZCode Desktop interactive surface)`;
|
|
251
|
+
}
|
|
252
|
+
return 'documented non-interactive CLI';
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
module.exports = {
|
|
256
|
+
ACP_CONFORMANCE,
|
|
257
|
+
CLAUDE_ACP_PACKAGE,
|
|
258
|
+
CODEX_ACP_PACKAGE,
|
|
259
|
+
PROFILES,
|
|
260
|
+
TRANSPORT_MATURITY,
|
|
261
|
+
ZCODE_BUNDLED_CLI,
|
|
262
|
+
ZCODE_ACP_SOURCE,
|
|
263
|
+
hostProfile,
|
|
264
|
+
opencodePermission,
|
|
265
|
+
transportSurface,
|
|
266
|
+
zcodeBinary,
|
|
267
|
+
};
|
|
@@ -7,6 +7,18 @@ description: Reconcile one Change whose matching tasks are complete, run aggrega
|
|
|
7
7
|
|
|
8
8
|
Delivery closes the local Change; readiness grants no commit, push, tag, publish, or deploy authority.
|
|
9
9
|
|
|
10
|
+
## Route modes
|
|
11
|
+
|
|
12
|
+
| Mode | Entry | Observable exit | Next |
|
|
13
|
+
|---|---|---|---|
|
|
14
|
+
| `reconcile` | Explicit invocation or a valid Execution Grant for a tested active Change | Intent, implementation, specifications, documentation, evidence, and report agree, or changed files make the exact stale evidence visible | Recommend `ultra-test/reaudit` after changes, otherwise recommend explicit `ultra-deliver/finalize` |
|
|
15
|
+
| `finalize` | Current explicit owner invocation only | Fresh transport/evidence checks pass, version and package posture are owner-set, `delivery.md` is written, and the Change is locally archived | Report `idle` plus every separately authorized or unfinished release effect |
|
|
16
|
+
|
|
17
|
+
Follow `../ultra-status/references/route-contract.md`. Show a Route Card at entry, after
|
|
18
|
+
reconciliation, before the finalization checkpoint, and after archive or any stop.
|
|
19
|
+
Grant-aware continuation ends with `reconcile`; no Host metadata bit, report, or grant
|
|
20
|
+
turns `finalize` into an implicit mode.
|
|
21
|
+
|
|
10
22
|
## Before you start
|
|
11
23
|
|
|
12
24
|
1. If model-selected, verify the live execution grant in `../ultra-change/references/execution-grant.md` — a current session-local activation or a stably verified durable work-package grant; without either, stop. A model-selected Deliver run under that grant may reconcile, review, and report, and then MUST stop before finalization: its inputs, writes, and effects end at the report. Only a current explicit owner invocation of `ultra-deliver` may finalize — writing `delivery.md`, deciding the version decision and package posture, and archiving the stable Change id with `git mv` are owner-invocation-only in every grant mode, and a grant never covers them.
|
|
@@ -178,4 +190,5 @@ Without release authority, stop after the recoverable local archive and report i
|
|
|
178
190
|
trade-off rather than an established repository rule.
|
|
179
191
|
- `../ultra-think/references/autonomy-boundary.md` — read before scope or evidence shrinks.
|
|
180
192
|
- `../ultra-change/references/execution-grant.md` — read only for grant-activated continuation.
|
|
193
|
+
- `../ultra-status/references/route-contract.md` — owner-visible route, checkpoint, and recovery output.
|
|
181
194
|
- `references/baseline-reconciliation.md` — exact `delivery.md` reconciliation contract.
|
|
@@ -7,6 +7,20 @@ description: Carry one planned task from a written implementation plan through r
|
|
|
7
7
|
|
|
8
8
|
The model owns code reasoning and edits; repository files own the resumable contract.
|
|
9
9
|
|
|
10
|
+
## Route modes
|
|
11
|
+
|
|
12
|
+
| Mode | Entry | Observable exit | Next |
|
|
13
|
+
|---|---|---|---|
|
|
14
|
+
| `execute` | Explicit task id or a valid Execution Grant covering one dependency-ready pending task | The named task has current acceptance evidence, final task review, completion context, and a read-back `completed` ledger row | Recommend the next exact `ultra-dev/execute` task or `ultra-test/audit` |
|
|
15
|
+
| `resume` | Explicit task id or a valid Execution Grant covering the unique in-progress task | Existing work is reconciled from Git, context, and Resume Note, then reaches the same completion evidence or a typed stop | Recommend the next exact task, `ultra-test/audit`, or the responsible repair route |
|
|
16
|
+
| `reopen` | Explicit task id or a valid Execution Grant after current evidence invalidates a completed task | The invalidated criteria are refreshed through a new review and the task is completed again, or the remaining gate is named | Recommend the next exact task or `ultra-test/reaudit` |
|
|
17
|
+
|
|
18
|
+
Follow `../ultra-status/references/route-contract.md`. Show a Route Card before the
|
|
19
|
+
first implementation edit, at material checkpoints or unavailable evidence, and after
|
|
20
|
+
the ledger readback. When context pressure threatens reliable continuation, finish the
|
|
21
|
+
nearest safe write, refresh the Resume Note, and recommend a fresh session rather than
|
|
22
|
+
pretending the task is still making invisible progress.
|
|
23
|
+
|
|
10
24
|
## Before you start
|
|
11
25
|
|
|
12
26
|
1. If model-selected, verify the live execution grant in `../ultra-change/references/execution-grant.md` — a current session-local activation or a stably verified durable work-package grant; without either, stop.
|
|
@@ -229,8 +243,9 @@ historical evidence, then write and read back the ledger transition. Refresh the
|
|
|
229
243
|
evidence, run task review for the new snapshot, and repeat this closeout sequence.
|
|
230
244
|
|
|
231
245
|
Report the changed paths, the seam, the exact checks run, the review result, the
|
|
232
|
-
evidence gaps and the residual risk. Recommend the next capability from what the
|
|
233
|
-
|
|
246
|
+
evidence gaps and the residual risk. Recommend the next capability from what the files
|
|
247
|
+
now say. Continue only when its exact mode and effects remain inside the valid grant and
|
|
248
|
+
after showing the transition Route Card; otherwise do not invoke it.
|
|
234
249
|
|
|
235
250
|
## When the owner decides
|
|
236
251
|
|
|
@@ -245,5 +260,6 @@ authority. An interruption leaves the worktree as-is and names it in the Resume
|
|
|
245
260
|
- `../ultra-think/references/autonomy-boundary.md` — read when spec and code disagree.
|
|
246
261
|
- `../ultra-review/SKILL.md` — read when implementation evidence is ready for review.
|
|
247
262
|
- `../ultra-change/references/execution-grant.md` — read only for grant-activated continuation.
|
|
263
|
+
- `../ultra-status/references/route-contract.md` — owner-visible route, checkpoint, and recovery output.
|
|
248
264
|
- `../ultra-plan/references/task-evidence-v2.md` — canonical evidence, disposition, and task-review shape.
|
|
249
265
|
- `references/debugging.md` — read for a reproduced failure before selecting a repair.
|
|
@@ -9,6 +9,17 @@ Initialization establishes places for later authority and records raw owner inta
|
|
|
9
9
|
does not validate the problem, establish a North Star, build a product or architecture
|
|
10
10
|
baseline, settle domain language, choose a Change, or start another public workflow.
|
|
11
11
|
|
|
12
|
+
## Route modes
|
|
13
|
+
|
|
14
|
+
| Mode | Entry | Observable exit | Next |
|
|
15
|
+
|---|---|---|---|
|
|
16
|
+
| `create` | Explicit owner invocation when `.ultra/` is absent | Missing skeleton files and raw Project Brief are published and read back; Git exists | Recommend `ultra-research` in `baseline` mode |
|
|
17
|
+
| `recover` | Explicit owner invocation when the skeleton is partial or uncertain | Missing files are restored, preserved authority is byte-identical, and every unresolved repair is named | Recommend `ultra-research` in `baseline` mode when the brief is usable; otherwise resume `ultra-init/recover` |
|
|
18
|
+
|
|
19
|
+
Follow `../ultra-status/references/route-contract.md`. Derive a Route Card before the
|
|
20
|
+
first write and at the exit or any repair stop. Init never continues into Research on
|
|
21
|
+
its own, and its `Position` reports observed files rather than semantic progress.
|
|
22
|
+
|
|
12
23
|
## Before you start
|
|
13
24
|
|
|
14
25
|
1. If `.ultra/changes/active/` exists, resolve at most one active `change_id`. Read
|
|
@@ -128,4 +139,5 @@ usable brief exists, but do not invoke it.
|
|
|
128
139
|
|
|
129
140
|
- `../ultra-grilling/SKILL.md` — read before the first missing brief field.
|
|
130
141
|
- `references/brownfield-adoption.md` — read when maintained behavior already exists.
|
|
142
|
+
- `../ultra-status/references/route-contract.md` — owner-visible route, checkpoint, and recovery output.
|
|
131
143
|
- `../ultra-think/references/autonomy-boundary.md` — read before replacing authority.
|
|
@@ -7,6 +7,18 @@ description: Turn an evidenced Change intent into a dependency-valid task ledger
|
|
|
7
7
|
|
|
8
8
|
Planning owns decomposition and technical design; files carry it across sessions and hosts.
|
|
9
9
|
|
|
10
|
+
## Route modes
|
|
11
|
+
|
|
12
|
+
| Mode | Entry | Observable exit | Next |
|
|
13
|
+
|---|---|---|---|
|
|
14
|
+
| `decompose` | Explicit invocation or a valid Execution Grant for one accepted, evidenced Change | A dependency-valid task graph, contexts, acceptance mapping, review, and earliest observable slice are read back | Recommend the exact first `ultra-dev/execute` task |
|
|
15
|
+
| `recover` | Explicit invocation or a valid Execution Grant when the current Change's planning artifacts are incomplete or inconsistent | Ledger/context/trace defects are repaired or a bounded unavailable path is reported | Recommend the exact first `ultra-dev/execute` task, or `ultra-change/reconcile` for a product evidence gap |
|
|
16
|
+
|
|
17
|
+
Follow `../ultra-status/references/route-contract.md`. Show the Route Card before
|
|
18
|
+
decomposition, at any material posture decision, and after reporting the graph. The
|
|
19
|
+
first executable slice must name its real consumer, real data path, and owner-visible
|
|
20
|
+
observation; a task count or completed plan file is not early value.
|
|
21
|
+
|
|
10
22
|
## Before you start
|
|
11
23
|
|
|
12
24
|
1. If model-selected, verify the live execution grant in `../ultra-change/references/execution-grant.md` — a current session-local activation or a stably verified durable work-package grant; without either, stop.
|
|
@@ -47,8 +59,11 @@ Keep the posture visible rather than silently drifting.
|
|
|
47
59
|
Use `../ultra-grilling/SKILL.md` through the host-native question surface when the
|
|
48
60
|
choice remains material, one question with a recommendation at a time.
|
|
49
61
|
|
|
50
|
-
When the whole path
|
|
51
|
-
|
|
62
|
+
When a product or contract evidence gap leaves the whole path unclear, return the exact
|
|
63
|
+
gap to `ultra-change/reconcile`; Plan does not open Research directly. Change decides
|
|
64
|
+
whether to record a bounded Research Disposition. For ordinary technical uncertainty,
|
|
65
|
+
the model resolves it or writes one bounded spike/tracer task. For one consequential
|
|
66
|
+
trade-off, use `../ultra-think/SKILL.md`.
|
|
52
67
|
|
|
53
68
|
## Choose the plan shape
|
|
54
69
|
|
|
@@ -126,7 +141,9 @@ reached, preserve the findings and return the evidence to the responsible model
|
|
|
126
141
|
owner. Attempt and finding counts never manufacture convergence or failure.
|
|
127
142
|
|
|
128
143
|
Report the graph, frontier, seams, warnings and first task. Recommend the next explicit
|
|
129
|
-
capability from the files
|
|
144
|
+
capability from the files. Under a valid grant covering that exact task, show the
|
|
145
|
+
transition Route Card before allowing Dev to re-verify and continue; otherwise do not
|
|
146
|
+
invoke it.
|
|
130
147
|
|
|
131
148
|
## When the owner decides
|
|
132
149
|
|
|
@@ -139,4 +156,5 @@ contract or material trade-off. The model owns decomposition and repairs broken
|
|
|
139
156
|
- `../ultra-think/SKILL.md` — read when one evidenced decision blocks decomposition.
|
|
140
157
|
- `../ultra-review/SKILL.md` — read after plan files pass mechanical verification.
|
|
141
158
|
- `../ultra-change/references/execution-grant.md` — read only for grant-activated continuation.
|
|
159
|
+
- `../ultra-status/references/route-contract.md` — owner-visible route, checkpoint, and recovery output.
|
|
142
160
|
- `references/task-evidence-v2.md` — canonical typed task evidence and task-review contract.
|
|
@@ -10,9 +10,26 @@ baseline plus later evidence-backed corrections. Web
|
|
|
10
10
|
search is one evidence source, not the workflow: repository files, Git, tests, runtime,
|
|
11
11
|
maintained documentation, owner decisions, and current primary sources all count.
|
|
12
12
|
|
|
13
|
+
## Route modes
|
|
14
|
+
|
|
15
|
+
| Mode | Entry | Observable exit | Next |
|
|
16
|
+
|---|---|---|---|
|
|
17
|
+
| `baseline` | Explicit owner invocation with a usable Project Brief and no accepted baseline for the boundary | Selected reports, synthesis, specifications, vocabulary, and accepted North Star are read back; unknowns and omissions remain explicit | Recommend `ultra-change` in `intake` mode for the next bounded request |
|
|
18
|
+
| `change-scoped` | Explicit invocation or a valid Execution Grant for one active Change's recorded Research Disposition | The named exit evidence exists and the selected canonical sections are refreshed without changing Change acceptance | Return to the same `ultra-change` in `reconcile` mode |
|
|
19
|
+
|
|
20
|
+
Follow `../ultra-status/references/route-contract.md`. At entry, name the mode, entry
|
|
21
|
+
question, selected coverage, observable stop condition, and return route. Refresh the
|
|
22
|
+
Route Card at each material checkpoint, pause, and exit; lens counts are navigation, not
|
|
23
|
+
proof that Research is semantically complete.
|
|
24
|
+
|
|
13
25
|
## Before you start
|
|
14
26
|
|
|
15
|
-
1.
|
|
27
|
+
1. Resolve `baseline` or `change-scoped` from the artifacts and invocation. A
|
|
28
|
+
model-selected run is valid only for `change-scoped` mode under the live execution
|
|
29
|
+
grant in `../ultra-change/references/execution-grant.md` — a current session-local
|
|
30
|
+
activation or a stably verified durable work-package grant covering the same Change;
|
|
31
|
+
without it, stop and recommend explicit invocation. Baseline adoption is always an
|
|
32
|
+
explicit-entry mode.
|
|
16
33
|
2. Resolve at most one active `change_id`, then read `.ultra/tasks.json` plus the
|
|
17
34
|
`context_file` and `## Resume Note` of unfinished tasks whose `change_id` matches it,
|
|
18
35
|
if any. Archived or abandoned unfinished rows are history, not the current frontier.
|
|
@@ -46,9 +63,15 @@ When coverage spans several lenses or the path itself is unclear, read
|
|
|
46
63
|
for one already-bounded evidence question. Wayfinding selects the smallest useful
|
|
47
64
|
coverage; it does not create workflow state or another semantic authority.
|
|
48
65
|
|
|
66
|
+
The derived brief records the entry question, selected lenses, deliberate omissions,
|
|
67
|
+
dependencies, source plan, material checkpoints, observable stop condition, and return
|
|
68
|
+
route. Read it on a fresh session instead of restarting completed evidence collection.
|
|
69
|
+
|
|
49
70
|
Map the brief and unresolved specification sections to seventeen focused evidence
|
|
50
|
-
lenses.
|
|
51
|
-
|
|
71
|
+
lenses. Show the proposed coverage once. Pause only when it expands an accepted boundary
|
|
72
|
+
or creates another material checkpoint; a covering Change Research Disposition does not
|
|
73
|
+
need a duplicate confirmation. Load one reference at a time; the parent holds the
|
|
74
|
+
question map, not every step prompt.
|
|
52
75
|
|
|
53
76
|
The first six lenses have real semantic dependencies:
|
|
54
77
|
|
|
@@ -88,7 +111,8 @@ For scoped Research inside an active Change, answer only its recorded `Research
|
|
|
88
111
|
Disposition` question and produce the named exit evidence. Research writes reports and
|
|
89
112
|
the mapped canonical baseline sections; it does not silently rewrite Change acceptance.
|
|
90
113
|
Return the evidence paths so `ultra-change` can reconcile the accepted intent before
|
|
91
|
-
planning when that contract must change.
|
|
114
|
+
planning when that contract must change. The scoped run's return route is always the
|
|
115
|
+
same stable Change, even when the evidence supports the original intent unchanged.
|
|
92
116
|
|
|
93
117
|
If web access is unavailable, record `[UNVERIFIED: no web access]` and continue with
|
|
94
118
|
other evidence. Missing tooling lowers confidence; it does not manufacture a blocker.
|
|
@@ -115,7 +139,10 @@ or grants execution.
|
|
|
115
139
|
|
|
116
140
|
Load `references/99-synthesis.md` only after selected reports exist. Read every promoted
|
|
117
141
|
file back, verify trace anchors and source hashes, and report exact unresolved gaps.
|
|
118
|
-
|
|
142
|
+
For `baseline`, recommend `ultra-change/intake`; for `change-scoped`, return the named
|
|
143
|
+
evidence to `ultra-change/reconcile`. Invoke neither unless the latter continuation is
|
|
144
|
+
covered by the same valid Execution Grant; when it is covered, show the transition Route
|
|
145
|
+
Card first and let Change re-verify its own mode and grant.
|
|
119
146
|
|
|
120
147
|
## When the owner decides
|
|
121
148
|
|
|
@@ -136,4 +163,5 @@ selects methods, and updates accepted files inside that frame.
|
|
|
136
163
|
- `references/north-star-v2.md` — exact semantic structure, adoption, validation, and
|
|
137
164
|
supersession contract.
|
|
138
165
|
- `../ultra-change/references/execution-grant.md` — read only for grant-activated continuation.
|
|
166
|
+
- `../ultra-status/references/route-contract.md` — owner-visible route, checkpoint, and recovery output.
|
|
139
167
|
- `../ultra-think/references/autonomy-boundary.md` — read before reducing authority.
|
|
@@ -9,22 +9,43 @@ This router is read-only. It separates verified files, model inference, and unav
|
|
|
9
9
|
evidence, then recommends one explicit public capability without invoking it. It never
|
|
10
10
|
persists a workflow-position field.
|
|
11
11
|
|
|
12
|
+
## Route modes
|
|
13
|
+
|
|
14
|
+
| Mode | Entry | Observable exit | Next |
|
|
15
|
+
|---|---|---|---|
|
|
16
|
+
| `route` | Owner asks what is current or what to do next | One artifact-derived Route Card names the matched facts, unavailable evidence, and one recommended route | The named explicit route, or `idle` |
|
|
17
|
+
| `history` | Owner asks what changed, was rejected, or was superseded | Relevant decisions, Git revisions, archived/abandoned Changes, and unresolved contradictions are summarized without becoming authority | Return to `route` or the owner-selected revision route |
|
|
18
|
+
| `installation` | Owner asks whether Ultra is discovered and healthy on a Host | Installed version, provenance, Skill/hook discovery, drift, and reachable repair are reported read-only | Recommend the exact install/update/Doctor repair |
|
|
19
|
+
| `delegation` | Owner asks about a worker, handoff, ACP/CLI event, or terminal result | Transport observations and canonical authority are shown separately with a retry/cancel/integration path | Return to the requesting primary route |
|
|
20
|
+
| `recovery` | Authority is absent, ambiguous, stale, malformed, or temporarily unreadable | The earliest unsafe or unavailable fact and cheapest safe repair, retry, cancel, abandon, or fresh-session path are named | Recommend only the repair-capable explicit route |
|
|
21
|
+
|
|
22
|
+
Follow `references/route-contract.md` and use its `UBP Route Card` as the default output,
|
|
23
|
+
not an optional appendix. Expand history, installation, delegation, or recovery details
|
|
24
|
+
only when requested or needed to explain why the normal route is unavailable. Status is
|
|
25
|
+
a `router`: the Owner invokes it for read-only diagnosis, its Host implicit bit remains
|
|
26
|
+
off, and it supplies no continuation authority. Other public Skills derive their own
|
|
27
|
+
cards from the shared reference rather than invoking Status.
|
|
28
|
+
|
|
12
29
|
## Before you start
|
|
13
30
|
|
|
14
31
|
1. Read `../ultra-change/references/change-contract.md` and apply its **Active Change
|
|
15
32
|
authority resolution** before reading any active `intent.md` or relying on a current
|
|
16
33
|
`change_id`. A positively observed absent `.ultra` uses the existing `ultra-init`
|
|
17
|
-
route. Otherwise continue only from the rule's stable zero-or-one result
|
|
18
|
-
diagnostic stops routing
|
|
19
|
-
|
|
34
|
+
route. Otherwise continue only from the rule's stable zero-or-one result. A typed
|
|
35
|
+
diagnostic stops semantic routing from an ambiguous active Change, but it does not
|
|
36
|
+
stop Status: switch to `recovery` mode and report the diagnostic plus safe Git and
|
|
37
|
+
directory observations without reading any ambiguous `intent.md` as authority. With
|
|
38
|
+
one valid active Change, read `.ultra/tasks.json`, then tasks whose `change_id` matches it and the
|
|
20
39
|
frontier task's `context_file` and `## Resume Note`. `.ultra/tasks.json` is the sole
|
|
21
40
|
task-status authority. A Status or Complexity header in a legacy context is a
|
|
22
41
|
migration diagnostic; the ledger wins. Historical and abandoned tasks never define
|
|
23
42
|
the frontier.
|
|
24
|
-
2.
|
|
25
|
-
`.ultra/decisions/`, specifications,
|
|
26
|
-
|
|
27
|
-
|
|
43
|
+
2. After stable authority resolution, read `.ultra/project-brief.md`,
|
|
44
|
+
`.ultra/north-star.md`, `CONTEXT.md`, relevant `.ultra/decisions/`, specifications,
|
|
45
|
+
active, archived, or abandoned Changes, and evidence. In `recovery` mode, read only
|
|
46
|
+
unaffected canonical files and safe directory/Git observations; do not interpret an
|
|
47
|
+
ambiguous active intent. An abandoned Change supplies historical boundary and
|
|
48
|
+
recovery context; it never defines the current route.
|
|
28
49
|
3. Inspect Git `HEAD`, worktree status, and installed host manifests without repair.
|
|
29
50
|
4. When the active Change records a `durable work-package` Execution Grant, report it
|
|
30
51
|
as recorded authorization data — grant id, cited decision, and its recorded
|
|
@@ -36,6 +57,8 @@ persists a workflow-position field.
|
|
|
36
57
|
|
|
37
58
|
## Definition of done
|
|
38
59
|
|
|
60
|
+
- Emit the current Route Card with an exact mode, observable exit, unfinished work, and
|
|
61
|
+
one next route or safe recovery path.
|
|
39
62
|
- Evaluate the artifact route in order and name the evidence supporting the match.
|
|
40
63
|
- Keep stale test evidence, dirty worktree state, baseline gaps, and task graph risks
|
|
41
64
|
visible without converting them into semantic failure.
|
|
@@ -153,6 +176,12 @@ and unresolved `FP-*`/`NS-*`/`HC-*` reference. A mismatch is stale evidence, nev
|
|
|
153
176
|
mechanical verdict about truth or permission; supersession does not delete prior task,
|
|
154
177
|
review, Test, or delivery evidence.
|
|
155
178
|
|
|
179
|
+
On a fresh session, use the current Change's exact matching contexts and closing Resume
|
|
180
|
+
Note to reconstruct the card. Do not rerun completed Research or infer route from chat
|
|
181
|
+
memory. In `history` mode, distinguish mutable draft edits from superseding accepted
|
|
182
|
+
decision records and keep rejected or abandoned alternatives visible when they explain
|
|
183
|
+
the current boundary.
|
|
184
|
+
|
|
156
185
|
## Surface risk and installation health
|
|
157
186
|
|
|
158
187
|
List unmet task dependencies, more than one matching `in_progress` task under the
|
|
@@ -173,6 +202,7 @@ Contradictory facts remain visible instead of being resolved by routing heuristi
|
|
|
173
202
|
## References
|
|
174
203
|
|
|
175
204
|
- `../ultra-change/references/change-contract.md` — canonical Active Change authority resolution.
|
|
205
|
+
- `references/route-contract.md` — canonical Route Card, checkpoint, continuation, and recovery contract.
|
|
176
206
|
- `../ultra-think/SKILL.md` — read only when contradictory evidence creates one real
|
|
177
207
|
decision rather than a mechanical repair.
|
|
178
208
|
- `../ultra-think/references/autonomy-boundary.md` — read before recommending a route
|