@open-agent-toolkit/cli 0.1.72 → 0.1.74
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/README.md +1 -0
- package/assets/config/dispatch-matrix-recommendation.json +13 -17
- package/assets/docs/cli-utilities/configuration.md +42 -60
- package/assets/docs/cli-utilities/index.md +1 -0
- package/assets/docs/cli-utilities/project-log.md +183 -0
- package/assets/docs/cli-utilities/workflow-gates.md +38 -2
- package/assets/docs/provider-sync/providers.md +15 -17
- package/assets/docs/reference/cli-reference.md +1 -0
- package/assets/docs/workflows/projects/artifacts.md +1 -1
- package/assets/docs/workflows/projects/dispatch-ceiling.md +29 -33
- package/assets/docs/workflows/projects/implementation-execution.md +7 -4
- package/assets/docs/workflows/projects/lifecycle.md +4 -3
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-dispatch-subagents/SKILL.md +1 -1
- package/assets/skills/oat-dispatch-subagents/references/provider-cursor.md +27 -15
- package/assets/skills/oat-project-autonomous/SKILL.md +1 -1
- package/assets/skills/oat-project-autonomous/references/gate-inventory.md +4 -3
- package/assets/skills/oat-project-complete/SKILL.md +60 -1
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +4 -3
- package/assets/skills/oat-project-implement/SKILL.md +18 -2
- package/assets/skills/oat-project-implement/references/completion-and-closeout.md +17 -15
- package/assets/skills/oat-project-implement/references/dispatch-and-dry-run.md +15 -9
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +4 -3
- package/assets/skills/oat-project-implement/references/phase-execution.md +11 -5
- package/assets/skills/oat-project-import-plan/SKILL.md +30 -8
- package/assets/skills/oat-project-plan/SKILL.md +30 -8
- package/assets/skills/oat-project-plan-writing/SKILL.md +12 -9
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +4 -3
- package/assets/skills/oat-project-quick-start/SKILL.md +30 -8
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +4 -3
- package/assets/skills/oat-project-review-provide/SKILL.md +19 -11
- package/assets/skills/oat-project-review-provide-remote/SKILL.md +27 -4
- package/assets/skills/oat-project-summary/SKILL.md +122 -18
- package/assets/templates/project-log.md +47 -0
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +41 -0
- package/dist/commands/doctor/index.d.ts +2 -1
- package/dist/commands/doctor/index.d.ts.map +1 -1
- package/dist/commands/doctor/index.js +37 -1
- package/dist/commands/gate/index.d.ts +3 -1
- package/dist/commands/gate/index.d.ts.map +1 -1
- package/dist/commands/gate/index.js +134 -7
- package/dist/commands/init/index.d.ts +1 -1
- package/dist/commands/init/index.d.ts.map +1 -1
- package/dist/commands/init/index.js +40 -8
- package/dist/commands/init/tools/shared/skill-manifest.d.ts +1 -1
- package/dist/commands/init/tools/shared/skill-manifest.d.ts.map +1 -1
- package/dist/commands/init/tools/shared/skill-manifest.js +1 -0
- package/dist/commands/project/dispatch-ceiling/index.d.ts.map +1 -1
- package/dist/commands/project/dispatch-ceiling/index.js +17 -9
- package/dist/commands/project/index.d.ts.map +1 -1
- package/dist/commands/project/index.js +2 -0
- package/dist/commands/project/log/append.d.ts +41 -0
- package/dist/commands/project/log/append.d.ts.map +1 -0
- package/dist/commands/project/log/append.js +241 -0
- package/dist/commands/project/log/check.d.ts +66 -0
- package/dist/commands/project/log/check.d.ts.map +1 -0
- package/dist/commands/project/log/check.js +194 -0
- package/dist/commands/project/log/grammar.d.ts +28 -0
- package/dist/commands/project/log/grammar.d.ts.map +1 -0
- package/dist/commands/project/log/grammar.js +31 -0
- package/dist/commands/project/log/index.d.ts +9 -0
- package/dist/commands/project/log/index.d.ts.map +1 -0
- package/dist/commands/project/log/index.js +13 -0
- package/dist/commands/project/log/rollup.d.ts +40 -0
- package/dist/commands/project/log/rollup.d.ts.map +1 -0
- package/dist/commands/project/log/rollup.js +203 -0
- package/dist/commands/project/log/synthesize.d.ts +23 -0
- package/dist/commands/project/log/synthesize.d.ts.map +1 -0
- package/dist/commands/project/log/synthesize.js +112 -0
- package/dist/commands/project/new/index.d.ts +1 -0
- package/dist/commands/project/new/index.d.ts.map +1 -1
- package/dist/commands/project/new/index.js +7 -0
- package/dist/commands/project/new/scaffold.d.ts +1 -0
- package/dist/commands/project/new/scaffold.d.ts.map +1 -1
- package/dist/commands/project/new/scaffold.js +24 -0
- package/dist/commands/shared/codex-strays.d.ts +9 -0
- package/dist/commands/shared/codex-strays.d.ts.map +1 -1
- package/dist/commands/shared/codex-strays.js +4 -0
- package/dist/commands/status/index.d.ts +7 -1
- package/dist/commands/status/index.d.ts.map +1 -1
- package/dist/commands/status/index.js +53 -17
- package/dist/commands/sync/apply.d.ts.map +1 -1
- package/dist/commands/sync/apply.js +50 -24
- package/dist/commands/sync/dry-run.d.ts.map +1 -1
- package/dist/commands/sync/dry-run.js +31 -18
- package/dist/commands/sync/index.d.ts.map +1 -1
- package/dist/commands/sync/index.js +34 -25
- package/dist/commands/sync/sync.types.d.ts +26 -11
- package/dist/commands/sync/sync.types.d.ts.map +1 -1
- package/dist/commands/sync/sync.utils.d.ts.map +1 -1
- package/dist/commands/sync/sync.utils.js +3 -2
- package/dist/config/oat-config.d.ts +3 -0
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +7 -0
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +2 -0
- package/dist/engine/index.d.ts +1 -1
- package/dist/engine/index.d.ts.map +1 -1
- package/dist/engine/index.js +1 -1
- package/dist/engine/scanner.d.ts +3 -1
- package/dist/engine/scanner.d.ts.map +1 -1
- package/dist/engine/scanner.js +4 -2
- package/dist/providers/ceiling/registry.d.ts +2 -0
- package/dist/providers/ceiling/registry.d.ts.map +1 -1
- package/dist/providers/ceiling/registry.js +20 -4
- package/dist/providers/codex/codec/sync-extension.d.ts +11 -10
- package/dist/providers/codex/codec/sync-extension.d.ts.map +1 -1
- package/dist/providers/codex/codec/sync-extension.js +42 -14
- package/dist/providers/cursor/codec/catalog.d.ts +18 -0
- package/dist/providers/cursor/codec/catalog.d.ts.map +1 -0
- package/dist/providers/cursor/codec/catalog.js +39 -0
- package/dist/providers/cursor/codec/materialize.d.ts +24 -0
- package/dist/providers/cursor/codec/materialize.d.ts.map +1 -0
- package/dist/providers/cursor/codec/materialize.js +166 -0
- package/dist/providers/cursor/codec/shared.d.ts +14 -0
- package/dist/providers/cursor/codec/shared.d.ts.map +1 -0
- package/dist/providers/cursor/codec/shared.js +76 -0
- package/dist/providers/cursor/codec/sync-extension.d.ts +37 -0
- package/dist/providers/cursor/codec/sync-extension.d.ts.map +1 -0
- package/dist/providers/cursor/codec/sync-extension.js +393 -0
- package/dist/providers/cursor/index.d.ts +3 -0
- package/dist/providers/cursor/index.d.ts.map +1 -1
- package/dist/providers/cursor/index.js +3 -0
- package/dist/providers/identity/availability.d.ts +7 -0
- package/dist/providers/identity/availability.d.ts.map +1 -1
- package/dist/providers/identity/availability.js +23 -0
- package/dist/providers/shared/index.d.ts +2 -0
- package/dist/providers/shared/index.d.ts.map +1 -1
- package/dist/providers/shared/index.js +1 -0
- package/dist/providers/shared/materialization-extension.d.ts +44 -0
- package/dist/providers/shared/materialization-extension.d.ts.map +1 -0
- package/dist/providers/shared/materialization-extension.js +26 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -35,6 +35,7 @@ Additional useful entry points:
|
|
|
35
35
|
- `oat config dump --json`
|
|
36
36
|
- `oat project status --json`
|
|
37
37
|
- `oat project list --json`
|
|
38
|
+
- `oat project log --help`
|
|
38
39
|
- `oat project complete-state /path/to/project`
|
|
39
40
|
- `oat project archive /path/to/project`
|
|
40
41
|
- `oat repo archive sync`
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "2026-07-
|
|
2
|
+
"version": "2026-07-11.1",
|
|
3
3
|
"providers": {
|
|
4
4
|
"codex": {
|
|
5
5
|
"economy": {
|
|
@@ -101,29 +101,25 @@
|
|
|
101
101
|
"cursor": {
|
|
102
102
|
"economy": {
|
|
103
103
|
"candidates": [
|
|
104
|
-
"
|
|
105
|
-
"
|
|
106
|
-
"gpt-5.6-luna-high"
|
|
104
|
+
"composer-2.5",
|
|
105
|
+
"claude-sonnet-5-high",
|
|
106
|
+
"gpt-5.6-luna-high",
|
|
107
|
+
"gpt-5.6-luna-xhigh"
|
|
107
108
|
]
|
|
108
109
|
},
|
|
109
110
|
"balanced": {
|
|
110
|
-
"candidates": [
|
|
111
|
-
"gpt-5.6-luna-xhigh",
|
|
112
|
-
"gpt-5.6-terra-low",
|
|
113
|
-
"gpt-5.6-terra-medium",
|
|
114
|
-
"gpt-5.6-terra-high",
|
|
115
|
-
"gpt-5.6-terra-xhigh"
|
|
116
|
-
]
|
|
111
|
+
"candidates": ["cursor-grok-4.5-high", "gpt-5.6-terra-high"]
|
|
117
112
|
},
|
|
118
113
|
"high": {
|
|
119
|
-
"candidates": [
|
|
120
|
-
"gpt-5.6-sol-low",
|
|
121
|
-
"gpt-5.6-sol-medium",
|
|
122
|
-
"gpt-5.6-sol-high"
|
|
123
|
-
]
|
|
114
|
+
"candidates": ["gpt-5.6-sol-medium", "gpt-5.6-sol-high"]
|
|
124
115
|
},
|
|
125
116
|
"frontier": {
|
|
126
|
-
"candidates": [
|
|
117
|
+
"candidates": [
|
|
118
|
+
"claude-fable-5-thinking-high",
|
|
119
|
+
"claude-fable-5-thinking-xhigh",
|
|
120
|
+
"gpt-5.6-sol-xhigh",
|
|
121
|
+
"gpt-5.6-sol-max"
|
|
122
|
+
]
|
|
127
123
|
}
|
|
128
124
|
}
|
|
129
125
|
}
|
|
@@ -232,14 +232,15 @@ values. Planning shows the complete bundled recommendation before asking for
|
|
|
232
232
|
this scope, then rechecks the effective ladder. If explicit cells still leave
|
|
233
233
|
the ladder incomplete, readiness blocks; OAT does not overwrite them.
|
|
234
234
|
|
|
235
|
-
Scope determines ownership and Codex materialization:
|
|
235
|
+
Scope determines ownership and Codex/Cursor materialization:
|
|
236
236
|
|
|
237
237
|
- `--shared` and `--local` are project configuration sources. Their configured
|
|
238
|
-
Codex candidates materialize into the tracked project `.codex`
|
|
238
|
+
Codex and Cursor candidates materialize into the tracked project `.codex`
|
|
239
|
+
and `.cursor` views.
|
|
239
240
|
- `--user` writes reusable personal defaults to `~/.oat/config.json`; those
|
|
240
|
-
|
|
241
|
-
- Active-project sparse candidates also materialize into the tracked
|
|
242
|
-
view.
|
|
241
|
+
candidates materialize under `~/.codex` and `~/.cursor`.
|
|
242
|
+
- Active-project sparse candidates also materialize into the applicable tracked
|
|
243
|
+
project view.
|
|
243
244
|
|
|
244
245
|
Project-generated provider views remain visible to version control. OAT does
|
|
245
246
|
not auto-ignore them. A project-specific active policy or ceiling must not be
|
|
@@ -274,7 +275,7 @@ even when the reusable ladder is user-owned.
|
|
|
274
275
|
},
|
|
275
276
|
"cursor": {
|
|
276
277
|
"balanced": {
|
|
277
|
-
"candidates": ["
|
|
278
|
+
"candidates": ["cursor-grok-4.5-high", "gpt-5.6-terra-high"]
|
|
278
279
|
}
|
|
279
280
|
}
|
|
280
281
|
}
|
|
@@ -285,9 +286,11 @@ even when the reusable ladder is user-owned.
|
|
|
285
286
|
|
|
286
287
|
The bundled recommendation covers 13 Codex model/effort combinations: Luna and
|
|
287
288
|
Terra at `low`, `medium`, `high`, and `xhigh`, plus Sol at those efforts and
|
|
288
|
-
`max`. Claude covers `haiku`, `sonnet`, `opus`, and `fable`. Cursor covers
|
|
289
|
-
|
|
290
|
-
|
|
289
|
+
`max`. Claude covers `haiku`, `sonnet`, `opus`, and `fable`. Cursor covers 12
|
|
290
|
+
verified multi-family flat IDs across Composer, Claude, GPT, and Grok. An
|
|
291
|
+
explicit mapping connects each flat ladder ID to a separate bracket-form
|
|
292
|
+
frontmatter model; configuration and skills never derive or normalize either
|
|
293
|
+
form.
|
|
291
294
|
|
|
292
295
|
The corresponding pinned Codex variant catalogue includes
|
|
293
296
|
`gpt-5.6-luna-high`, `gpt-5.6-terra-xhigh`, `gpt-5.6-sol-high`, and
|
|
@@ -360,7 +363,7 @@ oat project dispatch-ceiling resolve \
|
|
|
360
363
|
--provider cursor \
|
|
361
364
|
--role implementer \
|
|
362
365
|
--ceiling-tier high \
|
|
363
|
-
--candidate-model
|
|
366
|
+
--candidate-model gpt-5.6-sol-high \
|
|
364
367
|
--json
|
|
365
368
|
```
|
|
366
369
|
|
|
@@ -381,11 +384,12 @@ remains compatibility behavior for legacy scalar ceilings and managed
|
|
|
381
384
|
| -------- | ---------------------------------------------------------------------------------------------------- |
|
|
382
385
|
| Codex | `providers.codex.dispatchArgs.variant` as `agent_type`, or a fresh child pinned to model plus effort |
|
|
383
386
|
| Claude | `providers.claude.dispatchArgs.model` as the actual Agent `model` |
|
|
384
|
-
| Cursor | `providers.cursor.dispatchArgs.
|
|
387
|
+
| Cursor | `providers.cursor.dispatchArgs.variant` as the exact native agent type first |
|
|
385
388
|
|
|
386
|
-
Project sync materializes the supported Codex
|
|
387
|
-
project-owned candidate for both `oat-phase-implementer` and
|
|
388
|
-
User sync materializes user-owned candidates under `~/.codex
|
|
389
|
+
Project sync materializes the supported Codex and Cursor catalogues and every
|
|
390
|
+
configured project-owned candidate for both `oat-phase-implementer` and
|
|
391
|
+
`oat-reviewer`. User sync materializes user-owned candidates under `~/.codex`
|
|
392
|
+
and `~/.cursor/agents`:
|
|
389
393
|
|
|
390
394
|
```bash
|
|
391
395
|
oat sync --scope project
|
|
@@ -394,60 +398,31 @@ oat sync --scope all
|
|
|
394
398
|
```
|
|
395
399
|
|
|
396
400
|
Generated roles carry `supported-catalogue`, `project-config`, or `user-config`
|
|
397
|
-
ownership. Cleanup reconciles only the current owner.
|
|
398
|
-
|
|
399
|
-
correctness does not require provider restart or hot reload.
|
|
401
|
+
ownership. Cleanup reconciles only the current owner. Cursor's mapping registry
|
|
402
|
+
rejects unknown flat IDs instead of writing unverified frontmatter.
|
|
400
403
|
|
|
401
404
|
Reviewer resolution uses the final candidate at the configured review ceiling.
|
|
402
|
-
Codex
|
|
403
|
-
exact model argument. Timeout retries preserve the same complete
|
|
404
|
-
lower reviewer candidate requires a separate reviewed contract.
|
|
405
|
+
Codex and Cursor select exact native reviewer variants; Claude passes the
|
|
406
|
+
resolver's exact model argument. Timeout retries preserve the same complete
|
|
407
|
+
payload. A lower reviewer candidate requires a separate reviewed contract.
|
|
405
408
|
|
|
406
409
|
Tier 2 remains target-preserving. Inline review is permitted only when the host
|
|
407
410
|
has verified equivalent current-host controls for explicit inherit,
|
|
408
411
|
managed-uncapped, or base-role behavior. Capped managed reviews still require
|
|
409
412
|
the exact registered role, pinned child, or resolver-returned model argument.
|
|
410
413
|
|
|
411
|
-
### Cursor
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
establish `unknown-value`. Neither result identifies the backend runtime model:
|
|
424
|
-
`runtimeIdentity` remains `not-reported` unless trusted Cursor telemetry or
|
|
425
|
-
Cursor support confirms it. Parent prose and broad catalog presence are
|
|
426
|
-
diagnostic-only, so OAT preserves `unvalidated` when launcher evidence is
|
|
427
|
-
absent instead of inferring capability from candidate spelling.
|
|
428
|
-
|
|
429
|
-
The [dated GPT-5.6 Cursor verification evidence](https://github.com/voxmedia/open-agent-toolkit/blob/main/.oat/repo/reference/project-summaries/20260711-cursor-gpt-5-6-subagent-verification.md)
|
|
430
|
-
preserves the original text-mode pass and a versioned stream-JSON second pass.
|
|
431
|
-
The second pass ran a dynamic positive control and deliberate invalid control
|
|
432
|
-
before candidates. Both parent runs completed without a Task event, making the
|
|
433
|
-
controls inconclusive; the stop rule therefore executed zero of the 13
|
|
434
|
-
recommended candidates and did not execute exploratory
|
|
435
|
-
`gpt-5.6-sol-high-fast`. The recommendation remains unchanged and candidate
|
|
436
|
-
eligibility remains unresolved.
|
|
437
|
-
|
|
438
|
-
The tracked artifact's structured second-pass block contains only allowlisted
|
|
439
|
-
event structure, derived outcomes, sanitized auth-presence context, and
|
|
440
|
-
non-reversible identifier hashes. Exact request/session/tool-call IDs and
|
|
441
|
-
credential-redacted unprojected streams from that pass stay under gitignored
|
|
442
|
-
`.oat/projects/local/` storage for possible Cursor support diagnosis.
|
|
443
|
-
|
|
444
|
-
The same public artifact intentionally retains the sanitized historical v1
|
|
445
|
-
text-mode record for provenance. That older section includes command arguments
|
|
446
|
-
and prompts, stdout and stderr, exit and duration data, and capture-environment
|
|
447
|
-
details such as user-specific binary paths; it is not limited to the structured
|
|
448
|
-
second-pass allowlist. Re-run after a Cursor client rollout exposes Task in
|
|
449
|
-
headless mode or Cursor support confirms the private requests; review the open
|
|
450
|
-
verification item by 2026-08-08.
|
|
414
|
+
### Cursor availability and evidence
|
|
415
|
+
|
|
416
|
+
`oat doctor` compares configured Cursor flat IDs with the current Cursor
|
|
417
|
+
catalogue and reports availability drift. This check is diagnostic: catalogue
|
|
418
|
+
presence does not prove that a bracket-form definition pin was honored.
|
|
419
|
+
|
|
420
|
+
Each shipped mapping has mapping-specific native-launch evidence, but Cursor
|
|
421
|
+
can silently fallback when account, plan, or administration constraints prevent
|
|
422
|
+
the requested pin. OAT therefore records the selected variant and mapped model
|
|
423
|
+
with launcher-owned `configured` provenance. Runtime identity remains
|
|
424
|
+
`not-reported` unless independently observed; self-report and catalogue
|
|
425
|
+
availability do not upgrade that evidence.
|
|
451
426
|
|
|
452
427
|
### Legacy compatibility
|
|
453
428
|
|
|
@@ -486,6 +461,8 @@ Workflow preference keys live under the `workflow.*` namespace:
|
|
|
486
461
|
- `workflow.autoNarrowReReviewScope` — boolean. Auto-narrow re-review scope to fix-task commits only in `oat-project-review-provide`. When unset, the skill prompts.
|
|
487
462
|
- `workflow.autoArtifactReview.plan` — boolean, default `true`. Automatically run the bounded artifact-review loop for generated `plan.md` files before implementation handoff. Set to `false` only when you intentionally want to skip the plan artifact review.
|
|
488
463
|
- `workflow.autoArtifactReview.analysis` — boolean, default `true`. Automatically run the bounded accuracy-review loop for generated docs and agent-instructions analysis artifacts before the matching apply workflow consumes them.
|
|
464
|
+
- `workflow.projectLog` — `auto`, `true`, or `false`; default `auto`. `auto` creates the append-only `project-log.md` on the first lifecycle append, `true` also enables scaffold-time creation, and `false` skips appends when no log exists. An existing artifact remains enabled regardless of the current setting.
|
|
465
|
+
- `workflow.projectLogLedgerPath` — repository-relative string; default `.oat/repo/reference/project-observations.md`. Sets the durable ledger target for `general` judgments written by `oat project log rollup`.
|
|
489
466
|
- `workflow.dispatchPolicy.mode` — `managed` or `inherit`. `managed` means OAT selects model/effort controls from `workflow.dispatchPolicy.policy`; `inherit` means OAT leaves controls to host/provider defaults.
|
|
490
467
|
- `workflow.dispatchPolicy.policy` — `economy`, `balanced`, `high`, `frontier`, or `uncapped`. `economy` through `frontier` are capped managed policies; `uncapped` keeps OAT-managed preferred selection without provider caps. It is distinct from `workflow.dispatchPolicy.mode=inherit`, which leaves controls to the host/provider.
|
|
491
468
|
- `workflow.dispatchCeiling.preset` — legacy compatibility alias (`balanced`, `maximum`, or `cost-conscious`) for capped managed policy setup.
|
|
@@ -495,6 +472,9 @@ Workflow preference keys live under the `workflow.*` namespace:
|
|
|
495
472
|
- `workflow.gates.skills` / `workflow.gates.execTargets` — structured per-skill final gate commands and exec-target registry. Use `oat gate set`, `oat gate target set`, `oat gate review`, and `oat gate cross-provider-exec`; do not use `oat config set` for these objects.
|
|
496
473
|
- `workflow.gateTimeouts.code` / `workflow.gateTimeouts.artifact` — validated default gate-review budgets in milliseconds. Both resolve through `local > shared > user`.
|
|
497
474
|
|
|
475
|
+
The two project-log keys use the standard workflow precedence:
|
|
476
|
+
`local > shared > user > default`.
|
|
477
|
+
|
|
498
478
|
### HiLL plan-field semantics
|
|
499
479
|
|
|
500
480
|
`workflow.hillCheckpointDefault` controls the first implementation run's
|
|
@@ -568,6 +548,8 @@ oat config set workflow.designMode collaborative --shared
|
|
|
568
548
|
oat config set workflow.dispatchCeiling.preset balanced --shared
|
|
569
549
|
oat config set workflow.dispatchCeiling.providers.cursor.high composer-2.5 --shared
|
|
570
550
|
oat config set workflow.autoArtifactReview.plan false --shared
|
|
551
|
+
oat config set workflow.projectLog auto --shared
|
|
552
|
+
oat config set workflow.projectLogLedgerPath .oat/repo/reference/project-observations.md --shared
|
|
571
553
|
|
|
572
554
|
# Repo-local: personal override for this repo (default when no flag)
|
|
573
555
|
oat config set workflow.hillCheckpointDefault every
|
|
@@ -15,6 +15,7 @@ Use this section when you want bootstrap guidance, tool-pack lifecycle details,
|
|
|
15
15
|
- [Tool Packs and Installed Assets](tool-packs.md) - Bundled packs and `oat tools` lifecycle commands.
|
|
16
16
|
- [Configuration](configuration.md) - OAT configuration guidance across shared, local, user, and provider-sync surfaces.
|
|
17
17
|
- [Config and Local State](config-and-local-state.md) - Utility command groups for config, local state, diagnostics, and related inspection flows.
|
|
18
|
+
- [Project Log](project-log.md) - Append-only project observations, synthesis, inspection, and durable roll-up.
|
|
18
19
|
- [Backlog Lifecycle](backlog-lifecycle.md) - Backlog item states, atomic close-out with `oat backlog archive`, and lifecycle drift detection in `oat pjm doctor`.
|
|
19
20
|
- [Workflow Gates](workflow-gates.md) - Completion-safe headless reviews, budgets, liveness evidence, and cross-runtime dispatch with `oat gate`.
|
|
20
21
|
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Project Log
|
|
3
|
+
description: Capture append-only project observations and roll them into durable summary and ledger surfaces.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Project Log
|
|
7
|
+
|
|
8
|
+
`oat project log` manages an optional, append-only `project-log.md` artifact for
|
|
9
|
+
workflow observations and lifecycle events. Use it to preserve evidence that
|
|
10
|
+
would otherwise remain in agent transcripts, then roll that evidence into
|
|
11
|
+
tracked project and repository references before archiving the project.
|
|
12
|
+
|
|
13
|
+
The command group is the only supported writer for the artifact. Do not edit
|
|
14
|
+
entries or the synthesis section by hand.
|
|
15
|
+
|
|
16
|
+
## Configure project logs
|
|
17
|
+
|
|
18
|
+
Two workflow keys control the feature:
|
|
19
|
+
|
|
20
|
+
| Key | Values | Default |
|
|
21
|
+
| ------------------------------- | ------------------------ | --------------------------------------------- |
|
|
22
|
+
| `workflow.projectLog` | `auto`, `true`, `false` | `auto` |
|
|
23
|
+
| `workflow.projectLogLedgerPath` | repository-relative path | `.oat/repo/reference/project-observations.md` |
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
oat config set workflow.projectLog auto --shared
|
|
27
|
+
oat config set workflow.projectLogLedgerPath .oat/repo/reference/project-observations.md --shared
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
`auto` creates the log on the first append. `true` also lets
|
|
31
|
+
`oat project new` scaffold the log up front. `false` skips an append when no log
|
|
32
|
+
exists. An existing `project-log.md` always accepts appends, regardless of the
|
|
33
|
+
current config value.
|
|
34
|
+
|
|
35
|
+
For one scaffold operation, `oat project new --with-project-log` forces
|
|
36
|
+
creation and `--no-project-log` suppresses it.
|
|
37
|
+
|
|
38
|
+
## Append entries
|
|
39
|
+
|
|
40
|
+
Judgment entries capture evidence about the project or reusable workflow:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
oat project log append \
|
|
44
|
+
--project .oat/projects/shared/example \
|
|
45
|
+
--type friction \
|
|
46
|
+
--scope project \
|
|
47
|
+
--area "gate review handoff" \
|
|
48
|
+
--body "The gate passed but the handoff was missing, so review receipt stopped."
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Judgment flags:
|
|
52
|
+
|
|
53
|
+
- `--type <bug|friction|worked-well|feedback>`
|
|
54
|
+
- `--scope <project|general>`
|
|
55
|
+
- `--area <text>` — one line, at most 120 characters
|
|
56
|
+
- `--body <text>` — use `--body -` to read from stdin
|
|
57
|
+
- `--version-note <text>` — adds an `observed on` clause
|
|
58
|
+
- `--project <path>` — optional when an active project resolves
|
|
59
|
+
|
|
60
|
+
Structural entries record lifecycle events without duplicating larger
|
|
61
|
+
artifacts:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
oat project log append \
|
|
65
|
+
--structural \
|
|
66
|
+
--producer oat-project-implement \
|
|
67
|
+
--ref p03 \
|
|
68
|
+
--body "Phase passed; details: .oat/projects/shared/example/implementation.md#run-3"
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Structural entries require `--structural`, `--producer`, `--ref`, and `--body`.
|
|
72
|
+
Do not combine structural flags with judgment flags.
|
|
73
|
+
|
|
74
|
+
The helper produces these heading grammars in UTC:
|
|
75
|
+
|
|
76
|
+
```text
|
|
77
|
+
### YYYY-MM-DD · <project|general> · <bug|friction|worked-well|feedback> · <area>
|
|
78
|
+
### YYYY-MM-DD · structural · <producer> · <ref>
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Prior entries are never edited or struck through. Append corrections as new
|
|
82
|
+
judgments that reference the original heading. Never record secret values such
|
|
83
|
+
as tokens, credentials, keys, or signed URLs; reference their name or source
|
|
84
|
+
instead.
|
|
85
|
+
|
|
86
|
+
Run `oat project log append --help` for the complete entry contract.
|
|
87
|
+
|
|
88
|
+
## Automatic workflow integration
|
|
89
|
+
|
|
90
|
+
When project logging is enabled, OAT lifecycle surfaces append structural
|
|
91
|
+
entries without asking agents to edit `project-log.md`:
|
|
92
|
+
|
|
93
|
+
- `oat-project-implement` records accepted subagent dispatches, STOP or park
|
|
94
|
+
events, phase outcomes, and parallel-group merge results. These entries point
|
|
95
|
+
to the corresponding `implementation.md` record instead of copying it.
|
|
96
|
+
- `oat gate review` records exactly one entry for every terminal outcome,
|
|
97
|
+
including successful and blocking verdicts, child failure, timeout,
|
|
98
|
+
targeting-correlation failure, and artifact-validation failure. A log append
|
|
99
|
+
failure produces a warning but never changes the gate result.
|
|
100
|
+
- `oat-project-summary` checks for entries, offers append-only promotion of
|
|
101
|
+
reusable project judgments, and invokes `rollup` after authoring
|
|
102
|
+
`summary.md`.
|
|
103
|
+
- `oat-project-complete` warns when synthesis is pending, requires a successful
|
|
104
|
+
roll-up for a populated log, and appends the final seal entry before archive.
|
|
105
|
+
No project-log entry may follow the seal.
|
|
106
|
+
|
|
107
|
+
With the default `auto` setting, the first of these append points creates the
|
|
108
|
+
log. With `false` and no existing artifact, automatic appends are no-ops.
|
|
109
|
+
|
|
110
|
+
## Inspect status
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
oat project log check --project .oat/projects/shared/example --json
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
`check` reports whether the log is absent, ready, or still awaiting synthesis;
|
|
117
|
+
entry counts by class, type, and scope; the last entry date; and invalid
|
|
118
|
+
hand-written headings. It reads only `project-log.md`.
|
|
119
|
+
|
|
120
|
+
Use `--require-synthesis` to exit with status 1 while synthesis is pending:
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
oat project log check --require-synthesis
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Without that flag, normal `absent`, `ok`, and `synthesis_pending` results exit
|
|
127
|
+
successfully so lifecycle skills can decide whether to warn or enforce.
|
|
128
|
+
|
|
129
|
+
## Complete the synthesis
|
|
130
|
+
|
|
131
|
+
Write the end-of-run synthesis through the command:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
oat project log synthesize \
|
|
135
|
+
--project .oat/projects/shared/example \
|
|
136
|
+
--body "The workflow was effective; preserve the gate handoff checks."
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Use `--body -` for stdin. `synthesize` replaces the pending synthesis section
|
|
140
|
+
without changing entries. It fails when the log is absent or the synthesis is
|
|
141
|
+
already complete; append a correction judgment instead of replacing a completed
|
|
142
|
+
synthesis.
|
|
143
|
+
|
|
144
|
+
## Promote and roll up observations
|
|
145
|
+
|
|
146
|
+
Before roll-up, promote a reusable `project` judgment by appending a new
|
|
147
|
+
`general` judgment. Its body must reference the original heading. Never mutate
|
|
148
|
+
or annotate the original entry.
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
oat project log append \
|
|
152
|
+
--type friction \
|
|
153
|
+
--scope general \
|
|
154
|
+
--area "gate review handoff" \
|
|
155
|
+
--body "Promotes '### 2026-07-18 · project · friction · gate review handoff': this applies to all gate-driven reviews."
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
After `summary.md` exists, roll up the log:
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
oat project log rollup \
|
|
162
|
+
--project .oat/projects/shared/example \
|
|
163
|
+
--json
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
`rollup` writes or updates `## Workflow Observations` in `summary.md` and
|
|
167
|
+
appends `general` judgments to `workflow.projectLogLedgerPath`. Ledger entries
|
|
168
|
+
deduplicate by date and area. The command is idempotent.
|
|
169
|
+
|
|
170
|
+
The structured result contains:
|
|
171
|
+
|
|
172
|
+
- `status`: `ok` or `failed`
|
|
173
|
+
- `summarySection`: `written` or `updated`
|
|
174
|
+
- `ledgerOutcome`: `appended`, `deduplicated`, `skipped_permitted`, or `failed`
|
|
175
|
+
- `entriesRolledUp`: number of log entries written to the summary section
|
|
176
|
+
|
|
177
|
+
`skipped_permitted` means the default repository reference layer is absent and
|
|
178
|
+
no ledger path was explicitly configured; `status` remains `ok`. An explicitly
|
|
179
|
+
configured ledger write failure returns `status: "failed"`. Completion must not
|
|
180
|
+
seal or archive a project with entries until roll-up reports `status: "ok"`.
|
|
181
|
+
|
|
182
|
+
`rollup` requires an existing `summary.md`; summary authoring remains the
|
|
183
|
+
responsibility of the project summary workflow.
|
|
@@ -94,6 +94,37 @@ model that ran, and the reviewer must not replace them with self-identification.
|
|
|
94
94
|
The CLI compares the copied values with its gate-owned record before it applies
|
|
95
95
|
the severity threshold.
|
|
96
96
|
|
|
97
|
+
### Review producer identity
|
|
98
|
+
|
|
99
|
+
Dynamic planning workflows can declare their current parent model to a review
|
|
100
|
+
gate without writing a provider or model into shared/user config:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
OAT_GATE_PRODUCER_IDENTITY='<model>:declared' oat gate review ...
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
This is a review-command-only bridge. `oat gate review` accepts it only when
|
|
107
|
+
the value is non-empty and its provenance suffix is exactly `declared`. The
|
|
108
|
+
gate removes the variable from the child reviewer's environment, and non-review
|
|
109
|
+
commands such as `oat gate cross-provider-exec` ignore it.
|
|
110
|
+
|
|
111
|
+
Producer evidence precedence is explicit `--producer-identity`, then a
|
|
112
|
+
qualifying implementation dispatch stamp, then the review-only environment
|
|
113
|
+
declaration, and finally unknown producer behavior. The environment bridge does
|
|
114
|
+
not replace stronger explicit or stamped evidence and does not establish
|
|
115
|
+
observed runtime identity.
|
|
116
|
+
|
|
117
|
+
For final and contiguous-range reviews, each in-scope implementer/fix stamp
|
|
118
|
+
contributes its claimable producer family. If that producer is not claimable or
|
|
119
|
+
has an unknown family, the gate may infer only a family exclusion from the
|
|
120
|
+
stamp's launcher-owned configured target. The target does not become producer
|
|
121
|
+
runtime identity, and generic or unclassifiable targets contribute no family.
|
|
122
|
+
|
|
123
|
+
Keep reusable gate commands producer-neutral in shared and user config.
|
|
124
|
+
Planning skills attach the ephemeral declaration only while executing a
|
|
125
|
+
resolved configured command that invokes `oat gate review`; they leave it
|
|
126
|
+
absent for every other gate command.
|
|
127
|
+
|
|
97
128
|
### Headless completion safety
|
|
98
129
|
|
|
99
130
|
Every `oat gate review` child receives the same headless contract through two
|
|
@@ -492,7 +523,9 @@ By default the dispatcher:
|
|
|
492
523
|
4. Resolves producer identity from `--producer-identity` or dispatch stamps when
|
|
493
524
|
available. Exact phase/task scopes use the matching stamp. `final` and
|
|
494
525
|
contiguous ranges such as `p02-p03` aggregate every in-range implementer/fix
|
|
495
|
-
stamp.
|
|
526
|
+
stamp. A stamp whose producer is not claimable or has an unknown family may
|
|
527
|
+
contribute its classifiable configured target family to aggregate avoidance
|
|
528
|
+
at lower confidence.
|
|
496
529
|
5. Applies `--avoid same-family`.
|
|
497
530
|
6. Checks candidate availability in descending priority order, with target id as
|
|
498
531
|
the tie-breaker.
|
|
@@ -537,7 +570,10 @@ single stamp or when no stamp has a claimable family. Their producer record uses
|
|
|
537
570
|
an unknown representative instead of presenting the latest stamp as aggregate
|
|
538
571
|
truth:
|
|
539
572
|
|
|
540
|
-
- `avoidFamilies` is the stable deduplicated union of claimable known
|
|
573
|
+
- `avoidFamilies` is the stable deduplicated union of claimable known producer
|
|
574
|
+
families plus classifiable configured target families from stamps whose
|
|
575
|
+
producer is not claimable or has an unknown family. A known, claimable
|
|
576
|
+
producer remains authoritative over a conflicting target.
|
|
541
577
|
- `contributingScopes` is the stable document-order list of distinct scopes from
|
|
542
578
|
every relevant stamp.
|
|
543
579
|
- `contributingStampCount` counts every relevant stamp, including unknown or
|
|
@@ -18,14 +18,11 @@ description: 'Provider-specific path mappings for Claude, Cursor, Copilot, Gemin
|
|
|
18
18
|
|
|
19
19
|
- Project: `.agents/skills` -> `.cursor/skills`, `.agents/agents` -> `.cursor/agents`, `.agents/rules` -> `.cursor/rules`
|
|
20
20
|
- User: `~/.agents/skills` -> `~/.cursor/skills`, `~/.agents/agents` -> `~/.cursor/agents`
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
- Cursor
|
|
25
|
-
-
|
|
26
|
-
- The [dated GPT-5.6 verification artifact](https://github.com/voxmedia/open-agent-toolkit/blob/main/.oat/repo/reference/project-summaries/20260711-cursor-gpt-5-6-subagent-verification.md) preserves the original probe and a stream-JSON control pass. The controls observed no Task events, so the stop rule ran zero recommendation or exploratory candidates and retained the recommendation unchanged.
|
|
27
|
-
- The artifact's structured second-pass block contains only allowlisted event fields, derived outcomes, sanitized auth presence, and identifier hashes. Exact request/session/tool-call IDs and credential-redacted unprojected streams from that pass remain in gitignored local project storage for support escalation.
|
|
28
|
-
- The same public artifact retains the sanitized historical v1 text-mode record for provenance. That older section includes command arguments and prompts, stdout and stderr, exit and duration data, and capture-environment details such as user-specific binary paths; it is not limited to the structured second-pass allowlist.
|
|
21
|
+
- Sync materializes pinned Markdown definitions for both `oat-phase-implementer` and `oat-reviewer`. Each generated name keeps the configured flat ladder ID, while an explicit verified mapping writes the separate bracket-form frontmatter model. OAT never derives one form from the other.
|
|
22
|
+
- Generated definitions carry `supported-catalogue`, `project-config`, or `user-config` ownership. Project and supported output lives in the tracked `.cursor/agents` view; user-owned output lives under `~/.cursor/agents`. Cleanup reconciles only the applicable owner.
|
|
23
|
+
- Managed dispatch requires `providers.cursor.dispatchArgs.variant` and launches that exact resolver-selected native agent type first. Skills do not pass a Task-level model argument or normalize Cursor model strings.
|
|
24
|
+
- Cursor may silently fallback when a definition pin cannot be honored. Variant acceptance therefore establishes launcher-owned `configured` provenance only; runtime identity remains `not-reported` unless independently observed.
|
|
25
|
+
- `oat doctor` checks whether each flat ID is still present in the current Cursor catalogue and reports availability drift. Catalogue availability is diagnostic and does not prove that a definition-level bracket pin ran as configured.
|
|
29
26
|
- Rule files render as `.cursor/rules/*.mdc`
|
|
30
27
|
|
|
31
28
|
=== "Copilot"
|
|
@@ -81,9 +78,9 @@ oat config adopt dispatch-matrix --user
|
|
|
81
78
|
```
|
|
82
79
|
|
|
83
80
|
Project-config candidates materialize into the tracked, version-controlled
|
|
84
|
-
project `.codex`
|
|
85
|
-
OAT does not auto-ignore project output or create
|
|
86
|
-
that repository change.
|
|
81
|
+
project `.codex` and `.cursor` views. User-config candidates materialize under
|
|
82
|
+
`~/.codex` and `~/.cursor`. OAT does not auto-ignore project output or create
|
|
83
|
+
its Git commit; the team owns that repository change.
|
|
87
84
|
|
|
88
85
|
At implementation time, the root passes the recorded named maximum through
|
|
89
86
|
invocation-only `--ceiling-tier`, resolves one exact candidate per phase, and
|
|
@@ -91,19 +88,20 @@ dispatches one phase implementer. Codex first attempts the resolver-returned
|
|
|
91
88
|
materialized role as the native `agent_type`. The launcher records the target,
|
|
92
89
|
model axis, and effort axis from that resolved payload; child self-report is not
|
|
93
90
|
provenance and cannot replace those values.
|
|
94
|
-
Only an explicit pre-start native role-selection rejection permits
|
|
95
|
-
|
|
91
|
+
Only an explicit pre-start native role-selection rejection permits another
|
|
92
|
+
target-preserving route. An accepted child, including one that later returns
|
|
96
93
|
`BLOCKED` or lacks telemetry, is a task outcome rather than a fallback signal.
|
|
97
|
-
Claude
|
|
98
|
-
|
|
99
|
-
or a base role.
|
|
94
|
+
Claude binds the exact model argument described above. Cursor launches the
|
|
95
|
+
exact native variant. A missing or unselectable managed target blocks rather
|
|
96
|
+
than falling back to the root target or a base role.
|
|
100
97
|
|
|
101
98
|
## Scope rules
|
|
102
99
|
|
|
103
100
|
- Project scope: skills + agents + rules
|
|
104
|
-
- User scope: skills, plus the two bundled managed Codex role definitions used only for user-owned target expansion (provider mappings vary by adapter)
|
|
101
|
+
- User scope: skills, plus the two bundled managed Codex and Cursor role definitions used only for user-owned target expansion (provider mappings vary by adapter)
|
|
105
102
|
- Rules are project-scoped only in this release
|
|
106
103
|
- Codex user-scope sync materializes user-config custom roles under `~/.codex`; project-config and supported-catalogue output remains project-scoped and version controlled
|
|
104
|
+
- Cursor user-scope sync materializes user-config variants under `~/.cursor/agents`; project-config and supported-catalogue output remains project-scoped and version controlled
|
|
107
105
|
|
|
108
106
|
## Adoption model
|
|
109
107
|
|
|
@@ -67,6 +67,7 @@ Notable commands introduced in the current CLI surface:
|
|
|
67
67
|
- `oat project archive [project-path]` - archive a tracked project through the same local move, summary export, and optional S3 upload path used by completion. When omitted, the project path falls back to the active project.
|
|
68
68
|
- `oat repo archive sync [project-name]` - hydrate archived project snapshots from the configured repo-scoped S3 archive into `.oat/projects/archived/`. The old `oat project archive sync` path remains as a deprecated shim.
|
|
69
69
|
- `oat project validate-plan --project-path <path>` - validates `oat_plan_parallel_groups` metadata in `plan.md`; exits non-zero on invalid. See [Implementation Execution](../workflows/projects/implementation-execution.md#plan-declared-parallelism).
|
|
70
|
+
- `oat project log append|check|synthesize|rollup` - manage the optional append-only project observation log: append validated judgment or structural entries, inspect grammar and synthesis status, complete end-of-run synthesis, and roll observations into `summary.md` plus the configured repository ledger. See [Project Log](../cli-utilities/project-log.md).
|
|
70
71
|
- `oat project set-mode` — deprecated no-op. Execution mode is no longer user-selectable; emits a deprecation warning and preserves the `--json` contract.
|
|
71
72
|
- `oat gate review <prompt...>` - run a stateful, headless OAT review through the target registry, parse the produced review artifact, and exit nonzero for configured blocking findings. `--timeout-ms <milliseconds>` overrides target, `workflow.gateTimeouts`, environment, and scope defaults; accepted values are 1,000–14,400,000. Final/phase/range code reviews default to 30 minutes, while task code and artifact reviews default to 15 minutes. With `--json`, the result envelope on exit is the canonical completion signal: `status` is `ok` | `blocked` | `review_failed` | `artifact_validation_failed` | `targeting_correlation_failed`, alongside `runId`, `generatedAt`, and `artifactPath` when available. For `targeting_correlation_failed`, do not run review-receive even if an artifact path is present. For `artifact_validation_failed`, correct the artifact and rerun the gate until it revalidates as `ok` or `blocked`. Invoke `oat-project-review-receive` only when all three conditions hold: `status` is `ok` or `blocked`, `receiveEligible` is `true`, and `handoff` is non-null. `review_failed` may include structured `refusal`, `noOutputProduced`, and metadata-only `activityEvidence`; these diagnostic fields never make a run receive-eligible. After a timeout, a validated run-correlated artifact returns the ordinary `ok` or `blocked` envelope with additive `lateCompletion: true`. Duplicate run-ID matches or a changed artifact with a mismatched run ID retain `targeting_correlation_failed` and `receiveEligible: false`. Orchestrators should read the structured result rather than poll the filesystem. See [Workflow Gates](../cli-utilities/workflow-gates.md).
|
|
72
73
|
- `oat gate route --expect-runtime <runtime> --expect-model <model> --can-await <true|false> --json` - return the headless child route (`inline`, `delegate-sync`, or `refuse`) from provider-marker and model evidence. Ambiguous or contradictory evidence never routes inline.
|
|
@@ -127,7 +127,7 @@ Each inner array is a group of phases that execute concurrently in their own wor
|
|
|
127
127
|
- Each group must contain **2 or more** phases — singleton groups are rejected.
|
|
128
128
|
- Every phase ID must exist in the plan body.
|
|
129
129
|
- No phase may appear in more than one group.
|
|
130
|
-
- Parallelism is only honored at Tier 1 (native subagents). Tier 2 degrades parallel groups to sequential target-preserving execution, not unconditional inline review. Concrete managed Claude
|
|
130
|
+
- Parallelism is only honored at Tier 1 (native subagents). Tier 2 degrades parallel groups to sequential target-preserving execution, not unconditional inline review. Concrete managed Claude reviewers retain the exact resolver-returned `dispatchArgs.model`; Cursor reviewers retain the exact `providers.cursor.dispatchArgs.variant` native agent type; Codex retains its exact role or pinned child. Every retry preserves the complete target. Inline review requires verified equivalent host controls or an explicit inherit/default or managed-uncapped base-role exception, and otherwise blocks.
|
|
131
131
|
|
|
132
132
|
**Authoring responsibility:**
|
|
133
133
|
|