ultra-builder-pro-cli 0.13.0 → 0.15.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 (172) hide show
  1. package/.ultra-template/docs/research/README.md +11 -7
  2. package/.ultra-template/specs/architecture.md +36 -36
  3. package/.ultra-template/specs/discovery.md +46 -33
  4. package/.ultra-template/specs/product.md +38 -29
  5. package/.ultra-template/specs/research-distillate.md +48 -0
  6. package/.ultra-template/tasks/contexts/TEMPLATE.md +11 -28
  7. package/CHANGELOG.md +86 -1
  8. package/README.md +40 -26
  9. package/adapters/_shared/codex-assets.cjs +29 -165
  10. package/adapters/_shared/file-ops.cjs +6 -2
  11. package/adapters/_shared/runtime-assets.cjs +1 -0
  12. package/adapters/claude.js +3 -2
  13. package/adapters/codex.js +1 -0
  14. package/adapters/kimi.js +3 -2
  15. package/adapters/opencode.js +33 -122
  16. package/agents/review-coordinator.md +9 -6
  17. package/docs/AGENT-CONTEXT.md +21 -11
  18. package/docs/ARCHITECTURE.md +41 -13
  19. package/docs/PLAN.zh-CN.md +3 -2
  20. package/docs/ROADMAP.md +9 -5
  21. package/docs/RUNTIME-COMPAT-MATRIX.md +6 -6
  22. package/docs/STATE-DB-ACCESS-POLICY.md +27 -25
  23. package/docs/WORKFLOW-LIFECYCLE.md +266 -0
  24. package/hooks/README.md +6 -1
  25. package/hooks/active_task_context.py +22 -50
  26. package/hooks/context_spine.py +61 -332
  27. package/hooks/health_check.py +29 -18
  28. package/hooks/pre_stop_check.py +28 -33
  29. package/hooks/subagent_tracker.py +54 -85
  30. package/hooks/workflow_checkpoint.py +39 -47
  31. package/hooks/workflow_context.py +4 -9
  32. package/hooks/workflow_resume.py +48 -128
  33. package/mcp-server/breadcrumb.cjs +22 -0
  34. package/mcp-server/hook-event.cjs +34 -0
  35. package/mcp-server/lib/archive-journal.cjs +17 -5
  36. package/mcp-server/lib/baseline-workflow.cjs +158 -18
  37. package/mcp-server/lib/change-workflow.cjs +550 -85
  38. package/mcp-server/lib/context-spine.cjs +242 -24
  39. package/mcp-server/lib/doctor.cjs +33 -3
  40. package/mcp-server/lib/init-project.cjs +210 -16
  41. package/mcp-server/lib/plan-store.cjs +4 -1
  42. package/mcp-server/lib/prd-parser.cjs +14 -41
  43. package/mcp-server/lib/pricing.cjs +7 -10
  44. package/mcp-server/lib/project-breadcrumb.cjs +145 -0
  45. package/mcp-server/lib/projector.cjs +57 -3
  46. package/mcp-server/lib/spec-learning.cjs +79 -2
  47. package/mcp-server/lib/state-db.cjs +145 -8
  48. package/mcp-server/lib/state-ops.cjs +160 -9
  49. package/mcp-server/lib/task-expander.cjs +9 -38
  50. package/mcp-server/lib/workflow-state.cjs +2292 -0
  51. package/mcp-server/server.cjs +182 -50
  52. package/orchestrator/daemon.cjs +1 -2
  53. package/orchestrator/dispatch-rules.cjs +5 -31
  54. package/orchestrator/planner/plan-builder.cjs +21 -12
  55. package/package.json +14 -6
  56. package/skills/cc-collab/SKILL.md +2 -2
  57. package/skills/codex-collab/SKILL.md +2 -3
  58. package/skills/ultra-change/SKILL.md +53 -68
  59. package/skills/ultra-change/references/change-contract.md +36 -0
  60. package/skills/ultra-deliver/SKILL.md +69 -79
  61. package/skills/ultra-deliver/references/baseline-reconciliation.md +20 -0
  62. package/skills/ultra-dev/SKILL.md +54 -59
  63. package/skills/ultra-doctor/SKILL.md +40 -71
  64. package/skills/ultra-init/SKILL.md +96 -103
  65. package/skills/ultra-init/references/brownfield-adoption.md +2 -2
  66. package/skills/ultra-plan/SKILL.md +79 -75
  67. package/skills/ultra-plan/references/semantic-preflight.md +18 -0
  68. package/skills/ultra-research/SKILL.md +87 -60
  69. package/skills/ultra-research/references/00-problem-validation.md +36 -0
  70. package/skills/ultra-research/references/01-opportunity-discovery.md +33 -0
  71. package/skills/ultra-research/references/02-market-assessment.md +30 -0
  72. package/skills/ultra-research/references/03-competitive-landscape.md +31 -0
  73. package/skills/ultra-research/references/04-product-strategy.md +32 -0
  74. package/skills/ultra-research/references/05-assumptions-validation.md +31 -0
  75. package/skills/ultra-research/references/10-user-personas.md +29 -0
  76. package/skills/ultra-research/references/11-user-scenarios.md +28 -0
  77. package/skills/ultra-research/references/20-user-stories.md +30 -0
  78. package/skills/ultra-research/references/21-features-scope.md +29 -0
  79. package/skills/ultra-research/references/22-success-metrics.md +28 -0
  80. package/skills/ultra-research/references/30-architecture-context.md +30 -0
  81. package/skills/ultra-research/references/31-solution-strategy.md +28 -0
  82. package/skills/ultra-research/references/32-building-blocks.md +28 -0
  83. package/skills/ultra-research/references/40-deployment.md +29 -0
  84. package/skills/ultra-research/references/41-quality-risks.md +28 -0
  85. package/skills/ultra-research/references/99-synthesis.md +35 -0
  86. package/skills/ultra-review/SKILL.md +57 -73
  87. package/skills/ultra-review/references/review-modes.md +27 -0
  88. package/skills/ultra-review/references/unified-schema.md +25 -0
  89. package/skills/ultra-review/scripts/review_wait.py +40 -3
  90. package/skills/ultra-status/SKILL.md +41 -45
  91. package/skills/ultra-test/SKILL.md +48 -55
  92. package/skills/ultra-verify/SKILL.md +22 -31
  93. package/skills/ultra-verify/references/{confidence-system.md → evidence-status.md} +3 -3
  94. package/skills/ultra-verify/scripts/verify_wait.py +54 -54
  95. package/spec/cli-protocol.md +7 -2
  96. package/spec/mcp-tools.yaml +422 -73
  97. package/spec/schemas/baseline-reconciliation.v1.schema.json +73 -0
  98. package/spec/schemas/delivery-report.v1.schema.json +111 -0
  99. package/spec/schemas/mcp-tools.schema.json +1 -1
  100. package/spec/schemas/state-db.sql +82 -1
  101. package/spec/schemas/tasks.v4.5.schema.json +8 -1
  102. package/spec/schemas/test-report.v1.schema.json +194 -0
  103. package/ultra-tools/cli.cjs +1 -1
  104. package/ultra-tools/commands/migrate.cjs +3 -3
  105. package/ultra-tools/commands/status.cjs +213 -12
  106. package/.ultra-template/delivery-report.json +0 -9
  107. package/.ultra-template/test-report.json +0 -8
  108. package/adapters/_shared/tests/file-ops.test.cjs +0 -54
  109. package/adapters/_shared/tests/frontmatter.test.cjs +0 -47
  110. package/adapters/_shared/tests/handbook.test.cjs +0 -101
  111. package/adapters/_shared/tests/path-rewrite.test.cjs +0 -60
  112. package/adapters/_shared/tests/provenance.test.cjs +0 -133
  113. package/adapters/_shared/tests/resolve-target.test.cjs +0 -75
  114. package/adapters/_shared/tests/runtime-assets.test.cjs +0 -131
  115. package/adapters/_shared/tests/settings-merge.test.cjs +0 -85
  116. package/adapters/_shared/tests/validate.test.cjs +0 -30
  117. package/adapters/tests/claude.test.cjs +0 -137
  118. package/adapters/tests/codex-hook.test.cjs +0 -115
  119. package/adapters/tests/codex.test.cjs +0 -423
  120. package/adapters/tests/kimi-hook.test.cjs +0 -122
  121. package/adapters/tests/kimi.test.cjs +0 -259
  122. package/adapters/tests/opencode.test.cjs +0 -371
  123. package/mcp-server/lib/archive-journal.test.cjs +0 -35
  124. package/mcp-server/lib/baseline-workflow.test.cjs +0 -477
  125. package/mcp-server/lib/change-workflow.test.cjs +0 -971
  126. package/mcp-server/lib/context-spine.test.cjs +0 -93
  127. package/mcp-server/lib/doctor.test.cjs +0 -148
  128. package/mcp-server/lib/llm-client.cjs +0 -157
  129. package/mcp-server/lib/llm-client.test.cjs +0 -156
  130. package/mcp-server/lib/plan-store.test.cjs +0 -132
  131. package/mcp-server/lib/prd-parser.test.cjs +0 -171
  132. package/mcp-server/lib/runtime-state.test.cjs +0 -92
  133. package/mcp-server/lib/spec-learning.test.cjs +0 -67
  134. package/mcp-server/lib/state-db.test.cjs +0 -314
  135. package/mcp-server/lib/task-expander.test.cjs +0 -324
  136. package/mcp-server/lib/topo.test.cjs +0 -158
  137. package/mcp-server/tests/circuit-breaker.test.cjs +0 -125
  138. package/mcp-server/tests/commit-hash-flow.test.cjs +0 -117
  139. package/mcp-server/tests/concurrency-update.test.cjs +0 -96
  140. package/mcp-server/tests/concurrency.test.cjs +0 -112
  141. package/mcp-server/tests/db-ops.test.cjs +0 -121
  142. package/mcp-server/tests/init-project.test.cjs +0 -393
  143. package/mcp-server/tests/migrate.test.cjs +0 -232
  144. package/mcp-server/tests/projector.test.cjs +0 -162
  145. package/mcp-server/tests/server-contract.test.cjs +0 -1471
  146. package/mcp-server/tests/staleness.test.cjs +0 -190
  147. package/mcp-server/tests/state-db.test.cjs +0 -106
  148. package/mcp-server/tests/state-ops.test.cjs +0 -449
  149. package/mcp-server/tests/tagged-tasks.test.cjs +0 -163
  150. package/mcp-server/tests/telemetry.test.cjs +0 -219
  151. package/orchestrator/planner/expand-prompt.cjs +0 -62
  152. package/orchestrator/planner/expand-prompt.test.cjs +0 -52
  153. package/orchestrator/planner/plan-builder.test.cjs +0 -165
  154. package/orchestrator/planner/prd-prompt.cjs +0 -44
  155. package/orchestrator/planner/prd-prompt.test.cjs +0 -30
  156. package/orchestrator/tests/auto-merge.test.cjs +0 -216
  157. package/orchestrator/tests/daemon.test.cjs +0 -311
  158. package/orchestrator/tests/dispatch-rules.test.cjs +0 -124
  159. package/orchestrator/tests/parallel-orchestrator.test.cjs +0 -233
  160. package/orchestrator/tests/phase-8b-gate.test.cjs +0 -183
  161. package/orchestrator/tests/recovery.test.cjs +0 -190
  162. package/orchestrator/tests/session-runner.test.cjs +0 -314
  163. package/orchestrator/tests/skill-miner.test.cjs +0 -147
  164. package/orchestrator/tests/worktree-manager.test.cjs +0 -148
  165. package/skills/ultra-research/references/architecture.md +0 -38
  166. package/skills/ultra-research/references/problem-product.md +0 -39
  167. package/skills/ultra-research/references/quality-delivery.md +0 -34
  168. package/skills/ultra-research/references/synthesis.md +0 -38
  169. package/skills/ultra-research/references/users-scope.md +0 -40
  170. package/ultra-tools/legacy-memory.test.cjs +0 -80
  171. package/ultra-tools/status-command.test.cjs +0 -181
  172. package/ultra-tools/system-command.test.cjs +0 -309
