@open-agent-toolkit/cli 0.1.54 → 0.1.59

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 (45) hide show
  1. package/assets/agents/oat-phase-implementer.md +195 -238
  2. package/assets/docs/cli-utilities/configuration.md +7 -6
  3. package/assets/docs/contributing/index.md +1 -0
  4. package/assets/docs/contributing/smoke-testing.md +284 -0
  5. package/assets/docs/provider-sync/providers.md +11 -11
  6. package/assets/docs/provider-sync/scope-and-surface.md +2 -2
  7. package/assets/docs/workflows/projects/dispatch-ceiling.md +29 -26
  8. package/assets/docs/workflows/projects/evidence-layers.md +123 -0
  9. package/assets/docs/workflows/projects/implementation-execution.md +160 -406
  10. package/assets/docs/workflows/projects/index.md +8 -0
  11. package/assets/docs/workflows/projects/orchestration-model.md +190 -0
  12. package/assets/docs/workflows/projects/programmatic-execution.md +137 -0
  13. package/assets/docs/workflows/projects/review-flavors.md +129 -0
  14. package/assets/docs/workflows/skills/repo-improve.md +14 -0
  15. package/assets/public-package-versions.json +4 -4
  16. package/assets/skills/oat-agent-instructions-analyze/references/docs/provider-reference.md +5 -4
  17. package/assets/skills/oat-agent-instructions-apply/references/docs/provider-reference.md +5 -4
  18. package/assets/skills/oat-dispatch-subagents/SKILL.md +6 -1
  19. package/assets/skills/oat-dispatch-subagents/references/record-schema.md +5 -0
  20. package/assets/skills/oat-project-dispatch-subagents/SKILL.md +37 -15
  21. package/assets/skills/oat-project-implement/SKILL.md +63 -1904
  22. package/assets/skills/oat-project-implement/references/completion-and-closeout.md +431 -0
  23. package/assets/skills/oat-project-implement/references/dispatch-and-dry-run.md +715 -0
  24. package/assets/skills/oat-project-implement/references/phase-execution.md +270 -0
  25. package/assets/skills/oat-project-implement/references/plan-and-resume.md +279 -0
  26. package/assets/skills/oat-project-import-plan/SKILL.md +16 -8
  27. package/assets/skills/oat-project-plan/SKILL.md +15 -7
  28. package/assets/skills/oat-project-plan-writing/SKILL.md +74 -40
  29. package/assets/skills/oat-project-quick-start/SKILL.md +16 -8
  30. package/assets/skills/oat-project-review-provide/SKILL.md +8 -5
  31. package/assets/skills/oat-repo-improve/SKILL.md +17 -2
  32. package/assets/skills/oat-repo-improve/references/audit-playbook.md +6 -0
  33. package/assets/skills/oat-worktree-bootstrap/SKILL.md +22 -12
  34. package/assets/skills/oat-worktree-bootstrap/references/worktree-conventions.md +8 -8
  35. package/assets/skills/oat-worktree-bootstrap-auto/SKILL.md +233 -44
  36. package/dist/commands/docs/index-generate/index.d.ts.map +1 -1
  37. package/dist/commands/docs/index-generate/index.js +10 -5
  38. package/dist/commands/doctor/index.d.ts.map +1 -1
  39. package/dist/commands/doctor/index.js +7 -4
  40. package/dist/commands/gate/index.d.ts +9 -1
  41. package/dist/commands/gate/index.d.ts.map +1 -1
  42. package/dist/commands/gate/index.js +62 -2
  43. package/dist/commands/project/dispatch-ceiling/index.js +2 -2
  44. package/package.json +4 -4
  45. package/assets/skills/oat-worktree-bootstrap-auto/scripts/bootstrap.sh +0 -236
@@ -1,454 +1,208 @@
1
1
  ---
2
2
  title: Implementation Execution
3
- description: 'Phase coordination, exact task-worker dispatch, named maximum ceilings, reviews, bounded fixes, plan-declared parallel worktrees, and resumption in oat-project-implement.'
3
+ description: How OAT executes plans with root-owned phase agents, independent phase review, bounded fixes, and worktree fan-out.
4
4
  ---
5
5
 
6
6
  # Implementation Execution
7
7
 
8
- This page describes how `oat-project-implement` executes a plan after planning
9
- has established a complete ordered candidate ladder and a project named
10
- ceiling.
8
+ `oat-project-implement` owns the project lifecycle. It dispatches one phase
9
+ implementer per phase, validates that agent's task commits, dispatches the
10
+ independent phase reviewer, routes blocking findings back to the phase agent,
11
+ and updates project state.
11
12
 
