@open-agent-toolkit/cli 0.1.55 → 0.1.60
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 +195 -238
- package/assets/docs/cli-utilities/configuration.md +7 -6
- package/assets/docs/contributing/index.md +1 -0
- package/assets/docs/contributing/smoke-testing.md +284 -0
- package/assets/docs/provider-sync/providers.md +11 -11
- package/assets/docs/provider-sync/scope-and-surface.md +2 -2
- package/assets/docs/workflows/projects/dispatch-ceiling.md +29 -26
- package/assets/docs/workflows/projects/evidence-layers.md +123 -0
- package/assets/docs/workflows/projects/implementation-execution.md +160 -406
- package/assets/docs/workflows/projects/index.md +8 -0
- package/assets/docs/workflows/projects/orchestration-model.md +190 -0
- package/assets/docs/workflows/projects/programmatic-execution.md +137 -0
- package/assets/docs/workflows/projects/review-flavors.md +129 -0
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-agent-instructions-analyze/references/docs/provider-reference.md +5 -4
- package/assets/skills/oat-agent-instructions-apply/references/docs/provider-reference.md +5 -4
- package/assets/skills/oat-dispatch-subagents/SKILL.md +6 -1
- package/assets/skills/oat-dispatch-subagents/references/record-schema.md +5 -0
- package/assets/skills/oat-project-dispatch-subagents/SKILL.md +37 -15
- package/assets/skills/oat-project-implement/SKILL.md +63 -1904
- package/assets/skills/oat-project-implement/references/completion-and-closeout.md +431 -0
- package/assets/skills/oat-project-implement/references/dispatch-and-dry-run.md +562 -0
- package/assets/skills/oat-project-implement/references/phase-execution.md +270 -0
- package/assets/skills/oat-project-implement/references/plan-and-resume.md +279 -0
- package/assets/skills/oat-project-import-plan/SKILL.md +16 -8
- package/assets/skills/oat-project-plan/SKILL.md +15 -7
- package/assets/skills/oat-project-plan-writing/SKILL.md +74 -40
- package/assets/skills/oat-project-quick-start/SKILL.md +16 -8
- package/assets/skills/oat-project-review-provide/SKILL.md +8 -5
- package/assets/skills/oat-worktree-bootstrap/SKILL.md +22 -12
- package/assets/skills/oat-worktree-bootstrap/references/worktree-conventions.md +8 -8
- package/assets/skills/oat-worktree-bootstrap-auto/SKILL.md +233 -44
- package/dist/commands/doctor/index.d.ts.map +1 -1
- package/dist/commands/doctor/index.js +7 -4
- package/dist/commands/gate/index.d.ts +9 -1
- package/dist/commands/gate/index.d.ts.map +1 -1
- package/dist/commands/gate/index.js +62 -2
- package/dist/commands/project/dispatch-ceiling/index.js +2 -2
- package/package.json +4 -4
- 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:
|
|
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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
|
15
|
-
|
|
16
|
-
- **Task boundary:**
|
|
17
|
-
|
|
18
|
-
- **
|
|
19
|
-
|
|
20
|
-
- **
|
|
21
|
-
|
|
22
|
-
- **
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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
|
-
|
|
120
|
-
and singleton groups. Invalid metadata blocks execution rather than silently
|
|
121
|
-
falling back to a different schedule.
|
|
46
|
+
## Ownership
|
|
122
47
|
|
|
123
|
-
|
|
48
|
+
### Project root
|
|
124
49
|
|
|
125
|
-
|
|
126
|
-
oat project dispatch-ceiling resolve \
|
|
127
|
-
--provider <active-provider> \
|
|
128
|
-
--preflight \
|
|
129
|
-
--json
|
|
130
|
-
```
|
|
50
|
+
The root:
|
|
131
51
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
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
|
-
|
|
137
|
-
|
|
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
|
-
|
|
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
|
-
|
|
147
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
162
|
-
|
|
163
|
-
|
|
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
|
|
89
|
+
The root supplies one scope for the whole phase:
|
|
168
90
|
|
|
169
91
|
```yaml
|
|
170
92
|
project: .oat/projects/shared/example
|
|
171
|
-
|
|
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:
|
|
178
|
-
|
|
179
|
-
|
|
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
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
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
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
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
|
-
|
|
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
|
-
|
|
171
|
+
For a plan-declared parallel group, the root:
|
|
422
172
|
|
|
423
|
-
|
|
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
|
-
|
|
426
|
-
|
|
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
|
-
|
|
433
|
-
unverified worker return without rerunning the whole phase.
|
|
185
|
+
## Codex Depth
|
|
434
186
|
|
|
435
|
-
|
|
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
|
-
|
|
192
|
+
## Accepted Launches
|
|
438
193
|
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
-
|
|
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
|
-
|
|
445
|
-
|
|
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
|
-
- [
|
|
450
|
-
|
|
451
|
-
- [
|
|
452
|
-
- [
|
|
453
|
-
- [
|
|
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.
|