@@ -1,84 +1,69 @@
1
1
  ---
2
2
  name: ultra-change
3
- description: Open or resume a bounded continuous change and connect its intent, delta, decisions, context, and executable tasks. Use when maintaining or extending an Ultra project after its baseline exists.
3
+ description: Open or resume one bounded post-baseline change and connect its intent, delta, task plan, fresh context, and convergence evidence. Use when handling daily feature work, fixes, redesigns, or incidents after an Ultra baseline exists.
4
4
  ---
5
5
 
6
- # Open or resume a continuous change
6
+ # Maintain one continuous change
7
7
 
8
- Keep post-delivery work aligned through a delta, implementation, learning, and
9
- convergence loop.
8
+ Use Ultra MCP for lifecycle writes. Keep external memory and code-graph content in
9
+ their providers; Ultra stores references only.
10
10
 
11
- ## Authority boundary
11
+ ## Bind or create
12
12
 
13
- Use Ultra MCP tools for change and task lifecycle writes. Do not write raw SQLite or
14
- mutate generated task and context projections. External memory or code-graph systems
15
- own their payloads; Ultra stores only provider references supplied by the user or host.
13
+ 1. Read `system.doctor`, `baseline.get`, `change.list`, and `change.breadcrumb`.
14
+ 2. Resume the change matching the requested outcome. Require an id when several could
15
+ match; do not create a duplicate packet.
16
+ 3. New ordinary work requires a ready baseline. An incident on unhealthy authority
17
+ requires an explicit `baseline_bypass` reason and approver. Never infer approval
18
+ from urgency.
19
+ 4. Read `references/change-contract.md`. Persist the complete outcome, executable
20
+ acceptance, non-goals, public seams, recovery contract, unresolved decisions,
21
+ documentation impact, profile rationale, material risk flags, and research
22
+ disposition. Do not derive these fields from a title or free-form intent later.
23
+ 5. Select `quick`, `standard`, `major`, or `incident` from current scope and risk.
24
+ Escalate a proposed quick change when its contract carries material risk or research.
25
+ Then call `change.create` or `change.update` and read the normalized record back.
26
+ 6. Resume or start the linked `change` workflow with `workflow.list`/`workflow.start`.
16
27
 
