ultra-builder-pro-cli 0.26.1 → 3.0.2

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 (75) hide show
  1. package/.ultra-template/contexts/TEMPLATE.md +64 -29
  2. package/.ultra-template/north-star.md +36 -30
  3. package/.ultra-template/project-brief.md +28 -0
  4. package/.ultra-template/specs/product.md +4 -0
  5. package/.ultra-template/specs/research-distillate.md +8 -0
  6. package/.ultra-template/tasks.json +1 -0
  7. package/.ultra-template/test-report.json +18 -1
  8. package/CHANGELOG.md +227 -1
  9. package/README.md +161 -59
  10. package/adapters/_shared/host-profile.cjs +68 -12
  11. package/adapters/_shared/plugin-core.cjs +4 -5
  12. package/adapters/_shared/runtime-assets.cjs +11 -2
  13. package/adapters/zcode.js +375 -0
  14. package/bin/delegate-worker.cjs +20 -0
  15. package/bin/delegate.cjs +94 -25
  16. package/bin/install.js +11 -6
  17. package/docs/ARCHITECTURE.md +109 -25
  18. package/docs/ARTIFACT-AUTHORITY.md +204 -30
  19. package/docs/DECISIONS.md +141 -10
  20. package/docs/PHILOSOPHY.md +61 -8
  21. package/docs/PLUGIN-ISOLATION-CONTRACT.md +6 -0
  22. package/docs/RUNTIME-COMPAT-MATRIX.md +106 -13
  23. package/docs/SKILL-AUTHORING.md +14 -9
  24. package/docs/WORKFLOW-LIFECYCLE.md +211 -53
  25. package/docs/evals/adversarial-review-2026-08-14.md +84 -0
  26. package/docs/evals/zcode-automation-2026-08-14.md +103 -0
  27. package/hooks/README.md +31 -3
  28. package/hooks/_common.py +1699 -33
  29. package/hooks/adapters/zcode.py +227 -0
  30. package/hooks/compact_context.py +176 -17
  31. package/hooks/mid_workflow_recall.py +27 -5
  32. package/hooks/post_edit_guard.py +133 -23
  33. package/hooks/session_context.py +722 -11
  34. package/package.json +6 -3
  35. package/skills/ultra-change/SKILL.md +84 -64
  36. package/skills/ultra-change/references/change-contract.md +130 -32
  37. package/skills/ultra-change/references/execution-grant.md +109 -0
  38. package/skills/ultra-change/references/primary-transfer.md +273 -0
  39. package/skills/ultra-change/scripts/validate_primary_transfer.cjs +1928 -0
  40. package/skills/ultra-delegate/SKILL.md +38 -5
  41. package/skills/ultra-delegate/references/delegation-contract.md +21 -1
  42. package/skills/ultra-deliver/SKILL.md +123 -44
  43. package/skills/ultra-deliver/references/baseline-reconciliation.md +5 -3
  44. package/skills/ultra-dev/SKILL.md +173 -43
  45. package/skills/ultra-grilling/SKILL.md +19 -16
  46. package/skills/ultra-grilling/references/reframing.md +7 -3
  47. package/skills/ultra-init/SKILL.md +99 -87
  48. package/skills/ultra-init/references/brownfield-adoption.md +23 -40
  49. package/skills/ultra-init/scripts/init_project.cjs +968 -21
  50. package/skills/ultra-plan/SKILL.md +83 -46
  51. package/skills/ultra-plan/references/task-evidence-v2.md +300 -0
  52. package/skills/ultra-plan/scripts/validate_task_evidence.cjs +859 -0
  53. package/skills/ultra-research/SKILL.md +119 -68
  54. package/skills/ultra-research/references/{03-competitive-landscape.md → 03-alternatives.md} +6 -6
  55. package/skills/ultra-research/references/04-product-strategy.md +11 -2
  56. package/skills/ultra-research/references/21-features-scope.md +8 -0
  57. package/skills/ultra-research/references/22-success-metrics.md +9 -4
  58. package/skills/ultra-research/references/99-synthesis.md +25 -1
  59. package/skills/ultra-research/references/north-star-v2.md +168 -0
  60. package/skills/ultra-research/references/wayfinding.md +50 -0
  61. package/skills/ultra-research/scripts/validate_north_star.cjs +1174 -0
  62. package/skills/ultra-review/SKILL.md +201 -24
  63. package/skills/ultra-review/references/adversarial-evaluation.md +31 -0
  64. package/skills/ultra-review/references/spec.md +5 -0
  65. package/skills/ultra-review/references/unified-schema.md +146 -11
  66. package/skills/ultra-review/references/worker-packet.md +151 -8
  67. package/skills/ultra-review/scripts/review_wait.py +2653 -63
  68. package/skills/ultra-status/SKILL.md +146 -32
  69. package/skills/ultra-tdd/SKILL.md +14 -4
  70. package/skills/ultra-tdd/references/test-execution.md +6 -1
  71. package/skills/ultra-test/SKILL.md +157 -15
  72. package/skills/ultra-test/scripts/validate_review_transport.cjs +549 -0
  73. package/skills/ultra-test/scripts/worktree_digest.cjs +551 -29
  74. package/skills/ultra-think/SKILL.md +5 -10
  75. package/skills/ultra-think/references/interaction-boundary.md +2 -1
