@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
@@ -13,7 +13,7 @@ For a spec-driven project (one using the full workflow: discovery, design, plan,
13
13
  then implementation), the usual path is discovery, then design, then plan.
14
14
  Design confirms requirements and produces `spec.md` as well as `design.md`.
15
15
  Standalone spec is optional when you want to review requirements before
16
- designing. Quick, lite, brief, and import workflows author their own plans through
16
+ designing. Quick, lite, brief, goal, and import workflows author their own plans through
17
17
  their entry skills. Do not send those projects through spec-driven planning
18
18
  just because they contain a file named `plan.md`.
19
19
 
@@ -55,7 +55,7 @@ A _HiLL (human-in-the-loop lifecycle) checkpoint_ is a point where a skill stops
55
55
  and waits for your explicit approval before marking a phase complete. Projects
56
56
  created with `oat-project-new` have HiLL approvals on discovery and design **by
57
57
  default**: each skill stops after writing its artifact and waits for your
58
- explicit approval before marking it complete. Quick, lite, brief, and import
58
+ explicit approval before marking it complete. Quick, lite, brief, goal, and import
59
59
  projects have no workflow-phase HiLL checkpoints. Configured exit gates (optional reviews
60
60
  or commands your repository runs before a skill marks its work complete) can
61
61
  also keep an artifact in progress. See [HiLL checkpoints](hill-checkpoints.md).
@@ -83,7 +83,7 @@ spec-driven project. The repository knowledge index must exist at
83
83
  `oat-repo-knowledge-index` first. The skill checks knowledge staleness and asks
84
84
  whether to refresh or continue when the index is stale.
85
85
 
86
- Quick, import, lite, and brief projects use their own next step instead. Mentioning a
86
+ Quick, import, lite, brief, and goal projects use their own next step instead. Mentioning a
87
87
  new idea does not authorize automatic discovery invocation.
88
88
 
89
89
  **Example scenario:** The webhook-delivery project is active, but the team has
@@ -270,12 +270,14 @@ skill asks for a project name and sets it as the active project. The project
270
270
  must use spec-driven mode, with `design.md` recording `oat_status: complete` and
271
271
  `oat_ready_for: oat-project-plan`.
272
272
 
273
- Quick, import, lite, and brief projects never use this skill to author a plan. On a
273
+ Quick, import, lite, brief, and goal projects never use this skill to author a plan. On a
274
274
  quick project, it resumes quick-start if the plan is not ready, and **starts
275
275
  `oat-project-implement` immediately** if the plan is ready. On an import project
276
276
  with a plan, it points you to `oat-project-implement`. On a lite project, it
277
277
  points you to `oat-project-lite`. On a brief project, it stops and points you
278
- to `oat-project-brief`, which owns the Project Brief. Do not invoke it on those projects unless you
278
+ to `oat-project-brief`, which owns the Project Brief. On a goal project, it
279
+ stops and points you to `oat-project-goal`, which owns the brief, its
280
+ milestones, and its amendments. Do not invoke it on those projects unless you
279
281
  intend that handoff.
280
282
 
281
283
  **Example scenario:** The webhook design now defines persistence, retries, and
@@ -339,11 +341,11 @@ Promote the active cache-refresh project, keeping its imported plan and complete
339
341
  skill asks for a project name and sets it as the active project. The active
340
342
  project's `state.md` must record quick or import workflow mode. A spec-driven
341
343
  project is already promoted, so the skill reports a no-op unless you request
342
- artifact refresh. Lite and brief projects must promote to quick first through
344
+ artifact refresh. Lite, brief, and goal projects must promote to quick first through
343
345
  the actual terminal command:
344
346
 
345
347
  ```bash
346
- oat project promote <lite-or-brief-project-path> --to quick
348
+ oat project promote <lite-brief-or-goal-project-path> --to quick
347
349
  ```
348
350
 
349
351
  Use the reported project path, for example
@@ -7,8 +7,8 @@ description: 'Choose a project entry skill, import an existing plan, capture com
7
7
 
8
8
  Choose an entry path based on what you already know and what already exists.
9
9
  These skills do not require an existing active project. They create or import
10
- tracked work, although quick-start, lite, and brief resume an active project of
11
- their own mode, and import writes into whichever project is active.
10
+ tracked work, although quick-start, lite, brief, and goal resume an active
11
+ project of their own mode, and import writes into whichever project is active.
12
12
 
13
13
  | Your situation | Entry skill | Result |
14
14
  | -------------------------------------------------------------------- | ------------------------- | --------------------------------------------------------------------------------- |
@@ -16,6 +16,7 @@ their own mode, and import writes into whichever project is active.
16
16
  | The outcome is bounded, with optional design decisions to resolve. | `oat-project-quick-start` | Discovery and an executable plan, with lightweight design when needed. |
17
17
  | The change fits one implementation sitting. | `oat-project-lite` | One approved plan with requirements and validation criteria. |
18
18
  | One delivery whose outcome and design you can agree in conversation. | `oat-project-brief` | One reviewed, approved Project Brief whose phases carry intent and exit evidence. |
19
+ | An outcome that needs several deliveries over time. | `oat-project-goal` | One approved Project Brief with milestones, delivered and re-aligned in turn. |
19
20
  | You already have a Markdown plan. | `oat-project-import-plan` | The original source preserved beside a normalized OAT plan. |
20
21
  | Implementation happened without project tracking. | `oat-project-capture` | Retroactive discovery and implementation records from the session and commits. |