17
- ## Workflow
28
+ ## Record the change workflow
18
29
 
19
- 1. Call `baseline.get`. State integrity failure routes to `ultra-doctor`.
20
- - Create ordinary work only when the baseline is healthy and `ready`.
21
- - Resume a change that was already active when baseline drift appears; record the
22
- condition as a warning and restore baseline readiness before ordinary convergence.
23
- - Create an `incident` on an unhealthy baseline only with an explicit
24
- `baseline_bypass` containing the reason and approver.
25
- - Route every other missing, migrated, incomplete, or stale baseline to `ultra-init`.
26
- 2. Call `change.list` and `change.breadcrumb`.
27
- - Resume the single change that matches the requested outcome.
28
- - Require an explicit id when several changes could match.
29
- - Create a new change only when no existing packet represents the same outcome.
30
- 3. Capture the observable outcome, acceptance, non-goals, affected public seam,
31
- documentation impact, and unresolved decisions.
32
- 4. Classify the change as `quick`, `standard`, `major`, or `incident`. Ask only for a
33
- material product, risk, or recovery decision that repository evidence cannot answer.
34
- 5. Call `change.create` with a stable kebab-case id, or `change.update` when resuming.
35
- For incident break-glass, persist the approved reason in `baseline_bypass`; never
36
- infer approval from urgency.
37
- 6. Write the minimum artifact set required by the classification:
30
+ Use `workflow.step` as evidence becomes durable:
38
31
 