12
13
  ## Quick Look
13
14
 
14
- - **Phase boundary:** one phase coordinator owns dependency order, integration,
15
- and the phase summary.
16
- - **Task boundary:** the coordinator dispatches one exact task worker per task.
17
- Each worker receives one bounded Task Scope and creates one verified commit.
18
- - **Named maximum:** a project or narrower phase named ceiling is a maximum over
19
- configured candidates, not an exact model-family preference.
20
- - **Serial worktree rule:** task workers run serially in the same worktree.
21
- Parallelism is limited to plan-declared phase worktrees.
22
- - **Fail closed:** a missing, above-ceiling, or uninvokable managed candidate
23
- blocks. OAT does not substitute the coordinator target, a base role, or a
24
- provider default.
25
-
26
- ## Execution Layers
27
-
28
- ### Reusable dispatch boundary
29
-
30
- OAT ships two internal contracts for lifecycle skills that need subagents:
31
-
32
- - `oat-project-dispatch-subagents` translates resolved project, phase/task,
33
- gate, write-boundary, commit, and worktree policy into a generic dispatch
34
- request.
35
- - `oat-dispatch-subagents` performs provider-neutral capability and
36
- authorization checks, catalog-aware selection, launch evidence, and
37
- recovery.
38
-
39
- The project adapter composes with the general engine; the engine never reads
40
- project state. Lifecycle callers remain responsible for phase scheduling,
41
- task boundaries, review and fix-loop policy, project artifacts, commits, and
42
- worktree fan-in. This is the extension contract for lifecycle dispatch—not a
43
- license for the general engine to mutate project bookkeeping or reinterpret
44
- worker results. Individual lifecycle skills may adopt the contract
45
- incrementally; their own reviewed process contracts remain authoritative until
46
- that wiring is explicit.
47
-
48
- ### Orchestrator
49
-
50
- The root `oat-project-implement` workflow resolves project state, chooses Tier
51
- 1 or Tier 2 mechanics, builds the phase schedule, dispatches coordinators and
52
- reviewers, owns the review/fix loop, updates artifacts, and performs worktree
53
- fan-in.
54
-
55
- ### Phase coordinator
56
-
57
- A Phase Scope selects coordinator mode in `oat-phase-implementer`. The
58
- coordinator reads the phase artifacts once, retains task dependency order,
59
- selects one exact configured target for each task, waits for and verifies every
60
- worker result and commit, then performs phase-wide integration verification and
61
- self-review.
62
-
63
- The coordinator must not implement ordinary plan tasks itself. Its execution
64
- target is not a task target and cannot be reused as a fallback.
65
-
66
- ### Task worker
67
-
68
- A Task Scope selects worker mode in the same canonical agent instructions. The
69
- worker implements exactly one task, runs that task's verification, creates one
70
- commit, returns a compact result, and stops. It does not dispatch another worker
71
- or coordinate the phase.
72
-
73
- This dual-mode contract lets every materialized Codex
74
- `oat-phase-implementer-<model>-<effort>` role act as either the coordinator or
75
- the exact bounded worker without recursive coordinator dispatch.
76
-
77
- ## Tier Selection
78
-
79
- At skill start, OAT detects whether the host can run the coordinator,
80
- task-worker, and reviewer routes:
81
-
82
- - **Tier 1:** native provider subagent dispatch.
83
- - **Tier 2:** guarded sequential coordinator mechanics when native role
84
- selection is unavailable.
85
-
86
- Tier 2 does not authorize inline task implementation by the coordinator. A
87
- managed task still requires an exact registered role, an exact provider model
88
- argument, or a fresh Codex child pinned to the resolver-returned model and
89
- effort. If the current context cannot dispatch that worker, implementation
90
- blocks.
91
-
92
- Codex may require one explicit authorization prompt for multi-agent dispatch.
93
- That approval covers coordinators, task workers, and reviewers for the run. Tier
94
- mechanics remain locked after selection; they never change the target contract.
95
-
96
- ## Dispatch Readiness
97
-
98
- Planning through spec-driven, quick-start, import-plan, or provider-plan-via-
99
- import performs the same readiness setup:
100
-
101
- 1. Inspect the effective ordered candidate ladders.
102
- 2. If incomplete, show the complete bundled recommendation and ask whether
103
- `--shared`, `--local`, or `--user` should own adoption.
104
- 3. Recheck after non-destructive adoption. Remaining gaps block readiness.
105
- 4. Record the active project named maximum in project `state.md`, not user
106
- config.
107
- 5. Optionally record a narrower phase named maximum in plan Dispatch Profile.
108
-
109
- See [Dispatch Policy](dispatch-ceiling.md) for ladder shapes and ownership.
110
-
111
- ### Validating plan metadata
112
-
113
- Before building the phase schedule, implementation validates plan parallelism:
114
-
115
- ```bash
116
- oat project validate-plan --project-path .oat/projects/shared/example
15
+ - **Phase boundary:** one phase implementer directly executes every planned task
16
+ in dependency order.
17
+ - **Task boundary:** each task still produces exactly one bounded, verified
18
+ commit.
19
+ - **Review boundary:** the root dispatches one independent reviewer after the
20
+ phase report.
21
+ - **Fix boundary:** blocking findings return to the original phase handle when
22
+ possible.
23
+ - **Optional nesting:** a phase agent may dispatch bounded recon, fanout, or
24
+ specialist work when that materially helps. Ordinary tasks do not require a
25
+ third tier.
26
+ - **Parallelism:** plan-declared phases may run concurrently in separate
27
+ worktrees. Tasks inside one phase remain serial.
28
+
29
+ Tasks execute serially in one worktree for the phase.
30
+
31
+ ```mermaid
32
+ flowchart LR
33
+ Root["Project root\nlifecycle owner"] --> P["Phase implementer\none per phase"]
34
+ P --> T1["Task 1\nbounded commit"]
35
+ P --> T2["Task 2\nbounded commit"]
36
+ P -. optional benefit-driven .-> N["Recon / specialist child"]
37
+
38
+ P --> Report["Phase report\nverification + commits"]
39
+ Report --> Root
40
+ Root --> R["Independent phase reviewer"]
41
+ R -->|pass| Book["Bookkeeping + next phase"]
42
+ R -->|blocking findings| Fix["Resume phase implementer\nbounded fix scope"]
43
+ Fix --> R2["Fresh root-owned review round"]
117
44
  ```
118
45
 
119
- The command rejects malformed groups, unknown phase IDs, duplicate membership,
120
- and singleton groups. Invalid metadata blocks execution rather than silently
121
- falling back to a different schedule.
46
+ ## Ownership
122
47
 
123
- Before phase work, implementation runs provider preflight:
48
+ ### Project root
124
49
 
125
- ```bash
126
- oat project dispatch-ceiling resolve \
127
- --provider <active-provider> \
128
- --preflight \
129
- --json
130
- ```
50
+ The root:
131
51
 
132
- An unresolved non-interactive preflight blocks. Managed `Uncapped` and
133
- `Inherit Host Defaults` are explicit modes; omitted policy state is not an
134
- implicit fallback.
52
+ - resolves the active project, execution tier, dispatch policy, and phase
53
+ schedule;
54
+ - selects and launches the phase implementer;
55
+ - validates the phase report, commit range, file boundaries, and worktree
56
+ cleanliness;
57
+ - selects and launches the phase reviewer;
58
+ - owns retry limits, review disposition, worktree fan-in, HiLL checkpoints, and
59
+ tracking-artifact commits; and
60
+ - runs external phase gates and final closeout.
135
61
 
136
- For a managed Codex implementer, preflight also resolves the effective
137
- `agents.max_depth`. Native `root (0) → phase coordinator (1) → task worker (2)`
138
- execution requires a depth of at least `2`. Missing, invalid, or lower values
139
- block before dispatch and identify the owning scope:
62
+ The root does not implement phase tasks while an accepted phase launch owns
63
+ that scope.
140
64
 
141
- - Project scope: run `oat sync --scope project`
142
- - User scope: run `oat sync --scope user`
143
- - Single-role repair: rerun `oat providers codex materialize` with the required
144
- agent name, model, effort, and matching scope
65
+ ### Phase implementer
145
66
 
146
- Project preflight may inherit a valid higher user depth, but remediation never
147
- writes across the project/user boundary.
67
+ The phase implementer receives one `Phase Scope`, reads the relevant artifacts
68
+ once, and directly executes each task in plan order. For every task it:
148
69
 
149
- ## Resolve the Effective Named Maximum
70
+ 1. records the pre-task HEAD;
71
+ 2. implements only the declared task files;
72
+ 3. runs task verification;
73
+ 4. self-checks requirements and scope before commit;
74
+ 5. creates exactly one task commit; and
75
+ 6. verifies the commit, file boundary, tests, and clean worktree.
150
76
 
151
- For each phase, the orchestrator determines the task maximum:
77
+ After all tasks, it runs phase-wide verification and returns a compact report.
78
+ It does not dispatch the phase reviewer or mutate project bookkeeping.
152
79
 
153
- 1. Read project `state.md:oat_dispatch_policy.policy`.
154
- 2. Read the phase's optional Dispatch Profile row.
155
- 3. An explicit `economy`, `balanced`, `high`, or `frontier` phase value narrows
156
- the project maximum and records `task_ceiling_source: phase`.
157
- 4. Blank, absent, or `auto` uses the project maximum and records
158
- `task_ceiling_source: project`.
159
- 5. Reject an unknown phase tier or one above the project maximum.
80
+ ### Phase reviewer
160
81
 
161
- Under a High maximum, configured Economy, Balanced, and High candidates remain
162
- eligible. Different tasks in the same phase can therefore use different lower
163
- candidates without changing project state.
82
+ The root sends the reviewer a fresh scope containing the authoritative phase
83
+ commit range, task IDs and boundaries, project artifacts, and verification
84
+ evidence. The review passes with zero Critical and zero Important findings.
85
+ Medium and Minor findings are recorded without blocking the phase.
164
86
 
165
87
  ## Phase Scope
166
88
 
167
- The orchestrator sends one coordinator a Phase Scope:
89
+ The root supplies one scope for the whole phase:
168
90
 
169
91
  ```yaml