@@ -8,9 +8,24 @@ description: Delegate one bounded workflow segment to another installed CLI in a
8
8
  Delegation is an execution mode, not another workflow stage. The primary host keeps
9
9
  semantic synthesis and remains the only writer of `.ultra/tasks.json`.
10
10
 
11
+ Delegation is also not a primary transfer. A delegated worker never becomes the
12
+ work package's canonical writer, whatever its result says; moving that role to
13
+ another Agent requires the owner-directed OFFER → ACK → RESULT protocol in
14
+ `../ultra-change/references/primary-transfer.md`, which stays mutually exclusive
15
+ with this bounded-worker path.
16
+
11
17
  ## Before you start
12
18
 
13
- 1. Read `.ultra/tasks.json`, the delegated task's `context_file` and `## Resume Note`.
19
+ 1. Resolve exactly one active `change_id`, then select one scope and name it in
20
+ `instruction.md`:
21
+ - **task execution or continuation** — select one matching task and read its full
22
+ `context_file` and `## Resume Note`;
23
+ - **scoped Research evidence** — read the active intent's Research Disposition,
24
+ named question, sources, and required exit evidence;
25
+ - **aggregate Change review or verification** — read the exact matching task ids,
26
+ relevant contexts, current report or review summary, and Change diff.
27
+ Research and aggregate read-only scopes do not require a task. An archived or
28
+ abandoned task cannot be delegated as current work.
14
29
  2. Read `CONTEXT.md`, relevant `.ultra/decisions/`, acceptance and current evidence.
15
30
  3. Define one bounded instruction, permission set, clean Git worktree and result.
16
31
  4. Read `references/delegation-contract.md` before writing either JSON artifact.
@@ -24,13 +39,15 @@ semantic synthesis and remains the only writer of `.ultra/tasks.json`.
24
39
  - No `writable_roots` entry is `.ultra/` or sits under it, and the actual diff touches
25
40
  nothing there.
26
41
  - Timeout and cancellation reach a terminal failed result and release `run.lock`.
27
- - The primary host verifies the result against the delegated workflow's acceptance.
42
+ - The primary host verifies the result against the selected scope's task acceptance,
43
+ Research exit evidence, or aggregate review/verification question.
28
44
 
29
45
  ## Prepare and run
30
46
 
31
47
  Write under `.ultra/.runtime/delegations/<id>/`:
32
48
 
33
- - `instruction.md`: bounded goal, sources, acceptance and forbidden effects;
49
+ - `instruction.md`: scope type, stable `change_id`, optional task id, bounded goal,
50
+ sources, acceptance or exit evidence, and forbidden effects;
34
51
  - `permission.json`: the exact file-local boundary in the contract reference;
35
52
  - `result.json`: launcher-published terminal artifact only.
36
53
 
@@ -43,7 +60,7 @@ worktrees collide in the very files every later session reads to resume. Worker
43
60
  and state changes travel back in `result.json` and are applied by the primary host.
44
61
  `external_effects` must be empty in this portable launcher: commit, push, publish,