39
- ```text
40
- .ultra/changes/active/<change-id>/
41
- intent.md
42
- delta/ # standard and major
43
- plan.md # standard and major
44
- diagnosis.md # incident
45
- context-manifest.json # generated projection
46
- spec-learning.json # generated projection
47
- verification.md # generated projection
48
- ```
32
+ - `bind-baseline`: current baseline id, revision, branch, and worktree evidence;
33
+ - `classify-change`: kind and rationale;
34
+ - `record-intent`: intent artifact, acceptance, scope, and resolved docs impact;
35
+ - `plan-change`: completed plan workflow and authoritative task ids;
36
+ - `compile-context`: current task-bound `change.context` manifest and digest;
37
+ - `verify-readiness`: ready breadcrumb with one executable next action.
49
38
 
50
- Delta files describe differences from the baseline, not a second copy of it.
51
- Incident diagnosis records the symptom, earliest bad state, falsifiable
52
- hypotheses, evidence, root cause, and recovery boundary.
53
- 7. Create the smallest executable vertical slice with `task.create`. Each task needs
54
- one outcome, bounded ownership, dependencies, a live public seam, an exact
55
- verification command, and documentation impact.
56
- 8. Compile `change.context` for the next role and gate. Include only required
57
- references and the task execution contract. Missing required references, digest or
58
- HEAD drift, an absent public seam or verification command, and unknown
59
- documentation impact are blockers. File count, token estimate, and context-share
60
- thresholds are advisory warnings: narrow reads or split the slice when useful, but
61
- never raise a threshold merely to make the warning disappear or refuse necessary
62
- incident context.
63
- 9. Call `change.breadcrumb` and return its single next action.
39
+ Standard and major changes keep deltas under
40
+ `.ultra/changes/active/<id>/delta/` and an evidence-linked `plan.md`. Deltas describe
41
+ differences from the baseline; they are not a second baseline. Incidents maintain the
42
+ structured diagnosis artifact and recovery evidence.
64
43
 
65
- ## Specification learning
44
+ When `research_disposition.status` is `bounded` or `required`, run `ultra-research`
45
+ with the exact recorded mode and selected steps before planning. Planning is blocked
46
+ until that change-bound research run is complete, current, and selection-equivalent.
47
+ Use `none` only when the Change Contract already has sufficient evidence.
66
48
 
67
- When implementation uncovers a stable requirement, invariant, or public behavior
68
- missing from the baseline, call `change.learning_propose` with evidence and a target
69
- document. The proposal does not edit the baseline. It must be approved or rejected,
70
- and an approved item is marked applied only after the target document is updated and
71
- verified.
49
+ Use `ultra-plan` to create complete DB-backed task contracts. Recompile
50
+ `change.context` after any task, HEAD, specification, or decision change. The task's DB
51
+ contract is authoritative; Prompt input may not override its seam or verification.
52
+ Required missing or stale refs block. Budget warnings guide narrower context but never
53
+ justify dropping necessary evidence or refusing legitimate work.
72
54
 
73
- ## Completion gate
55
+ An ordinary active change remains executable only while its durable `bind-baseline`
56
+ evidence still names the current approved-ready baseline. HEAD, worktree, specification,
57
+ or source-evidence drift created after that binding is advisory until delivery
58
+ reconciliation. Adoption/migration state, missing approval or evidence, blocking gaps,
59
+ and any other structural baseline failure block tasks, context, and later stages. Only
60
+ the recorded incident break-glass authority can bypass that gate.
74
61
 
