@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.
Files changed (78) hide show
  1. package/assets/agents/oat-phase-implementer.md +27 -4
  2. package/assets/agents/oat-reviewer.md +25 -14
  3. package/assets/bundle-metadata.json +1 -1
  4. package/assets/docs/cli-utilities/workflow-gates.md +3 -3
  5. package/assets/docs/reference/cli-reference.md +10 -3
  6. package/assets/docs/reference/oat-directory-structure.md +1 -0
  7. package/assets/docs/workflows/ideas/index.md +1 -1
  8. package/assets/docs/workflows/index.md +1 -0
  9. package/assets/docs/workflows/projects/artifacts.md +24 -3
  10. package/assets/docs/workflows/projects/hill-checkpoints.md +21 -0
  11. package/assets/docs/workflows/projects/implementation-execution.md +5 -0
  12. package/assets/docs/workflows/projects/lifecycle.md +124 -7
  13. package/assets/docs/workflows/projects/pr-flow.md +2 -0
  14. package/assets/docs/workflows/projects/reviews.md +1 -1
  15. package/assets/docs/workflows/projects/state-machine.md +20 -0
  16. package/assets/docs/workflows/skills/index.md +2 -1
  17. package/assets/public-package-versions.json +4 -4
  18. package/assets/skills/oat-brainstorm/SKILL.md +61 -12
  19. package/assets/skills/oat-docs/SKILL.md +13 -8
  20. package/assets/skills/oat-doctor/SKILL.md +3 -3
  21. package/assets/skills/oat-pjm-review-backlog/SKILL.md +2 -2
  22. package/assets/skills/oat-project-autonomous/SKILL.md +14 -9
  23. package/assets/skills/oat-project-autonomous/references/gate-inventory.md +56 -42
  24. package/assets/skills/oat-project-capture/SKILL.md +2 -2
  25. package/assets/skills/oat-project-discover/SKILL.md +6 -5
  26. package/assets/skills/oat-project-document/SKILL.md +11 -1
  27. package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +56 -42
  28. package/assets/skills/oat-project-implement/SKILL.md +3 -3
  29. package/assets/skills/oat-project-implement/references/completion-and-closeout.md +106 -15
  30. package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +56 -42
  31. package/assets/skills/oat-project-implement/references/phase-execution.md +16 -1
  32. package/assets/skills/oat-project-implement/references/plan-and-resume.md +19 -1
  33. package/assets/skills/oat-project-import-plan/SKILL.md +47 -3
  34. package/assets/skills/oat-project-lite/SKILL.md +467 -0
  35. package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +331 -0
  36. package/assets/skills/oat-project-next/SKILL.md +26 -10
  37. package/assets/skills/oat-project-plan/SKILL.md +14 -2
  38. package/assets/skills/oat-project-plan-writing/SKILL.md +6 -3
  39. package/assets/skills/oat-project-pr-final/SKILL.md +33 -7
  40. package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +56 -42
  41. package/assets/skills/oat-project-pr-progress/SKILL.md +3 -3
  42. package/assets/skills/oat-project-progress/SKILL.md +16 -3
  43. package/assets/skills/oat-project-promote-spec-driven/SKILL.md +3 -1
  44. package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +56 -42
  45. package/assets/skills/oat-project-review-provide/SKILL.md +25 -6
  46. package/assets/skills/oat-project-summary/SKILL.md +27 -3
  47. package/assets/templates/plan-lite.md +165 -0
  48. package/assets/templates/plan.md +1 -1
  49. package/assets/templates/state.md +1 -1
  50. package/dist/commands/project/index.d.ts.map +1 -1
  51. package/dist/commands/project/index.js +2 -0
  52. package/dist/commands/project/new/index.d.ts +3 -2
  53. package/dist/commands/project/new/index.d.ts.map +1 -1
  54. package/dist/commands/project/new/index.js +2 -1
  55. package/dist/commands/project/new/scaffold.d.ts +5 -3
  56. package/dist/commands/project/new/scaffold.d.ts.map +1 -1
  57. package/dist/commands/project/new/scaffold.js +38 -10
  58. package/dist/commands/project/promote/index.d.ts +2 -0
  59. package/dist/commands/project/promote/index.d.ts.map +1 -0
  60. package/dist/commands/project/promote/index.js +1 -0
  61. package/dist/commands/project/promote/promote.d.ts +47 -0
  62. package/dist/commands/project/promote/promote.d.ts.map +1 -0
  63. package/dist/commands/project/promote/promote.js +322 -0
  64. package/dist/commands/project/split/run.d.ts.map +1 -1
  65. package/dist/commands/project/split/run.js +8 -1
  66. package/dist/commands/project/validate-plan/index.d.ts.map +1 -1
  67. package/dist/commands/project/validate-plan/index.js +25 -1
  68. package/dist/commands/project/validate-plan/validate-plan.d.ts +8 -0
  69. package/dist/commands/project/validate-plan/validate-plan.d.ts.map +1 -1
  70. package/dist/commands/project/validate-plan/validate-plan.js +49 -0
  71. package/dist/commands/shared/frontmatter.d.ts +1 -1
  72. package/dist/commands/shared/frontmatter.d.ts.map +1 -1
  73. package/dist/commands/shared/frontmatter.js +1 -0
  74. package/dist/commands/state/generate.d.ts.map +1 -1
  75. package/dist/commands/state/generate.js +23 -0
  76. package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -1
  77. package/dist/commands/tools/shared/pack-manifest.js +2 -0
  78. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-phase-implementer