45
62
  deployment and other effects stay with the primary host. There is no `readable_roots`
46
- claim because the five host sandboxes do not share one mechanically enforceable read
63
+ claim because the six host sandboxes do not share one mechanically enforceable read
47
64
  policy.
48
65
 
49
66
  Create `.ultra/.runtime/worktrees/<id>` as a real Git worktree and run:
@@ -52,6 +69,20 @@ Create `.ultra/.runtime/worktrees/<id>` as a real Git worktree and run:
52
69
  ubp delegate run --to <host> --instruction <file> --permission <file> --worktree <dir> --timeout <seconds>
53
70
  ```
54
71
 
72
+ `<host>` is `claude`, `codex`, `opencode`, `kimi`, `grok`, or `zcode`. Kimi accepts an
73
+ optional `--model <id>` when its account has no default headless model. A ZCode primary
74
+ host uses this same command to delegate to any other installed CLI; a different primary
75
+ host can select `--to zcode` through the ZCode headless profile.
76
+
77
+ The ZCode headless transport is `experimental`: it is an App-internal or PATH CLI with
78
+ no public stability contract, and it is **not** the documented ZCode Desktop
79
+ interactive surface. `delegate run --to zcode` refuses to launch until the invocation
80
+ explicitly carries `--ack-experimental`; every launch then prints a stderr warning and
81
+ records `transport_maturity: "experimental"`, the exact `transport_surface` wording,
82
+ and `experimental_ack: true` in the receipt, the worker spec, and the terminal result
83
+ (including failure and timeout recovery results), so no receipt can imply a documented
84
+ Desktop session. Promotion requires official documentation plus a full recovery drill.
85
+
55
86
  The command returns a receipt. Immediately run `scripts/delegate_wait.py`; read no
56
87
  intermediate output. Use `ubp delegate status --delegation <dir>` for a read-only state
57
88
  and `ubp delegate cancel --delegation <dir>` to request termination. Never delete a lock
@@ -60,7 +91,9 @@ to manufacture completion.
60
91
  The worker returns one schema-constrained JSON final response. The launcher extracts it
61
92
  from the host's native structured output, validates digests, process exit, exact schema,
62
93
  actual base-HEAD diff and writable roots, then atomically publishes `result.json`. The
63
- model never writes its own receipt. If owner input is needed, the worker terminates
94
+ launcher embeds the exact digest-bound instruction and permission packet in the prompt,
95
+ so a host that denies external-directory reads never needs authority outside the
96
+ worktree. The model never writes its own receipt. If owner input is needed, the worker terminates
64
97
  `blocked` with questions and evidence; start a new id and fresh packet after obtaining
65
98
  the answer.
66
99
 
@@ -23,6 +23,13 @@ reads to resume. Enforced twice: the launcher rejects a `.ultra` root before the
23
23
  delegation starts, and the worker fails an actual diff that touches it with
24
24
  `unauthorized_write`.
25
25
 
26
+ This boundary also separates delegation from a primary transfer: a delegation result
27
+ is a bounded observation returned to the primary host, and no delegation receipt can
28
+ serve as, upgrade into, or substitute for the OFFER/ACK/RESULT receipts of a primary
29
+ transfer (`../ultra-change/references/primary-transfer.md`). Widening a worker to write
30
+ `.ultra` in order to simulate a transfer is a contract violation, not an integration
31
+ shortcut.
32
+
26
33
  ## Model final response
27
34
 
28
35
  ```json
@@ -43,12 +50,25 @@ delegation starts, and the worker fails an actual diff that touches it with
43
50
  Fields are exact. Status is `finished`, `blocked`, or `failed`; `blocked` requires a
44
51
  question. Check status is `passed`, `failed`, or `not_run`. Changed files are unique,
45
52
  normalized repository-relative paths and must exactly equal the launcher's Git diff.
53
+ `output_ref` is requested for every check and required in the native schema projection
54
+ used by hosts that accept one. The launcher remains compatible with hosts that return
55
+ the otherwise exact check without that optional evidence pointer.
46
56
 
47
- The launcher extracts this object from native structured output and adds
57
+ The launcher embeds the exact instruction and permission sources with their digests in
58
+ the host prompt, extracts this object from native structured output, and adds
48
59
  `delegation_id`, `host`, instruction, permission, and output-schema digests,
