@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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Lifecycle
|
|
3
|
-
description: 'End-to-end phase flow from discovery through completion: spec-driven, quick, lite, and import paths.'
|
|
3
|
+
description: 'End-to-end phase flow from discovery through completion: spec-driven, quick, lite, brief, goal, and import paths.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Lifecycle
|
|
@@ -29,9 +29,9 @@ For a one-page view of where people approve and what runs automatically in each
|
|
|
29
29
|
|
|
30
30
|
## Quick Look
|
|
31
31
|
|
|
32
|
-
- What it does: explains the end-to-end lifecycle for tracked OAT projects, including alternate quick, lite, and import lanes.
|
|
32
|
+
- What it does: explains the end-to-end lifecycle for tracked OAT projects, including alternate quick, lite, brief, goal, and import lanes.
|
|
33
33
|
- When to use it: when you need the actual project execution model, not just a high-level overview of workflow mode.
|
|
34
|
-
- Primary entry points: `oat-project-new`, `oat-project-quick-start`, `oat-project-lite`, `oat-project-import-plan`, `oat-project-implement`
|
|
34
|
+
- Primary entry points: `oat-project-new`, `oat-project-quick-start`, `oat-project-lite`, `oat-project-brief`, `oat-project-goal`, `oat-project-import-plan`, `oat-project-implement`
|
|
35
35
|
|
|
36
36
|
## Lifecycle Map
|
|
37
37
|
|
|
@@ -51,9 +51,10 @@ For a one-page view of where people approve and what runs automatically in each
|
|
|
51
51
|
DOC --> C["Complete"]
|
|
52
52
|
```
|
|
53
53
|
|
|
54
|
-
This map shows the spec-driven default. The quick, lite,
|
|
55
|
-
lanes each skip part of it — see [Lane diagrams](#lane-diagrams)
|
|
56
|
-
particular
|
|
54
|
+
This map shows the spec-driven default. The quick, lite, brief, goal, import,
|
|
55
|
+
and capture lanes each skip part of it — see [Lane diagrams](#lane-diagrams)
|
|
56
|
+
below. Lite, brief, and goal in particular have no discovery, spec, or design
|
|
57
|
+
step at all.
|
|
57
58
|
|
|
58
59
|
## Post-implementation flow
|
|
59
60
|
|
|
@@ -337,6 +338,24 @@ See [Implementation Execution](execution/implementation-execution.md) for the fu
|
|
|
337
338
|
3. Pass the mandatory final review, then route directly to `oat-project-pr-final`
|
|
338
339
|
4. Optional `oat project promote <project-path> --to quick` when the work no longer fits one sitting
|
|
339
340
|
|
|
341
|
+
### Brief lane steps
|
|
342
|
+
|
|
343
|
+
1. `oat-project-brief` runs a design-aligned interview in readiness rounds, writes one Project Brief in `plan.md` (Goal, numbered Outcomes, Approach, Constraints and Out of Scope, Decisions, Known Unknowns, Delivery endpoint and authority, and `## Phase pNN:` blocks with Intent and Exit evidence), commits it, runs the independent artifact review and any configured `oat-project-brief` gate, and asks for one approval
|
|
344
|
+
2. Implement: `oat-project-implement` executes one phase-unit at a time (or a declared parallel group), opening `### Task pNN-tNN` execution records in `implementation.md` as work happens and recording each phase's `**Base:**` and `**Head:**` anchors
|
|
345
|
+
3. A fresh independent review of each phase on its anchored range, then the final review, whose scope comes from the anchors; completion is audited against the brief's Outcomes
|
|
346
|
+
4. `oat-project-pr-final`, through the same post-implementation sequence as quick
|
|
347
|
+
5. Optional `oat project promote <project-path> --to quick` when you want a maintained task plan instead
|
|
348
|
+
|
|
349
|
+
### Goal lane steps
|
|
350
|
+
|
|
351
|
+
1. `oat-project-goal` runs the brief interview for the whole outcome, writes one Project Brief whose `## Milestones` table assigns every phase to exactly one milestone (`| m01 | p01, p02 |`), runs the artifact review and any configured `oat-project-goal` gate, asks for one approval, and activates the first milestone
|
|
352
|
+
2. Implement: `oat-project-implement` executes the active milestone's phase-units as brief does, then runs the milestone closeout, whose `exit` gate runs before the integrated review
|
|
353
|
+
3. `oat-project-review-provide` reviews the milestone as `code mNN: <ordered phases>`; `oat-project-review-receive` moves a clean review to delivery
|
|
354
|
+
4. `oat-project-pr-progress` checks the evidence with `oat project delivery check`, registers the delivery (`dNN`) in `oat_deliveries`, and opens its pull request
|
|
355
|
+
5. `oat-project-goal` re-aligns at `delivered`: it refreshes delivery observations, captures learnings, amends the brief with the next milestone, takes the amendment through review and approval, and activates it once the previous delivery reaches its agreed endpoint
|
|
356
|
+
6. Repeat from step 2 per milestone; when the user declares the goal met, `oat-project-goal` records an exhaustive outcome audit, `oat-project-pr-final` registers terminal deliveries for any accepted phases no delivery covers, and `oat-project-complete` closes out once every accepted phase is covered
|
|
357
|
+
7. Optional `oat project promote <project-path> --to quick` at a settled delivery boundary
|
|
358
|
+
|
|
340
359
|
### Import lane steps
|
|
341
360
|
|
|
342
361
|
1. `oat-project-import-plan` (checks inherited git state before import scaffolding so sync-generated or unrelated dirty files do not silently roll into project bookkeeping)
|
|
@@ -495,6 +514,150 @@ sections, an unresolved scope, or an unreadable template each return a stable
|
|
|
495
514
|
categorical `reason` and exit non-zero. See
|
|
496
515
|
[CLI Reference](../../reference/cli-reference.md) for the full refusal contract.
|
|
497
516
|
|
|
517
|
+
### Brief lane
|
|
518
|
+
|
|
519
|
+
=== "Diagram"
|
|
520
|
+
|
|
521
|
+

