ultra-builder-pro-cli 5.0.1 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/CHANGELOG.md +103 -3
  2. package/README.md +67 -478
  3. package/README.zh-CN.md +49 -422
  4. package/adapters/_shared/frontmatter.cjs +1 -18
  5. package/adapters/_shared/plugin-core.cjs +17 -83
  6. package/adapters/_shared/runtime-assets.cjs +6 -120
  7. package/adapters/claude.js +8 -24
  8. package/adapters/codex.js +13 -32
  9. package/bin/install.js +35 -57
  10. package/docs/PLUGIN-ISOLATION-CONTRACT.md +13 -101
  11. package/docs/examples/drive/claude-reviewer.sh +53 -0
  12. package/docs/examples/drive/claude-writer.sh +43 -0
  13. package/engine/FORMATS.md +1051 -0
  14. package/engine/checks.cjs +139 -0
  15. package/engine/cli.cjs +148 -0
  16. package/engine/completion.cjs +48 -0
  17. package/engine/context.cjs +94 -0
  18. package/engine/drive.cjs +220 -0
  19. package/engine/expect-worker.cjs +5 -0
  20. package/engine/expect.cjs +33 -0
  21. package/engine/formats.cjs +189 -0
  22. package/engine/git-state.cjs +112 -0
  23. package/engine/ledger.cjs +205 -0
  24. package/engine/loading.cjs +28 -0
  25. package/engine/merge.cjs +273 -0
  26. package/engine/milestone.cjs +89 -0
  27. package/engine/plan.cjs +232 -0
  28. package/engine/project.cjs +5 -0
  29. package/engine/signals.cjs +3 -0
  30. package/engine/states.cjs +175 -0
  31. package/hooks/session-start.cjs +54 -0
  32. package/package.json +17 -52
  33. package/skills/ultra/SKILL.md +395 -0
  34. package/.ultra-template/changes/abandoned/.gitkeep +0 -0
  35. package/.ultra-template/changes/active/.gitkeep +0 -1
  36. package/.ultra-template/changes/archive/.gitkeep +0 -1
  37. package/.ultra-template/contexts/TEMPLATE.md +0 -135
  38. package/.ultra-template/decisions/.gitkeep +0 -1
  39. package/.ultra-template/evidence/.gitkeep +0 -1
  40. package/.ultra-template/north-star.md +0 -52
  41. package/.ultra-template/project-brief.md +0 -28
  42. package/.ultra-template/research/.gitkeep +0 -1
  43. package/.ultra-template/specs/architecture.md +0 -81
  44. package/.ultra-template/specs/discovery.md +0 -74
  45. package/.ultra-template/specs/product.md +0 -80
  46. package/.ultra-template/specs/research-distillate.md +0 -57
  47. package/.ultra-template/tasks.json +0 -4
  48. package/.ultra-template/test-report.json +0 -44
  49. package/adapters/_shared/host-profile.cjs +0 -5
  50. package/adapters/grok.js +0 -242
  51. package/adapters/kimi.js +0 -232
  52. package/adapters/opencode.js +0 -408
  53. package/adapters/zcode.js +0 -375
  54. package/bin/delegate-worker.cjs +0 -5
  55. package/bin/delegate.cjs +0 -5
  56. package/docs/ARCHITECTURE.md +0 -274
  57. package/docs/ARTIFACT-AUTHORITY.md +0 -305
  58. package/docs/DECISIONS.md +0 -229
  59. package/docs/PHILOSOPHY.md +0 -261
  60. package/docs/RUNTIME-COMPAT-MATRIX.md +0 -316
  61. package/docs/SKILL-AUTHORING.md +0 -113
  62. package/docs/WORKFLOW-LIFECYCLE.md +0 -350
  63. package/docs/evals/adversarial-review-2026-08-14.md +0 -84
  64. package/docs/evals/ultra-5-0-journey-results.md +0 -62
  65. package/docs/evals/ultra-5-0-live-acp-conformance.md +0 -93
  66. package/docs/evals/ultra-5-0-route-journeys.md +0 -145
  67. package/docs/evals/zcode-automation-2026-08-14.md +0 -103
  68. package/hooks/README.md +0 -52
  69. package/hooks/_common.py +0 -1779
  70. package/hooks/adapters/codex.py +0 -295
  71. package/hooks/adapters/grok.py +0 -134
  72. package/hooks/adapters/kimi.py +0 -156
  73. package/hooks/adapters/zcode.py +0 -227
  74. package/hooks/block_dangerous_commands.py +0 -201
  75. package/hooks/compact_context.py +0 -224
  76. package/hooks/mid_workflow_recall.py +0 -47
  77. package/hooks/post_edit_guard.py +0 -215
  78. package/hooks/session_context.py +0 -741
  79. package/skills/ultra-change/SKILL.md +0 -165
  80. package/skills/ultra-change/references/change-contract.md +0 -199
  81. package/skills/ultra-change/references/execution-grant.md +0 -109
  82. package/skills/ultra-change/references/primary-transfer.md +0 -273
  83. package/skills/ultra-change/scripts/validate_primary_transfer.cjs +0 -1928
  84. package/skills/ultra-delegate/SKILL.md +0 -195
  85. package/skills/ultra-delegate/patches/zcode-acp-0.1.0-zcode-0.16.5.patch +0 -184
  86. package/skills/ultra-delegate/references/delegation-contract.md +0 -138
  87. package/skills/ultra-delegate/scripts/acp-conformance.cjs +0 -287
  88. package/skills/ultra-delegate/scripts/acp-driver.cjs +0 -762
  89. package/skills/ultra-delegate/scripts/agent-execution-driver.cjs +0 -320
  90. package/skills/ultra-delegate/scripts/cli-driver.cjs +0 -61
  91. package/skills/ultra-delegate/scripts/delegate-profiles/kimi-read-only.md +0 -15
  92. package/skills/ultra-delegate/scripts/delegate-profiles/kimi-write.md +0 -17
  93. package/skills/ultra-delegate/scripts/delegate-worker.cjs +0 -328
  94. package/skills/ultra-delegate/scripts/delegate.cjs +0 -690
  95. package/skills/ultra-delegate/scripts/delegate_wait.py +0 -86
  96. package/skills/ultra-delegate/scripts/host-profile.cjs +0 -267
  97. package/skills/ultra-deliver/SKILL.md +0 -194
  98. package/skills/ultra-deliver/references/baseline-reconciliation.md +0 -41
  99. package/skills/ultra-dev/SKILL.md +0 -265
  100. package/skills/ultra-dev/references/debugging.md +0 -22
  101. package/skills/ultra-domain-modeling/SKILL.md +0 -79
  102. package/skills/ultra-grilling/SKILL.md +0 -121
  103. package/skills/ultra-grilling/references/reframing.md +0 -76
  104. package/skills/ultra-init/SKILL.md +0 -143
  105. package/skills/ultra-init/references/brownfield-adoption.md +0 -32
  106. package/skills/ultra-init/scripts/init_project.cjs +0 -1031
  107. package/skills/ultra-plan/SKILL.md +0 -160
  108. package/skills/ultra-plan/references/task-evidence-v2.md +0 -300
  109. package/skills/ultra-plan/scripts/validate_task_evidence.cjs +0 -859
  110. package/skills/ultra-research/SKILL.md +0 -167
  111. package/skills/ultra-research/references/00-problem-validation.md +0 -36
  112. package/skills/ultra-research/references/01-opportunity-discovery.md +0 -33
  113. package/skills/ultra-research/references/02-market-assessment.md +0 -31
  114. package/skills/ultra-research/references/03-alternatives.md +0 -31
  115. package/skills/ultra-research/references/04-product-strategy.md +0 -41
  116. package/skills/ultra-research/references/05-assumptions-validation.md +0 -31
  117. package/skills/ultra-research/references/10-user-personas.md +0 -30
  118. package/skills/ultra-research/references/11-user-scenarios.md +0 -28
  119. package/skills/ultra-research/references/20-user-stories.md +0 -31
  120. package/skills/ultra-research/references/21-features-scope.md +0 -38
  121. package/skills/ultra-research/references/22-success-metrics.md +0 -33
  122. package/skills/ultra-research/references/30-architecture-context.md +0 -30
  123. package/skills/ultra-research/references/31-solution-strategy.md +0 -28
  124. package/skills/ultra-research/references/32-building-blocks.md +0 -28
  125. package/skills/ultra-research/references/40-deployment.md +0 -29
  126. package/skills/ultra-research/references/41-quality-risks.md +0 -28
  127. package/skills/ultra-research/references/99-synthesis.md +0 -59
  128. package/skills/ultra-research/references/north-star-v2.md +0 -168
  129. package/skills/ultra-research/references/wayfinding.md +0 -50
  130. package/skills/ultra-research/scripts/validate_north_star.cjs +0 -1174
  131. package/skills/ultra-review/SKILL.md +0 -275
  132. package/skills/ultra-review/references/adversarial-evaluation.md +0 -31
  133. package/skills/ultra-review/references/code.md +0 -17
  134. package/skills/ultra-review/references/comments.md +0 -12
  135. package/skills/ultra-review/references/design.md +0 -12
  136. package/skills/ultra-review/references/errors.md +0 -13
  137. package/skills/ultra-review/references/review-modes.md +0 -29
  138. package/skills/ultra-review/references/spec.md +0 -18
  139. package/skills/ultra-review/references/tests.md +0 -12
  140. package/skills/ultra-review/references/unified-schema.md +0 -284
  141. package/skills/ultra-review/references/worker-packet.md +0 -183
  142. package/skills/ultra-review/scripts/review_wait.py +0 -2943
  143. package/skills/ultra-status/SKILL.md +0 -209
  144. package/skills/ultra-status/references/route-contract.md +0 -100
  145. package/skills/ultra-tdd/SKILL.md +0 -91
  146. package/skills/ultra-tdd/references/templates/README.md +0 -20
  147. package/skills/ultra-tdd/references/templates/feature-flag-default-audit.sh +0 -79
  148. package/skills/ultra-tdd/references/templates/persistence-real.ts +0 -78
  149. package/skills/ultra-tdd/references/templates/testcontainer-postgres.py +0 -78
  150. package/skills/ultra-tdd/references/templates/testcontainer-postgres.ts +0 -73
  151. package/skills/ultra-tdd/references/templates/vertical-slice.ts +0 -66
  152. package/skills/ultra-tdd/references/test-execution.md +0 -23
  153. package/skills/ultra-test/SKILL.md +0 -244
  154. package/skills/ultra-test/references/export-syntax.md +0 -18
  155. package/skills/ultra-test/scripts/validate_review_transport.cjs +0 -549
  156. package/skills/ultra-test/scripts/worktree_digest.cjs +0 -576
  157. package/skills/ultra-think/SKILL.md +0 -56
  158. package/skills/ultra-think/references/autonomy-boundary.md +0 -48
  159. package/skills/ultra-think/references/interaction-boundary.md +0 -42