170
92
  project: .oat/projects/shared/example
171
- phase: p02
93
+ phase_id: p02
172
94
  mode: implement
173
95
  artifact_paths:
174
96
  plan: .oat/projects/shared/example/plan.md
175
97
  design: .oat/projects/shared/example/design.md
98
+ spec: .oat/projects/shared/example/spec.md
176
99
  implementation: .oat/projects/shared/example/implementation.md
177
- workflow_mode: quick
178
- active_provider: codex
179
- project_ceiling_tier: high
180
- phase_ceiling_tier: balanced
181
- task_ceiling_tier: balanced
182
- task_ceiling_source: phase
100
+ workflow_mode: spec-driven
101
+ phase_base_head: abc123
102
+ worktree: /path/to/p02-worktree
183
103
  commit_convention: 'feat({scope}): {description}'
184
- coordinator_target: oat-phase-implementer-gpt-5-6-terra-high
185
- ```
186
-
187
- The coordinator target starts the coordinator only. It is never inherited by a
188
- task.
189
-
190
- ## Per-Task Selection
191
-
192
- For every task in dependency order, the coordinator classifies only that
193
- bounded task, chooses one exact candidate at or below the named maximum, and
194
- calls the resolver with invocation-only `--ceiling-tier`.
195
-
196
- ```bash
197
- # Codex
198
- oat project dispatch-ceiling resolve \
199
- --provider codex \
200
- --role implementer \
201
- --ceiling-tier balanced \
202
- --candidate-model gpt-5.6-terra \
203
- --candidate-effort medium \
204
- --project-path .oat/projects/shared/example \
205
- --json
206
-
207
- # Claude
208
- oat project dispatch-ceiling resolve \
209
- --provider claude \
210
- --role implementer \
211
- --ceiling-tier balanced \
212
- --candidate-model sonnet \
213
- --json
214
-
215
- # Cursor
216
- oat project dispatch-ceiling resolve \
217
- --provider cursor \
218
- --role implementer \
219
- --ceiling-tier balanced \
220
- --candidate-model 'opaque:model/balanced [v2]' \
221
- --json
222
- ```
223
-
224
- The override accepts `economy`, `balanced`, `high`, or `frontier`. It applies
225
- only to that resolver call and never writes config or project state. JSON
226
- reports `source: invocation` while `providers.<provider>.cellSource` identifies
227
- the config layer that owns the candidate.
228
-
229
- The coordinator requires the requested candidate, `selection.candidateTier`,
230
- `selection.ceilingTier`, exact target, and dispatch arguments to agree. A
231
- candidate above the maximum or absent from the configured ladder blocks.
232
-
233
- ## Exact Provider Invocation
234
-
235
- Build the complete host payload before writing dispatch logs:
236
-
237
- - **Codex:** use `providers.codex.dispatchArgs.variant` as the actual
238
- `agent_type`. An accepted launch with that exact materialized role is
239
- authoritative evidence of the configured invocation for coordinators and
240
- task workers. A fresh Codex child pinned to `selection.target.model` and
241
- `selection.target.effort` is permitted only after an actual native
242
- role-selection rejection; missing self-reporting or model/effort telemetry
243
- does not justify the fallback. An accepted child, including one that later
244
- returns `BLOCKED`, is a task outcome and never triggers another pinned-child
245
- fallback.
246
- - **Claude:** pass `providers.claude.dispatchArgs.model` as the actual Task
247
- `model`. Its separate effort axis is `not-applicable`.
248
- - **Cursor:** pass `providers.cursor.dispatchArgs.model` byte-for-byte as the
249
- actual invocation model. The string is opaque; do not normalize it or infer
250
- family, effort, cost, or capability from its spelling. That opaque value is
251
- the enforced model argument.
252
-
253
- If exact controls cannot be applied, fail closed. A transient retry reuses the
254
- same complete provider payload. Substantive escalation re-resolves another
255
- configured candidate within the same named maximum and bounded retry budget.
256
-
257
- ## Dispatch Reports During Execution
258
-
259
- Every implementation, fix, and review resolver call supplies explicit report
260
- context:
261
-
262
- ```text
263
- --report-scope <phase-or-task> --report-action <implementation|fix|review>
264
- ```
265
-
266
- The completed JSON must contain `dispatchReport.schemaVersion: 1` before the
267
- provider invocation begins. The coordinator reads the requested candidate,
268
- candidate tier, ceiling, exact selected target, requested controls, configured
269
- defaults, and runtime identity from that report as distinct fields. It does not
270
- infer any of them from a materialized role name or opaque Cursor string.
271
-
272
- The human dispatch block is rendered from the report. The formal `Dispatch:`
273
- line is a compatibility view derived from the same report through the dispatch
274
- stamp adapter. It is not a second schema and must not be assembled by hand.
275
- Configured defaults and configured gate invocation remain distinct from runtime
276
- identity; when runtime identity is not observed, the report says so without
277
- weakening exact requested model or effort controls.
278
-
279
- After constructing the complete payload, the launcher records the selected
280
- target and requested model/effort controls in the report. Those configured
281
- invocation fields are launcher-owned and derive from resolver output plus the
282
- actual payload; worker output cannot populate or overwrite them. Optional
283
- coordinator or worker self-report remains non-authoritative runtime evidence.
284
- Runtime attestation, when available, is separate host-generated metadata rather
285
- than an agent claim.
286
-
287
- ## Task Scope and Commit Verification
288
-
289
- Each worker receives only one task:
290
-
291
- ```yaml
292
- mode: task-worker
293
- task_id: p02-t03
294
- task_name: Add correlation validation
295
- task_plan: |
296
- Implement only p02-t03 using its RED/GREEN steps.
297
- file_boundary:
298
- - packages/cli/src/commands/gate/index.ts
299
- - packages/cli/src/commands/gate/index.test.ts
300
- verification:
301
- - pnpm --filter @open-agent-toolkit/cli exec vitest run src/commands/gate/index.test.ts
302
- commit_convention: 'feat(gate): validate correlation'
303
- ceiling_tier: balanced
304
- ceiling_source: phase
305
- dispatch_target: oat-phase-implementer-gpt-5-6-terra-medium
306
- dispatch_args:
307
- agent_type: oat-phase-implementer-gpt-5-6-terra-medium
308
- ```
309
-
310
- The Task Scope never contains the whole phase task list. Before dispatch, the
311
- coordinator records `PRE_TASK_HEAD`. After the worker returns, it verifies:
312
-
313
- - returned task ID and terminal result
314
- - verification status
315
- - reported commit equals current `HEAD`
316
- - exactly one new commit follows `PRE_TASK_HEAD`
317
- - changed paths stay inside `file_boundary`
318
- - the worktree is clean
319
-
320
- Only then does it select the next candidate. Workers run one at a time,
321
- serially in the same worktree.
322
-
323
- ## Phase Integration and Review
324
-
325
- After all task commits are verified, the coordinator runs phase-wide
326
- verification and integration self-review without editing ordinary task files.
327
- Its summary records each task's exact target, result, commit, and verification.
328
-
329
- The root orchestrator then dispatches the phase reviewer:
330
-
331
- - A capped managed reviewer uses the final candidate at its configured review
332
- ceiling.
333
- - Codex uses the exact materialized reviewer role or a fresh pinned child.
334
- - Claude and Cursor bind the exact resolver-returned model argument.
335
- - Managed `Uncapped` and explicit inherit/default retain their documented base
336
- reviewer behavior.
337
- - Timeout retries preserve the exact role or complete model payload.
338
-
339
- Inline review is allowed only with verified equivalent current-host model and
340
- effort controls. That exception is limited to explicit inherit or
341
- managed-uncapped base-role behavior; capped managed review never downgrades
342
- inline. If a review timeout occurs, retry once with the same exact role or
343
- pinned model payload. If exact dispatch still cannot conclude, fail closed and
344
- block.
345
-
346
- The review commit range is authoritative. Zero Critical and zero Important
347
- findings pass; otherwise the bounded fix loop begins.
348
-
349
- ## Bounded Fix Loop
350
-
351
- `oat_orchestration_retry_limit` defaults to `2` and accepts `0` through `5`.
352
- For each retry:
353
-
354
- 1. Group findings into bounded one-task fix scopes.
355
- 2. Reuse the phase coordinator in fix mode.
356
- 3. Resolve one exact candidate per fix under the same named maximum.
357
- 4. Dispatch and verify one fix worker at a time.
358
- 5. Re-dispatch the reviewer over the updated range.
359
-
360
- The coordinator does not apply fixes itself. Retry exhaustion stops sequential
361
- execution; in a parallel phase group, the failed phase is excluded and its
362
- worktree is preserved for diagnosis.
363
-
364
- ## Plan-Declared Parallelism
365
-
366
- Parallelism applies across independent phases, not tasks in one worktree:
367
-
368
- ```yaml
369
- oat_plan_parallel_groups: [['p02', 'p03'], ['p04', 'p05']]
104
+ request_id: dispatch-unique-id
105
+ dispatch_target: oat-phase-implementer-gpt-5-6-terra-high
106
+ selection_reason: native-catalog
107
+ candidates_considered:
108
+ - oat-phase-implementer-gpt-5-6-terra-high
370
109
  ```
371
110
 
372
- - One worktree and one coordinator are created per phase.
373
- - Coordinators in separate declared worktrees may run concurrently.
374
- - Every coordinator still dispatches its task workers serially.
375
- - Phases outside groups run sequentially in plan order.
376
- - Groups themselves fan in before the next group starts.
377
-
378
- ### Parallel group flow
379
-
380
- 1. Bootstrap each worktree with `oat-worktree-bootstrap-auto` from the current
381
- orchestration HEAD.
382
- 2. Verify every worktree HEAD before dispatch. Any bootstrap/base mismatch
383
- degrades the whole group to sequential target-preserving execution.
384
- 3. Dispatch one phase coordinator per worktree.
385
- 4. Wait for terminal phase results.
386
- 5. Merge passing phases back in plan order with integration verification after
387
- each merge.
388
- 6. Preserve excluded worktrees and record them in Outstanding Items.
389
- 7. Clean merged worktrees, commit bookkeeping, then evaluate HiLL checkpoints.
390
-
391
- If merge and cherry-pick both conflict, the orchestrator dispatches a bounded
392
- conflict-resolution subagent. It does not resolve the conflict in the root
393
- context. An unresolved or verification-failing conflict stops fan-in.
394
-
395
- ## Phase Review Gate and HiLL
396
-
397
- Phase gate review is independent from HiLL: a configured passing gate continues
398
- automatically, while a HiLL checkpoint pauses for human approval. For the final
399
- phase, approval-aware post-implementation sequences run pre-approval work only
400
- after final review and post-approval work only after the recorded approval.
401
-
402
- After standard review passes and bookkeeping is committed, an enabled
403
- `oat_phase_review_gate` may run a target-neutral external review for the phase.
404
- Passing artifacts are still received for durable disposition; blocking
405
- findings return through the bounded fix loop. Reusable lifecycle gate commands
406
- declare the project but do not pin a provider target.
407
-
408
- HiLL pauses remain phase boundaries. They run only after the phase or parallel
409
- group is integrated, reviewed, and tracked.
410
-
411
- ## Dry Run
412
-
413
- ```bash
414
- oat-project-implement --dry-run
111
+ The phase target controls the phase agent. It does not require the same target
112
+ for optional nested work or review. Those launches resolve independently under
113
+ their own role policy.
114
+
115
+ ## Dispatch Ceilings
116
+
117
+ A project or phase named ceiling is a maximum over the configured ordered
118
+ candidate ladder, not a fixed family preference. The root selects one exact
119
+ phase implementer target at or below that maximum. Review selection uses the
120
+ configured review ceiling, not a narrower phase task ceiling.
121
+ The root passes the recorded phase maximum through invocation-only
122
+ `--ceiling-tier`; it does not rewrite layered configuration.
123
+
124
+ Optional nested work also resolves an exact bounded target. If no nested work is
125
+ needed, OAT does not probe or require third-tier capacity.
126
+
127
+ Provider controls remain exact: Codex uses
128
+ `providers.codex.dispatchArgs.variant`, Claude uses
129
+ `providers.claude.dispatchArgs.model`, and Cursor treats
130
+ `providers.cursor.dispatchArgs.model` as an opaque, byte-for-byte enforced model
131
+ argument.
132
+ For Cursor, opaque selection is enforced as a byte-for-byte model arg.
133
+
134
+ See [Dispatch Policy](dispatch-ceiling.md) for configuration and
135
+ [Orchestration Model](orchestration-model.md) for the complete role map.
136
+
137
+ ## Fix Continuity
138
+
139
+ When review finds Critical or Important issues, the root resumes the original
140
+ phase handle in `fix` mode with:
141
+
142
+ - the review artifact and bounded findings;
143
+ - the previous phase report;
144
+ - the original dispatch `request_id`; and
145
+ - a continuation event.
146
+
147
+ If a successfully completed phase handle is unavailable, the root may launch at
148
+ most one fresh phase agent with the same exact target and bounded fix scope.
149
+ The new dispatch record links to the original `request_id` through the existing
150
+ `continuation_events` field. This is a new fix scope, not replacement of an
151
+ accepted failed launch and not a new schema version.
152
+
153
+ ```mermaid
154
+ sequenceDiagram
155
+ participant Root
156
+ participant Phase as Phase implementer
157
+ participant Review as Phase reviewer
158
+
159
+ Root->>Phase: Phase Scope (request_id=A)
160
+ Phase-->>Root: DONE + task commits
161
+ Root->>Review: Review phase commit range
162
+ Review-->>Root: Critical / Important findings
163
+ Root->>Phase: Resume A in fix mode
164
+ Phase-->>Root: Fix commit + verification
165
+ Root->>Review: New independent review round
166
+ Review-->>Root: Pass
415
167
  ```
