@open-agent-toolkit/cli 0.2.67 → 0.2.69

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. package/assets/agents/oat-reviewer.md +20 -1
  2. package/assets/bundle-metadata.json +1 -1
  3. package/assets/docs/provider-sync/scope-and-surface.md +3 -2
  4. package/assets/docs/reference/cli-reference.md +1 -1
  5. package/assets/docs/workflows/projects/evidence-layers.md +6 -3
  6. package/assets/docs/workflows/projects/implementation-execution.md +4 -3
  7. package/assets/docs/workflows/projects/orchestration-model.md +6 -4
  8. package/assets/public-package-versions.json +4 -4
  9. package/assets/skills/oat-dispatch-subagents/SKILL.md +4 -2
  10. package/assets/skills/oat-project-autonomous/references/gate-inventory.md +2 -1
  11. package/assets/skills/oat-project-dispatch-subagents/SKILL.md +9 -7
  12. package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +2 -1
  13. package/assets/skills/oat-project-implement/SKILL.md +1 -1
  14. package/assets/skills/oat-project-implement/references/dispatch-and-dry-run.md +11 -10
  15. package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +2 -1
  16. package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +2 -1
  17. package/assets/skills/oat-project-plan-writing/SKILL.md +7 -6
  18. package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +2 -1
  19. package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +2 -1
  20. package/assets/skills/oat-project-review-provide/SKILL.md +11 -10
  21. package/assets/skills/oat-project-review-provide-remote/SKILL.md +7 -6
  22. package/assets/skills/oat-wave-execute/SKILL.md +13 -4
  23. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-reviewer
3
- version: 1.2.3
3
+ version: 1.2.4
4
4
  description: Unified reviewer for OAT projects - mode-aware verification of requirements/design alignment and code quality. Writes a review artifact to disk by default, or returns structured findings in-memory when dispatched in structured-output mode.
5
5
  tools: Read, Bash, Grep, Glob, Write, Task
6
6
  color: yellow
@@ -235,6 +235,25 @@ Treat the artifact as a product deliverable. Verify it is:
235
235
  - Coverage of design/discovery: every in-scope design component or discovery decision is mapped to at least one task or explicitly deferred/out of scope.
236
236
  - Parallelism-claim sanity: any parallel phase group or parallelism statement is consistent with declared file boundaries and dependency order.
237
237
 
238
+ 6. **Necessary**
239
+ - Evaluate whether the proposed approach materially serves the requested
240
+ outcome. For substantial added machinery — a script, schema, persisted
241
+ record, gate, provider seam, or new document that someone will have to
242
+ own — identify its consumer (an agent acting on a named instruction, a
243
+ human reading a named surface, or code at a named call site) and consider
244
+ whether a smaller approach preserves the requirements.
245
+ - Judge prose by the behavior it meaningfully guides. An instruction whose
246
+ consumer is the agent that reads it is a real consumer; missing automated
247
+ enforcement of that instruction is not proof of uselessness.
248
+ - A mechanism whose only consumer is its own tests, its own plan, or a
249
+ deferred future reader is grounds to investigate, not an automatic
250
+ severity: grade the finding by wasted effort, maintenance burden, or
251
+ failure to meet the requested outcome, and say which.
252
+ - Report justified concerns in the existing findings sections. Do not
253
+ produce an inventory of unproblematic mechanisms, and do not override an
254
+ explicitly stated user requirement with a preference for simplicity;
255
+ name the conflict instead.
256
+
238
257
  ### Step 5: Verify Design Alignment
239
258
 
240
259
  This step applies to **code reviews** only.
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "oatVersion": "0.2.67"
3
+ "oatVersion": "0.2.69"
4
4
  }
@@ -109,8 +109,9 @@ child accepted by the native route that later returns `BLOCKED` are not
109
109
  role-selection rejection and do not permit fallback.
110
110
 
111
111
  Project workflows construct and redact the complete dispatch payload before
112
- the native call, then persist its accepted or `blocked-before-start` result
113
- immediately under the active project's `dispatch/` directory. The generic
112
+ the native call, then record its accepted or `blocked-before-start` result in
113
+ the project's run record; persisting it under the project's `dispatch/`
114
+ directory is optional and off by default. The generic
114
115
  record remains provider-neutral. OAT-specific canonical role, rejection,
115
116
  fallback, and runtime facts live only under its `oat` namespace. A qualifying
