@open-agent-toolkit/cli 0.2.58 → 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/configuration.md +16 -0
- package/assets/docs/cli-utilities/workflow-gates.md +91 -6
- package/assets/docs/contributing/skills.md +27 -5
- package/assets/docs/provider-sync/commands.md +23 -0
- 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/autonomy.md +5 -2
- package/assets/docs/workflows/projects/dispatch-ceiling.md +43 -7
- package/assets/docs/workflows/projects/hill-checkpoints.md +21 -0
- package/assets/docs/workflows/projects/implementation-execution.md +10 -2
- package/assets/docs/workflows/projects/lifecycle.md +128 -10
- 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 +59 -38
- package/assets/skills/oat-project-capture/SKILL.md +2 -2
- package/assets/skills/oat-project-design/SKILL.md +10 -5
- package/assets/skills/oat-project-discover/SKILL.md +15 -9
- package/assets/skills/oat-project-document/SKILL.md +11 -1
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +59 -38
- package/assets/skills/oat-project-implement/SKILL.md +3 -3
- package/assets/skills/oat-project-implement/references/completion-and-closeout.md +149 -24
- package/assets/skills/oat-project-implement/references/dispatch-and-dry-run.md +14 -8
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +59 -38
- 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 +75 -6
- 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 +54 -11
- package/assets/skills/oat-project-plan/SKILL.md +42 -5
- package/assets/skills/oat-project-plan-writing/SKILL.md +100 -3
- package/assets/skills/oat-project-pr-final/SKILL.md +33 -7
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +59 -38
- package/assets/skills/oat-project-pr-progress/SKILL.md +3 -3
- package/assets/skills/oat-project-progress/SKILL.md +27 -3
- package/assets/skills/oat-project-promote-spec-driven/SKILL.md +3 -1
- package/assets/skills/oat-project-quick-start/SKILL.md +29 -4
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +59 -38
- package/assets/skills/oat-project-review-provide/SKILL.md +37 -11
- package/assets/skills/oat-project-review-provide-remote/SKILL.md +12 -5
- 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 +5 -2
- package/dist/commands/gate/index.d.ts.map +1 -1
- package/dist/commands/gate/index.js +102 -8
- package/dist/commands/init/index.d.ts.map +1 -1
- package/dist/commands/init/index.js +16 -1
- package/dist/commands/project/dispatch-ceiling/index.d.ts.map +1 -1
- package/dist/commands/project/dispatch-ceiling/index.js +10 -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/remove/skill/remove-skill.d.ts.map +1 -1
- package/dist/commands/remove/skill/remove-skill.js +10 -1
- package/dist/commands/shared/frontmatter.d.ts +32 -1
- package/dist/commands/shared/frontmatter.d.ts.map +1 -1
- package/dist/commands/shared/frontmatter.js +93 -0
- package/dist/commands/state/generate.d.ts.map +1 -1
- package/dist/commands/state/generate.js +23 -0
- package/dist/commands/status/index.d.ts.map +1 -1
- package/dist/commands/status/index.js +8 -1
- package/dist/commands/sync/apply.d.ts.map +1 -1
- package/dist/commands/sync/apply.js +40 -6
- package/dist/commands/sync/index.d.ts.map +1 -1
- package/dist/commands/sync/index.js +11 -17
- package/dist/commands/sync/sync.types.d.ts +6 -6
- package/dist/commands/sync/sync.types.d.ts.map +1 -1
- package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -1
- package/dist/commands/tools/shared/pack-manifest.js +2 -0
- package/dist/config/resolve.d.ts +16 -0
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +16 -8
- package/dist/engine/execute-plan.d.ts.map +1 -1
- package/dist/engine/execute-plan.js +6 -0
- package/dist/manifest/index.d.ts +2 -1
- package/dist/manifest/index.d.ts.map +1 -1
- package/dist/manifest/index.js +1 -1
- package/dist/manifest/manager.d.ts +40 -0
- package/dist/manifest/manager.d.ts.map +1 -1
- package/dist/manifest/manager.js +35 -0
- package/package.json +2 -2
|
@@ -15,6 +15,21 @@ optional bounded child for beneficial recon, isolated fanout, or specialist
|
|
|
15
15
|
work under the shared dispatch contract. The phase implementer remains
|
|
16
16
|
responsible for file boundaries, verification, and task commits.
|
|
17
17
|
|
|
18
|
+
#### Required Manual or Visual Proof Boundary
|
|
19
|
+
|
|
20
|
+
Before committing a task that declares required manual or visual proof, the
|
|
21
|
+
active phase executor must inspect its effective runtime tool catalog for an
|
|
22
|
+
available computer-use capability. Do not infer availability from planning
|
|
23
|
+
prose, configuration, or another agent's tools. Use available computer-use for
|
|
24
|
+
required visual proof and record the observed result.
|
|
25
|
+
|
|
26
|
+
When `OAT_AUTONOMOUS=1` and no autonomous executor can perform the required
|
|
27
|
+
manual or visual criterion, return `BLOCKED` with an explicit
|
|
28
|
+
`IMPLEMENT-20 unverified proof boundary`. Name the criterion and missing
|
|
29
|
+
capability, and stop before committing the task or marking the task or phase
|
|
30
|
+
complete. Never mark unavailable proof deferred-but-verified. Outside autonomy,
|
|
31
|
+
stop at the same proof boundary for operator execution.
|
|
32
|
+
|
|
18
33
|
#### Resolve and Dispatch the Phase Implementer
|
|
19
34
|
|
|
20
35
|
Before each phase:
|
|
@@ -54,7 +69,7 @@ Before each phase:
|
|
|
54
69
|
spec: {PROJECT_PATH}/spec.md
|
|
55
70
|
implementation: {PROJECT_PATH}/implementation.md
|
|
56
71
|
discovery: {PROJECT_PATH}/discovery.md
|
|
57
|
-
workflow_mode: {spec-driven|quick|import}
|
|
72
|
+
workflow_mode: {spec-driven|quick|import|lite} # lite is always a single phase
|
|
58
73
|
active_provider: {codex|claude|cursor|other}
|
|
59
74
|
phase_base_head: {PHASE_BASE_HEAD}
|
|
60
75
|
worktree: {assigned checkout}
|
|
@@ -110,7 +110,25 @@ Example:
|
|
|
110
110
|
|
|
111
111
|
### Step 2.5: Confirm Plan HiLL Checkpoints
|
|
112
112
|
|
|
113
|
-
|
|
113
|
+
#### Lite checkpoint bypass
|
|
114
|
+
|
|
115
|
+
Resolve `oat_workflow_mode` from project state before any generic checkpoint
|
|
116
|
+
field read. When `oat_workflow_mode` is `lite`, resolve checkpoint state as
|
|
117
|
+
`none` without reading or interpreting `oat_plan_hill_phases`; for other modes,
|
|
118
|
+
an empty list means every phase and therefore cannot represent lite's policy.
|
|
119
|
+
Write this plan frontmatter value:
|
|
120
|
+
|
|
121
|
+
```yaml
|
|
122
|
+
oat_auto_review_at_hill_checkpoints: false # lite: no checkpoints
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Skip the workflow preference prompt, standard checkpoint prompt, and
|
|
126
|
+
auto-review preference prompt in both interactive and autonomous runs. Continue
|
|
127
|
+
directly to Step 2.6. The standard root-owned per-phase review and final review
|
|
128
|
+
remain required; only HiLL approval pauses are absent.
|
|
129
|
+
|
|
130
|
+
For every other workflow mode, read `oat_plan_hill_phases` from
|
|
131
|
+
`"$PROJECT_PATH/plan.md"` frontmatter when present and validate it.
|
|
114
132
|
|
|
115
133
|
- **Valid format:** JSON-like array of phase IDs (e.g., `["p01","p03"]`)
|
|
116
134
|
- **Allowed pre-confirmation state:** field missing entirely on the first implementation run
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-import-plan
|
|
3
|
-
version: 1.4.
|
|
3
|
+
version: 1.4.14
|
|
4
4
|
description: Use when you have an external markdown plan to execute with OAT. Preserves the source plan and normalizes it into canonical plan.md format.
|
|
5
5
|
argument-hint: '<path-to-plan.md> [--provider codex|cursor|claude] [--project <name>]'
|
|
6
6
|
oat_gateable: true
|
|
@@ -221,6 +221,44 @@ Dispatch Profile import handling:
|
|
|
221
221
|
effort preferences.
|
|
222
222
|
- Do not generate Dispatch Profile recommendation rows during import.
|
|
223
223
|
|
|
224
|
+
### Step 3.5: Lite Offer
|
|
225
|
+
|
|
226
|
+
After normalization, count exact level-two phase headings. Offer lite only when
|
|
227
|
+
the normalized plan has exactly one `## Phase` heading and
|
|
228
|
+
`oat_plan_parallel_groups` is present as an empty list. Any additional phase or
|
|
229
|
+
any declared parallel group keeps the project in import mode without an offer.
|
|
230
|
+
|
|
231
|
+
When eligible, use AskUserQuestion with these choices:
|
|
232
|
+
|
|
233
|
+
1. **Run as lite (Recommended)** — use the single authored plan contract and
|
|
234
|
+
collapsed single-phase lifecycle.
|
|
235
|
+
2. **Keep import mode** — preserve the standard imported-plan lifecycle.
|
|
236
|
+
|
|
237
|
+
State the tradeoff verbatim: "Single-phase plans can still be multi-session
|
|
238
|
+
work; choose import mode when the author intentionally kept a longer-running
|
|
239
|
+
project in one phase."
|
|
240
|
+
|
|
241
|
+
If accepted, set an in-memory `LITE_OFFER_ACCEPTED=true` decision for the
|
|
242
|
+
remaining steps and reshape `plan.md` into the `plan-lite.md` section order:
|
|
243
|
+
|
|
244
|
+
1. Summary
|
|
245
|
+
2. Decisions
|
|
246
|
+
3. Assumptions
|
|
247
|
+
4. Out of Scope
|
|
248
|
+
5. Validation Criteria
|
|
249
|
+
6. Parallelism
|
|
250
|
+
7. the single Phase and its tasks
|
|
251
|
+
8. Reviews, Implementation Complete, and References
|
|
252
|
+
|
|
253
|
+
Lift Summary, Decisions, Assumptions, and Out of Scope from the external plan's
|
|
254
|
+
prose when present. Where prose is absent, write an explicit assumption that
|
|
255
|
+
names the missing source detail instead of leaving a template placeholder.
|
|
256
|
+
Derive Validation Criteria from the tasks' verification steps and retain their
|
|
257
|
+
commands or manual checks. Preserve the external source at
|
|
258
|
+
`references/imported-plan.md`, keep `oat_plan_source: imported`, and preserve
|
|
259
|
+
all `oat_import_*` fields; accepting lite changes execution mode, not import
|
|
260
|
+
provenance.
|
|
261
|
+
|
|
224
262
|
### Step 4: Update Plan Metadata
|
|
225
263
|
|
|
226
264
|
Set frontmatter in `"$PROJECT_PATH/plan.md"`:
|
|
@@ -295,6 +333,10 @@ Contract` from `oat-project-plan-writing`: load the current
|
|
|
295
333
|
Provider native plan mode uses this
|
|
296
334
|
same import step and inherits its result.
|
|
297
335
|
|
|
336
|
+
When the Step 3.5 lite offer was accepted, skip Step 4.25 phase-gate setup
|
|
337
|
+
entirely. Lite has one phase and no phase-gate prompts; continue directly to
|
|
338
|
+
the import-aware plan artifact review while preserving imported provenance.
|
|
339
|
+
|
|
298
340
|
If `plan.md` already contains an explicit `oat_phase_review_gate`, preserve it
|
|
299
341
|
through the shared contract without probing, prompting, or mutation. Resumed or
|
|
300
342
|
imported explicit values remain authoritative without re-prompting. Otherwise
|
|
@@ -307,6 +349,25 @@ This Phase gate review setup is independent from HiLL checkpoints. Do not read o
|
|
|
307
349
|
change HiLL fields here, and do not add a provider/model `--target` to any
|
|
308
350
|
lifecycle command.
|
|
309
351
|
|
|
352
|
+
### Step 4.35: Configure Lifecycle Gate Posture
|
|
353
|
+
|
|
354
|
+
After normalization has produced stable phase IDs and before Step 4.5 starts
|
|
355
|
+
the import-aware plan artifact review, invoke the `Shared Lifecycle Gate Posture Setup Contract` from
|
|
356
|
+
`oat-project-plan-writing`: load the current
|
|
357
|
+
`oat-project-plan-writing/SKILL.md` and follow that contract as written. This
|
|
358
|
+
runs adjacent to, but independently from, the phase gate review setup above.
|
|
359
|
+
|
|
360
|
+
If `"$PROJECT_PATH/state.md"` already contains an explicit
|
|
361
|
+
`oat_skill_gate_overrides` map, preserve it through the shared contract without
|
|
362
|
+
probing, prompting, or mutation. Otherwise let the contract probe the configured
|
|
363
|
+
gate-aware skills and offer a keep-or-disable choice for each configured gate
|
|
364
|
+
independently.
|
|
365
|
+
|
|
366
|
+
Persist only disabled choices, and only in `"$PROJECT_PATH/state.md"`. Keeping
|
|
367
|
+
every gate leaves the map absent. Never modify the shared, local, or user
|
|
368
|
+
configuration layers, and never prompt or write a new map in non-interactive
|
|
369
|
+
mode.
|
|
370
|
+
|
|
310
371
|
### Step 4.5: Run Import-Aware Plan Artifact Review Loop
|
|
311
372
|
|
|
312
373
|
Before dispatching the artifact reviewer, invoke the `Managed Dispatch
|
|
@@ -392,8 +453,10 @@ them before stopping. Never expose a partially reviewed imported plan to
|
|
|
392
453
|
|
|
393
454
|
Set `"$PROJECT_PATH/state.md"` frontmatter:
|
|
394
455
|
|
|
395
|
-
- `oat_workflow_mode: import`
|
|
456
|
+
- `oat_workflow_mode: lite` when `LITE_OFFER_ACCEPTED=true`; otherwise `oat_workflow_mode: import`
|
|
396
457
|
- `oat_workflow_origin: imported`
|
|
458
|
+
- preserve `oat_import_reference`, `oat_import_source_path`, `oat_import_provider`, and any other `oat_import_*` fields
|
|
459
|
+
- keep `oat_plan_source: imported` in `plan.md` on both branches
|
|
397
460
|
- `oat_phase: plan`
|
|
398
461
|
- `oat_phase_status: complete`
|
|
399
462
|
- `oat_current_task: null`
|
|
@@ -452,13 +515,19 @@ fi
|
|
|
452
515
|
|
|
453
516
|
Before reporting this skill as complete, run the configured gate as the final step after artifact review, state sync, dashboard refresh, and the import artifact commit:
|
|
454
517
|
|
|
455
|
-
1. Resolve the gate for this skill:
|
|
518
|
+
1. Resolve the gate for this skill with project context:
|
|
456
519
|
|
|
457
520
|
```bash
|
|
458
|
-
oat gate resolve <this-skill> --json
|
|
521
|
+
oat gate resolve <this-skill> --project "$PROJECT_PATH" --json
|
|
459
522
|
```
|
|
460
523
|
|
|
461
|
-
|
|
524
|
+
Handle all three `resolution` values explicitly:
|
|
525
|
+
- `not_configured`: no gate is configured; the skill is complete.
|
|
526
|
+
- `configured_disabled_by_project`: the operator disabled this configured gate for this project. Do not launch any process. Emit `configured but disabled by project override`, including the project path and the `projectOverride` source from the envelope, then the skill is complete. A project-disabled gate never enters the passed, missing, or failed branches, and its `configuredGate` is evidence only, never executed.
|
|
527
|
+
- `configured`: continue with the steps below, executing `effectiveGate` exactly as configured.
|
|
528
|
+
|
|
529
|
+
A null, missing, malformed, or unrecognized result is an operational failure
|
|
530
|
+
that fails closed as unresolved. Never treat it as "no gate configured."
|
|
462
531
|
|
|
463
532
|
2. Export the resolved project path into the command shell:
|
|
464
533
|
|
|
@@ -528,7 +597,7 @@ Report:
|
|
|
528
597
|
- ✅ Canonical `plan.md` generated with OAT task structure.
|
|
529
598
|
- ✅ `plan.md` metadata marks `oat_plan_source: imported`.
|
|
530
599
|
- ✅ `plan.md` records the import-aware plan artifact review row unless `workflow.autoArtifactReview.plan` was explicitly disabled.
|
|
531
|
-
- ✅ `state.md` marks `oat_workflow_mode: import
|
|
600
|
+
- ✅ `state.md` marks `oat_workflow_mode: lite` when the single-phase lite offer was accepted, otherwise `import`; imported origin and `oat_import_*` provenance remain intact.
|
|
532
601
|
- ✅ `implementation.md` is present and resumable.
|
|
533
602
|
- ✅ `oat_plan_hill_phases` left unset in frontmatter (deferred to `oat-project-implement` Step 2.5).
|
|
534
603
|
- ✅ `## Planning Checklist` items left unchecked (HiLL configuration deferred to implementation).
|
|
@@ -0,0 +1,467 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: oat-project-lite
|
|
3
|
+
version: 1.1.1
|
|
4
|
+
description: Use when a single-sitting change needs a critical interview, an approved single-phase plan, and resumable OAT implementation with minimal ceremony.
|
|
5
|
+
argument-hint: '<project-name> ["project description"]'
|
|
6
|
+
oat_gateable: true
|
|
7
|
+
disable-model-invocation: true
|
|
8
|
+
user-invocable: true
|
|
9
|
+
allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Lite Project
|
|
13
|
+
|
|
14
|
+
Create or resume a project in **lite mode** and produce one approved,
|
|
15
|
+
single-phase `plan.md` for `oat-project-implement`.
|
|
16
|
+
|
|
17
|
+
## Prerequisites
|
|
18
|
+
|
|
19
|
+
- A repository initialized for OAT (`.oat/` and `.agents/` exist).
|
|
20
|
+
- A change intended to fit one implementation sitting.
|
|
21
|
+
|
|
22
|
+
## Mode Assertion
|
|
23
|
+
|
|
24
|
+
**OAT MODE: Lite**
|
|
25
|
+
|
|
26
|
+
**Purpose:** Preserve a critical interview, explicit validation, approval,
|
|
27
|
+
resumable task commits, managed review, and a final gate while removing
|
|
28
|
+
multi-phase planning ceremony.
|
|
29
|
+
|
|
30
|
+
When `OAT_AUTONOMOUS=1`, read `references/docs/autonomy-contract.md` and keep
|
|
31
|
+
`OAT_NON_INTERACTIVE=1` set for the run. Resolve every interactive decision
|
|
32
|
+
through its `LITE-0N` row and stop only where that row declares a boundary:
|
|
33
|
+
|
|
34
|
+
- `LITE-01`: inherited dirty tree;
|
|
35
|
+
- `LITE-02`: missing project name or description;
|
|
36
|
+
- `LITE-03`: batched critical interview;
|
|
37
|
+
- `LITE-04`: escalation to quick;
|
|
38
|
+
- `LITE-05`: plan approval;
|
|
39
|
+
- `LITE-06`: dispatch-ladder scope;
|
|
40
|
+
- `LITE-07`: project dispatch policy;
|
|
41
|
+
- `LITE-08`: plan artifact-review findings; and
|
|
42
|
+
- `LITE-09`: configured exit gate; and
|
|
43
|
+
- `LITE-10`: configured lifecycle gate posture.
|
|
44
|
+
|
|
45
|
+
Record each autonomous resolution and its provenance in the artifact named by
|
|
46
|
+
the row. Never persist either autonomy environment signal.
|
|
47
|
+
|
|
48
|
+
**BLOCKED Activities:**
|
|
49
|
+
|
|
50
|
+
- No `design.md` or `spec.md` authoring.
|
|
51
|
+
- No multi-phase plan or parallel group.
|
|
52
|
+
- No implementation code changes.
|
|
53
|
+
|
|
54
|
+
**ALLOWED Activities:**
|
|
55
|
+
|
|
56
|
+
- Lite scaffolding and project metadata updates.
|
|
57
|
+
- One batched critical interview and a conditional clarification round.
|
|
58
|
+
- One single-phase plan with executable validation criteria.
|
|
59
|
+
- Plan approval, artifact review, dispatch policy resolution, and gate review.
|
|
60
|
+
|
|
61
|
+
**Self-Correction Protocol:**
|
|
62
|
+
|
|
63
|
+
- If the work cannot fit one sitting, promote the authored plan to quick mode.
|
|
64
|
+
- If a design decision is not safely resolvable, promote rather than invent it.
|
|
65
|
+
- If implementation code is about to change, stop and hand off to
|
|
66
|
+
`oat-project-implement`.
|
|
67
|
+
|
|
68
|
+
## Progress Indicators (User-Facing)
|
|
69
|
+
|
|
70
|
+
Print this banner once after entry:
|
|
71
|
+
|
|
72
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
73
|
+
OAT ▸ LITE
|
|
74
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
75
|
+
|
|
76
|
+
Use these compact progress lines:
|
|
77
|
+
|
|
78
|
+
- `[0/7] Checking inherited git state…`
|
|
79
|
+
- `[1/7] Resolving the lite project…`
|
|
80
|
+
- `[2/7] Running the critical interview…`
|
|
81
|
+
- `[3/7] Authoring and checking the single-phase plan…`
|
|
82
|
+
- `[4/7] Confirming plan approval…`
|
|
83
|
+
- `[5/7] Resolving dispatch and reviewing the artifact…`
|
|
84
|
+
- `[6/7] Running the configured gate…`
|
|
85
|
+
- `[7/7] Marking the plan ready for implementation…`
|
|
86
|
+
|
|
87
|
+
## Artifact Persistence (Required)
|
|
88
|
+
|
|
89
|
+
- Save every change to `plan.md`, `state.md`, and `implementation.md`
|
|
90
|
+
immediately. Never leave interview answers only in conversation.
|
|
91
|
+
- After Step 3 authoring, commit the scoped project artifacts before the Step
|
|
92
|
+
3.5 escalation check and before the Step 4 approval gate. Promotion must
|
|
93
|
+
consume a durable authored plan.
|
|
94
|
+
- After Step 6 records the structured review disposition, commit the same
|
|
95
|
+
scoped artifacts before Gate Execution so the gate sees a committed
|
|
96
|
+
core-artifact baseline.
|
|
97
|
+
- After a receive-eligible gate handoff, commit its receive bookkeeping. The
|
|
98
|
+
Step 7 completion transition is a separate scoped commit and runs only after
|
|
99
|
+
the gate passes or resolves.
|
|
100
|
+
- Before each scoped commit, resolve the project scope. Scope resolution fails
|
|
101
|
+
closed. A synced project uses `oat project push` with the same message;
|
|
102
|
+
another scope uses only `git add -- "$PROJECT_PATH/plan.md"
|
|
103
|
+
"$PROJECT_PATH/state.md" "$PROJECT_PATH/implementation.md"` followed by a
|
|
104
|
+
commit when the index is non-empty. Never stage unrelated paths.
|
|
105
|
+
|
|
106
|
+
## Artifact Hygiene
|
|
107
|
+
|
|
108
|
+
Artifact hygiene contract: Before finishing or committing, format every file you created or edited. Use the concrete write/fix formatting command supplied by the governing plan, task, or brief. If none is usable, discover the repository's documented write/fix command from applicable `AGENTS.md`/`CLAUDE.md` instructions and relevant package manifests; do not infer or hardcode a formatter. Prefer a file-scoped invocation when supported, and avoid rewriting unrelated files. If no command is discoverable, warn once with `no format command discovered in repo instructions; skipping`, then continue.
|
|
109
|
+
|
|
110
|
+
After formatting, run only repository checks relevant to the files changed;
|
|
111
|
+
writing lifecycle artifacts does not imply unrelated full test suites.
|
|
112
|
+
|
|
113
|
+
## Process
|
|
114
|
+
|
|
115
|
+
### Step 0 (Preflight): Inherited Git State
|
|
116
|
+
|
|
117
|
+
Before scaffolding, surface the working tree state so unrelated changes don't
|
|
118
|
+
get carried into the project workflow's bookkeeping commits.
|
|
119
|
+
|
|
120
|
+
1. Run `git status --porcelain`. If empty, continue silently.
|
|
121
|
+
2. If `.oat/sync/manifest.json` is the only entry **and** its two-character
|
|
122
|
+
status code is either `??` or made up solely of the letter `M` and blanks —
|
|
123
|
+
a plain modification, staged, unstaged, or both — commit it without asking:
|
|
124
|
+
`git add -- .oat/sync/manifest.json` then `git commit -m "chore: run sync"`.
|
|
125
|
+
Report the commit and continue. Every other code falls through, including
|
|
126
|
+
`MD`, `MT`, `AM`, `RM`, `CM`, and every unmerged state.
|
|
127
|
+
3. Otherwise, present the dirty list to the user and offer commit now, proceed
|
|
128
|
+
anyway, or abort (`LITE-01`). Note generated provider-view paths when they
|
|
129
|
+
appear. Commit now stages only the paths the user selected.
|
|
130
|
+
4. When the response channel is unavailable and `OAT_NON_INTERACTIVE=1`, apply
|
|
131
|
+
`LITE-01`: proceed without staging unrelated files. Destructive cleanup is
|
|
132
|
+
a stop boundary.
|
|
133
|
+
|
|
134
|
+
Once the dirty list has been presented, do not advance past this gate without
|
|
135
|
+
an explicit choice. The step 2 manifest-only auto-commit is not a choice point
|
|
136
|
+
and continues on its own.
|
|
137
|
+
|
|
138
|
+
### Step 0.5: Resolve Active Project or Scaffold Lite
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
PROJECT_PATH=$(oat config get activeProject 2>/dev/null || true)
|
|
142
|
+
PROJECTS_ROOT="${OAT_PROJECTS_ROOT:-$(oat config get projects.root 2>/dev/null || echo ".oat/projects/shared")}"
|
|
143
|
+
PROJECTS_ROOT="${PROJECTS_ROOT%/}"
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
If no valid active lite project exists, resolve a project name and substantive
|
|
147
|
+
description from `$ARGUMENTS`. A bare name is insufficient. Ask for the
|
|
148
|
+
missing startup input under `LITE-02`; in autonomous mode derive both only from
|
|
149
|
+
the explicit goal and stop if it is not substantive.
|
|
150
|
+
|
|
151
|
+
Create the project through the canonical scaffolder:
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
oat project new "{project-name}" --mode lite
|
|
155
|
+
PROJECT_PATH=$(oat config get activeProject)
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Confirm `state.md` reports `oat_workflow_mode: lite`, `oat_phase: plan`, and
|
|
159
|
+
`oat_phase_status: in_progress`. Do not create discovery or design artifacts.
|
|
160
|
+
|
|
161
|
+
### Step 1: Read Repository Knowledge
|
|
162
|
+
|
|
163
|
+
Read repository instructions and the minimum durable context needed for the
|
|
164
|
+
change. Start with root `AGENTS.md`/`CLAUDE.md`. If `.oat/repo/AGENTS.md`
|
|
165
|
+
exists, follow its routing into current state, decisions, and references.
|
|
166
|
+
Inspect only the code surfaces necessary to challenge the request and produce
|
|
167
|
+
an executable plan.
|
|
168
|
+
|
|
169
|
+
### Step 2: Batched Critical Interview
|
|
170
|
+
|
|
171
|
+
Present **one batched round** of critical questions covering behavior, scope,
|
|
172
|
+
constraints, decisions, assumptions, exclusions, and proof. Keep the batch
|
|
173
|
+
small and load-bearing. Wait for the complete response before proceeding
|
|
174
|
+
(`LITE-03`).
|
|
175
|
+
|
|
176
|
+
Use the interview to select exactly one plan content shape: `minimal`,
|
|
177
|
+
`product`, `technical`, or `both`. Product content is required whenever the
|
|
178
|
+
change alters user-visible behavior. Technical content is required when the
|
|
179
|
+
work crosses module boundaries, changes a data or state format, or changes a
|
|
180
|
+
contract consumed by another surface. Select `both` when both triggers apply.
|
|
181
|
+
Select `minimal` only when neither trigger applies.
|
|
182
|
+
|
|
183
|
+
Run a second round only for questions that the first round's answers created.
|
|
184
|
+
It may clarify those new ambiguities; it must not reopen the whole
|
|
185
|
+
interview. If the user says "just proceed", choose the most careful supported
|
|
186
|
+
interpretation of every open question and record those careful assumptions in
|
|
187
|
+
`plan.md`. Under autonomy, answer from repository evidence and stop on material
|
|
188
|
+
product ambiguity that the evidence cannot resolve.
|
|
189
|
+
|
|
190
|
+
### Step 3: Author the Single-Phase Plan
|
|
191
|
+
|
|
192
|
+
Write the interview result into `"$PROJECT_PATH/plan.md"` before any escalation
|
|
193
|
+
or approval decision. Preserve the lite scaffold frontmatter, including
|
|
194
|
+
`oat_template: true`, until Step 7.
|
|
195
|
+
|
|
196
|
+
The authored plan contains, in order:
|
|
197
|
+
|
|
198
|
+
1. `## Summary`
|
|
199
|
+
2. `## Decisions`
|
|
200
|
+
3. `## Product Behavior` when the selected shape is `product` or `both`
|
|
201
|
+
4. `## Technical Design` when the selected shape is `technical` or `both`
|
|
202
|
+
5. `## Assumptions`
|
|
203
|
+
6. `## Out of Scope`
|
|
204
|
+
7. `## Validation Criteria`
|
|
205
|
+
8. the required single-phase task list in the `oat-project-plan-writing`
|
|
206
|
+
grammar
|
|
207
|
+
|
|
208
|
+
In Decisions, record the selected shape and a one-line rationale tied to the
|
|
209
|
+
triggers above. Product Behavior is a numbered list of testable outcomes, not
|
|
210
|
+
implementation steps. Technical Design describes current operation and the
|
|
211
|
+
proposed changes; include data flow only when state or data crosses a boundary.
|
|
212
|
+
Use file-and-symbol references instead of line numbers. A short snippet is
|
|
213
|
+
allowed only to establish a proposed interface shape.
|
|
214
|
+
|
|
215
|
+
`minimal` fits a typo or copy-only documentation edit, a version or pin update,
|
|
216
|
+
or a semantics-preserving mechanical rename. A configuration edit that changes
|
|
217
|
+
runtime behavior is not minimal. Keep each optional section to roughly one
|
|
218
|
+
screen. If either needs more space to remove ambiguity, promote to Quick.
|
|
219
|
+
|
|
220
|
+
Every validation criterion is one bullet and names its proof as a backticked
|
|
221
|
+
command or test name, or a `manual:` visual-proof instruction. A criterion
|
|
222
|
+
without one of those checks is a defect. The task graph has exactly one phase,
|
|
223
|
+
no parallel groups, stable task IDs, declared files, a task-level implementation
|
|
224
|
+
and proof strategy, verification commands, and one commit message per task.
|
|
225
|
+
|
|
226
|
+
For each task, name the strategy, the observable risk it covers, why the
|
|
227
|
+
evidence is proportionate, and the exact command or `manual:` proof. Supported
|
|
228
|
+
strategies include test-first development, characterization-first work,
|
|
229
|
+
implementation followed by a focused regression, static or build checks, and
|
|
230
|
+
manual or computer-use visual proof. Apply these tiebreakers:
|
|
231
|
+
|
|
232
|
+
- Static or build checks alone are sufficient only when the change cannot alter
|
|
233
|
+
runtime behavior.
|
|
234
|
+
- Every behavioral change has at least one proof that fails without the change.
|
|
235
|
+
For reusable skill, template, or agent wording, a lightweight assertion in
|
|
236
|
+
the existing `skills.test.ts` suite is proportionate when removing the
|
|
237
|
+
contract makes it fail; do not create a prose-only fixture or harness.
|
|
238
|
+
- A bug fix preserves a pre-fix reproduction. Waive this only after a bounded
|
|
239
|
+
attempt proves the original environment or state unavailable; record that
|
|
240
|
+
evidence, use the strongest alternate regression control, and require
|
|
241
|
+
reviewer acceptance.
|
|
242
|
+
- A user-interface change requires visual proof. Under autonomy, use available
|
|
243
|
+
computer-use capability or stop at the `IMPLEMENT-20` proof boundary.
|
|
244
|
+
- Security, provenance, approval, receipt, publication, and other
|
|
245
|
+
assurance-sensitive contracts require reproduction-grade negative and valid
|
|
246
|
+
controls.
|
|
247
|
+
- Refactors default to characterization-first unless existing tests already
|
|
248
|
+
cover the preserved behavior. Documentation-only work may use link, spelling,
|
|
249
|
+
formatting, or build proof. Behavior-changing configuration requires
|
|
250
|
+
behavioral proof. Deletions require a negative search plus the relevant build
|
|
251
|
+
or composition check.
|
|
252
|
+
|
|
253
|
+
`oat project validate-plan` enforces proof syntax for Validation Criteria, not
|
|
254
|
+
semantic adequacy. Artifact review challenges the selected shape and strategy;
|
|
255
|
+
code review verifies that the declared evidence exists and can prove the claim.
|
|
256
|
+
|
|
257
|
+
Initialize or update `implementation.md` with the first task pointer while
|
|
258
|
+
keeping implementation in progress. Run:
|
|
259
|
+
|
|
260
|
+
```bash
|
|
261
|
+
oat project validate-plan --project-path "$PROJECT_PATH"
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
Format the authored artifacts, resolve project scope, and create the scoped
|
|
265
|
+
pre-approval commit required by Artifact Persistence. Only after that commit is
|
|
266
|
+
durable may Step 3.5 or Step 4 run.
|
|
267
|
+
|
|
268
|
+
### Step 3.5: Escalation Check
|
|
269
|
+
|
|
270
|
+
Read the now-populated and committed `plan.md`. Apply `LITE-04`:
|
|
271
|
+
|
|
272
|
+
- Promote if the task list will not fit one sitting.
|
|
273
|
+
- Promote if an implementation-affecting design decision remains unresolvable.
|
|
274
|
+
- Otherwise record why lite remains appropriate and continue.
|
|
275
|
+
|
|
276
|
+
Promotion must invoke the real command against the authored project:
|
|
277
|
+
|
|
278
|
+
```bash
|
|
279
|
+
oat project promote "$PROJECT_PATH" --to quick --json
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
On success, stop lite execution and point to `oat-project-quick-start`. The
|
|
283
|
+
promotion consumes the authored sections, so interview content is preserved.
|
|
284
|
+
Never simulate the promotion with direct file edits.
|
|
285
|
+
|
|
286
|
+
### Step 4: Single Approval Gate
|
|
287
|
+
|
|
288
|
+
This is the only approval gate. Use `AskUserQuestion` exactly once to offer:
|
|
289
|
+
|
|
290
|
+
1. Approve the recorded requirement set and plan.
|
|
291
|
+
2. Revise the plan, then return to Step 3 and persist it again.
|
|
292
|
+
3. Promote to quick mode through Step 3.5.
|
|
293
|
+
|
|
294
|
+
Under `OAT_AUTONOMOUS=1`, apply `LITE-05`: auto-confirm the recorded
|
|
295
|
+
requirement set and write the approval decision and evidence into `plan.md`.
|
|
296
|
+
Contradictory or materially incomplete requirements stop at a product-judgment
|
|
297
|
+
boundary. Do not add another approval pause later.
|
|
298
|
+
|
|
299
|
+
### Step 5: Resolve Dispatch Ceiling
|
|
300
|
+
|
|
301
|
+
Invoke the complete **Managed Dispatch Readiness and Review Contract** from
|
|
302
|
+
`oat-project-plan-writing`. Load the current `oat-project-plan-writing/SKILL.md`
|
|
303
|
+
and follow that contract as written. Resolve and, when necessary, adopt the
|
|
304
|
+
dispatch ladder before selecting a project policy. Do not copy model names into
|
|
305
|
+
the skill.
|
|
306
|
+
|
|
307
|
+
For the ladder ownership decision, apply `LITE-06`, which is identical to
|
|
308
|
+
`QS-08`: check existing user, local, then authorized shared configuration in
|
|
309
|
+
that fixed order; skip scalar-blocked candidates; adopt once; re-run the
|
|
310
|
+
preflight resolver. Stop before writing if none is compatible.
|
|
311
|
+
|
|
312
|
+
Resolve the project policy through `LITE-07`, identical to `QS-09`: preserve an
|
|
313
|
+
explicit or configured policy; unresolved non-interactive state blocks. The
|
|
314
|
+
project policy remains a named ceiling, uncapped managed selection, or host
|
|
315
|
+
inheritance, never a pinned provider target.
|
|
316
|
+
|
|
317
|
+
Run the reviewer readiness check:
|
|
318
|
+
|
|
319
|
+
```bash
|
|
320
|
+
oat project dispatch-ceiling resolve --provider "$ACTIVE_PROVIDER" --role reviewer --preflight --json
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
Lite has no workflow-preference prompt, no phase review setup step, and no
|
|
324
|
+
HiLL setup. Built-in implementation review remains unchanged.
|
|
325
|
+
|
|
326
|
+
### Step 5.5: Configure Lifecycle Gate Posture
|
|
327
|
+
|
|
328
|
+
After the complete Lite plan has stable phase IDs and before its plan artifact
|
|
329
|
+
review, invoke the `Shared Lifecycle Gate Posture Setup Contract` from the
|
|
330
|
+
shared planning contract. At this boundary, load the current
|
|
331
|
+
`oat-project-plan-writing/SKILL.md` and follow that contract as written. This
|
|
332
|
+
setup remains independent from Lite's project-aware Gate Execution and does not
|
|
333
|
+
add phase-review or HiLL setup.
|
|
334
|
+
|
|
335
|
+
Apply `LITE-10` to the shared contract's interaction. When
|
|
336
|
+
`oat_skill_gate_overrides` already exists, preserve it through the shared
|
|
337
|
+
contract without probing, prompting, or mutation. Otherwise, in interactive
|
|
338
|
+
planning, offer Keep or Disable independently for each configured gate.
|
|
339
|
+
Persist only disabled choices to `"$PROJECT_PATH/state.md"`. Never modify the
|
|
340
|
+
shared, local, or user configuration layers. In non-interactive planning,
|
|
341
|
+
preserve configured gates and do not invent or write an override.
|
|
342
|
+
|
|
343
|
+
### Step 6: Run Plan Artifact Review Loop
|
|
344
|
+
|
|
345
|
+
Invoke the `Auto Artifact-Review Loop` from `oat-project-plan-writing`. Load
|
|
346
|
+
the current `oat-project-plan-writing/SKILL.md` and follow that loop as written,
|
|
347
|
+
with:
|
|
348
|
+
|
|
349
|
+
- `target: plan`
|
|
350
|
+
- `type: artifact`
|
|
351
|
+
- `scope: plan`
|
|
352
|
+
- `artifact_path: "$PROJECT_PATH/plan.md"`
|
|
353
|
+
- `oat_output_mode: structured`
|
|
354
|
+
|
|
355
|
+
The loop is structured and adds no user pause. Resolve
|
|
356
|
+
`workflow.autoArtifactReview.plan`; only explicit `false` skips it. Keep review
|
|
357
|
+
at the current planning parent unless the shared managed-dispatch contract
|
|
358
|
+
proves the exception route is required. Accepted handles are never replaced.
|
|
359
|
+
|
|
360
|
+
Apply `LITE-08`, using the same shape as `IMPORT-08`: apply only unambiguous
|
|
361
|
+
artifact-local canonicalization fixes, never rewrite source intent, and stop
|
|
362
|
+
on unresolved Critical findings or material ambiguity. Record the actual plan
|
|
363
|
+
review row or explicit skip in `plan.md`.
|
|
364
|
+
|
|
365
|
+
Format and validate the artifacts again. Resolve scope and create the required
|
|
366
|
+
post-review scoped commit before Gate Execution. Do not mark the plan complete
|
|
367
|
+
yet; the committed baseline remains resumable and `in_progress`.
|
|
368
|
+
|
|
369
|
+
### Gate Execution
|
|
370
|
+
|
|
371
|
+
The lite exit-gate review scope is the committed `plan.md`, `state.md`, and
|
|
372
|
+
`implementation.md` bundle. It runs after Step 6 and before Step 7.
|
|
373
|
+
|
|
374
|
+
1. Resolve the gate for this skill with project context:
|
|
375
|
+
|
|
376
|
+
```bash
|
|
377
|
+
oat gate resolve <this-skill> --project "$PROJECT_PATH" --json
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
Handle all three `resolution` values explicitly:
|
|
381
|
+
- `not_configured`: no gate is configured; proceed directly to the completion steps in Step 7 below.
|
|
382
|
+
- `configured_disabled_by_project`: the operator disabled this configured gate for this project. Do not launch any process. Emit `configured but disabled by project override`, including the project path and the `projectOverride` source from the envelope, then proceed directly to the completion steps in Step 7 below. A project-disabled gate never enters the passed, missing, or failed branches, and its `configuredGate` is evidence only, never executed.
|
|
383
|
+
- `configured`: continue with the steps below, executing `effectiveGate` exactly as configured.
|
|
384
|
+
|
|
385
|
+
A null, missing, malformed, or unrecognized result is an operational failure
|
|
386
|
+
that fails closed as unresolved. Never treat it as "no gate configured."
|
|
387
|
+
|
|
388
|
+
2. Export `PROJECT_PATH`. If the stored command invokes lifecycle gate review,
|
|
389
|
+
its canonical form is:
|
|
390
|
+
|
|
391
|
+
```bash
|
|
392
|
+
oat --json gate review --project "$PROJECT_PATH" ...
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
Use global `--json` before `gate review`. Reject `oat gate
|
|
396
|
+
review ...` without the global `--json` placement. Reusable declarations
|
|
397
|
+
must not contain `--target <id>` or add it at runtime. Stop and migrate an invalid stored
|
|
398
|
+
declaration before execution; never inject or append execution-time argv.
|
|
399
|
+
|
|
400
|
+
3. When the current planning parent's model identity is available and the
|
|
401
|
+
command is `oat gate review`, export
|
|
402
|
+
`OAT_GATE_PRODUCER_IDENTITY=<model>:declared` only for that invocation.
|
|
403
|
+
Otherwise ensure it is unset. Do not persist it or alter the command.
|
|
404
|
+
4. Execute the resolved command exactly as configured. Capture stdout, stderr,
|
|
405
|
+
exit code, and structured JSON. Exit code alone never authorizes receipt.
|
|
406
|
+
5. Invoke receive only when all three conditions hold: status is `ok` or
|
|
407
|
+
`blocked`, `receiveEligible: true`, and a non-null `handoff` corroborates
|
|
408
|
+
the artifact. `receiveEligible: false` is a hard stop.
|
|
409
|
+
`targeting_correlation_failed` is never receivable. Correct and revalidate
|
|
410
|
+
`artifact_validation_failed` before receipt. Unknown, contradictory, or
|
|
411
|
+
malformed results stop.
|
|
412
|
+
6. For a validated, receive-eligible `blocked` result, apply `LITE-09`:
|
|
413
|
+
- `block`: remediate and retry up to the configured limit;
|
|
414
|
+
- `prompt`: report an unresolved human boundary;
|
|
415
|
+
- `warn`: record the validated gate failure and continue.
|
|
416
|
+
|
|
417
|
+
Operational, validation, targeting, launch, and receive failures never inherit
|
|
418
|
+
`onFailure` continuation semantics.
|
|
419
|
+
|
|
420
|
+
A gate that ends in `block` after attempts are exhausted, or at an unresolved
|
|
421
|
+
`prompt` boundary, means the completion steps below MUST NOT run; the project
|
|
422
|
+
stays `in_progress` and resumable. Persist eligible receive bookkeeping in its
|
|
423
|
+
own scoped commit. A no-gate result is not success output; it continues to
|
|
424
|
+
Step 7.
|
|
425
|
+
|
|
426
|
+
### Step 7: Mark Plan Complete and Hand Off
|
|
427
|
+
|
|
428
|
+
Run only after the configured gate passes or resolves according to its
|
|
429
|
+
validated `onFailure` policy.
|
|
430
|
+
|
|
431
|
+
Update `plan.md` atomically:
|
|
432
|
+
|
|
433
|
+
- `oat_status: complete`
|
|
434
|
+
- `oat_ready_for: oat-project-implement`
|
|
435
|
+
- `oat_phase_status: complete`
|
|
436
|
+
- `oat_template: false`
|
|
437
|
+
|
|
438
|
+
Update `state.md`:
|
|
439
|
+
|
|
440
|
+
- `oat_workflow_mode: lite`
|
|
441
|
+
- `oat_phase: plan`
|
|
442
|
+
- `oat_phase_status: complete`
|
|
443
|
+
- `oat_current_task: null`
|
|
444
|
+
- `oat_project_state_updated: "{ISO 8601 UTC timestamp}"`
|
|
445
|
+
|
|
446
|
+
Ensure `implementation.md` is present and points to the plan's first task with
|
|
447
|
+
status `in_progress`. Run `oat state refresh`, format the scoped artifacts,
|
|
448
|
+
resolve project scope, and create the separate completion commit. Then report:
|
|
449
|
+
|
|
450
|
+
```text
|
|
451
|
+
Lite plan approved and ready. Next: oat-project-implement
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
## Success Criteria
|
|
455
|
+
|
|
456
|
+
- Exactly one batched interview ran, with only a causally created conditional
|
|
457
|
+
clarification round.
|
|
458
|
+
- The plan contains Summary, Decisions, Assumptions, Out of Scope, executable
|
|
459
|
+
Validation Criteria, and exactly one sequential phase.
|
|
460
|
+
- The authored plan was committed before escalation and approval.
|
|
461
|
+
- Exactly one approval gate ran.
|
|
462
|
+
- No spec, design, phase review setup, or HiLL setup was added.
|
|
463
|
+
- Reviewer dispatch readiness and the structured artifact-review loop resolved.
|
|
464
|
+
- The configured gate saw a committed core-artifact baseline and used canonical
|
|
465
|
+
global `--json` placement without `--target`.
|
|
466
|
+
- Completion state was committed separately and routes to
|
|
467
|
+
`oat-project-implement`.
|