@open-agent-toolkit/cli 0.3.19 → 0.3.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/assets/agents/oat-phase-implementer.md +26 -3
- package/assets/agents/oat-reviewer.md +8 -3
- package/assets/bundle-metadata.json +1 -1
- package/assets/docs/reference/cli-reference.md +12 -7
- package/assets/docs/reference/oat-directory-structure.md +1 -0
- package/assets/docs/reference/project-artifacts.md +56 -1
- package/assets/docs/reference/project-state-machine.md +41 -7
- package/assets/docs/skills/brainstorm.md +3 -2
- package/assets/docs/skills/index.md +13 -10
- package/assets/docs/workflows/advanced/autonomy.md +3 -1
- package/assets/docs/workflows/advanced/dispatch-ceiling.md +2 -2
- package/assets/docs/workflows/advanced/workflow-gates.md +17 -4
- package/assets/docs/workflows/approvals-and-automation.md +21 -10
- package/assets/docs/workflows/choose-workflow.md +17 -9
- package/assets/docs/workflows/ideas/index.md +1 -1
- package/assets/docs/workflows/ideas/lifecycle.md +3 -2
- package/assets/docs/workflows/projects/closeout/closeout-skills.md +80 -7
- package/assets/docs/workflows/projects/closeout/pr-flow.md +7 -1
- package/assets/docs/workflows/projects/execution/execution-skills.md +16 -3
- package/assets/docs/workflows/projects/execution/implementation-execution.md +1 -1
- package/assets/docs/workflows/projects/execution/picking-up-projects.md +11 -1
- package/assets/docs/workflows/projects/lifecycle.md +108 -9
- package/assets/docs/workflows/projects/planning/hill-checkpoints.md +6 -6
- package/assets/docs/workflows/projects/planning/planning-skills.md +9 -7
- package/assets/docs/workflows/projects/planning/starting-projects.md +57 -11
- package/assets/docs/workflows/projects/reviews/index.md +22 -1
- 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 +34 -9
- package/assets/skills/oat-brainstorm/references/destinations.md +6 -3
- package/assets/skills/oat-dispatch-subagents/SKILL.md +1 -1
- package/assets/skills/oat-dispatch-subagents/references/record-schema.md +6 -0
- package/assets/skills/oat-docs/SKILL.md +7 -3
- package/assets/skills/oat-pjm-review-backlog/SKILL.md +2 -2
- package/assets/skills/oat-project-autonomous/SKILL.md +9 -3
- package/assets/skills/oat-project-autonomous/references/gate-inventory.md +151 -132
- package/assets/skills/oat-project-brief/SKILL.md +1 -1
- package/assets/skills/oat-project-brief/references/brief-contract.md +465 -9
- package/assets/skills/oat-project-brief/references/docs/autonomy-contract.md +151 -132
- package/assets/skills/oat-project-brief/references/docs/gate-approval-record.md +9 -0
- package/assets/skills/oat-project-capture/SKILL.md +2 -2
- package/assets/skills/oat-project-complete/SKILL.md +14 -5
- package/assets/skills/oat-project-discover/SKILL.md +3 -2
- package/assets/skills/oat-project-document/SKILL.md +12 -6
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +151 -132
- package/assets/skills/oat-project-goal/SKILL.md +697 -0
- package/assets/skills/oat-project-goal/references/docs/autonomy-contract.md +412 -0
- package/assets/skills/oat-project-goal/references/docs/gate-approval-record.md +93 -0
- package/assets/skills/oat-project-implement/SKILL.md +1 -1
- package/assets/skills/oat-project-implement/references/completion-and-closeout.md +67 -0
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +151 -132
- package/assets/skills/oat-project-implement/references/docs/gate-approval-record.md +9 -0
- package/assets/skills/oat-project-implement/references/phase-execution.md +10 -3
- package/assets/skills/oat-project-implement/references/plan-and-resume.md +28 -1
- package/assets/skills/oat-project-lite/SKILL.md +1 -1
- package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +151 -132
- package/assets/skills/oat-project-new/SKILL.md +3 -3
- package/assets/skills/oat-project-next/SKILL.md +45 -15
- package/assets/skills/oat-project-next/references/docs/gate-approval-record.md +9 -0
- package/assets/skills/oat-project-plan/SKILL.md +14 -3
- package/assets/skills/oat-project-plan-writing/SKILL.md +6 -4
- package/assets/skills/oat-project-pr-final/SKILL.md +51 -1
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +151 -132
- package/assets/skills/oat-project-pr-progress/SKILL.md +97 -3
- package/assets/skills/oat-project-progress/SKILL.md +38 -5
- package/assets/skills/oat-project-progress/references/docs/gate-approval-record.md +9 -0
- package/assets/skills/oat-project-quick-start/SKILL.md +14 -9
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +151 -132
- package/assets/skills/oat-project-quick-start/references/docs/gate-approval-record.md +9 -0
- package/assets/skills/oat-project-reconcile/SKILL.md +31 -2
- package/assets/skills/oat-project-review-provide/SKILL.md +79 -13
- package/assets/skills/oat-project-review-receive/SKILL.md +70 -1
- package/assets/skills/oat-project-revise/SKILL.md +25 -1
- package/assets/skills/oat-project-summary/SKILL.md +60 -5
- package/assets/skills/oat-wave-execute/SKILL.md +2 -2
- package/assets/templates/state.md +1 -1
- package/dist/commands/project/closeout-check/closeout-invariant.d.ts +119 -3
- package/dist/commands/project/closeout-check/closeout-invariant.d.ts.map +1 -1
- package/dist/commands/project/closeout-check/closeout-invariant.js +454 -2
- package/dist/commands/project/closeout-check/index.d.ts +21 -3
- package/dist/commands/project/closeout-check/index.d.ts.map +1 -1
- package/dist/commands/project/closeout-check/index.js +190 -4
- package/dist/commands/project/complete-state/index.d.ts +2 -1
- package/dist/commands/project/complete-state/index.d.ts.map +1 -1
- package/dist/commands/project/complete-state/index.js +7 -1
- package/dist/commands/project/delivery/check.d.ts +66 -0
- package/dist/commands/project/delivery/check.d.ts.map +1 -0
- package/dist/commands/project/delivery/check.js +232 -0
- package/dist/commands/project/delivery/evidence.d.ts +171 -0
- package/dist/commands/project/delivery/evidence.d.ts.map +1 -0
- package/dist/commands/project/delivery/evidence.js +902 -0
- package/dist/commands/project/delivery/index.d.ts +7 -0
- package/dist/commands/project/delivery/index.d.ts.map +1 -0
- package/dist/commands/project/delivery/index.js +13 -0
- package/dist/commands/project/delivery/refresh.d.ts +110 -0
- package/dist/commands/project/delivery/refresh.d.ts.map +1 -0
- package/dist/commands/project/delivery/refresh.js +441 -0
- package/dist/commands/project/index.d.ts.map +1 -1
- package/dist/commands/project/index.js +2 -0
- package/dist/commands/project/log/append.d.ts +6 -0
- package/dist/commands/project/log/append.d.ts.map +1 -1
- package/dist/commands/project/log/append.js +6 -1
- package/dist/commands/project/new/scaffold.d.ts.map +1 -1
- package/dist/commands/project/new/scaffold.js +47 -1
- package/dist/commands/project/promote/promote.d.ts +15 -1
- package/dist/commands/project/promote/promote.d.ts.map +1 -1
- package/dist/commands/project/promote/promote.js +99 -15
- package/dist/commands/project/validate-plan/index.d.ts.map +1 -1
- package/dist/commands/project/validate-plan/index.js +10 -0
- package/dist/commands/project/validate-plan/profiles.d.ts +19 -4
- package/dist/commands/project/validate-plan/profiles.d.ts.map +1 -1
- package/dist/commands/project/validate-plan/profiles.js +153 -2
- 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 +35 -4
- package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -1
- package/dist/commands/tools/shared/pack-manifest.js +1 -0
- package/package.json +2 -2
|
@@ -6,7 +6,7 @@ disable-model-invocation: true
|
|
|
6
6
|
user-invocable: true
|
|
7
7
|
allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion
|
|
8
8
|
metadata:
|
|
9
|
-
version: 1.4.
|
|
9
|
+
version: 1.4.5
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# New OAT Project
|
|
@@ -73,9 +73,9 @@ Use the CLI scaffolder:
|
|
|
73
73
|
oat project new "{project-name}" --mode spec-driven [--scope shared|local|synced]
|
|
74
74
|
```
|
|
75
75
|
|
|
76
|
-
This skill scaffolds spec-driven projects only. Quick, lite, and
|
|
76
|
+
This skill scaffolds spec-driven projects only. Quick, lite, brief, and goal projects
|
|
77
77
|
start from their entry skills (`oat-project-quick-start`, `oat-project-lite`,
|
|
78
|
-
`oat-project-brief`), which run `oat project new --mode <mode>` themselves.
|
|
78
|
+
`oat-project-brief`, `oat-project-goal`), which run `oat project new --mode <mode>` themselves.
|
|
79
79
|
|
|
80
80
|
Optional flags:
|
|
81
81
|
|
|
@@ -5,7 +5,7 @@ disable-model-invocation: true
|
|
|
5
5
|
user-invocable: true
|
|
6
6
|
allowed-tools: Read, Glob, Grep, Bash(git:*), Bash(oat:*), Skill
|
|
7
7
|
metadata:
|
|
8
|
-
version: 1.1.
|
|
8
|
+
version: 1.1.7
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# Project Next
|
|
@@ -109,6 +109,7 @@ projects, and synced records whose detached checkout is absent.
|
|
|
109
109
|
- `oat-project-quick-start` — Start a quick workflow project
|
|
110
110
|
- `oat-project-lite` — Start a lite workflow project
|
|
111
111
|
- `oat-project-brief` — Start a brief workflow project
|
|
112
|
+
- `oat-project-goal` — Start a goal workflow project
|
|
112
113
|
- `oat-project-import-plan` — Import an external plan
|
|
113
114
|
- **STOP.** Do not attempt routing.
|
|
114
115
|
|
|
@@ -127,17 +128,17 @@ projects, and synced records whose detached checkout is absent.
|
|
|
127
128
|
|
|
128
129
|
Read `"$PROJECT_PATH/state.md"` frontmatter and extract:
|
|
129
130
|
|
|
130
|
-
| Field | Used For
|
|
131
|
-
| ------------------------- |
|
|
132
|
-
| `oat_phase` | Current lifecycle position (discovery, spec, design, plan, implement)
|
|
133
|
-
| `oat_phase_status` | Phase completion state (in_progress, complete, pr_open)
|
|
134
|
-
| `oat_workflow_mode` | Routing table selection (spec-driven, quick, import, lite, brief). Default: `spec-driven`
|
|
135
|
-
| `oat_hill_checkpoints` | Which phases require HiLL approval
|
|
136
|
-
| `oat_hill_completed` | Which HiLL gates have been passed
|
|
137
|
-
| `oat_blockers` | Informational warnings (not routing gates)
|
|
138
|
-
| `oat_implement_exit_gate` | Whether the implementation exit gate is allowed and fresh
|
|
139
|
-
| `oat_quick_start_gate` | Reported only in the Step 6 announcement; never a routing input
|
|
140
|
-
| `oat_lifecycle` | Terminal status (active, paused, complete). `complete` is the terminal signal Step 5.2 reads
|
|
131
|
+
| Field | Used For |
|
|
132
|
+
| ------------------------- | ----------------------------------------------------------------------------------------------- |
|
|
133
|
+
| `oat_phase` | Current lifecycle position (discovery, spec, design, plan, implement) |
|
|
134
|
+
| `oat_phase_status` | Phase completion state (in_progress, complete, pr_open) |
|
|
135
|
+
| `oat_workflow_mode` | Routing table selection (spec-driven, quick, import, lite, brief, goal). Default: `spec-driven` |
|
|
136
|
+
| `oat_hill_checkpoints` | Which phases require HiLL approval |
|
|
137
|
+
| `oat_hill_completed` | Which HiLL gates have been passed |
|
|
138
|
+
| `oat_blockers` | Informational warnings (not routing gates) |
|
|
139
|
+
| `oat_implement_exit_gate` | Whether the implementation exit gate is allowed and fresh |
|
|
140
|
+
| `oat_quick_start_gate` | Reported only in the Step 6 announcement; never a routing input |
|
|
141
|
+
| `oat_lifecycle` | Terminal status (active, paused, complete). `complete` is the terminal signal Step 5.2 reads |
|
|
141
142
|
|
|
142
143
|
**If state.md is missing or unreadable:** Report error and suggest running the relevant phase skill directly. STOP.
|
|
143
144
|
|
|
@@ -223,6 +224,7 @@ Phase-to-skill mapping for HiLL override:
|
|
|
223
224
|
|
|
224
225
|
In brief mode the `plan` row maps to `oat-project-brief`, which owns brief
|
|
225
226
|
planning; spec-driven planning is never a brief project's current-phase skill.
|
|
227
|
+
In goal mode it maps to `oat-project-goal` the same way.
|
|
226
228
|
|
|
227
229
|
Note: a `spec` HiLL phase only appears in legacy projects scaffolded before requirements confirmation was folded into `oat-project-design`. New projects scaffold with `['discovery', 'design']` HiLL checkpoints, so `spec` falls through to `oat-project-design` here as a graceful migration. The standalone `oat-project-spec` skill remains available as an opt-in for users who want to formalize requirements separately.
|
|
228
230
|
|
|
@@ -317,6 +319,32 @@ Unlike lite, tier 2 stays with `oat-project-brief`: a brief becomes
|
|
|
317
319
|
implementation-ready only through its recorded review disposition and single
|
|
318
320
|
approval, which that skill owns. Brief progress counts phase-units, not tasks.
|
|
319
321
|
|
|
322
|
+
**Goal Mode:** the control plane owns goal routing (`oat project status --json`,
|
|
323
|
+
`recommendation.skill` and `recommendation.context`); dispatch that skill with
|
|
324
|
+
that context. Before any milestone state exists, the planning rows match brief
|
|
325
|
+
mode with `oat-project-goal` in place of `oat-project-brief`. After it exists,
|
|
326
|
+
routing follows this priority, the first match winning:
|
|
327
|
+
|
|
328
|
+
| Priority | Condition | Target Skill | Context |
|
|
329
|
+
| -------- | ----------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | ------------------------------------------ |
|
|
330
|
+
| 1 | `oat_goal_status: declared_met` with an invalid outcome audit | `oat-project-goal` | `audit` |
|
|
331
|
+
| 1 | `declared_met`: received feedback, then pending recovery, then incomplete terminal scope, then the post-implementation router | review-receive / stage owner / `oat-project-implement` / Step 5 | `scope terminal: …` |
|
|
332
|
+
| 2 | Actionable review artifacts | `oat-project-review-receive` | — |
|
|
333
|
+
| 2 | Pending `oat_goal_recovery` at `implementing` / `exit_gate` | `oat-project-implement` | `scope mNN/dNN: …` / `closeout mNN/dNN: …` |
|
|
334
|
+
| 2 | Pending `oat_goal_recovery` at `reviewing` / `receiving` / `delivering` | by missing evidence (rows 4c–4d below) | the recovery's explicit scope |
|
|
335
|
+
| 3 | Active milestone membership invalid | `oat-project-goal` | — |
|
|
336
|
+
| 4a | `aligning` | `oat-project-goal` | `align mNN` |
|
|
337
|
+
| 4b | `implementing`: incomplete unit in scope / every unit accepted | `oat-project-implement` | `scope mNN: …` / `closeout mNN: …` |
|
|
338
|
+
| 4c | `reviewing`: queued fixes or a missing, blocked or stale exit carrier | `oat-project-implement` | `scope mNN: …` / `closeout mNN: …` |
|
|
339
|
+
| 4c | `reviewing`: carrier fresh, integrated review missing or stale / produced and unreceived / passed | review-provide / review-receive / review-receive | `code mNN: …` / `receive <artifact>` |
|
|
340
|
+
| 4d | `delivering`: passed review and allowed, fresh carrier; otherwise rows 4c by missing evidence | `oat-project-pr-progress` | `deliver mNN` |
|
|
341
|
+
| 4e | `delivered` | `oat-project-goal` | `realign mNN` |
|
|
342
|
+
|
|
343
|
+
Goal progress counts phase-units per active milestone. `delivered` is not the
|
|
344
|
+
endpoint: activation of the next milestone waits for the delivery's agreed
|
|
345
|
+
endpoint, which `oat-project-goal` observes. The Step 5 brief phase-unit guard
|
|
346
|
+
applies to goal only within the active milestone's scope at `implementing`.
|
|
347
|
+
|
|
320
348
|
\* `oat-project-implement` handles both sequential and parallel execution.
|
|
321
349
|
|
|
322
350
|
### Step 4: Check for Unprocessed Reviews (Review Safety Check)
|
|
@@ -504,8 +532,8 @@ and fall through to 5.3, and do not route to `oat-project-implement` even when
|
|
|
504
532
|
signal here — neither a null current task nor a `complete` or `pr_open`
|
|
505
533
|
`oat_phase_status` is terminal, because an active project reaches both while it
|
|
506
534
|
still owns pending revision work. The guard is workflow-mode independent: it
|
|
507
|
-
applies identically to `spec-driven`, `quick`, `import`, `lite`,
|
|
508
|
-
projects.
|
|
535
|
+
applies identically to `spec-driven`, `quick`, `import`, `lite`, `brief`, and
|
|
536
|
+
`goal` projects.
|
|
509
537
|
|
|
510
538
|
For every other `oat_lifecycle` value the check below is unchanged.
|
|
511
539
|
|
|
@@ -556,7 +584,9 @@ routes directly to `oat-project-pr-final` before the summary check below.
|
|
|
556
584
|
Announce: "Final review passed — creating final PR". Optional lite summary or
|
|
557
585
|
documentation work is owned by the immutable implementation closeout snapshot,
|
|
558
586
|
not this fallback router. The lite shortcut does not apply to brief projects:
|
|
559
|
-
brief closeout takes 5.5 through 5.7 and never skips the summary.
|
|
587
|
+
brief closeout takes 5.5 through 5.7 and never skips the summary. Goal
|
|
588
|
+
terminal closeout follows brief closeout after a valid declaration; its `pr`
|
|
589
|
+
step is satisfied by delivery coverage.
|
|
560
590
|
|
|
561
591
|
**5.5: Summary not done**
|
|
562
592
|
|
|
@@ -62,6 +62,15 @@ replaces the record.
|
|
|
62
62
|
core, written and read under the same rules as `oat_quick_start_gate`. It is
|
|
63
63
|
absent when no gate is configured, and nothing routes on it: it is provenance
|
|
64
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.
|
|
65
74
|
|
|
66
75
|
## Reading a quick-start record
|
|
67
76
|
|
|
@@ -6,7 +6,7 @@ disable-model-invocation: true
|
|
|
6
6
|
user-invocable: true
|
|
7
7
|
allowed-tools: Read, Write, Bash(git:*), Bash(oat template:*), Glob, Grep, AskUserQuestion
|
|
8
8
|
metadata:
|
|
9
|
-
version: 1.4.
|
|
9
|
+
version: 1.4.19
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Planning Phase
|
|
@@ -20,8 +20,8 @@ Before a parent-branch commit, verify `oat internal commit-paths --help` succeed
|
|
|
20
20
|
## Prerequisites
|
|
21
21
|
|
|
22
22
|
This skill is the plan authoring path for **spec-driven** projects only. Quick,
|
|
23
|
-
import, lite, and
|
|
24
|
-
directly.
|
|
23
|
+
import, lite, brief, and goal modes have dedicated entry skills that produce
|
|
24
|
+
`plan.md` directly.
|
|
25
25
|
|
|
26
26
|
Read `oat_workflow_mode` from `{PROJECT_PATH}/state.md` (default: `spec-driven`):
|
|
27
27
|
|
|
@@ -30,6 +30,7 @@ Read `oat_workflow_mode` from `{PROJECT_PATH}/state.md` (default: `spec-driven`)
|
|
|
30
30
|
- **`import`**: **Stop.** If a normalized `plan.md` exists, tell the user: "Imported plan is ready. Run `oat-project-implement` to begin execution." If no `plan.md` exists, tell the user: "Run `oat-project-import-plan` to import and normalize the external plan first."
|
|
31
31
|
- **`lite`**: **Stop.** Tell the user: "Lite planning is owned by `oat-project-lite`; run it to author or resume the combined plan contract."
|
|
32
32
|
- **`brief`**: **Stop.** Tell the user: "Brief planning is owned by `oat-project-brief`; run it to author or resume the Project Brief."
|
|
33
|
+
- **`goal`**: **Stop.** Tell the user: "Goal planning is owned by `oat-project-goal`; run it to author, amend, or re-align the Project Brief and its milestones."
|
|
33
34
|
|
|
34
35
|
## Plan Format Contract
|
|
35
36
|
|
|
@@ -172,6 +173,16 @@ Exit skill.
|
|
|
172
173
|
|
|
173
174
|
Exit skill.
|
|
174
175
|
|
|
176
|
+
**Mode: `goal`** — **STOP.** Print:
|
|
177
|
+
|
|
178
|
+
```
|
|
179
|
+
⚠️ This project uses goal mode. Run `oat-project-goal` to author, amend, or
|
|
180
|
+
re-align its Project Brief and milestones; goal phases carry intent and
|
|
181
|
+
exit evidence, not tasks.
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Exit skill.
|
|
185
|
+
|
|
175
186
|
**Mode: `import`** — **STOP.** Check if `"$PROJECT_PATH/plan.md"` exists:
|
|
176
187
|
|
|
177
188
|
- If yes: Print: "Imported plan is ready. Run `oat-project-implement` to begin execution."
|
|
@@ -5,7 +5,7 @@ disable-model-invocation: true
|
|
|
5
5
|
user-invocable: false
|
|
6
6
|
allowed-tools: Read, Write, Glob, Grep
|
|
7
7
|
metadata:
|
|
8
|
-
version: 1.2.
|
|
8
|
+
version: 1.2.37
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# Plan Writing Contract
|
|
@@ -87,8 +87,8 @@ then continue without formatting.
|
|
|
87
87
|
## Managed Dispatch Readiness and Review Contract
|
|
88
88
|
|
|
89
89
|
All plan-producing workflows and their artifact reviews use this contract:
|
|
90
|
-
spec-driven planning, quick-start, lite planning, brief authoring,
|
|
91
|
-
plans, and provider-plan-via-import.
|
|
90
|
+
spec-driven planning, quick-start, lite planning, brief and goal authoring,
|
|
91
|
+
imported plans, and provider-plan-via-import.
|
|
92
92
|
The contract runs before a plan becomes implementation-ready and immediately
|
|
93
93
|
before each artifact review dispatch.
|
|
94
94
|
|
|
@@ -564,7 +564,7 @@ Every `plan.md` produced or edited by any OAT skill **must** satisfy these invar
|
|
|
564
564
|
|
|
565
565
|
```yaml
|
|
566
566
|
---
|
|
567
|
-
oat_plan_source: spec-driven | quick | imported | lite | brief # origin workflow mode
|
|
567
|
+
oat_plan_source: spec-driven | quick | imported | lite | brief | goal # origin workflow mode
|
|
568
568
|
oat_status: in_progress | complete # plan lifecycle status
|
|
569
569
|
oat_ready_for: null | oat-project-implement # downstream consumer
|
|
570
570
|
# Optional after implementation confirmation:
|
|
@@ -670,12 +670,14 @@ Required inputs vary by workflow mode. The calling skill reads `oat_workflow_mod
|
|
|
670
670
|
| `import` | Preserved external source + normalized `plan.md` | No |
|
|
671
671
|
| `lite` | `plan.md` only | No |
|
|
672
672
|
| `brief` | `plan.md` (Project Brief) from the interview | No |
|
|
673
|
+
| `goal` | `plan.md` (Project Brief with Milestones) | No |
|
|
673
674
|
|
|
674
675
|
- **`spec-driven`**: Plan is derived from a complete design document. All design components must be covered by tasks.
|
|
675
676
|
- **`quick`**: Plan is generated directly from discovery decisions and repo knowledge. No design artifact is required.
|
|
676
677
|
- **`import`**: External plan is preserved in `references/imported-plan.md` and normalized into canonical format. Subsequent edits follow this contract.
|
|
677
678
|
- **`lite`**: `plan.md` is the sole requirements and implementation contract. It carries Summary, Decisions, Assumptions, Out of Scope, and Validation Criteria before one sequential phase; no discovery, spec, or design artifact is required.
|
|
678
679
|
- **`brief`**: `plan.md` is the Project Brief authored by `oat-project-brief`: Goal, Outcomes with intended evidence, Approach, Decisions, Known Unknowns, and `## Phase pNN:` blocks with Intent and Exit evidence instead of tasks. `oat project validate-plan` applies the brief profile. Stable Task IDs, task totals, and the task grammar in this contract do not apply to the brief; execution records live in `implementation.md`, and the Reviews preservation rules apply unchanged.
|
|
680
|
+
- **`goal`**: `plan.md` is a Project Brief authored and amended by `oat-project-goal`, with the brief rules above plus a canonical `## Milestones` table (`oat-project-brief/references/brief-contract.md` section 12.1). `oat project validate-plan` applies the goal profile on top of the brief profile. Each milestone's approval is evidenced by its `oat_milestone_gates[mNN].plan` carrier after the first approval (section 12.4).
|
|
679
681
|
|
|
680
682
|
## Resume and Edit Guardrails
|
|
681
683
|
|
|
@@ -5,7 +5,7 @@ disable-model-invocation: false
|
|
|
5
5
|
user-invocable: true
|
|
6
6
|
allowed-tools: Read, Write, Bash(awk:*), Bash(gh:*), Bash(git:*), Bash(mktemp:*), Bash(oat:*), Bash(rm:*), Glob, Grep, AskUserQuestion
|
|
7
7
|
metadata:
|
|
8
|
-
version: 1.6.
|
|
8
|
+
version: 1.6.11
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# Project PR (Final)
|
|
@@ -182,6 +182,55 @@ ls "$PROJECT_PATH/spec.md" "$PROJECT_PATH/design.md" 2>/dev/null
|
|
|
182
182
|
|
|
183
183
|
If `WORKFLOW_MODE` is `quick`, `import`, `lite`, or `brief`, proceed without spec/design and include a reduced assurance note in the PR body. For lite, explicitly note that plan.md is the reduced artifact contract and the absence of discovery/spec/design is intentional. For brief, the note names the Project Brief (`plan.md`) as the requirements contract, audited against its numbered Outcomes, with the phase journal as the evidence record; the absence of discovery/spec/design is intentional.
|
|
184
184
|
|
|
185
|
+
**Goal mode (`oat_workflow_mode: goal`).** pr-final is the terminal delivery
|
|
186
|
+
registration owner, not a second project PR (brief contract sections 12.7 and
|
|
187
|
+
12.9). Run Step 1.5 instead of Steps 2–6.
|
|
188
|
+
|
|
189
|
+
### Step 1.5: Goal Terminal Delivery Registration (`goal` only)
|
|
190
|
+
|
|
191
|
+
1. **Declaration first.** Require `oat_goal_status: declared_met` and a valid
|
|
192
|
+
outcome audit: run `oat project closeout-check "$PROJECT_PATH" --json`
|
|
193
|
+
(read-only). A `not-declared` or `audit-invalid` refusal routes to
|
|
194
|
+
`oat-project-goal`; refusals naming the review owners, scoped implement, or
|
|
195
|
+
`oat-project-pr-progress` route there. Continue only when the remaining
|
|
196
|
+
refusal is `phase-uncovered` (`nextOwner.skill: oat-project-pr-final`).
|
|
197
|
+
2. **No redundant PR.** When the boundary reports no uncovered accepted phase,
|
|
198
|
+
delivery coverage already holds: create no pull request, write no state, and
|
|
199
|
+
report that the configured `pr` step is satisfied by delivery coverage at its
|
|
200
|
+
position (implement records `satisfied_by: { pr: delivery-coverage }`).
|
|
201
|
+
3. **Terminal scope.** The terminal delivery's frozen `scope` is the uncovered
|
|
202
|
+
accepted phases named by the refusal, ordered by the brief, never audited
|
|
203
|
+
`deferred`, `retired`, or `extracted` phases. A delivery never spans
|
|
204
|
+
milestones (`goal-delivered-scope-changed`), so uncovered phases in several
|
|
205
|
+
milestones register one terminal delivery per milestone, in milestone order.
|
|
206
|
+
Registered from one head branch, they share the same member pull request:
|
|
207
|
+
the second delivery's `gh pr list` attach finds the PR the first one
|
|
208
|
+
created, and that shared member is expected, not a duplicate
|
|
209
|
+
(`oat-project-brief/references/brief-contract.md` section 12.7, Shared
|
|
210
|
+
members). Coverage judges each delivery's own scope and bound evidence.
|
|
211
|
+
4. **Same registration contract.** Load the current
|
|
212
|
+
`oat-project-pr-progress/SKILL.md` and, for each terminal delivery, run its
|
|
213
|
+
Step 5.5 steps 1–3 and 4–7 as written (never step 3a, which
|
|
214
|
+
re-checks the active milestone's own registered delivery) with `kind: pr`: refresh, a
|
|
215
|
+
deliverable `oat project delivery check` (`status: ok`) for the subject,
|
|
216
|
+
stale evidence stopping before registration, the `registering` entry with
|
|
217
|
+
its lookup keys, reciprocal links, the integrated review and the captured
|
|
218
|
+
`exit_gate`, idempotent create-or-attach through `gh pr list`, and the
|
|
219
|
+
member and `status: open` record. The Step 5 ledger-path guard runs before
|
|
220
|
+
`gh pr create`. While the boundary still reports `phase-uncovered`, a
|
|
221
|
+
`summary` step configured before `pr` writes only project-directory files
|
|
222
|
+
and defers its repo-level ledger and decision-record
|
|
223
|
+
writes until this registration is done (`oat-project-summary` Step 6, Goal
|
|
224
|
+
terminal deferral), so the terminal subject stays deliverable.
|
|
225
|
+
5. **Log.** After the registration commit, append exactly one structural entry
|
|
226
|
+
and commit it in this step:
|
|
227
|
+
`oat project log append --project "$PROJECT_PATH" --structural --producer oat-project-pr-final --ref <dNN> --idempotency-key "<goal-slug>-register-<dNN>" --body "Registered terminal delivery <dNN> (<ordered phase ids>) at <url>; <goal-slug>-register-<dNN>"`.
|
|
228
|
+
Never pre-check log configuration: the helper no-ops when logging is
|
|
229
|
+
disabled.
|
|
230
|
+
6. Re-run `oat project closeout-check "$PROJECT_PATH" --json` and report the
|
|
231
|
+
next owner. Coverage completes only when every terminal delivery reaches its
|
|
232
|
+
agreed endpoint (`oat project delivery refresh` observes it).
|
|
233
|
+
|
|
185
234
|
### Step 2: Check Final Review Status
|
|
186
235
|
|
|
187
236
|
Preferred source of truth (v1): `plan.md` `## Reviews` table.
|
|
@@ -787,3 +836,4 @@ If `state.md` is missing, skip with a warning.
|
|
|
787
836
|
- User has clear next step to open PR (manual or gh)
|
|
788
837
|
- Project `state.md` shows `oat_phase_status: pr_open`
|
|
789
838
|
- Next milestone references both `oat-project-revise` (for feedback) and both supported `oat-project-complete` orderings
|
|
839
|
+
- Goal mode: a terminal delivery was registered only after a valid declaration and audit, only for uncovered accepted phases, through the pr-progress registration contract, with one structural log entry per registration; no PR was created when coverage already held
|