116
117
  fallback is a fresh request that preserves exact target and controls and is
@@ -153,7 +153,7 @@ Notable commands introduced in the current CLI surface:
153
153
  - `oat project complete-state <project-path>` - apply the canonical completed-state mutation to a project's `state.md`; used by `oat-project-complete` during lifecycle closeout
154
154
  - `oat project archive [project-path] [--project-recap-run <project-relative-path>] [--no-commit]` - archive a tracked project through the same local move, summary export, and configured S3 upload path used by completion. When omitted, the project path falls back to the active project. The optional recap path must identify a `project-recap` run inside the project's `explainers/` directory. Archive stages the selected complete package into `.oat/repo/reference/project-recaps/<YYYYMMDD-project-slug>/`, verifies every manifest-declared immutable file byte, then atomically installs the export before deleting the active project. Existing destinations, incomplete legacy hash coverage, stale bytes, path escapes, and recipe mismatches fail without removing the active project. For synced projects, a configured S3 upload must succeed before terminal cleanup. Successful closeout makes `refs/oat/completed/<project>` authoritative, deletes the tracked JSON record and nested checkout, and leaves archive metadata sufficient for an idempotent recordless retry. Legacy complete records receive a cleanup diagnosis rather than pull/open guidance. With `--json`, the terminal receipt reports `completedRef`, `verifiedSourceSha`, whether `activeAliasDisposition` was `retained` or `removed`, whether `recordRetired` completed, and the parent `lifecycleCommit`. `--no-commit` is a manual/library-only option: for a synced project it still removes the checkout but deliberately leaves `lifecycleCommit` null. Never pass it through `oat-project-complete`, which requires that receipt.
155
155
  - `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.
156
- - `oat project dispatch record --event-file <json-file-or-dash> [--project <project-path>]` - validate one generic dispatch record plus its namespaced OAT evidence event, and persist it into the project's append-only `dispatch/` journal. Omit `--project` to validate without persisting. Revision 1 is `dispatch/<request-id>.json` and every later revision is `dispatch/<request-id>@<NNNN>.json`; superseded revisions are never replaced or removed. The command validates and records evidence only — it never launches a provider. A `runtime-observation` event may carry either a finished `observation` or the provider `metadata` envelope (`provider`, `observedAt`, `entries`) to normalize, but not both. `entries` may be raw provider output: they are projected through the owning parser's allowlist, are never persisted, and both forms have their `match` derived from the record's configured invocation rather than trusted from the caller, with the observation's `provider` bound to the record's. With `--json`, the result adds `runtimeIdentity` with separate `configured` and `observed` objects plus a `match` of `matching`, `mismatching`, `not-comparable`, or `null`; observation is corroboration only and never overrides configured invocation. Error output is redacted on a best-effort basis; absolute paths in identity fields are rejected outright, while some prose forms (colon-prefixed, URL routes) can survive. See [Evidence Layers](../workflows/projects/evidence-layers.md).
156
+ - `oat project dispatch record --event-file <json-file-or-dash> [--project <project-path>]` - validate one generic dispatch record plus its namespaced OAT evidence event, and persist it into the project's append-only `dispatch/` journal (optional; no lifecycle skill requires it). Omit `--project` to validate without persisting. Revision 1 is `dispatch/<request-id>.json` and every later revision is `dispatch/<request-id>@<NNNN>.json`; superseded revisions are never replaced or removed. The command validates and records evidence only — it never launches a provider. A `runtime-observation` event may carry either a finished `observation` or the provider `metadata` envelope (`provider`, `observedAt`, `entries`) to normalize, but not both. `entries` may be raw provider output: they are projected through the owning parser's allowlist, are never persisted, and both forms have their `match` derived from the record's configured invocation rather than trusted from the caller, with the observation's `provider` bound to the record's. With `--json`, the result adds `runtimeIdentity` with separate `configured` and `observed` objects plus a `match` of `matching`, `mismatching`, `not-comparable`, or `null`; observation is corroboration only and never overrides configured invocation. Error output is redacted on a best-effort basis; absolute paths in identity fields are rejected outright, while some prose forms (colon-prefixed, URL routes) can survive. See [Evidence Layers](../workflows/projects/evidence-layers.md).
157
157
  - `oat project validate-plan --project-path <path>` - validates `oat_plan_parallel_groups` metadata in `plan.md`; exits non-zero on invalid. Lite plans must contain exactly one phase, declare no parallel groups, and give every Validation Criteria bullet either a backticked command or a `manual:` instruction. See [Implementation Execution](../workflows/projects/implementation-execution.md#parallel-phase-groups).
158
158
  - `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).