|
|
522
|
+

|
|
523
|
+
|
|
524
|
+
=== "Mermaid source"
|
|
525
|
+
|
|
526
|
+
```mermaid
|
|
527
|
+
flowchart TD
|
|
528
|
+
A["Alignment interview\n(readiness rounds)"] --> B["Project Brief\n(review, gate, one approval)"]
|
|
529
|
+
B --> I["Phase-units\n(oat-project-implement)"]
|
|
530
|
+
I --> PR["Per-phase review\n(anchored range)"]
|
|
531
|
+
PR -->|Next phase| I
|
|
532
|
+
PR --> F["Final review\n(audited against Outcomes)"]
|
|
533
|
+
F --> P["PR (oat-project-pr-final)"]
|
|
534
|
+
B -->|Task plan wanted| Q["Promote to Quick"]
|
|
535
|
+
```
|
|
536
|
+
|
|
537
|
+
A brief project has one authored artifact: the Project Brief in `plan.md`.
|
|
538
|
+
Each `## Phase pNN:` block is one **phase-unit** with `**Intent:**`,
|
|
539
|
+
`**Exit evidence:**`, and `**Provisional:**` lines; only the next phase must
|
|
540
|
+
be concrete, and the agent may add, split, or reorder phases inside the
|
|
541
|
+
approved outcomes, constraints, and authority. Progress counts phase-units, and
|
|
542
|
+
a phase counts as complete only when the root writes `**Status:** completed`
|
|
543
|
+
under it in `implementation.md` after its review and any selected gate settle.
|
|
544
|
+
Tasks are execution records written as work happens, never a plan, so they
|
|
545
|
+
never change progress totals.
|
|
546
|
+
|
|
547
|
+
Each phase records `**Base:**` before work starts and `**Head:**` when its work
|
|
548
|
+
ends. Reviews take their range from those anchors rather than from commit
|
|
549
|
+
messages; invalid or contradictory anchors stop and route to
|
|
550
|
+
`oat-project-reconcile`. A fix after a later phase has started becomes an
|
|
551
|
+
appended `p-revN` revision phase. The shared rules live in the bundled brief
|
|
552
|
+
contract (`oat-project-brief/references/brief-contract.md`).
|
|
553
|
+
|
|
554
|
+
### Promoting a brief project to quick
|
|
555
|
+
|
|
556
|
+
`oat project promote <project-path> --to quick` converts a brief in place, and
|
|
557
|
+
there is no reverse direction. Accepted phases keep their completed execution
|
|
558
|
+
records as quick tasks (or get one synthesized `Accepted via phase evidence`
|
|
559
|
+
task against the phase head), active phases keep their completed records, and
|
|
560
|
+
pending or provisional phases stay taskless. The command lists the phases that
|
|
561
|
+
still need tasks in `oat_promotion_pending_phases`, and quick plan readiness
|
|
562
|
+
stays false until `oat-project-quick-start` authors them. The brief's
|
|
563
|
+
sections are rendered into `discovery.md` and the original is archived to
|
|
564
|
+
`references/brief-archive.md`.
|
|
565
|
+
|
|
566
|
+
Promotion writes nothing and refuses with a categorical reason when
|
|
567
|
+
`references/brief-archive.md` already exists (`brief-archive-exists`), a
|
|
568
|
+
journal phase is `extracted` (`extracted-phases`), the brief has no parseable
|
|
569
|
+
phases (`invalid-brief-plan`), or an accepted phase has neither a completed
|
|
570
|
+
record nor a `**Head:**` anchor to synthesize from (`missing-phase-head`, which
|
|
571
|
+
lists the refused phases).
|
|
572
|
+
|
|
573
|
+
### Goal lane
|
|
574
|
+
|
|
575
|
+
=== "Diagram"
|
|
576
|
+
|
|
577
|
+

|
|
578
|
+

