@open-agent-toolkit/cli 0.2.59 → 0.2.62
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 +27 -4
- package/assets/agents/oat-reviewer.md +25 -14
- package/assets/bundle-metadata.json +1 -1
- package/assets/docs/cli-utilities/workflow-gates.md +3 -3
- package/assets/docs/reference/cli-reference.md +10 -3
- package/assets/docs/reference/oat-directory-structure.md +1 -0
- package/assets/docs/workflows/ideas/index.md +1 -1
- package/assets/docs/workflows/index.md +1 -0
- package/assets/docs/workflows/projects/artifacts.md +24 -3
- package/assets/docs/workflows/projects/hill-checkpoints.md +21 -0
- package/assets/docs/workflows/projects/implementation-execution.md +5 -0
- package/assets/docs/workflows/projects/lifecycle.md +124 -7
- package/assets/docs/workflows/projects/pr-flow.md +2 -0
- package/assets/docs/workflows/projects/reviews.md +1 -1
- package/assets/docs/workflows/projects/state-machine.md +20 -0
- package/assets/docs/workflows/skills/index.md +2 -1
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-brainstorm/SKILL.md +61 -12
- package/assets/skills/oat-docs/SKILL.md +13 -8
- package/assets/skills/oat-doctor/SKILL.md +3 -3
- package/assets/skills/oat-pjm-review-backlog/SKILL.md +2 -2
- package/assets/skills/oat-project-autonomous/SKILL.md +14 -9
- package/assets/skills/oat-project-autonomous/references/gate-inventory.md +56 -42
- package/assets/skills/oat-project-capture/SKILL.md +2 -2
- package/assets/skills/oat-project-discover/SKILL.md +6 -5
- package/assets/skills/oat-project-document/SKILL.md +11 -1
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +56 -42
- package/assets/skills/oat-project-implement/SKILL.md +3 -3
- package/assets/skills/oat-project-implement/references/completion-and-closeout.md +106 -15
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +56 -42
- package/assets/skills/oat-project-implement/references/phase-execution.md +16 -1
- package/assets/skills/oat-project-implement/references/plan-and-resume.md +19 -1
- package/assets/skills/oat-project-import-plan/SKILL.md +47 -3
- package/assets/skills/oat-project-lite/SKILL.md +467 -0
- package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +331 -0
- package/assets/skills/oat-project-next/SKILL.md +26 -10
- package/assets/skills/oat-project-plan/SKILL.md +14 -2
- package/assets/skills/oat-project-plan-writing/SKILL.md +6 -3
- package/assets/skills/oat-project-pr-final/SKILL.md +33 -7
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +56 -42
- package/assets/skills/oat-project-pr-progress/SKILL.md +3 -3
- package/assets/skills/oat-project-progress/SKILL.md +16 -3
- package/assets/skills/oat-project-promote-spec-driven/SKILL.md +3 -1
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +56 -42
- package/assets/skills/oat-project-review-provide/SKILL.md +25 -6
- package/assets/skills/oat-project-summary/SKILL.md +27 -3
- package/assets/templates/plan-lite.md +165 -0
- package/assets/templates/plan.md +1 -1
- package/assets/templates/state.md +1 -1
- package/dist/commands/project/index.d.ts.map +1 -1
- package/dist/commands/project/index.js +2 -0
- package/dist/commands/project/new/index.d.ts +3 -2
- package/dist/commands/project/new/index.d.ts.map +1 -1
- package/dist/commands/project/new/index.js +2 -1
- package/dist/commands/project/new/scaffold.d.ts +5 -3
- package/dist/commands/project/new/scaffold.d.ts.map +1 -1
- package/dist/commands/project/new/scaffold.js +38 -10
- package/dist/commands/project/promote/index.d.ts +2 -0
- package/dist/commands/project/promote/index.d.ts.map +1 -0
- package/dist/commands/project/promote/index.js +1 -0
- package/dist/commands/project/promote/promote.d.ts +47 -0
- package/dist/commands/project/promote/promote.d.ts.map +1 -0
- package/dist/commands/project/promote/promote.js +322 -0
- package/dist/commands/project/split/run.d.ts.map +1 -1
- package/dist/commands/project/split/run.js +8 -1
- package/dist/commands/project/validate-plan/index.d.ts.map +1 -1
- package/dist/commands/project/validate-plan/index.js +25 -1
- package/dist/commands/project/validate-plan/validate-plan.d.ts +8 -0
- package/dist/commands/project/validate-plan/validate-plan.d.ts.map +1 -1
- package/dist/commands/project/validate-plan/validate-plan.js +49 -0
- 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 +23 -0
- package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -1
- package/dist/commands/tools/shared/pack-manifest.js +2 -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.5
|
|
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`, or `
|
|
32
|
+
- `workflow_mode`: `spec-driven`, `quick`, `import`, or `lite`;
|
|
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;
|
|
@@ -120,6 +120,11 @@ Read each required artifact once at phase start:
|
|
|
120
120
|
- `quick`: phase section from plan and discovery; design/spec when present;
|
|
121
121
|
- `import`: phase section from plan and imported plan; design/spec when
|
|
122
122
|
present.
|
|
123
|
+
- `lite`: read the whole plan.md requirements contract: the assigned phase
|
|
124
|
+
section plus Summary, Decisions, Assumptions, Out of Scope, and Validation
|
|
125
|
+
Criteria, and the Product Behavior and/or Technical Design selected by its
|
|
126
|
+
recorded `minimal`, `product`, `technical`, or `both` content shape.
|
|
127
|
+
Discovery, spec, and design are absent by design.
|
|
123
128
|
|
|
124
129
|
Extract all phase tasks, dependency order, file boundaries, verification
|
|
125
130
|
commands, commit messages, and phase-wide verification before editing.
|
|
@@ -402,7 +407,20 @@ For every task:
|
|
|
402
407
|
|
|
403
408
|
1. Record `PRE_TASK_HEAD`.
|
|
404
409
|
2. Read the task steps and declared file boundary.
|
|
405
|
-
3.
|
|
410
|
+
3. Execute the task's declared implementation and proof strategy without
|
|
411
|
+
silently substituting TDD. Follow RED/GREEN/refactor ordering only when the
|
|
412
|
+
selected strategy specifies it.
|
|
413
|
+
For required manual or visual proof, inspect the effective runtime tool
|
|
414
|
+
catalog for an available computer-use capability; never infer availability
|
|
415
|
+
from planning prose, configuration, or another agent's tools. Use available
|
|
416
|
+
computer-use for required visual proof and record the performed proof. When
|
|
417
|
+
no available executor can perform the criterion, stop before committing the
|
|
418
|
+
task or marking the task or phase complete. Under `OAT_AUTONOMOUS=1`, return
|
|
419
|
+
`BLOCKED` with an explicit `IMPLEMENT-20 unverified proof boundary` and name
|
|
420
|
+
the criterion and missing capability. In an interactive run, return
|
|
421
|
+
`NEEDS_CONTEXT` and wait for the operator to execute the criterion or direct
|
|
422
|
+
the next action. Neither path may mark unavailable proof
|
|
423
|
+
deferred-but-verified.
|
|
406
424
|
4. Implement only that task. Optional nested help does not transfer task
|
|
407
425
|
ownership or commit authority.
|
|
408
426
|
5. Apply the Prevention and Post-Commit Recovery ordering: format, run every
|
|
@@ -440,7 +458,12 @@ After all task commits:
|
|
|
440
458
|
- apply the same post-commit recovery contract to an eligible phase-level
|
|
441
459
|
composition failure;
|
|
442
460
|
- verify task outputs compose correctly;
|
|
443
|
-
- compare the phase result with
|
|
461
|
+
- compare the phase result with the requirements source selected by workflow
|
|
462
|
+
mode:
|
|
463
|
+
- `lite`: the complete `plan.md` requirements contract loaded at phase start;
|
|
464
|
+
- `spec-driven`: `plan.md`, `design.md`, and `spec.md`;
|
|
465
|
+
- `quick`: `plan.md` and `discovery.md`, plus design/spec when present; and
|
|
466
|
+
- `import`: `plan.md` and the imported plan, plus design/spec when present;
|
|
444
467
|
- confirm no task boundary or dependency was missed; and
|
|
445
468
|
- report Medium/Minor concerns without launching a reviewer.
|
|
446
469
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-reviewer
|
|
3
|
-
version: 1.2.
|
|
3
|
+
version: 1.2.3
|
|
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,7 +50,7 @@ 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` (default to `spec-driven` if absent)
|
|
53
|
+
- **workflow_mode**: `spec-driven` | `quick` | `import` | `lite` (default to `spec-driven` if absent)
|
|
54
54
|
- **artifact_paths**: Paths to available artifacts (spec/design/plan/implementation/discovery/import reference)
|
|
55
55
|
- **tasks_in_scope**: Task IDs being reviewed (if task/phase scope)
|
|
56
56
|
- **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.
|
|
@@ -122,6 +122,7 @@ Use workflow mode to determine required evidence:
|
|
|
122
122
|
- **spec-driven**: `spec.md`, `design.md`, `plan.md` are expected.
|
|
123
123
|
- **quick**: `discovery.md` + `plan.md` are expected (`spec.md`/`design.md` optional if present).
|
|
124
124
|
- **import**: `plan.md` is expected (`references/imported-plan.md` preferred; `spec.md`/`design.md` optional).
|
|
125
|
+
- **lite**: `plan.md` and `implementation.md` are expected; discovery, spec, and design are absent by design.
|
|
125
126
|
|
|
126
127
|
Do not mark missing optional artifacts as findings.
|
|
127
128
|
If required artifacts for the mode are unexpectedly missing, record a workflow contract gap.
|
|
@@ -144,6 +145,7 @@ Read available artifacts to understand what SHOULD have been built:
|
|
|
144
145
|
- `spec-driven`: read `spec.md` and `design.md`.
|
|
145
146
|
- `quick`: read `discovery.md` and `plan.md`; read `spec.md`/`design.md` only if they exist.
|
|
146
147
|
- `import`: read `plan.md` and `references/imported-plan.md` (if present); read `spec.md`/`design.md` only if they exist.
|
|
148
|
+
- `lite`: read `plan.md` and `implementation.md`; do not require discovery, spec, design, or an import reference.
|
|
147
149
|
3. For `type: analysis`, read `analysis_artifact` and then inspect only the cited evidence sources needed to verify its findings:
|
|
148
150
|
- `scope: docs`: consult the docs contract, docs navigation/index files, and cited docs source files relevant to the analysis.
|
|
149
151
|
- `scope: agent-instructions`: consult the repo/root instruction files, provider instruction files, and cited skill/agent instruction files relevant to the analysis.
|
|
@@ -168,6 +170,7 @@ For each requirement in scope, use the best available requirement source by mode
|
|
|
168
170
|
- `spec-driven`: `spec.md` (primary), `design.md` mapping (secondary)
|
|
169
171
|
- `quick`: `discovery.md` + `plan.md`
|
|
170
172
|
- `import`: normalized `plan.md` + `references/imported-plan.md` (if present)
|
|
173
|
+
- `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.
|
|
171
174
|
|
|
172
175
|
Then verify:
|
|
173
176
|
|
|
@@ -176,10 +179,17 @@ Then verify:
|
|
|
176
179
|
- Check acceptance criteria are met
|
|
177
180
|
- If missing: add to Critical findings
|
|
178
181
|
|
|
179
|
-
2. **Is the
|
|
180
|
-
-
|
|
181
|
-
|
|
182
|
-
|
|
182
|
+
2. **Is the applicable verification intent satisfied?**
|
|
183
|
+
- First identify the verification intent declared by the applicable workflow
|
|
184
|
+
artifacts. When that contract declares an `Implementation and Proof
|
|
185
|
+
Strategy`, check whether the evidence matches the declared strategy, covers
|
|
186
|
+
its observable risk, and is capable of failing when the claim is false.
|
|
187
|
+
- A missing or unjustified proof strategy is a finding only when the
|
|
188
|
+
applicable workflow artifact declares that strategy. When it does not,
|
|
189
|
+
review the plan's existing verification commands and produced evidence
|
|
190
|
+
without inventing a missing strategy field.
|
|
191
|
+
- If `design.md` exists, cross-reference Requirement-to-Test Mapping.
|
|
192
|
+
- The absence of an automated test alone is not a finding.
|
|
183
193
|
|
|
184
194
|
3. **Is there extra work?**
|
|
185
195
|
- Code that doesn't map to any requirement
|
|
@@ -207,6 +217,7 @@ Treat the artifact as a product deliverable. Verify it is:
|
|
|
207
217
|
- `spec-driven`: spec + design
|
|
208
218
|
- `quick`: discovery (+ spec/design if present)
|
|
209
219
|
- `import`: imported-plan reference (+ discovery/spec/design if present)
|
|
220
|
+
- `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.
|
|
210
221
|
- 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.
|
|
211
222
|
|
|
212
223
|
4. **Actionable**
|
|
@@ -220,7 +231,7 @@ Treat the artifact as a product deliverable. Verify it is:
|
|
|
220
231
|
- Stable task IDs: task headings use `pNN-tNN`, IDs are monotonic within each phase, and review-generated tasks do not reuse prior IDs.
|
|
221
232
|
- Required sections: the plan includes Reviews, Implementation Complete, and References sections without placeholder-only critical content.
|
|
222
233
|
- Review-table preservation: existing review rows are preserved; never require deleting rows to "clean up" the table.
|
|
223
|
-
- Task atomicity and verifiability: each task is independently committable, has bounded file scope, and
|
|
234
|
+
- 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.
|
|
224
235
|
- 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.
|
|
225
236
|
- Parallelism-claim sanity: any parallel phase group or parallelism statement is consistent with declared file boundaries and dependency order.
|
|
226
237
|
|
|
@@ -228,7 +239,7 @@ Treat the artifact as a product deliverable. Verify it is:
|
|
|
228
239
|
|
|
229
240
|
This step applies to **code reviews** only.
|
|
230
241
|
|
|
231
|
-
If `design.md` is absent in quick/import mode, mark design alignment as "not applicable (design artifact not present for mode)" and continue.
|
|
242
|
+
If `design.md` is absent in quick/import/lite mode, mark design alignment as "not applicable (design artifact not present for mode)" and continue.
|
|
232
243
|
|
|
233
244
|
For each design decision relevant to scope:
|
|
234
245
|
|
|
@@ -283,10 +294,10 @@ Pragmatic code quality review (not exhaustive):
|
|
|
283
294
|
- Off-by-one errors, null handling
|
|
284
295
|
- Missing error handling for likely failures
|
|
285
296
|
|
|
286
|
-
2. **
|
|
287
|
-
- Critical paths have
|
|
288
|
-
- Edge cases covered
|
|
289
|
-
-
|
|
297
|
+
2. **Evidence coverage**
|
|
298
|
+
- Critical paths have evidence matching the declared proof strategy
|
|
299
|
+
- Edge cases are covered where relevant
|
|
300
|
+
- Behavioral claims have a control that fails without the change
|
|
290
301
|
|
|
291
302
|
3. **Security**
|
|
292
303
|
- Input validation at boundaries
|
|
@@ -307,14 +318,14 @@ Group findings by severity:
|
|
|
307
318
|
- Missing P0 requirements
|
|
308
319
|
- Security vulnerabilities
|
|
309
320
|
- Broken functionality
|
|
310
|
-
- Missing
|
|
321
|
+
- Missing capable evidence for critical paths
|
|
311
322
|
|
|
312
323
|
**Important** (should fix before merge)
|
|
313
324
|
|
|
314
325
|
- Missing P1 requirements
|
|
315
326
|
- Missing error handling
|
|
316
327
|
- Significant maintainability issues
|
|
317
|
-
- Missing
|
|
328
|
+
- Missing capable evidence for important paths
|
|
318
329
|
- Stale spec/design/plan artifact that conflicts with a defensible implementation and should be aligned before closeout
|
|
319
330
|
|
|
320
331
|
**Medium** (default fix before pass)
|
|
@@ -62,8 +62,8 @@ A valid command is stored byte-for-byte. `oat gate resolve` returns that exact
|
|
|
62
62
|
string, and the lifecycle executes it unchanged; OAT does not inject, reorder,
|
|
63
63
|
or rewrite its shell arguments.
|
|
64
64
|
|
|
65
|
-
`oat-project-plan`, `oat-project-implement`, `oat-project-quick-start`,
|
|
66
|
-
`oat-project-import-plan` are currently gate-aware. Gate awareness is declared
|
|
65
|
+
`oat-project-plan`, `oat-project-implement`, `oat-project-quick-start`,
|
|
66
|
+
`oat-project-lite`, and `oat-project-import-plan` are currently gate-aware. Gate awareness is declared
|
|
67
67
|
in skill frontmatter with `oat_gateable: true`, and
|
|
68
68
|
`oat internal validate-oat-skills` warns when config targets a missing or
|
|
69
69
|
non-gateable skill.
|
|
@@ -610,7 +610,7 @@ oat gate set oat-project-implement \
|
|
|
610
610
|
```
|
|
611
611
|
|
|
612
612
|
Apply the same command shape to `oat-project-plan`,
|
|
613
|
-
`oat-project-quick-start`, and `oat-project-import-plan` when those lifecycle
|
|
613
|
+
`oat-project-quick-start`, `oat-project-lite`, and `oat-project-import-plan` when those lifecycle
|
|
614
614
|
skills have configured review gates. Do not add `--target`; explicit targets
|
|
615
615
|
remain manual/debug or deliberate local/user-specific overrides.
|
|
616
616
|
|
|
@@ -56,8 +56,14 @@ The first practical expansion path is to keep improving the existing owners: [Do
|
|
|
56
56
|
|
|
57
57
|
Notable commands introduced in the current CLI surface:
|
|
58
58
|
|
|
59
|
-
- `oat project new <slug> --scope shared|local|synced [--force]` - create a
|
|
60
|
-
project in an explicit scope.
|
|
59
|
+
- `oat project new <slug> [--mode spec-driven|quick|import|lite] --scope shared|local|synced [--force]` - create a
|
|
60
|
+
project in an explicit scope. `--mode` selects the workflow mode and therefore
|
|
61
|
+
which artifacts are scaffolded; it defaults to `spec-driven`. Use `quick` for a
|
|
62
|
+
bounded feature with clear requirements, `import` to normalize an externally
|
|
63
|
+
authored plan, and `lite` for a single-sitting change that scaffolds only
|
|
64
|
+
`plan.md`, `state.md`, and `implementation.md`. See
|
|
65
|
+
[Lifecycle](../workflows/projects/lifecycle.md) for the per-lane flow. Without
|
|
66
|
+
`--scope`, creation uses
|
|
61
67
|
`projects.defaultScope`, which defaults to `synced`. Project slugs are
|
|
62
68
|
unique across all scopes by default, including recorded or remotely
|
|
63
69
|
published synced projects. `--force` deliberately permits a duplicate; use
|
|
@@ -133,13 +139,14 @@ Notable commands introduced in the current CLI surface:
|
|
|
133
139
|
- `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.
|
|
134
140
|
- `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.
|
|
135
141
|
- `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.
|
|
142
|
+
- `oat project promote <project-path> --to quick [--json]` - promote an authored lite project to quick mode. 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`. It refuses unsupported targets, non-lite or unreadable projects, an existing lite-plan reference, invalid authored sections, unresolved scope, unavailable templates, failed writes, or failed persistence. JSON output is `{ status: "promoted" | "refused", reason, files }`; `reason` is the stable categorical contract and refused results exit non-zero.
|
|
136
143
|
- `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`.
|
|
137
144
|
- `oat project list --json` - summary state for tracked projects under the configured projects root
|
|
138
145
|
- `oat project complete-state <project-path>` - apply the canonical completed-state mutation to a project's `state.md`; used by `oat-project-complete` during lifecycle closeout
|
|
139
146
|
- `oat project archive [project-path] [--project-recap-run <project-relative-path>] [--no-commit]` - archive a tracked project through the same local move, summary export, and configured S3 upload path used by completion. When omitted, the project path falls back to the active project. The optional recap path must identify a `project-recap` run inside the project's `explainers/` directory. Archive stages the selected complete package into `.oat/repo/reference/project-recaps/<YYYYMMDD-project-slug>/`, verifies every manifest-declared immutable file byte, then atomically installs the export before deleting the active project. Existing destinations, incomplete legacy hash coverage, stale bytes, path escapes, and recipe mismatches fail without removing the active project. For synced projects, a configured S3 upload must succeed before terminal cleanup. Successful closeout makes `refs/oat/completed/<project>` authoritative, deletes the tracked JSON record and nested checkout, and leaves archive metadata sufficient for an idempotent recordless retry. Legacy complete records receive a cleanup diagnosis rather than pull/open guidance. With `--json`, the terminal receipt reports `completedRef`, `verifiedSourceSha`, whether `activeAliasDisposition` was `retained` or `removed`, whether `recordRetired` completed, and the parent `lifecycleCommit`. `--no-commit` is a manual/library-only option: for a synced project it still removes the checkout but deliberately leaves `lifecycleCommit` null. Never pass it through `oat-project-complete`, which requires that receipt.
|
|
140
147
|
- `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.
|
|
141
148
|
- `oat project dispatch record --event-file <json-file-or-dash> [--project <project-path>]` - validate one generic dispatch record plus its namespaced OAT evidence event, and persist it into the project's append-only `dispatch/` journal. Omit `--project` to validate without persisting. Revision 1 is `dispatch/<request-id>.json` and every later revision is `dispatch/<request-id>@<NNNN>.json`; superseded revisions are never replaced or removed. The command validates and records 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 persisted, 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/projects/evidence-layers.md).
|
|
142
|
-
- `oat project validate-plan --project-path <path>` - validates `oat_plan_parallel_groups` metadata in `plan.md`; exits non-zero on invalid. See [Implementation Execution](../workflows/projects/implementation-execution.md#parallel-phase-groups).
|
|
149
|
+
- `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/implementation-execution.md#parallel-phase-groups).
|
|
143
150
|
- `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](../cli-utilities/project-log.md).
|
|
144
151
|
- `oat project set-mode` — deprecated no-op. Execution mode is no longer user-selectable; emits a deprecation warning and preserves the `--json` contract.
|
|
145
152
|
- `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 default to 30 minutes, while task code and artifact 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`. 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](../cli-utilities/workflow-gates.md).
|
|
@@ -305,6 +305,7 @@ Not all workflow modes require every artifact:
|
|
|
305
305
|
- `spec-driven`: discovery + spec + design + plan + implementation
|
|
306
306
|
- `quick`: discovery + plan + implementation (spec/design optional)
|
|
307
307
|
- `import`: imported plan + implementation (spec/design optional)
|
|
308
|
+
- `lite`: single-phase plan + implementation (summary/documentation optional at closeout)
|
|
308
309
|
|
|
309
310
|
## `.oat/repo/` structure
|
|
310
311
|
|
|
@@ -37,4 +37,4 @@ If the thought is still pre-shape — you don't know whether it should land as a
|
|
|
37
37
|
|
|
38
38
|
## Promotion Path
|
|
39
39
|
|
|
40
|
-
When an idea becomes concrete, summarize it and then start a tracked OAT project in quick or spec-driven mode depending on design risk.
|
|
40
|
+
When an idea becomes concrete, summarize it and then start a tracked OAT project in lite, quick, or spec-driven mode depending on scope and design risk. Lite suits a single-sitting change and seeds `plan.md` directly; quick and spec-driven seed `discovery.md` instead.
|
|
@@ -44,6 +44,7 @@ Stay with direct CLI usage when:
|
|
|
44
44
|
## Workflow Modes In Practice
|
|
45
45
|
|
|
46
46
|
- CLI only: direct commands, no tracked project artifacts
|
|
47
|
+
- Lite mode: a batched interview and one approval produce a single-phase `plan.md` for a single-sitting change
|
|
47
48
|
- Quick mode: tracked work with a lighter upfront planning path
|
|
48
49
|
- Spec-driven mode: explicit discovery, requirements, design, and plan artifacts
|
|
49
50
|
- Import mode: an externally-authored plan imported into OAT for tracked execution
|
|
@@ -50,9 +50,30 @@ 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`) for routing.
|
|
54
|
-
- `
|
|
55
|
-
|
|
53
|
+
- `state.md` includes workflow mode metadata (`spec-driven`, `quick`, `import`, `lite`) for routing.
|
|
54
|
+
- `plan.md` remains the canonical execution artifact across all modes.
|
|
55
|
+
|
|
56
|
+
| Mode | Core authored artifacts | Optional artifacts |
|
|
57
|
+
| ------------- | -------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ |
|
|
58
|
+
| `spec-driven` | `discovery.md`, `spec.md`, `design.md`, `plan.md` | - |
|
|
59
|
+
| `quick` | `discovery.md`, `plan.md` | Lightweight `design.md`, `spec.md` |
|
|
60
|
+
| `import` | `references/imported-plan.md`, `plan.md` | `spec.md`, `design.md` |
|
|
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
|
+
|
|
63
|
+
Every Lite plan keeps Summary, Decisions, Assumptions, Out of Scope, and
|
|
64
|
+
Validation Criteria. User-visible changes add numbered, testable Product
|
|
65
|
+
Behavior. Changes that cross module boundaries, alter data or state formats,
|
|
66
|
+
or change a contract consumed by another surface add Technical Design. That
|
|
67
|
+
section covers current operation, proposed changes, and data flow when data or
|
|
68
|
+
state crosses a boundary. The Decisions section records the selected shape and
|
|
69
|
+
why it fits.
|
|
70
|
+
|
|
71
|
+
Each Lite task also records an implementation and proof strategy: the risk it
|
|
72
|
+
covers, why the evidence is proportionate, and the exact command or manual
|
|
73
|
+
proof. Strategies may be test-first, characterization-first,
|
|
74
|
+
implementation-then-regression, static/build, or manual/visual. Static or build
|
|
75
|
+
checks alone fit only changes that cannot affect runtime behavior; every
|
|
76
|
+
behavioral change needs evidence that fails without the change.
|
|
56
77
|
|
|
57
78
|
## Supporting artifacts
|
|
58
79
|
|
|
@@ -38,6 +38,27 @@ Semantics:
|
|
|
38
38
|
- Empty list: checkpoint after every phase boundary, but only after implementation has confirmed the choice and written `oat_plan_hill_phases: []` into `plan.md`.
|
|
39
39
|
- Explicit list: checkpoint only after completing the named phases (`p01`, `p04`, etc).
|
|
40
40
|
|
|
41
|
+
### Lite checkpoint bypass
|
|
42
|
+
|
|
43
|
+
Lite projects have no HiLL checkpoints. `oat-project-implement` resolves
|
|
44
|
+
`oat_workflow_mode` from project state before any checkpoint field read, and
|
|
45
|
+
when the mode is `lite` it resolves checkpoint state as `none` without reading
|
|
46
|
+
or interpreting `oat_plan_hill_phases`. An empty list cannot represent lite's
|
|
47
|
+
policy, because for every other mode an empty list means "checkpoint after every
|
|
48
|
+
phase". `oat-project-implement`'s Lite checkpoint bypass writes:
|
|
49
|
+
|
|
50
|
+
```yaml
|
|
51
|
+
oat_auto_review_at_hill_checkpoints: false # lite: no checkpoints
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
The workflow preference prompt, the standard checkpoint prompt, and the
|
|
55
|
+
auto-review preference prompt are all skipped in both interactive and autonomous
|
|
56
|
+
runs. Only HiLL approval pauses are absent — the root-owned per-phase review and
|
|
57
|
+
the final review remain required.
|
|
58
|
+
|
|
59
|
+
The rest of this section applies to `spec-driven`, `quick`, and `import`
|
|
60
|
+
projects.
|
|
61
|
+
|
|
41
62
|
On the first implementation run, `oat-project-implement` must summarize every plan phase, state the total phase count and final phase ID, and then ask an explicit three-option checkpoint question:
|
|
42
63
|
|
|
43
64
|
- Stop after each phase
|
|
@@ -426,6 +426,11 @@ For a plan-declared parallel group, the root:
|
|
|
426
426
|
Containment, ownership, base, or fixture-readiness failure in smoke mode aborts
|
|
427
427
|
the run. It never authorizes replacement or sequential degradation.
|
|
428
428
|
|
|
429
|
+
Lite plans never take this path. A lite `plan.md` must contain exactly one phase
|
|
430
|
+
and declare no parallel groups, so lite implementation is always sequential;
|
|
431
|
+
`oat project validate-plan` enforces both rules. Work that needs more than one
|
|
432
|
+
phase should promote to quick rather than declare a parallel group.
|
|
433
|
+
|
|
429
434
|
## Synced projects in worktrees
|
|
430
435
|
|
|
431
436
|
A tracked `.oat/projects/synced/<project>.json` record lets every repository
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Lifecycle
|
|
3
|
-
description: 'End-to-end phase flow from discovery through completion: spec-driven, quick, and import paths.'
|
|
3
|
+
description: 'End-to-end phase flow from discovery through completion: spec-driven, quick, lite, and import paths.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Lifecycle
|
|
@@ -27,9 +27,9 @@ Full spec-driven design supports three interaction modes: collaborative, selecti
|
|
|
27
27
|
|
|
28
28
|
## Quick Look
|
|
29
29
|
|
|
30
|
-
- What it does: explains the end-to-end lifecycle for tracked OAT projects, including alternate quick and import lanes.
|
|
30
|
+
- What it does: explains the end-to-end lifecycle for tracked OAT projects, including alternate quick, lite, and import lanes.
|
|
31
31
|
- When to use it: when you need the actual project execution model, not just a high-level overview of workflow mode.
|
|
32
|
-
- Primary entry points: `oat-project-new`, `oat-project-quick-start`, `oat-project-import-plan`, `oat-project-implement`
|
|
32
|
+
- Primary entry points: `oat-project-new`, `oat-project-quick-start`, `oat-project-lite`, `oat-project-import-plan`, `oat-project-implement`
|
|
33
33
|
|
|
34
34
|
## Lifecycle Map
|
|
35
35
|
|
|
@@ -42,6 +42,10 @@ flowchart LR
|
|
|
42
42
|
DOC --> C["Complete"]
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
+
This map shows the spec-driven default. The quick, lite, import, and capture
|
|
46
|
+
lanes each skip part of it — see [Lane diagrams](#lane-diagrams) below. Lite in
|
|
47
|
+
particular has no discovery, spec, or design step at all.
|
|
48
|
+
|
|
45
49
|
## Post-implementation flow
|
|
46
50
|
|
|
47
51
|
Implementation closeout has one authoritative order:
|
|
@@ -73,6 +77,37 @@ After implementation closeout finishes:
|
|
|
73
77
|
- After revision tasks complete, state returns to `pr_open`
|
|
74
78
|
5. **Complete** (`oat-project-complete`) — accepts any phase status (`pr_open`, `complete`, `in_progress`), auto-refreshes `summary.md` before closeout when needed, and archives when selected by the workflow preference or completion prompt
|
|
75
79
|
|
|
80
|
+
### Project-recap gate (non-lite)
|
|
81
|
+
|
|
82
|
+
The final-closeout orchestrator owns one project-recap gate. It runs after the
|
|
83
|
+
final code review has passed and after any configured pre-approval summary and
|
|
84
|
+
documentation steps, but before final HiLL approval. It neither replaces nor
|
|
85
|
+
repeats the final review, and the stored order of the other pre-approval steps
|
|
86
|
+
is preserved.
|
|
87
|
+
|
|
88
|
+
Recap intent resolves through `oat-explainer-kit`. A fresh `project-recap`
|
|
89
|
+
manifest for the current completed implementation is reused rather than
|
|
90
|
+
regenerated — fresh means it names recipe `project-recap`, belongs to this
|
|
91
|
+
project, has a terminal outcome, and its recorded source hashes match the
|
|
92
|
+
current approved inputs. A present-but-incomplete, wrong-recipe, or stale
|
|
93
|
+
manifest does not qualify.
|
|
94
|
+
|
|
95
|
+
Recap outcomes are reported, not blocking: `failed` and `built-not-durable` are
|
|
96
|
+
recorded as warnings and never block final approval, completion reporting, or
|
|
97
|
+
later PR steps. The selected or attempted outcome and run path are included in
|
|
98
|
+
the implementation completion report, and `summary.md` carries a single
|
|
99
|
+
`Explainer Outcome` section when it exists.
|
|
100
|
+
|
|
101
|
+
**Lite skips this gate entirely.** Lite sets `PROJECT_RECAP_REACHABLE=false` and
|
|
102
|
+
does not resolve recap intent, inspect recap runs, invoke `oat-explainer-kit`,
|
|
103
|
+
or run the terminal-outcome guard. It proceeds from the required reviews through
|
|
104
|
+
its stored optional steps to `pr` and sequence completion.
|
|
105
|
+
|
|
106
|
+
Lite mode collapses the default pre-approval sequence to PR creation only.
|
|
107
|
+
`oat-project-pr-final` builds the body directly from the lite plan and
|
|
108
|
+
`implementation.md`; summary and documentation remain explicit lite opt-ins,
|
|
109
|
+
and retro is not added to the lite closeout sequence.
|
|
110
|
+
|
|
76
111
|
### Completion archive behavior
|
|
77
112
|
|
|
78
113
|
On completion, OAT treats archive handling as an explicit closeout choice:
|
|
@@ -167,7 +202,9 @@ When `workflow.autoReviewAtHillCheckpoints` is enabled or `plan.md` frontmatter
|
|
|
167
202
|
### Phase-review setup during planning
|
|
168
203
|
|
|
169
204
|
Spec-driven, quick, and import planning run one shared setup after stable phase
|
|
170
|
-
IDs exist and before the plan artifact review.
|
|
205
|
+
IDs exist and before the plan artifact review. Lite omits this planning-time
|
|
206
|
+
setup and prompt, while its built-in implementation phase and final reviews
|
|
207
|
+
remain required. The target probe qualifies only
|
|
171
208
|
an explicitly configured, enabled, and available review target, then offers all
|
|
172
209
|
phases, selected phases, or disabled. Existing explicit
|
|
173
210
|
`oat_phase_review_gate` values are preserved unchanged without re-prompting.
|
|
@@ -214,6 +251,13 @@ See [Implementation Execution](implementation-execution.md) for the full executi
|
|
|
214
251
|
4. `oat-project-review-provide` / `oat-project-pr-final`
|
|
215
252
|
5. Optional `oat-project-promote-spec-driven` to backfill spec-driven lifecycle artifacts in-place
|
|
216
253
|
|
|
254
|
+
### Lite lane diagram
|
|
255
|
+
|
|
256
|
+
1. `oat-project-lite` runs one batched interview, authors a single-phase `plan.md` with validation criteria, and pauses once for approval
|
|
257
|
+
2. Implement: `oat-project-implement` runs the single phase without HiLL checkpoint prompts
|
|
258
|
+
3. Pass the mandatory final review, then route directly to `oat-project-pr-final`
|
|
259
|
+
4. Optional `oat project promote <project-path> --to quick` when the work no longer fits one sitting
|
|
260
|
+
|
|
217
261
|
### Import lane diagram
|
|
218
262
|
|
|
219
263
|
1. `oat-project-import-plan` (checks inherited git state before import scaffolding so sync-generated or unrelated dirty files do not silently roll into project bookkeeping)
|
|
@@ -269,6 +313,75 @@ still read as compatibility capped-policy input, but new quick-start selections
|
|
|
269
313
|
should use the dispatch-policy names, including explicit `Uncapped` and
|
|
270
314
|
`Inherit Host Defaults`.
|
|
271
315
|
|
|
316
|
+
### Lite lane
|
|
317
|
+
|
|
318
|
+
```mermaid
|
|
319
|
+
flowchart LR
|
|
320
|
+
L["Lite interview\n(one batched round)"] --> P["Single-phase plan\n(one approval)"]
|
|
321
|
+
P --> I["Implement (oat-project-implement)"]
|
|
322
|
+
I --> R["Final review"] --> PR["PR (default closeout)"]
|
|
323
|
+
P -->|Scope grows| Q["Promote to Quick"]
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
Lite keeps planning and validation in `plan.md`. The interview selects a
|
|
327
|
+
`minimal`, `product`, `technical`, or `both` content shape and records the
|
|
328
|
+
rationale. Product Behavior is required for user-visible changes; Technical
|
|
329
|
+
Design is required for cross-module, data/state-format, or consumed-contract
|
|
330
|
+
changes. It has no separate discovery, spec, or design artifact, skips
|
|
331
|
+
implementation HiLL prompts, and routes a passed final review directly to PR
|
|
332
|
+
creation. Summary and documentation run only when enabled through the
|
|
333
|
+
lite-specific post-implementation sequence.
|
|
334
|
+
|
|
335
|
+
Each task chooses evidence proportionate to its risk instead of requiring one
|
|
336
|
+
test-first recipe. Behavioral changes need a proof that fails without the
|
|
337
|
+
change; refactors default to characterization-first when existing coverage is
|
|
338
|
+
insufficient; documentation-only work may use formatting, link, spelling, or
|
|
339
|
+
build checks. UI changes require visual proof. In autonomous runs, available
|
|
340
|
+
computer-use capability performs that proof; otherwise execution stops at an
|
|
341
|
+
explicit proof boundary.
|
|
342
|
+
|
|
343
|
+
### Promoting a lite project to quick
|
|
344
|
+
|
|
345
|
+
When lite work outgrows one sitting, `oat project promote <project-path> --to quick`
|
|
346
|
+
converts it in place. Each artifact has a different fate: the authored lite plan
|
|
347
|
+
is **moved** to `references/lite-plan.md`, a new `discovery.md` is **derived**
|
|
348
|
+
from its five core sections plus any adaptive Product Behavior and Technical
|
|
349
|
+
Design, a **fresh** quick template takes over the `plan.md` path, and `state.md`
|
|
350
|
+
is **rewritten** to quick mode.
|
|
351
|
+
|
|
352
|
+
```mermaid
|
|
353
|
+
flowchart LR
|
|
354
|
+
subgraph Before
|
|
355
|
+
LPLAN["plan.md\nfive core sections plus adaptive\nProduct Behavior / Technical Design"]
|
|
356
|
+
LSTATE["state.md\noat_workflow_mode: lite"]
|
|
357
|
+
end
|
|
358
|
+
|
|
359
|
+
CMD["oat project promote\n--to quick"]
|
|
360
|
+
|
|
361
|
+
subgraph After
|
|
362
|
+
DISC["discovery.md\nderived from the lite plan\noat_ready_for: oat-project-quick-start"]
|
|
363
|
+
REF["references/lite-plan.md\noriginal lite plan, preserved"]
|
|
364
|
+
QPLAN["plan.md\nfresh quick-start template"]
|
|
365
|
+
QSTATE["state.md\noat_workflow_mode: quick\noat_phase: discovery (complete)\noat_ready_for: oat-project-quick-start"]
|
|
366
|
+
end
|
|
367
|
+
|
|
368
|
+
LPLAN --> CMD
|
|
369
|
+
LSTATE --> CMD
|
|
370
|
+
CMD -->|derive| DISC
|
|
371
|
+
CMD -->|move| REF
|
|
372
|
+
CMD -->|scaffold| QPLAN
|
|
373
|
+
CMD -->|rewrite| QSTATE
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
The project slug, directory, and branch are untouched, so history and any open
|
|
377
|
+
work continue uninterrupted. `oat_ready_for` is stamped on **both** `discovery.md`
|
|
378
|
+
and `state.md`; the quick-start recommender reads artifact readiness, so
|
|
379
|
+
consumers must preserve both. Promotion refuses rather than half-applying: a
|
|
380
|
+
non-lite project, an existing `references/lite-plan.md`, invalid authored
|
|
381
|
+
sections, an unresolved scope, or an unreadable template each return a stable
|
|
382
|
+
categorical `reason` and exit non-zero. See
|
|
383
|
+
[CLI Reference](../../reference/cli-reference.md) for the full refusal contract.
|
|
384
|
+
|
|
272
385
|
### Import lane
|
|
273
386
|
|
|
274
387
|
```mermaid
|
|
@@ -304,6 +417,10 @@ Quick lane progression:
|
|
|
304
417
|
|
|
305
418
|
`discovery.md` -> [`design.md` (optional lightweight)] -> `plan.md` -> `implementation.md`
|
|
306
419
|
|
|
420
|
+
Lite lane progression:
|
|
421
|
+
|
|
422
|
+
`plan.md` -> `implementation.md` -> `pr/*.md` (`summary.md` and documentation are opt-in)
|
|
423
|
+
|
|
307
424
|
Import lane progression:
|
|
308
425
|
|
|
309
426
|
`references/imported-plan.md` -> `plan.md` -> `implementation.md` (`spec.md`/`design.md` optional)
|
|
@@ -360,15 +477,15 @@ actionable `oat pjm init` stop instead of scaffolding implicitly. See
|
|
|
360
477
|
|
|
361
478
|
### Seeding a new project from a brainstorm
|
|
362
479
|
|
|
363
|
-
When the brainstorming destination is "promote to a new OAT project", the dispatcher confirms a project slug and
|
|
480
|
+
When the brainstorming destination is "promote to a new OAT project", the dispatcher confirms a project slug and one of three modes: `lite`, `quick`, or `spec-driven`. For Quick and Spec-Driven projects, it runs `oat project new <slug> --mode <mode>` and writes `discovery.md` directly from the brainstorming payload — Initial Request, Solution Space with approaches considered, Chosen Direction, Key Decisions, and Open Questions. It writes only `discovery.md` (never a partial `design.md`), then points to `oat-project-quick-start` or `oat-project-design` without auto-chaining. For Lite projects, it instead seeds the five sections in `plan.md`, leaves `discovery.md` and `design.md` absent, and points to `oat-project-lite`.
|
|
364
481
|
|
|
365
|
-
This is a parallel entry path into
|
|
482
|
+
This is a parallel entry path into all three lanes, not a new lane. Quick and Spec-Driven users arrive at `oat-project-quick-start` or `oat-project-design` with discovery already populated; Lite users arrive at `oat-project-lite` with the single-phase plan already seeded.
|
|
366
483
|
|
|
367
484
|
### Folding back into an active project
|
|
368
485
|
|
|
369
486
|
When `oat-brainstorm` fires while a project is active, it offers a 3-way picker before any pack-filtered destination shows up:
|
|
370
487
|
|
|
371
|
-
- **Related to the project** → fold the
|
|
488
|
+
- **Related to the project** → for Lite, fold the synthesis into `plan.md` immediately above `## Phase 1` and hand off to `oat-project-lite`; for Quick and Spec-Driven, use the most-specific upstream artifact (`design.md` if it exists, otherwise `discovery.md`) and hand off to `oat-project-quick-start` or `oat-project-plan`. Any mode with an open PR hands off to `oat-project-revise`. The fold-back commit is safety-gated: a preflight `git status --porcelain -- "$ARTIFACT_PATH"` checks for dirty state, staging is exactly `git add -- "$ARTIFACT_PATH"` (never `-A`, never globs), and the handoff prompt only prints after the scoped commit succeeds.
|
|
372
489
|
- **Independent of the project** → the active project is acknowledged but doesn't constrain the picker; brainstorm routes through its standard pack-filtered terminal-state options (new project, backlog item, idea, doc-to-path, inline).
|
|
373
490
|
- **Related but supplementary** → write a brainstorming reference file at `.oat/projects/<scope>/<project>/brainstorming/YYYY-MM-DD-<topic>.md`, alongside `pr/` and `reviews/`. No lifecycle artifact is touched.
|
|
374
491
|
|
|
@@ -17,10 +17,12 @@ Expected artifacts:
|
|
|
17
17
|
- Required (all modes): `plan.md`
|
|
18
18
|
- Required (spec-driven mode): `spec.md`, `design.md`
|
|
19
19
|
- Optional (quick/import): `spec.md`, `design.md`
|
|
20
|
+
- Not expected (lite): `discovery.md`, `spec.md`, or `design.md`
|
|
20
21
|
- Recommended (quick mode): `discovery.md`
|
|
21
22
|
- Recommended (import mode): `references/imported-plan.md`
|
|
22
23
|
- Recommended: `implementation.md` final summary
|
|
23
24
|
- Recommended: `summary.md` — pr-final treats it as the primary source for the PR Summary section and automatically refreshes it first when missing or stale
|
|
25
|
+
- Lite source row: `oat-project-pr-final` uses the plan's Summary, Decisions, and Validation Criteria plus the `implementation.md` Final Summary; it does not create `summary.md` unless lite closeout explicitly opts in
|
|
24
26
|
- Required gate for final PR: review table final row should be `passed`
|
|
25
27
|
|
|
26
28
|
## Output
|
|
@@ -173,7 +173,7 @@ This feature is opt-in and disabled by default (missing or `enabled: false`). Fo
|
|
|
173
173
|
|
|
174
174
|
Generated planning and analysis artifacts have a separate review loop from code/phase reviews.
|
|
175
175
|
|
|
176
|
-
For plans, `oat-project-plan`, `oat-project-quick-start`, and `oat-project-import-plan` run a bounded `plan.md` artifact review before marking the plan ready for implementation. The loop dispatches `oat-reviewer` in structured-output artifact mode with `scope: plan`, applies unambiguous Critical and Important artifact-local fixes, offers Medium and Minor fixes, and re-runs until clean or the retry bound is exhausted. A clean result records the `plan` row in the plan's `## Reviews` table as `passed`.
|
|
176
|
+
For plans, `oat-project-plan`, `oat-project-quick-start`, `oat-project-lite`, and `oat-project-import-plan` run a bounded `plan.md` artifact review before marking the plan ready for implementation. The loop dispatches `oat-reviewer` in structured-output artifact mode with `scope: plan`, applies unambiguous Critical and Important artifact-local fixes, offers Medium and Minor fixes, and re-runs until clean or the retry bound is exhausted. A clean result records the `plan` row in the plan's `## Reviews` table as `passed`.
|
|
177
177
|
|
|
178
178
|
For analysis artifacts, `oat-docs-analyze` and `oat-agent-instructions-analyze` run a bounded accuracy review after writing their severity-rated artifacts. The reviewer checks cited evidence, severity, and recommendations before the matching apply workflow consumes the artifact. The analysis loop updates tracking metadata to mark the artifact verified.
|
|
179
179
|
|
|
@@ -32,8 +32,14 @@ flowchart TD
|
|
|
32
32
|
FA --> FC["Fixes completed"]
|
|
33
33
|
FC --> PASSED["Review passed"]
|
|
34
34
|
PASSED --> I
|
|
35
|
+
|
|
36
|
+
LITE["Lite: batched interview\n(no discovery/spec/design)"] -. entry point .-> P
|
|
35
37
|
```
|
|
36
38
|
|
|
39
|
+
The solid chain is the spec-driven progression. Lite enters at **Plan in
|
|
40
|
+
progress** and never sets `oat_phase` to `discovery`, `spec`, or `design`;
|
|
41
|
+
quick and import projects also skip part of the leading chain.
|
|
42
|
+
|
|
37
43
|
## Phase status values
|
|
38
44
|
|
|
39
45
|
`oat_phase_status` in `state.md`:
|
|
@@ -65,6 +71,20 @@ Typical progression:
|
|
|
65
71
|
12. Revision loop (optional): `pr_open` → revise → `in_progress` → implement → `pr_open`
|
|
66
72
|
13. Complete
|
|
67
73
|
|
|
74
|
+
Lite progression:
|
|
75
|
+
|
|
76
|
+
1. Plan in progress (`oat_workflow_mode: lite`, `oat_phase: plan`)
|
|
77
|
+
2. Ready for implement (one approval; no discovery, spec, or design states)
|
|
78
|
+
3. Implement in progress (single phase, no HiLL checkpoint pauses)
|
|
79
|
+
4. Implement complete (final review passed)
|
|
80
|
+
5. PR open (`pr_open`) — lite closeout routes straight to `oat-project-pr-final`
|
|
81
|
+
6. Complete
|
|
82
|
+
|
|
83
|
+
A lite project that outgrows one sitting can move to the quick chain with `oat
|
|
84
|
+
project promote <project-path> --to quick`, which flips `oat_workflow_mode` to
|
|
85
|
+
`quick` and sets `oat_phase: discovery` with `oat_phase_status: complete`. See
|
|
86
|
+
[Lifecycle](lifecycle.md#promoting-a-lite-project-to-quick).
|
|
87
|
+
|
|
68
88
|
## Review progression
|
|
69
89
|
|
|
70
90
|
In `plan.md` Reviews table:
|