49
60
  `read_only`, `base_head`, `final_head`, timestamps, `exit_code`, and signal. Launcher
50
61
  failures also add `failure_type`. A nonzero process cannot publish `finished`.
51
62
 
63
+ Every receipt, worker spec, and terminal result also records the transport truth:
64
+ `transport_maturity` (from the shared host profile) and the exact `transport_surface`
65
+ wording. The ZCode headless transport is `experimental` with no public stability
66
+ contract and is not the documented ZCode Desktop interactive surface; launching it
67
+ requires the explicit `--ack-experimental` flag, prints a stderr warning, and stamps
68
+ `experimental_ack: true` on the receipt, so no delegation record can misrepresent an
69
+ internal CLI run as a documented Desktop session — including failure, cancellation,
70
+ and timeout recovery results.
71
+
52
72
  ## Recovery
53
73
 
54
74
  - `status` distinguishes running, cancelling, stalled, and terminal artifacts.
@@ -1,58 +1,137 @@
1
1
  ---
2
2
  name: ultra-deliver
3
- description: Reconcile one completed Change, run aggregate review and refactoring, refresh release documentation, and archive the local workflow record. Use when the task ledger is complete and the owner wants a delivery handoff or separately authorized release effects.
3
+ description: Reconcile one Change whose matching tasks are complete, run aggregate review and refactoring, and report the delivery handoff. Use when the owner wants delivery reconciliation and reporting, or — by current explicit owner invocation only — the separately gated finalization that writes delivery.md, fixes version and package posture, and archives the local workflow record.
4
4
  ---
5
5
 
6
6
  # Turn current evidence into a recoverable delivery handoff
7
7
 
8
- Delivery closes the local Change. Commit, push, tag, publication and deployment remain
9
- separate effects; local readiness grants none of them automatically.
8
+ Delivery closes the local Change; readiness grants no commit, push, tag, publish, or deploy authority.
10
9
 
11
10
  ## Before you start
12
11
 
13
- 1. Read `.ultra/tasks.json` and each completed task's `context_file`, Completion and
14
- closing `## Resume Note`.
15
- 2. Read `CONTEXT.md`, relevant `.ultra/decisions/`, active Change intent and evidence.
16
- 3. Read `.ultra/test-report.json` and current `HEAD`. If `git_commit` differs from HEAD,
17
- label the report stale and obtain current evidence before a release recommendation.
12
+ 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.
13
+ 2. Read `../ultra-change/references/change-contract.md` and apply its **Active Change
14
+ authority resolution** before reading any active `intent.md` or resolving a current
15
+ `change_id`. This workflow requires its one valid active authority; any zero result
16
+ or typed diagnostic stops before finalization input is read until the stated repair
17
+ or retry succeeds. Read `.ultra/tasks.json`; every matching task must be `completed`
18
+ in that sole task-status authority. Read each `context_file`'s Completion, Task
19
+ Review, and closing Resume Note. For every current Change task,
20
+ require current `ultra-task-evidence-v2` and task-review provenance under
21
+ `../ultra-plan/references/task-evidence-v2.md`, already consumed by the current Test
22
+ report. A legacy context Status or Complexity header and v1 evidence are migration
23
+ diagnostics only and cannot support current delivery.
24
+ 3. Read `CONTEXT.md`, relevant `.ultra/decisions/`, active Change intent and evidence.
25
+ Validate `.ultra/north-star.md`; resolve every recorded `FP-*`, `NS-*`, and `HC-*`
26
+ for the delivered Change, tasks, findings, and dispositions against that accepted
27
+ authority. Compare the active Change's recorded **North Star revision** and
28
+ **North Star digest** with the accepted file's revision and current Git blob digest. Any
29
+ missing ID or mismatch stops finalization and recommends explicit owner invocation of
30
+ `ultra-change` for reconciliation; delivery never silently rewrites the trace.
31
+ 4. Read `.ultra/test-report.json`, then run the Test Skill's `worktree_digest.cjs` with
32
+ project root and `--change-id`. Require report `task_ids` for the current Change plus
33
+ matching `change_id`, `git_commit`, worktree digest, intent digest, and review
34
+ `admission_digest`, `subject_digest`, and `summary_digest`; otherwise stop. Recheck
35
+ each projected task's declared review branch as recorded: strict-v4 items keep their
36
+ strict receipt and transport bindings, while `external-manual` items reverify their
37
+ receipt bytes and digest through the task-evidence sensor's
38
+ `--verify-external-receipt` mode and take the sensor's `--projection` output
39
+ verbatim — a strict SUMMARY never substitutes for an external receipt and neither
40
+ branch is rewritten into the other.
41
+ The product-worktree digest has one fixed boundary: it excludes `.ultra/evidence/**`,
42
+ whose command and external-observation entries bind raw bytes as
43
+ `raw_evidence_sha256` before stable exact record bytes are bound as `evidence_digest`
44
+ through the report's ordered `task_evidence` projection. For each projected record,
45
+ take every `raw_evidence_ref` to bounded stable repository-contained bytes from an
46
+ ordinary regular non-symlink file opened nonblocking and no-follow, with an 8 MiB
47
+ ceiling and path/descriptor identity checks around the read. Recompute
48
+ `raw_evidence_sha256` and require an exact match, then recompute the stable exact
49
+ `evidence.json` bytes as `evidence_digest` before comparing the projection. Recheck
50
+ the exact review receipts separately; never treat the product exclusion as permission
51
+ to ignore evidence drift or add another exclusion.
52
+ An intent digest changed by North Star reconciliation or any other intent edit always
53
+ requires a fresh `ultra-test` before Deliver can finalize, even if product bytes did
54
+ not change.
55
+ 5. Preserve every typed acceptance authority. The owner alone supplies the semantic
56
+ result for `owner-judgment`; Deliver may verify its cited source and freshness but no
57
+ model, command, digest, schema, or validator may replace it.
18
58
 