|
|
579
|
+
|
|
580
|
+
=== "Mermaid source"
|
|
581
|
+
|
|
582
|
+
```mermaid
|
|
583
|
+
flowchart TD
|
|
584
|
+
A["Alignment interview\n(whole outcome, milestone split)"] --> B["Project Brief + Milestones\n(review, gate, one approval)"]
|
|
585
|
+
B --> M["Activate milestone mNN\n(oat-project-goal)"]
|
|
586
|
+
M --> I["Phase-units\n(implement, per-phase reviews)"]
|
|
587
|
+
I --> X["Milestone closeout\n(exit gate before the review)"]
|
|
588
|
+
X --> R["Integrated review\n(code mNN: ordered phases)"]
|
|
589
|
+
R --> D["Delivery dNN\n(oat-project-pr-progress)"]
|
|
590
|
+
D --> RA["Re-alignment\n(learnings, amendment, approval)"]
|
|
591
|
+
RA -->|Next milestone at endpoint| M
|
|
592
|
+
RA --> T["Terminal declaration\n(exhaustive outcome audit)"]
|
|
593
|
+
T --> C["Coverage closeout\n(pr-final for uncovered, complete)"]
|
|
594
|
+
D -->|Settled boundary| Q["Promote to Quick"]
|
|
595
|
+
```
|
|
596
|
+
|
|
597
|
+
A goal project is a brief project delivered in milestones. The Project Brief
|
|
598
|
+
carries a `## Milestones` table (`| Milestone | Phases |`) in which every
|
|
599
|
+
phase, including appended `p-revN` revision phases, belongs to exactly one
|
|
600
|
+
milestone; `oat project validate-plan` reports membership errors as `goal-`
|
|
601
|
+
codes. Each milestone is approved through its own `plan` gate carrier in
|
|
602
|
+
`state.md` (`oat_milestone_gates.mNN.plan`): the first approval also marks
|
|
603
|
+
`plan.md` complete, and every later amendment is approved only by the next
|
|
604
|
+
milestone's carrier.
|
|
605
|
+
|
|
606
|
+
**Milestone delivery.** For goal the end of the brief ladder is reordered: the
|
|
607
|
+
milestone's `exit` gate runs at closeout before the integrated review, and
|
|
608
|
+
queued fixes invalidate both, so the gate runs again before the next review.
|
|
609
|
+
The integrated review names its milestone (or delivery) and the exact ordered
|
|
610
|
+
phase set, for example `code m01: p01, p02, p-rev1`; that set is never derived
|
|
611
|
+
from a first–last range. `oat-project-pr-progress` registers a delivery only
|
|
612
|
+
when `oat project delivery check --subject <mNN|dNN>` reports `status: ok`,
|
|
613
|
+
writing the `oat_deliveries` entry (`registering`) before it creates the pull
|
|
614
|
+
request so an interrupted run resumes by `gh pr list` instead of opening a
|
|
615
|
+
duplicate.
|
|
616
|
+
|
|
617
|
+
**Freshness.** Evidence keeps the revision actually reviewed. Commits after it
|
|
618
|
+
count as bookkeeping only when they touch the project's tracking files in
|
|
619
|
+
permitted ways (routing, progress, evidence, project-log appends); a code
|
|
620
|
+
change, an edit to approved brief content such as Outcomes or a phase's Intent,
|
|
621
|
+
or a substantive change followed by its revert stales the delivery.
|
|
622
|
+
`oat project delivery refresh` observes each member pull request with
|
|
623
|
+
`gh pr view` and records staleness; it never writes milestone status or
|
|
624
|
+
recovery. Because the project branch is the delivery's head branch, do not
|
|
625
|
+
push a brief amendment while that delivery is still open.
|
|
626
|
+
|
|
627
|
+
**Recovery.** Stale evidence on the active milestone's delivery returns it to
|
|
628
|
+
`reviewing`. Fixes or inline feedback for an older milestone open an
|
|
629
|
+
`oat_goal_recovery` record targeting that milestone and delivery, scheduling a
|
|
630
|
+
`p-revN` phase in its row, while the active milestone, its status and the
|
|
631
|
+
execution pointer stay untouched.
|
|
632
|
+
|
|
633
|
+
**Re-alignment and the end.** At `delivered`, `oat-project-goal` refreshes the
|
|
634
|
+
observations, writes one learnings entry, amends the brief with the next
|
|
635
|
+
milestone, and runs the review, gate and approval for the amendment; it may do
|
|
636
|
+
all of that while a `merged` endpoint is pending, but it activates the next
|
|
637
|
+
milestone only once refresh observes the previous delivery at its endpoint.
|
|
638
|
+
When the user declares the goal met, the declaration is recorded in
|
|
639
|
+
`implementation.md` and `state.md` gets `oat_goal_status: declared_met` and an
|
|
640
|
+
exhaustive outcome audit: every phase `accepted`, `extracted`, `deferred` or
|
|
641
|
+
`retired`, every numbered outcome bound to its exact text. Terminal closeout
|
|
642
|
+
requires the declaration, the audit and delivery coverage of every accepted
|
|
643
|
+
phase; `oat-project-pr-final` registers one terminal delivery per milestone
|
|
644
|
+
that still has uncovered phases, all sharing the head branch's pull request.
|
|
645
|
+
`oat-project-complete` then opens no further pull request, even with
|
|
646
|
+
`workflow.createPrOnComplete: true`, because the deliveries already cover the
|
|
647
|
+
work.
|
|
648
|
+
|
|
649
|
+
### Promoting a goal project to quick
|
|
650
|
+
|
|
651
|
+
`oat project promote <project-path> --to quick` accepts a goal project only at
|
|
652
|
+
a settled delivery boundary: the active milestone is `delivered`, every
|
|
653
|
+
registry entry is `at_endpoint` or `superseded`, and no recovery is pending.
|
|
654
|
+
It otherwise refuses without writing, with `goal-milestone-active`,
|
|
655
|
+
`goal-recovery-pending`, or `goal-delivery-unsettled` (which lists the open or
|
|
656
|
+
`registering` deliveries, and also covers an empty registry). A settled goal
|
|
657
|
+
promotes like a brief, and the archive `references/brief-archive.md` carries
|
|
658
|
+
the delivery history (registry, milestone gates and outcome audit) after the
|
|
659
|
+
original brief. `oat-project-quick-start` resumes the promoted project.
|
|
660
|
+
|
|
498
661
|
### Import lane
|
|
499
662
|
|
|
500
663
|
=== "Diagram"
|
|
@@ -604,15 +767,15 @@ actionable `oat pjm init` stop instead of scaffolding implicitly. See
|
|
|
604
767
|
|
|
605
768
|
### Seeding a new project from a brainstorm
|
|
606
769
|
|
|
607
|
-
When the brainstorming destination is "promote to a new OAT project", the dispatcher confirms a project slug and one of
|
|
770
|
+
When the brainstorming destination is "promote to a new OAT project", the dispatcher confirms a project slug and one of five modes: `lite`, `brief`, `goal`, `quick`, or `spec-driven`. For Quick and Spec-Driven projects, it runs `oat project new <slug> --mode <mode>` and writes `discovery.md` directly from the brainstorming payload — Initial Request, Solution Space with approaches considered, Chosen Direction, Key Decisions, and Open Questions. It writes only `discovery.md` (never a partial `design.md`), then points to `oat-project-quick-start` or `oat-project-design` without auto-chaining. For Lite projects, it instead seeds the five sections in `plan.md`, leaves `discovery.md` and `design.md` absent, and points to `oat-project-lite`. For Brief projects, it writes the payload to a research note under `references/research/`, leaves the scaffolded `plan.md` for the brief interview, and points to `oat-project-brief`. Goal projects arrive the same way and point to `oat-project-goal`, which authors the brief and its milestone split.
|
|
608
771
|
|
|
609
|
-
This is a parallel entry path into all
|
|
772
|
+
This is a parallel entry path into all five lanes, not a new lane. Quick and Spec-Driven users arrive at `oat-project-quick-start` or `oat-project-design` with discovery already populated; Lite users arrive at `oat-project-lite` with the single-phase plan already seeded; Brief and goal users arrive at `oat-project-brief` or `oat-project-goal` with the brainstorm payload saved as a research note under `references/research/` and the scaffolded `plan.md` left for the interview.
|
|
610
773
|
|
|
611
774
|
### Folding back into an active project
|
|
612
775
|
|
|
613
776
|
When `oat-brainstorm` fires while a project is active, it offers a 3-way picker before any pack-filtered destination shows up:
|
|
614
777
|
|
|
615
|
-
- **Related to the project** → for Lite, fold the synthesis into `plan.md` immediately above `## Phase 1` and hand off to `oat-project-lite`; for Quick and Spec-Driven, use the most-specific upstream artifact (`design.md` if it exists, otherwise `discovery.md`) and hand off to `oat-project-quick-start` or `oat-project-plan`. Any mode with an open PR hands off to `oat-project-revise`. The fold-back commit is safety-gated: a preflight `git status --porcelain -- "$ARTIFACT_PATH"` checks for dirty state, staging is exactly `git add -- "$ARTIFACT_PATH"` (never `-A`, never globs), and the handoff prompt only prints after the scoped commit succeeds.
|
|
778
|
+
- **Related to the project** → for Lite, fold the synthesis into `plan.md` immediately above `## Phase 1` and hand off to `oat-project-lite`; for Brief, fold it into `plan.md` immediately above the first `## Phase` heading so the receiving skill integrates it as new or amended phases; Goal folds into `plan.md` the same way, never editing the `## Milestones` table, and hands off to `oat-project-goal` (or `oat-project-implement` inside the active milestone's approved scope); for Quick and Spec-Driven, use the most-specific upstream artifact (`design.md` if it exists, otherwise `discovery.md`) and hand off to `oat-project-quick-start` or `oat-project-plan`. Any mode with an open PR hands off to `oat-project-revise`. The fold-back commit is safety-gated: a preflight `git status --porcelain -- "$ARTIFACT_PATH"` checks for dirty state, staging is exactly `git add -- "$ARTIFACT_PATH"` (never `-A`, never globs), and the handoff prompt only prints after the scoped commit succeeds.
|
|
616
779
|
- **Independent of the project** → the active project is acknowledged but doesn't constrain the picker; brainstorm routes through its standard pack-filtered terminal-state options (new project, backlog item, idea, doc-to-path, inline).
|
|
617
780
|
- **Related but supplementary** → write a brainstorming reference file at `.oat/projects/<scope>/<project>/brainstorming/YYYY-MM-DD-<topic>.md`, alongside `pr/` and `reviews/`. No lifecycle artifact is touched.
|
|
618
781
|
|
|
@@ -60,6 +60,22 @@ auto-review preference prompt are all skipped in both interactive and autonomous
|
|
|
60
60
|
runs. Only HiLL approval pauses are absent — the root-owned per-phase review and
|
|
61
61
|
the final review remain required.
|
|
62
62
|
|
|
63
|
+
### Brief and goal checkpoint resolution
|
|
64
|
+
|
|
65
|
+
Brief and goal projects read `oat_plan_hill_phases` with a brief meaning: `[]`
|
|
66
|
+
and an absent field both mean **no checkpoints**, never "every phase". The
|
|
67
|
+
brief scaffold, which goal projects share, writes `oat_plan_hill_phases: [] # [] = none for brief modes`, and
|
|
68
|
+
`oat-project-implement` then writes:
|
|
69
|
+
|
|
70
|
+
```yaml
|
|
71
|
+
oat_auto_review_at_hill_checkpoints: false # brief: no checkpoints
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
and skips the workflow preference check and the first-run checkpoint question.
|
|
75
|
+
To opt in, record an explicit phase array such as `['p03']`; implementation
|
|
76
|
+
keeps it without re-asking and pauses after exactly those phases. The
|
|
77
|
+
per-phase reviews and the final review run either way.
|
|
78
|
+
|
|
63
79
|
The rest of this section applies to `spec-driven`, `quick`, and `import`
|
|
64
80
|
projects.
|
|
65
81
|
|
|
@@ -125,7 +141,8 @@ See [Workflow preferences in the Configuration guide](../../../reference/configu
|
|
|
125
141
|
A HiLL (human-in-the-loop lifecycle) checkpoint is a point where the
|
|
126
142
|
implementing agent stops and waits for a person to approve before it continues.
|
|
127
143
|
This choice decides how often that happens during implementation. Lite projects
|
|
128
|
-
have no checkpoints,
|
|
144
|
+
have no checkpoints, and brief and goal projects have none unless they list
|
|
145
|
+
phases explicitly, so it does not apply to them.
|
|
129
146
|
|
|
130
147
|
| Choice | Choose it when | What you give up |
|
|
131
148
|
| ------------------ | ------------------------------------------------- | -------------------------------------------- |
|
|
@@ -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, 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,8 +55,8 @@ 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, and import
|
|
59
|
-
have no workflow-phase HiLL checkpoints. Configured exit gates (optional reviews
|
|
58
|
+
explicit approval before marking it complete. Quick, lite, brief, goal, and import
|
|
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).
|
|
62
62
|
The [skill catalog](../../../skills/index.md) lists the broader lifecycle tools.
|
|
@@ -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, and
|
|
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,11 +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, and
|
|
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
|
-
points you to `oat-project-lite`.
|
|
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. 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
|
|
278
281
|
intend that handoff.
|
|
279
282
|
|
|
280
283
|
**Example scenario:** The webhook design now defines persistence, retries, and
|
|
@@ -338,14 +341,14 @@ Promote the active cache-refresh project, keeping its imported plan and complete
|
|
|
338
341
|
skill asks for a project name and sets it as the active project. The active
|
|
339
342
|
project's `state.md` must record quick or import workflow mode. A spec-driven
|
|
340
343
|
project is already promoted, so the skill reports a no-op unless you request
|
|
341
|
-
artifact refresh. Lite must promote to quick first through
|
|
342
|
-
command:
|
|
344
|
+
artifact refresh. Lite, brief, and goal projects must promote to quick first through
|
|
345
|
+
the actual terminal command:
|
|
343
346
|
|
|
344
347
|
```bash
|
|
345
|
-
oat project promote <lite-project-path> --to quick
|
|
348
|
+
oat project promote <lite-brief-or-goal-project-path> --to quick
|
|
346
349
|
```
|
|
347
350
|
|
|
348
|
-
Use the reported
|
|
351
|
+
Use the reported project path, for example
|
|
349
352
|
`.oat/projects/synced/retry-message` in the default synced scope. Then use this
|
|
350
353
|
skill against the active quick project.
|
|
351
354
|
|
|
@@ -7,17 +7,19 @@ 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 and
|
|
11
|
-
own mode, and import writes into whichever project is active.
|
|
12
|
-
|
|
13
|
-
| Your situation
|
|
14
|
-
|
|
|
15
|
-
| Requirements need discovery and a full technical design.
|
|
16
|
-
| The outcome is bounded, with optional design decisions to resolve.
|
|
17
|
-
| The change fits one implementation sitting.
|
|
18
|
-
|
|
|
19
|
-
|
|
|
20
|
-
|
|
|
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
|
+
|
|
13
|
+
| Your situation | Entry skill | Result |
|
|
14
|
+
| -------------------------------------------------------------------- | ------------------------- | --------------------------------------------------------------------------------- |
|
|
15
|
+
| Requirements need discovery and a full technical design. | `oat-project-new` | A spec-driven scaffold, ready to begin discovery. |
|
|
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
|
+
| The change fits one implementation sitting. | `oat-project-lite` | One approved plan with requirements and validation criteria. |
|
|
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. |
|
|
20
|
+
| You already have a Markdown plan. | `oat-project-import-plan` | The original source preserved beside a normalized OAT plan. |
|
|
21
|
+
| Implementation happened without project tracking. | `oat-project-capture` | Retroactive discovery and implementation records from the session and commits. |
|
|
22
|
+
| A confirmed scope contains several coordinated projects. | `oat-project-split` | A coordination parent and children that resume at discovery. |
|
|
21
23
|
|
|
22
24
|
For the broader mode decision, see [Choose a workflow](../../choose-workflow.md).
|
|
23
25
|
For an existing project's discovery, design, or plan, see
|
|
@@ -68,15 +70,15 @@ in a fresh repository.
|
|
|
68
70
|
overrides the setting for one shell.
|
|
69
71
|
|
|
70
72
|
3. **Only `oat-project-new` takes a scope.** It accepts `--scope shared|local|synced`.
|
|
71
|
-
Quick-start, lite, import, capture, and split have no scope argument.
|
|
72
|
-
Quick-start, lite, 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
|
|
73
75
|
default scope. Split uses the active project's scope, or `shared` when no
|
|
74
76
|
project is active. Set the default first if you do not want `synced`.
|
|
75
77
|
|
|
76
78
|
4. **Build the knowledge index before spec-driven discovery.** `oat-project-discover`
|
|
77
79
|
refuses to start until `.oat/repo/knowledge/project-index.md` exists. Run
|
|
78
80
|
`/oat-repo-knowledge-index` once before your first spec-driven project.
|
|
79
|
-
Quick-start, lite, import, and capture do not check for it.
|
|
81
|
+
Quick-start, lite, brief, goal, import, and capture do not check for it.
|
|
80
82
|
|
|
81
83
|
5. **Know what happens when a project is already active.** Check with
|
|
82
84
|
`oat config get activeProject` before you start:
|
|
@@ -88,6 +90,9 @@ in a fresh repository.
|
|
|
88
90
|
- `oat-project-lite` resumes an active lite project and ignores the name and
|
|
89
91
|
description you pass. With any other project active, it creates a new lite
|
|
90
92
|
project.
|
|
93
|
+
- `oat-project-brief` resumes an active brief project at the earliest step
|
|
94
|
+
whose output is missing. With any other project active, it creates a new
|
|
95
|
+
brief project.
|
|
91
96
|
- `oat-project-import-plan` writes into any active project, whatever its
|
|
92
97
|
mode. It rewrites that project's `plan.md` and switches it to import mode.
|
|
93
98
|
- `oat-project-split` makes its first child the active project.
|
|
@@ -106,14 +111,14 @@ Project creation normally activates the new project in `.oat/config.local.json`.
|
|
|
106
111
|
Check the reported project path before continuing, especially when another
|
|
107
112
|
project is already active.
|
|
108
113
|
|
|
109
|
-
The new, quick-start, lite, and import skills check inherited Git changes before
|
|
114
|
+
The new, quick-start, lite, brief, goal, and import skills check inherited Git changes before
|
|
110
115
|
scaffolding. Unrelated changes require an explicit disposition in interactive
|
|
111
116
|
runs. One exception: if the only change is `.oat/sync/manifest.json`, it is
|
|
112
117
|
committed automatically as `chore: run sync`. Capture does not run this check.
|
|
113
118
|
Do not assume starting a project also authorizes implementation or a PR.
|
|
114
119
|
|
|
115
|
-
**Dispatch policy.** Before a plan is marked ready, quick-start, lite,
|
|
116
|
-
import ask you to choose a _dispatch policy_: the highest tier of models and
|
|
120
|
+
**Dispatch policy.** Before a plan is marked ready, quick-start, lite, brief,
|
|
121
|
+
goal, and import ask you to choose a _dispatch policy_: the highest tier of models and
|
|
117
122
|
effort OAT may use when it dispatches implementation and review agents. The
|
|
118
123
|
choices come from `oat project dispatch-ceiling choices`. If your configuration
|
|
119
124
|
has no complete dispatch ladder (the list of models for each tier), the skill
|
|
@@ -125,9 +130,11 @@ deliberately. The plan stays not ready until this resolves. See
|
|
|
125
130
|
**Approval checkpoints.** A _HiLL (human-in-the-loop lifecycle) checkpoint_ is
|
|
126
131
|
a point where a skill stops and waits for your explicit approval before it marks
|
|
127
132
|
a phase complete. Projects created by `oat-project-new` have checkpoints on
|
|
128
|
-
discovery and design by default. Quick, lite, import, and
|
|
129
|
-
no workflow-phase checkpoints before implementation.
|
|
130
|
-
approve its plan once
|
|
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).
|
|
131
138
|
|
|
132
139
|
Several skills also run a configured _exit gate_, an optional review or command
|
|
133
140
|
your repository configures to run before a skill marks its work complete. When
|
|
@@ -299,6 +306,117 @@ keeping or disabling configured gates for this project.
|
|
|
299
306
|
**Next step:** Run `oat-project-implement` after the approved lite plan is ready.
|
|
300
307
|
If the scope grows, continue through `oat-project-quick-start` after promotion.
|
|
301
308
|
|
|
309
|
+
## oat-project-brief
|
|
310
|
+
|
|
311
|
+
Use brief for one delivery whose outcome and design you can agree in
|
|
312
|
+
conversation. Brief replaces discovery, design, and a task plan with one
|
|
313
|
+
reviewed Project Brief in `plan.md`. Its phases state intent and exit evidence
|
|
314
|
+
instead of tasks.
|
|
315
|
+
|
|
316
|
+
**Invocation:** Provide the slug and the intended outcome.
|
|
317
|
+
|
|
318
|
+
```text
|
|
319
|
+
/oat-project-brief export-audit "Let administrators export the audit log as CSV from the settings page."
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
**Prerequisites:** No active project is needed. If the active project is a
|
|
323
|
+
brief project, brief resumes it in place.
|
|
324
|
+
|
|
325
|
+
**Example scenario:** Administrators need the audit log as CSV. Brief
|
|
326
|
+
interviews you in short rounds, settling facts from the code itself and
|
|
327
|
+
putting the design choices to you, such as streaming against buffering the
|
|
328
|
+
export. It writes the agreed outcomes, approach, decisions, and phases into the
|
|
329
|
+
brief, runs artifact review and any configured gate, and asks you to approve
|
|
330
|
+
the reviewed brief once.
|
|
331
|
+
|
|
332
|
+
**Expected output:** One Project Brief in `plan.md` with a Goal, numbered
|
|
333
|
+
Outcomes that each name their evidence, the Approach (with an optional
|
|
334
|
+
`### Design` subsection), Constraints and Out of Scope, Decisions with the
|
|
335
|
+
alternatives you rejected, Known Unknowns with the phase that settles each,
|
|
336
|
+
the Delivery endpoint and authority, and `## Phase pNN:` blocks. Each phase
|
|
337
|
+
states its `**Intent:**`, `**Exit evidence:**`, and whether it is
|
|
338
|
+
`**Provisional:**`; only the first phase has to be concrete now. The skill also
|
|
339
|
+
initializes `implementation.md` as a per-phase journal with one section per
|
|
340
|
+
phase and no execution records yet. There is no `discovery.md`, `spec.md`, or
|
|
341
|
+
`design.md`, and no task list: tasks are recorded in the journal as the work
|
|
342
|
+
runs.
|
|
343
|
+
|
|
344
|
+
The interview runs in readiness rounds. The agent settles facts from the code,
|
|
345
|
+
docs, or research itself and brings you only decisions, each with a
|
|
346
|
+
recommendation and its tradeoff. It writes the brief once you have explicitly
|
|
347
|
+
agreed the design, so the approval confirms a design you already accepted.
|
|
348
|
+
Within the approved outcomes, constraints, and authority, the agent may later
|
|
349
|
+
add, split, or reorder phases and make provisional phases concrete, and logs
|
|
350
|
+
each change; a change to an Outcome, a Constraint, the authority, the endpoint,
|
|
351
|
+
a Decision, or the Approach comes back to you first.
|
|
352
|
+
|
|
353
|
+
**What it does without asking:** It creates the project through
|
|
354
|
+
`oat project new --mode brief` in the default scope and makes it active,
|
|
355
|
+
commits the authored brief before any review, runs the independent artifact
|
|
356
|
+
review (the reviewer receives the brief and the bundled brief contract, not the
|
|
357
|
+
conversation), runs any configured `oat-project-brief` gate and records its
|
|
358
|
+
outcome as `oat_brief_gate` in `state.md`, and commits the approved brief and
|
|
359
|
+
journal. In synced scope each commit is an `oat project push` to `origin`. It
|
|
360
|
+
asks before: proceeding with a dirty working tree, the interview decisions,
|
|
361
|
+
adopting a dispatch ladder into config, choosing the dispatch policy, keeping
|
|
362
|
+
or disabling configured gates for this project, and the single approval
|
|
363
|
+
(approve, revise, or promote to quick).
|
|
364
|
+
|
|
365
|
+
**Promotion to quick.** Choose promote at the approval, or later run
|
|
366
|
+
`oat project promote <project-path> --to quick`, when you want a maintained,
|
|
367
|
+
approved up-front task plan. Promotion keeps completed execution records as
|
|
368
|
+
quick tasks, lists phases that still need tasks in
|
|
369
|
+
`oat_promotion_pending_phases`, and hands off to `oat-project-quick-start`.
|
|
370
|
+
Before the brief is written and committed there is nothing to promote: abandon
|
|
371
|
+
the scaffold and start `oat-project-quick-start` instead. See
|
|
372
|
+
[Lifecycle](../lifecycle.md#promoting-a-brief-project-to-quick).
|
|
373
|
+
|
|
374
|
+
**Next step:** Run `oat-project-implement` after the brief is approved.
|
|
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
|
+
|
|
302
420
|
## oat-project-import-plan
|
|
303
421
|
|
|
304
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`, 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
|
|
|
@@ -220,12 +220,45 @@ See [Workflow preferences in the Configuration guide](../../../reference/configu
|
|
|
220
220
|
|
|
221
221
|
Use phase-scoped review artifacts during implementation (`p01`, `p02`, etc), then run final review before project closeout.
|
|
222
222
|
|
|
223
|
+
In a brief project, review scope comes from the journal's anchors instead of
|
|
224
|
+
commit-message inference. A phase scope is its `**Base:**..**Head:**` range, a
|
|
225
|
+
`pNN-pMM` run spans the first selected base through the last selected head,
|
|
226
|
+
and `final` covers every accepted phase, including `p-revN` revision phases.
|
|
227
|
+
The review artifact records the requested scope, the ordered phase IDs, the
|
|
228
|
+
base SHA, and `oat_review_scope_source` (`anchors`, or `merge-base-range` when
|
|
229
|
+
anchors are missing and the range widens to the confirmed merge-base range).
|
|
230
|
+
Commit-message matches only label commits and never narrow the range. Invalid
|
|
231
|
+
or contradictory anchors stop the review and route to `oat-project-reconcile`.
|
|
232
|
+
A brief `final` review also audits every numbered Outcome against the
|
|
233
|
+
journal's evidence.
|
|
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
|
+
|
|
223
253
|
Final review `passed` gate requires:
|
|
224
254
|
|
|
225
255
|
- No unresolved Critical/High/Medium findings.
|
|
226
256
|
- Deferred Medium findings resurfaced and explicitly dispositioned.
|
|
227
257
|
- Low findings explicitly dispositioned (after plain-language explanation).
|
|
228
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
|
+
|
|
229
262
|
## Complexity review at budget exhaustion
|
|
230
263
|
|
|
231
264
|
When a review or gate budget runs out, another round of the same review is
|
|
@@ -455,7 +488,8 @@ An artifact review loop runs in the same agent session that wrote the artifact,
|
|
|
455
488
|
so it is not an independent review. It retries up to the project's retry limit,
|
|
456
489
|
which defaults to two; a limit of zero still allows the first review. Autonomous
|
|
457
490
|
runs turn on review at HiLL checkpoints for every project except lite projects,
|
|
458
|
-
which have no checkpoints
|
|
491
|
+
which have no checkpoints, and brief projects without explicitly listed
|
|
492
|
+
checkpoint phases.
|
|
459
493
|
|
|
460
494
|
- If you are a solo developer, or runs are unattended, and your agent tool
|
|
461
495
|
supports subagents, set the final review execution to `subagent`.
|
|
@@ -119,7 +119,8 @@ different things can happen, and only two of them stop the workflow:
|
|
|
119
119
|
- **Operational failures stay blocked.** The reviewer could not start, timed
|
|
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
|
-
`oat-project-lite` keep these failures blocked whatever `onFailure` says
|
|
122
|
+
`oat-project-lite` keep these failures blocked whatever `onFailure` says,
|
|
123
|
+
and so do `oat-project-brief` and `oat-project-goal`.
|
|
123
124
|
The planning skills handle them differently; see
|
|
124
125
|
[When the gate finds blocking problems](../../advanced/workflow-gates.md#when-the-gate-finds-blocking-problems).
|
|
125
126
|
- **Reviewer selection falls back.** By default (`--avoid same-family`) the gate
|
|
@@ -457,8 +458,11 @@ request.
|
|
|
457
458
|
**Prerequisites:** An initialized project must resolve from the active pointer
|
|
458
459
|
or an explicitly supplied project/review target. Its core artifacts must be
|
|
459
460
|
committed before review. Code review needs completed implementation work and
|
|
460
|
-
the mode-appropriate requirements sources; lite
|
|
461
|
-
discovery, spec or design artifacts.
|
|
461
|
+
the mode-appropriate requirements sources; lite, brief, and goal reviews do not
|
|
462
|
+
require absent discovery, spec or design artifacts. A brief code review takes
|
|
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
|
|
462
466
|
also need a resolved dispatch policy (`oat_dispatch_policy` in `state.md` or
|
|
463
467
|
`workflow.dispatchPolicy.*` in config); without one the review stops before
|
|
464
468
|
launching a reviewer. Discovery, spec and design artifact reviews run without
|