159
159
  - `oat project set-mode` — deprecated no-op. Execution mode is no longer user-selectable; emits a deprecation warning and preserves the `--json` contract.
@@ -75,9 +75,12 @@ This layer maps to Dispatch Report V1 and its provenance record; see the
75
75
  [Dispatch Report V1 / producer provenance](dispatch-ceiling.md#dispatch-report-v1-and-producer-provenance)
76
76
  section.
77
77
 
78
- For project-aware work, OAT persists this native dispatch lineage as one
79
- generic record per request under the project's `dispatch/` directory. The
80
- generic snake-case fields remain authoritative. A namespaced `oat` block adds
78
+ For project-aware work, the calling workflow records each launch in its run
79
+ record in `implementation.md` (request ID, `Dispatch:` stamp, launch status,
80
+ terminal outcome). Persisting one generic record per request under the
81
+ project's `dispatch/` directory with `oat project dispatch record` is optional
82
+ and off by default; no lifecycle skill or command consumes those files. When a
83
+ host opts in, the generic snake-case fields remain authoritative. A namespaced `oat` block adds
81
84
  only canonical-role identity, proven pre-start rejection, fallback linkage,
82
85
  and optional runtime observation. `DispatchReportV1` and the parseable
83
86
  `Dispatch:` compatibility stamp keep their existing byte shape.
@@ -73,9 +73,10 @@ The root does not implement phase tasks while an accepted phase launch owns
73
73
  that scope.
74
74
 
75
75
  Before a native launch, the root constructs and redacts the complete generic
76
- dispatch record and OAT role event. Immediately after the host returns, it runs
77
- `oat project dispatch record --project <project-path> --event-file - --json`
78
- with the accepted or `blocked-before-start` result. An accepted launch closes
76
+ dispatch record and OAT role event. When the host returns, it writes the
77
+ request ID, the `Dispatch:` stamp, and the accepted or `blocked-before-start`
78
+ result into the run record in `implementation.md`; persisting a per-dispatch
79
+ file with `oat project dispatch record` is optional and off by default. An accepted launch closes
79
80
  replacement. Only an explicit rejection proving no child started permits one
80
81
  fresh request that preserves the exact target and controls and is labeled as
81
82
  an approximation. Timeout, `BLOCKED`, refusal after acceptance, runtime
@@ -123,10 +123,12 @@ launch.
123
123
  ## Native Dispatch Lineage
124
124
 
125
125
  The launcher constructs and redacts the complete generic record plus the
126
- namespaced OAT role event before it calls the native host. Immediately after
127
- the host returns, the project adapter validates and persists the accepted or
128
- `blocked-before-start` state with `oat project dispatch record`. The command is
129
- a recorder only; it never launches a provider or changes selection authority.
126
+ namespaced OAT role event before it calls the native host. When the host
127
+ returns, the calling workflow writes the accepted or `blocked-before-start`
128
+ state into its run record in `implementation.md`. Persisting a per-dispatch
129
+ file with `oat project dispatch record` is optional and off by default; the
130
+ command is a recorder only and never launches a provider or changes selection
131
+ authority.
130
132
 
131
133
  An accepted handle owns the scope and closes replacement. One fresh fallback
132
134
  record is legal only when the native wrapper proves no child started, links the
@@ -1,6 +1,6 @@
1
1
  {
2
- "cli": "0.2.67",
3
- "docs-config": "0.2.67",
4
- "docs-theme": "0.2.67",
5
- "docs-transforms": "0.2.67"
2
+ "cli": "0.2.69",
3
+ "docs-config": "0.2.69",
4
+ "docs-theme": "0.2.69",
5
+ "docs-transforms": "0.2.69"
6
6
  }
@@ -5,7 +5,7 @@ disable-model-invocation: true
5
5
  user-invocable: false
6
6
  allowed-tools: Read
7
7
  metadata:
8
- version: 1.2.7
8
+ version: 1.2.8
9
9
  ---
10
10
 
11
11
  # Dispatching OAT Subagents
@@ -175,7 +175,9 @@ terminal outcome, not a pre-start rejection, and must be recorded through
175
175
  `child_outcome`. If you cannot prove the child never existed, you cannot set
176
176
  `provesNoChildStarted: true`, and no fallback is authorized.
177
177
 
178
- Project-aware callers pass the validated record and event on standard input:
178
+ The calling workflow records each launch in its own run record (request ID,
179
+ `Dispatch:` stamp, launch status, terminal outcome). Writing a per-dispatch file with `oat project dispatch record` is optional and off by default: no lifecycle skill or command consumes those files, so do not write them unless the host has explicitly opted in. A host that has opted
180
+ in passes the validated record and event on standard input:
179
181
 
180
182
  ```bash
181
183
  oat project dispatch record \
@@ -82,7 +82,8 @@ artifact already owned by the calling workflow:
82
82
 
83
83
  - planning and artifact decisions: the relevant artifact plus its review row;
84
84
  - implementation and boundary decisions: `implementation.md`;
85
- - review and dispatch decisions: the dispatch record schema and the referenced
85
+ - review and dispatch decisions: the run record in `implementation.md` (request
86
+ ID, `Dispatch:` stamp, launch status, terminal outcome) and the referenced
86
87
  review artifact;
87
88
  - gate execution: structured gate result, attempt count, and disposition;
88
89
  - documentation and completion decisions: `state.md` and the normal summary or
@@ -5,7 +5,7 @@ disable-model-invocation: true
5
5
  user-invocable: false
6
6
  allowed-tools: Read, Bash
7
7
  metadata:
8
- version: 1.1.5
8
+ version: 1.1.6
9
9
  ---
10
10
 
11
11
  # Dispatching OAT Project Subagents
@@ -152,12 +152,14 @@ For every lifecycle dispatch:
152
152
  9. Add lifecycle outcome metadata and let the calling workflow perform state,
153
153
  plan, implementation-log, commit, or review-table writes.
154
154
 
155
- ### Persist native dispatch lineage
155
+ ### Record the launch
156
156
 
157
- For project-aware launches, apply the generic engine's native dispatch lineage
158
- contract. Construct and redact the complete generic record plus OAT event
159
- before the native host call. Immediately after the call returns accepted or
160
- `blocked-before-start`, persist the result with:
157
+ For project-aware launches, construct and redact the complete generic record
158
+ plus OAT event before the native host call. When the call returns accepted or
159
+ `blocked-before-start`, the calling workflow writes the request ID, the
160
+ `Dispatch:` stamp, the launch status, and later the terminal outcome into its
161
+ run record in `implementation.md`. Writing a per-dispatch file with `oat project dispatch record` is optional and off by default: no lifecycle skill or command consumes those files, so do not write them unless the host has explicitly opted in. A host that has opted in persists the
162
+ validated record with:
161
163
 
162
164
  ```bash
163
165
  oat project dispatch record \
@@ -166,7 +168,7 @@ oat project dispatch record \
166
168
  --json
167
169
  ```
168
170
 
169
- The accepted record closes replacement. A rejected record must include
171
+ An accepted launch closes replacement. A rejected record must include
170
172
  `provesNoChildStarted: true` before one target-preserving canonical-instruction
171
173
  fallback may receive its own fresh request ID. Preserve exact provider, model,
172
174
  effort, reasoning mode, service tier, route, authority, payload controls,
@@ -82,7 +82,8 @@ artifact already owned by the calling workflow:
82
82
 
83
83
  - planning and artifact decisions: the relevant artifact plus its review row;
84
84
  - implementation and boundary decisions: `implementation.md`;
85
- - review and dispatch decisions: the dispatch record schema and the referenced
85
+ - review and dispatch decisions: the run record in `implementation.md` (request
86
+ ID, `Dispatch:` stamp, launch status, terminal outcome) and the referenced
86
87
  review artifact;
87
88
  - gate execution: structured gate result, attempt count, and disposition;
88
89
  - documentation and completion decisions: `state.md` and the normal summary or
@@ -7,7 +7,7 @@ disable-model-invocation: true
7
7
  user-invocable: true
8
8
  allowed-tools: Read, Write, Bash(git:*), Bash(oat:*), Bash(oat project log:*), Glob, Grep, AskUserQuestion, Task
9
9
  metadata:
10
- version: 2.3.7
10
+ version: 2.3.8
11
11
  ---
12
12
 
13
13
  # Implementation Phase
@@ -393,16 +393,17 @@ For gate-originated review, keep `dispatchReport.gateInvocation`, existing
393
393
  work-producer `diversity`, and reviewer `runtimeIdentity` as three distinct
394
394
  facts; producer stamps or self-report never overwrite configured invocation.
395
395
 
396
- All project-aware launch paths preserve native dispatch lineage. Construct and
397
- redact the complete generic record plus OAT role event before the native host
398
- call. Immediately after the call returns `accepted` or
399
- `blocked-before-start`, run `oat project dispatch record --project
400
- "$PROJECT_PATH" --event-file - --json`. The rejected form must attest
401
- `provesNoChildStarted: true`; only it permits one exact-target approximation
402
- with a fresh request ID. Preserve exact model, effort, reasoning, service tier,
403
- route, authority, and provider controls. Timeout, `BLOCKED`, refusal after
404
- acceptance, runtime mismatch, missing telemetry, interruption, or malformed
405
- output never authorizes fallback or replacement.
396
+ All project-aware launch paths record the launch in the project's run record.
397
+ Construct and redact the complete generic record plus OAT role event before the
398
+ native host call; when the call returns `accepted` or `blocked-before-start`,
399
+ write the request ID, the `Dispatch:` stamp, the launch status, and later the
400
+ terminal outcome into the run record in `implementation.md`. Writing a per-dispatch file with `oat project dispatch record` is optional and off by default: no lifecycle skill or command consumes those files, so do not write them unless the host has explicitly opted in. A rejected
401
+ launch must attest `provesNoChildStarted: true`; only it permits one
402
+ exact-target approximation with a fresh request ID. Preserve exact model,
403
+ effort, reasoning, service tier, route, authority, and provider controls.
404
+ Timeout, `BLOCKED`, refusal after acceptance, runtime mismatch, missing
405
+ telemetry, interruption, or malformed output never authorizes fallback or
406
+ replacement.
406
407
 
407
408
  Axis states:
408
409
 
@@ -82,7 +82,8 @@ artifact already owned by the calling workflow:
82
82
 
83
83
  - planning and artifact decisions: the relevant artifact plus its review row;
84
84
  - implementation and boundary decisions: `implementation.md`;
85
- - review and dispatch decisions: the dispatch record schema and the referenced
85
+ - review and dispatch decisions: the run record in `implementation.md` (request
86
+ ID, `Dispatch:` stamp, launch status, terminal outcome) and the referenced
86
87
  review artifact;
87
88
  - gate execution: structured gate result, attempt count, and disposition;
88
89
  - documentation and completion decisions: `state.md` and the normal summary or
@@ -82,7 +82,8 @@ artifact already owned by the calling workflow:
82
82
 
83
83
  - planning and artifact decisions: the relevant artifact plus its review row;
84
84
  - implementation and boundary decisions: `implementation.md`;
85
- - review and dispatch decisions: the dispatch record schema and the referenced
85
+ - review and dispatch decisions: the run record in `implementation.md` (request
86
+ ID, `Dispatch:` stamp, launch status, terminal outcome) and the referenced
86
87
  review artifact;
87
88
  - gate execution: structured gate result, attempt count, and disposition;
88
89
  - documentation and completion decisions: `state.md` and the normal summary or
@@ -5,7 +5,7 @@ disable-model-invocation: true
5
5
  user-invocable: false
6
6
  allowed-tools: Read, Write, Glob, Grep
7
7
  metadata:
8
- version: 1.2.24
8
+ version: 1.2.25
9
9
  ---
10
10
 
11
11
  # Plan Writing Contract
@@ -261,11 +261,12 @@ unavailable in the current session. Base Codex roles are allowed only for
261
261
  explicit inherit/default behavior and the documented managed-uncapped reviewer
262
262
  fallback.
263
263
 
264
- Artifact-review launches preserve native dispatch lineage. Construct and
265
- redact the complete generic record plus OAT role event before the native call.
266
- Immediately after the call returns `accepted` or `blocked-before-start`, the
267
- calling project workflow runs `oat project dispatch record --project
268
- "$PROJECT_PATH" --event-file - --json`. Only a rejection attesting
264
+ Artifact-review launches write no launch record. The only launch evidence is
265
+ the `Dispatch:` stamp the reviewer already copies into its dispatch audit
266
+ metadata; nothing is written to `implementation.md` (which may not exist yet
267
+ during planning) and no request-id, launch-status, or outcome field is added to
268
+ any artifact or ledger column. Construct and redact the complete generic record
269
+ plus OAT role event before the native call. Writing a per-dispatch file with `oat project dispatch record` is optional and off by default: no lifecycle skill or command consumes those files, so do not write them unless the host has explicitly opted in. Only a rejection attesting
269
270
  `provesNoChildStarted: true` permits one exact-target approximation with a
270
271
  fresh request ID. Preserve exact model, effort, route, authority, and provider
271
272
  controls. Timeout, `BLOCKED`, refusal after acceptance, runtime mismatch,
@@ -82,7 +82,8 @@ artifact already owned by the calling workflow:
82
82
 
83
83
  - planning and artifact decisions: the relevant artifact plus its review row;
84
84
  - implementation and boundary decisions: `implementation.md`;
85
- - review and dispatch decisions: the dispatch record schema and the referenced
85
+ - review and dispatch decisions: the run record in `implementation.md` (request
86
+ ID, `Dispatch:` stamp, launch status, terminal outcome) and the referenced
86
87
  review artifact;
87
88
  - gate execution: structured gate result, attempt count, and disposition;
88
89
  - documentation and completion decisions: `state.md` and the normal summary or
@@ -82,7 +82,8 @@ artifact already owned by the calling workflow:
82
82
 
83
83
  - planning and artifact decisions: the relevant artifact plus its review row;
84
84
  - implementation and boundary decisions: `implementation.md`;
85
- - review and dispatch decisions: the dispatch record schema and the referenced
85
+ - review and dispatch decisions: the run record in `implementation.md` (request
86
+ ID, `Dispatch:` stamp, launch status, terminal outcome) and the referenced
86
87
  review artifact;
87
88
  - gate execution: structured gate result, attempt count, and disposition;
88
89
  - documentation and completion decisions: `state.md` and the normal summary or
@@ -5,7 +5,7 @@ disable-model-invocation: false
5
5
  user-invocable: true
6
6
  allowed-tools: Read, Glob, Grep, Write, Edit, Bash(git:*), Bash(oat:*), Bash(pnpm:*), Bash(mkdir:*), Bash(date:*), Bash(realpath:*), Bash(awk:*), AskUserQuestion
7
7
  metadata:
8
- version: 1.5.7
8
+ version: 1.5.8
9
9
  ---
10
10
 
11
11
  # Request Review
@@ -751,15 +751,16 @@ After constructing the complete provider payload, record the launcher-owned
751
751
  missing telemetry, missing reviewer self-report, or contradictory self-report
752
752
  must not populate, replace, or overwrite them and must not trigger fallback.
753
753
 
754
- Persist native dispatch lineage around the host-owned review launch. Construct
755
- and redact the complete generic record plus OAT role event before the native
756
- call. Immediately after the call returns `accepted` or
757
- `blocked-before-start`, run `oat project dispatch record --project
758
- "$PROJECT_PATH" --event-file - --json`. The rejected form must attest
759
- `provesNoChildStarted: true`; only it permits one exact-target approximation
760
- with a fresh request ID. Preserve the exact model, effort, route, authority,
761
- and provider controls. Timeout, `BLOCKED`, refusal after acceptance, runtime
762
- mismatch, missing telemetry, interruption, and malformed output never
754
+ This rail writes no launch record. Its only launch evidence is the `Dispatch:`
755
+ stamp it already copies into the review artifact's dispatch audit metadata
756
+ (Step 6.0); it never writes `implementation.md` (this rail requires that file
757
+ clean and never commits it) and adds no request-id, launch-status, or outcome
758
+ field to any artifact or ledger column. Construct and redact the complete
759
+ generic record plus OAT role event before the native call. Writing a per-dispatch file with `oat project dispatch record` is optional and off by default: no lifecycle skill or command consumes those files, so do not write them unless the host has explicitly opted in. A rejected launch must
760
+ attest `provesNoChildStarted: true`; only it permits one exact-target
761
+ approximation with a fresh request ID. Preserve the exact model, effort, route,
762
+ authority, and provider controls. Timeout, `BLOCKED`, refusal after acceptance,
763
+ runtime mismatch, missing telemetry, interruption, and malformed output never
763
764
  authorize fallback or replacement.
764
765
 
765
766
  Once the native host accepts a reviewer, every terminal result is an
@@ -5,7 +5,7 @@ disable-model-invocation: true
5
5
  user-invocable: true
6
6
  allowed-tools: Read, Write, Bash, Glob, Grep, Task, AskUserQuestion
7
7
  metadata:
8
- version: 1.1.4
8
+ version: 1.1.5
9
9
  ---
10
10
 
11
11
  # Remote Review Provide (Project-Scoped GitHub PR)
@@ -319,11 +319,12 @@ route. After acceptance, continue only through the existing reviewer handle;
319
319
  timeout, interruption, malformed output, or `BLOCKED` never authorizes a
320
320
  replacement launch.
321
321
 
322
- Persist native dispatch lineage around the host-owned remote-review launch.
323
- Construct and redact the complete generic record plus OAT role event before the
324
- native call. Immediately after the call returns `accepted` or
325
- `blocked-before-start`, run `oat project dispatch record --project
326
- "$PROJECT_PATH" --event-file - --json`. The rejected form must attest
322
+ This rail writes no launch record. Its only launch evidence is the `Dispatch:`
323
+ stamp it already copies into the posted review's dispatch audit metadata; it
324
+ never writes `implementation.md` (the remote rail runs in an ephemeral worktree
325
+ and forbids that mutation) and adds no request-id, launch-status, or outcome
326
+ field anywhere. Construct and redact the complete generic record plus OAT role
327
+ event before the native call. Writing a per-dispatch file with `oat project dispatch record` is optional and off by default: no lifecycle skill or command consumes those files, so do not write them unless the host has explicitly opted in. A rejected launch must attest
327
328
  `provesNoChildStarted: true`; only it permits one exact-target approximation
328
329
  with a fresh request ID. Preserve exact model, effort, route, authority, and
329
330
  provider controls. Timeout, `BLOCKED`, refusal after acceptance, runtime
@@ -6,7 +6,7 @@ disable-model-invocation: false
6
6
  user-invocable: true
7
7
  allowed-tools: Read, Write, Edit, Bash, Grep, Glob, Task
8
8
  metadata:
9
- version: 1.9.2
9
+ version: 1.9.3
10
10
  ---
11
11
 
12
12
  # Execute a Wave of External Plans
@@ -235,9 +235,18 @@ writes and stay on the orchestrator's own model class, the same rule
235
235
 
236
236
  Run the cross-runtime artifact gate with a **bounded** prompt (rule 6): review the
237
237
  wrapper artifacts for plan invariants, contract consistency, frontmatter validity,
238
- and whether any task restates/narrows its source plan — the external plans are
239
- immutable inputs, NOT review targets. Disposition findings in-artifact
240
- (gate-invoked artifact review) and commit. A plan gate MAY PROCEED at
238
+ and whether any task restates/narrows its source plan. The external plans'
239
+ content is immutable to the wave (the gate never rewrites a plan), but a plan is
240
+ a legitimate target for one question: whether its proposed mechanism materially
241
+ serves the requested outcome. A reviewer who finds substantial machinery with no
242
+ identifiable consumer — an agent acting on a named instruction, a human reading
243
+ a named surface, or code at a named call site — or a smaller approach that
244
+ preserves the requirements, reports it as a necessity finding. The root returns
245
+ that plan to its author (`oat-repo-improve`) for disposition and defers it from
246
+ this wave until dispositioned; it never silently drops or narrows it, and an
247
+ explicitly stated user requirement is honored over a preference for simplicity.
248
+ Disposition the remaining findings in-artifact (gate-invoked artifact review)
249
+ and commit. A plan gate MAY PROCEED at
241
250
  `fixes_completed` per the wave-0/1 precedent, but that is a proceed point, not a
242
251
  terminal state. Every gate row MUST flip to `passed` once all fix dispositions
243
252
  carry the stored verification records required by the fix-disposition contract below;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open-agent-toolkit/cli",
3
- "version": "0.2.67",
3
+ "version": "0.2.69",
4
4
  "private": false,
5
5
  "description": "Open Agent Toolkit CLI",
6
6
  "homepage": "https://github.com/voxmedia/open-agent-toolkit/tree/main/packages/cli",
@@ -34,7 +34,7 @@
34
34
  "ora": "^9.0.0",
35
35
  "yaml": "2.8.2",
36
36
  "zod": "^3.25.76",
37
- "@open-agent-toolkit/control-plane": "0.2.67"
37
+ "@open-agent-toolkit/control-plane": "0.2.69"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@types/node": "^22.10.0",