19
59
  ## Definition of done
20
60
 
21
- - Actual outcome, specifications, docs, tests and aggregate review have been reconciled,
22
- with every documentation file checked against the actual diff rather than from memory.
61
+ - Outcome, specs, tests, aggregate review, and every document match the actual diff.
23
62
  - Every changed export has a non-test consumer or a recorded owner disposition.
24
63
  - Every omitted stage is explicitly recorded with its evidence-based rationale.
64
+ - Delivery explains whether evidence realizes the traced first principles and outcome,
65
+ and preserves contradictions or stale trace as findings instead of mirroring or
66
+ silently revising North Star prose.
25
67
  - Build and release checks have exact commands and real results.
26
68
  - The Change is archived with `git mv`, and rollback remains a normal Git operation.
27
69
 
28
70
  ## Review and refactor
29
71
 
30
- Follow `../ultra-review/SKILL.md` across the aggregate Change. This is where useful
31
- refactoring occurs: several completed slices now reveal real duplication, coupling and
32
- deep-module boundaries. Rerun every check affected by a refactor and refresh the report
33
- against the resulting HEAD.
72
+ Follow `../ultra-review/SKILL.md` across the aggregate Change; refactor only observed
73
+ duplication, coupling, or boundary defects. Rerun affected checks and refresh the report.
74
+ After the aggregate review and the current Test report are consumed, Deliver does not
75
+ refactor product source: it reconciles delivery artifacts and documentation only. A
76
+ post-approval implementation issue routes as at most one new owner-approved Dev task
77
+ for a P0/P1, or as recorded backlog and residual risk for P2/P3; an unbounded
78
+ Test ↔ Deliver bounce is not a valid recovery path, and any re-entry through Test
79
+ requires an explicit owner disposition.
34
80
 
35
81
  ## Reconcile the handoff
36
82
 
37
83
  1. Compare accepted intent and task traces with delivered behavior.
38
84
  2. Apply justified specification corrections; route any REDUCTION to the owner.
