@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.
Files changed (121) hide show
  1. package/README.md +2 -1
  2. package/assets/agents/oat-phase-implementer.md +26 -3
  3. package/assets/agents/oat-reviewer.md +8 -3
  4. package/assets/bundle-metadata.json +1 -1
  5. package/assets/docs/reference/cli-reference.md +12 -7
  6. package/assets/docs/reference/oat-directory-structure.md +1 -0
  7. package/assets/docs/reference/project-artifacts.md +56 -1
  8. package/assets/docs/reference/project-state-machine.md +41 -7
  9. package/assets/docs/skills/brainstorm.md +3 -2
  10. package/assets/docs/skills/index.md +13 -10
  11. package/assets/docs/workflows/advanced/autonomy.md +3 -1
  12. package/assets/docs/workflows/advanced/dispatch-ceiling.md +2 -2
  13. package/assets/docs/workflows/advanced/workflow-gates.md +17 -4
  14. package/assets/docs/workflows/approvals-and-automation.md +21 -10
  15. package/assets/docs/workflows/choose-workflow.md +17 -9
  16. package/assets/docs/workflows/ideas/index.md +1 -1
  17. package/assets/docs/workflows/ideas/lifecycle.md +3 -2
  18. package/assets/docs/workflows/projects/closeout/closeout-skills.md +80 -7
  19. package/assets/docs/workflows/projects/closeout/pr-flow.md +7 -1
  20. package/assets/docs/workflows/projects/execution/execution-skills.md +16 -3
  21. package/assets/docs/workflows/projects/execution/implementation-execution.md +1 -1
  22. package/assets/docs/workflows/projects/execution/picking-up-projects.md +11 -1
  23. package/assets/docs/workflows/projects/lifecycle.md +108 -9
  24. package/assets/docs/workflows/projects/planning/hill-checkpoints.md +6 -6
  25. package/assets/docs/workflows/projects/planning/planning-skills.md +9 -7
  26. package/assets/docs/workflows/projects/planning/starting-projects.md +57 -11
  27. package/assets/docs/workflows/projects/reviews/index.md +22 -1
  28. package/assets/docs/workflows/projects/reviews/review-flavors.md +5 -3
  29. package/assets/public-package-versions.json +4 -4
  30. package/assets/skills/oat-brainstorm/SKILL.md +34 -9
  31. package/assets/skills/oat-brainstorm/references/destinations.md +6 -3
  32. package/assets/skills/oat-dispatch-subagents/SKILL.md +1 -1
  33. package/assets/skills/oat-dispatch-subagents/references/record-schema.md +6 -0
  34. package/assets/skills/oat-docs/SKILL.md +7 -3
  35. package/assets/skills/oat-pjm-review-backlog/SKILL.md +2 -2
  36. package/assets/skills/oat-project-autonomous/SKILL.md +9 -3
  37. package/assets/skills/oat-project-autonomous/references/gate-inventory.md +151 -132
  38. package/assets/skills/oat-project-brief/SKILL.md +1 -1
  39. package/assets/skills/oat-project-brief/references/brief-contract.md +465 -9
  40. package/assets/skills/oat-project-brief/references/docs/autonomy-contract.md +151 -132
  41. package/assets/skills/oat-project-brief/references/docs/gate-approval-record.md +9 -0
  42. package/assets/skills/oat-project-capture/SKILL.md +2 -2
  43. package/assets/skills/oat-project-complete/SKILL.md +14 -5
  44. package/assets/skills/oat-project-discover/SKILL.md +3 -2
  45. package/assets/skills/oat-project-document/SKILL.md +12 -6
  46. package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +151 -132
  47. package/assets/skills/oat-project-goal/SKILL.md +697 -0
  48. package/assets/skills/oat-project-goal/references/docs/autonomy-contract.md +412 -0
  49. package/assets/skills/oat-project-goal/references/docs/gate-approval-record.md +93 -0
  50. package/assets/skills/oat-project-implement/SKILL.md +1 -1
  51. package/assets/skills/oat-project-implement/references/completion-and-closeout.md +67 -0
  52. package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +151 -132
  53. package/assets/skills/oat-project-implement/references/docs/gate-approval-record.md +9 -0
  54. package/assets/skills/oat-project-implement/references/phase-execution.md +10 -3
  55. package/assets/skills/oat-project-implement/references/plan-and-resume.md +28 -1
  56. package/assets/skills/oat-project-lite/SKILL.md +1 -1
  57. package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +151 -132
  58. package/assets/skills/oat-project-new/SKILL.md +3 -3
  59. package/assets/skills/oat-project-next/SKILL.md +45 -15
  60. package/assets/skills/oat-project-next/references/docs/gate-approval-record.md +9 -0
  61. package/assets/skills/oat-project-plan/SKILL.md +14 -3
  62. package/assets/skills/oat-project-plan-writing/SKILL.md +6 -4
  63. package/assets/skills/oat-project-pr-final/SKILL.md +51 -1
  64. package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +151 -132
  65. package/assets/skills/oat-project-pr-progress/SKILL.md +97 -3
  66. package/assets/skills/oat-project-progress/SKILL.md +38 -5
  67. package/assets/skills/oat-project-progress/references/docs/gate-approval-record.md +9 -0
  68. package/assets/skills/oat-project-quick-start/SKILL.md +14 -9
  69. package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +151 -132
  70. package/assets/skills/oat-project-quick-start/references/docs/gate-approval-record.md +9 -0
  71. package/assets/skills/oat-project-reconcile/SKILL.md +31 -2
  72. package/assets/skills/oat-project-review-provide/SKILL.md +79 -13
  73. package/assets/skills/oat-project-review-receive/SKILL.md +70 -1
  74. package/assets/skills/oat-project-revise/SKILL.md +25 -1
  75. package/assets/skills/oat-project-summary/SKILL.md +60 -5
  76. package/assets/skills/oat-wave-execute/SKILL.md +2 -2
  77. package/assets/templates/state.md +1 -1
  78. package/dist/commands/project/closeout-check/closeout-invariant.d.ts +119 -3
  79. package/dist/commands/project/closeout-check/closeout-invariant.d.ts.map +1 -1
  80. package/dist/commands/project/closeout-check/closeout-invariant.js +454 -2
  81. package/dist/commands/project/closeout-check/index.d.ts +21 -3
  82. package/dist/commands/project/closeout-check/index.d.ts.map +1 -1
  83. package/dist/commands/project/closeout-check/index.js +190 -4
  84. package/dist/commands/project/complete-state/index.d.ts +2 -1
  85. package/dist/commands/project/complete-state/index.d.ts.map +1 -1
  86. package/dist/commands/project/complete-state/index.js +7 -1
  87. package/dist/commands/project/delivery/check.d.ts +66 -0
  88. package/dist/commands/project/delivery/check.d.ts.map +1 -0
  89. package/dist/commands/project/delivery/check.js +232 -0
  90. package/dist/commands/project/delivery/evidence.d.ts +171 -0
  91. package/dist/commands/project/delivery/evidence.d.ts.map +1 -0
  92. package/dist/commands/project/delivery/evidence.js +902 -0
  93. package/dist/commands/project/delivery/index.d.ts +7 -0
  94. package/dist/commands/project/delivery/index.d.ts.map +1 -0
  95. package/dist/commands/project/delivery/index.js +13 -0
  96. package/dist/commands/project/delivery/refresh.d.ts +110 -0
  97. package/dist/commands/project/delivery/refresh.d.ts.map +1 -0
  98. package/dist/commands/project/delivery/refresh.js +441 -0
  99. package/dist/commands/project/index.d.ts.map +1 -1
  100. package/dist/commands/project/index.js +2 -0
  101. package/dist/commands/project/log/append.d.ts +6 -0
  102. package/dist/commands/project/log/append.d.ts.map +1 -1
  103. package/dist/commands/project/log/append.js +6 -1
  104. package/dist/commands/project/new/scaffold.d.ts.map +1 -1
  105. package/dist/commands/project/new/scaffold.js +47 -1
  106. package/dist/commands/project/promote/promote.d.ts +15 -1
  107. package/dist/commands/project/promote/promote.d.ts.map +1 -1
  108. package/dist/commands/project/promote/promote.js +99 -15
  109. package/dist/commands/project/validate-plan/index.d.ts.map +1 -1
  110. package/dist/commands/project/validate-plan/index.js +10 -0
  111. package/dist/commands/project/validate-plan/profiles.d.ts +19 -4
  112. package/dist/commands/project/validate-plan/profiles.d.ts.map +1 -1
  113. package/dist/commands/project/validate-plan/profiles.js +153 -2
  114. package/dist/commands/shared/frontmatter.d.ts +1 -1
  115. package/dist/commands/shared/frontmatter.d.ts.map +1 -1
  116. package/dist/commands/shared/frontmatter.js +1 -0
  117. package/dist/commands/state/generate.d.ts.map +1 -1
  118. package/dist/commands/state/generate.js +35 -4
  119. package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -1
  120. package/dist/commands/tools/shared/pack-manifest.js +1 -0
  121. 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 | 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
