@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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-phase-implementer
|
|
3
|
-
version: 1.1.
|
|
3
|
+
version: 1.1.8
|
|
4
4
|
description: Implements one plan phase end-to-end, commits each task separately, self-checks between tasks, and handles bounded review fixes when resumed by oat-project-implement.
|
|
5
5
|
tools: Read, Write, Edit, Bash, Grep, Glob, Task
|
|
6
6
|
color: cyan
|
|
@@ -29,7 +29,7 @@ The root supplies:
|
|
|
29
29
|
- `mode`: `implement`, `fix`, or `recover`;
|
|
30
30
|
- `artifact_paths`: available plan, design, spec, discovery, implementation,
|
|
31
31
|
and imported-plan paths;
|
|
32
|
-
- `workflow_mode`: `spec-driven`, `quick`, `import`, or `
|
|
32
|
+
- `workflow_mode`: `spec-driven`, `quick`, `import`, `lite`, or `brief`;
|
|
33
33
|
- `commit_convention`: exact task/fix commit convention;
|
|
34
34
|
- `phase_base_head`: root-recorded HEAD before phase dispatch;
|
|
35
35
|
- `worktree`: assigned phase worktree or orchestration checkout;
|
|
@@ -125,9 +125,19 @@ Read each required artifact once at phase start:
|
|
|
125
125
|
Criteria, and the Product Behavior and/or Technical Design selected by its
|
|
126
126
|
recorded `minimal`, `product`, `technical`, or `both` content shape.
|
|
127
127
|
Discovery, spec, and design are absent by design.
|
|
128
|
+
- `brief`: read the assigned `## Phase pNN:` block (`**Intent:**`,
|
|
129
|
+
`**Exit evidence:**`, `**Provisional:**`) and the brief's Goal, Outcomes,
|
|
130
|
+
Approach, Constraints and Out of Scope, Decisions, Known Unknowns, and
|
|
131
|
+
Delivery endpoint and authority sections in `plan.md`; the phase's section of
|
|
132
|
+
`implementation.md`; and sections 3, 6, 7, and 10 of
|
|
133
|
+
`oat-project-brief/references/brief-contract.md`. Discovery, spec, and design
|
|
134
|
+
are absent by design.
|
|
128
135
|
|
|
129
136
|
Extract all phase tasks, dependency order, file boundaries, verification
|
|
130
|
-
commands, commit messages, and phase-wide verification before editing.
|
|
137
|
+
commands, commit messages, and phase-wide verification before editing. In
|
|
138
|
+
`brief` mode there are no planned tasks to extract: extract the phase's Intent,
|
|
139
|
+
its Exit evidence as the phase-wide verification, and the Phase Scope's commit
|
|
140
|
+
convention, and follow `## Brief Mode` below.
|
|
131
141
|
|
|
132
142
|
## Artifact Hygiene
|
|
133
143
|
|
|
@@ -348,6 +358,72 @@ disposition:
|
|
|
348
358
|
- Reason: {eligibility or stop-boundary evidence}
|
|
349
359
|
```
|
|
350
360
|
|
|
361
|
+
## Brief Mode
|
|
362
|
+
|
|
363
|
+
This section applies only when `workflow_mode` is `brief`. It replaces task
|
|
364
|
+
extraction and adapts the task loop; every other rule in this contract,
|
|
365
|
+
including recovery, still applies. The brief contract wins where this section
|
|
366
|
+
restates it.
|
|
367
|
+
|
|
368
|
+
**Requirement source.** The phase's Intent and Exit evidence plus the brief's
|
|
369
|
+
Outcomes, Constraints and Out of Scope, and Decisions. A provisional phase is
|
|
370
|
+
never executed: return `NEEDS_CONTEXT` naming it, because the root makes
|
|
371
|
+
phases concrete before dispatch.
|
|
372
|
+
|
|
373
|
+
**Execution records replace planned tasks.** Work in coherent units, each tied
|
|
374
|
+
to one implementation commit. For each unit:
|
|
375
|
+
|
|
376
|
+
1. Open `### Task pNN-tNN: <name>` under the phase's section of
|
|
377
|
+
`implementation.md` with `**Status:** in_progress`,
|
|
378
|
+
`**Executor:** phase-implementer:<original_request_id>`, intent, files,
|
|
379
|
+
proof command, and your handle. Use the next free ordinal in the phase
|
|
380
|
+
(`prevN-tNN` in a revision phase); never reuse an ID. Lookahead is allowed:
|
|
381
|
+
you may open several independent records before working them.
|
|
382
|
+
2. Implement the unit and run its proof command plus the Prevention checks.
|
|
383
|
+
3. Create its one implementation commit through `oat internal commit-paths`
|
|
384
|
+
with identity `${ORIGINAL_REQUEST_ID}:${RECORD_ID}`, a message carrying
|
|
385
|
+
`(pNN-tNN)`, and an owned-file list that excludes the journal.
|
|
386
|
+
4. Close the record with `**Status:** completed` and `**Commit:** <full SHA>`,
|
|
387
|
+
or with `failed`, `cancelled`, or `no-change` and no fabricated commit, and
|
|
388
|
+
commit only `implementation.md` as `chore(oat): record {pNN-tNN}` with
|
|
389
|
+
identity `${ORIGINAL_REQUEST_ID}:${RECORD_ID}:record`.
|
|
390
|
+
|
|
391
|
+
Step 2's per-task verification then expects exactly one implementation commit
|
|
392
|
+
inside the record's effective boundary followed by one journal-only record
|
|
393
|
+
commit; a record closed with a terminal status and no implementation commit
|
|
394
|
+
produces only the journal-only commit. A request for a maintained up-front task
|
|
395
|
+
plan is a promotion question for the root, never lookahead.
|
|
396
|
+
|
|
397
|
+
**Journal ownership.** You write only your phase's section of
|
|
398
|
+
`implementation.md`: its execution records and, in a sequential phase, its
|
|
399
|
+
`**Head:**` line and verification summary. Never write `**Base:**` (the root
|
|
400
|
+
records it before dispatch and passes it as `anchor_base`), never write the
|
|
401
|
+
phase's `**Status:** completed` (acceptance is root-owned), and never edit
|
|
402
|
+
`state.md`, `plan.md`, the `## Reviews` table, or another phase's section. In a
|
|
403
|
+
parallel-group worktree, write the records but no anchors; the root writes the
|
|
404
|
+
group's fork base and integration-merge heads at fan-in. Report your worktree
|
|
405
|
+
head: it is the review head of your phase's per-phase review, which runs on
|
|
406
|
+
`EXPECTED_HEAD..<that head>` before the merge.
|
|
407
|
+
|
|
408
|
+
**Phase head.** After the last record closes and phase-wide verification
|
|
409
|
+
passes, in a sequential phase write `**Head:** <full SHA of the last commit of
|
|
410
|
+
the phase>` plus a short verification summary under the phase heading and
|
|
411
|
+
commit only the journal as `chore(oat): record {pNN} head`. Report the head.
|
|
412
|
+
|
|
413
|
+
**Nested workers never commit.** An optional nested worker returns edits on
|
|
414
|
+
owned paths; you, the committing owner, create every commit.
|
|
415
|
+
|
|
416
|
+
**Fix mode.** Record each review fix as a record whose name starts with
|
|
417
|
+
`(review)` and that carries `**Source review:**` with the review filename and
|
|
418
|
+
finding IDs, through the same open, commit, close sequence. While no later
|
|
419
|
+
phase has a `**Base:**`, also advance `**Head:**` to the new last commit in the
|
|
420
|
+
closing journal commit; otherwise stop and report, because the correction
|
|
421
|
+
belongs to a revision phase the root appends.
|
|
422
|
+
|
|
423
|
+
**Report.** In the Task Outcomes table, list one row per execution record in
|
|
424
|
+
the Task column with its terminal status and commit, and add
|
|
425
|
+
`**Phase anchors:** {anchor_base}..{head}` below the header fields.
|
|
426
|
+
|
|
351
427
|
## Mode: Implement
|
|
352
428
|
|
|
353
429
|
### 1. Verify Phase Base
|
|
@@ -484,6 +560,8 @@ After all task commits:
|
|
|
484
560
|
- `spec-driven`: `plan.md`, `design.md`, and `spec.md`;
|
|
485
561
|
- `quick`: `plan.md` and `discovery.md`, plus design/spec when present; and
|
|
486
562
|
- `import`: `plan.md` and the imported plan, plus design/spec when present;
|
|
563
|
+
- `brief`: the phase's Intent and Exit evidence plus the brief's Outcomes,
|
|
564
|
+
Constraints and Out of Scope, and Decisions;
|
|
487
565
|
- confirm no task boundary or dependency was missed; and
|
|
488
566
|
- report Medium/Low concerns without launching a reviewer.
|
|
489
567
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-reviewer
|
|
3
|
-
version: 1.2.
|
|
3
|
+
version: 1.2.12
|
|
4
4
|
description: Unified reviewer for OAT projects - mode-aware verification of requirements/design alignment and code quality. Writes a review artifact to disk by default, or returns structured findings in-memory when dispatched in structured-output mode.
|
|
5
5
|
tools: Read, Bash, Grep, Glob, Write, Task
|
|
6
6
|
color: yellow
|
|
@@ -50,9 +50,10 @@ You will be given a "Review Scope" block including:
|
|
|
50
50
|
- **commits/range**: Git commits or SHA range for changed files. For code review, this is the authoritative review surface.
|
|
51
51
|
- **files_changed**: Optional orientation hint listing files believed to be modified in scope. If this disagrees with the commit range, trust the commit range.
|
|
52
52
|
- **analysis_artifact**: For `type: analysis`, path to the severity-rated analysis artifact to fact-check.
|
|
53
|
-
- **workflow_mode**: `spec-driven` | `quick` | `import` | `lite` (default to `spec-driven` if absent)
|
|
53
|
+
- **workflow_mode**: `spec-driven` | `quick` | `import` | `lite` | `brief` (default to `spec-driven` if absent)
|
|
54
54
|
- **artifact_paths**: Paths to available artifacts (spec/design/plan/implementation/discovery/import reference)
|
|
55
|
-
- **tasks_in_scope**: Task IDs being reviewed (if task/phase scope)
|
|
55
|
+
- **tasks_in_scope**: Task IDs being reviewed (if task/phase scope). In `brief` mode these are the execution-record IDs under the phases in scope; they label commits and never narrow the range.
|
|
56
|
+
- **Brief anchor record**: For `brief` code reviews, the caller supplies `oat_review_requested_scope`, `oat_review_phase_ids` (ordered), `oat_review_base_sha`, `oat_review_scope_source` (`anchors` | `merge-base-range` | `explicit` | `merge-base` | `narrowed`), and, when they apply, `oat_review_fallback_reason`, `oat_review_integration_commits`, and `oat_review_narrowed_from`. Copy them verbatim into artifact frontmatter (Step 8).
|
|
56
57
|
- **oat_output_mode**: Optional output-sink selector. Absent (or any value other than `structured`) means **artifact mode** — write the review artifact to disk per Step 8. `structured` means **structured-output mode** — return a `StructuredFindings` object in-memory and write NO artifact file (see **Structured-Output Mode**). This key parallels the existing `oat_review_invocation` dispatch-payload naming.
|
|
57
58
|
- **oat_review_invocation**: Optional provenance selector for artifact-mode reviews. Use `manual`, `auto`, or `gate`; default to `manual` when absent.
|
|
58
59
|
- **Code-review provenance**: For artifact-mode code reviews, resolve the authoritative range head with `git rev-parse <authoritative-range-head>^{commit}` and record the resulting full 40-character commit SHA as `oat_review_head_sha`. If the review is narrowed, also record the resolved range, prior artifact path, and prior reviewed head supplied by the caller.
|
|
@@ -129,6 +130,7 @@ Use workflow mode to determine required evidence:
|
|
|
129
130
|
- **quick**: `discovery.md` + `plan.md` are expected (`spec.md`/`design.md` optional if present).
|
|
130
131
|
- **import**: `plan.md` is expected (`references/imported-plan.md` preferred; `spec.md`/`design.md` optional).
|
|
131
132
|
- **lite**: `plan.md` and `implementation.md` are expected; discovery, spec, and design are absent by design.
|
|
133
|
+
- **brief**: `plan.md` (a Project Brief) and `implementation.md` (the per-phase journal) are expected; discovery, spec, and design are absent by design. `oat-project-brief/references/brief-contract.md` defines the brief sections, phase grammar, journal markers, and anchor rules, and the caller supplies it with the Review Scope.
|
|
132
134
|
|
|
133
135
|
Do not mark missing optional artifacts as findings.
|
|
134
136
|
If required artifacts for the mode are unexpectedly missing, record a workflow contract gap.
|
|
@@ -152,6 +154,7 @@ Read available artifacts to understand what SHOULD have been built:
|
|
|
152
154
|
- `quick`: read `discovery.md` and `plan.md`; read `spec.md`/`design.md` only if they exist.
|
|
153
155
|
- `import`: read `plan.md` and `references/imported-plan.md` (if present); read `spec.md`/`design.md` only if they exist.
|
|
154
156
|
- `lite`: read `plan.md` and `implementation.md`; do not require discovery, spec, design, or an import reference.
|
|
157
|
+
- `brief`: read the brief in `plan.md`, the journal in `implementation.md`, and the brief contract when supplied; do not require discovery, spec, design, or an import reference.
|
|
155
158
|
3. For `type: analysis`, read `analysis_artifact` and then inspect only the cited evidence sources needed to verify its findings:
|
|
156
159
|
- `scope: docs`: consult the docs contract, docs navigation/index files, and cited docs source files relevant to the analysis.
|
|
157
160
|
- `scope: agent-instructions`: consult the repo/root instruction files, provider instruction files, and cited skill/agent instruction files relevant to the analysis.
|
|
@@ -161,6 +164,8 @@ Read available artifacts to understand what SHOULD have been built:
|
|
|
161
164
|
|
|
162
165
|
Only review files/changes within the provided scope.
|
|
163
166
|
|
|
167
|
+
In `brief` mode the authoritative code-review range comes from the recorded phase anchors: `Base..Head` for one phase, or the first selected base through the last selected phase's head for a range or `final`. Commit-message `(pNN-` matches only label which commits belong to which phase and never narrow the range. When `oat_review_scope_source` is `merge-base-range`, review the entire supplied range. If an anchor is missing, does not exist, or contradicts the ordering rules in brief contract section 10, record a workflow contract gap rather than narrowing silently. Treat the listed integration commits as inside the range.
|
|
168
|
+
|
|
164
169
|
Do NOT:
|
|
165
170
|
|
|
166
171
|
- Review unrelated work outside the scope
|
|
@@ -177,6 +182,7 @@ For each requirement in scope, use the best available requirement source by mode
|
|
|
177
182
|
- `quick`: `discovery.md` + `plan.md`
|
|
178
183
|
- `import`: normalized `plan.md` + `references/imported-plan.md` (if present)
|
|
179
184
|
- `lite`: the requirements contract in `plan.md`: Summary, Decisions, Assumptions, Out of Scope, and Validation Criteria. Also use Product Behavior and/or Technical Design when selected by the recorded `minimal`, `product`, `technical`, or `both` content shape.
|
|
185
|
+
- `brief`: each phase in scope's `**Intent:**` and `**Exit evidence:**` lines plus the brief's Outcomes, Constraints and Out of Scope, and Decisions. A `final` review also audits every numbered Outcome against its observed evidence in the journal; an Outcome with neither evidence nor a recorded deferral is a finding. Execution records are evidence of committed work, not requirements.
|
|
180
186
|
|
|
181
187
|
Then verify:
|
|
182
188
|
|
|
@@ -267,13 +273,14 @@ Treat the artifact as a product deliverable. Verify it is:
|
|
|
267
273
|
- `quick`: discovery (+ spec/design if present)
|
|
268
274
|
- `import`: imported-plan reference (+ discovery/spec/design if present)
|
|
269
275
|
- `lite`: plan.md Summary, Decisions, Assumptions, Out of Scope, and Validation Criteria. Also review the Product Behavior and/or Technical Design required by its recorded content shape; challenge `minimal` when an observable shape trigger applies.
|
|
276
|
+
- `brief`: the brief is self-contained; review it against the brief contract and the user's request, with no upstream discovery, spec, or design.
|
|
270
277
|
- For import-mode `plan` reviews, bias findings toward canonical-format conformance and completeness. Do not rewrite the imported author's intent merely to match OAT house style.
|
|
271
278
|
|
|
272
279
|
4. **Actionable**
|
|
273
280
|
- Clear next steps and readiness signals
|
|
274
281
|
- For spec: Verification entries are meaningful (`method: pointer`)
|
|
275
282
|
- For design: requirement-to-test mapping exists and includes concrete scenarios
|
|
276
|
-
- For plan: tasks have clear verification commands and commit messages
|
|
283
|
+
- For plan: tasks have clear verification commands and commit messages (for a brief, each phase has concrete Intent and Exit evidence instead; tasks are not required)
|
|
277
284
|
|
|
278
285
|
5. **Plan-specific checklist**
|
|
279
286
|
- Canonical-format conformance: required frontmatter and sections are present, the Reviews table exists, and artifact/code rows are shaped consistently.
|
|
@@ -283,6 +290,7 @@ Treat the artifact as a product deliverable. Verify it is:
|
|
|
283
290
|
- Task atomicity and verifiability: each task is independently committable, has bounded file scope, and has executable verification intent. Require a proportionate implementation and proof strategy only when the applicable workflow plan contract declares it; otherwise review the task's existing verification commands and evidence.
|
|
284
291
|
- Coverage of design/discovery: every in-scope design component or discovery decision is mapped to at least one task or explicitly deferred/out of scope.
|
|
285
292
|
- Parallelism-claim sanity: any parallel phase group or parallelism statement is consistent with declared file boundaries and dependency order.
|
|
293
|
+
- **Brief plan review** replaces the task-oriented items above with the brief section list: Goal; numbered Outcomes, each naming its intended evidence; Approach (optional `### Design`); Constraints and Out of Scope; Decisions with rationale and rejected alternatives; Known Unknowns, each with the phase that settles it; Delivery endpoint and authority; an empty `## Milestones` section; `## Phase pNN:` blocks with non-empty Intent and Exit evidence, a `**Provisional:**` value of `yes` or `no`, and a concrete first phase; Parallelism; Reviews (preserved rows); Implementation Complete; References. Stable, never-reused phase IDs in document order replace stable task IDs. There is no task requirement; `### Task` headings in a brief are a finding, because execution records belong in the journal. Check that every Outcome is reachable through some phase's Exit evidence and that any declared parallel group passes the independence test in brief contract section 6.
|
|
286
294
|
|
|
287
295
|
6. **Necessary**
|
|
288
296
|
- Evaluate whether the proposed approach materially serves the requested
|
|
@@ -307,7 +315,7 @@ Treat the artifact as a product deliverable. Verify it is:
|
|
|
307
315
|
|
|
308
316
|
This step applies to **code reviews** only.
|
|
309
317
|
|
|
310
|
-
If `design.md` is absent in quick/import/lite mode, mark design alignment as "not applicable (design artifact not present for mode)" and continue.
|
|
318
|
+
If `design.md` is absent in quick/import/lite/brief mode, mark design alignment as "not applicable (design artifact not present for mode)" and continue. A brief's `### Design` subsection, when present, is the design source for this step.
|
|
311
319
|
|
|
312
320
|
For each design decision relevant to scope:
|
|
313
321
|
|
|
@@ -550,6 +558,8 @@ Gate parsing contract: artifact-mode reviews, including reviews spawned by `oat
|
|
|
550
558
|
|
|
551
559
|
For every artifact-mode code review, `oat_review_head_sha` is required and must be the full 40-character commit SHA at the head of the authoritative review range. Resolve it with `git rev-parse <authoritative-range-head>^{commit}`. An abbreviated SHA, symbolic ref, or range string is invalid. When the review narrowed, `oat_review_range`, `oat_prior_review_artifact`, and `oat_prior_review_head_sha` are also required; the prior head must likewise be a full 40-character SHA. These code-review fields are independent of the gate-only block and do not apply to artifact, analysis, or structured-output reviews.
|
|
552
560
|
|
|
561
|
+
For a `brief` code review, also copy the supplied anchor record fields (`oat_review_requested_scope`, `oat_review_phase_ids`, `oat_review_base_sha`, `oat_review_scope_source`, and any supplied `oat_review_fallback_reason`, `oat_review_integration_commits`, and `oat_review_narrowed_from`) verbatim into frontmatter beside `oat_review_head_sha`, which is the aggregate head of the anchored range. Never infer them from commit messages or the current HEAD.
|
|
562
|
+
|
|
553
563
|
For a narrowed review, do not restate requirements-coverage claims that this pass did not itself verify. Reference the prior artifact's coverage or mark inherited coverage rows as inherited so the union of passes remains auditable.
|
|
554
564
|
|
|
555
565
|
For gate-originated artifacts, all six gate-only fields are required when the prompt supplies gate context. Copy the values exactly. Do not parse the provider command, infer values from the target id, or replace configured values with observed/self-reported identity. Any optional self-report belongs in review prose and is non-authoritative; the gate validates the copied frontmatter against its immutable configured invocation record before applying severity thresholds.
|
|
@@ -100,12 +100,15 @@ Lifecycle](../workflows/backlog-and-planning/backlog-lifecycle.md).
|
|
|
100
100
|
|
|
101
101
|
Notable commands introduced in the current CLI surface:
|
|
102
102
|
|
|
103
|
-
- `oat project new <slug> [--mode spec-driven|quick|import|lite] --scope shared|local|synced [--force]` - create a
|
|
103
|
+
- `oat project new <slug> [--mode spec-driven|quick|import|lite|brief] --scope shared|local|synced [--force]` - create a
|
|
104
104
|
project in an explicit scope. `--mode` selects the workflow mode and therefore
|
|
105
105
|
which artifacts are scaffolded; it defaults to `spec-driven`. Use `quick` for a
|
|
106
106
|
bounded feature with clear requirements, `import` to normalize an externally
|
|
107
|
-
authored plan,
|
|
108
|
-
`plan.md`, `state.md`, and `implementation.md
|
|
107
|
+
authored plan, `lite` for a single-sitting change that scaffolds only
|
|
108
|
+
`plan.md`, `state.md`, and `implementation.md`, and `brief` for one delivery
|
|
109
|
+
planned as a Project Brief, which scaffolds the `plan-brief` and
|
|
110
|
+
`implementation-brief` templates plus `references/research/`. Start brief
|
|
111
|
+
projects with `oat-project-brief`, which runs this command itself. See
|
|
109
112
|
[Lifecycle](../workflows/projects/lifecycle.md) for the per-lane flow. Without
|
|
110
113
|
`--scope`, creation uses
|
|
111
114
|
`projects.defaultScope`, which defaults to `synced`. Project slugs are
|
|
@@ -190,7 +193,7 @@ Notable commands introduced in the current CLI surface:
|
|
|
190
193
|
- `oat project status --field <path>` - print one arbitrary dot-path field from the same status payload, e.g. `project.workflowMode` or `project.timestamps.stateUpdated`. Missing/null fields print `null`; object and array fields print compact JSON.
|
|
191
194
|
- `oat project status --project-path <path>` - read from a repo-relative or absolute project path instead of `.oat/config.local.json`'s active project pointer. Combine it with `--field` or `--shell` when a skill has already resolved the target project path.
|
|
192
195
|
- `oat project status --shell NAME=path ...` - print shell-safe assignments for one or more fields from one status read, e.g. `WORKFLOW_MODE='quick'`. This is the preferred multi-field read API for skills. See [Writing Skills → Reading project state](../contributing/skills.md#reading-project-state) for examples and the `npx`-backed `oat` shim contract.
|
|
193
|
-
- `oat project promote <project-path> --to quick [--json]` - promote an authored lite project to quick mode.
|
|
196
|
+
- `oat project promote <project-path> --to quick [--json]` - promote an authored lite or brief project to quick mode. For a lite project, the command derives `discovery.md` from the lite plan's Summary, Decisions, Assumptions, Out of Scope, and Validation Criteria; carries Product Behavior into Success Criteria and Technical Design into a carried-forward discovery section when those adaptive sections are present; preserves the original as `references/lite-plan.md`; and scaffolds a fresh quick `plan.md`. For a brief project, it migrates each phase by state: accepted phases keep their completed execution records as quick tasks or get one synthesized `Accepted via phase evidence` task against the phase's `**Head:**`, active phases keep their completed records, and pending or provisional phases stay taskless and are listed in `oat_promotion_pending_phases` (quick plan readiness stays false until that list is empty); it renders the brief's sections into `discovery.md`, archives the original as `references/brief-archive.md`, and sets `oat_promoted_from: brief`. There is no reverse direction. It refuses unsupported targets, projects that are neither lite nor brief, unreadable projects, an existing lite-plan reference, invalid authored sections, an existing brief archive (`brief-archive-exists`), an extracted journal phase (`extracted-phases`), a brief with no parseable phases (`invalid-brief-plan`), an accepted brief phase with no completed record and no `**Head:**` anchor (`missing-phase-head`), unresolved scope, unavailable templates, failed writes, or failed persistence. JSON output is `{ status: "promoted" | "refused", reason, files }`, plus an optional `phases` array naming the refused phases when `reason` is `missing-phase-head`; `reason` is the stable categorical contract and refused results exit non-zero.
|
|
194
197
|
- `oat template resolve <name> [--output <path>] [--json]` - resolve a template in repository (`<repo>/.oat/templates/`), user (`~/.oat/templates/`), then bundled order and report `name`, `found`, `tier` (`repository` | `user` | `bundle`), and `path`. `path` is set only for the repository and user tiers; it is `null` for the bundled tier, so callers never depend on a package-manager path. `<name>` accepts `plan` or `plan.md` and rejects path separators and `..`. `--output <path>` copies the resolved content to that file, replacing an existing file, and does not create missing parent directories; JSON output adds the absolute `output` path. A template missing from every tier exits 1 with `found: false`. Lifecycle skills use `--output` to copy their artifact templates, so a user-scope-only install works without a repository `.oat/templates/` directory.
|
|
195
198
|
- `oat review latest --json` - find the newest review artifact by `oat_generated_at`, scanning the active or specified project's `reviews/` and `reviews/archived/` directories plus ad-hoc review locations. Same-time candidates use target priority, then lifecycle recency (`final` > higher phase/task > lower phase/task). The JSON contract returns `path`, `scope`, `generatedAt`, `kind` (`project` or `adhoc`), `archived`, and `actionable`, with `null` values when no review exists. Archived project reviews remain discoverable as history but return `actionable: false`.
|
|
196
199
|
- `oat project list --json` - summary state for tracked projects under the configured projects root
|
|
@@ -200,7 +203,7 @@ Notable commands introduced in the current CLI surface:
|
|
|
200
203
|
- `oat repo archive sync [project-name]` - hydrate archived project snapshots from the configured repo-scoped S3 archive into `.oat/projects/archived/`. The old `oat project archive sync` path remains as a deprecated shim.
|
|
201
204
|
- `oat project dispatch record --event-file <json-file-or-dash>` - validate one generic dispatch record plus its namespaced OAT evidence event and print the result with `status: validated-only`. The command writes nothing; launches are recorded in the calling workflow's run record. Managed, effort-pinned Claude launches run it before launch: the input carries `claudeLaunch` with the real resolver result, generated definition, and proposed payload, plus `recordBase` and `event`. The command validates their agreement and derives the configured invocation fields; callers cannot copy those fields into `recordBase`. One validation run reports every violation across `claudeLaunch`, `recordBase`, and `event` in a single error message, one `stage path: message` line each; the `recordBase` cross-field rules run even when a required field is missing, checks that need a value that failed to parse are skipped and named on a final line, secret-shaped values and absolute paths are scrubbed from the message, and the exit code stays 1. A validated input per role is published at `.agents/skills/oat-dispatch-subagents/references/managed-claude-example.json`. The command validates evidence only — it never launches a provider. A `runtime-observation` event may carry either a finished `observation` or the provider `metadata` envelope (`provider`, `observedAt`, `entries`) to normalize, but not both. `entries` may be raw provider output: they are projected through the owning parser's allowlist, are never echoed in the output, and both forms have their `match` derived from the record's configured invocation rather than trusted from the caller, with the observation's `provider` bound to the record's. With `--json`, the result adds `runtimeIdentity` with separate `configured` and `observed` objects plus a `match` of `matching`, `mismatching`, `not-comparable`, or `null`; observation is corroboration only and never overrides configured invocation. Error output is redacted on a best-effort basis; absolute paths in identity fields are rejected outright, while some prose forms (colon-prefixed, URL routes) can survive. See [Evidence Layers](../workflows/advanced/evidence-layers.md).
|
|
202
205
|
- `oat project dispatch canonical-role --role <name> --request-id <id> --skill-dir <dir> [--json]` - resolve a canonical role through the loaded, user (`$HOME/.agents`), and project (`<repo>/.agents`) tiers and print the `canonical-role-resolution` event that `oat project dispatch record` accepts unchanged: redacted `canonicalPath` and `selectedPath` in the form `<loaded|user|project>/agents/<name>.md`, the role's `contentDigest`, and `candidateMisses`. `--skill-dir` is required because the loaded tier is derived from the loaded skill's directory; a missing or invalid directory exits 1 with a redacted error. An unknown role prints `missing` evidence with its recovery commands. Read-only; the dependency is the `workflows` pack.
|
|
203
|
-
- `oat project validate-plan --project-path <path>` - validates `oat_plan_parallel_groups` metadata in `plan.md`; exits non-zero on invalid. Lite plans must contain exactly one phase, declare no parallel groups, and give every Validation Criteria bullet either a backticked command or a `manual:` instruction. See [Implementation Execution](../workflows/projects/execution/implementation-execution.md#parallel-phase-groups).
|
|
206
|
+
- `oat project validate-plan --project-path <path>` - validates `oat_plan_parallel_groups` metadata in `plan.md`; exits non-zero on invalid. Lite plans must contain exactly one phase, declare no parallel groups, and give every Validation Criteria bullet either a backticked command or a `manual:` instruction. Brief plans (`oat_workflow_mode: brief`) are validated with the brief profile: phases need non-empty `**Intent:**` and `**Exit evidence:**`, a `**Provisional:**` value of `yes` or `no`, unique IDs, and a concrete first phase; `### Task` headings in a brief are reported as a warning, and taskless parallel groups are valid. See [Implementation Execution](../workflows/projects/execution/implementation-execution.md#parallel-phase-groups).
|
|
204
207
|
- `oat project log append|check|synthesize|rollup` - manage the optional append-only project observation log: append validated judgment or structural entries, inspect grammar and synthesis status, complete end-of-run synthesis, and roll observations into `summary.md` plus the configured repository ledger. See [Project Log](../workflows/projects/execution/project-log.md).
|
|
205
208
|
- `oat project set-mode` — deprecated no-op. Execution mode is no longer user-selectable; emits a deprecation warning and preserves the `--json` contract.
|
|
206
209
|
- `oat gate review <prompt...>` - run a stateful, headless OAT review through the target registry, parse the produced review artifact, and exit nonzero for configured blocking findings. `--timeout-ms <milliseconds>` overrides target, `workflow.gateTimeouts`, environment, and scope defaults; accepted values are 1,000–14,400,000. Final/phase/range code reviews and artifact reviews default to 30 minutes, while task code reviews default to 15 minutes. With `--json`, the result envelope on exit is the canonical completion signal: `status` is `ok` | `blocked` | `review_failed` | `artifact_missing` | `artifact_validation_failed` | `targeting_correlation_failed`, alongside `runId`, `generatedAt`, and `artifactPath` when available. `artifact_missing` means an accepted child exited cleanly without an artifact; fix synchronous review/artifact completion and start a new run, without review-receive or same-run remediation. For `targeting_correlation_failed`, correct the project declaration or artifact routing and start a new run; do not run review-receive even if an artifact path is present. For `artifact_validation_failed`, correct the artifact and rerun the gate until it revalidates as `ok` or `blocked`. Invoke `oat-project-review-receive` only when all three conditions hold: `status` is `ok` or `blocked`, `receiveEligible` is `true`, and `handoff` is non-null. `review_failed` may include structured `refusal`, `noOutputProduced`, and metadata-only `activityEvidence`; these diagnostic fields never make a run receive-eligible. After a timeout, a validated run-correlated artifact returns the ordinary `ok` or `blocked` envelope with additive `lateCompletion: true`. When post-selection work fails after the reviewer already committed a run-correlated artifact, the gate re-validates that selected snapshot through the same eligibility path rather than re-parsing whatever the path now holds, never re-dispatching, and returns the ordinary `ok` or `blocked` envelope with additive `postSelectionRecovery: true`; the artifact must still be present and unchanged for re-validation to succeed. When nothing recovers, `review_failed` names the failing sub-step in `postSelection.step` and its cause in `postSelection.code`. Duplicate run-ID matches or a changed artifact with a mismatched run ID retain `targeting_correlation_failed` and `receiveEligible: false`. Orchestrators should read the structured result rather than poll the filesystem. See [Workflow Gates](../workflows/advanced/workflow-gates.md).
|
|
@@ -322,6 +322,7 @@ Not all workflow modes require every artifact:
|
|
|
322
322
|
- `quick`: discovery + plan + implementation (spec/design optional)
|
|
323
323
|
- `import`: imported plan + implementation (spec/design optional)
|
|
324
324
|
- `lite`: single-phase plan + implementation (summary/documentation optional at closeout)
|
|
325
|
+
- `brief`: Project Brief in `plan.md` + per-phase journal in `implementation.md` (`references/research/` scaffolded; no discovery, spec, or design)
|
|
325
326
|
|
|
326
327
|
## `.oat/repo/` structure
|
|
327
328
|
|
|
@@ -50,7 +50,7 @@ archive metadata own terminal reachability and retry identity.
|
|
|
50
50
|
|
|
51
51
|
Mode-sensitive notes:
|
|
52
52
|
|
|
53
|
-
- `state.md` includes workflow mode metadata (`spec-driven`, `quick`, `import`, `lite`) for routing.
|
|
53
|
+
- `state.md` includes workflow mode metadata (`spec-driven`, `quick`, `import`, `lite`, `brief`) for routing.
|
|
54
54
|
- `plan.md` remains the canonical execution artifact across all modes.
|
|
55
55
|
|
|
56
56
|
| Mode | Core authored artifacts | Optional artifacts |
|
|
@@ -59,6 +59,7 @@ Mode-sensitive notes:
|
|
|
59
59
|
| `quick` | `discovery.md`, `plan.md` | Lightweight `design.md`, `spec.md` |
|
|
60
60
|
| `import` | `references/imported-plan.md`, `plan.md` | `spec.md`, `design.md` |
|
|
61
61
|
| `lite` | Single-phase `plan.md` with Summary, Decisions, Assumptions, Out of Scope, Validation Criteria, and an explicit adaptive content shape | `summary.md` and documentation at closeout |
|
|
62
|
+
| `brief` | `plan.md` as a Project Brief (phases with Intent and Exit evidence) and `implementation.md` as the per-phase journal | `references/research/`, `project-log.md` |
|
|
62
63
|
|
|
63
64
|
Every Lite plan keeps Summary, Decisions, Assumptions, Out of Scope, and
|
|
64
65
|
Validation Criteria. User-visible changes add numbered, testable Product
|
|
@@ -75,6 +76,21 @@ implementation-then-regression, static/build, or manual/visual. Static or build
|
|
|
75
76
|
checks alone fit only changes that cannot affect runtime behavior; every
|
|
76
77
|
behavioral change needs evidence that fails without the change.
|
|
77
78
|
|
|
79
|
+
In brief mode, `plan.md` is the Project Brief: Goal, numbered Outcomes (each
|
|
80
|
+
naming its intended evidence), Approach with an optional `### Design`,
|
|
81
|
+
Constraints and Out of Scope, Decisions, Known Unknowns, Delivery endpoint and
|
|
82
|
+
authority, an empty `## Milestones` section reserved for goal mode, and
|
|
83
|
+
`## Phase pNN:` blocks with `**Intent:**`, `**Exit evidence:**`, and
|
|
84
|
+
`**Provisional:**` lines instead of tasks. `implementation.md` is the
|
|
85
|
+
per-phase journal: each phase section carries exact `**Status:**`,
|
|
86
|
+
`**Base:**`, `**Head:**`, and `**Executor:**` marker lines, followed by
|
|
87
|
+
`### Task pNN-tNN` execution records opened as work happens. Progress counts
|
|
88
|
+
phase-units, and `**Status:** completed` under a phase heading is what accepts
|
|
89
|
+
it. The journal's Final Summary adds an `**Outcomes audit:**` block with one
|
|
90
|
+
line per numbered Outcome. When a brief artifact gate is configured,
|
|
91
|
+
`state.md` records its outcome as `oat_brief_gate`, with the same core fields
|
|
92
|
+
as `oat_quick_start_gate`.
|
|
93
|
+
|
|
78
94
|
## Blockers in state.md
|
|
79
95
|
|
|
80
96
|
`oat_blockers` accepts legacy reason strings and structured workflow records:
|
|
@@ -17,8 +17,8 @@ This page is the compact contract for how project lifecycle state and review sta
|
|
|
17
17
|
|
|
18
18
|
=== "Diagram"
|
|
19
19
|
|
|
20
|
-

|
|
21
|
+

|
|
22
22
|
|
|
23
23
|
=== "Mermaid source"
|
|
24
24
|
|
|
@@ -41,10 +41,11 @@ This page is the compact contract for how project lifecycle state and review sta
|
|
|
41
41
|
PASSED --> I
|
|
42
42
|
|
|
43
43
|
LITE["Lite: batched interview\n(no discovery/spec/design)"] -. entry point .-> P
|
|
44
|
+
BRIEF["Brief: alignment interview\n(one Project Brief)"] -. entry point .-> P
|
|
44
45
|
```
|
|
45
46
|
|
|
46
|
-
The solid chain is the spec-driven progression. Lite
|
|
47
|
-
progress** and never
|
|
47
|
+
The solid chain is the spec-driven progression. Lite and brief enter at **Plan
|
|
48
|
+
in progress** and never set `oat_phase` to `discovery`, `spec`, or `design`;
|
|
48
49
|
quick and import projects also skip part of the leading chain.
|
|
49
50
|
|
|
50
51
|
## Phase status values
|
|
@@ -92,6 +93,20 @@ project promote <project-path> --to quick`, which flips `oat_workflow_mode` to
|
|
|
92
93
|
`quick` and sets `oat_phase: discovery` with `oat_phase_status: complete`. See
|
|
93
94
|
[Lifecycle](../workflows/projects/lifecycle.md#promoting-a-lite-project-to-quick).
|
|
94
95
|
|
|
96
|
+
Brief progression:
|
|
97
|
+
|
|
98
|
+
1. Plan in progress (`oat_workflow_mode: brief`, `oat_phase: plan`) — `oat-project-brief` owns the interview, the artifact review, any configured gate, and the single approval
|
|
99
|
+
2. Ready for implement (`plan.md` complete and pointing to `oat-project-implement`)
|
|
100
|
+
3. Implement in progress — progress counts phase-units; a phase is accepted only by `**Status:** completed` under its heading in `implementation.md`
|
|
101
|
+
4. Implement complete (final review passed). While any phase-unit is provisional or unaccepted, the router's brief-unit guard sends the project back to `oat-project-implement` ("Incomplete phase-units remain in the active scope") before every later check
|
|
102
|
+
5. PR open (`pr_open`) through the same post-implementation sequence as quick
|
|
103
|
+
6. Complete
|
|
104
|
+
|
|
105
|
+
A brief project can move to the quick chain with `oat project promote
|
|
106
|
+
<project-path> --to quick`; quick plan readiness stays false while
|
|
107
|
+
`oat_promotion_pending_phases` lists phases that still need tasks. See
|
|
108
|
+
[Lifecycle](../workflows/projects/lifecycle.md#promoting-a-brief-project-to-quick).
|
|
109
|
+
|
|
95
110
|
## Review progression
|
|
96
111
|
|
|
97
112
|
In `plan.md` Reviews table:
|
|
@@ -47,7 +47,8 @@ instead). Saving a brainstorming reference file under the active project also
|
|
|
47
47
|
commits or pushes that file. Promoting to a new project runs
|
|
48
48
|
`oat project new`, which scaffolds the project and makes it your active
|
|
49
49
|
project, and then writes a completed `discovery.md` (or, for a lite project,
|
|
50
|
-
fills in its `plan.md
|
|
50
|
+
fills in its `plan.md`; for a brief project, writes a research note under
|
|
51
|
+
`references/research/` and leaves the brief to `oat-project-brief`). Capturing a new idea also sets it as your active
|
|
51
52
|
idea in local OAT config. Each destination is confirmed before anything is
|
|
52
53
|
written.
|
|
53
54
|
|
|
@@ -307,6 +307,7 @@ Visibility reports source metadata: “user” is `user-invocable` and “model
|
|
|
307
307
|
|
|
308
308
|
| Skill | Description | Visibility | Needs an active project? |
|
|
309
309
|
| -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | ------------------------ |
|
|
310
|
+
| [`oat-project-brief`](../workflows/projects/planning/starting-projects.md#oat-project-brief) | Use when one delivery needs a design-aligned interview, a single approved Project Brief with phases of intent and exit evidence instead of planned tasks, and resumable OAT implementation. | user: true; model disabled: true | No |
|
|
310
311
|
| [`oat-project-capture`](../workflows/projects/planning/starting-projects.md#oat-project-capture) | Use when work happened outside the OAT project workflow and needs retroactive project tracking. Creates a full project from an existing branch and conversation context. | user: true; model disabled: true | No |
|
|
311
312
|
| [`oat-project-import-plan`](../workflows/projects/planning/starting-projects.md#oat-project-import-plan) | Use when you have an external markdown plan to execute with OAT. Preserves the source plan and normalizes it into canonical plan.md format. | user: true; model disabled: true | No |
|
|
312
313
|
| [`oat-project-lite`](../workflows/projects/planning/starting-projects.md#oat-project-lite) | Use when a single-sitting change needs a critical interview, an approved single-phase plan, and resumable OAT implementation with minimal ceremony. | user: true; model disabled: true | No |
|
|
@@ -336,11 +336,19 @@ must resolve before the run makes any change.
|
|
|
336
336
|
and a dispatch policy is already configured. You authorize the bounded
|
|
337
337
|
resumable-export goal through a final PR without ordinary mid-run approval
|
|
338
338
|
pauses. Autonomous entry chooses
|
|
339
|
-
lite, quick, or spec-driven review density from the actual uncertainty and
|
|
339
|
+
lite, brief, quick, or spec-driven review density from the actual uncertainty and
|
|
340
340
|
invokes its owning creation skill. If an export-filter project is already
|
|
341
341
|
active, the second example explicitly resumes its earliest incomplete step
|
|
342
342
|
instead of replaying finished phases.
|
|
343
343
|
|
|
344
|
+
When autonomous entry selects brief, `oat-project-brief` derives the project
|
|
345
|
+
name and description only from the explicit goal and stops if it is not
|
|
346
|
+
substantive. The brief's single approval resolves autonomously under
|
|
347
|
+
`BRIEF-11`: the reviewed brief is approved and the approval line records the
|
|
348
|
+
autonomous run, while contradictory or materially incomplete outcomes stop at
|
|
349
|
+
a product-judgment boundary. A brief records no HiLL checkpoints unless it
|
|
350
|
+
lists phases explicitly.
|
|
351
|
+
|
|
344
352
|
**Expected output:** Session-only autonomy signals, persisted lifecycle
|
|
345
353
|
progress, reviewed task commits, and project-local execution learnings. Existing
|
|
346
354
|
projects retain their mode. A successful run reports the actual final PR and
|
|
@@ -98,7 +98,7 @@ string, and the lifecycle executes it unchanged; OAT does not inject, reorder,
|
|
|
98
98
|
or rewrite its shell arguments.
|
|
99
99
|
|
|
100
100
|
`oat-project-plan`, `oat-project-implement`, `oat-project-quick-start`,
|
|
101
|
-
`oat-project-lite`, and `oat-project-import-plan` are currently gate-aware. Gate awareness is declared
|
|
101
|
+
`oat-project-lite`, `oat-project-brief`, and `oat-project-import-plan` are currently gate-aware. Gate awareness is declared
|
|
102
102
|
in skill frontmatter with `oat_gateable: true`, and
|
|
103
103
|
`oat internal validate-oat-skills` warns when config targets a missing or
|
|
104
104
|
non-gateable skill.
|
|
@@ -249,7 +249,7 @@ for it.
|
|
|
249
249
|
|
|
250
250
|
### Gate approval records
|
|
251
251
|
|
|
252
|
-
|
|
252
|
+
Three lifecycle gates persist their outcome in project `state.md` with a shared
|
|
253
253
|
five-field core:
|
|
254
254
|
|
|
255
255
|
| Field | Meaning |
|
|
@@ -277,8 +277,13 @@ carries exactly the core:
|
|
|
277
277
|
- a gate that is not configured writes no record (implement writes
|
|
278
278
|
`allowed/no_gate` instead).
|
|
279
279
|
|
|
280
|
-
`
|
|
281
|
-
|
|
280
|
+
`oat_brief_gate`, written by `oat-project-brief` for its configured gate on the
|
|
281
|
+
committed brief, carries exactly the same core with the same outcome rules. It
|
|
282
|
+
is provenance only: no route reads it back, and the brief's single approval
|
|
283
|
+
still follows the gate.
|
|
284
|
+
|
|
285
|
+
`oat-project-next` and `oat-project-progress` report the quick-start record
|
|
286
|
+
(and `oat-project-progress` the brief record) as recorded: status, disposition, `decided_at`, and `config_fingerprint` as
|
|
282
287
|
provenance, or `malformed` when the fields do not form a valid record. They do
|
|
283
288
|
not recompute the fingerprint, because no CLI emits a canonical one for the
|
|
284
289
|
quick-start gate, and they never route on the record: quick plan readiness
|
|
@@ -840,7 +845,7 @@ oat gate set oat-project-implement \
|
|
|
840
845
|
```
|
|
841
846
|
|
|
842
847
|
Apply the same command shape to `oat-project-plan`,
|
|
843
|
-
`oat-project-quick-start`, `oat-project-lite`, and `oat-project-import-plan` when those lifecycle
|
|
848
|
+
`oat-project-quick-start`, `oat-project-lite`, `oat-project-brief`, and `oat-project-import-plan` when those lifecycle
|
|
844
849
|
skills have configured review gates. Do not add `--target`; explicit targets
|
|
845
850
|
remain manual/debug or deliberate local/user-specific overrides.
|
|
846
851
|
|
|
@@ -1234,7 +1239,7 @@ as a failed gate, never as a pass.
|
|
|
1234
1239
|
|
|
1235
1240
|
How the skills handle that case differs:
|
|
1236
1241
|
|
|
1237
|
-
- `oat-project-implement` and `oat-project-
|
|
1242
|
+
- `oat-project-implement`, `oat-project-lite`, and `oat-project-brief` keep it blocked whatever
|
|
1238
1243
|
`onFailure` says, so even a `warn` gate does not let them continue.
|
|
1239
1244
|
- `oat-project-plan`, `oat-project-quick-start`, and `oat-project-import-plan`
|
|
1240
1245
|
apply your `onFailure` setting to any failed gate run, including one where no
|
|
@@ -15,14 +15,15 @@ to the detail.
|
|
|
15
15
|
A HiLL (human-in-the-loop lifecycle) checkpoint is a point where the agent
|
|
16
16
|
stops and waits for a person to approve before it continues.
|
|
17
17
|
|
|
18
|
-
| Mode | A person approves before code is written | Pauses during implementation
|
|
19
|
-
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
20
|
-
| No project | You direct each step yourself | None
|
|
21
|
-
| Lite | Once: the requirements and the single-phase plan | None
|
|
22
|
-
|
|
|
23
|
-
|
|
|
24
|
-
|
|
|
25
|
-
|
|
|
18
|
+
| Mode | A person approves before code is written | Pauses during implementation | Reviews that run automatically | At the end | Never |
|
|
19
|
+
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------- | ------------------------------------------------------ | ---------------------------------------------------------------------------- | ---------------------- |
|
|
20
|
+
| No project | You direct each step yourself | None | None; run `oat-review-provide` when you want a review | OAT opens no pull request | Not applicable |
|
|
21
|
+
| Lite | Once: the requirements and the single-phase plan | None | Plan review, phase review, final review | Opens a pull request by itself; no setting removes this step | Merges a pull request |
|
|
22
|
+
| Brief | Once: the reviewed Project Brief, after you have agreed its design in the interview | None by default; a pause happens only for a phase listed in `oat_plan_hill_phases` | Brief review, a review after every phase, final review | Same as quick | Merges a pull request |
|
|
23
|
+
| Quick | You confirm the requirements (or the lightweight design). No plan-approval prompt: the plan is marked ready after an automatic review | First run lists the phases and asks where to stop; suggested: after every phase | Plan review, a review after every phase, final review | Opens a pull request by itself only if `workflow.postImplementSequence` asks | Merges a pull request |
|
|
24
|
+
| Spec-driven | Discovery, then the requirements and design. Planning asks you in chat to confirm the task breakdown, but no plan approval is recorded; the plan is marked ready after an automatic review | Same as quick | Same as quick | Same as quick | Merges a pull request |
|
|
25
|
+
| Imported plan | No approval step; OAT normalizes your plan and reviews it automatically | Same as quick | Same as quick | Same as quick | Merges a pull request |
|
|
26
|
+
| Autonomous run | None; it answers its own questions and stops only at defined boundaries | None; it approves the final checkpoint itself after a passing final review | All of the above, plus a review at every checkpoint | Opens a pull request by default | Merges or force-pushes |
|
|
26
27
|
|
|
27
28
|
Phase reviews need no person. The final review always runs, but an interactive
|
|
28
29
|
run first asks how to run it unless `workflow.reviewExecutionModel` is set. If
|
|
@@ -46,6 +47,10 @@ What does and does not give a person a say on the plan:
|
|
|
46
47
|
|
|
47
48
|
- **Lite:** its single approval covers the requirements and the plan, and the
|
|
48
49
|
decision is written into `plan.md`.
|
|
50
|
+
- **Brief:** its single approval covers the reviewed Project Brief. The
|
|
51
|
+
interview reaches explicit design alignment first, so approval confirms a
|
|
52
|
+
design you already agreed to; the artifact review and any configured
|
|
53
|
+
`oat-project-brief` gate run on the committed brief before you approve.
|
|
49
54
|
- **Spec-driven:** `/oat-project-plan` asks "Does this breakdown make sense? Any
|
|
50
55
|
tasks missing?" in the chat and revises until you confirm. That confirmation
|
|
51
56
|
is not recorded as an approval, and the automatic review that follows can
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Choose a Workflow
|
|
3
|
-
description: Choose how to run tracked, resumable work in OAT, from no project to lite, quick, spec-driven, or imported projects, and what each mode does at the end.
|
|
3
|
+
description: Choose how to run tracked, resumable work in OAT, from no project to lite, brief, quick, spec-driven, or imported projects, and what each mode does at the end.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Choose a Workflow
|
|
@@ -48,6 +48,7 @@ Stay with direct CLI usage when:
|
|
|
48
48
|
|
|
49
49
|
- CLI only: direct commands, no tracked project artifacts
|
|
50
50
|
- Lite mode: a batched interview and one approval produce a single-phase `plan.md` for a single-sitting change
|
|
51
|
+
- Brief mode: a design-aligned interview produces one reviewed Project Brief whose phases carry intent and exit evidence instead of tasks
|
|
51
52
|
- Quick mode: tracked work with a lighter upfront planning path
|
|
52
53
|
- Spec-driven mode: explicit discovery, requirements, design, and plan artifacts
|
|
53
54
|
- Import mode: an externally-authored plan imported into OAT for tracked execution
|
|
@@ -78,13 +79,14 @@ it by running that mode's entry skill, and the skill creates the project for
|
|
|
78
79
|
you. An OAT project is a folder of tracked files (plan, state, reviews) that lets
|
|
79
80
|
an agent pick the work up again in a later session.
|
|
80
81
|
|
|
81
|
-
| Mode | Start it with | Choose it when
|
|
82
|
-
| ----------- | ----------------------------------------------- |
|
|
83
|
-
| No project | No skill; ask your agent or run CLI commands | The work is small, or is just provider sync or a single CLI command
|
|
84
|
-
| Lite | `/oat-project-lite` | The change fits in one sitting and the outcome is clear
|
|
85
|
-
|
|
|
86
|
-
|
|
|
87
|
-
|
|
|
82
|
+
| Mode | Start it with | Choose it when | What you give up | At the end |
|
|
83
|
+
| ----------- | ----------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------- |
|
|
84
|
+
| No project | No skill; ask your agent or run CLI commands | The work is small, or is just provider sync or a single CLI command | Resuming later, a tracked plan, and lifecycle reviews. Ad-hoc reviews still work | OAT pushes nothing and opens no pull request |
|
|
85
|
+
| Lite | `/oat-project-lite` | The change fits in one sitting and the outcome is clear | Discovery and design documents, multiple phases, and approval pauses between phases. You approve one plan, once | Always pushes your current branch and opens a pull request by itself; no setting removes this step |
|
|
86
|
+
| Brief | `/oat-project-brief` | The work is one delivery whose outcome and design you can agree in conversation | Discovery and design documents and an up-front task list. Phases state intent and exit evidence; tasks are recorded as the work runs | Same as quick |
|
|
87
|
+
| Quick | `/oat-project-quick-start` | The work is bounded and the requirements are clear | A formal requirements document (`spec.md`). Design is optional | Pushes your branch and opens a pull request only when `workflow.postImplementSequence` asks for it, or in an autonomous run |
|
|
88
|
+
| Spec-driven | `/oat-project-new` | The requirements are unclear, or the change cuts across many parts of the code | Speed: you approve discovery and design before any planning or code | Same as quick |
|
|
89
|
+
| Import | `/oat-project-import-plan` with the plan's path | A plan already exists in another tool or document | OAT's own discovery and design steps | Same as quick |
|
|
88
90
|
|
|
89
91
|
Type the skill names in your coding agent's chat, not a terminal; Codex uses
|
|
90
92
|
`$` instead of `/`. No mode ever merges a pull request. Separately,
|
|
@@ -105,6 +107,12 @@ is what holds the planning conversation, so start with the skill.
|
|
|
105
107
|
asking, so start it on a feature branch; if you do not want that, choose
|
|
106
108
|
quick instead, which opens a pull request only when
|
|
107
109
|
`workflow.postImplementSequence` asks for one or the run is autonomous.
|
|
110
|
+
- If you can agree the outcome and the design with your agent in one
|
|
111
|
+
conversation and want to approve that once, choose brief. You approve one
|
|
112
|
+
reviewed Project Brief; the agent then works phase by phase and records each
|
|
113
|
+
task as it happens rather than planning them all first. Promote it to quick
|
|
114
|
+
with `oat project promote <path> --to quick` if you later want a maintained
|
|
115
|
+
task plan.
|
|
108
116
|
- If your team is building a feature with agreed, bounded requirements, choose
|
|
109
117
|
quick. A long task list alone does not call for a formal spec.
|
|
110
118
|
- If the change is high-risk or regulated, or its requirements are still being
|