39
- 3. Reconcile every document against the actual diff, not only the ones you remember
40
- touching. List the repository's documentation files, read the Change's full diff, and
41
- repair each place a document now describes behavior that no longer exists. CHANGELOG
42
- and README are the usual ones, but a stale example in a guide, a renamed flag in a
43
- runbook and an obsolete field in an API note drift the same way and are found the
44
- same way. Record bounded debt only in the active Change `delivery.md` under
45
- `## Technical Debt`.
46
- 4. Run the repository's build and packaging checks.
47
- 5. Determine the version impact from the public contract and project convention.
48
- 6. Follow `references/baseline-reconciliation.md` and write the one canonical active
49
- Change `delivery.md` with exact checks, residual risks, omissions and rollback.
50
-
51
- Step 3 is the **exit** reconciliation and does not duplicate `ultra-change`'s entry
52
- reconciliation. Entry asks whether the specifications already disagreed with the code
53
- before this Change was written; exit asks which documents this Change just made wrong.
54
- One keeps the intent from inheriting drift, the other keeps the Change from leaving new
55
- drift behind.
85
+ 3. List documentation, compare every file with the full Change diff, and repair stale
86
+ behavior, examples, flags, or fields. Record bounded debt only in active
87
+ `delivery.md` under `## Technical Debt`.
88
+ 4. Defer build, non-publishing package inspection, version selection, and the canonical
89
+ `delivery.md` until the fresh-snapshot finalization pass below. Reconciliation that
90
+ changed files must return through Test first.
91
+
92
+ Entry reconciliation prevents inherited drift; this exit reconciliation prevents the
93
+ Change from leaving new document drift.
94
+
95
+ ## Reconcile, then finalize on a fresh snapshot
96
+
97
+ Delivery has two observable passes, not a hidden state machine:
98
+
99
+ 1. Reconcile and review. If this pass changes source, tests, task/context/evidence,
100
+ specifications, maintained documentation, or `intent.md`, stop after writing the
101
+ reconciled files. The existing report is stale; recommend `ultra-test` and make no
102
+ delivery or release claim.
103
+ 2. After an unchanged pass or fresh Test, resolve the report's canonical
104
+ `review.summary_ref` as `<validated-summary-path>` and run the current strict transport
105
+ consumer against the current report:
106
+
107
+ `node <ultra-test-skill-dir>/scripts/validate_review_transport.cjs --summary <validated-summary-path> --report .ultra/test-report.json`
108
+
109
+ Require exit 0 and a JSON `"valid": true` field. This one existing consumer verifies
110
+ the exact
111
+ retained `ADMISSION.json` and `SUMMARY.json`, then binds the report's
112
+ `admission_digest`, `subject_digest`, and `summary_digest` to those bytes. A missing or
113
+ invalid receipt, summary, or binding makes the current Test claim `INCOMPLETE`: start
114
+ a fresh Review and Test. Do not write `delivery.md`, archive the Change, create a
115
+ release package, or make a delivery claim while that receipt evidence is missing or
116
+ invalid. Never use `--legacy-v4` for this current-session check; v3 and pre-admission
117
+ v4 are read-only historical evidence, not current Test or Deliver evidence.
118
+
119
+ After the transport succeeds, recheck Change/task/HEAD/product/intent identities.
120
+ Apply the gate, run build and non-publishing package inspection, determine version
121
+ impact, and use `references/baseline-reconciliation.md` for canonical `delivery.md`.
122
+ Archive the Change. Excluded delivery metadata and the directory move cannot
123
+ self-invalidate the product digest; intent stays independently bound. Retain the
124
+ review session through this successful Deliver consumption; only then may its derived
125
+ artifacts be garbage-collected.
126
+
127
+ Transport and task-evidence validators establish exact structural, identity,
128
+ provenance, and freshness facts only. Their success never means that the Change is
129
+ semantically accepted or that its outcome is ready to describe as delivered.
130
+
131
+ Do not draft a success narrative around stale evidence. A current `passed: false`
132
+ report may still reach finalization only after every finding has an explicit owner
133
+ disposition and the one hard gate below is clear; `passed` is evidence summary, not a
134
+ second mechanical release gate.
56
135
 
57
136
  ## The one delivery gate
58
137
 
@@ -62,27 +141,24 @@ attach itself to ordinary repository packaging outside this workflow.
62
141
  Everything else in this workflow reports and hands over. This is the exception, and it
63
142
  is deliberately narrow:
64
143
 