416
168
 
417
- Dry-run performs preflight and plan validation, resolves the phase schedule and
418
- named maxima, and prints planned coordinator/worktree routing. It does not
419
- dispatch coordinators or workers, create worktrees, or modify files.
169
+ ## Parallel Phase Groups
420
170
 
421
- ## Resumption
171
+ For a plan-declared parallel group, the root:
422
172
 
423
- On re-invocation:
173
+ 1. records the orchestration HEAD;
174
+ 2. creates one worktree per phase through `oat-worktree-bootstrap-auto`;
175
+ 3. verifies ownership registration and the expected base;
176
+ 4. dispatches one phase implementer per worktree concurrently;
177
+ 5. owns each phase review and fix loop;
178
+ 6. merges passing phases in plan order;
179
+ 7. runs integration verification after each merge; and
180
+ 8. cleans merged worktrees.
424
181
 
425
- 1. Read `implementation.md`, `plan.md`, and `state.md`.
426
- 2. Advance a stale pointer to the first incomplete task.
427
- 3. Cross-check the latest bookkeeping commit with Git.
428
- 4. Resume an incomplete coordinator at the next unverified task commit.
429
- 5. Re-dispatch a missing phase reviewer for the current committed phase range.
430
- 6. Report leftover parallel worktrees before resuming or cleaning them.
182
+ Containment, ownership, base, or fixture-readiness failure in smoke mode aborts
183
+ the run. It never authorizes replacement or sequential degradation.
431
184
 
