@open-agent-toolkit/cli 0.3.18 → 0.3.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/assets/agents/oat-phase-implementer.md +104 -3
- package/assets/agents/oat-reviewer.md +20 -5
- package/assets/bundle-metadata.json +1 -1
- package/assets/docs/reference/cli-reference.md +15 -7
- package/assets/docs/reference/oat-directory-structure.md +2 -0
- package/assets/docs/reference/project-artifacts.md +72 -1
- package/assets/docs/reference/project-state-machine.md +55 -6
- package/assets/docs/skills/brainstorm.md +3 -1
- package/assets/docs/skills/index.md +13 -9
- package/assets/docs/workflows/advanced/autonomy.md +12 -2
- package/assets/docs/workflows/advanced/dispatch-ceiling.md +2 -2
- package/assets/docs/workflows/advanced/workflow-gates.md +25 -7
- package/assets/docs/workflows/approvals-and-automation.md +25 -9
- package/assets/docs/workflows/choose-workflow.md +24 -8
- package/assets/docs/workflows/ideas/index.md +1 -1
- package/assets/docs/workflows/ideas/lifecycle.md +3 -2
- package/assets/docs/workflows/projects/closeout/closeout-skills.md +83 -5
- package/assets/docs/workflows/projects/closeout/pr-flow.md +9 -1
- package/assets/docs/workflows/projects/execution/execution-skills.md +27 -2
- package/assets/docs/workflows/projects/execution/implementation-execution.md +15 -0
- package/assets/docs/workflows/projects/execution/picking-up-projects.md +20 -1
- package/assets/docs/workflows/projects/lifecycle.md +172 -9
- package/assets/docs/workflows/projects/planning/hill-checkpoints.md +18 -1
- package/assets/docs/workflows/projects/planning/planning-skills.md +13 -10
- package/assets/docs/workflows/projects/planning/starting-projects.md +138 -20
- package/assets/docs/workflows/projects/reviews/index.md +36 -2
- package/assets/docs/workflows/projects/reviews/review-flavors.md +7 -3
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-brainstorm/SKILL.md +58 -9
- package/assets/skills/oat-brainstorm/references/destinations.md +12 -4
- package/assets/skills/oat-docs/SKILL.md +13 -4
- package/assets/skills/oat-pjm-review-backlog/SKILL.md +2 -2
- package/assets/skills/oat-project-autonomous/SKILL.md +20 -8
- package/assets/skills/oat-project-autonomous/references/gate-inventory.md +156 -122
- package/assets/skills/oat-project-brief/SKILL.md +592 -0
- package/assets/skills/oat-project-brief/references/brief-contract.md +743 -0
- package/assets/skills/oat-project-brief/references/docs/autonomy-contract.md +412 -0
- package/assets/skills/oat-project-brief/references/docs/gate-approval-record.md +93 -0
- package/assets/skills/oat-project-capture/SKILL.md +2 -2
- package/assets/skills/oat-project-complete/SKILL.md +16 -2
- package/assets/skills/oat-project-discover/SKILL.md +4 -2
- package/assets/skills/oat-project-dispatch-subagents/SKILL.md +9 -1
- package/assets/skills/oat-project-document/SKILL.md +17 -1
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +156 -122
- package/assets/skills/oat-project-goal/SKILL.md +697 -0
- package/assets/skills/oat-project-goal/references/docs/autonomy-contract.md +412 -0
- package/assets/skills/oat-project-goal/references/docs/gate-approval-record.md +93 -0
- package/assets/skills/oat-project-implement/SKILL.md +1 -1
- package/assets/skills/oat-project-implement/references/completion-and-closeout.md +107 -0
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +156 -122
- package/assets/skills/oat-project-implement/references/docs/gate-approval-record.md +13 -0
- package/assets/skills/oat-project-implement/references/phase-execution.md +173 -1
- package/assets/skills/oat-project-implement/references/plan-and-resume.md +124 -3
- package/assets/skills/oat-project-import-plan/SKILL.md +5 -1
- package/assets/skills/oat-project-lite/SKILL.md +4 -1
- package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +156 -122
- package/assets/skills/oat-project-new/SKILL.md +5 -1
- package/assets/skills/oat-project-next/SKILL.md +71 -14
- package/assets/skills/oat-project-next/references/docs/gate-approval-record.md +13 -0
- package/assets/skills/oat-project-plan/SKILL.md +24 -3
- package/assets/skills/oat-project-plan-writing/SKILL.md +8 -4
- package/assets/skills/oat-project-pr-final/SKILL.md +65 -3
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +156 -122
- package/assets/skills/oat-project-pr-progress/SKILL.md +125 -4
- package/assets/skills/oat-project-progress/SKILL.md +63 -8
- package/assets/skills/oat-project-progress/references/docs/gate-approval-record.md +13 -0
- package/assets/skills/oat-project-promote-spec-driven/SKILL.md +2 -2
- package/assets/skills/oat-project-quick-start/SKILL.md +65 -1
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +156 -122
- package/assets/skills/oat-project-quick-start/references/docs/gate-approval-record.md +13 -0
- package/assets/skills/oat-project-reconcile/SKILL.md +94 -3
- package/assets/skills/oat-project-review-provide/SKILL.md +397 -12
- package/assets/skills/oat-project-review-receive/SKILL.md +155 -1
- package/assets/skills/oat-project-revise/SKILL.md +51 -4
- package/assets/skills/oat-project-summary/SKILL.md +150 -2
- package/assets/skills/oat-wave-execute/SKILL.md +3 -2
- package/assets/templates/implementation-brief.md +165 -0
- package/assets/templates/plan-brief.md +140 -0
- package/assets/templates/plan.md +1 -1
- package/assets/templates/state.md +8 -2
- package/dist/commands/project/closeout-check/closeout-invariant.d.ts +119 -3
- package/dist/commands/project/closeout-check/closeout-invariant.d.ts.map +1 -1
- package/dist/commands/project/closeout-check/closeout-invariant.js +454 -2
- package/dist/commands/project/closeout-check/index.d.ts +21 -3
- package/dist/commands/project/closeout-check/index.d.ts.map +1 -1
- package/dist/commands/project/closeout-check/index.js +190 -4
- package/dist/commands/project/complete-state/index.d.ts +2 -1
- package/dist/commands/project/complete-state/index.d.ts.map +1 -1
- package/dist/commands/project/complete-state/index.js +7 -1
- package/dist/commands/project/delivery/check.d.ts +66 -0
- package/dist/commands/project/delivery/check.d.ts.map +1 -0
- package/dist/commands/project/delivery/check.js +232 -0
- package/dist/commands/project/delivery/evidence.d.ts +171 -0
- package/dist/commands/project/delivery/evidence.d.ts.map +1 -0
- package/dist/commands/project/delivery/evidence.js +902 -0
- package/dist/commands/project/delivery/index.d.ts +7 -0
- package/dist/commands/project/delivery/index.d.ts.map +1 -0
- package/dist/commands/project/delivery/index.js +13 -0
- package/dist/commands/project/delivery/refresh.d.ts +110 -0
- package/dist/commands/project/delivery/refresh.d.ts.map +1 -0
- package/dist/commands/project/delivery/refresh.js +441 -0
- package/dist/commands/project/index.d.ts.map +1 -1
- package/dist/commands/project/index.js +2 -0
- package/dist/commands/project/log/append.d.ts +6 -0
- package/dist/commands/project/log/append.d.ts.map +1 -1
- package/dist/commands/project/log/append.js +6 -1
- package/dist/commands/project/new/scaffold.d.ts +1 -1
- package/dist/commands/project/new/scaffold.d.ts.map +1 -1
- package/dist/commands/project/new/scaffold.js +81 -7
- package/dist/commands/project/promote/promote.d.ts +46 -1
- package/dist/commands/project/promote/promote.d.ts.map +1 -1
- package/dist/commands/project/promote/promote.js +646 -5
- package/dist/commands/project/validate-plan/frontmatter.d.ts +12 -0
- package/dist/commands/project/validate-plan/frontmatter.d.ts.map +1 -0
- package/dist/commands/project/validate-plan/frontmatter.js +27 -0
- package/dist/commands/project/validate-plan/index.d.ts.map +1 -1
- package/dist/commands/project/validate-plan/index.js +62 -18
- package/dist/commands/project/validate-plan/profiles.d.ts +69 -0
- package/dist/commands/project/validate-plan/profiles.d.ts.map +1 -0
- package/dist/commands/project/validate-plan/profiles.js +420 -0
- package/dist/commands/project/validate-plan/validate-plan.d.ts +3 -19
- package/dist/commands/project/validate-plan/validate-plan.d.ts.map +1 -1
- package/dist/commands/project/validate-plan/validate-plan.js +5 -82
- package/dist/commands/shared/frontmatter.d.ts +1 -1
- package/dist/commands/shared/frontmatter.d.ts.map +1 -1
- package/dist/commands/shared/frontmatter.js +2 -0
- package/dist/commands/state/generate.d.ts.map +1 -1
- package/dist/commands/state/generate.js +82 -2
- package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -1
- package/dist/commands/tools/shared/pack-manifest.js +4 -0
- package/package.json +2 -2
|
@@ -42,7 +42,7 @@ make only the changes you approve.
|
|
|
42
42
|
|
|
43
43
|
## Key Skills by Use Case
|
|
44
44
|
|
|
45
|
-
- Start a new tracked project: `oat-project-new`, `oat-project-quick-start`,
|
|
45
|
+
- Start a new tracked project: `oat-project-new`, `oat-project-quick-start`, `oat-project-lite` for a single-sitting change with one batched interview and one approval (quick start accepts a project name plus optional description; if you omit the description it should ask before discovery begins), `oat-project-brief` for one delivery agreed in conversation, or `oat-project-goal` for an outcome delivered in milestones
|
|
46
46
|
- Resume an existing project: `oat-project-open` to select it,
|
|
47
47
|
`oat-project-progress` to see where it stands, then `oat-project-next` to
|
|
48
48
|
continue. See
|
|
@@ -118,6 +118,8 @@ for policy, storage, approval, and recovery details.
|
|
|
118
118
|
- `oat-project-new`
|
|
119
119
|
- `oat-project-quick-start`
|
|
120
120
|
- `oat-project-lite`
|
|
121
|
+
- `oat-project-brief`
|
|
122
|
+
- `oat-project-goal`
|
|
121
123
|
- `oat-project-import-plan`
|
|
122
124
|
- `oat-project-promote-spec-driven`
|
|
123
125
|
- `oat-project-open`
|
|
@@ -305,14 +307,16 @@ Visibility reports source metadata: “user” is `user-invocable` and “model
|
|
|
305
307
|
|
|
306
308
|
### Project entry
|
|
307
309
|
|
|
308
|
-
| Skill | Description
|
|
309
|
-
| -------------------------------------------------------------------------------------------------------- |
|
|
310
|
-
| [`oat-project-
|
|
311
|
-
| [`oat-project-
|
|
312
|
-
| [`oat-project-
|
|
313
|
-
| [`oat-project-
|
|
314
|
-
| [`oat-project-
|
|
315
|
-
| [`oat-project-
|
|
310
|
+
| Skill | Description | Visibility | Needs an active project? |
|
|
311
|
+
| -------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | ------------------------ |
|
|
312
|
+
| [`oat-project-brief`](../workflows/projects/planning/starting-projects.md#oat-project-brief) | Use when one delivery needs a design-aligned interview, a single approved Project Brief with phases of intent and exit evidence instead of planned tasks, and resumable OAT implementation. | user: true; model disabled: true | No |
|
|
313
|
+
| [`oat-project-capture`](../workflows/projects/planning/starting-projects.md#oat-project-capture) | Use when work happened outside the OAT project workflow and needs retroactive project tracking. Creates a full project from an existing branch and conversation context. | user: true; model disabled: true | No |
|
|
314
|
+
| [`oat-project-goal`](../workflows/projects/planning/starting-projects.md#oat-project-goal) | Use when an outcome needs several deliveries over time - one approved Project Brief with a Milestones table, a milestone loop of activation, delivery and re-alignment, and a terminal declaration audited against the brief's outcomes. | user: true; model disabled: true | No |
|
|
315
|
+
| [`oat-project-import-plan`](../workflows/projects/planning/starting-projects.md#oat-project-import-plan) | Use when you have an external markdown plan to execute with OAT. Preserves the source plan and normalizes it into canonical plan.md format. | user: true; model disabled: true | No |
|
|
316
|
+
| [`oat-project-lite`](../workflows/projects/planning/starting-projects.md#oat-project-lite) | Use when a single-sitting change needs a critical interview, an approved single-phase plan, and resumable OAT implementation with minimal ceremony. | user: true; model disabled: true | No |
|
|
317
|
+
| [`oat-project-new`](../workflows/projects/planning/starting-projects.md#oat-project-new) | Use when starting a spec-driven OAT project from scratch. Scaffolds a new project under PROJECTS_ROOT and sets it active. | user: true; model disabled: true | No |
|
|
318
|
+
| [`oat-project-quick-start`](../workflows/projects/planning/starting-projects.md#oat-project-quick-start) | Use when a task is small enough for quick mode or rapid iteration is preferred. Scaffolds a lightweight OAT project from discovery directly to a runnable plan, with optional brainstorming and lightweight design. | user: true; model disabled: true | No |
|
|
319
|
+
| [`oat-project-split`](../workflows/projects/planning/starting-projects.md#oat-project-split) | Use when a discovery or brainstorm should split one broad scope into coordinated OAT child projects. | user: true; model disabled: true | No |
|
|
316
320
|
|
|
317
321
|
### Project execution
|
|
318
322
|
|
|
@@ -336,11 +336,21 @@ must resolve before the run makes any change.
|
|
|
336
336
|
and a dispatch policy is already configured. You authorize the bounded
|
|
337
337
|
resumable-export goal through a final PR without ordinary mid-run approval
|
|
338
338
|
pauses. Autonomous entry chooses
|
|
339
|
-
lite, quick, or spec-driven review density from the actual uncertainty and
|
|
340
|
-
invokes its owning creation skill.
|
|
339
|
+
lite, brief, quick, or spec-driven review density from the actual uncertainty and
|
|
340
|
+
invokes its owning creation skill. It never selects goal: each milestone's
|
|
341
|
+
approval and the final declaration need a person, so an existing goal project
|
|
342
|
+
stops at a product-judgment boundary instead of running unattended. If an export-filter project is already
|
|
341
343
|
active, the second example explicitly resumes its earliest incomplete step
|
|
342
344
|
instead of replaying finished phases.
|
|
343
345
|
|
|
346
|
+
When autonomous entry selects brief, `oat-project-brief` derives the project
|
|
347
|
+
name and description only from the explicit goal and stops if it is not
|
|
348
|
+
substantive. The brief's single approval resolves autonomously under
|
|
349
|
+
`BRIEF-11`: the reviewed brief is approved and the approval line records the
|
|
350
|
+
autonomous run, while contradictory or materially incomplete outcomes stop at
|
|
351
|
+
a product-judgment boundary. A brief records no HiLL checkpoints unless it
|
|
352
|
+
lists phases explicitly.
|
|
353
|
+
|
|
344
354
|
**Expected output:** Session-only autonomy signals, persisted lifecycle
|
|
345
355
|
progress, reviewed task commits, and project-local execution learnings. Existing
|
|
346
356
|
projects retain their mode. A successful run reports the actual final PR and
|
|
@@ -22,8 +22,8 @@ constraints:
|
|
|
22
22
|
agents to implement and review each phase, or no cap, or leaving model choice
|
|
23
23
|
to the provider; and deciding where the list of candidate models (the
|
|
24
24
|
_ladder_) is stored.
|
|
25
|
-
- **Who needs it:** anyone starting a quick, spec-driven, lite,
|
|
26
|
-
project, because planning asks you to choose a policy; and team leads who
|
|
25
|
+
- **Who needs it:** anyone starting a quick, spec-driven, lite, brief, goal,
|
|
26
|
+
or imported project, because planning asks you to choose a policy; and team leads who
|
|
27
27
|
manage model cost.
|
|
28
28
|
- **Know first:** there is no default policy, and a policy set in any config
|
|
29
29
|
file overrides the one each project chose. A tier is a cap: phase agents may
|
|
@@ -98,7 +98,7 @@ string, and the lifecycle executes it unchanged; OAT does not inject, reorder,
|
|
|
98
98
|
or rewrite its shell arguments.
|
|
99
99
|
|
|
100
100
|
`oat-project-plan`, `oat-project-implement`, `oat-project-quick-start`,
|
|
101
|
-
`oat-project-lite`, and `oat-project-import-plan` are currently gate-aware. Gate awareness is declared
|
|
101
|
+
`oat-project-lite`, `oat-project-brief`, `oat-project-goal`, and `oat-project-import-plan` are currently gate-aware. Gate awareness is declared
|
|
102
102
|
in skill frontmatter with `oat_gateable: true`, and
|
|
103
103
|
`oat internal validate-oat-skills` warns when config targets a missing or
|
|
104
104
|
non-gateable skill.
|
|
@@ -249,7 +249,7 @@ for it.
|
|
|
249
249
|
|
|
250
250
|
### Gate approval records
|
|
251
251
|
|
|
252
|
-
|
|
252
|
+
Three lifecycle gates persist their outcome in project `state.md` with a shared
|
|
253
253
|
five-field core:
|
|
254
254
|
|
|
255
255
|
| Field | Meaning |
|
|
@@ -277,8 +277,26 @@ carries exactly the core:
|
|
|
277
277
|
- a gate that is not configured writes no record (implement writes
|
|
278
278
|
`allowed/no_gate` instead).
|
|
279
279
|
|
|
280
|
-
`
|
|
281
|
-
|
|
280
|
+
`oat_brief_gate`, written by `oat-project-brief` for its configured gate on the
|
|
281
|
+
committed brief, carries exactly the same core with the same outcome rules. It
|
|
282
|
+
is provenance only: no route reads it back, and the brief's single approval
|
|
283
|
+
still follows the gate.
|
|
284
|
+
|
|
285
|
+
A goal project records its gate outcomes per milestone instead, in
|
|
286
|
+
`oat_milestone_gates`, and never in `oat_brief_gate`. The configured
|
|
287
|
+
`oat-project-goal` gate on the brief or a milestone amendment becomes that
|
|
288
|
+
milestone's `plan` carrier, `oat_milestone_gates[mNN].plan`, written with
|
|
289
|
+
`status: allowed` only after the artifact review, the gate, and your approval;
|
|
290
|
+
for a re-alignment amendment it is the only approval evidence. The implement
|
|
291
|
+
exit gate at milestone closeout writes `oat_milestone_gates[mNN].exit` (never
|
|
292
|
+
`oat_implement_exit_gate`, which goal uses only at terminal closeout). It runs
|
|
293
|
+
before the milestone's integrated review and runs again after queued fixes.
|
|
294
|
+
`oat project delivery check` reports the exit carrier's freshness, and
|
|
295
|
+
`oat project delivery refresh` marks it stale when delivery evidence no longer
|
|
296
|
+
holds.
|
|
297
|
+
|
|
298
|
+
`oat-project-next` and `oat-project-progress` report the quick-start record
|
|
299
|
+
(and `oat-project-progress` the brief record) as recorded: status, disposition, `decided_at`, and `config_fingerprint` as
|
|
282
300
|
provenance, or `malformed` when the fields do not form a valid record. They do
|
|
283
301
|
not recompute the fingerprint, because no CLI emits a canonical one for the
|
|
284
302
|
quick-start gate, and they never route on the record: quick plan readiness
|
|
@@ -840,7 +858,7 @@ oat gate set oat-project-implement \
|
|
|
840
858
|
```
|
|
841
859
|
|
|
842
860
|
Apply the same command shape to `oat-project-plan`,
|
|
843
|
-
`oat-project-quick-start`, `oat-project-lite`, and `oat-project-import-plan` when those lifecycle
|
|
861
|
+
`oat-project-quick-start`, `oat-project-lite`, `oat-project-brief`, `oat-project-goal`, and `oat-project-import-plan` when those lifecycle
|
|
844
862
|
skills have configured review gates. Do not add `--target`; explicit targets
|
|
845
863
|
remain manual/debug or deliberate local/user-specific overrides.
|
|
846
864
|
|
|
@@ -1234,8 +1252,8 @@ as a failed gate, never as a pass.
|
|
|
1234
1252
|
|
|
1235
1253
|
How the skills handle that case differs:
|
|
1236
1254
|
|
|
1237
|
-
- `oat-project-implement
|
|
1238
|
-
`onFailure` says, so even a `warn` gate does not let them continue.
|
|
1255
|
+
- `oat-project-implement`, `oat-project-lite`, `oat-project-brief`, and
|
|
1256
|
+
`oat-project-goal` keep it blocked whatever `onFailure` says, so even a `warn` gate does not let them continue.
|
|
1239
1257
|
- `oat-project-plan`, `oat-project-quick-start`, and `oat-project-import-plan`
|
|
1240
1258
|
apply your `onFailure` setting to any failed gate run, including one where no
|
|
1241
1259
|
review happened. With `block`, they retry and then hand the problem to you,
|
|
@@ -15,14 +15,16 @@ to the detail.
|
|
|
15
15
|
A HiLL (human-in-the-loop lifecycle) checkpoint is a point where the agent
|
|
16
16
|
stops and waits for a person to approve before it continues.
|
|
17
17
|
|
|
18
|
-
| Mode | A person approves before code is written | Pauses during implementation
|
|
19
|
-
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
20
|
-
| No project | You direct each step yourself | None
|
|
21
|
-
| Lite | Once: the requirements and the single-phase plan | None
|
|
22
|
-
|
|
|
23
|
-
|
|
|
24
|
-
|
|
|
25
|
-
|
|
|
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 |
|
|
26
28
|
|
|
27
29
|
Phase reviews need no person. The final review always runs, but an interactive
|
|
28
30
|
run first asks how to run it unless `workflow.reviewExecutionModel` is set. If
|
|
@@ -46,6 +48,16 @@ What does and does not give a person a say on the plan:
|
|
|
46
48
|
|
|
47
49
|
- **Lite:** its single approval covers the requirements and the plan, and the
|
|
48
50
|
decision is written into `plan.md`.
|
|
51
|
+
- **Brief:** its single approval covers the reviewed Project Brief. The
|
|
52
|
+
interview reaches explicit design alignment first, so approval confirms a
|
|
53
|
+
design you already agreed to; the artifact review and any configured
|
|
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.
|
|
49
61
|
- **Spec-driven:** `/oat-project-plan` asks "Does this breakdown make sense? Any
|
|
50
62
|
tasks missing?" in the chat and revises until you confirm. That confirmation
|
|
51
63
|
is not recorded as an approval, and the automatic review that follows can
|
|
@@ -123,7 +135,11 @@ and any budget that runs out adds one read-only complexity-review run.
|
|
|
123
135
|
pushes your branch after archiving a synced project, whether or not it opens
|
|
124
136
|
a pull request. Autonomous runs also push the branch, without force, after
|
|
125
137
|
each lifecycle step such as planning and implementation. See
|
|
126
|
-
[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.
|
|
127
143
|
|
|
128
144
|
## Set it up the way you want
|
|
129
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, 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
|
|
@@ -48,6 +48,8 @@ Stay with direct CLI usage when:
|
|
|
48
48
|
|
|
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
|
+
- 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
|
|
51
53
|
- Quick mode: tracked work with a lighter upfront planning path
|
|
52
54
|
- Spec-driven mode: explicit discovery, requirements, design, and plan artifacts
|
|
53
55
|
- Import mode: an externally-authored plan imported into OAT for tracked execution
|
|
@@ -78,13 +80,15 @@ it by running that mode's entry skill, and the skill creates the project for
|
|
|
78
80
|
you. An OAT project is a folder of tracked files (plan, state, reviews) that lets
|
|
79
81
|
an agent pick the work up again in a later session.
|
|
80
82
|
|
|
81
|
-
| Mode | Start it with | Choose it when
|
|
82
|
-
| ----------- | ----------------------------------------------- |
|
|
83
|
-
| 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
|
|
84
|
-
| Lite | `/oat-project-lite` | The change fits in one sitting and the outcome is clear
|
|
85
|
-
|
|
|
86
|
-
|
|
|
87
|
-
|
|
|
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 |
|
|
88
92
|
|
|
89
93
|
Type the skill names in your coding agent's chat, not a terminal; Codex uses
|
|
90
94
|
`$` instead of `/`. No mode ever merges a pull request. Separately,
|
|
@@ -105,6 +109,18 @@ is what holds the planning conversation, so start with the skill.
|
|
|
105
109
|
asking, so start it on a feature branch; if you do not want that, choose
|
|
106
110
|
quick instead, which opens a pull request only when
|
|
107
111
|
`workflow.postImplementSequence` asks for one or the run is autonomous.
|
|
112
|
+
- If you can agree the outcome and the design with your agent in one
|
|
113
|
+
conversation and want to approve that once, choose brief. You approve one
|
|
114
|
+
reviewed Project Brief; the agent then works phase by phase and records each
|
|
115
|
+
task as it happens rather than planning them all first. Promote it to quick
|
|
116
|
+
with `oat project promote <path> --to quick` if you later want a maintained
|
|
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.
|
|
108
124
|
- If your team is building a feature with agreed, bounded requirements, choose
|
|
109
125
|
quick. A long task list alone does not call for a formal spec.
|
|
110
126
|
- If the change is high-risk or regulated, or its requirements are still being
|
|
@@ -37,4 +37,4 @@ If the thought is still pre-shape — you don't know whether it should land as a
|
|
|
37
37
|
|
|
38
38
|
## Promotion Path
|
|
39
39
|
|
|
40
|
-
When an idea becomes concrete, summarize it and then start a tracked OAT project in lite, quick, or spec-driven mode depending on scope and design risk. Lite suits a single-sitting change and seeds `plan.md` directly; quick and spec-driven seed `discovery.md` instead.
|
|
40
|
+
When an idea becomes concrete, summarize it and then start a tracked OAT project in lite, brief, goal, quick, or spec-driven mode depending on scope and design risk. Lite suits a single-sitting change and seeds `plan.md` directly; brief and goal write their Project Brief into `plan.md` through an interview; quick and spec-driven seed `discovery.md` instead.
|
|
@@ -63,8 +63,9 @@ Where to start:
|
|
|
63
63
|
- **Worth exploring:** `oat-idea-new`. `oat-idea-ideate` resumes an idea, can
|
|
64
64
|
start one from a scratchpad seed, and can reopen a summarized idea.
|
|
65
65
|
- **Scoped work for later:** `oat-pjm-add-backlog-item` (needs `oat pjm init`).
|
|
66
|
-
- **Ready to build:** `oat-project-lite`, `oat-project-
|
|
67
|
-
`oat-project-
|
|
66
|
+
- **Ready to build:** `oat-project-lite`, `oat-project-brief`,
|
|
67
|
+
`oat-project-goal`, `oat-project-quick-start`, `oat-project-new`, or
|
|
68
|
+
`oat-project-import-plan` for a plan written elsewhere.
|
|
68
69
|
|
|
69
70
|
Optional moves:
|
|
70
71
|
|
|
@@ -131,6 +131,28 @@ For a synced project, project artifacts are published to the project ref with
|
|
|
131
131
|
refreshes project metadata. Declining leaves the description available without
|
|
132
132
|
claiming a PR exists.
|
|
133
133
|
|
|
134
|
+
**Goal projects:** in a goal project a progress PR is a milestone delivery,
|
|
135
|
+
and this skill registers it. Its scope is the router's `deliver mNN` (or
|
|
136
|
+
`deliver mNN/dNN`) context or a pending `oat_goal_recovery` record at stage
|
|
137
|
+
`delivering`: the milestone's ordered phase set, or a registered delivery's
|
|
138
|
+
frozen scope, never a `pNN-pMM` range or commit labels. The description's Git
|
|
139
|
+
range runs from the set's first anchored base to its last anchored head and
|
|
140
|
+
names any other milestone's phases that fall inside it. In place of the
|
|
141
|
+
optional PR question, the skill runs `oat project delivery refresh` when
|
|
142
|
+
deliveries exist and registers only when
|
|
143
|
+
`oat project delivery check --subject <mNN|dNN>` reports `status: ok`. It
|
|
144
|
+
commits a `registering` registry entry before creating anything, then creates
|
|
145
|
+
the PR, or on resume attaches the single PR that `gh pr list` finds for the
|
|
146
|
+
head branch (more than one match stops at `oat-project-reconcile`). It then
|
|
147
|
+
records the member, `status: open`, and `oat_milestone_status: delivered`, and
|
|
148
|
+
appends one structural project-log entry. Stale review or exit-gate evidence
|
|
149
|
+
stops before registration: for the active milestone the skill writes
|
|
150
|
+
`oat_milestone_status: reviewing` and an `oat_goal_recovery` record at the
|
|
151
|
+
stage the missing evidence names; for an older milestone it writes only the
|
|
152
|
+
recovery record. A milestone that already has a registered delivery is
|
|
153
|
+
re-checked and returned to `delivered` when its evidence is fresh, never
|
|
154
|
+
registered twice.
|
|
155
|
+
|
|
134
156
|
**Next step:** Review the description and choose whether to open the progress
|
|
135
157
|
PR. Continue remaining project tasks through `oat-project-implement`.
|
|
136
158
|
|
|
@@ -150,8 +172,9 @@ inputs select its destination and title.
|
|
|
150
172
|
**Prerequisites:** Needs an active OAT project: yes. If no project is active,
|
|
151
173
|
the skill asks for the project name and sets that project as active. The
|
|
152
174
|
project needs `plan.md`. Spec-driven mode also requires `spec.md` and `design.md`. Quick,
|
|
153
|
-
import, and
|
|
154
|
-
`final` code-review event in the plan's Reviews
|
|
175
|
+
import, lite, brief, and goal accept their mode-appropriate reduced artifacts.
|
|
176
|
+
Outside goal mode, the latest `final` code-review event in the plan's Reviews
|
|
177
|
+
ledger should be `passed`.
|
|
155
178
|
Autonomous execution stops if it is not passed. Interactive execution warns
|
|
156
179
|
and asks before proceeding anyway.
|
|
157
180
|
|
|
@@ -172,6 +195,19 @@ and base branch when you did not pass them, the only question it asks is
|
|
|
172
195
|
whether to continue when the latest final review has not passed. It never
|
|
173
196
|
merges the PR.
|
|
174
197
|
|
|
198
|
+
**Goal projects:** in a goal project this skill is the terminal delivery
|
|
199
|
+
registration owner, not a second project PR. It runs its own registration step
|
|
200
|
+
in place of the final-review check and PR creation described above. It
|
|
201
|
+
requires `oat_goal_status: declared_met` and a valid outcome audit, read
|
|
202
|
+
through `oat project closeout-check`; any refusal other than `phase-uncovered`
|
|
203
|
+
routes to the skill named in `nextOwner.skill`. When no accepted phase is
|
|
204
|
+
uncovered, it creates no PR and writes no state, because delivery coverage
|
|
205
|
+
already satisfies the `pr` step. Otherwise it registers one terminal delivery
|
|
206
|
+
per milestone that owns uncovered accepted phases, in milestone order, through
|
|
207
|
+
the same registration contract as `oat-project-pr-progress`. Deliveries
|
|
208
|
+
registered from one head branch share its pull request. Coverage completes
|
|
209
|
+
when every terminal delivery reaches its agreed endpoint.
|
|
210
|
+
|
|
175
211
|
**Example scenario:** Export filters and audit reporting are implemented, the
|
|
176
212
|
latest final review has passed, and you have authorized publication. Final PR
|
|
177
213
|
summarizes the complete change, including review evidence and verification.
|
|
@@ -351,6 +387,17 @@ implementation tracking, and state are updated for execution. Inline requests
|
|
|
351
387
|
are not severity-triaged. Structured GitHub feedback and review artifacts route
|
|
352
388
|
through their corresponding review-receive skills and use those contracts.
|
|
353
389
|
|
|
390
|
+
**Goal projects:** inline feedback needs an explicit target before anything is
|
|
391
|
+
written: a milestone or delivery identity (`mNN` or `mNN/dNN`). The skill asks
|
|
392
|
+
for it when you did not name it, and never infers it from the open PR's commit
|
|
393
|
+
labels. The revision is a phase-only `p-revN` appended to that milestone's
|
|
394
|
+
`## Milestones` row; a registered delivery's frozen scope is never edited. The
|
|
395
|
+
target's exit carrier, and a registered target delivery's integrated review,
|
|
396
|
+
are marked stale. When the target is the active milestone, the skill returns
|
|
397
|
+
it to `oat_milestone_status: implementing`. Feedback on an older milestone
|
|
398
|
+
creates or advances an `oat_goal_recovery` record instead and leaves the
|
|
399
|
+
active milestone's status and execution pointer unchanged.
|
|
400
|
+
|
|
354
401
|
**Next step:** If revise did not continue into implementation on its own, run
|
|
355
402
|
`oat-project-implement` to execute the revision tasks. After verification,
|
|
356
403
|
update the open PR and its review evidence. Revise itself does not write code
|
|
@@ -378,7 +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 projects do not require
|
|
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.
|
|
382
435
|
|
|
383
436
|
**Example scenario:** Export filters shipped, but the user guide still describes
|
|
384
437
|
only unfiltered exports. Document verifies the actual endpoint and CLI behavior,
|
|
@@ -430,7 +483,12 @@ Summarize the delivered export filters, the date-format decision, and the audit-
|
|
|
430
483
|
completed task. Missing implementation tracking blocks summary generation.
|
|
431
484
|
With no completed tasks, the process warns that the summary will be minimal.
|
|
432
485
|
Lite uses its plan contract and implementation results without requiring
|
|
433
|
-
discovery, spec, or design artifacts.
|
|
486
|
+
discovery, spec, or design artifacts. Brief needs at least one accepted
|
|
487
|
+
phase-unit and draws on the brief's Goal, Outcomes, Approach, and Decisions
|
|
488
|
+
plus the journal; its staleness fingerprint changes when a phase is accepted,
|
|
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.
|
|
434
492
|
|
|
435
493
|
**Example scenario:** The first export phase is delivered, and another engineer
|
|
436
494
|
will own the reporting phase next week. Summary records the shipped filter
|
|
@@ -466,6 +524,15 @@ It only offers, and does not create without your answer, backlog items for
|
|
|
466
524
|
follow-up entries in the project log. It does not invent tasks or silently
|
|
467
525
|
rewrite the execution plan.
|
|
468
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
|
+
|
|
469
536
|
**Next step:** Use the summary as a source for documentation, PR description,
|
|
470
537
|
and later project handoff. Refresh it after revisions. Complete the project
|
|
471
538
|
only when its lifecycle closeout requirements are satisfied.
|
|
@@ -492,7 +559,12 @@ you invoke it by name. Before it changes anything, it runs a read-only check
|
|
|
492
559
|
that the project's stored closeout sequence is finished (or that the project
|
|
493
560
|
has none). If an implementation closeout is still incomplete, the skill sends
|
|
494
561
|
you back to `oat-project-implement`; no phase-status value bypasses that
|
|
495
|
-
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.
|
|
496
568
|
|
|
497
569
|
**What it does without asking:** the skill asks once, then acts. One combined
|
|
498
570
|
prompt asks you to confirm completion and, where they apply, whether to
|
|
@@ -513,6 +585,12 @@ runs `oat-project-summary`, with its own commit and decision promotion, and an
|
|
|
513
585
|
archive runs `oat project archive`, including an S3 upload when
|
|
514
586
|
`archive.s3SyncOnComplete` is enabled.
|
|
515
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
|
+
|
|
516
594
|
**Example scenario:** The export project has passed final verification and its
|
|
517
595
|
stored closeout sequence, but the PR is still open. Complete finalizes lifecycle
|
|
518
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:
|
|
@@ -18,12 +22,16 @@ Expected artifacts:
|
|
|
18
22
|
- Required (spec-driven mode): `spec.md`, `design.md`
|
|
19
23
|
- Optional (quick/import): `spec.md`, `design.md`
|
|
20
24
|
- Not expected (lite): `discovery.md`, `spec.md`, or `design.md`
|
|
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
|
|
21
27
|
- Recommended (quick mode): `discovery.md`
|
|
22
28
|
- Recommended (import mode): `references/imported-plan.md`
|
|
23
29
|
- Recommended: `implementation.md` final summary
|
|
24
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
|
|
25
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
|
|
26
|
-
-
|
|
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
|
|
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)
|
|
27
35
|
|
|
28
36
|
## Output
|
|
29
37
|
|
|
@@ -92,14 +92,39 @@ 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 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
|
|
99
99
|
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
|
-
resume. A lite project has no checkpoints and skips both questions.
|
|
102
|
+
resume. A lite project has no checkpoints and skips both questions. A brief
|
|
103
|
+
or goal project skips them too unless its `oat_plan_hill_phases` lists phases
|
|
104
|
+
explicitly; for those modes, `[]` means no checkpoints.
|
|
105
|
+
|
|
106
|
+
**Brief projects:** Each `## Phase pNN:` block in the brief is one
|
|
107
|
+
phase-unit with Intent and Exit evidence instead of planned tasks. The root
|
|
108
|
+
records the phase's `**Base:**` in a phase-start commit before dispatch, the
|
|
109
|
+
committing owner opens `### Task pNN-tNN` execution records in
|
|
110
|
+
`implementation.md` as work happens and writes `**Head:**` when the phase's
|
|
111
|
+
work ends, a fresh reviewer reviews the anchored `Base..Head` range, and only
|
|
112
|
+
the root writes `**Status:** completed` once review dispositions and selected
|
|
113
|
+
gates settle. Progress and the next-phase decision count phase-units, never
|
|
114
|
+
records.
|
|
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 }`.
|
|
103
128
|
|
|
104
129
|
**What it does without asking:** After those questions, the run continues
|
|
105
130
|
until a checkpoint, a blocker or the end of the plan without asking again,
|
|
@@ -16,6 +16,10 @@ 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 or goal project each phase carries Intent and Exit
|
|
20
|
+
evidence instead of tasks; execution records are opened in the journal as
|
|
21
|
+
work happens, and the phase's `**Base:**`/`**Head:**` anchors scope its
|
|
22
|
+
review.
|
|
19
23
|
- **Prevention boundary:** formatting, declared task verification, and
|
|
20
24
|
applicable cheap checks run before the task commit.
|
|
21
25
|
- **Recovery boundary:** an eligible post-commit defect may produce a separate
|
|
@@ -514,6 +518,17 @@ and declare no parallel groups, so lite implementation is always sequential;
|
|
|
514
518
|
`oat project validate-plan` enforces both rules. Work that needs more than one
|
|
515
519
|
phase should promote to quick rather than declare a parallel group.
|
|
516
520
|
|
|
521
|
+
Brief plans may declare parallel groups of taskless phases once those phases
|
|
522
|
+
are concrete and pass the independence test (no shared files, state,
|
|
523
|
+
generated output, fixtures, or services, and no sequential dependency). A
|
|
524
|
+
group member's per-phase review runs before fan-in on
|
|
525
|
+
`EXPECTED_HEAD..<worktree head>`. At fan-in the root writes every member's
|
|
526
|
+
`**Base:**` as the group's fork commit and its `**Head:**` as the member's
|
|
527
|
+
integration head, which is normally a merge commit but may be the last
|
|
528
|
+
cherry-picked commit; review scope checks only the shared fork base and that
|
|
529
|
+
member heads advance in document order. The fan-in anchors govern the
|
|
530
|
+
`pNN-pMM` and `final` review scopes.
|
|
531
|
+
|
|
517
532
|
## Synced projects in worktrees
|
|
518
533
|
|
|
519
534
|
A tracked `.oat/projects/synced/<project>.json` record lets every repository
|
|
@@ -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 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
|
|
@@ -81,6 +81,25 @@ durable `## Reviews` disposition, and a substantive task; only then do they
|
|
|
81
81
|
recommend `oat-project-implement`. Recommendations for lite, spec-driven, and
|
|
82
82
|
import projects are unchanged, because the predicate is quick-workflow policy.
|
|
83
83
|
|
|
84
|
+
For a brief project, the router counts phase-units from the journal. While the
|
|
85
|
+
brief is not yet approved, it recommends `oat-project-brief`. After
|
|
86
|
+
implementation, while any phase is provisional or not yet accepted with
|
|
87
|
+
`**Status:** completed`, it recommends `oat-project-implement` ("Incomplete
|
|
88
|
+
phase-units remain in the active scope") before every later check. The
|
|
89
|
+
`.oat/state.md` dashboard does not read phase-units, so at the end of
|
|
90
|
+
implementation it prints a note that `oat project status` and
|
|
91
|
+
`oat-project-next` are the authority for brief projects.
|
|
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
|
+
|
|
84
103
|
## What travels
|
|
85
104
|
|
|
86
105
|
- The project ref carries the complete active artifact tree and its history.
|