21
22
  | A confirmed scope contains several coordinated projects. | `oat-project-split` | A coordination parent and children that resume at discovery. |
@@ -69,15 +70,15 @@ in a fresh repository.
69
70
  overrides the setting for one shell.
70
71
 
71
72
  3. **Only `oat-project-new` takes a scope.** It accepts `--scope shared|local|synced`.
72
- Quick-start, lite, brief, import, capture, and split have no scope argument.
73
- Quick-start, lite, brief, import, and capture always create projects in the
73
+ Quick-start, lite, brief, goal, import, capture, and split have no scope argument.
74
+ Quick-start, lite, brief, goal, import, and capture always create projects in the
74
75
  default scope. Split uses the active project's scope, or `shared` when no
75
76
  project is active. Set the default first if you do not want `synced`.
76
77
 
77
78
  4. **Build the knowledge index before spec-driven discovery.** `oat-project-discover`
78
79
  refuses to start until `.oat/repo/knowledge/project-index.md` exists. Run
79
80
  `/oat-repo-knowledge-index` once before your first spec-driven project.
80
- Quick-start, lite, brief, import, and capture do not check for it.
81
+ Quick-start, lite, brief, goal, import, and capture do not check for it.
81
82
 
82
83
  5. **Know what happens when a project is already active.** Check with
83
84
  `oat config get activeProject` before you start:
@@ -110,14 +111,14 @@ Project creation normally activates the new project in `.oat/config.local.json`.
110
111
  Check the reported project path before continuing, especially when another
111
112
  project is already active.
112
113
 
113
- The new, quick-start, lite, brief, and import skills check inherited Git changes before
114
+ The new, quick-start, lite, brief, goal, and import skills check inherited Git changes before
114
115
  scaffolding. Unrelated changes require an explicit disposition in interactive
115
116
  runs. One exception: if the only change is `.oat/sync/manifest.json`, it is
116
117
  committed automatically as `chore: run sync`. Capture does not run this check.
117
118
  Do not assume starting a project also authorizes implementation or a PR.
118
119
 
119
120
  **Dispatch policy.** Before a plan is marked ready, quick-start, lite, brief,
120
- and import ask you to choose a _dispatch policy_: the highest tier of models and
121
+ goal, and import ask you to choose a _dispatch policy_: the highest tier of models and
121
122
  effort OAT may use when it dispatches implementation and review agents. The
122
123
  choices come from `oat project dispatch-ceiling choices`. If your configuration
123
124
  has no complete dispatch ladder (the list of models for each tier), the skill
@@ -129,10 +130,11 @@ deliberately. The plan stays not ready until this resolves. See
129
130
  **Approval checkpoints.** A _HiLL (human-in-the-loop lifecycle) checkpoint_ is
130
131
  a point where a skill stops and waits for your explicit approval before it marks
131
132
  a phase complete. Projects created by `oat-project-new` have checkpoints on
132
- discovery and design by default. Quick, lite, brief, import, and captured
133
- projects have no workflow-phase checkpoints before implementation. Lite still
134
- asks you to approve its plan once, and brief asks you to approve its reviewed
135
- brief once. See [HiLL checkpoints](hill-checkpoints.md).
133
+ discovery and design by default. Quick, lite, brief, goal, import, and
134
+ captured projects have no workflow-phase checkpoints before implementation.
135
+ Lite still asks you to approve its plan once, brief asks you to approve its
136
+ reviewed brief once, and goal asks for that approval and then one per later
137
+ milestone. See [HiLL checkpoints](hill-checkpoints.md).
136
138
 
137
139
  Several skills also run a configured _exit gate_, an optional review or command
138
140
  your repository configures to run before a skill marks its work complete. When
@@ -371,6 +373,50 @@ the scaffold and start `oat-project-quick-start` instead. See
371
373
 
372
374
  **Next step:** Run `oat-project-implement` after the brief is approved.
373
375
 
376
+ ## oat-project-goal
377
+
378
+ Use goal when an outcome needs several deliveries over time. Goal writes one
379
+ reviewed Project Brief like brief does, and adds a `## Milestones` table that
380
+ groups its phases into milestones. Each milestone is implemented, reviewed,
381
+ delivered as its own pull request, and followed by a short re-alignment before
382
+ the next one starts.
383
+
384
+ **Invocation:** Provide the slug and the intended outcome.
385
+
386
+ ```text
387
+ /oat-project-goal audit-exports "Give administrators audit exports in CSV first, then scheduled delivery."
388
+ ```
389
+
390
+ **Prerequisites:** No active project is needed. If the active project is a
391
+ goal project, goal resumes it at the step its state calls for: authoring,
392
+ milestone activation, re-alignment, or the terminal declaration.
393
+
394
+ **Example scenario:** Administrators need audit exports now and scheduled
395
+ delivery later. Goal interviews you once for the whole outcome, splits it into
396
+ milestone m01 (CSV export) and m02 (scheduled delivery), and activates m01.
397
+ When m01's pull request is delivered, goal asks what changed, amends the brief
398
+ with m02's phases, takes the amendment through review and approval, and
399
+ activates m02 once m01 reaches the endpoint you agreed, such as merged.
400
+
401
+ **Expected output:** One Project Brief in `plan.md` with
402
+ `oat_plan_source: goal`, a canonical `| Milestone | Phases |` table in which
403
+ every phase belongs to exactly one milestone, and the first milestone approved
404
+ and activated. Each milestone's approval is recorded as its `plan` gate carrier
405
+ in `state.md`; deliveries are recorded in the `oat_deliveries` registry by the
406
+ delivery skills.
407
+
408
+ **What it does without asking:** It creates the project through
409
+ `oat project new --mode goal`, commits the brief before review, runs the
410
+ artifact review and any configured `oat-project-goal` gate, refreshes delivery
411
+ observations with `oat project delivery refresh`, and appends one project-log
412
+ entry at each activation and re-alignment. It asks before: proceeding with a
413
+ dirty working tree, the interview decisions and milestone split, each approval,
414
+ the re-alignment questions, and declaring the goal met.
415
+
416
+ **Next step:** Run `oat-project-implement` after the first milestone is
417
+ activated. Between milestones, `oat-project-goal` re-aligns and activates the
418
+ next milestone once the previous delivery reaches its agreed endpoint.
419
+
374
420
  ## oat-project-import-plan
