@open-agent-toolkit/cli 0.3.17 → 0.3.19
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/assets/agents/oat-phase-implementer.md +81 -3
- package/assets/agents/oat-reviewer.md +15 -5
- package/assets/bundle-metadata.json +1 -1
- package/assets/docs/reference/cli-reference.md +8 -5
- package/assets/docs/reference/oat-directory-structure.md +1 -0
- package/assets/docs/reference/project-artifacts.md +17 -1
- package/assets/docs/reference/project-state-machine.md +19 -4
- package/assets/docs/skills/brainstorm.md +2 -1
- package/assets/docs/skills/index.md +1 -0
- package/assets/docs/workflows/advanced/autonomy.md +9 -1
- package/assets/docs/workflows/advanced/workflow-gates.md +11 -6
- package/assets/docs/workflows/approvals-and-automation.md +13 -8
- package/assets/docs/workflows/choose-workflow.md +16 -8
- package/assets/docs/workflows/projects/closeout/closeout-skills.md +8 -3
- package/assets/docs/workflows/projects/closeout/pr-flow.md +2 -0
- package/assets/docs/workflows/projects/execution/execution-skills.md +14 -2
- package/assets/docs/workflows/projects/execution/implementation-execution.md +15 -0
- package/assets/docs/workflows/projects/execution/picking-up-projects.md +10 -1
- package/assets/docs/workflows/projects/execution/project-log.md +22 -0
- package/assets/docs/workflows/projects/lifecycle.md +73 -9
- package/assets/docs/workflows/projects/planning/hill-checkpoints.md +18 -1
- package/assets/docs/workflows/projects/planning/planning-skills.md +11 -10
- package/assets/docs/workflows/projects/planning/starting-projects.md +92 -20
- package/assets/docs/workflows/projects/reviews/index.md +15 -2
- package/assets/docs/workflows/projects/reviews/review-flavors.md +5 -3
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-brainstorm/SKILL.md +33 -9
- package/assets/skills/oat-brainstorm/references/destinations.md +9 -4
- package/assets/skills/oat-docs/SKILL.md +9 -4
- package/assets/skills/oat-pjm-review-backlog/SKILL.md +2 -2
- package/assets/skills/oat-project-autonomous/SKILL.md +14 -8
- package/assets/skills/oat-project-autonomous/references/gate-inventory.md +17 -2
- package/assets/skills/oat-project-brief/SKILL.md +592 -0
- package/assets/skills/oat-project-brief/references/brief-contract.md +294 -0
- package/assets/skills/oat-project-brief/references/docs/autonomy-contract.md +393 -0
- package/assets/skills/oat-project-brief/references/docs/gate-approval-record.md +84 -0
- package/assets/skills/oat-project-capture/SKILL.md +2 -2
- package/assets/skills/oat-project-complete/SKILL.md +7 -2
- package/assets/skills/oat-project-discover/SKILL.md +3 -2
- package/assets/skills/oat-project-dispatch-subagents/SKILL.md +9 -1
- package/assets/skills/oat-project-document/SKILL.md +11 -1
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +17 -2
- package/assets/skills/oat-project-implement/SKILL.md +1 -1
- package/assets/skills/oat-project-implement/references/completion-and-closeout.md +40 -0
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +17 -2
- package/assets/skills/oat-project-implement/references/docs/gate-approval-record.md +4 -0
- package/assets/skills/oat-project-implement/references/phase-execution.md +166 -1
- package/assets/skills/oat-project-implement/references/plan-and-resume.md +97 -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 +17 -2
- package/assets/skills/oat-project-new/SKILL.md +5 -1
- package/assets/skills/oat-project-next/SKILL.md +31 -4
- package/assets/skills/oat-project-next/references/docs/gate-approval-record.md +4 -0
- package/assets/skills/oat-project-plan/SKILL.md +12 -2
- package/assets/skills/oat-project-plan-writing/SKILL.md +6 -4
- package/assets/skills/oat-project-pr-final/SKILL.md +15 -3
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +17 -2
- package/assets/skills/oat-project-pr-progress/SKILL.md +31 -4
- package/assets/skills/oat-project-progress/SKILL.md +30 -8
- package/assets/skills/oat-project-progress/references/docs/gate-approval-record.md +4 -0
- package/assets/skills/oat-project-promote-spec-driven/SKILL.md +2 -2
- package/assets/skills/oat-project-quick-start/SKILL.md +60 -1
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +17 -2
- package/assets/skills/oat-project-quick-start/references/docs/gate-approval-record.md +4 -0
- package/assets/skills/oat-project-reconcile/SKILL.md +65 -3
- package/assets/skills/oat-project-review-provide/SKILL.md +331 -12
- package/assets/skills/oat-project-review-receive/SKILL.md +86 -1
- package/assets/skills/oat-project-revise/SKILL.md +27 -4
- package/assets/skills/oat-project-summary/SKILL.md +95 -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/init/tools/shared/skill-script-references.d.ts.map +1 -1
- package/dist/commands/init/tools/shared/skill-script-references.js +8 -1
- package/dist/commands/project/log/append.d.ts.map +1 -1
- package/dist/commands/project/log/append.js +70 -10
- 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 +35 -7
- package/dist/commands/project/promote/promote.d.ts +32 -1
- package/dist/commands/project/promote/promote.d.ts.map +1 -1
- package/dist/commands/project/promote/promote.js +562 -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 +52 -18
- package/dist/commands/project/validate-plan/profiles.d.ts +54 -0
- package/dist/commands/project/validate-plan/profiles.d.ts.map +1 -0
- package/dist/commands/project/validate-plan/profiles.js +269 -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/agents-md-lock.d.ts +3 -0
- package/dist/commands/shared/agents-md-lock.d.ts.map +1 -0
- package/dist/commands/shared/agents-md-lock.js +130 -0
- package/dist/commands/shared/agents-md.d.ts.map +1 -1
- package/dist/commands/shared/agents-md.js +26 -8
- 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 +1 -0
- package/dist/commands/state/generate.d.ts.map +1 -1
- package/dist/commands/state/generate.js +51 -2
- package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -1
- package/dist/commands/tools/shared/pack-manifest.js +3 -0
- package/package.json +2 -2
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
# Brief Contract
|
|
2
|
+
|
|
3
|
+
This is the shared contract for brief-family workflow modes. `brief` delivers
|
|
4
|
+
once; `goal` (many milestones) will extend this contract and its sections are
|
|
5
|
+
reserved below. Lifecycle skills and agent roles that read a brief project
|
|
6
|
+
follow these rules; where a skill restates a rule, this file wins.
|
|
7
|
+
|
|
8
|
+
## 1. The Project Brief
|
|
9
|
+
|
|
10
|
+
A brief project has one authored artifact: `plan.md`, titled "Project Brief",
|
|
11
|
+
scaffolded from the `plan-brief` template. Its frontmatter is the ordinary plan
|
|
12
|
+
frontmatter with `oat_plan_source: brief`, so plan consumers keep working.
|
|
13
|
+
Only the body differs. Sections, in order:
|
|
14
|
+
|
|
15
|
+
| Section | Content |
|
|
16
|
+
| ------------------------------- | --------------------------------------------------------------------------------------------------------- |
|
|
17
|
+
| Goal | The outcome and why it matters. |
|
|
18
|
+
| Outcomes | Numbered observable outcomes, each naming its intended evidence. Completion is audited against this list. |
|
|
19
|
+
| Approach | The agreed architecture. An optional `### Design` subsection; longer notes go in `references/`. |
|
|
20
|
+
| Constraints and Out of Scope | Rules the work respects and adjacent work excluded. |
|
|
21
|
+
| Decisions | One line and rationale per decision, including the alternatives rejected. |
|
|
22
|
+
| Known Unknowns | Deliberately open questions, each with the phase that settles it. |
|
|
23
|
+
| Delivery endpoint and authority | What "delivered" means, who approves what, what the agent decides alone. Recorded once and reused. |
|
|
24
|
+
| Milestones | Reserved for goal mode; brief projects leave it empty. |
|
|
25
|
+
| Phases | `## Phase pNN:` blocks (section 2). |
|
|
26
|
+
| Parallelism | Declared phase groups (`oat_plan_parallel_groups`). |
|
|
27
|
+
| Reviews | The review table, preserved row by row. |
|
|
28
|
+
| Implementation Complete | Filled at closeout. |
|
|
29
|
+
| References | Journal, research, and project log locations. |
|
|
30
|
+
|
|
31
|
+
Planned proof lives in the brief; observed evidence lives in
|
|
32
|
+
`implementation.md`. The brief has no Status paragraph and no Continuations
|
|
33
|
+
section, and never carries `### Task` headings.
|
|
34
|
+
|
|
35
|
+
## 2. Phase grammar
|
|
36
|
+
|
|
37
|
+
Each phase is one `## Phase pNN: <name>` heading, a blank line, and these exact
|
|
38
|
+
lines:
|
|
39
|
+
|
|
40
|
+
```markdown
|
|
41
|
+
**Intent:** what this phase changes and why
|
|
42
|
+
**Exit evidence:** the verification that shows the phase is done
|
|
43
|
+
**Provisional:** no
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
- `**Intent:**` and `**Exit evidence:**` are required and non-empty.
|
|
47
|
+
- `**Provisional:**` takes `yes` or `no`; absent means `no`. The first phase is
|
|
48
|
+
never provisional. Only the next phase must be concrete.
|
|
49
|
+
- Phase IDs are stable and never reused. Document order, not numeric order,
|
|
50
|
+
governs execution and review ranges. Revision phases use `p-revN`.
|
|
51
|
+
- Validation is strict and fence-aware: `oat project validate-plan` applies the
|
|
52
|
+
brief profile and reports `brief-no-phases`, `brief-duplicate-phase`,
|
|
53
|
+
`brief-phase-missing-intent`, `brief-phase-missing-exit-evidence`,
|
|
54
|
+
`brief-provisional-invalid`, `brief-first-phase-provisional`, and
|
|
55
|
+
`brief-malformed-phase-heading` as errors, and `brief-task-headings-ignored`
|
|
56
|
+
as a warning.
|
|
57
|
+
|
|
58
|
+
Within the approved outcomes, constraints, authority, and evidence, the agent
|
|
59
|
+
may add, split, or reorder phases and make provisional phases concrete without
|
|
60
|
+
re-approval, logging each change in `project-log.md` when the project log is
|
|
61
|
+
enabled (otherwise in the journal). Parallel groups may be declared whenever
|
|
62
|
+
their phases become concrete.
|
|
63
|
+
|
|
64
|
+
## 3. Journal and progress
|
|
65
|
+
|
|
66
|
+
`implementation.md` is the per-phase journal. Each `## Phase pNN:` heading in
|
|
67
|
+
the brief is one **phase-unit**. Progress counts units, not tasks.
|
|
68
|
+
|
|
69
|
+
**Phase markers** are exact lines directly under the journal's phase heading:
|
|
70
|
+
|
|
71
|
+
- `**Status:** pending | in_progress | completed | failed | extracted`
|
|
72
|
+
- `**Base:** <full SHA>`, captured before phase work starts
|
|
73
|
+
- `**Head:** <full SHA>`, the candidate head captured when the phase ends
|
|
74
|
+
- `**Executor:** root | phase-implementer:<id> | worker:<id> | inline:<exception-ref> | reconciled`
|
|
75
|
+
- `**Extracted to:** <slug>`, required with `extracted` (goal mode only);
|
|
76
|
+
`extracted` without it reads as `pending`
|
|
77
|
+
- `**Corrects:** pNN` on a revision phase
|
|
78
|
+
|
|
79
|
+
**Marker ownership.** The root writes `**Base:**` in the phase-start commit
|
|
80
|
+
before dispatch; the committing owner writes `**Head:**` when the phase's work
|
|
81
|
+
ends, before its review; only the root writes `**Status:** completed`, at
|
|
82
|
+
acceptance.
|
|
83
|
+
|
|
84
|
+
Phase ownership ends at the next line starting with `#`, including a
|
|
85
|
+
`### Task` heading, so a task record's status is never read as its phase's
|
|
86
|
+
status.
|
|
87
|
+
|
|
88
|
+
**Unit precedence**, per phase: extracted (excluded from totals); provisional
|
|
89
|
+
(always incomplete, regardless of any marker); accepted (`**Status:**
|
|
90
|
+
completed`); otherwise incomplete. `**Status:** completed` means accepted:
|
|
91
|
+
verification, review dispositions, queued fixes, and selected gates are
|
|
92
|
+
settled. Finalization requires every unit in scope to be accepted.
|
|
93
|
+
|
|
94
|
+
## 4. Readiness and the design strand
|
|
95
|
+
|
|
96
|
+
The interview is conversational and runs in readiness rounds. Batch
|
|
97
|
+
independent questions, sequence dependent ones, and ask a single question when
|
|
98
|
+
its answer reshapes the rest. Each question carries a recommendation and its
|
|
99
|
+
tradeoff.
|
|
100
|
+
|
|
101
|
+
- **Facts** that code, docs, or research can settle are the agent's job and
|
|
102
|
+
never become questions; resolve them without blocking the round.
|
|
103
|
+
- **Decisions** belong to the user.
|
|
104
|
+
- **Design strand**, proportional to the work: architecture (components,
|
|
105
|
+
boundaries, interfaces, data shapes, where the work sits); behavior (what a
|
|
106
|
+
user or caller observes, captured as Outcomes); alternatives and tradeoffs
|
|
107
|
+
for each consequential decision, with a recommendation and its cost;
|
|
108
|
+
risks and unknowns, which become research or prototype phases.
|
|
109
|
+
- Questions that matter inside one phase go to Known Unknowns with the phase
|
|
110
|
+
that settles them; only decisions that change the brief or the phase split
|
|
111
|
+
stay in the interview.
|
|
112
|
+
|
|
113
|
+
**Readiness** is design alignment, not a round count: outcome, boundaries,
|
|
114
|
+
approach, evidence, and remaining uncertainty are understood and the user has
|
|
115
|
+
explicitly accepted the design. Brief approval confirms a design the user has
|
|
116
|
+
already agreed to; it is never the first time the user sees it. Interview
|
|
117
|
+
length alone never forces a different workflow.
|
|
118
|
+
|
|
119
|
+
**Realignment.** A material change (to an Outcome, a Constraint, the
|
|
120
|
+
authority, the endpoint, a reversal of a Decision, or a departure from the
|
|
121
|
+
Approach) triggers a short, focused realignment with the user before work
|
|
122
|
+
continues. Phase-local design inside the agreed Approach is the agent's
|
|
123
|
+
decision and is logged.
|
|
124
|
+
|
|
125
|
+
## 5. Review ladder
|
|
126
|
+
|
|
127
|
+
Before implementation:
|
|
128
|
+
|
|
129
|
+
1. The brief is written and committed.
|
|
130
|
+
2. Independent artifact review of the committed brief. The reviewer gets the
|
|
131
|
+
brief and this contract, not the session. Minor findings are folded;
|
|
132
|
+
material findings return to the user as a focused realignment.
|
|
133
|
+
3. The configured gate for `oat-project-brief` runs on the committed bundle
|
|
134
|
+
(reruns bounded by its `maxAttempts`). Its outcome is recorded as
|
|
135
|
+
`oat_brief_gate` with the core fields of the gate approval record.
|
|
136
|
+
4. One user approval of the reviewed brief.
|
|
137
|
+
|
|
138
|
+
During implementation:
|
|
139
|
+
|
|
140
|
+
1. Author self-check with fresh verification evidence, and outcomes re-read
|
|
141
|
+
against the brief.
|
|
142
|
+
2. A fresh independent review of each phase on its anchored range.
|
|
143
|
+
3. The optional `oat_phase_review_gate`, unchanged and off by default.
|
|
144
|
+
4. A final integrated independent review.
|
|
145
|
+
5. The configured implement exit gate.
|
|
146
|
+
|
|
147
|
+
Exhausted correction rounds never convert blocking findings into acceptance.
|
|
148
|
+
|
|
149
|
+
## 6. Execution precedence
|
|
150
|
+
|
|
151
|
+
Project scheduling is separate from phase execution:
|
|
152
|
+
|
|
153
|
+
1. Run ready, concrete, declared parallel phase groups (worktree per phase,
|
|
154
|
+
merged back in document order).
|
|
155
|
+
2. For a non-group phase, fan out from the root when at least two bounded
|
|
156
|
+
slices pass the independence test.
|
|
157
|
+
3. Otherwise delegate one phase implementer.
|
|
158
|
+
4. Work inline only through an exception recorded before editing that holds
|
|
159
|
+
for the whole phase: no new surface, no unresolved design, no consequential
|
|
160
|
+
change, and one existing proof command. File count alone is not a
|
|
161
|
+
predicate; reclassify when scope grows.
|
|
162
|
+
|
|
163
|
+
**Independence test** for phases and slices alike: no shared files, state,
|
|
164
|
+
generated files, lockfiles, formatter or build output, fixtures, or services,
|
|
165
|
+
and no sequential dependency. A parallel phase is also a coherent deliverable
|
|
166
|
+
on its own.
|
|
167
|
+
|
|
168
|
+
There is one committing owner per worktree: the root for a root fan-out, the
|
|
169
|
+
phase implementer for its phase worktree. Nested workers return edits on owned
|
|
170
|
+
paths and never commit. Parallel phase worktrees write phase-local records;
|
|
171
|
+
the root reconciles them into `implementation.md` at fan-in. The phase-start
|
|
172
|
+
record names the executor, worktree, committing owner, and the parallelism
|
|
173
|
+
assessment.
|
|
174
|
+
|
|
175
|
+
## 7. Execution records
|
|
176
|
+
|
|
177
|
+
Tasks are execution records, never a plan:
|
|
178
|
+
|
|
179
|
+
- Open a record when work starts, under its phase in `implementation.md`:
|
|
180
|
+
`### Task pNN-tNN: <name>` with intent, files, proof command, executor, and
|
|
181
|
+
the live handle while in flight.
|
|
182
|
+
- Close it when its implementation commit lands, with the commit SHA and
|
|
183
|
+
`**Status:** completed`, or with a terminal status (`failed`, `cancelled`,
|
|
184
|
+
`no-change`) and no fabricated commit. Bookkeeping and merge commits are
|
|
185
|
+
separate from the one implementation commit.
|
|
186
|
+
- Whoever executes creates the record. Commit messages keep `(pNN-tNN)`.
|
|
187
|
+
- Records are coherent units tied to a commit; not every command or edit
|
|
188
|
+
becomes a record.
|
|
189
|
+
- Lookahead is allowed: the root may sketch several independent records before
|
|
190
|
+
dispatching them together. A maintained, approved up-front task plan is a
|
|
191
|
+
promotion to quick, not lookahead.
|
|
192
|
+
- Records never change phase totals. Task completion is committed execution;
|
|
193
|
+
phase completion is accepted evidence.
|
|
194
|
+
- Resume reconciles open records against `git log` and live handles before any
|
|
195
|
+
redispatch.
|
|
196
|
+
|
|
197
|
+
## 8. Pointer interpretation
|
|
198
|
+
|
|
199
|
+
`oat_current_task_id` in `implementation.md` may hold a task ID or a phase ID.
|
|
200
|
+
Brief-mode resume resolves a task ID to its phase, a phase ID to itself, and
|
|
201
|
+
`null`, an unknown ID, or an extracted or accepted unit to the first incomplete
|
|
202
|
+
unit in document order within the active scope.
|
|
203
|
+
|
|
204
|
+
## 9. Record ownership
|
|
205
|
+
|
|
206
|
+
| Record | Owns |
|
|
207
|
+
| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
|
|
208
|
+
| `plan.md` (the brief) | Intent: outcomes, approach, decisions, phases, review table. |
|
|
209
|
+
| `state.md` | Routing, dispatch policy, gate overrides, and the `oat_brief_gate` record. |
|
|
210
|
+
| `implementation.md` | The per-phase journal: status, anchors, verification results, review disposition, authority changes, deviations, next action, records. |
|
|
211
|
+
| `project-log.md` | Observations and phase amendments, when the project log is enabled. |
|
|
212
|
+
| `references/research/` | Research and imported material. |
|
|
213
|
+
|
|
214
|
+
`pr/` and archived reviews are gitignored; nothing authoritative lives only
|
|
215
|
+
there.
|
|
216
|
+
|
|
217
|
+
## 10. Anchors and review scope
|
|
218
|
+
|
|
219
|
+
Per-phase review scope comes from the recorded `**Base:**` and `**Head:**`
|
|
220
|
+
anchors, not from task-message commit inference. For a requested scope
|
|
221
|
+
(`pNN`, a contiguous document-order run `pNN-pMM`, or `final` for every
|
|
222
|
+
accepted non-extracted phase including revision phases):
|
|
223
|
+
|
|
224
|
+
- every base and head exists, and each base is an ancestor of its head;
|
|
225
|
+
- the aggregate head is the last selected phase's head, and every selected
|
|
226
|
+
phase head is contained in it;
|
|
227
|
+
- sequential phases continue: the next base equals or descends from the
|
|
228
|
+
previous head (bookkeeping commits between phases sit inside the range);
|
|
229
|
+
- a parallel group shares its fork base, and member heads advance in document
|
|
230
|
+
order on the project branch; each head is the member's integration head,
|
|
231
|
+
normally a merge commit, but the merge-commit property is not enforced
|
|
232
|
+
because a member may be integrated by cherry-pick;
|
|
233
|
+
- the range is the first base through the aggregate head.
|
|
234
|
+
|
|
235
|
+
A group member's per-phase review runs before fan-in on
|
|
236
|
+
`EXPECTED_HEAD..<worktree head>` with `oat_review_scope_source: anchors`; the
|
|
237
|
+
fan-in anchors govern `pNN-pMM` and `final`.
|
|
238
|
+
|
|
239
|
+
Missing anchors widen the range to the confirmed merge-base range, using
|
|
240
|
+
`(pNN-` commit-message matches only to label commits, never to narrow. Invalid
|
|
241
|
+
or contradictory anchors stop and route to `oat-project-reconcile`.
|
|
242
|
+
|
|
243
|
+
**Late-fix rule.** Fix commits may advance a phase's `**Head:**`, base
|
|
244
|
+
unchanged, only while no later phase has a `**Base:**`. Once a later phase has
|
|
245
|
+
started, corrections are recorded as an appended revision phase
|
|
246
|
+
`## Phase p-revN:` with its own anchors and `**Corrects:** pNN`; the corrected
|
|
247
|
+
phase keeps its anchors and its review row is re-evaluated by the revision's
|
|
248
|
+
review.
|
|
249
|
+
|
|
250
|
+
## 11. Promotion to quick
|
|
251
|
+
|
|
252
|
+
Mode changes are manual. A brief becomes a quick project only through:
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
oat project promote "$PROJECT_PATH" --to quick --json
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
There is no reverse direction. Promotion migrates by phase state:
|
|
259
|
+
|
|
260
|
+
- **Accepted** phases keep their completed execution records, copied into
|
|
261
|
+
`plan.md` as `### Task` entries with the same IDs; failed, cancelled, and
|
|
262
|
+
no-change records stay in the journal and are listed as historical. An
|
|
263
|
+
accepted phase with no completed record gets one synthesized
|
|
264
|
+
`Accepted via phase evidence` task against its phase head.
|
|
265
|
+
- **Active** phases keep completed records; unfinished records become the
|
|
266
|
+
first authored tasks during the promoted-brief resume. No acceptance task is
|
|
267
|
+
synthesized for an unaccepted phase.
|
|
268
|
+
- **Pending or provisional** phases stay taskless and need authored tasks.
|
|
269
|
+
|
|
270
|
+
Promotion sets `oat_promoted_from: brief` and lists every phase still needing
|
|
271
|
+
tasks in `oat_promotion_pending_phases`; quick plan readiness stays false until
|
|
272
|
+
that list is empty. The brief's Goal, Outcomes, Approach, Decisions,
|
|
273
|
+
Constraints, Known Unknowns, and delivery endpoint and authority are rendered
|
|
274
|
+
into `discovery.md`; the original brief is
|
|
275
|
+
archived to `references/brief-archive.md`; existing `## Reviews` rows keep
|
|
276
|
+
their cells, and one provenance line under `## Reviews` states that rows dated
|
|
277
|
+
on or before the promotion were recorded under workflow mode brief.
|
|
278
|
+
`oat-project-quick-start` resumes the promoted project and authors the
|
|
279
|
+
pending tasks.
|
|
280
|
+
|
|
281
|
+
Promotion refuses, writing nothing, with:
|
|
282
|
+
|
|
283
|
+
- `brief-archive-exists`: `references/brief-archive.md` already exists;
|
|
284
|
+
- `extracted-phases`: a journal phase is `extracted`;
|
|
285
|
+
- `invalid-brief-plan`: the brief has no parseable phases;
|
|
286
|
+
- `missing-phase-head`: an accepted phase has no completed record and no
|
|
287
|
+
`**Head:**` anchor to synthesize from (the refused phases are listed).
|
|
288
|
+
|
|
289
|
+
## 12. Goal mode (reserved)
|
|
290
|
+
|
|
291
|
+
Goal mode adds a `## Milestones` index, milestone state, a delivery registry,
|
|
292
|
+
milestone-scoped gates, re-alignment at each delivered milestone, and terminal
|
|
293
|
+
closeout by verified delivery coverage. It is not registered yet; its
|
|
294
|
+
sections will be added here when it ships.
|