@@ -1,261 +0,0 @@
1
- # Ultra Builder PHILOSOPHY (v0.26)
2
-
3
- **Authority**: This document defines the harness design philosophy. Every hook, Skill, template,
4
- and CLI behavior must be justifiable by these principles. Conflicts → cite the principle, not the
5
- rule.
6
-
7
- **Provenance**: Goals 1–4 and Commandments C1–C5 are carried forward unchanged in substance from
8
- Ultra Builder Pro v7.0, where they were derived from a 2026-04-30 system audit of real failures.
9
- Do not weaken any of them without a reproduced failure case.
10
-
11
- **Why exactly four goals and five commandments** — the counts are not sacred, the derivation
12
- rules are:
13
-
14
- - A **goal** is a class of systemic failure that has actually recurred, stated positively.
15
- A fifth goal requires naming a fifth recurring failure class that none of these four covers.
16
- - A **commandment** is a rule the model must cite to resolve a semantic conflict. If the model
17
- will never face a moment where it needs to invoke the rule, the rule is not a commandment —
18
- it is either a code invariant (enforce and test it) or dead weight (delete it).
19
-
20
- By that second rule, "stay silent in repositories that never opted in" is **not** a commandment:
21
- it is `if not exists('.ultra'): exit(0)`, a mechanical invariant the model never reasons about.
22
- It lives in `docs/PLUGIN-ISOLATION-CONTRACT.md` and is verified by test, not by citation.
23
-
24
- ---
25
-
26
- ## 4 Core Goals
27
-
28
- The harness exists to serve these — every constraint derives its legitimacy from contributing to
29
- one or more.
30
-
31
- 1. **Intent Fidelity** — what the user said they wanted is what gets built. No silent
32
- reinterpretation, no scope creep, no convenient shortcuts that drift from the original ask.
33
- 2. **Long-term Evolvability** — iteration #5 is as easy as iteration #1. Cognitive debt cannot
34
- accumulate; spec / task / code / doc must stay coherent.
35
- 3. **Production-Ready** — real persistence, real tests, real integration. No in-memory facades,
36
- no `default off` to dodge integration, no `it.skip` to dodge failures.
37
- 4. **Cognitive Coherence** — agent and user share the same picture of "what is currently true."
38
- Spec changes propagate. Doc rot is detected. Orphan code surfaces.
39
-
40
- ---
41
-
42
- ## 5 Commandments
43
-
44
- ### C1 — Goal-Always-Present
45
-
46
- The agent never stops seeing the current steering contract. Before Research accepts a
47
- baseline, the session Hook injects the raw Project Brief fallback. After Research, it
48
- requires the exact field ``- Status: `accepted``` and injects the accepted North Star v2 `## Problem Reality`,
49
- `## First-Principle Propositions`, `## North Star Outcomes`, and `## Hard Constraints`.
50
- The complete selected sections have a 32 KiB SessionStart ceiling. Above it, the Hook
51
- uses a reference-only fallback containing the canonical path, immutable accepted snapshot
52
- path, revision, status, exact validated SHA-256 and byte length, and a direct-read
53
- instruction that rejects different bytes as authority; semantic truncation is forbidden.
54
- Brownfield fallback still reads the actual v0.26 `## Project Direction`, `## North Star
55
- Outcome`, and `## Hard Constraints` shape, or the older `## One-line` shape, without
56
- misreporting either as v2. Current task acceptance is appended in every case. The cost of
57
- repetition is always less than the cost of drift.
58
-
59
- The publication choice is exact: inject a mechanically bound accepted North Star, otherwise use the Project Brief fallback or a recognized legacy shape.
60
- When selected accepted sections exceed 32 KiB, use the reference-only path instead of
61
- semantic truncation. A v2 file whose decision, digest, or immutable snapshot binding is
62
- invalid is never labelled accepted session authority.
63
- The Hook does not maintain a second accepted-publication grammar. It safely locates the
64
- installed sibling Research validator and invokes that one JavaScript report through a
65
- bounded argv-only subprocess. Missing Node.js, a missing validator, timeout, malformed or
66
- oversized output, invalid UTF-8, and repository path escape all produce a typed repair
67
- fallback rather than accepted authority. The report checks the complete mechanical
68
- structure; it does not decide whether the accepted semantics are true or valuable.
69
- North Star and Project Brief ingress share one bounded 8 MiB regular-file snapshot:
70
- repository root, parent components, and file identity are recorded, symlink components
71
- are rejected, and the canonical root-to-file chain is freshly reopened after the read.
72
- Every accepted, reference-only, legacy, or Project Brief publication consumes only those
73
- captured bytes. An unavailable Project Brief produces a typed repair note and is never
74
- reread through an unbounded path API. This detects ordinary cooperative-workspace drift;
75
- it is not a claim that a process can prevent malicious operating-system-level replacement.
76
- The v0.26 legacy branch recognizes headings `## Project Direction`, `## North Star Outcome`, `## Hard Constraints` exactly.
77
-
78
- > **Test**: pick a random in-progress task, ask the agent "what's the acceptance criteria?" — if
79
- > it cannot answer in one sentence, this commandment is broken.
80
-
81
- ### C2 — Enabling > Defensive
82
-
83
- Every prohibition ships with a runnable alternative. Prohibitions without an enabling path force
84
- agents to find loopholes (rename `mock` to `stub`, etc.). The cheaper path must be the right path.
85
-
86
- > **Test**: scan every prohibition in every Skill; each must reference a template that exists
87
- > under that Skill's `references/templates/` and can be copied as-is. The templates are rules,
88
- > so they ship with the package rather than being copied into each project.
89
-
90
- ### C3 — Sensors not Blockers
91
-
92
- Hooks emit signal; agents and users decide. Block only the **truly irreversible or
93
- privileged destructive** effects for which the hook has an exact repair:
94
-
95
- - Funds transfer / on-chain transactions
96
- - Protected-branch history rewrite or deletion
97
- - `DROP` / `TRUNCATE`
98
- - Hardcoded secret commit
99
- - Arbitrary code execution driven by user input
100
-
101
- Additive protected-branch publication and database migrations are advisory: the former
102
- remains recoverable through Git and the portable hook cannot receive every host's
103
- trusted approval receipt; the latter is not mechanically classifiable as reversible or
104
- irreversible. The work stands, the signal is delivered, and the agent proceeds inside
105
- the owner's authorized frame.
106
-
107
- > **Why this is absolute**: hard final gates and hard pre-commit gates each produced the same
108
- > over-correction loop in v7 — the agent weakened tests to escape the gate and drifted from the
109
- > spec. A gate that can be escaped by damaging the work is worse than no gate.
110
-
111
- > **Test**: count blocking outputs across all hooks; they must map 1:1 to the irreversible list.
112
-
113
- ### C4 — Incremental Validation
114
-
115
- The agent always knows "how far from done." Each edit updates `.ultra/progress/<task-id>.json`
116
- with evidence completeness across six dimensions. Final-gate audits are forbidden — if a gap
117
- matters at the end, it matters mid-flight.
118
-
119
- Canonical task evidence uses `ultra-task-evidence-v2`: command, inspection,
120
- owner-judgment, and external-observation retain distinct authorities, while the six
121
- dimensions remain independent observations. The owner alone supplies an
122
- owner-judgment result. Validators may check structure, identity, provenance, freshness,
123
- and exact references; they never decide semantic acceptance. `.ultra/tasks.json` is the
124
- sole task-status authority. A task remains `in_progress` through task review and becomes
125
- `completed` only after blocking findings are resolved or authoritatively dispositioned
126
- and affected evidence is refreshed. First-review admission uses the ledger, task
127
- context, immutable packet, and actual pre-review evidence; the one final v2 record is
128
- published only after its final review summary validates. Its `subject` is an independently
129
- captured completion-snapshot freshness observation made after that validation and
130
- immediately before evidence publication. Its `task_review` separately binds the retained strict summary; the summary does not prove the subject worktree digest. Aggregate Test
131
- recomputes each command or external receipt's bounded stable bytes against
132
- `raw_evidence_sha256`, then recomputes the exact record `evidence_digest`. The
133
- product-worktree digest excludes `.ultra/evidence/**`; these separate raw and record
134
- bindings make publication non-self-referential without making it invisible.
135
- Aggregate Test
136
- separately binds the current whole Change and rechecks current Acceptance, criterion and
137
- verification type, review summary, owner record, and cited-artifact evidence. If later work
138
- invalidates a completed task, Dev records affected criteria and reason in Change Log
139
- and Resume Note before the explicit ledger `completed` to `in_progress` transition;
140
- there is no silent demotion. Legacy context Status/Complexity and v1 evidence remain
141
- honest migration diagnostics, not alternative truth.
142
-
143
- > **Scoped exception**: whole-system wiring audit (`ultra-test`) is necessarily terminal, because
144
- > "this export has no non-test importer" cannot be evaluated while later tasks are still pending.
145
- > It is a terminal **sensor**, never a gate: it reports and hands the trade-off to the owner.
146
- > This is the only permitted end-of-flow audit.
147
-
148
- > **Test**: at any point in a task, reading `.ultra/progress/<task-id>.json` answers "what's left."
149
-
150
- ### C5 — Bounded Autonomy
151
-
152
- Autonomy is defined by goals, not rules. Inside the boundary the agent picks freely; crossing the
153
- boundary surfaces to the user.
154
-
155
- - **Inside**: choosing libraries, naming, file layout, internal abstractions, decomposition
156
- strategy, evidence interpretation, prioritization, final expression
157
- - **Crossing**: weakening test assertions, modifying spec to match implementation, default-off
158
- feature flags, in-memory replacing real persistence, scope reduction, external or irreversible
159
- effects
160
-
161
- **Which decisions reach the owner.** Inside/Crossing above sorts actions. Read from the owner's
162
- side, the same boundary sorts decisions into three:
163
-
164
- | Type | Definition | Handling |
165
- |---|---|---|
166
- | taste | no objectively correct answer; only the owner's preference settles it | always ask |
167
- | crossing | objectively decidable, but the consequence is irreversible | always ask |
168
- | everything else | has an objective answer, or is cheap to reverse | decide and proceed; asking is the error |
169
-
170
- How much lands in the third row is a function of how sharp the north star is. With constraints
171
- that can veto a concrete decision, most execution-time questions are answered by reading them.
172
- With vague ones, "does this cross a boundary?" cannot be decided at all, so every question
173
- degrades into taste and reaches the owner. **Interrupt frequency measures the north star, not
174
- the work.** Frequent interruptions mean going back to sharpen constraints, not asking faster.
175
-
176
- **Boundaries grow; they do not change.** Adding a hard constraint or a non-goal mid-flight is
177
- routine and needs no permission — the frame got sharper and no prior promise broke. Editing or
178
- deleting one is a REDUCTION under the test below. This is what makes iteration five cheaper than
179
- iteration one: the frame accumulates, and the share of decisions the model settles alone rises
180
- with it.
181
-
182
- **Operational test for spec changes.** When implementation and spec disagree, classify the change
183
- before touching the spec. Do not classify by intent — classify by asking one question that can be
184
- checked against the file:
185
-
186
- > **Does every commitment the spec already made still hold after this change?**
187
-
188
- | Answer | Classification | Action |
189
- |---|---|---|
190
- | Yes, and it now commits to more | EXPANSION | write it, log it |
191
- | Yes, the commitment is unchanged but stated correctly | CORRECTION | write it, log it |
192
- | **No — at least one prior commitment no longer holds** | **REDUCTION** | **stop and ask the owner** |
193
-
194
- The classification follows from the outcome, never from the reason. A well-argued rationale does
195
- not convert a REDUCTION into a CORRECTION; the rationale goes into the question put to the owner.
196
- This is the mechanism by which specs shrink silently, so it is the one place the model must not
197
- be allowed to self-certify.
198
-
199
- **Not to be confused with Planning Posture.** A Change's `## Planning Posture` uses
200
- EXPAND / SELECTIVE / HOLD / REDUCE to say how much work to plan right now. That is a scope
201
- decision about the future and is freely reversible. The classification above is about the past:
202
- whether a promise already made still holds. `REDUCE` the plan is routine; a `REDUCTION` of
203
- commitments stops the work and goes to the owner.
204
-
205
- > **Test**: any boundary-crossing action must trigger an owner question, an active task
206
- > `## Change Log` entry, or an accepted `.ultra/decisions/<id>.md`.
207
-
208
- ---
209
-
210
- ## When commandments conflict
211
-
212
- Goals override commandments. Commandments override rules. Cite the higher level:
213
-
214
- - `C2 overrides rule "no mock" → use the testcontainer template`
215
- - `goal Intent-Fidelity overrides C5 → ask the owner before reducing scope`
216
-
217
- ---
218
-
219
- ## Modifying this file
220
-
221
- Changes to PHILOSOPHY require:
222
-
223
- 1. A concrete failure case the change addresses, linked in the active Change or evidence
224
- 2. An impact assessment on every dependent hook and Skill
225
- 3. Migration of any dependent constraint
226
-
227
- PHILOSOPHY is the only file whose changes propagate to every prohibition, template reference, and
228
- Skill instruction. Do not touch it casually.
229
-
230
- ---
231
-
232
- ## Contract Table
233
-
234
- > Each row is a hardcoded contract between two parts of the system. Changing one side **without**
235
- > the other was the v7 audit's #1 cause of silently broken Goal-Always-Present injection. Update
236
- > this table BEFORE editing either side.
237
-
238
- | Consumer | Reads | Source of truth | Failure mode if drifted |
239
- |---|---|---|---|
240
- | `session_context` | the canonical JavaScript North Star validation report; bound accepted v2 sections or the 32 KiB immutable-snapshot reference with exact validated SHA-256 and byte length, without semantic truncation; Project Brief `## One-line`; actual v0.26 `## Project Direction` / `## North Star Outcome` / `## Hard Constraints`; or older North Star `## One-line` | `skills/ultra-research/scripts/validate_north_star.cjs`, `.ultra-template/north-star.md`, `.ultra-template/project-brief.md`, accepted `.ultra/north-star.md`, its owner decision and immutable snapshot, and the validator's two legacy-read shapes | Python and JavaScript publication grammars diverge, SessionStart labels unbound or different bytes accepted, truncates steering semantics, or shows no honest Project Brief/legacy fallback; C1 dies |
241
- | `session_context` | unique active `change_id` → one matching ledger `in_progress` task, else first dependency-ready ledger `pending` task → its context; legacy context Status/Complexity are diagnostics only | active Change directory plus `tasks.json[].change_id`, dependencies, sole status, and `context_file` | abandoned or blocked acceptance is injected, a legacy context overrides the ledger, or current acceptance never surfaces |
242
- | `mid_workflow_recall` | heading `## Acceptance Criteria` | `.ultra-template/contexts/TEMPLATE.md` | hook injects nothing; C1 dies silently |
243
- | `ultra-tdd` | path `references/templates/*` | `skills/ultra-tdd/references/templates/` | guidance points at a missing runnable alternative; C2 dies |
244
- | `post_edit_guard` | writes `.ultra/progress/<task-id>.json` for the active Change's current ledger task | active Change directory plus `tasks.json[].change_id`, `id`, and sole `status`, created on demand | historical work receives current observations or a Hook invents completion; C4 weakens |
245
- | `ultra-dev` and `post_edit_guard` | 6 keys: `tests_written`, `tests_passed`, `persistence_real`, `feature_flags_audit`, `vertical_slice`, `spec_trace` | the six-dimension table in `skills/ultra-dev/SKILL.md` and typed evidence contract in `skills/ultra-plan/references/task-evidence-v2.md` | sensor and workflow report different evidence or a progress observation becomes semantic acceptance |
246
- | plan/dev/review/test/deliver | ledger status; actual pre-review inputs; one final `ultra-task-evidence-v2` carrying an independent completion-snapshot freshness observation and separate task-review provenance; aggregate Test identity | `.ultra/tasks.json`, task context, immutable Review artifacts, and `skills/ultra-plan/references/task-evidence-v2.md` | first review requires its own final output, context becomes a second status authority, review provenance is claimed to prove the independent subject, task subject is rebound to a later aggregate worktree, or invalid evidence is silently demoted |
247
- | planning and status | marker `[NEEDS CLARIFICATION]` | `.ultra-template/specs/*.md` | unresolved product truth is hidden |
248
- | `ultra-plan` / `ultra-dev` / hooks | `trace_to` form `.ultra/specs/file.md#anchor` | `tasks.json[].trace_to` + GFM heading slugify | traces appear resolved when their heading is absent |
249
- | `ultra-deliver` / `ultra-status` | root Change identity, ordered v2 task-evidence/review identities, and strict aggregate Review packet/admission/subject/summary bindings | `.ultra/test-report.json`, retained task evidence and Review artifacts, `worktree_digest.cjs`, and existing structural validators | stale Change, intent, task set, task evidence, Review transport, or product results pass as current |
250
- | `compact_context` | `.ultra/.runtime/compact-snapshot.md` | derived from canonical files and Git | compact recovery loses acceleration, not authority |
251
- | every hook | existence of `.ultra/` | the project directory | Ultra taxes projects that never opted in (see `docs/PLUGIN-ISOLATION-CONTRACT.md`) |
252
- | `ultra-init` | the project data skeleton | `.ultra-template/` and the exact file list in its Skill | later Skills read missing authority paths; C1 dies |
253
-
254
- ### Maintenance protocol
255
-
256
- Before editing any row's source of truth:
257
-
258
- 1. Find every consumer in this table
259
- 2. Update consumer and source together in one change
260
- 3. Re-run the end-to-end injection check
261
- 4. Update this table if the contract surface changed
@@ -1,316 +0,0 @@
1
- # Runtime compatibility matrix
2
-
3
- Ultra Builder Pro adapts one fourteen-Skill, five-hook contract to six native hosts.
4
- This document records the differences that belong in adapters rather than shared
5
- Skills.
6
-
7
- ## Installed surface
8
-
9
- | Host | Managed plugin or bundle | Skills | Hook bridge |
10
- |---|---|---:|---|
11
- | Claude Code | `<config>/skills/ultra-builder-pro` | nested `skills/<name>` | direct Python commands in `hooks/hooks.json` |
12
- | Codex | `<home>/plugins/ultra-builder-pro` plus personal marketplace entry | nested `skills/<name>` with `agents/openai.yaml` | `hooks/adapters/codex.py` |
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
- | Kimi Code | `<config>/plugins/managed/ultra-builder-pro` plus `installed.json` | nested `skills/<name>` | `hooks/adapters/kimi.py` |
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` |
17
-
18
- Every host receives the same eight owner workflows, five model disciplines, and one
19
- router. Codex alone needs generated `agents/openai.yaml` files to express display data
20
- and implicit-invocation policy; those are host metadata, not custom agents.
21
-
22
- ## Scope resolution
23
-
24
- | Host | Global default | Local default | Environment override |
25
- |---|---|---|---|
26
- | Claude Code | `~/.claude` | `<cwd>/.claude` | `CLAUDE_CONFIG_DIR` |
27
- | Codex | `~/.codex` for config; `~/plugins` and `~/.agents` for sidecars | `<cwd>/.codex` plus home-scoped plugin surface | `CODEX_HOME` |
28
- | OpenCode | `${XDG_CONFIG_HOME:-~/.config}/opencode` | `<cwd>/.opencode` | `OPENCODE_CONFIG_DIR` or `OPENCODE_CONFIG` |
29
- | Kimi Code | `~/.kimi-code` | no project plugin scope | `KIMI_CODE_HOME` |
30
- | Grok Build | `~/.grok` | no project plugin scope | `GROK_HOME` |
31
- | ZCode | `~/.zcode` | no project plugin scope | adapter `ZCODE_HOME` override |
32
-
33
- An explicit `--config-dir` wins over all defaults and becomes the home for any
34
- host-owned sidecar as well. This rule makes isolated installation tests trustworthy.
35
- With multiple selected runtimes, the CLI passes `<config-dir>/<runtime>` to each adapter
36
- instead of merging incompatible host layouts.
37
- Kimi, Grok, and ZCode currently expose user-scoped plugin installation only. `--local` rejects
38
- them before mutating another host; an explicit `--config-dir` remains available for an
39
- isolated user-scope installation test.
40
-
41
- ## Invocation policy
42
-
43
- | Invocation class | Owner can route directly | Model can select implicitly |
44
- |---|---:|---:|
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.
56
-
57
- Claude and Grok receive `user-invocable` / `disable-model-invocation` frontmatter.
58
- Kimi receives its native equivalent. Codex receives
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.
71
-
72
- ## Hook compatibility
73
-
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 |
81
-
82
- All hooks share the same `.ultra/` idle guard. Wire adapters normalize payload and
83
- output fields only; they do not change semantic policy. Codex installation health and
84
- Hook trust are distinct. Codex owns the persisted trust decision, while its plugin CLI
85
- does not expose that live decision to Ultra. Doctor therefore reports
86
- `hook_activation: host_managed` with `observable: false`; it claims neither trusted nor
87
- untrusted and emits no remediation action without an authoritative Host observation.
88
-
89
- ## Agent execution driver selection
90
-
91
- | Host | ACP candidate observed locally | Versioned conformance | 5.0 active driver | Fallback reason |
92
- |---|---|---|---|---|
93
- | 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 |
94
- | Codex | pinned `@agentclientprotocol/codex-acp@1.6.2` stdio adapter | PASS, real provider receipt | ACP when `npx` exists | `acp_command_unavailable` when absent |
95
- | OpenCode | native `opencode acp` stdio server | PASS, real provider receipt | ACP when executable exists | `acp_command_unavailable` when absent |
96
- | 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 |
97
- | 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 |
98
- | 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 |
99
-
100
- Selection is ACP-first only after the exact Host row is `passed` and names a non-empty
101
- evidence reference: stable protocol v1, stdio, executable availability, read-only,
102
- bounded write, permission denial,
103
- cancellation/no-orphan, cwd/diff parity, result parity, and credential/event redaction
104
- must all hold. Static capability inspection never starts the provider. A candidate,
105
- binary, help output, SDK version, or successful fake-agent suite alone cannot promote a
106
- Host. The stable wire contract follows the official
107
- [ACP v1 schema](https://github.com/agentclientprotocol/agent-client-protocol/blob/main/schema/v1/schema.json);
108
- unstable v2 features are outside the 5.0 required path.
109
-
110
- All Driver receipts and terminal results expose the selected driver, ACP capability,
111
- and fallback reason. Doctor reports the same facts separately from installation health.
112
- `AcpDriver` stores a bounded redacted `events.jsonl`, never raw protocol messages or
113
- hidden reasoning. Status re-projects every displayed latest event through that fixed
114
- safe shape and treats a corrupted journal as unavailable. `CliDriver` bounds
115
- stdout/stderr while retaining the output tail so the existing exact Ultra result
116
- extractor remains compatible.
117
-
118
- During `session/new`, `AcpDriver` may temporarily buffer only the bounded creation-time
119
- metadata updates emitted by some conforming agents. It rejects message/tool content,
120
- wrong session identities, more than 32 updates, or more than 256 KiB before the response;
121
- accepted metadata is exposed only after every buffered `sessionId` matches the created
122
- session. `ULTRA_DELEGATE_FORCE_CLI=1` is an explicit per-run recovery seam: it selects
123
- the same bounded CLI result path and records `acp_forced_cli` without changing the
124
- Host's stored conformance status.
125
-
126
- ## CLI fallback argv
127
-
128
- `skills/ultra-delegate/scripts/host-profile.cjs` records current non-interactive
129
- invocation for:
130
-
131
- - Claude print mode with structured output and an explicit file-tool allowlist; read-only
132
- uses `plan`, while bounded write uses `acceptEdits` without Bash or web tools;
133
- - Codex ephemeral `exec` with user config ignored, project rules preserved, native
134
- `read-only` or `workspace-write`, network disabled, and an output schema;
135
- - OpenCode `run --auto` only after an inline config explicitly denies Bash, web,
136
- subagents, external directories, Skills and undeclared edit roots;
137
- - Kimi prompt mode with a launch-only read or write agent profile that exposes only
138
- file tools and no Bash, web, MCP, Skills or subagents;
139
- - Grok single-turn mode with `read-only` or `workspace` OS sandbox, structured output,
140
- no memory, web search or subagents, and a twelve-turn ceiling;
141
- - ZCode headless prompt mode with native `plan` or `edit`; the current CLI accepts the
142
- camel-case `--disallowedTools` surface used to deny Bash, web, subagents, and (in
143
- read-only mode) write tools. The launcher's timeout remains the execution bound.
144
-
145
- The installed ZCode 0.16.5 runtime advertises `--max-turns`, `--allowed-tools`, and
146
- `--settings` in help but rejects them at the live root parser. Ultra therefore does not
147
- pass those flags. ZCode headless delegation also requires an explicit CLI model
148
- provider. Host/runtime identity and provider identity remain separate: the verified
149
- local path uses ZCode Desktop with the Owner's domestic BigModel Coding Plan provider,
150
- not international Z.AI OAuth. Ultra's package does not silently copy Desktop credentials;
151
- the user controls the provider entry in `~/.zcode/cli/config.json`.
152
-
153
- On macOS, the Skill-local host profile uses
154
- `/Applications/ZCode.app/Contents/Resources/glm/zcode.cjs` when that App-bundled CLI
155
- exists, then falls back to `zcode` on `PATH`. `UBP_DELEGATE_ZCODE_BIN` remains an explicit
156
- test or operator override; the normal source-to-ZCode path does not require it.
157
-
158
- The ACP bridge is independently installed from `jpalmae/zcode-acp` v0.1.0 at source
159
- revision `42fe149d4b501469343c01f23ba3801832306d53`, then patched by the shipped
160
- `zcode-acp-0.1.0-zcode-0.16.5.patch` with SHA-256
161
- `174dfd0feafe84320556a84b5ae08b10e44c5515fea4992fd1d58af54cee4e3d`. The patch
162
- answers the `session/requestRuntimePreferences` server request introduced by ZCode
163
- 0.16.5 before and after session creation. The pinned source plus patch passes the locked
164
- Rust tests, reproduced RED, patched fake App-server E2E, release build, and real provider
165
- session before use. It stamps the bridge as
166
- `zcode-acp 0.1.0+ultra.zcode.0.16.5`; selection requires that marker and an installed
167
- runtime reporting `0.16.5`. Ultra records both source inputs and ships only the patch; it
168
- redistributes neither the bridge binary nor any ZCode Desktop bytes.
169
-
170
- **ZCode transport maturity is `experimental`** (recorded in
171
- `skills/ultra-delegate/scripts/host-profile.cjs`): the App-bundled CLI is a verified-local
172
- surface — it exists, launches, and passed the 2026-08-26 conformance drill — but
173
- the provider publishes no headless CLI, SDK, A2A, or ZCode Protocol stability
174
- contract. Promotion to `supported` requires both official documentation and a
175
- full recovery drill; a binary's existence, working help, or zero exit status is
176
- never sufficient. The other five delegate transports are documented and locally
177
- verified through the same launcher. The maturity is live-enforced, not just
178
- recorded: `delegate run --to zcode` refuses to launch without the explicit
179
- `--ack-experimental` flag, prints a stderr warning, and stamps
180
- `transport_maturity`, the exact `transport_surface` wording, and
181
- `experimental_ack: true` onto the receipt, worker spec, and every terminal
182
- result (including failure, cancellation, and timeout), so no delegation record
183
- can present an internal CLI run as the documented ZCode Desktop interactive
184
- surface. The documented interactive primary path for ZCode is the Desktop task
185
- surface itself, not this headless transport.
186
-
187
- ## Installed delegation runner
188
-
189
- Every managed plugin contains `ultra-delegate/scripts/delegate.cjs`, its worker, the
190
- canonical Host profile, all three driver modules, and the Kimi launch-only profiles.
191
- The loaded Skill resolves
192
- that directory and invokes Node directly, so a clean plugin install does not require a
193
- persisted Ultra package binary on `PATH` and never uses `npx` to rediscover Ultra.
194
- The source-pinned Claude and Codex ACP adapters may themselves run through their exact
195
- `npx --yes <package>@<version>` profiles. Doctor
196
- reports `delegation_runner`, `acp_capability`, `agent_execution_driver`, its fallback
197
- reason, and ZCode maturity separately from Skill discovery and Hooks. The package
198
- `ubp delegate` surface remains a thin one-release compatibility wrapper around the same
199
- functions; receipts and recovery commands point to the canonical Skill-local entrypoint.
200
-
201
- ### ZCode Desktop Workspace Memory (post-turn host effect)
202
-
203
- ZCode Desktop ships an optional Workspace Memory feature that extracts project
204
- memory after a completed turn into provider-local files under
205
- `~/.zcode/cli/memories/projects/<project>/memory`. Corrected facts
206
- (2026-08-17):
207
-
208
- - the feature is operator-controlled through the documented Workspace Memory
209
- setting (`memoryEnabled` in `~/.zcode/v2/setting.json`); it is not always
210
- default-off — it was observed enabled on this machine, and a fresh task
211
- inherits the operator's current selection;
212
- - `memoryEnabled=false` is the single effective master gate: the App runtime
213
- injects `memory:{enabled:false}`, and every recall, root access, and
214
- post-turn extraction path resolves through one enabled-root resolver that
215
- returns no root while it is false. The logged `memoryExtractionEnabled` and
216
- `memoryUse` values are absent-key, disable-only defaults, not independent
217
- owner-facing gates;
218
- - the extracted files are ordinary local files outside the repository that the
219
- operator can browse and clear directly; they are non-authoritative and
220
- non-portable — never Git content, never shared authority, never Ultra
221
- evidence;
222
- - when the feature is enabled, the post-turn extraction is a Host external
223
- effect: an owner-authorized transfer must allow it in the OFFER `effects`
224
- and disclose it in the RESULT `external_effects`
225
- (`skills/ultra-change/references/primary-transfer.md`); a strict
226
- zero-external-effect pass requires a fresh task with the master setting off
227
- plus an independent reviewer postflight;
228
- - Ultra never parses or mutates the provider setting.
229
-
230
- The accepted r3 design document's section 7.1 local-memory snapshot
231
- ("local-only, default-off, cannot be browsed or cleared") is superseded by the
232
- current documented UI and the observed runtime behavior above; the frozen
233
- design bytes stay unedited.
234
-
235
- The launcher accepts no external-effect authority. It binds instruction, permission and
236
- output-schema digests, a clean Git worktree, allowed write roots, actual changed paths,
237
- strict result schema, timeout and cancellation. Empty roots select read-only mode. The
238
- model returns structured output and never authors the receipt. Host-native permissions
239
- are the execution boundary; the primary host still inspects and integrates the isolated
240
- diff. The launcher embeds the digest-bound packet in the prompt because OpenCode's
241
- correct `external_directory: deny` policy prevents reading packet paths beside the
242
- worktree. Codex receives a native-schema-compatible projection; the launcher separately
243
- enforces non-empty strings, normalized unique paths, exact fields, and the observed diff.
244
-
245
- ### Authenticated delegation conformance — 2026-08-14
246
-
247
- One clean, read-only seeded repository was used to exercise the current launcher against
248
- all six installed CLIs. Claude Code, Codex, OpenCode, Kimi Code, and ZCode each produced
249
- a validated `finished` result with an empty diff and found the seeded consequential
250
- defect. Grok Build 1.0.3 exited zero but repeatedly emitted truncated or malformed
251
- structured output; the launcher correctly published `failed/missing_result` and did not
252
- count partial text as evidence. This is a current host-result conformance ceiling, not a
253
- permission bypass or a semantic review result.
254
-
255
- ZCode was also exercised as the source host: one ZCode session invoked
256
- `ubp delegate run --to claude`, waited for the terminal artifact, and reported Claude's
257
- digest-bound read-only result without changing the worktree. Separately, one bounded
258
- ZCode Autonomy Envelope completed Plan, Plan review, TDD, task review, Test, and aggregate
259
- review for one task, then stopped before ungranted delivery and Git effects. Exact
260
- fixtures, session boundaries, checks, and residual risks are recorded in
261
- `docs/evals/adversarial-review-2026-08-14.md` and
262
- `docs/evals/zcode-automation-2026-08-14.md`.
263
-
264
- ## Lifecycle verification
265
-
266
- Each adapter must pass isolated install, doctor, reinstall, and uninstall tests. Real
267
- global doctor additionally asks the native host where supported, but never repairs or
268
- installs. Codex still performs native registration under `--config-dir`; its host process
269
- inherits the same isolated `HOME` and `CODEX_HOME`. Grok native registration is skipped
270
- only in explicit isolated test mode. ZCode uses its documented inline-plugin directory
271
- configuration for immediate activation while also publishing an importable local
272
- marketplace; real global Doctor verifies the native plugin inventory. Lifecycle tests also require the isolated config
273
- and fake HOME to contain zero children after uninstall, while separate ownership tests
274
- prove that pre-existing empty Codex and Kimi registries survive.
275
-
276
- ## Authenticated cross-host continuation evidence
277
-
278
- On 2026-08-03, one deliberately narrow task was run in an isolated Git repository to
279
- test the product's central recovery claim with real authenticated models. This was a
280
- continuation drill, not a full project workflow or a delegation receipt test.
281
-
282
- Both hosts used globally installed artifacts from the same clean source candidate:
283
-
284
- - source commit: `c473a248bde2afce77591f2ba382246d420b5c72`;
285
- - worktree digest: `e83bdcbe2905cf02cb06cb0219127f6ce0400484331a6e9fc95622bbe24b44bd`;
286
- - Doctor: Claude healthy with 83 assets and zero issues; Codex healthy with 99 assets
287
- and zero issues, with optional hooks still `user_review_required`.
288
-
289
- The seed repository had one passing smoke test, one pending task, one mapped Change
290
- acceptance ID, and seed HEAD `cf27d62aeeae353e0650413de6d9a118b89a0406`.
291
-
292
- | Phase | Execution boundary | Observed result |
293
- |---|---|---|
294
- | Claude | One print-mode call, `acceptEdits`, no persistent session, empty MCP config, explicit file and local-test tools, USD 1.00 cap | Exit 0 at USD 0.741367 with zero web requests. It changed only the task ledger/context, added `test/slug.test.cjs`, and allowed the hook to write disposable progress. `src/slug.cjs` and completion evidence remained untouched. The task test exited 1 with actual `hello,-world!` versus expected `hello-world`; both task surfaces read `in_progress`, and the Resume Note named the exact next action. |
295
- | Codex | One ephemeral `workspace-write` call with sandbox network disabled and no conversation from Claude | Exit 0. It found and read the installed `ultra-dev` Skill, recovered the single task from Git and `.ultra/`, reproduced the same red, changed only the intended implementation, then passed the task test 1/1 and `npm test` 2/2. It wrote the three-command canonical evidence record and logs, completed both task status surfaces, and filled Completion and the final Resume Note. |
296
- | Independent check | Local commands after both model calls | `node --test test/slug.test.cjs` passed 1/1, `npm test` passed 2/2, `git diff --check` passed, and a structural check confirmed one completed task, six evidence dimensions, three existing command-log references, and matching ledger/context state. |
297
-
298
- The Codex process emitted non-blocking diagnostics for an older local model-cache
299
- schema and an unauthenticated user-config MCP startup. No MCP result was consumed and
300
- no external effect occurred; all task actions used local file and shell tools. This
301
- means the drill proves file-backed Claude-to-Codex continuation even while Codex hooks
302
- remain untrusted, but it does not claim that arbitrary user configuration starts
303
- without unrelated host diagnostics.
304
-
305
- The result establishes one real end-to-end example of cross-host resume without a
306
- shared conversation, database, MCP authority, daemon, or generated prompt projection.
307
- It does not establish output quality for every model, host, repository, or task shape.
308
- Task-level `ultra-review` and commits were intentionally excluded from the drill so the
309
- two host calls tested only the handoff boundary.
310
-
311
- Two older `.ultra` evidence snapshots originally named the completed WIP by its former
312
- path. The current-path artifact contract requires every reference to resolve in the
313
- checkout, so those two references now point here while their 2026-08-01 status and
314
- limitations remain explicitly historical. The original WIP is still recoverable from
315
- their pinned source commit `3f99189bc68697262cd90444685ac2d4857139c4` with
316
- `git show`; the live `docs/wip/` directory contains no unfinished document.