75
- Do not claim alignment while a material decision is unresolved, documentation impact
76
- is unknown, context is stale, or the next task is not executable. Ordinary change
77
- convergence requires a non-migrated `ready` baseline. Normal HEAD or tracked-spec drift
78
- caused by the active change is reconciled at archive.
62
+ Call `workflow.complete` only after all change workflow steps are current. Return the
63
+ change id, kind, task set, context digest, blockers or warnings, workflow state, and the
64
+ breadcrumb's one route.
79
65
 
80
- An approved break-glass incident may converge and archive while baseline adoption is
81
- incomplete. Its archive must add an open `baseline_blocker` reconciliation gap owned by
82
- the recorded approver. Report the incident as closed and the project baseline as not
83
- ready until that gap is resolved. Every archive declares baseline updates or an exact
84
- no-change reason; failed ordinary reconciliation rolls back state and artifacts.
66
+ When implementation reveals a stable missing invariant, use
67
+ `change.learning_propose` and the approval/reject/apply transition. Unresolved learning
68
+ blocks delivery. An approved application must bind the declared target anchor, its
69
+ before and after digests, and current evidence before the proposal becomes `applied`.
@@ -0,0 +1,36 @@
1
+ # Change Contract and profile
2
+
3
+ Create one contract before planning. Keep every field specific enough to verify and
4
+ stable enough to survive a fresh session.
5
+
6
+ ## Contract
7
+
8
+ - `outcome`: one externally observable result.
9
+ - `acceptance`: stable ids with a criterion and exact verification for each accepted
10
+ behavior.
11
+ - `non_goals`: explicit boundaries that prevent accidental scope growth.
12
+ - `public_seams`: entry points or outputs through which acceptance is observed.
13
+ - `recovery`: a bounded reversal or recovery strategy and its verification.
14
+ - `unresolved_decisions`: stable ids, summary, blocking state, and owner when known.
15
+
16
+ Resolve every blocking decision before planning. Keep non-blocking uncertainty visible
17
+ in the task and verification contracts.
18
+
19
+ ## Profile
20
+
21
+ - `quick`: one low-risk task, no material risk flags, and no research dependency.
22
+ - `standard`: a bounded change with multiple tasks or ordinary integration risk.
23
+ - `major`: a broad or consequential change with material contract, migration,
24
+ authorization, security, multi-module, external-integration, or release impact.
25
+ - `incident`: urgent diagnosis and recovery with a reproducible symptom. Baseline
26
+ break-glass still requires a recorded approver and recovery contract.
27
+
28
+ Record a profile rationale and every applicable risk flag. Select the smallest profile
29
+ whose guarantees cover the real blast radius; never use profile labels as estimates.
30
+
31
+ ## Research disposition
32
+
33
+ Use `none` with a rationale when accepted evidence is sufficient. Use `bounded` or
34
+ `required` with a supported mode and the exact selected semantic steps when product,
35
+ behavior, architecture, deployment, or risk facts remain load-bearing. The recorded
36
+ selection is the planning gate.
@@ -1,87 +1,77 @@
1
1
  ---
2
2
  name: ultra-deliver
3
- description: Converge verified implementation, specification learning, review evidence, and release artifacts into a recoverable baseline. Use when an initial baseline or active change has current passing evidence and is ready to archive or release.
3
+ description: Converge one verified Ultra change, reconcile specification learning and baseline authority, archive recoverably, and optionally release when explicitly authorized. Use when current test and independent review evidence are ready for delivery.
4
4
  ---
5
5
 
6
- # Converge and deliver
6
+ # Converge and deliver one change
7
7
 
8
- Deliver one baseline or continuous change. Change lifecycle writes use MCP; test,
9
- review, and delivery reports are evidence artifacts.
8
+ Use host judgment for release scope and authorization. Use Ultra MCP for evidence
9
+ binding, workflow state, convergence, baseline reconciliation, archive recovery, and
10
+ output digests.
10
11
 
11
12
  ## Bind current evidence
12
13
 