- | 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 |
24
- | 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 |
25
- | 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 |
26
- | 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 |
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 | What you give up | At the end |
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 | Resuming later, a tracked plan, and lifecycle reviews. Ad-hoc reviews still work | OAT pushes nothing and opens no pull request |
85
- | 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 |
86
- | 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 |
87
- | 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 |
88
- | 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 |
89
- | 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 |
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-quick-start`,
67
- `oat-project-new`, or `oat-project-import-plan` for a plan written elsewhere.
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 brief accept their mode-appropriate reduced artifacts. The latest
154
- `final` code-review event in the plan's Reviews ledger should be `passed`.
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 brief projects do not require discovery,
382
- spec, or design; a brief's documentation sources are the Project Brief and the
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
- - Required gate for final PR: review table final row should be `passed`
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 brief project, the first run lists
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 a brief, `[]` means no checkpoints.
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, and
55
- capture lanes each skip part of it — see [Lane diagrams](#lane-diagrams) below.
56
- Lite and brief in particular have no discovery, spec, or design step at all.
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
+ ![Goal lane: an alignment interview and one reviewed Project Brief with a Milestones table, then per milestone activation, phase-units with per-phase reviews, milestone closeout with the exit gate, the integrated review, a registered delivery through pr-progress, and re-alignment that loops to the next milestone once the previous delivery reaches its endpoint; finally the terminal declaration with an exhaustive outcome audit and coverage closeout, with promotion to quick at a settled delivery boundary](/diagrams/project-lifecycle-9-goal-lane-light.svg)
578
+ ![Goal lane: an alignment interview and one reviewed Project Brief with a Milestones table, then per milestone activation, phase-units with per-phase reviews, milestone closeout with the exit gate, the integrated review, a registered delivery through pr-progress, and re-alignment that loops to the next milestone once the previous delivery reaches its endpoint; finally the terminal declaration with an exhaustive outcome audit and coverage closeout, with promotion to quick at a settled delivery boundary](/diagrams/project-lifecycle-9-goal-lane-dark.svg)
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 four modes: `lite`, `brief`, `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`.
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 four 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 users arrive at `oat-project-brief` with the brainstorm payload saved as a research note under `references/research/` and the scaffolded `plan.md` left for the interview.
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: `[]` and an
66
- absent field both mean **no checkpoints**, never "every phase". The brief
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 phases
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
  | ------------------ | ------------------------------------------------- | -------------------------------------------- |