@open-agent-toolkit/cli 0.1.43 → 0.1.46
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-reviewer.md +2 -2
- package/assets/config/dispatch-matrix-recommendation.json +23 -0
- package/assets/docs/cli-utilities/config-and-local-state.md +7 -0
- package/assets/docs/cli-utilities/configuration.md +104 -25
- package/assets/docs/cli-utilities/workflow-gates.md +79 -16
- package/assets/docs/contributing/code.md +10 -4
- package/assets/docs/contributing/hooks-and-safety.md +23 -0
- package/assets/docs/provider-sync/config.md +5 -1
- package/assets/docs/provider-sync/manifest-and-drift.md +6 -1
- package/assets/docs/provider-sync/providers.md +6 -3
- package/assets/docs/provider-sync/scope-and-surface.md +2 -1
- package/assets/docs/reference/oat-directory-structure.md +2 -2
- package/assets/docs/workflows/projects/dispatch-ceiling.md +110 -27
- package/assets/docs/workflows/projects/implementation-execution.md +20 -13
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-project-implement/SKILL.md +155 -58
- package/assets/skills/oat-project-plan/SKILL.md +22 -3
- package/assets/skills/oat-project-quick-start/SKILL.md +54 -23
- package/assets/templates/state.md +5 -0
- package/dist/commands/config/index.d.ts +6 -0
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +429 -20
- package/dist/commands/doctor/index.d.ts +6 -1
- package/dist/commands/doctor/index.d.ts.map +1 -1
- package/dist/commands/doctor/index.js +209 -19
- package/dist/commands/gate/index.d.ts +39 -2
- package/dist/commands/gate/index.d.ts.map +1 -1
- package/dist/commands/gate/index.js +343 -30
- package/dist/commands/internal/cursor-current-target.d.ts +37 -0
- package/dist/commands/internal/cursor-current-target.d.ts.map +1 -0
- package/dist/commands/internal/cursor-current-target.js +228 -0
- package/dist/commands/internal/index.d.ts.map +1 -1
- package/dist/commands/internal/index.js +2 -0
- package/dist/commands/project/dispatch-ceiling/index.d.ts.map +1 -1
- package/dist/commands/project/dispatch-ceiling/index.js +487 -17
- package/dist/commands/providers/codex/index.d.ts +4 -0
- package/dist/commands/providers/codex/index.d.ts.map +1 -0
- package/dist/commands/providers/codex/index.js +7 -0
- package/dist/commands/providers/codex/materialize.d.ts +5 -0
- package/dist/commands/providers/codex/materialize.d.ts.map +1 -0
- package/dist/commands/providers/codex/materialize.js +152 -0
- package/dist/commands/providers/index.d.ts +2 -2
- package/dist/commands/providers/index.d.ts.map +1 -1
- package/dist/commands/providers/index.js +4 -2
- package/dist/commands/providers/providers.types.d.ts +23 -0
- package/dist/commands/providers/providers.types.d.ts.map +1 -1
- package/dist/commands/shared/codex-strays.d.ts.map +1 -1
- package/dist/commands/shared/codex-strays.js +11 -1
- package/dist/commands/status/index.d.ts +4 -1
- package/dist/commands/status/index.d.ts.map +1 -1
- package/dist/commands/status/index.js +1 -1
- package/dist/commands/sync/index.d.ts.map +1 -1
- package/dist/commands/sync/index.js +1 -1
- package/dist/commands/sync/sync.types.d.ts +4 -1
- package/dist/commands/sync/sync.types.d.ts.map +1 -1
- package/dist/config/dispatch-ceiling-preset.d.ts +4 -0
- package/dist/config/dispatch-ceiling-preset.d.ts.map +1 -1
- package/dist/config/dispatch-ceiling-preset.js +3 -0
- package/dist/config/dispatch-policy-options.d.ts +20 -0
- package/dist/config/dispatch-policy-options.d.ts.map +1 -0
- package/dist/config/dispatch-policy-options.js +96 -0
- package/dist/config/oat-config.d.ts +21 -5
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +118 -10
- package/dist/config/resolve.js +12 -0
- package/dist/manifest/manifest.types.d.ts +12 -12
- package/dist/providers/ceiling/registry.d.ts +7 -5
- package/dist/providers/ceiling/registry.d.ts.map +1 -1
- package/dist/providers/ceiling/registry.js +32 -5
- package/dist/providers/codex/codec/config-merge.d.ts +6 -0
- package/dist/providers/codex/codec/config-merge.d.ts.map +1 -1
- package/dist/providers/codex/codec/config-merge.js +7 -0
- package/dist/providers/codex/codec/materialize.d.ts +16 -0
- package/dist/providers/codex/codec/materialize.d.ts.map +1 -0
- package/dist/providers/codex/codec/materialize.js +57 -0
- package/dist/providers/codex/codec/shared.d.ts +1 -0
- package/dist/providers/codex/codec/shared.d.ts.map +1 -1
- package/dist/providers/codex/codec/shared.js +9 -1
- package/dist/providers/codex/codec/sync-extension.d.ts +7 -1
- package/dist/providers/codex/codec/sync-extension.d.ts.map +1 -1
- package/dist/providers/codex/codec/sync-extension.js +183 -46
- package/dist/providers/identity/availability.d.ts +45 -0
- package/dist/providers/identity/availability.d.ts.map +1 -0
- package/dist/providers/identity/availability.js +353 -0
- package/dist/providers/identity/family.d.ts +13 -0
- package/dist/providers/identity/family.d.ts.map +1 -0
- package/dist/providers/identity/family.js +32 -0
- package/dist/providers/identity/provenance.d.ts +21 -0
- package/dist/providers/identity/provenance.d.ts.map +1 -0
- package/dist/providers/identity/provenance.js +65 -0
- package/dist/providers/identity/stamp.d.ts +35 -0
- package/dist/providers/identity/stamp.d.ts.map +1 -0
- package/dist/providers/identity/stamp.js +171 -0
- package/package.json +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Dispatch Policy
|
|
3
|
-
description: 'How OAT dispatch policy works: managed
|
|
3
|
+
description: 'How OAT dispatch policy works: managed tiers, dispatch matrix cells, ordered routes, producer provenance, legacy compatibility, and provider-specific enforcement.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Dispatch Policy
|
|
@@ -21,20 +21,27 @@ dispatch policy terminology.
|
|
|
21
21
|
For raw config keys see [Configuration](../../cli-utilities/configuration.md);
|
|
22
22
|
for execution-time behavior see [Implementation Execution](implementation-execution.md).
|
|
23
23
|
|
|
24
|
+
Multi-family providers such as Cursor use the same abstract policy names, but
|
|
25
|
+
their concrete model values come from a dispatch matrix under
|
|
26
|
+
`workflow.dispatchCeiling.providers.*`. A matrix cell can be a single value, a
|
|
27
|
+
per-tier value, or an ordered route for escalation.
|
|
28
|
+
|
|
24
29
|
## Policy Choices
|
|
25
30
|
|
|
26
|
-
| Policy | Mode | Codex
|
|
27
|
-
| ----------------------- | ------- |
|
|
28
|
-
| `Economy` | managed | `medium`
|
|
29
|
-
| `Balanced` | managed | `high`
|
|
30
|
-
| `High` | managed | `xhigh`
|
|
31
|
-
| `Frontier` | managed | `xhigh`
|
|
32
|
-
| `Uncapped` | managed | none
|
|
33
|
-
| `Inherit Host Defaults` | inherit | none
|
|
31
|
+
| Policy | Mode | Codex cap | Claude target | Meaning |
|
|
32
|
+
| ----------------------- | ------- | --------- | ------------- | -------------------------------------------- |
|
|
33
|
+
| `Economy` | managed | `medium` | `sonnet` | Lower-cost managed cap |
|
|
34
|
+
| `Balanced` | managed | `high` | `sonnet` | Default managed cap |
|
|
35
|
+
| `High` | managed | `xhigh` | `opus` | High-capability managed cap |
|
|
36
|
+
| `Frontier` | managed | `xhigh` | `fable` | Top managed tier currently exposed by OAT |
|
|
37
|
+
| `Uncapped` | managed | none | none | OAT selects preferred controls without a cap |
|
|
38
|
+
| `Inherit Host Defaults` | inherit | none | none | OAT does not select model/effort controls |
|
|
34
39
|
|
|
35
40
|
`Uncapped` is explicit managed state. It is not represented by omitting policy
|
|
36
41
|
state. Existing projects with absent legacy ceiling state remain unresolved or
|
|
37
|
-
legacy-compatible; they do not silently become managed `Uncapped`.
|
|
42
|
+
legacy-compatible; they do not silently become managed `Uncapped`. `Unresolved`
|
|
43
|
+
is a deferral state for planning/preflight only. Implementation preflight must
|
|
44
|
+
resolve a managed policy or inherit/default mode before work starts.
|
|
38
45
|
|
|
39
46
|
## Config Shapes
|
|
40
47
|
|
|
@@ -85,13 +92,55 @@ oat_dispatch_policy:
|
|
|
85
92
|
Legacy compatibility keys remain readable:
|
|
86
93
|
|
|
87
94
|
- `workflow.dispatchCeiling.preset`
|
|
88
|
-
- `workflow.dispatchCeiling.providers
|
|
89
|
-
- `workflow.dispatchCeiling.providers
|
|
95
|
+
- `workflow.dispatchCeiling.providers.<provider>`
|
|
96
|
+
- `workflow.dispatchCeiling.providers.<provider>.<tier>`
|
|
90
97
|
- `oat_dispatch_ceiling`
|
|
91
98
|
|
|
92
99
|
Legacy preset names map into the managed ladder: `cost-conscious` maps to
|
|
93
100
|
`Economy`, `balanced` maps to `Balanced`, and `maximum` maps to `High`.
|
|
94
101
|
|
|
102
|
+
## Dispatch Matrix
|
|
103
|
+
|
|
104
|
+
The dispatch matrix maps the abstract policy rung (`economy`, `balanced`,
|
|
105
|
+
`high`, `frontier`) to concrete provider controls. Existing bare Codex and
|
|
106
|
+
Claude values remain valid, and multi-family providers can use tier cells:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
oat config adopt dispatch-matrix --shared
|
|
110
|
+
oat config set workflow.dispatchCeiling.providers.cursor.balanced composer-2.5 --shared
|
|
111
|
+
oat config set workflow.dispatchCeiling.providers.cursor.high gpt-5.5-xhigh --shared
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
For ordered escalation, write a route in config JSON. The resolver selects the
|
|
115
|
+
floor entry at escalation level `0` and advances by route entry when the
|
|
116
|
+
implementation/fix loop escalates:
|
|
117
|
+
|
|
118
|
+
```json
|
|
119
|
+
{
|
|
120
|
+
"workflow": {
|
|
121
|
+
"dispatchCeiling": {
|
|
122
|
+
"providers": {
|
|
123
|
+
"cursor": {
|
|
124
|
+
"high": [
|
|
125
|
+
"composer-2.5",
|
|
126
|
+
{ "harness": "cursor", "model": "gpt-5.5-xhigh" }
|
|
127
|
+
],
|
|
128
|
+
"frontier": [
|
|
129
|
+
{ "harness": "cursor", "model": "gpt-5.5-xhigh" },
|
|
130
|
+
{ "harness": "cursor", "model": "fable-5" }
|
|
131
|
+
]
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Project `state.md` may carry only sparse project-specific matrix overrides
|
|
140
|
+
under `oat_dispatch_policy.matrix`. The full reusable matrix belongs in user,
|
|
141
|
+
shared, or local config so switching harnesses mid-project re-resolves the same
|
|
142
|
+
abstract policy through the active provider column.
|
|
143
|
+
|
|
95
144
|
## How Resolution Works
|
|
96
145
|
|
|
97
146
|
Before dispatching a subagent, the orchestrator calls:
|
|
@@ -105,6 +154,7 @@ For implementer or fix dispatch, pass the preferred runtime control:
|
|
|
105
154
|
```bash
|
|
106
155
|
oat project dispatch-ceiling resolve --provider codex --role implementer --preferred high --json
|
|
107
156
|
oat project dispatch-ceiling resolve --provider claude --role implementer --preferred opus --json
|
|
157
|
+
oat project dispatch-ceiling resolve --provider cursor --role implementer --preferred high --escalation-level 0 --json
|
|
108
158
|
```
|
|
109
159
|
|
|
110
160
|
The resolver returns the resolved policy, optional cap, source, provider default
|
|
@@ -114,6 +164,9 @@ Selection modes:
|
|
|
114
164
|
|
|
115
165
|
- `capped` - implementer/fix dispatch selects `min(preferred, cap)`.
|
|
116
166
|
- `uncapped` - implementer/fix dispatch selects the preferred value.
|
|
167
|
+
- `matrix-pinned` - a matrix cell supplied the selected provider value.
|
|
168
|
+
- `prompt-persisted` - an interactive prompt filled a missing cell and persisted it.
|
|
169
|
+
- `escalation-target` - an ordered route entry supplied the selected target.
|
|
117
170
|
- `review-target` - reviewer dispatch targets a configured cap when one exists.
|
|
118
171
|
- `no-review-target` - managed uncapped reviewer dispatch has no configured
|
|
119
172
|
target and falls back to the base/unpinned reviewer.
|
|
@@ -122,23 +175,53 @@ Selection modes:
|
|
|
122
175
|
|
|
123
176
|
## Provider Behavior
|
|
124
177
|
|
|
125
|
-
| | Codex
|
|
126
|
-
| ----------------- |
|
|
127
|
-
| Managed mechanism |
|
|
128
|
-
| Axis | effort (`low < medium < high < xhigh`)
|
|
129
|
-
| Capped policy |
|
|
130
|
-
| Uncapped | preferred
|
|
131
|
-
| Inherit/default | base/unpinned role follows provider default
|
|
132
|
-
|
|
133
|
-
Codex uses
|
|
134
|
-
dogfooding.
|
|
135
|
-
|
|
136
|
-
|
|
178
|
+
| | Codex | Claude Code | Cursor / model-arg providers | Unsupported provider |
|
|
179
|
+
| ----------------- | ----------------------------------------------------- | --------------------------------------- | ---------------------------- | -------------------- |
|
|
180
|
+
| Managed mechanism | Materialized roles with explicit `model` and `effort` | Task `model` argument | Task/CLI `model` argument | None |
|
|
181
|
+
| Axis | model plus effort (`low < medium < high < xhigh`) | model (`haiku < sonnet < opus < fable`) | opaque model slug | None |
|
|
182
|
+
| Capped policy | materialized target selected up to cap | selected Task model up to cap | selected matrix cell | advisory/unsupported |
|
|
183
|
+
| Uncapped | preferred materialized target, no cap | preferred Task model, no cap | preferred matrix cell | advisory/unsupported |
|
|
184
|
+
| Inherit/default | base/unpinned role follows provider default | omit `model` | omit model selection | normal behavior |
|
|
185
|
+
|
|
186
|
+
Codex uses materialized roles because per-call model/effort controls were
|
|
187
|
+
unreliable in dogfooding. The resolver compiles an explicit model+effort target
|
|
188
|
+
into a role name such as `oat-phase-implementer-gpt-5-6-terra-xhigh`, and the
|
|
189
|
+
Codex spawn payload uses that role as `agent_type`. For managed `Uncapped`, OAT
|
|
190
|
+
still selects the preferred materialized target. If the Codex preferred value is
|
|
191
|
+
an effort rather than a matrix tier, OAT looks up the highest managed tier that
|
|
192
|
+
compiles to that effort before resolving the matrix target; for example,
|
|
193
|
+
`--preferred xhigh` resolves through the `frontier` matrix cell. The dispatching
|
|
194
|
+
host should verify whether upward effort selection is actually honored in the
|
|
195
|
+
current session. The old effort-only Codex pins are not the managed dispatch
|
|
196
|
+
contract for new projects.
|
|
137
197
|
|
|
138
198
|
Claude Code uses the per-call Task `model` argument. It has no OAT-managed
|
|
139
199
|
per-dispatch effort axis, so dispatch logs use `effort_axis=not-applicable`.
|
|
140
200
|
`Frontier` maps to Claude `fable`.
|
|
141
201
|
|
|
202
|
+
Cursor and other model-arg providers use matrix values as opaque slugs. OAT
|
|
203
|
+
validates availability with provider oracles when possible, but tier semantics
|
|
204
|
+
come from the configured matrix, not from a built-in model catalog. For Cursor,
|
|
205
|
+
that validation checks subagent Task eligibility, not just broad catalog
|
|
206
|
+
visibility, because a slug can appear in `cursor-agent models` and still be
|
|
207
|
+
rejected for subagent dispatch.
|
|
208
|
+
|
|
209
|
+
## Producer Provenance
|
|
210
|
+
|
|
211
|
+
Dispatch notes use a parseable single-line stamp so later gates can identify
|
|
212
|
+
the producer family:
|
|
213
|
+
|
|
214
|
+
```text
|
|
215
|
+
Dispatch: scope=p06 action=implementation role=implementer producer=gpt-5.5-xhigh provenance=declared model_axis=selected:gpt-5.5-xhigh effort_axis=not-applicable dispatch_policy=high dispatch_ceiling=xhigh target=cursor
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
`producer` is the resolved model slug when OAT knows it, otherwise `unknown`.
|
|
219
|
+
`provenance` is one of `declared`, `observed`, `inferred`, or `unknown`.
|
|
220
|
+
Concrete same-harness model arguments can be declared. Codex materialized
|
|
221
|
+
model+effort roles declare `model_axis=selected:<model>` and
|
|
222
|
+
`effort_axis=selected:<effort>` from resolver output, but producer identity
|
|
223
|
+
remains `unknown` unless an observed or inferred model identity is available.
|
|
224
|
+
|
|
142
225
|
## Implementer, Fix, and Reviewer Behavior
|
|
143
226
|
|
|
144
227
|
For implementer and fix dispatches:
|
|
@@ -164,9 +247,9 @@ say `provider-default`.
|
|
|
164
247
|
Examples:
|
|
165
248
|
|
|
166
249
|
```text
|
|
167
|
-
Dispatch policy: balanced; selected=high; cap=high (codex, enforced — variant oat-phase-implementer-high)
|
|
168
|
-
Dispatch policy: high; selected=xhigh; cap=xhigh (codex, enforced — variant oat-reviewer-xhigh)
|
|
169
|
-
Dispatch policy: uncapped; selected=xhigh; cap=none (codex, enforced — variant oat-phase-implementer-xhigh)
|
|
250
|
+
Dispatch policy: balanced; selected=high; cap=high (codex, enforced — variant oat-phase-implementer-gpt-5-6-terra-high)
|
|
251
|
+
Dispatch policy: high; selected=xhigh; cap=xhigh (codex, enforced — variant oat-reviewer-gpt-5-6-terra-xhigh)
|
|
252
|
+
Dispatch policy: uncapped; selected=xhigh; cap=none (codex, enforced — variant oat-phase-implementer-gpt-5-6-sol-xhigh)
|
|
170
253
|
Dispatch policy: inherit host defaults; selected=none; cap=none (codex, advisory — base role follows provider default)
|
|
171
254
|
Dispatch policy: frontier; selected=fable; cap=fable (claude, enforced — Task model arg)
|
|
172
255
|
```
|
|
@@ -70,16 +70,16 @@ Runtime dispatch reads the resolved policy and provider-specific selection only.
|
|
|
70
70
|
For Codex, provider default effort is displayed when available but is not treated as managed `Uncapped` or as a cap. Provider defaults apply only to explicit inherit/default behavior or base/unpinned fallback paths.
|
|
71
71
|
|
|
72
72
|
```text
|
|
73
|
-
Dispatch policy: balanced (codex, managed capped —
|
|
73
|
+
Dispatch policy: balanced (codex, managed capped — materialized-role)
|
|
74
74
|
Resolved cap: high
|
|
75
75
|
Source: project state
|
|
76
76
|
Provider default effort: medium
|
|
77
|
-
Note: OAT will use
|
|
77
|
+
Note: OAT will use resolver-returned materialized Codex role names up to high. Base/unpinned roles resolve through the provider default only on fallback paths.
|
|
78
78
|
```
|
|
79
79
|
|
|
80
80
|
**Enforcement modes** (from resolver):
|
|
81
81
|
|
|
82
|
-
- `enforced` — the adapter compiled concrete dispatch args and the provider accepted them (Codex:
|
|
82
|
+
- `enforced` — the adapter compiled concrete dispatch args and the provider accepted them (Codex: materialized model+effort roles; Claude: Task `model` parameter).
|
|
83
83
|
- `advisory` — the provider is supported but no value resolved, or an upgrade request was not honored by the provider.
|
|
84
84
|
- `unsupported` — the provider has no registered adapter; the policy is informational only. Dispatch follows provider behavior.
|
|
85
85
|
|
|
@@ -112,7 +112,14 @@ Model and effort are separate axes. Each axis logs one of these states:
|
|
|
112
112
|
- `not-applicable` — this host/API has no meaningful per-dispatch concept for that axis.
|
|
113
113
|
- `host-auto` — exceptional; the host uses that axis internally but the orchestrator cannot read or pin it.
|
|
114
114
|
|
|
115
|
-
In Codex, implementation and fix dispatch classify a preferred effort (`low`, `medium`, `high`, or `xhigh`) and pass it to `oat project dispatch-ceiling resolve --provider codex --role implementer --preferred <effort>`. For capped managed policies, the resolver selects `min(preferred, resolved_cap)` and returns
|
|
115
|
+
In Codex, implementation and fix dispatch classify a preferred effort (`low`, `medium`, `high`, or `xhigh`) and pass it to `oat project dispatch-ceiling resolve --provider codex --role implementer --preferred <effort>`. For capped managed policies, the resolver selects `min(preferred, resolved_cap)` and returns a materialized role name compiled from an explicit model+effort target. For managed `Uncapped`, the resolver selects the preferred materialized role with no cap. For inherit/default mode, it returns no materialized role and OAT uses the base/unpinned role. Reviewer dispatch targets the configured cap only when a capped managed policy exists; managed `Uncapped` and inherit/default use base `oat-reviewer` fallback.
|
|
116
|
+
|
|
117
|
+
Because Codex preferred values are effort names while dispatch matrix cells are
|
|
118
|
+
keyed by OAT tiers, managed `Uncapped` maps preferred efforts through the
|
|
119
|
+
managed tier table before resolving matrix targets. For example, `xhigh` maps to
|
|
120
|
+
the highest matching tier, `frontier`, so `--preferred xhigh` can resolve a
|
|
121
|
+
`frontier` Codex matrix target such as
|
|
122
|
+
`oat-phase-implementer-gpt-5-6-sol-xhigh`.
|
|
116
123
|
|
|
117
124
|
In Claude Code, implementation and fix dispatch classify a preferred model tier (`haiku`, `sonnet`, `opus`, or `fable`) and pass it to `oat project dispatch-ceiling resolve --provider claude --role implementer --preferred <model> --orchestrator-tier <current-orchestrator-tier>`. Capped policies select `min(preferred, resolved_cap)`, managed `Uncapped` selects the preferred model, and inherit/default omits `model`. Reviewer dispatch passes a `model` only when the resolver returns one. The separate effort axis is `not-applicable`.
|
|
118
125
|
|
|
@@ -135,9 +142,9 @@ Selected effort: medium
|
|
|
135
142
|
Policy source: repo config
|
|
136
143
|
Provider default effort: high
|
|
137
144
|
Selection mode: capped
|
|
138
|
-
Model axis:
|
|
145
|
+
Model axis: selected:gpt-5.6-terra
|
|
139
146
|
Effort axis: selected:medium
|
|
140
|
-
Dispatch target: oat-phase-implementer-medium
|
|
147
|
+
Dispatch target: oat-phase-implementer-gpt-5-6-terra-medium
|
|
141
148
|
Rationale: shared TypeScript/config substrate; high preferred due to integration risk, capped by configured policy.
|
|
142
149
|
|
|
143
150
|
OAT Dispatch: Phase p03 review
|
|
@@ -148,9 +155,9 @@ Selected effort: xhigh
|
|
|
148
155
|
Policy source: project state
|
|
149
156
|
Provider default effort: medium
|
|
150
157
|
Selection mode: review-target
|
|
151
|
-
Model axis:
|
|
158
|
+
Model axis: selected:gpt-5.6-terra
|
|
152
159
|
Effort axis: selected:xhigh
|
|
153
|
-
Dispatch target: oat-reviewer-xhigh
|
|
160
|
+
Dispatch target: oat-reviewer-gpt-5-6-terra-xhigh
|
|
154
161
|
Rationale: reviewer runs at the configured policy cap for deterministic quality gate behavior.
|
|
155
162
|
|
|
156
163
|
OAT Dispatch: Phase p03 implementation
|
|
@@ -162,10 +169,10 @@ Selected effort: xhigh
|
|
|
162
169
|
Policy source: project state
|
|
163
170
|
Provider default effort: medium
|
|
164
171
|
Selection mode: uncapped
|
|
165
|
-
Model axis:
|
|
172
|
+
Model axis: selected:gpt-5.6-sol
|
|
166
173
|
Effort axis: selected:xhigh
|
|
167
|
-
Dispatch target: oat-phase-implementer-xhigh
|
|
168
|
-
Rationale: high-risk phase; managed uncapped policy allows the preferred
|
|
174
|
+
Dispatch target: oat-phase-implementer-gpt-5-6-sol-xhigh
|
|
175
|
+
Rationale: high-risk phase; managed uncapped policy allows the preferred materialized target.
|
|
169
176
|
|
|
170
177
|
OAT Dispatch: Phase p04 implementation
|
|
171
178
|
Host: Other
|
|
@@ -203,10 +210,10 @@ Add Dispatch Profile rows only when the user has an explicit constraint or prefe
|
|
|
203
210
|
For each phase in the plan (whether sequential or inside a parallel group):
|
|
204
211
|
|
|
205
212
|
1. **Select runtime dispatch control** for the phase and log the chosen control plus rationale.
|
|
206
|
-
2. **Dispatch the selected implementer role** with a Phase Scope block (project path, phase id, artifact paths, commit convention, workflow mode, and dispatch context when known). In Codex,
|
|
213
|
+
2. **Dispatch the selected implementer role** with a Phase Scope block (project path, phase id, artifact paths, commit convention, workflow mode, and dispatch context when known). In Codex, selected model+effort axes use the resolver-returned materialized role name, such as `oat-phase-implementer-gpt-5-6-terra-xhigh`. Base `oat-phase-implementer` means provider-default/unpinned fallback.
|
|
207
214
|
3. **Receive the summary:** `DONE | DONE_WITH_CONCERNS | NEEDS_CONTEXT | BLOCKED`.
|
|
208
215
|
- `BLOCKED` stops the run and surfaces the blocker to the user.
|
|
209
|
-
4. **Dispatch the selected reviewer role** with a Review Scope block (phase id, commit range, optional files-changed hint, and dispatch context). The commit range is authoritative; the file list is only orientation metadata. In Codex, pass this as a self-contained packet with `fork_context: false`; use
|
|
216
|
+
4. **Dispatch the selected reviewer role** with a Review Scope block (phase id, commit range, optional files-changed hint, and dispatch context). The commit range is authoritative; the file list is only orientation metadata. In Codex, pass this as a self-contained packet with `fork_context: false`; use the resolver-returned materialized reviewer role only for capped managed policies, and use base `oat-reviewer` for managed `Uncapped` or inherit/default. In Claude Code, pass a review `model` only when the resolver returns one and always record `effort_axis=not-applicable`. If the reviewer does not conclude on the first wait, poll once more, then send a concise "return now with current findings" nudge before falling back inline for that phase.
|
|
210
217
|
5. **Parse the verdict:** zero Critical + zero Important findings → `pass`; otherwise `fail`.
|
|
211
218
|
6. **On fail, run the bounded fix loop** (see below).
|
|
212
219
|
7. **Update artifacts** (`implementation.md`, `plan.md` review row, `state.md`) and make the mandatory bookkeeping commit.
|