@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.
Files changed (132) hide show
  1. package/README.md +2 -1
  2. package/assets/agents/oat-phase-implementer.md +104 -3
  3. package/assets/agents/oat-reviewer.md +20 -5
  4. package/assets/bundle-metadata.json +1 -1
  5. package/assets/docs/reference/cli-reference.md +15 -7
  6. package/assets/docs/reference/oat-directory-structure.md +2 -0
  7. package/assets/docs/reference/project-artifacts.md +72 -1
  8. package/assets/docs/reference/project-state-machine.md +55 -6
  9. package/assets/docs/skills/brainstorm.md +3 -1
  10. package/assets/docs/skills/index.md +13 -9
  11. package/assets/docs/workflows/advanced/autonomy.md +12 -2
  12. package/assets/docs/workflows/advanced/dispatch-ceiling.md +2 -2
  13. package/assets/docs/workflows/advanced/workflow-gates.md +25 -7
  14. package/assets/docs/workflows/approvals-and-automation.md +25 -9
  15. package/assets/docs/workflows/choose-workflow.md +24 -8
  16. package/assets/docs/workflows/ideas/index.md +1 -1
  17. package/assets/docs/workflows/ideas/lifecycle.md +3 -2
  18. package/assets/docs/workflows/projects/closeout/closeout-skills.md +83 -5
  19. package/assets/docs/workflows/projects/closeout/pr-flow.md +9 -1
  20. package/assets/docs/workflows/projects/execution/execution-skills.md +27 -2
  21. package/assets/docs/workflows/projects/execution/implementation-execution.md +15 -0
  22. package/assets/docs/workflows/projects/execution/picking-up-projects.md +20 -1
  23. package/assets/docs/workflows/projects/lifecycle.md +172 -9
  24. package/assets/docs/workflows/projects/planning/hill-checkpoints.md +18 -1
  25. package/assets/docs/workflows/projects/planning/planning-skills.md +13 -10
  26. package/assets/docs/workflows/projects/planning/starting-projects.md +138 -20
  27. package/assets/docs/workflows/projects/reviews/index.md +36 -2
  28. package/assets/docs/workflows/projects/reviews/review-flavors.md +7 -3
  29. package/assets/public-package-versions.json +4 -4
  30. package/assets/skills/oat-brainstorm/SKILL.md +58 -9
  31. package/assets/skills/oat-brainstorm/references/destinations.md +12 -4
  32. package/assets/skills/oat-docs/SKILL.md +13 -4
  33. package/assets/skills/oat-pjm-review-backlog/SKILL.md +2 -2
  34. package/assets/skills/oat-project-autonomous/SKILL.md +20 -8
  35. package/assets/skills/oat-project-autonomous/references/gate-inventory.md +156 -122
  36. package/assets/skills/oat-project-brief/SKILL.md +592 -0
  37. package/assets/skills/oat-project-brief/references/brief-contract.md +743 -0
  38. package/assets/skills/oat-project-brief/references/docs/autonomy-contract.md +412 -0
  39. package/assets/skills/oat-project-brief/references/docs/gate-approval-record.md +93 -0
  40. package/assets/skills/oat-project-capture/SKILL.md +2 -2
  41. package/assets/skills/oat-project-complete/SKILL.md +16 -2
  42. package/assets/skills/oat-project-discover/SKILL.md +4 -2
  43. package/assets/skills/oat-project-dispatch-subagents/SKILL.md +9 -1
  44. package/assets/skills/oat-project-document/SKILL.md +17 -1
  45. package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +156 -122
  46. package/assets/skills/oat-project-goal/SKILL.md +697 -0
  47. package/assets/skills/oat-project-goal/references/docs/autonomy-contract.md +412 -0
  48. package/assets/skills/oat-project-goal/references/docs/gate-approval-record.md +93 -0
  49. package/assets/skills/oat-project-implement/SKILL.md +1 -1
  50. package/assets/skills/oat-project-implement/references/completion-and-closeout.md +107 -0
  51. package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +156 -122
  52. package/assets/skills/oat-project-implement/references/docs/gate-approval-record.md +13 -0
  53. package/assets/skills/oat-project-implement/references/phase-execution.md +173 -1
  54. package/assets/skills/oat-project-implement/references/plan-and-resume.md +124 -3
  55. package/assets/skills/oat-project-import-plan/SKILL.md +5 -1
  56. package/assets/skills/oat-project-lite/SKILL.md +4 -1
  57. package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +156 -122
  58. package/assets/skills/oat-project-new/SKILL.md +5 -1
  59. package/assets/skills/oat-project-next/SKILL.md +71 -14
  60. package/assets/skills/oat-project-next/references/docs/gate-approval-record.md +13 -0
  61. package/assets/skills/oat-project-plan/SKILL.md +24 -3
  62. package/assets/skills/oat-project-plan-writing/SKILL.md +8 -4
  63. package/assets/skills/oat-project-pr-final/SKILL.md +65 -3
  64. package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +156 -122
  65. package/assets/skills/oat-project-pr-progress/SKILL.md +125 -4
  66. package/assets/skills/oat-project-progress/SKILL.md +63 -8
  67. package/assets/skills/oat-project-progress/references/docs/gate-approval-record.md +13 -0
  68. package/assets/skills/oat-project-promote-spec-driven/SKILL.md +2 -2
  69. package/assets/skills/oat-project-quick-start/SKILL.md +65 -1
  70. package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +156 -122
  71. package/assets/skills/oat-project-quick-start/references/docs/gate-approval-record.md +13 -0
  72. package/assets/skills/oat-project-reconcile/SKILL.md +94 -3
  73. package/assets/skills/oat-project-review-provide/SKILL.md +397 -12
  74. package/assets/skills/oat-project-review-receive/SKILL.md +155 -1
  75. package/assets/skills/oat-project-revise/SKILL.md +51 -4
  76. package/assets/skills/oat-project-summary/SKILL.md +150 -2
  77. package/assets/skills/oat-wave-execute/SKILL.md +3 -2
  78. package/assets/templates/implementation-brief.md +165 -0
  79. package/assets/templates/plan-brief.md +140 -0
  80. package/assets/templates/plan.md +1 -1
  81. package/assets/templates/state.md +8 -2
  82. package/dist/commands/project/closeout-check/closeout-invariant.d.ts +119 -3
  83. package/dist/commands/project/closeout-check/closeout-invariant.d.ts.map +1 -1
  84. package/dist/commands/project/closeout-check/closeout-invariant.js +454 -2
  85. package/dist/commands/project/closeout-check/index.d.ts +21 -3
  86. package/dist/commands/project/closeout-check/index.d.ts.map +1 -1
  87. package/dist/commands/project/closeout-check/index.js +190 -4
  88. package/dist/commands/project/complete-state/index.d.ts +2 -1
  89. package/dist/commands/project/complete-state/index.d.ts.map +1 -1
  90. package/dist/commands/project/complete-state/index.js +7 -1
  91. package/dist/commands/project/delivery/check.d.ts +66 -0
  92. package/dist/commands/project/delivery/check.d.ts.map +1 -0
  93. package/dist/commands/project/delivery/check.js +232 -0
  94. package/dist/commands/project/delivery/evidence.d.ts +171 -0
  95. package/dist/commands/project/delivery/evidence.d.ts.map +1 -0
  96. package/dist/commands/project/delivery/evidence.js +902 -0
  97. package/dist/commands/project/delivery/index.d.ts +7 -0
  98. package/dist/commands/project/delivery/index.d.ts.map +1 -0
  99. package/dist/commands/project/delivery/index.js +13 -0
  100. package/dist/commands/project/delivery/refresh.d.ts +110 -0
  101. package/dist/commands/project/delivery/refresh.d.ts.map +1 -0
  102. package/dist/commands/project/delivery/refresh.js +441 -0
  103. package/dist/commands/project/index.d.ts.map +1 -1
  104. package/dist/commands/project/index.js +2 -0
  105. package/dist/commands/project/log/append.d.ts +6 -0
  106. package/dist/commands/project/log/append.d.ts.map +1 -1
  107. package/dist/commands/project/log/append.js +6 -1
  108. package/dist/commands/project/new/scaffold.d.ts +1 -1
  109. package/dist/commands/project/new/scaffold.d.ts.map +1 -1
  110. package/dist/commands/project/new/scaffold.js +81 -7
  111. package/dist/commands/project/promote/promote.d.ts +46 -1
  112. package/dist/commands/project/promote/promote.d.ts.map +1 -1
  113. package/dist/commands/project/promote/promote.js +646 -5
  114. package/dist/commands/project/validate-plan/frontmatter.d.ts +12 -0
  115. package/dist/commands/project/validate-plan/frontmatter.d.ts.map +1 -0
  116. package/dist/commands/project/validate-plan/frontmatter.js +27 -0
  117. package/dist/commands/project/validate-plan/index.d.ts.map +1 -1
  118. package/dist/commands/project/validate-plan/index.js +62 -18
  119. package/dist/commands/project/validate-plan/profiles.d.ts +69 -0
  120. package/dist/commands/project/validate-plan/profiles.d.ts.map +1 -0
  121. package/dist/commands/project/validate-plan/profiles.js +420 -0
  122. package/dist/commands/project/validate-plan/validate-plan.d.ts +3 -19
  123. package/dist/commands/project/validate-plan/validate-plan.d.ts.map +1 -1
  124. package/dist/commands/project/validate-plan/validate-plan.js +5 -82
  125. package/dist/commands/shared/frontmatter.d.ts +1 -1
  126. package/dist/commands/shared/frontmatter.d.ts.map +1 -1
  127. package/dist/commands/shared/frontmatter.js +2 -0
  128. package/dist/commands/state/generate.d.ts.map +1 -1
  129. package/dist/commands/state/generate.js +82 -2
  130. package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -1
  131. package/dist/commands/tools/shared/pack-manifest.js +4 -0
  132. 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, import, and capture