432
- The one-task commit boundary lets resumption distinguish completed work from an
433
- unverified worker return without rerunning the whole phase.
185
+ ## Codex Depth
434
186
 
435
- ## State and Artifact Updates
187
+ Default execution needs the root-to-phase-agent depth. `agents.max_depth >= 2`
188
+ is useful capability for optional phase-agent nesting, but it is not a default
189
+ topology preflight requirement. OAT may still materialize a higher depth floor
190
+ so recon or specialist fanout is available when justified.
436
191
 
437
- After a phase or parallel group completes, `oat-project-implement` updates:
192
+ ## Accepted Launches
438
193
 
439
- - `implementation.md`: task outcomes, exact targets, commits, verification,
440
- phase summary, review results, and deviations
441
- - `plan.md`: task status and review lifecycle
442
- - `state.md`: current task, last commit, phase status, and timestamp
194
+ Once a launch is accepted, its terminal result is authoritative. Timeout,
195
+ interruption, `BLOCKED`, or missing self-report does not authorize a replacement
196
+ route. Only explicit pre-start rejection can select another route.
443
197
 
444
- It creates a separate bookkeeping commit after implementation commits. Legacy
445
- `oat_execution_mode: subagent-driven` is ignored and removed on the next write.
198
+ The exception is `invalid-run-abort`: external containment or integrity
199
+ evidence proves the whole run invalid, so the runner cancels owned handles and
200
+ stops without treating cancellation as a child outcome.
446
201
 
