@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
@@ -0,0 +1,93 @@
1
+ # Lifecycle Gate Approval Record
2
+
3
+ A configured lifecycle gate ends in an outcome the operator or a later session
4
+ needs to see again: it passed, it warned, the operator explicitly continued
5
+ past a failure, the project disabled it, or it blocked. Chat output does not
6
+ survive the session, so the skill that runs the gate persists the outcome in
7
+ project `state.md`. This document defines the record's shared core once; each
8
+ carrier names where it lives and what it adds.
9
+
10
+ ## Core record
11
+
12
+ ```yaml
13
+ <carrier>:
14
+ status: allowed # allowed | blocked
15
+ disposition: passed # passed | warned | prompt_approved | project_disabled; null when blocked
16
+ config_fingerprint: '<stable hash of the resolved gate declaration>'
17
+ reviewed_head: '<full SHA of the commit the gate reviewed>'
18
+ decided_at: '2026-10-02T15:20:00Z'
19
+ ```
20
+
21
+ - `status`: `allowed` | `blocked`.
22
+ - `disposition`: `passed`, `warned`, `prompt_approved`, or `project_disabled`
23
+ when `status` is `allowed`; `null` when `status` is `blocked`.
24
+ - `config_fingerprint`: the writer's stable hash of the resolved gate
25
+ declaration it ran (command, description, `onFailure`, `maxAttempts`, and the
26
+ project override state), recorded as provenance. Implement recomputes its own
27
+ carrier's fingerprint under its Step 14 rules; quick-start readers do not.
28
+ - `reviewed_head`: the full 40-character SHA of the commit the gate reviewed,
29
+ recorded as provenance. `null` when no gate ran.
30
+ - `decided_at`: the ISO 8601 UTC time the outcome was decided. A record written
31
+ before `decided_at` existed is not malformed for that reason alone.
32
+
33
+ ## Write rules
34
+
35
+ | Gate outcome | Record |
36
+ | --------------------------------------------------------------- | ----------------------------------------------------------- |
37
+ | Passed its threshold | `allowed` / `passed` |
38
+ | Failed under `onFailure: warn` | `allowed` / `warned` |
39
+ | Failed under `onFailure: prompt`, operator explicitly continued | `allowed` / `prompt_approved` |
40
+ | Failed under `onFailure: prompt`, operator declined or deferred | `blocked` / `null` |
41
+ | `block` still failing after `maxAttempts` | `blocked` / `null` |
42
+ | Configured but disabled by project override (no launch) | `allowed` / `project_disabled` |
43
+ | Launch, transport, validation, or receive failure | `blocked` / `null` |
44
+ | Not configured | no record (quick-start); implement writes `allowed/no_gate` |
45
+
46
+ Only an explicit operator continuation writes `prompt_approved`. Declining,
47
+ deferring, giving no response, or running under `OAT_AUTONOMOUS=1` writes
48
+ `blocked`, never anything that reads as approval. A rerun of the same gate
49
+ replaces the record.
50
+
51
+ ## Carriers
52
+
53
+ - **`oat_implement_exit_gate`** (`oat-project-implement`,
54
+ `references/completion-and-closeout.md` Step 14) uses this core and keeps its
55
+ additional values and fields there: the `pending` and `stale` statuses, the
56
+ `no_gate` disposition, and the resolution, attempt, launch, receive, waiver,
57
+ and freshness fields. Its own effective-delta freshness rule decides whether a
58
+ record is current.
59
+ - **`oat_quick_start_gate`** (`oat-project-quick-start`, Gate Execution) carries
60
+ exactly the core.
61
+ - **`oat_brief_gate`** (`oat-project-brief`, Gate Execution) carries exactly the
62
+ core, written and read under the same rules as `oat_quick_start_gate`. It is
63
+ absent when no gate is configured, and nothing routes on it: it is provenance
64
+ only.
65
+ - **`oat_milestone_gates[mNN].plan` and `.exit`** (goal mode;
66
+ `oat-project-goal` writes `plan` after each milestone's approval, and
67
+ `oat-project-implement`'s milestone closeout writes `exit`) carry the core
68
+ plus `resolution` (`configured`, `no_gate`, or `project_disabled`), a
69
+ `subject` binding (`plan` or `code` and the milestone's ordered phase set),
70
+ and derived `freshness` with `freshness_reason`. `reviewed_head` is `null`
71
+ for `no_gate` and `project_disabled`, and `no_gate` is written rather than
72
+ omitted because routing reads these carriers. `oat-project-brief`'s
73
+ `references/brief-contract.md` section 12.4 is their contract.
74
+
75
+ ## Reading a quick-start record
76
+
77
+ Readers report a quick-start record as recorded and do not recompute
78
+ `config_fingerprint`: no CLI emits a canonical fingerprint for the quick-start
79
+ gate, so a recomputation could not be reproduced across sessions. They do not
80
+ route on the record either.
81
+
82
+ - Report `status`, `disposition`, `decided_at`, and `config_fingerprint` (as
83
+ provenance) exactly as stored.
84
+ - Report the record as malformed when `status` and `disposition` do not form
85
+ one of the combinations in the write rules, or when a present `decided_at` is
86
+ not a valid ISO 8601 UTC time.
87
+ - `reviewed_head` is provenance only and is not compared with `HEAD`, because
88
+ the quick-start completion step commits after the gate.
89
+ - An absent record means none was written: no gate was configured, the gate
90
+ has not reached an outcome, or the plan predates the record. Readers do not
91
+ infer which.
92
+
93
+ Readers never write, repair, or infer a record.
@@ -5,7 +5,7 @@ disable-model-invocation: true
5
5
  user-invocable: true
6
6
  allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion
7
7
  metadata:
8
- version: 1.0.4
8
+ version: 1.0.6
9
9
  ---
10
10
 
11
11
  # Capture Untracked Work
@@ -29,7 +29,7 @@ Use when:
29
29
  Don't use when:
30
30
 
31
31
  - A project already exists for the current branch — use `oat-project-reconcile` instead
32
- - You haven't started any work yet — use `oat-project-lite` for single-sitting work, `oat-project-quick-start` for quick work, or `oat-project-new` for spec-driven work
32
+ - You haven't started any work yet — use `oat-project-lite` for single-sitting work, `oat-project-brief` for one delivery planned as a Project Brief, `oat-project-goal` for an outcome delivered over several milestones, `oat-project-quick-start` for quick work, or `oat-project-new` for spec-driven work
33
33
  - You only need to map new commits to an existing plan — use `oat-project-reconcile`
34
34
 
35
35
  ## Prerequisites
@@ -5,7 +5,7 @@ disable-model-invocation: true
5
5
  user-invocable: true
6
6
  allowed-tools: Read, Write, Bash, AskUserQuestion
7
7
  metadata:
8
- version: 1.7.15
8
+ version: 1.7.17
9
9
  ---
10
10
 
11
11
  # Complete Project
@@ -228,6 +228,13 @@ configured, autonomous, or lite closeout cannot complete until its
228
228
  `oat_post_implement_sequence` snapshot exists and every stored step and the
229
229
  final sign-off are recorded. A project whose implementation finished before
230
230
  closeout snapshots existed recovers the same way; there is no override.
231
+
232
+ For a goal project (`oat_workflow_mode: goal`) the boundary also requires a
233
+ valid declaration, an exhaustive outcome audit and delivery coverage
234
+ (`oat-project-brief/references/brief-contract.md` section 12.9); a refusal
235
+ routes to its `nextOwner.skill` (`oat-project-goal`, `oat-project-implement`,
236
+ a review owner, `oat-project-pr-progress`, or `oat-project-pr-final`) rather
237
+ than to implement alone.
231
238
  `oat project complete-state` refuses the same state in Step 5.
232
239
 
233
240
  The shared and synced archive resume branches above continue at Step 12 or
@@ -291,6 +298,7 @@ PROJECT_RECAP_CONFIG=$(oat config get workflow.explainers.projectRecap --json 2>
291
298
  - **If `PR_ON_COMPLETE` is `false`:** Set `SHOULD_OPEN_PR="false"`. Skip the Open PR question. Print `PR on complete: disabled (from workflow.createPrOnComplete).`
292
299
  - **If `PR_ON_COMPLETE` is unset:** Include the Open PR question in the batched prompt as normal (backward compatible).
293
300
  - The existing tracked-PR skip still applies: if `oat_pr_status` is `open`, do not ask the Open PR question and do not honor `PR_ON_COMPLETE=true` — the PR already exists.
301
+ - **Goal mode (`oat_workflow_mode: goal`):** the completion decision consumes the validated goal coverage from Step 1.5. When the declaration and its exhaustive audit are valid, every terminal delivery is at its agreed endpoint (`status: at_endpoint`, or `endpoint_attainment` recorded), and the snapshot's `pr` step is satisfied by coverage (`satisfied_by: { pr: delivery-coverage }`), set `SHOULD_OPEN_PR="false"`, skip the Open PR question, call no `gh pr create` in Step 11, and print `PR on complete: satisfied by goal delivery coverage` — even when `PR_ON_COMPLETE` is `true`. Genuinely uncovered delivery work never reaches this step: Step 1.5 refuses it and routes to the goal registration owner (`oat-project-pr-final` for terminal registration, `oat-project-pr-progress` for a milestone delivery). A separately intended bookkeeping PR for the completion commits is not a goal delivery: open one only when the user explicitly asks for it in this run, never because of `PR_ON_COMPLETE`, and never register it in `oat_deliveries` or count it toward coverage. Every other mode is unchanged.
294
302
 
295
303
  Select archive prompt participation before assembling the batched prompt:
296
304
 
@@ -390,6 +398,12 @@ Also preflight summary status using the same freshness rules as `oat-project-sum
390
398
  - `summary.md` is `missing` when `{PROJECT_PATH}/summary.md` does not exist
391
399
  - `summary.md` is `stale` when the tracking frontmatter fields `oat_summary_last_task`, `oat_summary_revision_count`, or `oat_summary_includes_revisions` no longer match `current_last_task`, `current_rev_count`, or `current_rev_list` as defined in `oat-project-summary` Step 3
392
400
  - `summary.md` is `current` when those tracking fields still match the `oat-project-summary` Step 3 comparison inputs
401
+ - In brief modes staleness is decided by fingerprint instead: recompute the
402
+ phase fingerprint with the `oat-project-summary` Step 3 brief fragment, and
403
+ in goal mode include the Step 3 goal fragment (the delivery IDs at
404
+ endpoint); `summary.md` is `stale` when its `oat_summary_phase_fingerprint`
405
+ is absent or differs from the recomputed value and `current` when they
406
+ match. `oat_summary_last_task` is not consulted for a brief or goal project.
393
407
 
394
408
  Preflight `{PROJECT_PATH}/references/project-retro.md` alongside the summary.
395
409
  The safety-net offer is governed by how this completion run executes, not by how
@@ -1088,7 +1102,7 @@ If a PR description artifact already exists at `{PROJECT_PATH}/pr/project-pr-*.m
1088
1102
 
1089
1103
  **Archive-aware References (required when `SHOULD_ARCHIVE` is `true`):**
1090
1104
 
1091
- When archiving, the project artifacts at `{PROJECT_PATH}/{plan,implementation,discovery,spec,design,summary}.md` will move to a gitignored archive location in Step 8. After commit + push (Step 10), those paths no longer exist on the branch and any blob link to them returns 404 on GitHub. The PR description must anticipate this:
1105
+ When archiving, the project artifacts at `{PROJECT_PATH}/{plan,implementation,discovery,spec,design,summary}.md` will move to a gitignored archive location in Step 8. After commit + push (Step 10), those paths no longer exist on the branch and any blob link to them returns 404 on GitHub. The PR description must anticipate this. A brief project's artifact set is `plan.md` (the Project Brief), `implementation.md` (the phase journal), `summary.md`, and `references/`; it has no discovery, spec, or design artifact:
1092
1106
 
1093
1107
  - **Drop References bullets** that point to artifacts about to become local-only:
1094
1108
  - `plan.md`, `implementation.md`, `discovery.md`, `spec.md`, `design.md`, `summary.md`, `references/imported-plan.md`
@@ -5,7 +5,7 @@ disable-model-invocation: false
5
5
  user-invocable: true
6
6
  allowed-tools: Read, Write, Bash(git:*), Bash(oat:*), Bash(pnpm:*), Glob, Grep, AskUserQuestion
7
7
  metadata:
8
- version: 2.2.9
8
+ version: 2.2.11
9
9
  ---
10
10
 
11
11
  # Discovery Phase
@@ -32,7 +32,7 @@ Before acting:
32
32
  2. Confirm `{PROJECT_PATH}/state.md` exists.
33
33
  3. Confirm `oat_workflow_mode` is `spec-driven` or absent only in a legacy spec-driven project.
34
34
 
35
- If any check fails, decline this skill. Offer `oat-project-new` for a new spec-driven project, `oat-project-quick-start` for a quick project, `oat-project-lite` for single-sitting work, or `oat-project-open` for switching to an existing project. When the gate passes, summarize the active project and ask before continuing discovery.
35
+ If any check fails, decline this skill. Offer `oat-project-new` for a new spec-driven project, `oat-project-quick-start` for a quick project, `oat-project-lite` for single-sitting work, `oat-project-brief` for one delivery planned as a Project Brief, `oat-project-goal` for an outcome delivered over several milestones, or `oat-project-open` for switching to an existing project. When the gate passes, summarize the active project and ask before continuing discovery.
36
36
 
37
37
  ## Mode Assertion
38
38
 
@@ -107,6 +107,8 @@ PROJECTS_ROOT="${PROJECTS_ROOT%/}"
107
107
  - If `oat_workflow_mode` is present and not `spec-driven`, stop and route:
108
108
  - quick project: continue with `oat-project-quick-start` / `oat-project-progress`
109
109
  - lite project: continue with `oat-project-lite` / `oat-project-progress`
110
+ - brief project: continue with `oat-project-brief` / `oat-project-progress`
111
+ - goal project: continue with `oat-project-goal` / `oat-project-progress`
110
112
  - import project: continue with `oat-project-import-plan` / `oat-project-progress`
111
113
  - Ask user:
112
114
  - **Continue** with active project, or
@@ -5,7 +5,7 @@ disable-model-invocation: true
5
5
  user-invocable: false
6
6
  allowed-tools: Read, Bash
7
7
  metadata:
8
- version: 1.1.7
8
+ version: 1.1.8
9
9
  ---
10
10
 
11
11
  # Dispatching OAT Project Subagents
@@ -260,6 +260,14 @@ lifecycle_outcome:
260
260
  Do not rewrite generic route, selector, acceptance, outcome, or diagnostic
261
261
  fields inside the lifecycle extension.
262
262
 
263
+ `workflow_mode` carries the project's recorded mode, `brief` included. In a
264
+ brief project the lifecycle scope is a phase ID: `phase_id` (such as `p02`)
265
+ names the phase-unit, and `task_id` names the execution record the launch
266
+ executes, or is `null` for a whole-phase launch, because brief phases have no
267
+ planned tasks. The brief's one-committing-owner rule then sets
268
+ `commit_policy`: a nested worker returns edits on owned paths and never
269
+ commits.
270
+
263
271
  ## Failure Boundaries
264
272
 
265
273
  - Invalid or stale project state: block before generic dispatch.
@@ -6,7 +6,7 @@ disable-model-invocation: false
6
6
  user-invocable: true
7
7
  allowed-tools: Read, Write, Edit, Bash(git:*), Bash(jq:*), Bash(oat pjm:*), Bash(oat project push:*), Bash(oat project scope:*), Bash(oat tools:*), Glob, Grep, AskUserQuestion, Skill
8
8
  metadata:
9
- version: 1.8.8
9
+ version: 1.8.10
10
10
  ---
11
11
 
12
12
  # Project Documentation Sync
@@ -217,6 +217,22 @@ shipped results. A lite project accepts `discovery.md`, `spec.md`, and
217
217
  `design.md` as absent; do not read or require them. Build the documentation
218
218
  delta from what actually shipped and continue with code verification.
219
219
 
220
+ For `oat_workflow_mode: brief` or `goal`, use the brief artifact set instead
221
+ of the numbered list below. Read `plan.md` (the Project Brief: Goal, Outcomes,
222
+ Approach and any `### Design` subsection, Constraints and Out of Scope,
223
+ Decisions, and the phases' Intent and Exit evidence), then `implementation.md`
224
+ phase sections, execution records, `Brief deltas`, and `Final Summary (for
225
+ PR/docs)` as the shipped results, plus `summary.md` and `references/research/`
226
+ when present. A goal project adds two shipped-result sources from `state.md`:
227
+ the outcome audit (`oat_goal_outcome_audit`, the per-outcome disposition once
228
+ the goal is declared met) and the delivery registry (`oat_deliveries`, each
229
+ delivery's scope, pull requests and endpoint observation); document only what
230
+ those deliveries shipped, and name audited deferrals rather than documenting
231
+ them as delivered. A brief or goal project accepts `discovery.md`, `spec.md`,
232
+ and `design.md` as absent; do not read or require them. Build the
233
+ documentation delta from what actually shipped and continue with code
234
+ verification.
235
+
220
236
  For every other workflow mode, read the numbered artifact list below.
221
237
 
222
238
  **Read in order:**