ultra-builder-pro-cli 0.26.0 → 0.26.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.
- package/.ultra-template/changes/abandoned/.gitkeep +0 -0
- package/.ultra-template/contexts/TEMPLATE.md +7 -0
- package/.ultra-template/north-star.md +20 -31
- package/.ultra-template/project-brief.md +28 -0
- package/.ultra-template/specs/product.md +4 -0
- package/.ultra-template/specs/research-distillate.md +8 -0
- package/.ultra-template/test-report.json +1 -0
- package/CHANGELOG.md +131 -1
- package/README.md +61 -29
- package/bin/delegate-worker.cjs +5 -0
- package/bin/delegate.cjs +7 -0
- package/docs/ARCHITECTURE.md +36 -10
- package/docs/ARTIFACT-AUTHORITY.md +42 -13
- package/docs/DECISIONS.md +24 -5
- package/docs/PHILOSOPHY.md +45 -12
- package/docs/PLUGIN-ISOLATION-CONTRACT.md +6 -3
- package/docs/RUNTIME-COMPAT-MATRIX.md +43 -1
- package/docs/SKILL-AUTHORING.md +10 -6
- package/docs/WORKFLOW-LIFECYCLE.md +103 -39
- package/hooks/README.md +12 -5
- package/hooks/_common.py +54 -5
- package/hooks/block_dangerous_commands.py +116 -10
- package/hooks/session_context.py +34 -8
- package/package.json +1 -1
- package/skills/ultra-change/SKILL.md +59 -52
- package/skills/ultra-change/references/change-contract.md +65 -7
- package/skills/ultra-delegate/SKILL.md +21 -3
- package/skills/ultra-delegate/references/delegation-contract.md +10 -2
- package/skills/ultra-deliver/SKILL.md +63 -21
- package/skills/ultra-deliver/references/baseline-reconciliation.md +5 -3
- package/skills/ultra-dev/SKILL.md +33 -14
- package/skills/ultra-grilling/SKILL.md +63 -24
- package/skills/ultra-grilling/references/reframing.md +72 -0
- package/skills/ultra-init/SKILL.md +62 -79
- package/skills/ultra-init/references/brownfield-adoption.md +23 -40
- package/skills/ultra-plan/SKILL.md +48 -24
- package/skills/ultra-research/SKILL.md +91 -62
- package/skills/ultra-research/references/{03-competitive-landscape.md → 03-alternatives.md} +6 -6
- package/skills/ultra-research/references/22-success-metrics.md +8 -4
- package/skills/ultra-research/references/99-synthesis.md +8 -1
- package/skills/ultra-research/references/wayfinding.md +42 -0
- package/skills/ultra-review/SKILL.md +31 -3
- package/skills/ultra-status/SKILL.md +62 -32
- package/skills/ultra-tdd/SKILL.md +5 -2
- package/skills/ultra-test/SKILL.md +31 -12
- package/skills/ultra-test/scripts/worktree_digest.cjs +42 -8
- package/skills/ultra-think/SKILL.md +5 -10
- package/skills/ultra-think/references/interaction-boundary.md +2 -1
|
@@ -1,111 +1,94 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ultra-init
|
|
3
|
-
description:
|
|
3
|
+
description: Create or recover Ultra's repository-local skeleton and raw Project Brief without performing product research. Use when `.ultra` is absent or partial in a new or existing codebase and later workflows need stable file paths, preserved authority, and Git.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Create the skeleton and capture only the initial project outline
|
|
7
7
|
|
|
8
|
-
Initialization
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
The dividing line against research is **authorization versus claim**. What the
|
|
13
|
-
owner authorizes comes out of their head and evidence cannot overturn it. What
|
|
14
|
-
research collects is a claim about the outside world, which evidence can confirm
|
|
15
|
-
or refute. A technology choice is a claim, so it is not initialization's business
|
|
16
|
-
— and a new project has no configuration files to read anyway.
|
|
8
|
+
Initialization establishes places for later authority and records raw owner intake. It
|
|
9
|
+
does not validate the problem, establish a North Star, build a product or architecture
|
|
10
|
+
baseline, settle domain language, choose a Change, or start another public workflow.
|
|
17
11
|
|
|
18
12
|
## Before you start
|
|
19
13
|
|
|
20
|
-
1.
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
14
|
+
1. If `.ultra/changes/active/` exists, resolve at most one active `change_id`. Read
|
|
15
|
+
`.ultra/tasks.json` if it exists, plus the `context_file` and closing `## Resume Note`
|
|
16
|
+
of unfinished tasks matching that id. Historical unfinished rows do not turn a
|
|
17
|
+
partial skeleton into current work. A partial `.ultra/` is recovery work.
|
|
18
|
+
2. Read `.ultra/project-brief.md`, `.ultra/north-star.md`, `CONTEXT.md`, and relevant
|
|
19
|
+
`.ultra/decisions/` when they exist. Preserve accepted authority byte-for-byte.
|
|
20
|
+
3. Establish the repository root, Git state, and whether meaningful code or maintained
|
|
21
|
+
documentation exists from the filesystem. Do not ask the owner for those facts.
|
|
25
22
|
|
|
26
23
|
## Definition of done
|
|
27
24
|
|
|
28
|
-
- `.ultra/
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
25
|
+
- `.ultra/project-brief.md` contains raw owner intake: one line, a broad outline,
|
|
26
|
+
explicit inputs already supplied, and open questions handed to Research.
|
|
27
|
+
- For a new skeleton, an empty North Star and the three specification skeletons exist.
|
|
28
|
+
Recovery preserves any populated authority; Init does not fill semantic sections or
|
|
29
|
+
create `CONTEXT.md`.
|
|
30
|
+
- Every packaged path was read back after copying, while every pre-existing file stayed
|
|
31
|
+
byte-identical.
|
|
32
|
+
- `.git` exists. Commit, push, remote creation, and publication remain separate effects.
|
|
35
33
|
|
|
36
|
-
|
|
34
|
+
## Classify only for preservation
|
|
37
35
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
| Neither | Greenfield | Write everything |
|
|
36
|
+
Use `references/brownfield-adoption.md` when source, runtime configuration, tests, or
|
|
37
|
+
maintained product documentation already exist. Classification changes what must be
|
|
38
|
+
preserved and what Research should inspect; it never authorizes Init to write observed
|
|
39
|
+
product behavior into a specification.
|
|
43
40
|
|
|
44
|
-
|
|
45
|
-
are evidence or an explicitly retained authority; they never justify omitting the
|
|
46
|
-
canonical specification skeleton that downstream workflows require.
|
|
41
|
+
## Draw out the brief, then stop
|
|
47
42
|
|
|
48
|
-
|
|
43
|
+
Follow `../ultra-grilling/SKILL.md` with only these required fields:
|
|
49
44
|
|
|
50
|
-
|
|
51
|
-
the owner cannot state what they want up front. Start from what they already said
|
|
52
|
-
when invoking you, restate it for confirmation, and ask only about what is
|
|
53
|
-
genuinely missing. Five things come out of it:
|
|
54
|
-
|
|
55
|
-
| What you draw out | Where it lands |
|
|
45
|
+
| Raw intake | Project Brief section |
|
|
56
46
|
|---|---|
|
|
57
|
-
| What
|
|
58
|
-
| What
|
|
59
|
-
|
|
|
60
|
-
|
|
|
61
|
-
| **What you already know you are unsure about** | `discovery.md` — research's priority queue |
|
|
47
|
+
| What the owner wants to build, in one sentence and their words | `## One-line` |
|
|
48
|
+
| What it is, broadly for whom or what, intended result, broad boundary | `## Initial Outline` |
|
|
49
|
+
| Constraints, materials, and decisions the owner already volunteered | `## Explicit Inputs` |
|
|
50
|
+
| Questions already visible but requiring evidence or deeper decisions | `## Open Questions for Research` |
|
|
62
51
|
|
|
63
|
-
|
|
64
|
-
|
|
52
|
+
Ask only enough to distinguish materially different outlines. If an answer would define
|
|
53
|
+
a problem, actor evidence, desired outcome, success measure, product strategy, accepted
|
|
54
|
+
constraint, domain term, requirement, or architecture, record it as an input or open
|
|
55
|
+
question and stop drilling. Research owns that maturation and must not re-ask an answer
|
|
56
|
+
unless evidence conflicts with it.
|
|
65
57
|
|
|
66
|
-
##
|
|
58
|
+
## Write and recover the skeleton
|
|
67
59
|
|
|
68
60
|
Resolve this loaded Skill's directory, then run
|
|
69
|
-
`node <ultra-init-skill-dir>/scripts/init_project.cjs --project <repository-root>`.
|
|
70
|
-
only missing files from `assets/project-template`, preserves every
|
|
71
|
-
file
|
|
72
|
-
placeholders from verified facts and owner decisions.
|
|
61
|
+
`node <ultra-init-skill-dir>/scripts/init_project.cjs --project <repository-root>`.
|
|
62
|
+
The script copies only missing files from `assets/project-template`, preserves every
|
|
63
|
+
existing file, and reads the complete result back.
|
|
73
64
|
|
|
74
65
|
```text
|
|
75
|
-
.ultra/
|
|
76
|
-
.ultra/
|
|
77
|
-
.ultra/
|
|
78
|
-
.ultra/
|
|
79
|
-
.ultra/
|
|
80
|
-
|
|
66
|
+
.ultra/project-brief.md raw intake and initial outline
|
|
67
|
+
.ultra/north-star.md empty Research-owned steering contract
|
|
68
|
+
.ultra/specs/{product,architecture,discovery}.md empty specification skeletons
|
|
69
|
+
.ultra/specs/research-distillate.md empty Research synthesis skeleton
|
|
70
|
+
.ultra/{tasks.json,test-report.json} empty or not-yet-run ledgers
|
|
71
|
+
.ultra/{contexts,decisions,evidence,research}/
|
|
72
|
+
.ultra/changes/{active,archive,abandoned}/
|
|
81
73
|
```
|
|
82
74
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
**what can be read out of repository files, you fill; what needs investigation,
|
|
88
|
-
research fills.**
|
|
75
|
+
For a legacy `north-star.md` containing `## One-line`, keep that file byte-identical.
|
|
76
|
+
When the new Project Brief is still unresolved, copy the legacy one-line verbatim into
|
|
77
|
+
it and list legacy hard constraints under Explicit Inputs without assigning new IDs.
|
|
78
|
+
Research later proposes the accepted North Star; it never rewrites history silently.
|
|
89
79
|
|
|
90
|
-
Git
|
|
91
|
-
|
|
92
|
-
If `.git` is absent, run `git init`. Report the uncommitted initialized files and ask
|
|
93
|
-
for commit authority only if the owner wants that separate effect now.
|
|
80
|
+
Git supplies revision identity, history, comparison, archive moves, and rollback. Run
|
|
81
|
+
`git init` only when `.git` is absent, then report the uncommitted scaffold.
|
|
94
82
|
|
|
95
83
|
## When the owner decides
|
|
96
84
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
Where the host cannot ask at all, leave the one-line goal empty and say plainly
|
|
102
|
-
that it is empty, that goal injection will therefore be empty, and that the next
|
|
103
|
-
skill asks again. Do not infer it from the directory name.
|
|
85
|
+
The owner confirms the one-line outline and any replacement of healthy authority. Where
|
|
86
|
+
the host cannot ask, leave unresolved fields explicit and recommend resuming Init on a
|
|
87
|
+
host that can; do not infer intent from the directory name. Recommend Research after a
|
|
88
|
+
usable brief exists, but do not invoke it.
|
|
104
89
|
|
|
105
90
|
## References
|
|
106
91
|
|
|
107
|
-
- `../ultra-grilling/SKILL.md` —
|
|
108
|
-
-
|
|
109
|
-
-
|
|
110
|
-
- `../ultra-think/references/autonomy-boundary.md` — read before touching
|
|
111
|
-
authority that already exists.
|
|
92
|
+
- `../ultra-grilling/SKILL.md` — read before the first missing brief field.
|
|
93
|
+
- `references/brownfield-adoption.md` — read when maintained behavior already exists.
|
|
94
|
+
- `../ultra-think/references/autonomy-boundary.md` — read before replacing authority.
|
|
@@ -1,49 +1,32 @@
|
|
|
1
|
-
# Brownfield
|
|
1
|
+
# Brownfield initialization
|
|
2
2
|
|
|
3
|
-
Use this procedure only when `ultra-init`
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
Use this procedure only when `ultra-init` finds maintained behavior but no healthy,
|
|
4
|
+
complete Ultra skeleton. Init preserves the checkout and prepares an evidence route; it
|
|
5
|
+
does not establish the brownfield baseline.
|
|
6
6
|
|
|
7
7
|
## Bind the repository boundary
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
generated
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
Identify the repository root, selected workspace roots, branch, `HEAD`, dirty files,
|
|
10
|
+
generated or vendored exclusions, manifests, maintained documents, verification
|
|
11
|
+
commands, and visible public entry points. Resolve these from files and Git instead of
|
|
12
|
+
asking the owner.
|
|
13
13
|
|
|
14
|
-
##
|
|
14
|
+
## Preserve before interpreting
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
- Never replace existing `.ultra` files, `CONTEXT.md`, decisions, or maintained project
|
|
17
|
+
documents merely to obtain the current template shape.
|
|
18
|
+
- Treat source, tests, runtime configuration, and documentation as evidence candidates,
|
|
19
|
+
not conclusions Init may promote.
|
|
20
|
+
- Keep out-of-scope dirty files visible in the report without adding them to the
|
|
21
|
+
Project Brief or specification skeletons.
|
|
22
|
+
- Record an exact legacy one-line as raw intake only when the Project Brief is empty.
|
|
20
23
|
|
|
21
|
-
##
|
|
24
|
+
## Prepare the Research handoff
|
|
22
25
|
|
|
23
|
-
|
|
24
|
-
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
unresolved questions.
|
|
28
|
-
- Initialize `.ultra/tasks.json` and `.ultra/test-report.json` from the packaged
|
|
29
|
-
templates without manufacturing passing results.
|
|
26
|
+
List the concrete paths and live seams that can answer each open baseline question.
|
|
27
|
+
`ultra-research` establishes the observed and accepted baseline from those sources. Init
|
|
28
|
+
does not run verification, classify delivered behavior, reconcile documentation drift,
|
|
29
|
+
or write product, discovery, or architecture conclusions.
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
## Characterize verification
|
|
35
|
-
|
|
36
|
-
Run the repository's existing verification commands. Record each result as `pass`,
|
|
37
|
-
`known_red`, or `not_run`; a missing command is not a pass. A critical public seam
|
|
38
|
-
without a stable signal is an explicit gap, not an excuse to invent completion.
|
|
39
|
-
|
|
40
|
-
## Converge
|
|
41
|
-
|
|
42
|
-
Read every written file back, show the owner the selected scope, observed behavior,
|
|
43
|
-
drift, known-red verification, unknowns, and material decisions, and leave unresolved
|
|
44
|
-
items marked `[NEEDS CLARIFICATION]`. Adoption is ready when the file set is complete,
|
|
45
|
-
the recorded revision matches the inspected checkout, and every material gap remains
|
|
46
|
-
visible with its evidence and owner decision where one exists.
|
|
47
|
-
|
|
48
|
-
Recommend `ultra-change` for subsequent work and stop; public skills do not invoke one
|
|
49
|
-
another.
|
|
31
|
+
Report the preserved files, repository boundary, candidate evidence, and unresolved
|
|
32
|
+
questions. Recommend Research and stop; public workflows never invoke one another.
|
|
@@ -5,24 +5,32 @@ description: Turn an evidenced Change intent into a dependency-valid task ledger
|
|
|
5
5
|
|
|
6
6
|
# Turn one Change into executable tracer bullets
|
|
7
7
|
|
|
8
|
-
Planning owns decomposition and technical design
|
|
9
|
-
sessions and hosts; no runtime state decides whether the plan is meaningful.
|
|
8
|
+
Planning owns decomposition and technical design; files carry it across sessions and hosts.
|
|
10
9
|
|
|
11
10
|
## Before you start
|
|
12
11
|
|
|
13
|
-
1.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
1. Resolve exactly one `.ultra/changes/active/<change_id>/intent.md`. If none or more
|
|
13
|
+
than one exists, stop with that file conflict. The intent must be `accepted`, every
|
|
14
|
+
blocking decision resolved, and its `## Research Disposition` exit evidence
|
|
15
|
+
satisfied before decomposition.
|
|
16
|
+
2. Read `.ultra/tasks.json`; select matching tasks and read each unfinished context and
|
|
17
|
+
Resume Note. Preserve all historical tasks in the append-only ledger.
|
|
18
|
+
3. Read `CONTEXT.md` for vocabulary and the relevant `.ultra/decisions/` entries.
|
|
19
|
+
4. Read the active Change intent, its `trace_to` specification anchors, and the
|
|
17
20
|
source, tests, consumers and recovery paths those anchors describe.
|
|
18
21
|
|
|
19
22
|
## Definition of done
|
|
20
23
|
|
|
21
|
-
- `.ultra/tasks.json` and one `.ultra/contexts/task-<id>.md` per task
|
|
22
|
-
identifiers, status, dependencies and trace anchors.
|
|
23
|
-
- The owner confirmed
|
|
24
|
+
- `.ultra/tasks.json` and one `.ultra/contexts/task-<id>.md` per current-Change task
|
|
25
|
+
agree on identifiers, stable `change_id`, status, dependencies and trace anchors.
|
|
26
|
+
- The owner confirmed any material posture. Seams resolve to code; technical selection
|
|
27
|
+
stays model-owned unless it changes public contract, accepted risk, or material trade-off.
|
|
24
28
|
- Every feature task is a tracer bullet touching at least two layers, unless the
|
|
25
29
|
Change itself demonstrably touches only one layer.
|
|
30
|
+
- Every context names the north-star hard constraints its work could violate, and
|
|
31
|
+
each `HC-<n>` it names resolves to a real entry in `.ultra/north-star.md`.
|
|
32
|
+
- Every Change acceptance id maps to at least one task context, and every context id
|
|
33
|
+
resolves back to the active Change.
|
|
26
34
|
- Coverage, dependency, trace, scope and context-budget checks have concrete results.
|
|
27
35
|
|
|
28
36
|
## Fix the planning posture
|
|
@@ -34,8 +42,8 @@ separate `plan.md` authority.
|
|
|
34
42
|
Use `../ultra-grilling/SKILL.md` through the host-native question surface when the
|
|
35
43
|
choice remains material, one question with a recommendation at a time.
|
|
36
44
|
|
|
37
|
-
|
|
38
|
-
|
|
45
|
+
When the whole path is still unclear, recommend `ultra-research`; the Change is not yet
|
|
46
|
+
evidenced enough to decompose. For one consequential trade-off, use `../ultra-think/SKILL.md`.
|
|
39
47
|
|
|
40
48
|
## Choose the plan shape
|
|
41
49
|
|
|
@@ -54,39 +62,55 @@ Build the graph with these structural defences:
|
|
|
54
62
|
- A feature task that touches only one of several affected layers is merged or split
|
|
55
63
|
into a tracer bullet; moving a whole layer into one task is horizontal slicing.
|
|
56
64
|
|
|
57
|
-
|
|
58
|
-
|
|
65
|
+
Record seams before tests. The model chooses the technical seam: prefer an existing,
|
|
66
|
+
highest observable public seam, ideally one. Ask the owner only when it changes the
|
|
67
|
+
public contract or another material product, risk, or recovery trade-off.
|
|
59
68
|
|
|
60
69
|
## Write the files
|
|
61
70
|
|
|
62
71
|
Each task records `id`, `title`, `type`, `priority`, `complexity`, `status`,
|
|
63
|
-
`dependencies`, `context_file`, `trace_to` and `
|
|
72
|
+
`dependencies`, `context_file`, `trace_to` and `change_id`. Task ids are globally
|
|
73
|
+
unique, and every dependency must name a task with the same `change_id`; an archived
|
|
74
|
+
Change must never become an implicit prerequisite of current work. Complexity is only a
|
|
64
75
|
splitting and context signal: 1–2 is local, 3–5 is bounded, 6–7 crosses a boundary,
|
|
65
76
|
and complexity > 7 must split.
|
|
66
77
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
and
|
|
78
|
+
Append new tasks or repair matching current-Change tasks in place; never replace the
|
|
79
|
+
ledger with only the latest graph. A `quick` Change produces exactly one minimal task
|
|
80
|
+
and context rather than bypassing the task/evidence lifecycle.
|
|
81
|
+
|
|
82
|
+
Each context records Change Acceptance IDs, task-local Acceptance, confirmed seams,
|
|
83
|
+
layers touched, target files, Implementation, verification commands, the hard
|
|
84
|
+
constraints the work could violate, Definition of Drift, Change Log, Completion and
|
|
85
|
+
Resume Note. Read every file back; task count and context count must match.
|
|
86
|
+
|
|
87
|
+
Name a hard constraint whenever the task could plausibly breach it, not only when you
|
|
88
|
+
expect it to. The entry costs one line and is what makes a later breach a checkable
|
|
89
|
+
question instead of a judgement call; `none` is a legitimate answer for a task that
|
|
90
|
+
touches nothing constrained.
|
|
70
91
|
|
|
71
92
|
## Verify the plan
|
|
72
93
|
|
|
73
|
-
1. Map every
|
|
94
|
+
1. Map every Change acceptance ID to at least one task context and reject dangling
|
|
95
|
+
context IDs. Map every in-scope user story or specification anchor to at least one task.
|
|
74
96
|
2. Walk dependencies and repair every cycle with the exact cycle chain visible.
|
|
75
97
|
3. Resolve every `trace_to` path and heading against a real file.
|
|
76
|
-
4.
|
|
98
|
+
4. Resolve every `HC-<n>` against `.ultra/north-star.md`. A dangling constraint id is
|
|
99
|
+
the same defect as a dangling `trace_to`: it reads as checked and never was.
|
|
100
|
+
5. Surface complexity, more than eight target files, or more than twenty tasks as
|
|
77
101
|
scope warnings; they are observations, not semantic verdicts.
|
|
78
|
-
|
|
102
|
+
6. Estimate context at roughly `complexity × 5%`; surface anything above 40%.
|
|
79
103
|
|
|
80
104
|
Report the graph, frontier, seams, warnings and first task. Recommend the next explicit
|
|
81
105
|
capability from the files; do not invoke it.
|
|
82
106
|
|
|
83
107
|
## When the owner decides
|
|
84
108
|
|
|
85
|
-
The owner chooses
|
|
86
|
-
|
|
87
|
-
|
|
109
|
+
The owner chooses material posture, reductions, omissions, and any seam changing public
|
|
110
|
+
contract or material trade-off. The model owns technical decomposition and seams.
|
|
111
|
+
Repair mechanical cycles and broken paths before handoff.
|
|
88
112
|
|
|
89
113
|
## References
|
|
90
114
|
|
|
91
115
|
- `../ultra-grilling/SKILL.md` — read before a material posture or seam question.
|
|
92
|
-
- `../ultra-think/SKILL.md` — read when
|
|
116
|
+
- `../ultra-think/SKILL.md` — read when one evidenced decision blocks decomposition.
|
|
@@ -1,82 +1,111 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ultra-research
|
|
3
|
-
description: Turn
|
|
3
|
+
description: Turn a raw Project Brief or scoped evidence gap into an accepted North Star, domain language, cited product and architecture specifications, and a hash-bound synthesis. Use after initialization, for brownfield baselining, or inside an active Change whose consequential claims are not yet evidenced.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Mature a project outline into an evidence-backed baseline
|
|
7
7
|
|
|
8
|
-
Research owns
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
Research owns the first accepted baseline and later evidence-backed corrections. Web
|
|
9
|
+
search is one evidence source, not the workflow: repository files, Git, tests, runtime,
|
|
10
|
+
maintained documentation, owner decisions, and current primary sources all count.
|
|
11
11
|
|
|
12
12
|
## Before you start
|
|
13
13
|
|
|
14
|
-
1.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
1. Resolve at most one active `change_id`, then read `.ultra/tasks.json` plus the
|
|
15
|
+
`context_file` and `## Resume Note` of unfinished tasks whose `change_id` matches it,
|
|
16
|
+
if any. Archived or abandoned unfinished rows are history, not the current frontier.
|
|
17
|
+
2. Read `.ultra/project-brief.md`. For a legacy project without it, treat the exact
|
|
18
|
+
`.ultra/north-star.md` `## One-line` as raw intake until a brief is preserved.
|
|
19
|
+
3. Read existing `.ultra/north-star.md`, specifications, `CONTEXT.md`, relevant
|
|
20
|
+
`.ultra/decisions/`, active Change intent, evidence, Git state, and maintained docs.
|
|
19
21
|
|
|
20
22
|
## Definition of done
|
|
21
23
|
|
|
22
|
-
- Every selected
|
|
23
|
-
|
|
24
|
-
-
|
|
25
|
-
|
|
26
|
-
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
##
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
and
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
24
|
+
- Every selected lens has a cited `.ultra/research/<run-id>/<area>.md` report and its
|
|
25
|
+
canonical specification section contains the current conclusion.
|
|
26
|
+
- The accepted North Star, shared vocabulary, product baseline, and architecture
|
|
27
|
+
baseline are sufficient for the current planning boundary; unknowns stay explicit.
|
|
28
|
+
- `99-synthesis.md` names what was promoted, overturned, deferred, or left blocking.
|
|
29
|
+
- `.ultra/specs/research-distillate.md` stores the Git blob hash of each specification
|
|
30
|
+
it summarizes. A mismatch makes the distillate stale, never authoritative.
|
|
31
|
+
|
|
32
|
+
## Find the path before collecting evidence
|
|
33
|
+
|
|
34
|
+
When coverage spans several lenses or the path itself is unclear, read
|
|
35
|
+
`references/wayfinding.md` and write `.ultra/research/<run-id>/brief.md`. Skip that file
|
|
36
|
+
for one already-bounded evidence question. Wayfinding selects the smallest useful
|
|
37
|
+
coverage; it does not create workflow state or another semantic authority.
|
|
38
|
+
|
|
39
|
+
Map the brief and unresolved specification sections to seventeen focused evidence
|
|
40
|
+
lenses. Confirm the proposed coverage once with the owner. Load one reference
|
|
41
|
+
at a time; the parent holds the question map, not every step prompt.
|
|
42
|
+
|
|
43
|
+
The first six lenses have real semantic dependencies:
|
|
44
|
+
|
|
45
|
+
- `00-problem-validation` runs before `01-opportunity-discovery` because an opportunity must trace to a problem.
|
|
46
|
+
- `02-market-assessment` and `03-alternatives` are conditional lenses and may run in parallel once the boundary is known.
|
|
47
|
+
- `04-product-strategy` is the first owner checkpoint and consumes the relevant conclusions from `00` through `03`.
|
|
48
|
+
- `05-assumptions-validation` extracts load-bearing assumptions from `00` through `04` after the strategy decision.
|
|
49
|
+
|
|
50
|
+
The later groups turn that premise into product behavior (`10` through `22`), then an
|
|
51
|
+
architecture and operating baseline (`30` through `41`). The three owner checkpoints
|
|
52
|
+
remain `04-product-strategy`, `21-features-scope`, and `99-synthesis`.
|
|
53
|
+
|
|
54
|
+
Only areas with satisfied inputs may fan out through native bounded subagents. Never
|
|
55
|
+
parallelize a lens whose question depends on an unresolved earlier conclusion.
|
|
56
|
+
|
|
57
|
+
## Investigate, ask, and decide
|
|
58
|
+
|
|
59
|
+
For each selected lens:
|
|
60
|
+
|
|
61
|
+
1. Inspect reachable facts before asking. Search current primary sources when a claim
|
|
62
|
+
depends on current external reality.
|
|
63
|
+
2. Separate Observed, Verified, Decided, Inference, and Unknown; cite external claims.
|
|
64
|
+
3. Follow `../ultra-grilling/SKILL.md` when a required owner field is missing. The lens
|
|
65
|
+
supplies what to ask; Grilling supplies the one-question interaction loop.
|
|
66
|
+
4. Follow `../ultra-think/SKILL.md` for one consequential trade-off, not for mapping the
|
|
67
|
+
whole research frontier.
|
|
68
|
+
5. Follow `../ultra-domain-modeling/SKILL.md` when evidence settles a shared term. The
|
|
69
|
+
first such term creates `CONTEXT.md`; later calls sharpen it.
|
|
70
|
+
6. Write the area report, then replace the mapped specification section instead of
|
|
71
|
+
appending a second version. Git retains history.
|
|
72
|
+
|
|
73
|
+
For scoped Research inside an active Change, answer only its recorded `Research
|
|
74
|
+
Disposition` question and produce the named exit evidence. Research writes reports and
|
|
75
|
+
the mapped canonical baseline sections; it does not silently rewrite Change acceptance.
|
|
76
|
+
Return the evidence paths so `ultra-change` can reconcile the accepted intent before
|
|
77
|
+
planning when that contract must change.
|
|
78
|
+
|
|
79
|
+
If web access is unavailable, record `[UNVERIFIED: no web access]` and continue with
|
|
80
|
+
other evidence. Missing tooling lowers confidence; it does not manufacture a blocker.
|
|
81
|
+
|
|
82
|
+
## Synthesize the accepted baseline
|
|
83
|
+
|
|
84
|
+
`04-product-strategy` proposes the direction. `22-success-metrics` determines whether a
|
|
85
|
+
single North Star metric is justified or whether an observable outcome plus guardrails
|
|
86
|
+
is more honest. After the owner accepts `99-synthesis`, update `.ultra/north-star.md`,
|
|
87
|
+
the three specifications, domain language, qualifying decisions, and the distillate for
|
|
88
|
+
the first baseline. A scoped Research run updates only its mapped specification sections
|
|
89
|
+
and then refreshes the distillate's three source hashes.
|
|
90
|
+
|
|
91
|
+
Load `references/99-synthesis.md` only after selected reports exist. Read every promoted
|
|
92
|
+
file back, verify trace anchors and source hashes, and report exact unresolved gaps.
|
|
93
|
+
Recommend the next explicit public workflow from the resulting files; do not invoke it.
|
|
66
94
|
|
|
67
95
|
## When the owner decides
|
|
68
96
|
|
|
69
|
-
The owner chooses coverage, resolves the three checkpoints,
|
|
70
|
-
|
|
71
|
-
|
|
97
|
+
The owner chooses coverage, resolves the three checkpoints, accepts a North Star and
|
|
98
|
+
material deferrals, and authorizes any REDUCTION. The model establishes evidence facts,
|
|
99
|
+
selects methods, and updates accepted files inside that frame.
|
|
72
100
|
|
|
73
101
|
## References
|
|
74
102
|
|
|
103
|
+
- `references/wayfinding.md` — read only for multi-lens or unclear research paths.
|
|
75
104
|
- `references/00-problem-validation.md` through `references/05-assumptions-validation.md`
|
|
76
|
-
— product premise and strategy; load only a selected
|
|
77
|
-
- `references/10-user-personas.md` through `references/22-success-metrics.md` —
|
|
78
|
-
|
|
105
|
+
— product premise and strategy; load only a selected lens.
|
|
106
|
+
- `references/10-user-personas.md` through `references/22-success-metrics.md` — actors,
|
|
107
|
+
behavior, scope, and measurements.
|
|
79
108
|
- `references/30-architecture-context.md` through `references/41-quality-risks.md` —
|
|
80
|
-
system boundary, implementation evidence,
|
|
109
|
+
system boundary, implementation evidence, operations, and risk.
|
|
81
110
|
- `references/99-synthesis.md` — load last, after selected reports exist.
|
|
82
|
-
- `../ultra-think/references/autonomy-boundary.md` — read before
|
|
111
|
+
- `../ultra-think/references/autonomy-boundary.md` — read before reducing authority.
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Alternatives
|
|
2
2
|
|
|
3
|
-
Use for workflow step `03-
|
|
3
|
+
Use for workflow step `03-alternatives`.
|
|
4
4
|
|
|
5
5
|
## Objective
|
|
6
6
|
|
|
7
7
|
Identify the alternatives actors actually use and the consequences for strategy.
|
|
8
|
-
Alternatives
|
|
9
|
-
nothing.
|
|
8
|
+
Alternatives include direct products, adjacent tools, manual workflows, or doing
|
|
9
|
+
nothing; a competitor-only frame is too narrow.
|
|
10
10
|
|
|
11
11
|
## Evidence
|
|
12
12
|
|
|
13
13
|
- Use current product documentation, pricing, repositories, filings, or observed user
|
|
14
14
|
workflows.
|
|
15
15
|
- Evaluate only criteria that change the decision at hand.
|
|
16
|
-
- Do not create a ceremonial matrix, fixed
|
|
16
|
+
- Do not create a ceremonial matrix, fixed alternative count, or unsupported claim of
|
|
17
17
|
superiority.
|
|
18
18
|
- Distinguish a verified capability from marketing language and inference.
|
|
19
19
|
|
|
20
20
|
## Record
|
|
21
21
|
|
|
22
|
-
Update `discovery.md` with
|
|
22
|
+
Update `discovery.md` with relevant alternatives, evidence, meaningful differences,
|
|
23
23
|
switching constraints, and durable strategy implications. Record an unknown when a
|
|
24
24
|
credible alternative cannot be verified.
|
|
25
25
|
|