13
- 1. Call `baseline.get`, then `change.list`. Bind exactly one relevant change, or the
14
- current draft/adopting baseline when this is the initial delivery.
15
- 2. Call `change.breadcrumb`. Context-size warnings are advisory. Ordinary delivery
16
- blocks on incomplete baseline adoption, stale execution context, incomplete linked
17
- tasks, or unresolved readiness. An explicitly approved break-glass incident may
18
- continue while baseline adoption is incomplete.
19
- 3. Require a passing test report for the current full HEAD and at least one declared
20
- public seam.
21
- 4. Require current independent `spec_fidelity` and `engineering_standards` review
22
- verdicts. Evidence from another checkout, commit, task set, or change is invalid.
23
-
24
- ## Reconcile the baseline
25
-
26
- Call `change.get` for authoritative learning candidates.
27
-
28
- - Resolve every proposed item as approved or rejected.
29
- - Apply each approved item to its declared baseline target, verify the edit, then mark
30
- it applied.
31
- - Preserve rejection reasons as decision evidence.
32
- - Confirm previously applied items remain represented in the target document.
33
-
34
- Reconcile accepted delta content and documentation impact into baseline documents.
35
- Record updated paths or a specific no-change reason. Unknown documentation impact,
36
- unresolved placeholders, and behavior that exists only in the delta block convergence.
37
-
38
- For an initial baseline without a change, call `baseline.record`, obtain explicit owner
39
- approval, and call `baseline.converge`. Do not simulate initial delivery through a null
40
- change record.
41
-
42
- ## Verify the release candidate
43
-
44
- Use a clean, reviewed release commit. Show any remaining diff and obtain explicit
45
- authorization before staging or committing. Never stage unrelated user changes.
46
-
47
- Run the exact repository commands needed for focused regression, relevant full tests,
48
- static checks, production build, package/install/doctor smoke when distributed, the
49
- public seam, and rollback or recovery sanity. Any post-verification edit invalidates
50
- the affected evidence.
51
-
52
- Compile final change context at the release commit with the convergence gate. It must
53
- be ready before calling `change.converge`.
54
-
55
- ## Converge and archive
56
-
57
- Submit structured evidence for the reviewed diff and seam, test signals, baseline and
58
- delta, documentation, both independent review axes, and incident diagnosis when
59
- applicable. Do not collapse review axes or replace exact signal fields with prose.
60
-
61
- Resolve named blockers, rerun invalidated gates, then call `change.archive` with the
62
- summary and baseline updates or an exact no-change reason. Ordinary archive
63
- reconciliation refreshes the authoritative baseline revision and digests, rechecks
64
- health, and rolls back state and artifacts when any tracked digest or revision remains
65
- stale.
66
-
67
- For a break-glass incident, verify that archive returned `baseline_bypass: true` and
68
- created the open reconciliation gap on the current baseline. Report incident delivery
69
- separately from project baseline readiness. Resolve that gap through `ultra-init`
70
- before starting ordinary work.
71
-
72
- ## Optional release
73
-
74
- Only when release authorization is in scope:
75
-
76
- 1. determine the semantic version from compatibility impact;
77
- 2. update version and changelog;
78
- 3. rerun checks invalidated by version changes;
79
- 4. create a non-force commit and tag;
80
- 5. push and publish through the repository's authenticated workflow;
81
- 6. independently verify the remote commit, tag, release, and registry version.
82
-
83
- Write the delivery report with the change id, archive status, commit, version, exact
84
- commands, release identifiers, baseline updates, rollback notes, and timestamp.
85
-
86
- Delivery is complete only when local and remote evidence agree and the worktree has no
87
- unexplained scope. A local version bump is not publication evidence.
14
+ 1. Read `system.doctor`, `baseline.get`, `change.get`, `change.breadcrumb`, linked
15
+ tasks, and current test/review workflows and artifacts.
16
+ 2. Resume or start a `deliver` workflow linked to the change and baseline.
17
+ 3. Require completed tasks, current context, a passing test report at full HEAD with a
18
+ verified public seam, and current independent `spec_fidelity` and
19
+ `engineering_standards` verdicts. Record `bind-evidence`.
20
+
21
+ Evidence from another revision, task set, change, or stale output is invalid. An
22
+ approved break-glass incident follows only its recorded recovery contract.
23
+
24
+ ## Reconcile and verify
25
+
26
+ Resolve every specification-learning proposal. Apply an approved item to its declared
27
+ target and verify it before marking it applied; preserve rejection reasons. Reconcile
28
+ accepted delta and documentation impact into baseline documents, or record an exact
29
+ no-change reason. Record `reconcile-specifications`.
30
+
31
+ Read `references/baseline-reconciliation.md` and write the bound reconciliation
32
+ manifest inside the active change directory. It must record every baseline update as a
33
+ semantic add or update with a real source anchor, before/after digests, verification,
34
+ resolved gap ids, and resolved unknowns. A no-update delivery records one evidenced
35
+ semantic no-change reason.
36
+
37
+ Verify the release candidate with repository-native focused/regression checks,
38
+ type/lint/build where applicable, install/doctor smoke for distributed packages,
39
+ public seams, and rollback or recovery sanity. Compile final convergence context and
40
+ record its immutable manifest as the `verify-candidate` output. Any edit invalidates
41
+ affected evidence.
42
+
43
+ Call `change.converge` with only the change id. Do not submit verdicts or evidence
44
+ summaries: MCP derives development, test report, public seam, specification,
45
+ documentation, both review axes, and incident diagnosis evidence from DB-backed
46
+ workflows and current artifacts. Resolve named blockers and rerun invalidated gates. Record
47
+ `converge-authority` only when the change is ready.
48
+
49
+ Call `change.archive` with the summary, `reconciliation_path`, and baseline updates or
50
+ exact no-change reason.
51
+ Ordinary archive refreshes baseline revision and digests atomically and rolls back on
52
+ incomplete reconciliation. Record `archive-change`. For break-glass delivery, verify
53
+ the returned bypass and blocking reconciliation gap.
54
+
55
+ ## Release only with authority
56
+
57
+ The `release-if-authorized` step is not permission. When publication is outside the
58
+ user's request, complete it with exactly one `release_authorization` decision containing
59
+ `authorized: false` and the reason. When explicitly authorized, record
60
+ `authorized: true`, `approved_by`, the exact release `scope`, and the reason; then
61
+ determine compatibility impact, update version and
62
+ changelog, rerun invalidated checks, create a non-force commit/tag, push, publish, and
63
+ verify remote commit, tag, release, and registry version independently.
64
+
65
+ Write `.ultra/reports/delivery/<workflow-id>.json` atomically using
66
+ `ultra-delivery-report-v1`, with change/archive state, baseline id/status, full HEAD,
67
+ worktree digest, convergence-context digest, exact passing
68
+ checks, the explicit release authorization/performed decision, release identifiers
69
+ when applicable, structured evidence for every performed commit/push/tag/registry/
70
+ deployment action, rollback notes, and timestamp. The report authorization must match
71
+ the DB-recorded decision. Record `verify-delivery` with that
72
+ output and call `workflow.complete` only after the change is archived and local and
73
+ remote evidence agree for every authorized action. MCP derives the delivery summary
74
+ from this report rather than a Prompt claim.
75
+
76
+ Return workflow id, archive and baseline state, evidence digests, commit/release facts,
77
+ recovery notes, residual risks, and one next route.
@@ -0,0 +1,20 @@
1
+ # Baseline reconciliation manifest
2
+
3
+ Write a JSON file inside `.ultra/changes/active/<change-id>/` with
4
+ `$schema: "ultra-baseline-reconciliation-v1"`.
5
+
6
+ Bind `change_id`, `baseline_id`, and `baseline_updates` exactly to the archive request.
7
+ Include:
8
+
9
+ - `semantic_changes`: stable id, `add` or `update`, project-relative `source_ref` using
10
+ `path#anchor`, the prior baseline digest or `null`, and the current file digest;
11
+ - `resolved_gap_ids`: existing baseline gaps closed by this delivery;
12
+ - `resolved_unknowns`: exact existing unknown summaries closed by this delivery;
13
+ - `verification`: named checks with exact commands, `pass`, and bounded evidence;
14
+ - `semantic_no_change_reason`: an evidence-backed reason when `baseline_updates` is
15
+ empty.
16
+
17
+ Every updated file needs a semantic change record and current anchor. The before digest
18
+ must match baseline authority and the after digest must match the file. Keep the
19
+ manifest with the change so archive recovery can replay the same transaction after an
20
+ interrupted filesystem move.
@@ -1,63 +1,58 @@
1
1
  ---