447
202
  ## Related
448
203
 
449
- - [Dispatch Policy](dispatch-ceiling.md) - candidate ladders, named maxima, and
450
- exact provider resolution.
451
- - [Lifecycle](lifecycle.md) - implementation in the full project flow.
452
- - [Artifacts](artifacts.md) - plan/state shapes and parallel groups.
453
- - [Reviews](reviews.md) - standard and external phase reviews.
454
- - [HiLL Checkpoints](hill-checkpoints.md) - phase pause semantics.
204
+ - [Orchestration Model](orchestration-model.md)
205
+ - [Dispatch Policy](dispatch-ceiling.md)
206
+ - [Review Flavors](review-flavors.md)
207
+ - [Programmatic Execution](programmatic-execution.md)
208
+ - [Evidence Layers](evidence-layers.md)
@@ -15,6 +15,10 @@ Projects are where the workflow layer becomes concrete: lifecycle phases, `state
15
15
  - [Design Modes](design-modes.md) - How full design balances collaborative, selective collaborative, and draft-and-review interaction.
16
16
  - [HiLL Checkpoints](hill-checkpoints.md) - Human-in-the-Loop Lifecycle configuration and approval behavior.
17
17
  - [Dispatch Policy](dispatch-ceiling.md) - Managed capped tiers, managed Uncapped, Inherit Host Defaults, and provider-specific enforcement.
18
+ - [Orchestration Model](orchestration-model.md) - The layered dispatch model: roles, selection flow, and per-harness topology.
19
+ - [Review Flavors](review-flavors.md) - The four review flavors and who resolves each one's target.
20
+ - [Evidence Layers](evidence-layers.md) - The three-layer dispatch evidence model behind records and smoke verification.
21
+ - [Programmatic Execution](programmatic-execution.md) - Per-harness headless/CLI execution surfaces and where OAT uses them.
18
22
  - [Project Artifacts](artifacts.md) - What lives in `state.md`, `discovery.md`, `plan.md`, `implementation.md`, and related files.
19
23
  - [Implementation Execution](implementation-execution.md) - Phase dispatch, runtime selection, review/fix loop, and dry-run behavior.
20
24
  - [Project Splitting](splitting.md) - How broad discoveries or brainstorms become coordination parents and child projects.
@@ -48,6 +52,10 @@ This sub-section is the deep technical surface for how tracked OAT projects exec
48
52
  - [Design Modes](design-modes.md) - How full design balances collaborative, selective collaborative, and draft-and-review interaction.
49
53
  - [HiLL Checkpoints](hill-checkpoints.md) - Human-in-the-Loop Lifecycle configuration and approval behavior.
50
54
  - [Dispatch Policy](dispatch-ceiling.md) - Managed capped tiers, managed Uncapped, Inherit Host Defaults, legacy dispatch-ceiling compatibility, and provider-specific enforcement.
55
+ - [Orchestration Model](orchestration-model.md) - The layered dispatch model: roles, selection flow, and per-harness topology.
56
+ - [Review Flavors](review-flavors.md) - The four review flavors and who resolves each one's target.
57
+ - [Evidence Layers](evidence-layers.md) - The three-layer dispatch evidence model behind records and smoke verification.
58
+ - [Programmatic Execution](programmatic-execution.md) - Per-harness headless/CLI execution surfaces and where OAT uses them.
51
59
  - [Artifacts](artifacts.md) - What lives in `state.md`, `discovery.md`, `plan.md`, `implementation.md`, and related files.
52
60
  - [Project Splitting](splitting.md) - How broad discoveries or brainstorms become coordination parents and child projects.
53
61
  - [State Machine](state-machine.md) - Lifecycle and review status transitions across a project.