375
421
 
376
422
  Use import when the plan already exists, including one produced in a provider's
@@ -176,7 +176,7 @@ This feature is opt-in and disabled by default (missing or `enabled: false`). Fo
176
176
 
177
177
  Generated planning and analysis artifacts have a separate review loop from code/phase reviews.
178
178
 
179
- For plans, `oat-project-plan`, `oat-project-quick-start`, `oat-project-lite`, `oat-project-brief`, and `oat-project-import-plan` run a bounded `plan.md` artifact review before marking the plan ready for implementation. The loop dispatches `oat-reviewer` in structured-output artifact mode with `scope: plan`, applies unambiguous Critical and High artifact-local fixes, offers Medium and Low fixes, and re-runs until clean or the retry bound is exhausted. A clean result records the `plan` row in the plan's `## Reviews` table as `passed`.
179
+ For plans, `oat-project-plan`, `oat-project-quick-start`, `oat-project-lite`, `oat-project-brief`, `oat-project-goal` (for the brief and each milestone amendment), and `oat-project-import-plan` run a bounded `plan.md` artifact review before marking the plan ready for implementation. The loop dispatches `oat-reviewer` in structured-output artifact mode with `scope: plan`, applies unambiguous Critical and High artifact-local fixes, offers Medium and Low fixes, and re-runs until clean or the retry bound is exhausted. A clean result records the `plan` row in the plan's `## Reviews` table as `passed`.
180
180
 
181
181
  For analysis artifacts, `oat-docs-analyze` and `oat-agent-instructions-analyze` run a bounded accuracy review after writing their severity-rated artifacts. The reviewer checks cited evidence, severity, and recommendations before the matching apply workflow consumes the artifact. The analysis loop updates tracking metadata to mark the artifact verified.
182
182
 
@@ -232,12 +232,33 @@ or contradictory anchors stop the review and route to `oat-project-reconcile`.
232
232
  A brief `final` review also audits every numbered Outcome against the
233
233
  journal's evidence.
234
234
 
235
+ In a goal project, per-phase reviews (`pNN`, `p-revN`) use the brief anchors.
236
+ A milestone's integrated review names the milestone or delivery and its exact
237
+ ordered phase set, for example `code m01: p01, p02, p-rev1` or
238
+ `code m01/d01: p01, p02, p-rev1`; a `pNN-pMM` or `final` token is refused for
239
+ it, and membership is never expanded from first to last phase. The set must
240
+ match the milestone's `## Milestones` row, a pending `oat_goal_recovery`
241
+ record, or a registered delivery's frozen scope. Before dispatch, the
242
+ milestone's exit carrier must be allowed and fresh; otherwise the review stops
243
+ and routes to implement's milestone closeout. The range runs from the first
244
+ member's base to the last member's head, and phases of other milestones inside
245
+ it are listed under `Intervening changes:` and judged only as context. The
246
+ artifact records `oat_review_requested_scope: mNN` (or `mNN/dNN`) and
247
+ `oat_review_phase_ids` with the exact set, and a narrowed re-review keeps the
248
+ full set. The `## Reviews` Scope cell is the milestone ID (`m01`) or, for a
249
+ registered delivery, the delivery ID (`d01`). The review is recorded as
250
+ `received`; `oat-project-review-receive` moves the milestone to `delivering`
251
+ on a clean receive.
252
+
235
253
  Final review `passed` gate requires:
236
254
 
237
255
  - No unresolved Critical/High/Medium findings.
238
256
  - Deferred Medium findings resurfaced and explicitly dispositioned.
239
257
  - Low findings explicitly dispositioned (after plain-language explanation).
240
258
 
259
+ A goal milestone delivery is gated by its passed, fresh integrated review and
260
+ exit carrier rather than by a `final` row.
261
+
241
262
  ## Complexity review at budget exhaustion
242
263
 
243
264
  When a review or gate budget runs out, another round of the same review is
@@ -120,7 +120,7 @@ different things can happen, and only two of them stop the workflow:
120
120
  out without writing a review, or wrote a review OAT could not validate or
121
121
  match to this run. Nothing was reviewed. `oat-project-implement` and
122
122
  `oat-project-lite` keep these failures blocked whatever `onFailure` says,
123
- and so does `oat-project-brief`.
123
+ and so do `oat-project-brief` and `oat-project-goal`.
124
124
  The planning skills handle them differently; see