65
- **Do not package while an export this Change added or changed has no non-test consumer
66
- and no recorded owner disposition.**
144
+ **Do not produce a release package while an export this Change added or changed has no
145
+ non-test consumer and no recorded owner disposition.**
67
146
 
68
147
  | | |
69
148
  |---|---|
70
149
  | Invariant | Every changed export is either reachable from a non-test caller or explicitly declared internal |
71
- | Fact source | The Wiring Verification results in `.ultra/test-report.json`, bound to the current HEAD — the audit already found these; this is not a fresh opinion |
72
- | Blocked effect | Packaging and the release effects after it. Local commit and archival are untouched |
73
- | Repair | Wire the export to its caller, or record the owner's disposition in `delivery.md` naming it internal-only and why. Either one clears the gate |
150
+ | Fact source | The Wiring Verification finding and its owner disposition in `.ultra/test-report.json`, bound to the current Change id, task ids, intent, HEAD, and product-worktree digest — the audit already found these; this is not a fresh opinion |
151
+ | Blocked effect | Release-package creation and the separately authorized release effects after it. A non-publishing package inspection is diagnostic; local commit and archival are untouched |
152
+ | Repair | Wire the export to its caller, or record the owner's disposition on the finding in `.ultra/test-report.json`, then carry it into `delivery.md`. Either one clears the gate |
74
153
 
75
- "Written but never connected" is the single defect that passes every other check: tests
76
- green, review clean, evidence complete, feature absent. An advisory here would be
77
- ignored exactly when it matters, because everything else already reads as done. The gate
78
- sits at the last step rather than at edit time on purpose — a gate early in the loop
79
- gets escaped by damaging the work.
154
+ "Written but never connected" can leave tests and review green while the feature is
155
+ absent. Keep this gate at finalization, after the audit can distinguish unfinished work.
80
156
 
81
157
  ## Archive locally
82
158
 
83
- Move `.ultra/changes/active/<id>` to `.ultra/changes/archive/<id>` with `git mv` only
84
- after local reconciliation. Do not create a second standalone delivery report: archived
85
- `delivery.md`, test report, evidence and Git history are the handoff.
159
+ After the fresh check, `git mv` active `<id>` to archive. The id stays stable in task
160
+ rows; never store a movable intent path or create a second delivery summary. Archived
161
+ delivery, test report, evidence, and Git history are the handoff.
86
162
 
87
163
  For separately authorized effects, perform and verify each independently. Ask for
88
164
  authority at the point of effect: commit, then push, then tag, package publication and
@@ -95,8 +171,11 @@ Without release authority, stop after the recoverable local archive and report i
95
171
 
96
172
  ## References
97
173
 
174
+ - `../ultra-change/references/change-contract.md` — canonical Active Change authority resolution.
98
175
  - `../ultra-review/SKILL.md` — read before aggregate review and refactoring.
176
+ - `../ultra-plan/references/task-evidence-v2.md` — canonical current task evidence and task-review contract.
99
177
  - `../ultra-think/SKILL.md` — read when version or release posture is a consequential
100
178
  trade-off rather than an established repository rule.
101
179
  - `../ultra-think/references/autonomy-boundary.md` — read before scope or evidence shrinks.
180
+ - `../ultra-change/references/execution-grant.md` — read only for grant-activated continuation.
102
181
  - `references/baseline-reconciliation.md` — exact `delivery.md` reconciliation contract.
@@ -34,6 +34,8 @@ the Change is active and moves with the directory when archived.
34
34
 
35
35
  Every semantic update cites a repository-relative `path#anchor`. A reduction requires
36
36
  the owner decision before the affected specification changes. Exact command evidence
37
- must match the checkout identified by `.ultra/test-report.json`; stale results stay
38
- visible and never become a pass. Do not create a second JSON or Markdown delivery
39
- summary.
37
+ must match the stable Change id, exact current task ids, intent digest, HEAD, and
38
+ product-worktree digest identified by `.ultra/test-report.json`; stale results stay
39
+ visible and never become a pass. Reconcile before finalizing. If reconciliation changes
40
+ semantic or product files, obtain a fresh Test snapshot before writing final delivery
41
+ metadata or archiving. Do not create a second JSON or Markdown delivery summary.