55
- lanes each skip part of it — see [Lane diagrams](#lane-diagrams) below. Lite in
56
- particular has no discovery, spec, or design step at all.
54
+ This map shows the spec-driven default. The quick, lite, brief, goal, import,
55
+ and capture lanes each skip part of it — see [Lane diagrams](#lane-diagrams)
56
+ below. Lite, brief, and goal in particular have no discovery, spec, or design
57
+ step at all.
57
58
 
58
59
  ## Post-implementation flow
59
60
 
@@ -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
+ ![Brief lane: a design-aligned interview, one reviewed and approved Project Brief, phase-units executed with execution records and anchors, a fresh review per phase, final review audited against Outcomes, and PR, with promotion to quick when a task plan is wanted](/diagrams/project-lifecycle-8-brief-lane-light.svg)
522
+ ![Brief lane: a design-aligned interview, one reviewed and approved Project Brief, phase-units executed with execution records and anchors, a fresh review per phase, final review audited against Outcomes, and PR, with promotion to quick when a task plan is wanted](/diagrams/project-lifecycle-8-brief-lane-dark.svg)
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
+ ![Goal lane: an alignment interview and one reviewed Project Brief with a Milestones table, then per milestone activation, phase-units with per-phase reviews, milestone closeout with the exit gate, the integrated review, a registered delivery through pr-progress, and re-alignment that loops to the next milestone once the previous delivery reaches its endpoint; finally the terminal declaration with an exhaustive outcome audit and coverage closeout, with promotion to quick at a settled delivery boundary](/diagrams/project-lifecycle-9-goal-lane-light.svg)
578
+ ![Goal lane: an alignment interview and one reviewed Project Brief with a Milestones table, then per milestone activation, phase-units with per-phase reviews, milestone closeout with the exit gate, the integrated review, a registered delivery through pr-progress, and re-alignment that loops to the next milestone once the previous delivery reaches its endpoint; finally the terminal declaration with an exhaustive outcome audit and coverage closeout, with promotion to quick at a settled delivery boundary](/diagrams/project-lifecycle-9-goal-lane-dark.svg)
579
+
580
+ === "Mermaid source"
581
+
582
+ ```mermaid
583
+ flowchart TD
584
+ A["Alignment interview\n(whole outcome, milestone split)"] --> B["Project Brief + Milestones\n(review, gate, one approval)"]
585
+ B --> M["Activate milestone mNN\n(oat-project-goal)"]
586
+ M --> I["Phase-units\n(implement, per-phase reviews)"]
587
+ I --> X["Milestone closeout\n(exit gate before the review)"]
588
+ X --> R["Integrated review\n(code mNN: ordered phases)"]
589
+ R --> D["Delivery dNN\n(oat-project-pr-progress)"]
590
+ D --> RA["Re-alignment\n(learnings, amendment, approval)"]
591
+ RA -->|Next milestone at endpoint| M
592
+ RA --> T["Terminal declaration\n(exhaustive outcome audit)"]
593
+ T --> C["Coverage closeout\n(pr-final for uncovered, complete)"]
594
+ D -->|Settled boundary| Q["Promote to Quick"]
595
+ ```
596
+
597
+ A goal project is a brief project delivered in milestones. The Project Brief
598
+ carries a `## Milestones` table (`| Milestone | Phases |`) in which every
599
+ phase, including appended `p-revN` revision phases, belongs to exactly one
600
+ milestone; `oat project validate-plan` reports membership errors as `goal-`
601
+ codes. Each milestone is approved through its own `plan` gate carrier in
602
+ `state.md` (`oat_milestone_gates.mNN.plan`): the first approval also marks
603
+ `plan.md` complete, and every later amendment is approved only by the next
604
+ milestone's carrier.
605
+
606
+ **Milestone delivery.** For goal the end of the brief ladder is reordered: the
607
+ milestone's `exit` gate runs at closeout before the integrated review, and
608
+ queued fixes invalidate both, so the gate runs again before the next review.
609
+ The integrated review names its milestone (or delivery) and the exact ordered
610
+ phase set, for example `code m01: p01, p02, p-rev1`; that set is never derived
611
+ from a first–last range. `oat-project-pr-progress` registers a delivery only
612
+ when `oat project delivery check --subject <mNN|dNN>` reports `status: ok`,
613
+ writing the `oat_deliveries` entry (`registering`) before it creates the pull
614
+ request so an interrupted run resumes by `gh pr list` instead of opening a
615
+ duplicate.
616
+
617
+ **Freshness.** Evidence keeps the revision actually reviewed. Commits after it
618
+ count as bookkeeping only when they touch the project's tracking files in
619
+ permitted ways (routing, progress, evidence, project-log appends); a code
620
+ change, an edit to approved brief content such as Outcomes or a phase's Intent,
621
+ or a substantive change followed by its revert stales the delivery.
622
+ `oat project delivery refresh` observes each member pull request with
623
+ `gh pr view` and records staleness; it never writes milestone status or
624
+ recovery. Because the project branch is the delivery's head branch, do not
625
+ push a brief amendment while that delivery is still open.
626
+
627
+ **Recovery.** Stale evidence on the active milestone's delivery returns it to
628
+ `reviewing`. Fixes or inline feedback for an older milestone open an
629
+ `oat_goal_recovery` record targeting that milestone and delivery, scheduling a
630
+ `p-revN` phase in its row, while the active milestone, its status and the
631
+ execution pointer stay untouched.
632
+
633
+ **Re-alignment and the end.** At `delivered`, `oat-project-goal` refreshes the
634
+ observations, writes one learnings entry, amends the brief with the next
635
+ milestone, and runs the review, gate and approval for the amendment; it may do
636
+ all of that while a `merged` endpoint is pending, but it activates the next
637
+ milestone only once refresh observes the previous delivery at its endpoint.
638
+ When the user declares the goal met, the declaration is recorded in
639
+ `implementation.md` and `state.md` gets `oat_goal_status: declared_met` and an
640
+ exhaustive outcome audit: every phase `accepted`, `extracted`, `deferred` or
641
+ `retired`, every numbered outcome bound to its exact text. Terminal closeout
642
+ requires the declaration, the audit and delivery coverage of every accepted
643
+ phase; `oat-project-pr-final` registers one terminal delivery per milestone
644
+ that still has uncovered phases, all sharing the head branch's pull request.
645
+ `oat-project-complete` then opens no further pull request, even with
646
+ `workflow.createPrOnComplete: true`, because the deliveries already cover the
647
+ work.
648
+
649
+ ### Promoting a goal project to quick
650
+
651
+ `oat project promote <project-path> --to quick` accepts a goal project only at
652
+ a settled delivery boundary: the active milestone is `delivered`, every
653
+ registry entry is `at_endpoint` or `superseded`, and no recovery is pending.
654
+ It otherwise refuses without writing, with `goal-milestone-active`,
655
+ `goal-recovery-pending`, or `goal-delivery-unsettled` (which lists the open or
656
+ `registering` deliveries, and also covers an empty registry). A settled goal
657
+ promotes like a brief, and the archive `references/brief-archive.md` carries
658
+ the delivery history (registry, milestone gates and outcome audit) after the
659
+ original brief. `oat-project-quick-start` resumes the promoted project.
660
+
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 three modes: `lite`, `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`.
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 three 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.
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, so it does not apply to them.
144
+ have no checkpoints, and brief and goal projects have none unless they list
145
+ phases explicitly, so it does not apply to them.
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 projects
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 lite projects use their own next step instead. Mentioning a
86
+ Quick, import, lite, brief, and goal projects use their own next step instead. Mentioning a
87
87
  new idea does not authorize automatic discovery invocation.
88
88
 
89
89
  **Example scenario:** The webhook-delivery project is active, but the team has
@@ -270,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 lite projects never use this skill to author a plan. On a
273
+ Quick, import, lite, brief, and goal projects never use this skill to author a plan. On a
274
274
  quick project, it resumes quick-start if the plan is not ready, and **starts
275
275
  `oat-project-implement` immediately** if the plan is ready. On an import project
276
276
  with a plan, it points you to `oat-project-implement`. On a lite project, it
277
- points you to `oat-project-lite`. Do not invoke it on those projects unless you
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 the actual terminal
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 lite project path, for example
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 lite resume an active project of their
11
- 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
- | You already have a Markdown plan. | `oat-project-import-plan` | The original source preserved beside a normalized OAT plan. |
19
- | Implementation happened without project tracking. | `oat-project-capture` | Retroactive discovery and implementation records from the session and commits. |
20
- | A confirmed scope contains several coordinated projects. | `oat-project-split` | A coordination parent and children that resume at discovery. |
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, and
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 captured projects have
129
- no workflow-phase checkpoints before implementation. Lite still asks you to
130
- approve its plan once. See [HiLL checkpoints](hill-checkpoints.md).
133
+ discovery and design by default. Quick, lite, brief, goal, import, and
134
+ captured projects have no workflow-phase checkpoints before implementation.
135
+ Lite still asks you to approve its plan once, brief asks you to approve its
136
+ reviewed brief once, and goal asks for that approval and then one per later
137
+ milestone. See [HiLL checkpoints](hill-checkpoints.md).
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 review does not require absent
461
- discovery, spec or design artifacts. Code reviews and plan artifact reviews
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