125
125
  [When the gate finds blocking problems](../../advanced/workflow-gates.md#when-the-gate-finds-blocking-problems).
126
126
  - **Reviewer selection falls back.** By default (`--avoid same-family`) the gate
@@ -458,9 +458,11 @@ request.
458
458
  **Prerequisites:** An initialized project must resolve from the active pointer
459
459
  or an explicitly supplied project/review target. Its core artifacts must be
460
460
  committed before review. Code review needs completed implementation work and
461
- the mode-appropriate requirements sources; lite and brief reviews do not
461
+ the mode-appropriate requirements sources; lite, brief, and goal reviews do not
462
462
  require absent discovery, spec or design artifacts. A brief code review takes
463
- its range from the journal's phase anchors. Code reviews and plan artifact reviews
463
+ its range from the journal's phase anchors. A goal integrated review names its
464
+ milestone or delivery and its exact ordered phase set; see
465
+ [Phase and final review](index.md#phase-and-final-review). Code reviews and plan artifact reviews
464
466
  also need a resolved dispatch policy (`oat_dispatch_policy` in `state.md` or
465
467
  `workflow.dispatchPolicy.*` in config); without one the review stops before
466
468
  launching a reviewer. Discovery, spec and design artifact reviews run without
@@ -1,6 +1,6 @@
1
1
  {
2
- "cli": "0.3.19",
3
- "docs-config": "0.3.19",
4
- "docs-theme": "0.3.19",
5
- "docs-transforms": "0.3.19"
2
+ "cli": "0.3.21",
3
+ "docs-config": "0.3.21",
4
+ "docs-theme": "0.3.21",
5
+ "docs-transforms": "0.3.21"
6
6
  }
@@ -5,7 +5,7 @@ disable-model-invocation: false
5
5
  user-invocable: true
6
6
  allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion
7
7
  metadata:
8
- version: 1.3.9
8
+ version: 1.3.10
9
9
  ---
10
10
 
11
11
  # Brainstorm
@@ -238,7 +238,7 @@ ACTIVE_PROJECT_PR_STATUS=""
238
238
  if [ -n "$ACTIVE_PROJECT" ] && [ -f "$ACTIVE_PROJECT/state.md" ]; then
239
239
  ACTIVE_PROJECT_VALID="true"
240
240
  # Read state.md frontmatter — extract:
241
- # oat_workflow_mode → ACTIVE_PROJECT_MODE (e.g., "spec-driven", "quick", "import", "lite", "brief")
241
+ # oat_workflow_mode → ACTIVE_PROJECT_MODE (e.g., "spec-driven", "quick", "import", "lite", "brief", "goal")
242
242
  # oat_phase → ACTIVE_PROJECT_PHASE (e.g., "discovery", "design", "plan", "implement")
243
243
  # oat_pr_status → ACTIVE_PROJECT_PR_STATUS (e.g., "none", "open", "closed")
244
244
  fi
@@ -401,8 +401,8 @@ The payload is staged in memory only — it is not persisted between conversatio
401
401
  - Capture as new idea → confirm slug.
402
402
  - Extend existing idea → confirm which idea (slug or path).
403
403
  - Doc-to-path → confirm path.
404
- - Promote to new project → confirm slug + workflow mode (`lite`, `brief`, `quick`, or `spec-driven`, with skill proposing a default based on the chosen direction and scope signals).
405
- - Active-project fold-back → for lite and brief confirm `plan.md`; for import confirm `design.md` or `discovery.md` when present, else `plan.md`; otherwise confirm which artifact (`design.md` if exists, else `discovery.md`; user signal can override toward `discovery.md` for foundational changes).
404
+ - Promote to new project → confirm slug + workflow mode (`lite`, `brief`, `goal`, `quick`, or `spec-driven`, with skill proposing a default based on the chosen direction and scope signals; propose `goal` when the direction needs several deliveries over time).
405
+ - Active-project fold-back → for lite, brief, and goal confirm `plan.md`; for import confirm `design.md` or `discovery.md` when present, else `plan.md`; otherwise confirm which artifact (`design.md` if exists, else `discovery.md`; user signal can override toward `discovery.md` for foundational changes).
406
406
  - Active-project reference file → confirm filename (default `YYYY-MM-DD-<topic>.md`).
407
407
 
408
408
  - **`none`** (currently `Inline only` and `Summarize idea directly`): no per-field confirmation at this layer. For `Inline only`, write the closing summary directly. For `Summarize idea directly`, hand off — the downstream `oat-idea-summarize` surfaces its own summary for accept/refine review.
@@ -510,7 +510,7 @@ End mode assertion when the backlog-add hands control back.
510
510
 
511
511
  #### 9g — Promote to new OAT project
512
512
 
513
- The slug and workflow mode (`lite`, `brief`, `quick`, or `spec-driven`) were confirmed at
513
+ The slug and workflow mode (`lite`, `brief`, `goal`, `quick`, or `spec-driven`) were confirmed at
514
514
  step 8. Run:
515
515
 
516
516
  ```bash
@@ -562,6 +562,15 @@ reading that research first. Do not create `discovery.md` or `design.md`.
562
562
  Leave the project state at plan/in-progress, print the `oat-project-brief`
563
563
  handoff, and stop.
564
564
 
565
+ **Goal branch:** When mode is `goal`, arrive exactly as the brief branch does:
566
+ the goal scaffold holds the same files (its `plan.md` carries
567
+ `oat_plan_source: goal` and the canonical Milestones table header). Write the
568
+ synthesized payload to `<project>/references/research/brainstorm-YYYY-MM-DD.md`,
569
+ leave `plan.md` as scaffolded for `oat-project-goal` to author through its
570
+ interview (including the milestone split), do not create `discovery.md` or
571
+ `design.md`, leave the project state at plan/in-progress, print the
572
+ `oat-project-goal` handoff, and stop.
573
+
565
574
  **Quick/spec-driven branch:** Only for those two modes, continue with the
566
575
  discovery flow below.
567
576
 
@@ -608,12 +617,13 @@ The 3-way router fires once per session. After convergence resumes (e.g., the us
608
617
 
609
618
  #### 9i — Active project: fold-back to upstream artifact
610
619
 
611
- Uniform across spec-driven, quick, import, lite, and brief modes. Differs only in which plan-authoring skill the handoff prompt addresses (resolved by `ACTIVE_PROJECT_MODE` and `ACTIVE_PROJECT_PR_STATUS`).
620
+ Uniform across spec-driven, quick, import, lite, brief, and goal modes. Differs only in which plan-authoring skill the handoff prompt addresses (resolved by `ACTIVE_PROJECT_MODE` and `ACTIVE_PROJECT_PR_STATUS`).
612
621
 
613
622
  **Step 1 — Pick upstream artifact.** Prefer the most-specific existing one:
614
623
 
615
624
  - For lite, always select `<ACTIVE_PROJECT>/plan.md`. Append `## Brainstorming Update` immediately above `## Phase 1`; lite has no discovery or design artifact.
616
625
  - For brief, always select `<ACTIVE_PROJECT>/plan.md` (the Project Brief). Append `## Brainstorming Update` immediately above the first `## Phase` heading; brief has no discovery or design artifact, and the receiving skill folds the update into the brief's sections.
626
+ - For goal, select `<ACTIVE_PROJECT>/plan.md` exactly as for brief; the update never edits the `## Milestones` table, which the receiving skill amends.
617
627
  - For import, use `design.md` or `discovery.md` when present (the rules below); otherwise `<ACTIVE_PROJECT>/plan.md`, because the import scaffold has neither.
618
628
  - `<ACTIVE_PROJECT>/design.md` if it exists (any mode — quick lightweight design counts).
619
629
  - Otherwise `<ACTIVE_PROJECT>/discovery.md`.
@@ -686,7 +696,7 @@ beside another dirty project file must take Step 4.
686
696
 
687
697
  For non-synced projects, use the explicit `--` filename form. **Never `git add -A`. Never directory globs.** Other working-tree paths are not touched by this commit. For synced projects, `FOLD_BACK_COMMIT_SHA` comes from the push JSON rather than the parent branch.
688
698
 
689
- 3. `<artifact-basename>` is `plan.md` for lite and brief (and for import when it has no `design.md` or `discovery.md`), otherwise `design.md` or `discovery.md` depending on which was chosen. `<project-name>` is the active project's slug.
699
+ 3. `<artifact-basename>` is `plan.md` for lite, brief, and goal (and for import when it has no `design.md` or `discovery.md`), otherwise `design.md` or `discovery.md` depending on which was chosen. `<project-name>` is the active project's slug.
690
700
 
691
701
  4. If the guarded persistence succeeded → proceed to step 5 (handoff prompt).
692
702
 
@@ -763,6 +773,7 @@ Resolve the handoff target by `ACTIVE_PROJECT_MODE` and `ACTIVE_PROJECT_PR_STATU
763
773
  | lite | none / closed | `oat-project-lite` |
764
774
  | import | none / closed | `oat-project-import-plan` |
765
775
  | brief | none / closed | `oat-project-brief` |
776
+ | goal | none / closed | `oat-project-goal` |
766
777
  | any mode | open (`oat_pr_status: open`) | `oat-project-revise` |
767
778
 
768
779
  For brief, `oat-project-brief` is the target while the brief is still in
@@ -775,6 +786,20 @@ prompt's last two sentences read "Integrate the new content into the brief as
775
786
  new or amended phases. Don't refresh the brief — preserve the review table and
776
787
  the journal." instead.
777
788
 
789
+ For goal, `oat-project-goal` is the target: it folds the update into the
790
+ brief as an amendment through its review ladder, during authoring or at the
791
+ next re-alignment (`delivered`). While a milestone is active, an update that
792
+ stays inside that milestone's approved Outcomes and Approach goes to
793
+ `oat-project-implement` instead, which adds the new phases to the active
794
+ milestone's `## Milestones` row; anything else waits for re-alignment. The
795
+ prompt's last two sentences read as for brief.
796
+
797
+ With an open PR in goal mode the open PR is a registered delivery, and
798
+ `oat-project-revise` requires an explicit target. Name it in the prompt: add
799
+ "Target: <mNN>/<dNN> (the open delivery)." after its first sentence, with the
800
+ milestone and delivery IDs read from the `oat_deliveries` entry whose member
801
+ URL is `oat_pr_url`.
802
+
778
803
  Print the handoff prompt template, substituting `<skill-name>`, `<artifact>`, `<hash>`, and `<subject>` from the actual branch commit or synced push receipt:
779
804
 
780
805
  ```
@@ -846,9 +871,9 @@ End mode assertion when the split handoff completes or reports its own blocker.
846
871
  - ✅ The terminal-state picker conditionally includes `Promote to N projects` only when `oat project split evaluate-signals` reports `triggered: true`; small-scope convergence keeps the option hidden.
847
872
  - ✅ Synthesis payload is built per the design Data Models `SynthesizedPayload` schema: `title`, `summary`, `motivation`, `vision`, `approachesConsidered[]`, `chosenDirection`, `openQuestions[]`, `nextSteps[]`, `transcriptSessionNote`.
848
873
  - ✅ Confirmation pattern matches `references/destinations.md`: `full` for scoped backlog item (field-by-field with example wording), `minimal` for slug/path/artifact destinations, `none` for inline-only and summarize-idea-directly.
849
- - ✅ Each handoff branch (9a-9k) reads the correct downstream `SKILL.md` path and enters at the documented step. Project promotion writes `discovery.md` for quick/spec-driven, `plan.md` for lite, and a `references/research/` note for brief — never `design.md` — and does not auto-chain into the next phase.
874
+ - ✅ Each handoff branch (9a-9k) reads the correct downstream `SKILL.md` path and enters at the documented step. Project promotion writes `discovery.md` for quick/spec-driven, `plan.md` for lite, and a `references/research/` note for brief and goal — never `design.md` — and does not auto-chain into the next phase.
850
875
  - ✅ Doc-to-path validation handles all four cases: path-is-directory, parent-missing (with explicit out-of-repo confirmation), file-already-exists (overwrite or rename), unwritable (surface OS error).
851
876
  - ✅ Fold-back persistence safety contract honored: preflight `git status --porcelain -- "$ARTIFACT_PATH"` runs before any artifact mutation; clean → append + exact-path branch commit for shared/local or validated `oat project push --json` for synced; dirty → three-option picker (persist-prior-first / mix / abort-to-reference-file); handoff prompt prints only after the scope-appropriate receipt succeeds.
852
- - ✅ Handoff target for fold-back resolves correctly per `oat_workflow_mode` + `oat_pr_status`: `oat-project-plan` (spec-driven, no/closed PR) / `oat-project-quick-start` (quick, no/closed PR) / `oat-project-lite` (lite, no/closed PR) / `oat-project-import-plan` (import, no/closed PR) / `oat-project-brief` or `oat-project-implement` (brief, no/closed PR, by phase) / `oat-project-revise` (any mode, open PR).
877
+ - ✅ Handoff target for fold-back resolves correctly per `oat_workflow_mode` + `oat_pr_status`: `oat-project-plan` (spec-driven, no/closed PR) / `oat-project-quick-start` (quick, no/closed PR) / `oat-project-lite` (lite, no/closed PR) / `oat-project-import-plan` (import, no/closed PR) / `oat-project-brief` or `oat-project-implement` (brief, no/closed PR, by phase) / `oat-project-goal` or `oat-project-implement` (goal, no/closed PR, by milestone state) / `oat-project-revise` (any mode, open PR; goal names the target delivery).
853
878
  - ✅ Active-project 3-way router (related / independent / supplementary) fires before the standard pack-filtered picker when both `WORKFLOWS_INSTALLED == "true"` and `ACTIVE_PROJECT_VALID == "true"`.
854
879
  - ✅ Skill validates cleanly under `pnpm oat:validate-skills` (frontmatter contract, allowed-tools, mode-assertion structure).
@@ -122,8 +122,8 @@ Confirm to write this to a new backlog item file, or tell me what to change.
122
122
  **Required template fields:** `title`, `summary` (Initial Request), `approachesConsidered` (Solution Space), `chosenDirection` (Chosen Direction), key decisions, `openQuestions`. Template: `.oat/templates/discovery.md` (consumed via `oat project new`).
123
123
  **Optional template fields:** `motivation`, `vision`, `nextSteps`.
124
124
  **Confirmation pattern:** `minimal` (slug + workflow mode)
125
- Skill proposes `lite`, `brief`, `quick`, or `spec-driven` mode based on `chosenDirection` and scope signals from the conversation. User picks; skill confirms slug.
126
- **Handoff target:** Run `oat project new <slug> --mode <mode>` to scaffold. Write field-filled `discovery.md` only (Initial Request, Solution Space with approaches, Chosen Direction, Key Decisions, Open Questions). Mark `oat_status: complete`, `oat_ready_for: oat-project-quick-start` (for quick mode) or `oat-project-design` (for spec-driven). Update project `state.md` (phase=discovery, status=complete). Print pointer to next skill. **Stop — do NOT inline-execute the next phase.** Project promotion writes `discovery.md` only, never `design.md`. For `brief` mode there is no `discovery.md`: write the synthesized payload to `references/research/brainstorm-YYYY-MM-DD.md`, leave the scaffolded `plan.md` (the Project Brief) for `oat-project-brief` to author through its interview, keep state at plan/in-progress, and point to `oat-project-brief`. For `lite` mode, fill `plan.md` as `oat-brainstorm` step 9g describes and point to `oat-project-lite`.
125
+ Skill proposes `lite`, `brief`, `goal`, `quick`, or `spec-driven` mode based on `chosenDirection` and scope signals from the conversation (`goal` when the direction needs several deliveries over time). User picks; skill confirms slug.
126
+ **Handoff target:** Run `oat project new <slug> --mode <mode>` to scaffold. Write field-filled `discovery.md` only (Initial Request, Solution Space with approaches, Chosen Direction, Key Decisions, Open Questions). Mark `oat_status: complete`, `oat_ready_for: oat-project-quick-start` (for quick mode) or `oat-project-design` (for spec-driven). Update project `state.md` (phase=discovery, status=complete). Print pointer to next skill. **Stop — do NOT inline-execute the next phase.** Project promotion writes `discovery.md` only, never `design.md`. For `brief` mode there is no `discovery.md`: write the synthesized payload to `references/research/brainstorm-YYYY-MM-DD.md`, leave the scaffolded `plan.md` (the Project Brief) for `oat-project-brief` to author through its interview, keep state at plan/in-progress, and point to `oat-project-brief`. `goal` mode arrives the same way and points to `oat-project-goal`, which authors the brief and its milestone split. For `lite` mode, fill `plan.md` as `oat-brainstorm` step 9g describes and point to `oat-project-lite`.
127
127
  **If user wants to keep brainstorming after this is offered:** return to flow with destination = promote-to-new-project. Skill probes for missing chosen direction, key decisions, and explicit open questions — these become artifact fields that read poorly when shallow.
128
128
 
129
129
  ---
@@ -132,7 +132,7 @@ Skill proposes `lite`, `brief`, `quick`, or `spec-driven` mode based on `chosenD
132
132
 
133
133
  **Pack required:** `workflows` AND an active project pointer is set (`oat config get activeProject`) AND its `state.md` is readable.
134
134
  **Trigger phrases:** "fold this into the active project", "this is feedback for the active project", "integrate this into design", "add this to discovery", explicit "for the active project" mention. Also offered as the first option when the active-project 3-way router fires after convergence (related → fold-back).
135
- **Required template fields:** which artifact (`plan.md` for lite and brief; for import `design.md` or `discovery.md` when present, else `plan.md`; otherwise `design.md` if exists, else `discovery.md`; user signal can override), the synthesized payload's `chosenDirection`, key decisions, `transcriptSessionNote` (transcript appendix). Template: appended in-place using `## Brainstorming Update: YYYY-MM-DD — <topic>` heading.
135
+ **Required template fields:** which artifact (`plan.md` for lite, brief, and goal; for import `design.md` or `discovery.md` when present, else `plan.md`; otherwise `design.md` if exists, else `discovery.md`; user signal can override), the synthesized payload's `chosenDirection`, key decisions, `transcriptSessionNote` (transcript appendix). Template: appended in-place using `## Brainstorming Update: YYYY-MM-DD — <topic>` heading.
136
136
  **Optional template fields:** `openQuestions`, `nextSteps` — appended if surfaced during convergence.
137
137
  **Confirmation pattern:** `minimal` (which artifact + dirty-tree handling)
138
138
 
@@ -167,10 +167,13 @@ Skill name resolved per workflow mode + PR status (read from `state.md` frontmat
167
167
  | lite | none / closed | `oat-project-lite` |
168
168
  | import | none / closed | `oat-project-import-plan` |
169
169
  | brief | none / closed | `oat-project-brief` |
170
+ | goal | none / closed | `oat-project-goal` |
170
171
  | any mode | open (`oat_pr_status: open`) | `oat-project-revise` |
171
172
 
172
173
  For brief, `oat-project-brief` is the target while the brief is still in planning (`oat_phase: plan`) and `oat-project-implement` once implementation has started; the handoff prompt asks for new or amended phases instead of tasks.
173
174
 
175
+ For goal, `oat-project-goal` is the target (an amendment during authoring or at re-alignment), or `oat-project-implement` for an update inside the active milestone's approved Outcomes and Approach. With an open PR, the goal handoff to `oat-project-revise` names the target milestone and delivery (`<mNN>/<dNN>`, from the `oat_deliveries` entry whose member URL is `oat_pr_url`), because revise requires an explicit target in goal mode.
176
+
174
177
  After printing the prompt, the skill stops. The user runs the plan-authoring skill at their own pace. The brainstorming skill never auto-chains into plan authoring — the deliberate transition is the point.
175
178
 
176
179
  **If user wants to keep brainstorming after this is offered:** return to flow with destination = fold-back. Skill probes for richer chosen direction or key decisions, since these become the appended section and read poorly when shallow. Re-run preflight `git status` when convergence resumes — the working tree may have changed mid-conversation.
@@ -5,7 +5,7 @@ disable-model-invocation: true
5
5
  user-invocable: false
6
6
  allowed-tools: Read
7
7
  metadata:
8
- version: 1.2.12
8
+ version: 1.2.13
9
9
  ---
10
10
 
11
11
  # Dispatching OAT Subagents
@@ -283,6 +283,12 @@ so the loaded root is that home's `.agents`: expect `tier: loaded`,
283
283
  `canonicalPath: <user>/agents/<role>.md`. Another layout yields different but
284
284
  equally valid tier labels.
285
285
 
286
+ Under a capped managed policy the reviewer targets the policy's cap cell
287
+ (here `high`, so the Opus 5.5 high variant). In a repository whose policy caps at another tier the
288
+ selected variant differs, and `dispatch record` rejects a `payload.variant`
289
+ that is not the resolver's. Take `payload.variant` from the live resolution's
290
+ `providers.claude.dispatchArgs.variant`, never from this example.
291
+
286
292
  ## Recon Wave
287
293
 
288
294
  ```yaml
@@ -6,7 +6,7 @@ disable-model-invocation: false
6
6
  user-invocable: true
7
7
  allowed-tools: Read, Glob, Grep, AskUserQuestion
8
8
  metadata:
9
- version: 1.0.5
9
+ version: 1.0.6
10
10
  ---
11
11
 
12
12
  # OAT Docs
@@ -146,7 +146,7 @@ Based on the docs, here's how OAT project workflows work: [answer]
146
146
  You can read more in `workflows/projects/lifecycle.md`.
147
147
 
148
148
  Would you like me to:
149
- - Start a new project? (I'd invoke oat-project-lite for single-sitting work, oat-project-brief for one delivery planned as a Project Brief, or oat-project-quick-start for a larger quick workflow)
149
+ - Start a new project? (I'd invoke oat-project-lite for single-sitting work, oat-project-brief for one delivery planned as a Project Brief, oat-project-goal for an outcome delivered over several milestones, or oat-project-quick-start for a larger quick workflow)
150
150
  - Check your current project status? (I'd read your active project's state.md)
151
151
  ```
152
152
 
@@ -174,9 +174,13 @@ Brief mode is a fourth option for one delivery whose design you can agree in
174
174
  conversation:
175
175
  oat-project-brief <project-name> "project description"
176
176
 
177
+ Goal mode is a fifth option for an outcome delivered over several milestones:
178
+ oat-project-goal <project-name> "project description"
179
+
177
180
  Lite combines the interview and requirements contract in one plan for a
178
181
  single sitting. Brief writes one reviewed Project Brief whose phases carry
179
- intent and exit evidence instead of tasks. Quick mode goes straight from
182
+ intent and exit evidence instead of tasks; goal groups those phases into
183
+ milestones that are delivered and re-aligned in turn. Quick mode goes straight from
180
184
  discovery to plan. Spec-driven mode adds formal spec and design phases. If you invoke quick mode with only a
181
185
  project name, it should ask you for the missing project description
182
186
  before discovery starts.
@@ -6,7 +6,7 @@ disable-model-invocation: true
6
6
  allowed-tools: Read, Write, Glob, Grep, Bash(git:*), AskUserQuestion, Task
7
7
  user-invocable: true
8
8
  metadata:
9
- version: 1.6.4
9
+ version: 1.6.5
10
10
  ---
11
11
 
12
12
  # Review Backlog
@@ -256,7 +256,7 @@ This step mirrors the **Project Kickoff Handoffs** section of the pjm instructio
256
256
  **For each item in the agreed kickoff stack**, write or refresh `.oat/repo/pjm/handoffs/<BL-id>.md` with:
257
257
 
258
258
  - the backlog item reference — its ID **and** human-readable title **and** path (never a bare ID);
259
- - the recommended project mode (`oat-project-lite` for single-sitting work, `oat-project-brief` for one delivery planned as a Project Brief, `oat-project-quick-start` for quick work, or `oat-project-new` for spec-driven work), including which artifacts (spec/design/plan) to pre-populate from existing research when it exists;
259
+ - the recommended project mode (`oat-project-lite` for single-sitting work, `oat-project-brief` for one delivery planned as a Project Brief, `oat-project-goal` for an outcome delivered over several milestones, `oat-project-quick-start` for quick work, or `oat-project-new` for spec-driven work), including which artifacts (spec/design/plan) to pre-populate from existing research when it exists;
260
260
  - authoritative input pointers (research directories, decision records, code paths);
261
261
  - repo conventions and verification gates the item file does not restate;
262
262
  - a close-out section requiring (a) the **Backlog Lifecycle** — `oat backlog archive <id> --summary "outcome" --json` — in the same PR that ships the item, and (b) filesystem deletion of its owned handoff. Consume the complete returned `affectedPaths`, append the tracked handoff deletion, format existing text with the repository command, and commit the exact list via `oat internal commit-paths` with a unique retained identity and enabled hooks; stop if unavailable or blocked/failed. Include both old/new item names, ledger, index and rewritten references; preserve unrelated staged/unstaged work.
@@ -6,7 +6,7 @@ disable-model-invocation: true
6
6
  user-invocable: true
7
7
  allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion, Task
8
8
  metadata:
9
- version: 1.0.20
9
+ version: 1.0.21
10
10
  ---
11
11
 
12
12
  # Autonomous OAT Project
@@ -227,6 +227,7 @@ Select the earliest incomplete lifecycle owner:
227
227
  | No project yet | Continue to Step 2, then invoke the selected creation skill |
228
228
  | Lite plan incomplete | `oat-project-lite` |
229
229
  | Brief not yet reviewed and approved | `oat-project-brief` |
230
+ | Existing goal project (`oat_workflow_mode: goal`) | Stop at a product-judgment boundary: goal is not autonomous |
230
231
  | Quick-mode discovery, optional design, or plan incomplete | `oat-project-quick-start` |
231
232
  | Spec-driven discovery incomplete | `oat-project-discover` |
232
233
  | Spec-driven design/spec incomplete | `oat-project-design` |
@@ -303,8 +304,13 @@ For a new goal, choose mode as a rigor selector:
303
304
  sequential implementation phase.
304
305
  - **Brief:** use when the goal is one delivery whose outcome and design can be
305
306
  settled from evidence and recorded in one reviewed Project Brief, with
306
- phases of intent and exit evidence instead of a pre-approved task plan. Goal
307
- mode is excluded until it is registered.
307
+ phases of intent and exit evidence instead of a pre-approved task plan.
308
+ - **Goal is excluded.** Never select `goal` for a new project, even when the
309
+ outcome needs several deliveries: each milestone's approval, re-alignment
310
+ and the terminal declaration need the user (`GOAL-11` through `GOAL-13` in
311
+ the autonomy contract), so an autonomous run cannot carry a goal end to end.
312
+ Choose brief for the first delivery, or stop at a product-judgment boundary
313
+ when one delivery cannot honestly represent the outcome.
308
314
 
309
315
  Base the choice on uncertainty, integration risk, architecture decisions,
310
316
  reversibility, and review needs—not task count. Record the chosen mode and