2
2
  name: ultra-dev
3
- description: Execute one authoritative Ultra task through a bounded fresh context, a red-green feedback loop, live-path verification, and review. Use when a dependency-ready planned slice is ready for implementation.
3
+ description: Execute one authoritative Ultra task through a fresh-context, test-driven, review-backed live-path slice with resumable DB state. Use when a planned task is ready to implement, resume, or recover after a blocker or interrupted session.
4
4
  ---
5
5
 
6
- # Execute one vertical slice
7
-
8
- Drive one task from `pending` to `completed` without widening its contract silently.
9
-
10
- ## Authority and recovery
11
-
12
- Task state changes use `task.update`. Never write raw SQLite, generated task JSON, or
13
- projected status fields. If task MCP access fails, stop and route state health to
14
- `ultra-doctor`.
15
-
16
- Read `change.breadcrumb` when a change is active. Stale context, blocked readiness,
17
- unknown documentation impact, or a HEAD mismatch blocks implementation.
18
- Baseline-adoption and context-size warnings do not block an active slice. Address
19
- them when practical without dropping required evidence or arbitrarily changing a
20
- threshold. Ordinary convergence requires approved baseline availability; revision
21
- and tracked-spec health are reconciled and verified at archive. An approved
22
- break-glass incident may finish recovery first and must leave a blocking baseline
23
- reconciliation gap.
24
-
25
- ## Workflow
26
-
27
- 1. Select the requested task, otherwise the first dependency-ready pending task.
28
- 2. Call `task.get` and verify acceptance, dependencies, ownership, public seam, and
29
- exact verification command.
30
- 3. For a linked change, call `change.get`, then compile `change.context` for the
31
- implementation role and gate with the smallest required references.
32
- 4. Mark the task `in_progress` only after the context is ready.
33
- 5. Establish the feedback-loop baseline before changing production logic:
34
- - reproduce the smallest observable symptom at the declared seam;
35
- - add or identify the contract or regression test;
36
- - record the exact command, expected signal, and observed result.
37
-
38
- A feature starts with an assertion for missing behavior. A refactor starts from a
39
- green characterization baseline. Documentation or configuration work may use a
40
- structural validator when no logic test applies.
41
- 6. Implement the minimum complete path from entry point to public seam. Reuse existing
42
- utilities, keep IO at boundaries, include required errors and recovery, and preserve
43
- unrelated worktree changes.
44
- 7. If the work reveals a stable requirement or public behavior absent from the
45
- baseline, call `change.learning_propose`. Do not edit the baseline silently or keep
46
- the discovery only in transient conversation context.
47
- 8. Verify in this order:
48
- - the original feedback-loop command;
49
- - adjacent focused tests;
50
- - proportionate static checks and build;
51
- - the live public-seam acceptance path;
52
- - final diff and worktree scope.
53
- 9. Run `ultra-review` against the current diff. Fix blocking findings, rerun invalidated
54
- checks, and require independent specification-fidelity and engineering verdicts.
55
- 10. Call `task.update` with `status=completed` and exact evidence. For a linked change,
56
- recompile the verification context at the final HEAD, then call
57
- `change.breadcrumb`.
58
-
59
- ## Completion evidence
60
-
61
- Report the task and change ids, changed paths, baseline signal, passing commands,
62
- public-seam result, review session, specification-learning candidates, and one next
63
- action. Leave the task in progress or blocked when required evidence is missing.
6
+ # Implement one executable task
7
+
8
+ Bind exactly one task and change. Use the host for code reasoning and edits; use Ultra
9
+ MCP for workflow state, context authority, task/session transitions, evidence, and
10
+ recovery.
11
+
12
+ ## Start or resume
13
+
14
+ 1. Read `system.doctor`, `change.breadcrumb`, `task.get`, workflow state, dependencies,
15
+ active sessions, Git HEAD, and worktree scope.
16
+ 2. Resume an existing `dev` workflow or call `workflow.start` with `change_id` and
17
+ `task_id`. Startup fails when the DB-backed task execution contract is incomplete or
18
+ owned by another change.
19
+ 3. Record `bind-task` with task, dependency, branch, and worktree evidence.
20
+ 4. Compile `change.context` for `implement`. It derives public seam, verification, and
21
+ required refs from the task row. Record its immutable manifest as the
22
+ `compile-context` output only when ready. That starting snapshot remains historical
23
+ task evidence; later task commits do not invalidate it when its commit stays on the
24
+ current ancestry and the task contract is unchanged.
25
+ 5. Run session admission before spawning an isolated session. Do not open a second
26
+ active lease without the documented resume, takeover, or abandon decision.
27
+
28
+ ## Red, green, verify
29
+
30
+ 1. Reproduce the behavior or establish a characterization signal before logic edits.
31
+ Record `establish-feedback-loop` with the exact failing command and observed result.
32
+ 2. Set the task `in_progress`; implement the smallest complete vertical slice through
33
+ the declared public seam. Preserve unrelated worktree changes.
34
+ 3. Keep application judgment and edits in the host. Do not write projections, raw DB,
35
+ workflow output digests, or evidence state by hand.
36
+ 4. Refactor only inside the accepted slice while the focused signal stays green.
37
+ 5. Record `implement-slice`, then run focused, adjacent, static/build, public-seam,
38
+ error, and recovery checks proportional to risk. Record exact evidence under
39
+ `verify-slice`.
40
+ 6. Run `ultra-review` at the current diff. Record both independent verdict axes under
41
+ `review-slice`; unresolved blocking findings return to implementation.
42
+
43
+ ## Complete or recover
44
+
45
+ Close the admitted session with `session.close` after its final heartbeat and verify
46
+ that no running lease remains for the task. Then update the task to `completed` only
47
+ after acceptance, verification, documentation, and review are current. Record
48
+ `record-completion` with commands, results, changed paths, commit when authorized, and
49
+ context/review references; then call `workflow.complete`. The MCP refuses dev
50
+ convergence while the task is incomplete or a session is still running.
51
+
52
+ On interruption or an external blocker, record the current step as `blocked`, update
53
+ the task consistently, and preserve the session and evidence. Resume the same run;
54
+ completed steps remain durable. Any code or contract change invalidates affected test,
55
+ review, or context evidence.
56
+
57
+ Return the task outcome, public seam, changed paths, exact checks, review results,
58
+ workflow id, session state, residual risks, and one next route.