3
- version: 1.1.3
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 `import`;
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. Follow RED/GREEN/refactor ordering when specified.
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 design/spec/discovery;
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.1
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 Verification satisfied?**
180
- - Check if tests exist matching declared verification intent in available artifacts
181
- - If `design.md` exists, cross-reference Requirement-to-Test Mapping
182
- - If tests missing for P0 requirements: add to Critical findings
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 declares verification that can actually be run.
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. **Test coverage**
287
- - Critical paths have tests
288
- - Edge cases covered
289
- - Unhappy paths tested
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 tests for critical paths
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 tests for important paths
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)
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "oatVersion": "0.2.59"
3
+ "oatVersion": "0.2.62"
4
4
  }
@@ -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`, and
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. Without `--scope`, creation uses
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
- - `spec.md` and `design.md` are required in spec-driven mode, optional in quick/import mode. Quick mode offers a lightweight `design.md` (architecture, components, testing strategy) at a post-discovery decision point.
55
- - `plan.md` remains canonical execution artifact across all modes.
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. The target probe qualifies only
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 a mode (`quick` vs `spec-driven`) with the user, runs `oat project new <slug> --mode <mode>` to scaffold the project, and writes the new project's `discovery.md` directly from the brainstorming payload — Initial Request, Solution Space with approaches considered, Chosen Direction, Key Decisions, Open Questions. It writes `discovery.md` only (never a partial `design.md`), so the design phase keeps its full collaborative cadence and consumes the brainstorm's architectural intent from discovery's Solution Space and Chosen Direction sections during approach reaffirmation. The dispatcher stops with a pointer to `oat-project-quick-start` or `oat-project-design` — it deliberately does not auto-chain into the next phase, so the user makes that transition consciously.
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 the Spec-Driven and Quick lanes, not a new lane: the resulting project follows the normal lane it was scaffolded into. The brainstorm-as-seed step is what changes — the user arrives at `oat-project-quick-start` (or `oat-project-design`) with discovery already populated rather than starting from a blank discovery template.
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 synthesized brainstorming content back into the most-specific upstream artifact (`design.md` if it exists, otherwise `discovery.md`), commit immediately, and print a handoff prompt for the right plan-authoring skill (`oat-project-plan` for spec-driven, `oat-project-quick-start` for quick, `oat-project-revise` when an open PR exists). 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.
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: