@open-agent-toolkit/cli 0.3.19 → 0.3.21
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/README.md +2 -1
- package/assets/agents/oat-phase-implementer.md +26 -3
- package/assets/agents/oat-reviewer.md +8 -3
- package/assets/bundle-metadata.json +1 -1
- package/assets/docs/reference/cli-reference.md +12 -7
- package/assets/docs/reference/oat-directory-structure.md +1 -0
- package/assets/docs/reference/project-artifacts.md +56 -1
- package/assets/docs/reference/project-state-machine.md +41 -7
- package/assets/docs/skills/brainstorm.md +3 -2
- package/assets/docs/skills/index.md +13 -10
- package/assets/docs/workflows/advanced/autonomy.md +3 -1
- package/assets/docs/workflows/advanced/dispatch-ceiling.md +2 -2
- package/assets/docs/workflows/advanced/workflow-gates.md +17 -4
- package/assets/docs/workflows/approvals-and-automation.md +21 -10
- package/assets/docs/workflows/choose-workflow.md +17 -9
- package/assets/docs/workflows/ideas/index.md +1 -1
- package/assets/docs/workflows/ideas/lifecycle.md +3 -2
- package/assets/docs/workflows/projects/closeout/closeout-skills.md +80 -7
- package/assets/docs/workflows/projects/closeout/pr-flow.md +7 -1
- package/assets/docs/workflows/projects/execution/execution-skills.md +16 -3
- package/assets/docs/workflows/projects/execution/implementation-execution.md +1 -1
- package/assets/docs/workflows/projects/execution/picking-up-projects.md +11 -1
- package/assets/docs/workflows/projects/lifecycle.md +108 -9
- package/assets/docs/workflows/projects/planning/hill-checkpoints.md +6 -6
- package/assets/docs/workflows/projects/planning/planning-skills.md +9 -7
- package/assets/docs/workflows/projects/planning/starting-projects.md +57 -11
- package/assets/docs/workflows/projects/reviews/index.md +22 -1
- package/assets/docs/workflows/projects/reviews/review-flavors.md +5 -3
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-brainstorm/SKILL.md +34 -9
- package/assets/skills/oat-brainstorm/references/destinations.md +6 -3
- package/assets/skills/oat-dispatch-subagents/SKILL.md +1 -1
- package/assets/skills/oat-dispatch-subagents/references/record-schema.md +6 -0
- package/assets/skills/oat-docs/SKILL.md +7 -3
- package/assets/skills/oat-pjm-review-backlog/SKILL.md +2 -2
- package/assets/skills/oat-project-autonomous/SKILL.md +9 -3
- package/assets/skills/oat-project-autonomous/references/gate-inventory.md +151 -132
- package/assets/skills/oat-project-brief/SKILL.md +1 -1
- package/assets/skills/oat-project-brief/references/brief-contract.md +465 -9
- package/assets/skills/oat-project-brief/references/docs/autonomy-contract.md +151 -132
- package/assets/skills/oat-project-brief/references/docs/gate-approval-record.md +9 -0
- package/assets/skills/oat-project-capture/SKILL.md +2 -2
- package/assets/skills/oat-project-complete/SKILL.md +14 -5
- package/assets/skills/oat-project-discover/SKILL.md +3 -2
- package/assets/skills/oat-project-document/SKILL.md +12 -6
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +151 -132
- package/assets/skills/oat-project-goal/SKILL.md +697 -0
- package/assets/skills/oat-project-goal/references/docs/autonomy-contract.md +412 -0
- package/assets/skills/oat-project-goal/references/docs/gate-approval-record.md +93 -0
- package/assets/skills/oat-project-implement/SKILL.md +1 -1
- package/assets/skills/oat-project-implement/references/completion-and-closeout.md +67 -0
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +151 -132
- package/assets/skills/oat-project-implement/references/docs/gate-approval-record.md +9 -0
- package/assets/skills/oat-project-implement/references/phase-execution.md +10 -3
- package/assets/skills/oat-project-implement/references/plan-and-resume.md +28 -1
- package/assets/skills/oat-project-lite/SKILL.md +1 -1
- package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +151 -132
- package/assets/skills/oat-project-new/SKILL.md +3 -3
- package/assets/skills/oat-project-next/SKILL.md +45 -15
- package/assets/skills/oat-project-next/references/docs/gate-approval-record.md +9 -0
- package/assets/skills/oat-project-plan/SKILL.md +14 -3
- package/assets/skills/oat-project-plan-writing/SKILL.md +6 -4
- package/assets/skills/oat-project-pr-final/SKILL.md +51 -1
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +151 -132
- package/assets/skills/oat-project-pr-progress/SKILL.md +97 -3
- package/assets/skills/oat-project-progress/SKILL.md +38 -5
- package/assets/skills/oat-project-progress/references/docs/gate-approval-record.md +9 -0
- package/assets/skills/oat-project-quick-start/SKILL.md +14 -9
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +151 -132
- package/assets/skills/oat-project-quick-start/references/docs/gate-approval-record.md +9 -0
- package/assets/skills/oat-project-reconcile/SKILL.md +31 -2
- package/assets/skills/oat-project-review-provide/SKILL.md +79 -13
- package/assets/skills/oat-project-review-receive/SKILL.md +70 -1
- package/assets/skills/oat-project-revise/SKILL.md +25 -1
- package/assets/skills/oat-project-summary/SKILL.md +60 -5
- package/assets/skills/oat-wave-execute/SKILL.md +2 -2
- package/assets/templates/state.md +1 -1
- package/dist/commands/project/closeout-check/closeout-invariant.d.ts +119 -3
- package/dist/commands/project/closeout-check/closeout-invariant.d.ts.map +1 -1
- package/dist/commands/project/closeout-check/closeout-invariant.js +454 -2
- package/dist/commands/project/closeout-check/index.d.ts +21 -3
- package/dist/commands/project/closeout-check/index.d.ts.map +1 -1
- package/dist/commands/project/closeout-check/index.js +190 -4
- package/dist/commands/project/complete-state/index.d.ts +2 -1
- package/dist/commands/project/complete-state/index.d.ts.map +1 -1
- package/dist/commands/project/complete-state/index.js +7 -1
- package/dist/commands/project/delivery/check.d.ts +66 -0
- package/dist/commands/project/delivery/check.d.ts.map +1 -0
- package/dist/commands/project/delivery/check.js +232 -0
- package/dist/commands/project/delivery/evidence.d.ts +171 -0
- package/dist/commands/project/delivery/evidence.d.ts.map +1 -0
- package/dist/commands/project/delivery/evidence.js +902 -0
- package/dist/commands/project/delivery/index.d.ts +7 -0
- package/dist/commands/project/delivery/index.d.ts.map +1 -0
- package/dist/commands/project/delivery/index.js +13 -0
- package/dist/commands/project/delivery/refresh.d.ts +110 -0
- package/dist/commands/project/delivery/refresh.d.ts.map +1 -0
- package/dist/commands/project/delivery/refresh.js +441 -0
- package/dist/commands/project/index.d.ts.map +1 -1
- package/dist/commands/project/index.js +2 -0
- package/dist/commands/project/log/append.d.ts +6 -0
- package/dist/commands/project/log/append.d.ts.map +1 -1
- package/dist/commands/project/log/append.js +6 -1
- package/dist/commands/project/new/scaffold.d.ts.map +1 -1
- package/dist/commands/project/new/scaffold.js +47 -1
- package/dist/commands/project/promote/promote.d.ts +15 -1
- package/dist/commands/project/promote/promote.d.ts.map +1 -1
- package/dist/commands/project/promote/promote.js +99 -15
- package/dist/commands/project/validate-plan/index.d.ts.map +1 -1
- package/dist/commands/project/validate-plan/index.js +10 -0
- package/dist/commands/project/validate-plan/profiles.d.ts +19 -4
- package/dist/commands/project/validate-plan/profiles.d.ts.map +1 -1
- package/dist/commands/project/validate-plan/profiles.js +153 -2
- package/dist/commands/shared/frontmatter.d.ts +1 -1
- package/dist/commands/shared/frontmatter.d.ts.map +1 -1
- package/dist/commands/shared/frontmatter.js +1 -0
- package/dist/commands/state/generate.d.ts.map +1 -1
- package/dist/commands/state/generate.js +35 -4
- package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -1
- package/dist/commands/tools/shared/pack-manifest.js +1 -0
- package/package.json +2 -2
|
@@ -15,15 +15,16 @@ to the detail.
|
|
|
15
15
|
A HiLL (human-in-the-loop lifecycle) checkpoint is a point where the agent
|
|
16
16
|
stops and waits for a person to approve before it continues.
|
|
17
17
|
|
|
18
|
-
| Mode | A person approves before code is written | Pauses during implementation
|
|
19
|
-
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
20
|
-
| No project | You direct each step yourself | None
|
|
21
|
-
| Lite | Once: the requirements and the single-phase plan | None
|
|
22
|
-
| Brief | Once: the reviewed Project Brief, after you have agreed its design in the interview | None by default; a pause happens only for a phase listed in `oat_plan_hill_phases`
|
|
23
|
-
|
|
|
24
|
-
|
|
|
25
|
-
|
|
|
26
|
-
|
|
|
18
|
+
| Mode | A person approves before code is written | Pauses during implementation | Reviews that run automatically | At the end | Never |
|
|
19
|
+
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------- |
|
|
20
|
+
| No project | You direct each step yourself | None | None; run `oat-review-provide` when you want a review | OAT opens no pull request | Not applicable |
|
|
21
|
+
| Lite | Once: the requirements and the single-phase plan | None | Plan review, phase review, final review | Opens a pull request by itself; no setting removes this step | Merges a pull request |
|
|
22
|
+
| Brief | Once: the reviewed Project Brief, after you have agreed its design in the interview | None by default; a pause happens only for a phase listed in `oat_plan_hill_phases` | Brief review, a review after every phase, final review | Same as quick | Merges a pull request |
|
|
23
|
+
| Goal | The reviewed Project Brief with its milestone split, then each later milestone's amendment, and finally your declaration that the goal is met | None by default inside a milestone; the agent stops at each re-alignment and waits for your approval | Brief review, a review after every phase, an integrated review per milestone | Each milestone opens its own pull request when `oat-project-pr-progress` delivers it; completion opens none when the deliveries cover the work | Merges a pull request |
|
|
24
|
+
| Quick | You confirm the requirements (or the lightweight design). No plan-approval prompt: the plan is marked ready after an automatic review | First run lists the phases and asks where to stop; suggested: after every phase | Plan review, a review after every phase, final review | Opens a pull request by itself only if `workflow.postImplementSequence` asks | Merges a pull request |
|
|
25
|
+
| Spec-driven | Discovery, then the requirements and design. Planning asks you in chat to confirm the task breakdown, but no plan approval is recorded; the plan is marked ready after an automatic review | Same as quick | Same as quick | Same as quick | Merges a pull request |
|
|
26
|
+
| Imported plan | No approval step; OAT normalizes your plan and reviews it automatically | Same as quick | Same as quick | Same as quick | Merges a pull request |
|
|
27
|
+
| Autonomous run | None; it answers its own questions and stops only at defined boundaries | None; it approves the final checkpoint itself after a passing final review | All of the above, plus a review at every checkpoint | Opens a pull request by default | Merges or force-pushes |
|
|
27
28
|
|
|
28
29
|
Phase reviews need no person. The final review always runs, but an interactive
|
|
29
30
|
run first asks how to run it unless `workflow.reviewExecutionModel` is set. If
|
|
@@ -51,6 +52,12 @@ What does and does not give a person a say on the plan:
|
|
|
51
52
|
interview reaches explicit design alignment first, so approval confirms a
|
|
52
53
|
design you already agreed to; the artifact review and any configured
|
|
53
54
|
`oat-project-brief` gate run on the committed brief before you approve.
|
|
55
|
+
- **Goal:** the first approval covers the reviewed Project Brief and its
|
|
56
|
+
milestone split. Each later milestone is approved separately, at
|
|
57
|
+
re-alignment, after its amendment is reviewed and gated; the approval is
|
|
58
|
+
recorded as that milestone's `plan` gate carrier in `state.md`. The goal ends
|
|
59
|
+
only when you declare it met, and the declaration records an audit of every
|
|
60
|
+
outcome. Autonomous runs never start or continue a goal project.
|
|
54
61
|
- **Spec-driven:** `/oat-project-plan` asks "Does this breakdown make sense? Any
|
|
55
62
|
tasks missing?" in the chat and revises until you confirm. That confirmation
|
|
56
63
|
is not recorded as an approval, and the automatic review that follows can
|
|
@@ -128,7 +135,11 @@ and any budget that runs out adds one read-only complexity-review run.
|
|
|
128
135
|
pushes your branch after archiving a synced project, whether or not it opens
|
|
129
136
|
a pull request. Autonomous runs also push the branch, without force, after
|
|
130
137
|
each lifecycle step such as planning and implementation. See
|
|
131
|
-
[Autonomous Project Execution](advanced/autonomy.md).
|
|
138
|
+
[Autonomous Project Execution](advanced/autonomy.md). In a goal project,
|
|
139
|
+
`oat-project-pr-progress` pushes the branch and opens each milestone's pull
|
|
140
|
+
request once the milestone's evidence checks fresh, and
|
|
141
|
+
`oat-project-complete` opens none when the registered deliveries already
|
|
142
|
+
cover every accepted phase, even with `workflow.createPrOnComplete` set.
|
|
132
143
|
|
|
133
144
|
## Set it up the way you want
|
|
134
145
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Choose a Workflow
|
|
3
|
-
description: Choose how to run tracked, resumable work in OAT, from no project to lite, brief, quick, spec-driven, or imported projects, and what each mode does at the end.
|
|
3
|
+
description: Choose how to run tracked, resumable work in OAT, from no project to lite, brief, goal, quick, spec-driven, or imported projects, and what each mode does at the end.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Choose a Workflow
|
|
@@ -49,6 +49,7 @@ Stay with direct CLI usage when:
|
|
|
49
49
|
- CLI only: direct commands, no tracked project artifacts
|
|
50
50
|
- Lite mode: a batched interview and one approval produce a single-phase `plan.md` for a single-sitting change
|
|
51
51
|
- Brief mode: a design-aligned interview produces one reviewed Project Brief whose phases carry intent and exit evidence instead of tasks
|
|
52
|
+
- Goal mode: a brief whose phases are grouped into milestones, each delivered as its own pull request and followed by a re-alignment, closed by an explicit declaration audited against the brief's outcomes
|
|
52
53
|
- Quick mode: tracked work with a lighter upfront planning path
|
|
53
54
|
- Spec-driven mode: explicit discovery, requirements, design, and plan artifacts
|
|
54
55
|
- Import mode: an externally-authored plan imported into OAT for tracked execution
|
|
@@ -79,14 +80,15 @@ it by running that mode's entry skill, and the skill creates the project for
|
|
|
79
80
|
you. An OAT project is a folder of tracked files (plan, state, reviews) that lets
|
|
80
81
|
an agent pick the work up again in a later session.
|
|
81
82
|
|
|
82
|
-
| Mode | Start it with | Choose it when
|
|
83
|
-
| ----------- | ----------------------------------------------- |
|
|
84
|
-
| No project | No skill; ask your agent or run CLI commands | The work is small, or is just provider sync or a single CLI command
|
|
85
|
-
| Lite | `/oat-project-lite` | The change fits in one sitting and the outcome is clear
|
|
86
|
-
| Brief | `/oat-project-brief` | The work is one delivery whose outcome and design you can agree in conversation
|
|
87
|
-
|
|
|
88
|
-
|
|
|
89
|
-
|
|
|
83
|
+
| Mode | Start it with | Choose it when | What you give up | At the end |
|
|
84
|
+
| ----------- | ----------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
85
|
+
| No project | No skill; ask your agent or run CLI commands | The work is small, or is just provider sync or a single CLI command | Resuming later, a tracked plan, and lifecycle reviews. Ad-hoc reviews still work | OAT pushes nothing and opens no pull request |
|
|
86
|
+
| Lite | `/oat-project-lite` | The change fits in one sitting and the outcome is clear | Discovery and design documents, multiple phases, and approval pauses between phases. You approve one plan, once | Always pushes your current branch and opens a pull request by itself; no setting removes this step |
|
|
87
|
+
| Brief | `/oat-project-brief` | The work is one delivery whose outcome and design you can agree in conversation | Discovery and design documents and an up-front task list. Phases state intent and exit evidence; tasks are recorded as the work runs | Same as quick |
|
|
88
|
+
| Goal | `/oat-project-goal` | The outcome needs several deliveries over time, and you can agree the first milestone in conversation | The same as brief, plus an approval per milestone and a final declaration that the goal is met | Each milestone's pull request opens when `oat-project-pr-progress` delivers it; any phases no delivery covers go out through `oat-project-pr-final`, and completion opens no extra pull request |
|
|
89
|
+
| Quick | `/oat-project-quick-start` | The work is bounded and the requirements are clear | A formal requirements document (`spec.md`). Design is optional | Pushes your branch and opens a pull request only when `workflow.postImplementSequence` asks for it, or in an autonomous run |
|
|
90
|
+
| Spec-driven | `/oat-project-new` | The requirements are unclear, or the change cuts across many parts of the code | Speed: you approve discovery and design before any planning or code | Same as quick |
|
|
91
|
+
| Import | `/oat-project-import-plan` with the plan's path | A plan already exists in another tool or document | OAT's own discovery and design steps | Same as quick |
|
|
90
92
|
|
|
91
93
|
Type the skill names in your coding agent's chat, not a terminal; Codex uses
|
|
92
94
|
`$` instead of `/`. No mode ever merges a pull request. Separately,
|
|
@@ -113,6 +115,12 @@ is what holds the planning conversation, so start with the skill.
|
|
|
113
115
|
task as it happens rather than planning them all first. Promote it to quick
|
|
114
116
|
with `oat project promote <path> --to quick` if you later want a maintained
|
|
115
117
|
task plan.
|
|
118
|
+
- If the outcome needs more than one delivery, such as a first version now and
|
|
119
|
+
a follow-up once you have seen it used, choose goal. You approve one brief
|
|
120
|
+
with a milestone split, then each milestone is delivered as its own pull
|
|
121
|
+
request and re-aligned before the next one starts; you declare the goal met
|
|
122
|
+
at the end. Goal is never selected by an autonomous run, because each
|
|
123
|
+
milestone approval and the final declaration need you.
|
|
116
124
|
- If your team is building a feature with agreed, bounded requirements, choose
|
|
117
125
|
quick. A long task list alone does not call for a formal spec.
|
|
118
126
|
- If the change is high-risk or regulated, or its requirements are still being
|
|
@@ -37,4 +37,4 @@ If the thought is still pre-shape — you don't know whether it should land as a
|
|
|
37
37
|
|
|
38
38
|
## Promotion Path
|
|
39
39
|
|
|
40
|
-
When an idea becomes concrete, summarize it and then start a tracked OAT project in lite, quick, or spec-driven mode depending on scope and design risk. Lite suits a single-sitting change and seeds `plan.md` directly; quick and spec-driven seed `discovery.md` instead.
|
|
40
|
+
When an idea becomes concrete, summarize it and then start a tracked OAT project in lite, brief, goal, quick, or spec-driven mode depending on scope and design risk. Lite suits a single-sitting change and seeds `plan.md` directly; brief and goal write their Project Brief into `plan.md` through an interview; quick and spec-driven seed `discovery.md` instead.
|
|
@@ -63,8 +63,9 @@ Where to start:
|
|
|
63
63
|
- **Worth exploring:** `oat-idea-new`. `oat-idea-ideate` resumes an idea, can
|
|
64
64
|
start one from a scratchpad seed, and can reopen a summarized idea.
|
|
65
65
|
- **Scoped work for later:** `oat-pjm-add-backlog-item` (needs `oat pjm init`).
|
|
66
|
-
- **Ready to build:** `oat-project-lite`, `oat-project-
|
|
67
|
-
`oat-project-
|
|
66
|
+
- **Ready to build:** `oat-project-lite`, `oat-project-brief`,
|
|
67
|
+
`oat-project-goal`, `oat-project-quick-start`, `oat-project-new`, or
|
|
68
|
+
`oat-project-import-plan` for a plan written elsewhere.
|
|
68
69
|
|
|
69
70
|
Optional moves:
|
|
70
71
|
|
|
@@ -131,6 +131,28 @@ For a synced project, project artifacts are published to the project ref with
|
|
|
131
131
|
refreshes project metadata. Declining leaves the description available without
|
|
132
132
|
claiming a PR exists.
|
|
133
133
|
|
|
134
|
+
**Goal projects:** in a goal project a progress PR is a milestone delivery,
|
|
135
|
+
and this skill registers it. Its scope is the router's `deliver mNN` (or
|
|
136
|
+
`deliver mNN/dNN`) context or a pending `oat_goal_recovery` record at stage
|
|
137
|
+
`delivering`: the milestone's ordered phase set, or a registered delivery's
|
|
138
|
+
frozen scope, never a `pNN-pMM` range or commit labels. The description's Git
|
|
139
|
+
range runs from the set's first anchored base to its last anchored head and
|
|
140
|
+
names any other milestone's phases that fall inside it. In place of the
|
|
141
|
+
optional PR question, the skill runs `oat project delivery refresh` when
|
|
142
|
+
deliveries exist and registers only when
|
|
143
|
+
`oat project delivery check --subject <mNN|dNN>` reports `status: ok`. It
|
|
144
|
+
commits a `registering` registry entry before creating anything, then creates
|
|
145
|
+
the PR, or on resume attaches the single PR that `gh pr list` finds for the
|
|
146
|
+
head branch (more than one match stops at `oat-project-reconcile`). It then
|
|
147
|
+
records the member, `status: open`, and `oat_milestone_status: delivered`, and
|
|
148
|
+
appends one structural project-log entry. Stale review or exit-gate evidence
|
|
149
|
+
stops before registration: for the active milestone the skill writes
|
|
150
|
+
`oat_milestone_status: reviewing` and an `oat_goal_recovery` record at the
|
|
151
|
+
stage the missing evidence names; for an older milestone it writes only the
|
|
152
|
+
recovery record. A milestone that already has a registered delivery is
|
|
153
|
+
re-checked and returned to `delivered` when its evidence is fresh, never
|
|
154
|
+
registered twice.
|
|
155
|
+
|
|
134
156
|
**Next step:** Review the description and choose whether to open the progress
|
|
135
157
|
PR. Continue remaining project tasks through `oat-project-implement`.
|
|
136
158
|
|
|
@@ -150,8 +172,9 @@ inputs select its destination and title.
|
|
|
150
172
|
**Prerequisites:** Needs an active OAT project: yes. If no project is active,
|
|
151
173
|
the skill asks for the project name and sets that project as active. The
|
|
152
174
|
project needs `plan.md`. Spec-driven mode also requires `spec.md` and `design.md`. Quick,
|
|
153
|
-
import, lite, and
|
|
154
|
-
`final` code-review event in the plan's Reviews
|
|
175
|
+
import, lite, brief, and goal accept their mode-appropriate reduced artifacts.
|
|
176
|
+
Outside goal mode, the latest `final` code-review event in the plan's Reviews
|
|
177
|
+
ledger should be `passed`.
|
|
155
178
|
Autonomous execution stops if it is not passed. Interactive execution warns
|
|
156
179
|
and asks before proceeding anyway.
|
|
157
180
|
|
|
@@ -172,6 +195,19 @@ and base branch when you did not pass them, the only question it asks is
|
|
|
172
195
|
whether to continue when the latest final review has not passed. It never
|
|
173
196
|
merges the PR.
|
|
174
197
|
|
|
198
|
+
**Goal projects:** in a goal project this skill is the terminal delivery
|
|
199
|
+
registration owner, not a second project PR. It runs its own registration step
|
|
200
|
+
in place of the final-review check and PR creation described above. It
|
|
201
|
+
requires `oat_goal_status: declared_met` and a valid outcome audit, read
|
|
202
|
+
through `oat project closeout-check`; any refusal other than `phase-uncovered`
|
|
203
|
+
routes to the skill named in `nextOwner.skill`. When no accepted phase is
|
|
204
|
+
uncovered, it creates no PR and writes no state, because delivery coverage
|
|
205
|
+
already satisfies the `pr` step. Otherwise it registers one terminal delivery
|
|
206
|
+
per milestone that owns uncovered accepted phases, in milestone order, through
|
|
207
|
+
the same registration contract as `oat-project-pr-progress`. Deliveries
|
|
208
|
+
registered from one head branch share its pull request. Coverage completes
|
|
209
|
+
when every terminal delivery reaches its agreed endpoint.
|
|
210
|
+
|
|
175
211
|
**Example scenario:** Export filters and audit reporting are implemented, the
|
|
176
212
|
latest final review has passed, and you have authorized publication. Final PR
|
|
177
213
|
summarizes the complete change, including review evidence and verification.
|
|
@@ -351,6 +387,17 @@ implementation tracking, and state are updated for execution. Inline requests
|
|
|
351
387
|
are not severity-triaged. Structured GitHub feedback and review artifacts route
|
|
352
388
|
through their corresponding review-receive skills and use those contracts.
|
|
353
389
|
|
|
390
|
+
**Goal projects:** inline feedback needs an explicit target before anything is
|
|
391
|
+
written: a milestone or delivery identity (`mNN` or `mNN/dNN`). The skill asks
|
|
392
|
+
for it when you did not name it, and never infers it from the open PR's commit
|
|
393
|
+
labels. The revision is a phase-only `p-revN` appended to that milestone's
|
|
394
|
+
`## Milestones` row; a registered delivery's frozen scope is never edited. The
|
|
395
|
+
target's exit carrier, and a registered target delivery's integrated review,
|
|
396
|
+
are marked stale. When the target is the active milestone, the skill returns
|
|
397
|
+
it to `oat_milestone_status: implementing`. Feedback on an older milestone
|
|
398
|
+
creates or advances an `oat_goal_recovery` record instead and leaves the
|
|
399
|
+
active milestone's status and execution pointer unchanged.
|
|
400
|
+
|
|
354
401
|
**Next step:** If revise did not continue into implementation on its own, run
|
|
355
402
|
`oat-project-implement` to execute the revision tasks. After verification,
|
|
356
403
|
update the open PR and its review evidence. Revise itself does not write code
|
|
@@ -378,9 +425,13 @@ path. The target needs `state.md` and at least `plan.md` or
|
|
|
378
425
|
`implementation.md`. Completed
|
|
379
426
|
implementation provides shipped evidence. If only a plan exists, the skill can
|
|
380
427
|
proceed but must identify recommendations as based on planned work rather than
|
|
381
|
-
verified implementation. Lite and
|
|
382
|
-
spec, or design; a brief's documentation sources are the Project
|
|
383
|
-
per-phase journal.
|
|
428
|
+
verified implementation. Lite, brief, and goal projects do not require
|
|
429
|
+
discovery, spec, or design; a brief's documentation sources are the Project
|
|
430
|
+
Brief and the per-phase journal. A goal project adds two shipped-result
|
|
431
|
+
sources from `state.md`: the outcome audit (`oat_goal_outcome_audit`) and the
|
|
432
|
+
delivery registry (`oat_deliveries`). The skill documents only what those
|
|
433
|
+
deliveries shipped and names audited deferrals rather than documenting them as
|
|
434
|
+
delivered.
|
|
384
435
|
|
|
385
436
|
**Example scenario:** Export filters shipped, but the user guide still describes
|
|
386
437
|
only unfiltered exports. Document verifies the actual endpoint and CLI behavior,
|
|
@@ -435,7 +486,9 @@ Lite uses its plan contract and implementation results without requiring
|
|
|
435
486
|
discovery, spec, or design artifacts. Brief needs at least one accepted
|
|
436
487
|
phase-unit and draws on the brief's Goal, Outcomes, Approach, and Decisions
|
|
437
488
|
plus the journal; its staleness fingerprint changes when a phase is accepted,
|
|
438
|
-
not when execution records change.
|
|
489
|
+
not when execution records change. A goal summary's fingerprint also covers
|
|
490
|
+
the deliveries observed at their agreed endpoint, so a delivery newly reaching
|
|
491
|
+
its endpoint makes the summary stale.
|
|
439
492
|
|
|
440
493
|
**Example scenario:** The first export phase is delivered, and another engineer
|
|
441
494
|
will own the reporting phase next week. Summary records the shipped filter
|
|
@@ -471,6 +524,15 @@ It only offers, and does not create without your answer, backlog items for
|
|
|
471
524
|
follow-up entries in the project log. It does not invent tasks or silently
|
|
472
525
|
rewrite the execution plan.
|
|
473
526
|
|
|
527
|
+
In a goal project, while `oat project closeout-check` still reports
|
|
528
|
+
`phase-uncovered` and the closeout sequence has not yet run its `pr` step, the
|
|
529
|
+
skill writes only files in the project directory. It defers the repository
|
|
530
|
+
ledger roll-up and decision-record promotion and reports them as deferred,
|
|
531
|
+
because a repository-level commit after the terminal milestone's reviewed
|
|
532
|
+
revision would make the terminal delivery undeliverable. The next summary run
|
|
533
|
+
after `phase-uncovered` clears performs them: a `summary` step configured after
|
|
534
|
+
`pr`, or the summary refresh at completion. Do not decline that refresh.
|
|
535
|
+
|
|
474
536
|
**Next step:** Use the summary as a source for documentation, PR description,
|
|
475
537
|
and later project handoff. Refresh it after revisions. Complete the project
|
|
476
538
|
only when its lifecycle closeout requirements are satisfied.
|
|
@@ -497,7 +559,12 @@ you invoke it by name. Before it changes anything, it runs a read-only check
|
|
|
497
559
|
that the project's stored closeout sequence is finished (or that the project
|
|
498
560
|
has none). If an implementation closeout is still incomplete, the skill sends
|
|
499
561
|
you back to `oat-project-implement`; no phase-status value bypasses that
|
|
500
|
-
check.
|
|
562
|
+
check. For a goal project the check also applies the goal boundary: a valid
|
|
563
|
+
declaration, an exhaustive outcome audit, resolved extractions, an observation
|
|
564
|
+
of every terminal delivery's pull requests, and delivery coverage of every
|
|
565
|
+
accepted phase. A goal refusal routes to the skill it names in
|
|
566
|
+
`nextOwner.skill`, such as `oat-project-goal`, `oat-project-pr-progress`, or
|
|
567
|
+
`oat-project-pr-final`, rather than to implement alone.
|
|
501
568
|
|
|
502
569
|
**What it does without asking:** the skill asks once, then acts. One combined
|
|
503
570
|
prompt asks you to confirm completion and, where they apply, whether to
|
|
@@ -518,6 +585,12 @@ runs `oat-project-summary`, with its own commit and decision promotion, and an
|
|
|
518
585
|
archive runs `oat project archive`, including an S3 upload when
|
|
519
586
|
`archive.s3SyncOnComplete` is enabled.
|
|
520
587
|
|
|
588
|
+
In a goal project whose `pr` step is satisfied by delivery coverage, the skill
|
|
589
|
+
creates no PR, even with `workflow.createPrOnComplete: true`, and reports
|
|
590
|
+
`PR on complete: satisfied by goal delivery coverage`. It opens a separate
|
|
591
|
+
bookkeeping PR for the completion commits only when you ask for one in that
|
|
592
|
+
run, and never counts it as a goal delivery.
|
|
593
|
+
|
|
521
594
|
**Example scenario:** The export project has passed final verification and its
|
|
522
595
|
stored closeout sequence, but the PR is still open. Complete finalizes lifecycle
|
|
523
596
|
state and, if selected, archives the durable artifacts and updates the existing
|
|
@@ -10,6 +10,10 @@ Two PR paths:
|
|
|
10
10
|
- `oat-project-pr-progress`: progress PR for one phase or partial scope
|
|
11
11
|
- `oat-project-pr-final`: final project PR into `main`
|
|
12
12
|
|
|
13
|
+
In a goal project both skills register deliveries instead: a progress PR is a
|
|
14
|
+
milestone delivery, and pr-final registers terminal deliveries rather than a
|
|
15
|
+
separate final PR.
|
|
16
|
+
|
|
13
17
|
## Inputs
|
|
14
18
|
|
|
15
19
|
Expected artifacts:
|
|
@@ -19,13 +23,15 @@ Expected artifacts:
|
|
|
19
23
|
- Optional (quick/import): `spec.md`, `design.md`
|
|
20
24
|
- Not expected (lite): `discovery.md`, `spec.md`, or `design.md`
|
|
21
25
|
- Not expected (brief): `discovery.md`, `spec.md`, or `design.md`; the Project Brief in `plan.md` and the per-phase journal in `implementation.md` are the sources
|
|
26
|
+
- Not expected (goal): as brief; the Project Brief with its `## Milestones` table, the journal, and the goal state in `state.md` are the sources
|
|
22
27
|
- Recommended (quick mode): `discovery.md`
|
|
23
28
|
- Recommended (import mode): `references/imported-plan.md`
|
|
24
29
|
- Recommended: `implementation.md` final summary
|
|
25
30
|
- Recommended: `summary.md` — pr-final treats it as the primary source for the PR Summary section and automatically refreshes it first when missing or stale
|
|
26
31
|
- Lite source row: `oat-project-pr-final` uses the plan's Summary, Decisions, and Validation Criteria plus the `implementation.md` Final Summary; it does not create `summary.md` unless lite closeout explicitly opts in
|
|
27
32
|
- Brief source row: `summary.md` is required as in quick; its sources are the brief's Goal, Outcomes, Approach, and Decisions, the journal's accepted phases and Outcomes audit, and the review rows. Progress PRs scope a phase or `pNN-pMM` run from the journal's `**Base:**`/`**Head:**` anchors rather than a commit-message search
|
|
28
|
-
-
|
|
33
|
+
- Goal source row: a progress PR is a milestone delivery. Its scope is the milestone's ordered phase set, or a registered delivery's frozen scope; its Git range runs from the set's first anchored base to its last anchored head and discloses other milestones' phases inside it. The PR is created only after `oat project delivery check` reports `status: ok` and a `registering` entry is committed to `oat_deliveries`. pr-final registers terminal deliveries for uncovered accepted phases instead of opening a separate final PR
|
|
34
|
+
- Required gate for final PR: review table final row should be `passed` (goal: pr-final does not read the final row; each delivery it registers needs a passed, fresh integrated review and an allowed, fresh exit carrier instead)
|
|
29
35
|
|
|
30
36
|
## Output
|
|
31
37
|
|
|
@@ -92,7 +92,7 @@ choosing `Leave Unresolved` stops the run. A non-interactive run stops with
|
|
|
92
92
|
needs your authorization, the skill asks once before any work; if you decline,
|
|
93
93
|
it runs the phases inline in the current session instead.
|
|
94
94
|
|
|
95
|
-
**Questions on the first run:** Except in a lite or
|
|
95
|
+
**Questions on the first run:** Except in a lite, brief, or goal project, the first run lists
|
|
96
96
|
the plan's phases and asks which checkpoint behavior you want: stop after
|
|
97
97
|
every phase (the default), after specific phases, or only after the final
|
|
98
98
|
phase. Setting `workflow.hillCheckpointDefault` to `every` or `final` answers
|
|
@@ -100,8 +100,8 @@ this in advance. It then asks whether to run an extra lifecycle review
|
|
|
100
100
|
automatically at each checkpoint, unless `workflow.autoReviewAtHillCheckpoints`
|
|
101
101
|
is set. Both answers are written to `plan.md` and are not asked again when you
|
|
102
102
|
resume. A lite project has no checkpoints and skips both questions. A brief
|
|
103
|
-
project skips them too unless its `oat_plan_hill_phases` lists phases
|
|
104
|
-
explicitly; for
|
|
103
|
+
or goal project skips them too unless its `oat_plan_hill_phases` lists phases
|
|
104
|
+
explicitly; for those modes, `[]` means no checkpoints.
|
|
105
105
|
|
|
106
106
|
**Brief projects:** Each `## Phase pNN:` block in the brief is one
|
|
107
107
|
phase-unit with Intent and Exit evidence instead of planned tasks. The root
|
|
@@ -113,6 +113,19 @@ the root writes `**Status:** completed` once review dispositions and selected
|
|
|
113
113
|
gates settle. Progress and the next-phase decision count phase-units, never
|
|
114
114
|
records.
|
|
115
115
|
|
|
116
|
+
**Goal projects:** every brief rule above applies, and each run gets a scope
|
|
117
|
+
from the router: the active milestone's ordered phase set, a recovery scope
|
|
118
|
+
for an older delivery, or the terminal scope after the goal is declared met.
|
|
119
|
+
Implement never widens a scope to another milestone's phases. When every phase
|
|
120
|
+
in the milestone's scope is accepted, it runs the scoped milestone closeout:
|
|
121
|
+
the implement exit gate, written to `oat_milestone_gates[mNN].exit`, then
|
|
122
|
+
`oat_milestone_status: reviewing` and a hand-off to
|
|
123
|
+
`oat-project-review-provide` with `code mNN: <ordered phase ids>`. It never
|
|
124
|
+
activates a milestone, registers a delivery, or writes `declared_met`.
|
|
125
|
+
Terminal closeout starts only after the declaration, and when delivery
|
|
126
|
+
coverage already holds at the `pr` step's position it records that step as
|
|
127
|
+
`satisfied_by: { pr: delivery-coverage }`.
|
|
128
|
+
|
|
116
129
|
**What it does without asking:** After those questions, the run continues
|
|
117
130
|
until a checkpoint, a blocker or the end of the plan without asking again,
|
|
118
131
|
except for how to run the final code review (described after this list). It:
|
|
@@ -16,7 +16,7 @@ and updates project state.
|
|
|
16
16
|
in dependency order.
|
|
17
17
|
- **Task boundary:** each task still produces exactly one bounded, verified
|
|
18
18
|
commit.
|
|
19
|
-
- **Brief phase-units:** in a brief project each phase carries Intent and Exit
|
|
19
|
+
- **Brief phase-units:** in a brief or goal project each phase carries Intent and Exit
|
|
20
20
|
evidence instead of tasks; execution records are opened in the journal as
|
|
21
21
|
work happens, and the phase's `**Base:**`/`**Head:**` anchors scope its
|
|
22
22
|
review.
|
|
@@ -30,7 +30,7 @@ instead of `/`):
|
|
|
30
30
|
summary that `/oat-repo-knowledge-index` writes under
|
|
31
31
|
`.oat/repo/knowledge/`. If that folder has no Markdown file, progress tells
|
|
32
32
|
you to run `/oat-repo-knowledge-index` and stops without a project report,
|
|
33
|
-
whatever the project's mode; quick, lite, brief and imported projects never
|
|
33
|
+
whatever the project's mode; quick, lite, brief, goal and imported projects never
|
|
34
34
|
needed the index before, so this can be the first time you see it. Run
|
|
35
35
|
`/oat-repo-knowledge-index` once and then run progress again, or skip to
|
|
36
36
|
step 3: `/oat-project-next` itself does not check for the index (spec-driven
|
|
@@ -90,6 +90,16 @@ phase-units remain in the active scope") before every later check. The
|
|
|
90
90
|
implementation it prints a note that `oat project status` and
|
|
91
91
|
`oat-project-next` are the authority for brief projects.
|
|
92
92
|
|
|
93
|
+
For a goal project, the router also reads the milestone status, any pending
|
|
94
|
+
`oat_goal_recovery` record, the milestone gate carriers, and the delivery
|
|
95
|
+
registry. It sends `aligning` and `delivered` milestones to `oat-project-goal`,
|
|
96
|
+
scopes `oat-project-implement` to the active milestone's phases (or a recovery
|
|
97
|
+
scope), routes the integrated review as `code mNN: …` to
|
|
98
|
+
`oat-project-review-provide`, and routes registration as `deliver mNN` to
|
|
99
|
+
`oat-project-pr-progress`. In the implement phase the dashboard prints a goal
|
|
100
|
+
note that `oat project status` and `oat-project-next` are the authority for
|
|
101
|
+
goal milestone routing.
|
|
102
|
+
|
|
93
103
|
## What travels
|
|
94
104
|
|
|
95
105
|
- The project ref carries the complete active artifact tree and its history.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Lifecycle
|
|
3
|
-
description: 'End-to-end phase flow from discovery through completion: spec-driven, quick, lite, brief, and import paths.'
|
|
3
|
+
description: 'End-to-end phase flow from discovery through completion: spec-driven, quick, lite, brief, goal, and import paths.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Lifecycle
|
|
@@ -29,9 +29,9 @@ For a one-page view of where people approve and what runs automatically in each
|
|
|
29
29
|
|
|
30
30
|
## Quick Look
|
|
31
31
|
|
|
32
|
-
- What it does: explains the end-to-end lifecycle for tracked OAT projects, including alternate quick, lite, brief, and import lanes.
|
|
32
|
+
- What it does: explains the end-to-end lifecycle for tracked OAT projects, including alternate quick, lite, brief, goal, and import lanes.
|
|
33
33
|
- When to use it: when you need the actual project execution model, not just a high-level overview of workflow mode.
|
|
34
|
-
- Primary entry points: `oat-project-new`, `oat-project-quick-start`, `oat-project-lite`, `oat-project-brief`, `oat-project-import-plan`, `oat-project-implement`
|
|
34
|
+
- Primary entry points: `oat-project-new`, `oat-project-quick-start`, `oat-project-lite`, `oat-project-brief`, `oat-project-goal`, `oat-project-import-plan`, `oat-project-implement`
|
|
35
35
|
|
|
36
36
|
## Lifecycle Map
|
|
37
37
|
|
|
@@ -51,9 +51,10 @@ For a one-page view of where people approve and what runs automatically in each
|
|
|
51
51
|
DOC --> C["Complete"]
|
|
52
52
|
```
|
|
53
53
|
|
|
54
|
-
This map shows the spec-driven default. The quick, lite, brief, import,
|
|
55
|
-
capture lanes each skip part of it — see [Lane diagrams](#lane-diagrams)
|
|
56
|
-
Lite and
|
|
54
|
+
This map shows the spec-driven default. The quick, lite, brief, goal, import,
|
|
55
|
+
and capture lanes each skip part of it — see [Lane diagrams](#lane-diagrams)
|
|
56
|
+
below. Lite, brief, and goal in particular have no discovery, spec, or design
|
|
57
|
+
step at all.
|
|
57
58
|
|
|
58
59
|
## Post-implementation flow
|
|
59
60
|
|
|
@@ -345,6 +346,16 @@ See [Implementation Execution](execution/implementation-execution.md) for the fu
|
|
|
345
346
|
4. `oat-project-pr-final`, through the same post-implementation sequence as quick
|
|
346
347
|
5. Optional `oat project promote <project-path> --to quick` when you want a maintained task plan instead
|
|
347
348
|
|
|
349
|
+
### Goal lane steps
|
|
350
|
+
|
|
351
|
+
1. `oat-project-goal` runs the brief interview for the whole outcome, writes one Project Brief whose `## Milestones` table assigns every phase to exactly one milestone (`| m01 | p01, p02 |`), runs the artifact review and any configured `oat-project-goal` gate, asks for one approval, and activates the first milestone
|
|
352
|
+
2. Implement: `oat-project-implement` executes the active milestone's phase-units as brief does, then runs the milestone closeout, whose `exit` gate runs before the integrated review
|
|
353
|
+
3. `oat-project-review-provide` reviews the milestone as `code mNN: <ordered phases>`; `oat-project-review-receive` moves a clean review to delivery
|
|
354
|
+
4. `oat-project-pr-progress` checks the evidence with `oat project delivery check`, registers the delivery (`dNN`) in `oat_deliveries`, and opens its pull request
|
|
355
|
+
5. `oat-project-goal` re-aligns at `delivered`: it refreshes delivery observations, captures learnings, amends the brief with the next milestone, takes the amendment through review and approval, and activates it once the previous delivery reaches its agreed endpoint
|
|
356
|
+
6. Repeat from step 2 per milestone; when the user declares the goal met, `oat-project-goal` records an exhaustive outcome audit, `oat-project-pr-final` registers terminal deliveries for any accepted phases no delivery covers, and `oat-project-complete` closes out once every accepted phase is covered
|
|
357
|
+
7. Optional `oat project promote <project-path> --to quick` at a settled delivery boundary
|
|
358
|
+
|
|
348
359
|
### Import lane steps
|
|
349
360
|
|
|
350
361
|
1. `oat-project-import-plan` (checks inherited git state before import scaffolding so sync-generated or unrelated dirty files do not silently roll into project bookkeeping)
|
|
@@ -559,6 +570,94 @@ phases (`invalid-brief-plan`), or an accepted phase has neither a completed
|
|
|
559
570
|
record nor a `**Head:**` anchor to synthesize from (`missing-phase-head`, which
|
|
560
571
|
lists the refused phases).
|
|
561
572
|
|
|
573
|
+
### Goal lane
|
|
574
|
+
|
|
575
|
+
=== "Diagram"
|
|
576
|
+
|
|
577
|
+

|
|
578
|
+

|
|
579
|
+
|
|
580
|
+
=== "Mermaid source"
|
|
581
|
+
|
|
582
|
+
```mermaid
|
|
583
|
+
flowchart TD
|
|
584
|
+
A["Alignment interview\n(whole outcome, milestone split)"] --> B["Project Brief + Milestones\n(review, gate, one approval)"]
|
|
585
|
+
B --> M["Activate milestone mNN\n(oat-project-goal)"]
|
|
586
|
+
M --> I["Phase-units\n(implement, per-phase reviews)"]
|
|
587
|
+
I --> X["Milestone closeout\n(exit gate before the review)"]
|
|
588
|
+
X --> R["Integrated review\n(code mNN: ordered phases)"]
|
|
589
|
+
R --> D["Delivery dNN\n(oat-project-pr-progress)"]
|
|
590
|
+
D --> RA["Re-alignment\n(learnings, amendment, approval)"]
|
|
591
|
+
RA -->|Next milestone at endpoint| M
|
|
592
|
+
RA --> T["Terminal declaration\n(exhaustive outcome audit)"]
|
|
593
|
+
T --> C["Coverage closeout\n(pr-final for uncovered, complete)"]
|
|
594
|
+
D -->|Settled boundary| Q["Promote to Quick"]
|
|
595
|
+
```
|
|
596
|
+
|
|
597
|
+
A goal project is a brief project delivered in milestones. The Project Brief
|
|
598
|
+
carries a `## Milestones` table (`| Milestone | Phases |`) in which every
|
|
599
|
+
phase, including appended `p-revN` revision phases, belongs to exactly one
|
|
600
|
+
milestone; `oat project validate-plan` reports membership errors as `goal-`
|
|
601
|
+
codes. Each milestone is approved through its own `plan` gate carrier in
|
|
602
|
+
`state.md` (`oat_milestone_gates.mNN.plan`): the first approval also marks
|
|
603
|
+
`plan.md` complete, and every later amendment is approved only by the next
|
|
604
|
+
milestone's carrier.
|
|
605
|
+
|
|
606
|
+
**Milestone delivery.** For goal the end of the brief ladder is reordered: the
|
|
607
|
+
milestone's `exit` gate runs at closeout before the integrated review, and
|
|
608
|
+
queued fixes invalidate both, so the gate runs again before the next review.
|
|
609
|
+
The integrated review names its milestone (or delivery) and the exact ordered
|
|
610
|
+
phase set, for example `code m01: p01, p02, p-rev1`; that set is never derived
|
|
611
|
+
from a first–last range. `oat-project-pr-progress` registers a delivery only
|
|
612
|
+
when `oat project delivery check --subject <mNN|dNN>` reports `status: ok`,
|
|
613
|
+
writing the `oat_deliveries` entry (`registering`) before it creates the pull
|
|
614
|
+
request so an interrupted run resumes by `gh pr list` instead of opening a
|
|
615
|
+
duplicate.
|
|
616
|
+
|
|
617
|
+
**Freshness.** Evidence keeps the revision actually reviewed. Commits after it
|
|
618
|
+
count as bookkeeping only when they touch the project's tracking files in
|
|
619
|
+
permitted ways (routing, progress, evidence, project-log appends); a code
|
|
620
|
+
change, an edit to approved brief content such as Outcomes or a phase's Intent,
|
|
621
|
+
or a substantive change followed by its revert stales the delivery.
|
|
622
|
+
`oat project delivery refresh` observes each member pull request with
|
|
623
|
+
`gh pr view` and records staleness; it never writes milestone status or
|
|
624
|
+
recovery. Because the project branch is the delivery's head branch, do not
|
|
625
|
+
push a brief amendment while that delivery is still open.
|
|
626
|
+
|
|
627
|
+
**Recovery.** Stale evidence on the active milestone's delivery returns it to
|
|
628
|
+
`reviewing`. Fixes or inline feedback for an older milestone open an
|
|
629
|
+
`oat_goal_recovery` record targeting that milestone and delivery, scheduling a
|
|
630
|
+
`p-revN` phase in its row, while the active milestone, its status and the
|
|
631
|
+
execution pointer stay untouched.
|
|
632
|
+
|
|
633
|
+
**Re-alignment and the end.** At `delivered`, `oat-project-goal` refreshes the
|
|
634
|
+
observations, writes one learnings entry, amends the brief with the next
|
|
635
|
+
milestone, and runs the review, gate and approval for the amendment; it may do
|
|
636
|
+
all of that while a `merged` endpoint is pending, but it activates the next
|
|
637
|
+
milestone only once refresh observes the previous delivery at its endpoint.
|
|
638
|
+
When the user declares the goal met, the declaration is recorded in
|
|
639
|
+
`implementation.md` and `state.md` gets `oat_goal_status: declared_met` and an
|
|
640
|
+
exhaustive outcome audit: every phase `accepted`, `extracted`, `deferred` or
|
|
641
|
+
`retired`, every numbered outcome bound to its exact text. Terminal closeout
|
|
642
|
+
requires the declaration, the audit and delivery coverage of every accepted
|
|
643
|
+
phase; `oat-project-pr-final` registers one terminal delivery per milestone
|
|
644
|
+
that still has uncovered phases, all sharing the head branch's pull request.
|
|
645
|
+
`oat-project-complete` then opens no further pull request, even with
|
|
646
|
+
`workflow.createPrOnComplete: true`, because the deliveries already cover the
|
|
647
|
+
work.
|
|
648
|
+
|
|
649
|
+
### Promoting a goal project to quick
|
|
650
|
+
|
|
651
|
+
`oat project promote <project-path> --to quick` accepts a goal project only at
|
|
652
|
+
a settled delivery boundary: the active milestone is `delivered`, every
|
|
653
|
+
registry entry is `at_endpoint` or `superseded`, and no recovery is pending.
|
|
654
|
+
It otherwise refuses without writing, with `goal-milestone-active`,
|
|
655
|
+
`goal-recovery-pending`, or `goal-delivery-unsettled` (which lists the open or
|
|
656
|
+
`registering` deliveries, and also covers an empty registry). A settled goal
|
|
657
|
+
promotes like a brief, and the archive `references/brief-archive.md` carries
|
|
658
|
+
the delivery history (registry, milestone gates and outcome audit) after the
|
|
659
|
+
original brief. `oat-project-quick-start` resumes the promoted project.
|
|
660
|
+
|
|
562
661
|
### Import lane
|
|
563
662
|
|
|
564
663
|
=== "Diagram"
|
|
@@ -668,15 +767,15 @@ actionable `oat pjm init` stop instead of scaffolding implicitly. See
|
|
|
668
767
|
|
|
669
768
|
### Seeding a new project from a brainstorm
|
|
670
769
|
|
|
671
|
-
When the brainstorming destination is "promote to a new OAT project", the dispatcher confirms a project slug and one of
|
|
770
|
+
When the brainstorming destination is "promote to a new OAT project", the dispatcher confirms a project slug and one of five modes: `lite`, `brief`, `goal`, `quick`, or `spec-driven`. For Quick and Spec-Driven projects, it runs `oat project new <slug> --mode <mode>` and writes `discovery.md` directly from the brainstorming payload — Initial Request, Solution Space with approaches considered, Chosen Direction, Key Decisions, and Open Questions. It writes only `discovery.md` (never a partial `design.md`), then points to `oat-project-quick-start` or `oat-project-design` without auto-chaining. For Lite projects, it instead seeds the five sections in `plan.md`, leaves `discovery.md` and `design.md` absent, and points to `oat-project-lite`. For Brief projects, it writes the payload to a research note under `references/research/`, leaves the scaffolded `plan.md` for the brief interview, and points to `oat-project-brief`. Goal projects arrive the same way and point to `oat-project-goal`, which authors the brief and its milestone split.
|
|
672
771
|
|
|
673
|
-
This is a parallel entry path into all
|
|
772
|
+
This is a parallel entry path into all five lanes, not a new lane. Quick and Spec-Driven users arrive at `oat-project-quick-start` or `oat-project-design` with discovery already populated; Lite users arrive at `oat-project-lite` with the single-phase plan already seeded; Brief and goal users arrive at `oat-project-brief` or `oat-project-goal` with the brainstorm payload saved as a research note under `references/research/` and the scaffolded `plan.md` left for the interview.
|
|
674
773
|
|
|
675
774
|
### Folding back into an active project
|
|
676
775
|
|
|
677
776
|
When `oat-brainstorm` fires while a project is active, it offers a 3-way picker before any pack-filtered destination shows up:
|
|
678
777
|
|
|
679
|
-
- **Related to the project** → for Lite, fold the synthesis into `plan.md` immediately above `## Phase 1` and hand off to `oat-project-lite`; for Brief, fold it into `plan.md` immediately above the first `## Phase` heading so the receiving skill integrates it as new or amended phases; for Quick and Spec-Driven, use the most-specific upstream artifact (`design.md` if it exists, otherwise `discovery.md`) and hand off to `oat-project-quick-start` or `oat-project-plan`. Any mode with an open PR hands off to `oat-project-revise`. The fold-back commit is safety-gated: a preflight `git status --porcelain -- "$ARTIFACT_PATH"` checks for dirty state, staging is exactly `git add -- "$ARTIFACT_PATH"` (never `-A`, never globs), and the handoff prompt only prints after the scoped commit succeeds.
|
|
778
|
+
- **Related to the project** → for Lite, fold the synthesis into `plan.md` immediately above `## Phase 1` and hand off to `oat-project-lite`; for Brief, fold it into `plan.md` immediately above the first `## Phase` heading so the receiving skill integrates it as new or amended phases; Goal folds into `plan.md` the same way, never editing the `## Milestones` table, and hands off to `oat-project-goal` (or `oat-project-implement` inside the active milestone's approved scope); for Quick and Spec-Driven, use the most-specific upstream artifact (`design.md` if it exists, otherwise `discovery.md`) and hand off to `oat-project-quick-start` or `oat-project-plan`. Any mode with an open PR hands off to `oat-project-revise`. The fold-back commit is safety-gated: a preflight `git status --porcelain -- "$ARTIFACT_PATH"` checks for dirty state, staging is exactly `git add -- "$ARTIFACT_PATH"` (never `-A`, never globs), and the handoff prompt only prints after the scoped commit succeeds.
|
|
680
779
|
- **Independent of the project** → the active project is acknowledged but doesn't constrain the picker; brainstorm routes through its standard pack-filtered terminal-state options (new project, backlog item, idea, doc-to-path, inline).
|
|
681
780
|
- **Related but supplementary** → write a brainstorming reference file at `.oat/projects/<scope>/<project>/brainstorming/YYYY-MM-DD-<topic>.md`, alongside `pr/` and `reviews/`. No lifecycle artifact is touched.
|
|
682
781
|
|
|
@@ -60,11 +60,11 @@ auto-review preference prompt are all skipped in both interactive and autonomous
|
|
|
60
60
|
runs. Only HiLL approval pauses are absent — the root-owned per-phase review and
|
|
61
61
|
the final review remain required.
|
|
62
62
|
|
|
63
|
-
### Brief checkpoint resolution
|
|
63
|
+
### Brief and goal checkpoint resolution
|
|
64
64
|
|
|
65
|
-
Brief projects read `oat_plan_hill_phases` with a brief meaning: `[]`
|
|
66
|
-
absent field both mean **no checkpoints**, never "every phase". The
|
|
67
|
-
scaffold writes `oat_plan_hill_phases: [] # [] = none for brief modes`, and
|
|
65
|
+
Brief and goal projects read `oat_plan_hill_phases` with a brief meaning: `[]`
|
|
66
|
+
and an absent field both mean **no checkpoints**, never "every phase". The
|
|
67
|
+
brief scaffold, which goal projects share, writes `oat_plan_hill_phases: [] # [] = none for brief modes`, and
|
|
68
68
|
`oat-project-implement` then writes:
|
|
69
69
|
|
|
70
70
|
```yaml
|
|
@@ -141,8 +141,8 @@ See [Workflow preferences in the Configuration guide](../../../reference/configu
|
|
|
141
141
|
A HiLL (human-in-the-loop lifecycle) checkpoint is a point where the
|
|
142
142
|
implementing agent stops and waits for a person to approve before it continues.
|
|
143
143
|
This choice decides how often that happens during implementation. Lite projects
|
|
144
|
-
have no checkpoints, and brief projects have none unless they list
|
|
145
|
-
explicitly, so it does not apply to them.
|
|
144
|
+
have no checkpoints, and brief and goal projects have none unless they list
|
|
145
|
+
phases explicitly, so it does not apply to them.
|
|
146
146
|
|
|
147
147
|
| Choice | Choose it when | What you give up |
|
|
148
148
|
| ------------------ | ------------------------------------------------- | -------------------------------------------- |
|