@open-agent-toolkit/cli 0.2.27 → 0.2.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/agents/oat-phase-implementer.md +312 -7
- package/assets/docs/workflows/projects/implementation-execution.md +151 -1
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-dispatch-subagents/SKILL.md +16 -3
- package/assets/skills/oat-project-autonomous/references/gate-inventory.md +2 -2
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +2 -2
- package/assets/skills/oat-project-implement/SKILL.md +5 -4
- package/assets/skills/oat-project-implement/references/dispatch-and-dry-run.md +21 -0
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +2 -2
- package/assets/skills/oat-project-implement/references/phase-execution.md +359 -12
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +2 -2
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +2 -2
- package/assets/templates/state.md +7 -0
- package/package.json +2 -2
|
@@ -22,7 +22,16 @@ Before each phase:
|
|
|
22
22
|
1. Resolve the project dispatch policy and optional narrower phase maximum from
|
|
23
23
|
the plan's `## Dispatch Profile`. Classify the complete phase scope and
|
|
24
24
|
record the classification source and rationale. For Codex, also classify
|
|
25
|
-
the preferred task effort.
|
|
25
|
+
the preferred task effort. Separately resolve
|
|
26
|
+
`oat_phase_recovery_policy`: use the phase-specific
|
|
27
|
+
`phase_attempt_limits.<pNN>` value when present, otherwise
|
|
28
|
+
`default_attempt_limit`, which defaults to `10`. Both project-default and
|
|
29
|
+
phase-specific limits must be integers from `0` through `20`; fail closed on
|
|
30
|
+
malformed values. Read `phase_recovery_attempts_used` only from the
|
|
31
|
+
authoritative
|
|
32
|
+
`oat_phase_recovery_policy.phase_attempt_usage.<pNN>.used_attempts` ledger in
|
|
33
|
+
`state.md`, never from a report summary or a reset local counter. Reconcile
|
|
34
|
+
any `pending_attempt` before launch.
|
|
26
35
|
2. Resolve one exact phase implementer target with
|
|
27
36
|
`--role implementer --ceiling-tier <project-or-phase-named-tier> --task-class <task-class> [--task-effort <codex-preferred-effort>] --report-scope <pNN> --report-action implementation`.
|
|
28
37
|
Use the phase scope, not each task ID. Omit `--ceiling-tier` only for
|
|
@@ -53,6 +62,12 @@ Before each phase:
|
|
|
53
62
|
expected_base_sha: {group base or PHASE_BASE_HEAD}
|
|
54
63
|
commit_convention: {from plan.md}
|
|
55
64
|
request_id: {generic dispatch request ID}
|
|
65
|
+
phase_recovery_limit: {resolved 0-20 limit}
|
|
66
|
+
phase_recovery_attempts_used: {durable prior usage, initially 0}
|
|
67
|
+
attempt_usage_ledger: {state.md oat_phase_recovery_policy.phase_attempt_usage.<pNN>}
|
|
68
|
+
pending_attempt: {reconciled pending entry or null}
|
|
69
|
+
original_request_id: {same generic phase dispatch request ID}
|
|
70
|
+
phase_recovery_authorization: {phase-standing|operator-extension}
|
|
56
71
|
dispatch_policy: {resolver policy}
|
|
57
72
|
dispatch_ceiling: {resolved project/phase maximum or none}
|
|
58
73
|
dispatch_target: {resolver exact target}
|
|
@@ -77,6 +92,11 @@ another target-preserving route. After acceptance, missing telemetry, timeout,
|
|
|
77
92
|
`BLOCKED`, or any other terminal outcome cannot trigger fallback or
|
|
78
93
|
replacement.
|
|
79
94
|
|
|
95
|
+
The phase recovery limit is not a route retry limit. Implementation recovery
|
|
96
|
+
must not use route escalation, route-level advancement, model/provider
|
|
97
|
+
replacement, or `oat_orchestration_retry_limit`. It remains pinned to the exact
|
|
98
|
+
accepted implementation target.
|
|
99
|
+
|
|
80
100
|
Tier 2 inline execution is allowed only under the existing verified-equivalent
|
|
81
101
|
controls or documented inherit/default exception. Inline mode executes the
|
|
82
102
|
phase-implementer contract directly; it does not reintroduce mandatory
|
|
@@ -86,23 +106,345 @@ Optional third-tier readiness is not a preflight blocker. Codex depth two may be
|
|
|
86
106
|
provisioned as capability, but default phase execution requires only the root →
|
|
87
107
|
phase-agent depth.
|
|
88
108
|
|
|
89
|
-
####
|
|
109
|
+
#### Dedicated Phase Recovery Contract
|
|
110
|
+
|
|
111
|
+
This contract covers only a post-commit defect discovered by declared task,
|
|
112
|
+
transition, or phase verification. The default `10` attempt limit and a
|
|
113
|
+
phase-specific `0`–`20` override are independent of review-fix and gate retry
|
|
114
|
+
configuration.
|
|
115
|
+
|
|
116
|
+
```yaml
|
|
117
|
+
oat_phase_recovery_policy:
|
|
118
|
+
default_attempt_limit: 10
|
|
119
|
+
phase_attempt_limits: {} # optional pNN: 0-20 overrides
|
|
120
|
+
phase_attempt_usage:
|
|
121
|
+
pNN:
|
|
122
|
+
used_attempts: 0
|
|
123
|
+
pending_attempt: null
|
|
124
|
+
```
|
|
90
125
|
|
|
91
|
-
|
|
126
|
+
A phase's `phase_attempt_usage.<pNN>` entry in `state.md` is the authoritative
|
|
127
|
+
durable usage ledger. The count is monotonic and survives process, handle, and
|
|
128
|
+
session interruption. Reports and canonical events corroborate the ledger; they
|
|
129
|
+
never replace it.
|
|
130
|
+
|
|
131
|
+
For a new attempt, the phase implementer that owns the worktree atomically
|
|
132
|
+
increments `used_attempts` and writes `pending_attempt` before edit. The pending
|
|
133
|
+
entry records attempt number, event ID, original request, original task/commit,
|
|
134
|
+
discovering check, exact dispatch target, reservation HEAD, and status. The
|
|
135
|
+
agent's narrow ledger write is the only project-state write allowed while it
|
|
136
|
+
owns the worktree; no root writer may race it.
|
|
137
|
+
|
|
138
|
+
On return or resume, reconcile the ledger against the original commit, current
|
|
139
|
+
HEAD, bounded diff, report, and canonical event:
|
|
140
|
+
|
|
141
|
+
- before bookkeeping, `pending_attempt` is either an active reservation, a
|
|
142
|
+
matching committed terminal marker with status `completed` or `failed`, or
|
|
143
|
+
`null` only when no recovery attempt is reported;
|
|
144
|
+
- an active pending attempt continues, after every recorded identity and bounded
|
|
145
|
+
diff reconcile, as the same attempt without consuming another;
|
|
146
|
+
- a nonzero `used_attempts` count with a matching pending attempt continues only
|
|
147
|
+
after complete reconciliation and does not consume another attempt;
|
|
148
|
+
- an interruption preserves the consumed reservation in the working tree, even
|
|
149
|
+
if no recovery commit exists yet;
|
|
150
|
+
- a matching committed terminal marker is a pre-bookkeeping handoff for root
|
|
151
|
+
validation, not a settled ledger;
|
|
152
|
+
- a prematurely cleared marker when a report claims an attempt, a mismatched
|
|
153
|
+
status or identity, an active marker presented as terminal, an unreconciled
|
|
154
|
+
pending attempt, a regressed count, a missing reservation, or an unexplained
|
|
155
|
+
dirty file fails closed before bookkeeping; and
|
|
156
|
+
- when `used_attempts` is equal to or greater than `phase_recovery_limit`, no
|
|
157
|
+
new attempt may be reserved because the phase recovery budget is exhausted.
|
|
158
|
+
An already-pending attempt may only finish or fail.
|
|
159
|
+
|
|
160
|
+
An unreconciled pending attempt rejects and blocks resume before editing; it
|
|
161
|
+
cannot be converted into a terminal handoff by report wording.
|
|
162
|
+
|
|
163
|
+
After applying a bounded correction, the agent runs focused and phase
|
|
164
|
+
verification before creating a candidate commit. When both checks pass, it
|
|
165
|
+
atomically marks the pending entry `completed`, creates the append-only recovery
|
|
166
|
+
commit containing the bounded correction plus that transition, and immediately
|
|
167
|
+
reruns both checks against the committed HEAD. Those post-commit reruns are the
|
|
168
|
+
authoritative recovery result. If either rerun fails, the agent atomically
|
|
169
|
+
replaces `completed` with `failed` and durably commits that ledger-only
|
|
170
|
+
transition; the immutable candidate commit is not reported as a successful
|
|
171
|
+
recovery commit. A check that fails before the candidate commit instead restores
|
|
172
|
+
the bounded files to their original committed content and durably commits only
|
|
173
|
+
the matching `failed` transition. Inability to commit terminal evidence remains
|
|
174
|
+
unreconciled and cannot be cleared. Root bookkeeping clears a matching terminal
|
|
175
|
+
marker only after validating the report, event, immutable history, accounting,
|
|
176
|
+
exact target and axes, and authoritative post-commit verification when a
|
|
177
|
+
candidate commit exists.
|
|
178
|
+
It always preserves `used_attempts` and, for a failed attempt, the terminal-stop
|
|
179
|
+
disposition. The resulting `pending_attempt: null` state is the settled ledger.
|
|
180
|
+
Failed edit, commit, or re-verification paths retain the consumed count. No
|
|
181
|
+
retry, fresh launch, extension, or nonzero resume resets usage.
|
|
182
|
+
|
|
183
|
+
A project default limit of `0` stops automatic recovery for direction without
|
|
184
|
+
edit, commit, attempt consumption, or fallback. A phase-specific override of
|
|
185
|
+
`0` has the same effect: stop for direction without edit, commit, attempt
|
|
186
|
+
consumption, or fallback. Still append the direction-required recovery event.
|
|
187
|
+
|
|
188
|
+
Automatic recovery is eligible only when every condition is true:
|
|
189
|
+
|
|
190
|
+
- the correction is mechanically bounded and unambiguous;
|
|
191
|
+
- it remains within declared phase intent and public requirements;
|
|
192
|
+
- any file-boundary expansion is mechanically derived and remains in-phase;
|
|
193
|
+
- architecture, security, product scope, requirements, and public behavior are
|
|
194
|
+
unchanged;
|
|
195
|
+
- the work is non-destructive, reversible, and outside protected-branch,
|
|
196
|
+
credential, or other consequential boundaries;
|
|
197
|
+
- the exact target remains unchanged and bindable regardless of handle state;
|
|
198
|
+
- handle continuity follows one of the authorized alternatives below;
|
|
199
|
+
- attempt accounting follows one of the authorized alternatives below; and
|
|
200
|
+
- focused plus relevant phase verification can establish correctness.
|
|
201
|
+
|
|
202
|
+
Handle and exact-target continuity use these mutually compatible branches:
|
|
203
|
+
|
|
204
|
+
1. When the accepted handle is available or resumable, use same-handle
|
|
205
|
+
continuation.
|
|
206
|
+
2. When the accepted handle is unavailable or unresumable, an unchanged,
|
|
207
|
+
bindable exact target plus a lifecycle-authorized recover scope, a reconciled
|
|
208
|
+
pending attempt, and continuation linkage authorizes fresh `mode: recover`.
|
|
209
|
+
3. A lost or unbindable exact target requires a direction-required stop with no
|
|
210
|
+
fallback.
|
|
211
|
+
|
|
212
|
+
Handle unavailability alone does not make automatic recovery ineligible or
|
|
213
|
+
stop it. It selects the second branch only when all its conditions hold.
|
|
214
|
+
|
|
215
|
+
Attempt accounting uses exactly one of these alternatives:
|
|
216
|
+
|
|
217
|
+
1. **Pending completion:** a matching `pending_attempt` may continue only after
|
|
218
|
+
complete reconciliation of the authoritative ledger, original request,
|
|
219
|
+
immutable original commit at the same history position, bounded worktree
|
|
220
|
+
diff, and unchanged exact target. Continue and finish that same reserved
|
|
221
|
+
attempt without incrementing `used_attempts` or creating another
|
|
222
|
+
reservation, even when the existing count equals the limit.
|
|
223
|
+
2. **New reservation:** when no `pending_attempt` exists,
|
|
224
|
+
`phase_recovery_attempts_used < phase_recovery_limit` is mandatory. Atomically
|
|
225
|
+
increment usage and write the new reservation before editing.
|
|
226
|
+
|
|
227
|
+
For the final-attempt boundary, `limit=1`, `used=1`, and a fully reconciled
|
|
228
|
+
matching `pending_attempt` continue and finish the same reserved attempt
|
|
229
|
+
without incrementing usage. With `limit=1`, `used=1`, and no `pending_attempt`,
|
|
230
|
+
stop direction-required before edit with no new reservation and no fallback.
|
|
231
|
+
|
|
232
|
+
The implementer records eligibility before editing. A new reservation consumes
|
|
233
|
+
one attempt before editing begins. A failed edit, commit, or re-verification
|
|
234
|
+
leaves that attempt consumed and records no successful recovery commit.
|
|
235
|
+
Continuing a reconciled pending attempt does not consume another. Successful
|
|
236
|
+
recovery creates one append-only recovery commit per successful attempt, reruns
|
|
237
|
+
the failing focused command and relevant phase verification against committed
|
|
238
|
+
HEAD as the authoritative result, and continues without a prompt. A failed
|
|
239
|
+
post-commit rerun transitions the committed marker to `failed` in separate
|
|
240
|
+
ledger-only terminal evidence and stops without claiming the candidate as a
|
|
241
|
+
successful recovery commit. At three recovery events, require an elevated
|
|
242
|
+
recovery-volume warning and continue if all eligibility conditions still hold.
|
|
243
|
+
|
|
244
|
+
One no-edit rerun is permitted for evidence-backed infrastructure or flake
|
|
245
|
+
failure without attempt consumption. A repeated unexplained failure is
|
|
246
|
+
ambiguous: stop without edit and record direction-required rather than
|
|
247
|
+
speculating.
|
|
248
|
+
|
|
249
|
+
The accepted task commit remains immutable at the same history position.
|
|
250
|
+
Amend, reset, rebase, squash, replacement task IDs, or concealed rewriting
|
|
251
|
+
invalidates the report. Mechanically related failures from the same
|
|
252
|
+
verification command may be handled in one atomic attempt and commit.
|
|
253
|
+
Independent failures require separate attempts and commits.
|
|
254
|
+
|
|
255
|
+
Stop with `DONE_WITH_CONCERNS` or `BLOCKED` for ambiguous or contradictory
|
|
256
|
+
evidence; architecture, security, product, requirements, or public-behavior
|
|
257
|
+
change; non-mechanical file-boundary widening; destructive, irreversible,
|
|
258
|
+
credential-bearing, protected-branch, or out-of-scope work; retry exhaustion;
|
|
259
|
+
dirty worktree or dirty history; inability to establish correctness; missing
|
|
260
|
+
original-request or missing exact-target provenance; unverifiable commit range;
|
|
261
|
+
malformed recovery event; exact-target loss; or an independent governance cap.
|
|
262
|
+
No stop boundary authorizes a fallback model, provider, route, or worker.
|
|
263
|
+
If the exact target is lost or cannot continue, stop before editing.
|
|
264
|
+
Architecture, security, product, or requirements changes stop for direction.
|
|
265
|
+
Non-mechanical widening or destructive work stops before editing. Retry
|
|
266
|
+
exhaustion and every governance cap stop automatic recovery. A dirty worktree
|
|
267
|
+
or dirty history blocks continuation. Inability to establish correctness,
|
|
268
|
+
missing original-request provenance, missing exact-target provenance, an
|
|
269
|
+
unverifiable commit range, or a malformed recovery event stops for direction.
|
|
270
|
+
If focused and phase verification cannot establish correctness, stop for
|
|
271
|
+
direction.
|
|
272
|
+
|
|
273
|
+
When the accepted handle can continue, use only that handle. If it cannot be
|
|
274
|
+
resumed, a fresh same-target recovery launch is allowed only under this
|
|
275
|
+
already-resolved lifecycle authority. Preserve the exact target and link the
|
|
276
|
+
fresh record to the original request through the generic dispatch record's
|
|
277
|
+
existing `continuation_events`. Missing or changed provenance stops; it never
|
|
278
|
+
creates route eligibility.
|
|
279
|
+
|
|
280
|
+
Before that fresh launch, reconcile or create exactly one authoritative pending
|
|
281
|
+
attempt reservation. Launch the exact original phase-agent target in
|
|
282
|
+
`mode: recover` with this isolated scope:
|
|
283
|
+
|
|
284
|
+
```yaml
|
|
285
|
+
mode: recover
|
|
286
|
+
phase: { pNN }
|
|
287
|
+
original_request_id: { original phase request }
|
|
288
|
+
continuation_event: { generic continuation_events identifier }
|
|
289
|
+
recovery_base_head: { current immutable Git HEAD }
|
|
290
|
+
original_task_id: { originating planned task }
|
|
291
|
+
original_commit: { immutable task commit }
|
|
292
|
+
defect_class: { lint|type|test|build|composition|other }
|
|
293
|
+
discovered_by: { exact command or transition check }
|
|
294
|
+
bounded_correction_scope: { mechanical correction only }
|
|
295
|
+
bounded_files: { declared or mechanically derived in-phase files }
|
|
296
|
+
phase_recovery_limit: { resolved total limit }
|
|
297
|
+
phase_recovery_attempts_used: { authoritative nonzero used count }
|
|
298
|
+
pending_attempt: { matching authoritative ledger entry }
|
|
299
|
+
focused_verification: { exact failing check }
|
|
300
|
+
phase_verification: { relevant phase command }
|
|
301
|
+
dispatch_target: { exact original launcher-owned target }
|
|
302
|
+
dispatch_axes: { unchanged original axes }
|
|
303
|
+
dispatch_stamp: { original formal Dispatch line }
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
Recover mode never replays planned tasks and never consumes review findings.
|
|
307
|
+
Require its Phase Recovery Continuation Report, matching canonical event,
|
|
308
|
+
ledger reconciliation, immutable-history proof, focused/phase verification,
|
|
309
|
+
and recovery commit when successful. A missing field, changed target, unrelated
|
|
310
|
+
dirty diff, or unreconciled reservation is an accepted terminal stop, not
|
|
311
|
+
fallback eligibility.
|
|
312
|
+
|
|
313
|
+
Exhaustion requires operator direction with one of these durable outcomes:
|
|
314
|
+
|
|
315
|
+
1. **Add N attempts:** set the active phase's total
|
|
316
|
+
to `used_attempts + N` under `phase_attempt_limits.<pNN>`, capped at `20`;
|
|
317
|
+
do not reset prior usage.
|
|
318
|
+
2. **Authorize changed scope:** record a consequential or scope-expanding
|
|
319
|
+
action outside automatic recovery.
|
|
320
|
+
3. **Stop:** preserve the worktree, immutable history, and evidence.
|
|
321
|
+
|
|
322
|
+
An extension preserves the exact implementation target unless the operator
|
|
323
|
+
explicitly authorizes a separate route action. Repeated exhaustion never resets
|
|
324
|
+
usage or silently lifts the cap.
|
|
325
|
+
|
|
326
|
+
Append exactly one canonical recovery event for every recovered,
|
|
327
|
+
direction-required, or failed-attempt disposition:
|
|
328
|
+
|
|
329
|
+
```markdown
|
|
330
|
+
### Recovery Event {event-id}
|
|
331
|
+
|
|
332
|
+
- Phase/task: {phase and originating task when known}
|
|
333
|
+
- Original request: {original_request_id}
|
|
334
|
+
- Original commit: {immutable task commit}
|
|
335
|
+
- Defect class: lint | type | test | build | composition | other
|
|
336
|
+
- Discovered by: {exact verification command or transition check}
|
|
337
|
+
- Disposition: recovered | direction-required | failed-attempt
|
|
338
|
+
- Authorization: phase-standing | operator-extension | operator-scope
|
|
339
|
+
- Attempt: {used}/{phase_recovery_limit}
|
|
340
|
+
- Dispatch target: {exact launcher-owned implementation target}
|
|
341
|
+
- Recovery commit: {sha or -}
|
|
342
|
+
- Verification: {focused and relevant phase result}
|
|
343
|
+
- Reason: {eligibility or stop-boundary evidence}
|
|
344
|
+
```
|
|
92
345
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
346
|
+
Exactly one event is counted even when an attempt fails before a commit. The
|
|
347
|
+
canonical fields make defect count, prompt count, and successful repair count
|
|
348
|
+
independently measurable. Root bookkeeping copies validated report facts; it
|
|
349
|
+
does not infer or reconstruct them.
|
|
350
|
+
|
|
351
|
+
#### Verify the Phase Report
|
|
352
|
+
|
|
353
|
+
On return, select exactly one branch from this status matrix:
|
|
354
|
+
|
|
355
|
+
| Report status | Validation branch | Root action |
|
|
356
|
+
| -------------------- | ------------------------------------------------------------ | --------------------------------------------------------------------------- |
|
|
357
|
+
| `DONE` | accepted success | Validate the complete report and continue lifecycle execution. |
|
|
358
|
+
| `DONE_WITH_CONCERNS` | accepted success or accepted terminal stop, from event state | Continue only for validated success; otherwise record the stop and return. |
|
|
359
|
+
| `BLOCKED` | accepted terminal stop | Validate the complete terminal evidence, record it, and stop. |
|
|
360
|
+
| `NEEDS_CONTEXT` | context-only continuation | Supply only missing artifact context through the original accepted handle. |
|
|
361
|
+
| `INVALID_RUN_ABORT` | invalid-run terminal | Preserve invalidating evidence and terminate every handle owned by the run. |
|
|
362
|
+
|
|
363
|
+
`INVALID_RUN_ABORT` terminates every accepted handle and never authorizes
|
|
364
|
+
fallback, replacement, or sequential degradation.
|
|
365
|
+
|
|
366
|
+
##### Pre-bookkeeping terminal handoff matrix
|
|
367
|
+
|
|
368
|
+
Select the report-status branch and exactly one attempt-state row. These are
|
|
369
|
+
pre-bookkeeping states, so none of the rows with a terminal marker is a settled
|
|
370
|
+
ledger:
|
|
371
|
+
|
|
372
|
+
| Reported attempt state | Required committed pre-bookkeeping ledger | Root validation | Root action |
|
|
373
|
+
| --------------------------------------------- | ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
|
|
374
|
+
| No recovery attempt reported | `pending_attempt: null` | Validate that the report claims no recovery attempt or recovery event and no attempt-accounting transition; ordinary phase success may continue. | Leave `pending_attempt` null; accepted success may continue. |
|
|
375
|
+
| `direction-required` before any attempt | `pending_attempt: null` | Validate the terminal-stop report, canonical `direction-required` event, unchanged usage, immutable history, and evidence of no reservation, edit, or recovery commit. | Leave `pending_attempt` null, preserve usage, record the event, and stop. |
|
|
376
|
+
| Recovery reported as `recovered` | Matching committed `completed` marker | Validate the report, immutable original history, recovery commit, exact target and axes, canonical `recovered` event, attempt count, and all verification. | After all validation passes, clear the marker, preserve `used_attempts`, record the event, continue. |
|
|
377
|
+
| Recovery reported as `failed-attempt` | Matching committed `failed` marker | Validate the terminal-stop report, event, immutable history, accounting, exact target and axes, attempt count, and failed verification evidence. | After all validation passes, clear the marker, preserve `used_attempts` and the stop disposition. |
|
|
378
|
+
| Attempt reported with `pending_attempt: null` | Invalid premature clear | Fail closed because the claimed attempt has no committed terminal marker. | Perform no bookkeeping and do not continue or fallback. |
|
|
379
|
+
| Terminal status or identity mismatch | Invalid contradiction | Fail closed on a status, event ID, request, task/commit, target, attempt-number, or disposition mismatch. | Perform no bookkeeping and do not continue or fallback. |
|
|
380
|
+
| Marker status `active` | Invalid in-flight state | Fail closed because an active reservation is not a terminal handoff. | Perform no bookkeeping and do not continue or fallback. |
|
|
381
|
+
| Any other unreconciled or contradictory state | Invalid | Fail closed before mutating project state. | Perform no bookkeeping and do not continue or fallback. |
|
|
382
|
+
|
|
383
|
+
Only after a selected `recovered` or `failed-attempt` row validates completely
|
|
384
|
+
may root bookkeeping clear `pending_attempt`, append the validated canonical
|
|
385
|
+
event, and preserve monotonic `used_attempts`. For `failed-attempt`, clearing
|
|
386
|
+
must also preserve the terminal-stop disposition and then stop. The no-recovery
|
|
387
|
+
and pre-attempt `direction-required` rows already have `pending_attempt: null`;
|
|
388
|
+
root leaves it null and never treats it as attempted-recovery evidence. The
|
|
389
|
+
post-bookkeeping result is the only settled state for an attempted recovery:
|
|
390
|
+
`pending_attempt: null` with nondecreasing `used_attempts`.
|
|
391
|
+
|
|
392
|
+
Both accepted success and accepted terminal-stop branches must:
|
|
393
|
+
|
|
394
|
+
- verify phase ID, request ID, phase or recovery base, and phase verification;
|
|
395
|
+
- for a Phase Implementation Report, verify task count; for a Phase Recovery
|
|
396
|
+
Continuation Report, verify the original task and commit instead;
|
|
397
|
+
- only for a Phase Implementation Report, verify each planned task commit is
|
|
398
|
+
exactly one append-only commit in plan order, changes only declared files, and
|
|
399
|
+
has passing task verification; never require a Phase Recovery Continuation
|
|
400
|
+
Report to replay or restate all planned task outcomes;
|
|
401
|
+
- for each reported attempted recovery (`recovered` or `failed-attempt`), verify
|
|
402
|
+
attempt accounting, the immutable original commit and original request,
|
|
403
|
+
exact-target provenance, one in-scope append-only recovery commit when
|
|
404
|
+
successful, focused and phase verification, exactly one well-formed canonical
|
|
405
|
+
recovery event, and the matching committed `completed` or `failed`
|
|
406
|
+
pre-bookkeeping terminal marker;
|
|
407
|
+
- for a pre-attempt `direction-required` event, verify unchanged accounting,
|
|
408
|
+
immutable history, exact-target and stop-boundary evidence, and the absence of
|
|
409
|
+
any reservation, edit, or recovery commit; require `pending_attempt: null`;
|
|
410
|
+
- verify recovered, direction-required, and failed-attempt dispositions are all
|
|
411
|
+
represented without gaps or duplicate events;
|
|
97
412
|
- verify the reported commit range equals the worktree's range from
|
|
98
|
-
`PHASE_BASE_HEAD` to HEAD
|
|
99
|
-
|
|
413
|
+
`PHASE_BASE_HEAD` to HEAD for implementation, or from `recovery_base_head` to
|
|
414
|
+
HEAD for recover mode;
|
|
415
|
+
- verify the worktree state matches the selected branch; and
|
|
100
416
|
- validate every optional child record without requiring any child.
|
|
101
417
|
|
|
418
|
+
The accepted success branch requires passing phase verification, the matching
|
|
419
|
+
pre-bookkeeping row above, no unresolved direction-required event, a clean
|
|
420
|
+
worktree, and then continues. If recovery was reported, it requires the
|
|
421
|
+
committed `completed` marker while validation runs; if no recovery was reported,
|
|
422
|
+
it permits `pending_attempt: null`. It never clears a marker before validation.
|
|
423
|
+
|
|
424
|
+
The accepted terminal-stop branch validates provenance, attempt accounting,
|
|
425
|
+
immutable history, canonical recovery event shape, commit range, and ledger
|
|
426
|
+
state before bookkeeping. A pre-attempt `direction-required` stop requires
|
|
427
|
+
`pending_attempt: null`, unchanged usage, and evidence that no reservation,
|
|
428
|
+
edit, or recovery commit occurred; root records its event without clearing a
|
|
429
|
+
marker. A reported failed attempt instead requires the matching committed
|
|
430
|
+
`failed` marker while validation runs; a marker that is active, missing,
|
|
431
|
+
mismatched, prematurely cleared, or otherwise unreconciled is invalid. Its
|
|
432
|
+
worktree may retain only a bounded failed-attempt diff named by the report; any
|
|
433
|
+
other dirt is invalid. After complete validation, root clears the failed marker
|
|
434
|
+
while preserving usage and the stop disposition. A valid `BLOCKED` report is
|
|
435
|
+
recorded, then stops without continuation or fallback.
|
|
436
|
+
`DONE_WITH_CONCERNS` uses this terminal branch when it reports an unresolved
|
|
437
|
+
direction-required or failed-attempt disposition; otherwise it may use the
|
|
438
|
+
success branch only when every success invariant passes.
|
|
439
|
+
|
|
440
|
+
A dirty worktree, unverifiable commit range, missing provenance, malformed
|
|
441
|
+
recovery event, rewritten original commit, or recovery commit outside the
|
|
442
|
+
declared/mechanically derived phase boundary blocks continuation.
|
|
443
|
+
|
|
102
444
|
`NEEDS_CONTEXT` may receive only missing artifact context through the original
|
|
103
|
-
handle.
|
|
104
|
-
|
|
105
|
-
|
|
445
|
+
handle. It cannot change target or scope. `INVALID_RUN_ABORT` terminates every
|
|
446
|
+
accepted handle owned by the run, preserves invalidating evidence, and never
|
|
447
|
+
authorizes fallback, replacement, or sequential degradation. Sequential
|
|
106
448
|
degradation is forbidden for the invalid run.
|
|
107
449
|
|
|
108
450
|
### Per-Phase Review
|
|
@@ -197,6 +539,11 @@ On Critical/Important findings:
|
|
|
197
539
|
4. Dispatch one new root-owned reviewer round against the updated range.
|
|
198
540
|
5. Repeat until pass or retry exhaustion.
|
|
199
541
|
|
|
542
|
+
Review-fix and gate rounds continue to use
|
|
543
|
+
`oat_orchestration_retry_limit`; implementation recovery does not consume or
|
|
544
|
+
alter that counter. The independent three-cycle review governance cap,
|
|
545
|
+
Critical/Important handling, and protected boundaries remain unchanged.
|
|
546
|
+
|
|
200
547
|
If the original phase handle cannot be resumed after successful phase
|
|
201
548
|
completion, the root may launch at most one fresh phase implementer with the
|
|
202
549
|
same exact target and bounded fix scope. Its generic dispatch record must
|
|
@@ -235,9 +235,9 @@ remains immutable baseline evidence for the original p01-t01 verification.
|
|
|
235
235
|
| `oat-project-import-plan/SKILL.md` | `f7ca8635452f -> NG`; `c2e5fa410069 -> NG`; `655d61df0a8f -> NG`; `dceff5cc04b5 -> NG`; `1af4957a1af2 -> IMPORT-01`; `45b699c1c0b5 -> IMPORT-01`; `ba6d120791c1 -> IMPORT-01`; `070ebc5259af -> IMPORT-03`; `c11552696e2e -> IMPORT-03`; `cfe661966baf -> IMPORT-04`; `baa91c0a0bf8 -> NG`; `e364e84b2702 -> NG`; `39031985a945 -> IMPORT-06`; `f106aa29a217 -> IMPORT-07`; `65038450aee3 -> IMPORT-07`; `bee4c4aa34c6 -> NG`; `3f0b53056edd -> IMPORT-09` |
|
|
236
236
|
| `oat-project-implement/SKILL.md` | `18980f6bc1a6 -> NG`; `e0355c7a05e9 -> IMPLEMENT-11+IMPLEMENT-13+IMPLEMENT-16`; `6296f41ae11c -> NG`; `a167d03559fa -> NG`; `cf317c17c586 -> IMPLEMENT-01`; `8ce8a09feca4 -> NG`; `bd0cb4988188 -> NG`; `28af4ee0055d -> NG` |
|
|
237
237
|
| `oat-project-implement/references/completion-and-closeout.md` | `f7dab9c1f96c -> IMPLEMENT-12`; `c69c17a069a8 -> IMPLEMENT-14`; `a97fa5634a68 -> IMPLEMENT-14`; `3af58881811c -> IMPLEMENT-14`; `4203e1f49d0f -> IMPLEMENT-14`; `c3bd2458a3d3 -> IMPLEMENT-13`; `95b5eafc070d -> IMPLEMENT-13`; `25ecbe9c998b -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `f6f24fd71da4 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `f18283bc1cf9 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `2c1ffc4a82dd -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `3454a07aa843 -> IMPLEMENT-16`; `0d86e2098cfb -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `d5fe597d266f -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `55a152e944c1 -> IMPLEMENT-16`; `effac7cbd573 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `9d2a34d8b148 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `d27462aaed26 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `9d52ecb17268 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `5b91aabe3757 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `fd0ad919f702 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `63bf28df1474 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `a4ed471dbc78 -> IMPLEMENT-16`; `6b7a64cec6e5 -> IMPLEMENT-16`; `0a4fdba0ebc0 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `a5033c2aada5 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `e77609eddba0 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `351156e8dde4 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `51d45bd2bbd1 -> IMPLEMENT-16`; `f7796ffcc804 -> IMPLEMENT-16`; `990d730cb494 -> IMPLEMENT-16`; `6ed28bb7d384 -> IMPLEMENT-16`; `8b7d4b5bcf1b -> IMPLEMENT-16`; `88aad500e6e9 -> IMPLEMENT-16`; `877e3e3f9eda -> IMPLEMENT-16`; `fc03c97f834e -> IMPLEMENT-16`; `12939a3da5e0 -> IMPLEMENT-16`; `bdb418335a88 -> IMPLEMENT-16`; `fba97e596ebd -> IMPLEMENT-16`; `3d0b5e2f14f0 -> IMPLEMENT-17`; `87f1424a8692 -> NG`; `6b1ec05182f0 -> IMPLEMENT-11`; `e6d696a27c91 -> NG`; `c77f8ccb52ad -> NG`; `48de2614c0ba -> IMPLEMENT-11`; `32d53f5212e5 -> IMPLEMENT-11`; `7cdb4a9c57b7 -> IMPLEMENT-11`; `16ffc0aa099b -> IMPLEMENT-11`; `d6868ea10b3f -> IMPLEMENT-11`; `4f05ff5567be -> IMPLEMENT-11`; `c70b47ae7a6d -> IMPLEMENT-11`; `5fafd093b58e -> NG`; `567d43ab0c2e -> NG`; `21ceaf7e658a -> NG`; `249427a9f475 -> NG`; `8a7ec13a9b7c -> NG`; `9aeb7fce2012 -> IMPLEMENT-18`; `f11a7cdda220 -> IMPLEMENT-18`; `4523ac029152 -> NG`; `6e87b08c4046 -> NG`; `baa6052c7f0a -> IMPLEMENT-18`; `27d3fad116b1 -> IMPLEMENT-18`; `2cfbeb4388a5 -> IMPLEMENT-18`; `c56ea56a56db -> NG`; `43e2e3c1380d -> IMPLEMENT-17`; `b49690277fb5 -> NG`; `df12304d6a36 -> NG`; `52eacac11fef -> IMPLEMENT-17`; `60092df6b17b -> IMPLEMENT-17`; `361872c6b00e -> IMPLEMENT-17`; `d2bc711a75fb -> IMPLEMENT-17` |
|
|
238
|
-
| `oat-project-implement/references/dispatch-and-dry-run.md` | `21b85f5e4daa -> IMPLEMENT-08`; `74c92b32bb2a -> IMPLEMENT-08`; `8efd2d0517ab -> IMPLEMENT-09`; `461ed9b3e495 -> IMPLEMENT-09`; `b5ad64fd744d -> NG`; `14ce436cfffa -> NG`; `043ca36da3e2 -> NG`; `a23e45c1dc8d -> NG`; `498143bb41a7 -> NG`; `4fe3eb179023 -> NG`; `7f75485e5a33 -> NG`; `8ec3a96df029 -> NG`; `16c3f96e758d -> NG`; `5915c41fe058 -> NG`; `f51e43eeac56 -> NG`; `fd41c25623cb -> NG`; `58a932ed6453 -> NG`; `4718bd3ce12d -> NG`; `58c444a2126b -> NG`; `2df3adae4120 -> NG`; `e75df892b55c -> NG`; `8ba5dbd2a0d8 -> NG`
|
|
238
|
+
| `oat-project-implement/references/dispatch-and-dry-run.md` | `21b85f5e4daa -> IMPLEMENT-08`; `74c92b32bb2a -> IMPLEMENT-08`; `8efd2d0517ab -> IMPLEMENT-09`; `461ed9b3e495 -> IMPLEMENT-09`; `b5ad64fd744d -> NG`; `14ce436cfffa -> NG`; `043ca36da3e2 -> NG`; `a23e45c1dc8d -> NG`; `498143bb41a7 -> NG`; `4fe3eb179023 -> NG`; `7f75485e5a33 -> NG`; `8ec3a96df029 -> NG`; `16c3f96e758d -> NG`; `5915c41fe058 -> NG`; `f51e43eeac56 -> NG`; `fd41c25623cb -> NG`; `58a932ed6453 -> NG`; `4718bd3ce12d -> NG`; `58c444a2126b -> NG`; `2df3adae4120 -> NG`; `e75df892b55c -> NG`; `8ba5dbd2a0d8 -> NG`; `4d6c519131e5 -> NG` |
|
|
239
239
|
| `oat-project-implement/references/docs/autonomy-contract.md` | `* -> NG` |
|
|
240
|
-
| `oat-project-implement/references/phase-execution.md` | `27737e814790 -> NG`; `6dda2b8e62e2 -> IMPLEMENT-10`; `b3197086bb1e -> IMPLEMENT-10`
|
|
240
|
+
| `oat-project-implement/references/phase-execution.md` | `27737e814790 -> NG`; `6dda2b8e62e2 -> IMPLEMENT-10`; `b3197086bb1e -> IMPLEMENT-10`; `25f2a6e104ee -> NG`; `4aa21120295f -> NG` |
|
|
241
241
|
| `oat-project-implement/references/plan-and-resume.md` | `413829d31e32 -> IMPLEMENT-02`; `c7706cd8ad09 -> IMPLEMENT-03`; `a80a948df658 -> IMPLEMENT-03`; `b7ea139780ec -> IMPLEMENT-03+IMPLEMENT-04`; `8d438f2180ba -> IMPLEMENT-03`; `9e72e0518cda -> IMPLEMENT-03`; `3e177a1021e6 -> IMPLEMENT-03+IMPLEMENT-04`; `b59fc9eb9ce3 -> IMPLEMENT-03`; `a2b1d6855283 -> IMPLEMENT-03`; `44351a32e52a -> IMPLEMENT-03`; `b98b022f5523 -> IMPLEMENT-03`; `e9f5b949e214 -> IMPLEMENT-03`; `316fb6d9e980 -> IMPLEMENT-03`; `8b25a2c5c548 -> IMPLEMENT-03`; `1a59b1c0e705 -> IMPLEMENT-03`; `466cd562fc52 -> IMPLEMENT-03`; `083d896978d5 -> IMPLEMENT-03`; `f4ab11c13ae9 -> IMPLEMENT-03`; `7dc17ffcc1c4 -> IMPLEMENT-03`; `f731a90adabd -> IMPLEMENT-04`; `886ac01e7aa9 -> IMPLEMENT-04`; `b715db67df0c -> IMPLEMENT-04`; `2d9f26a539f3 -> IMPLEMENT-10`; `28384dee114f -> IMPLEMENT-05`; `f2591a4978b4 -> NG`; `8290823080b5 -> IMPLEMENT-06`; `f75789bf6c8e -> IMPLEMENT-07` |
|
|
242
242
|
| `oat-project-document/SKILL.md` | `4fc2d8618208 -> NG`; `3f9b0273ba77 -> NG`; `40f8be47affa -> NG`; `3a3c390528f3 -> DOCUMENT-03`; `2a7ba093b315 -> DOCUMENT-02`; `252aabe44db2 -> DOCUMENT-02`; `3751172de299 -> DOCUMENT-02`; `b987a0697ba9 -> DOCUMENT-01`; `a06ff3ca7926 -> NG`; `0d04714ca9fc -> NG`; `f79af01d94c6 -> DOCUMENT-02`; `71634113c348 -> DOCUMENT-02`; `cdb707f5081e -> NG` |
|
|
243
243
|
| `oat-project-document/references/docs/autonomy-contract.md` | `* -> NG` |
|
|
@@ -235,9 +235,9 @@ remains immutable baseline evidence for the original p01-t01 verification.
|
|
|
235
235
|
| `oat-project-import-plan/SKILL.md` | `f7ca8635452f -> NG`; `c2e5fa410069 -> NG`; `655d61df0a8f -> NG`; `dceff5cc04b5 -> NG`; `1af4957a1af2 -> IMPORT-01`; `45b699c1c0b5 -> IMPORT-01`; `ba6d120791c1 -> IMPORT-01`; `070ebc5259af -> IMPORT-03`; `c11552696e2e -> IMPORT-03`; `cfe661966baf -> IMPORT-04`; `baa91c0a0bf8 -> NG`; `e364e84b2702 -> NG`; `39031985a945 -> IMPORT-06`; `f106aa29a217 -> IMPORT-07`; `65038450aee3 -> IMPORT-07`; `bee4c4aa34c6 -> NG`; `3f0b53056edd -> IMPORT-09` |
|
|
236
236
|
| `oat-project-implement/SKILL.md` | `18980f6bc1a6 -> NG`; `e0355c7a05e9 -> IMPLEMENT-11+IMPLEMENT-13+IMPLEMENT-16`; `6296f41ae11c -> NG`; `a167d03559fa -> NG`; `cf317c17c586 -> IMPLEMENT-01`; `8ce8a09feca4 -> NG`; `bd0cb4988188 -> NG`; `28af4ee0055d -> NG` |
|
|
237
237
|
| `oat-project-implement/references/completion-and-closeout.md` | `f7dab9c1f96c -> IMPLEMENT-12`; `c69c17a069a8 -> IMPLEMENT-14`; `a97fa5634a68 -> IMPLEMENT-14`; `3af58881811c -> IMPLEMENT-14`; `4203e1f49d0f -> IMPLEMENT-14`; `c3bd2458a3d3 -> IMPLEMENT-13`; `95b5eafc070d -> IMPLEMENT-13`; `25ecbe9c998b -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `f6f24fd71da4 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `f18283bc1cf9 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `2c1ffc4a82dd -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `3454a07aa843 -> IMPLEMENT-16`; `0d86e2098cfb -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `d5fe597d266f -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `55a152e944c1 -> IMPLEMENT-16`; `effac7cbd573 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `9d2a34d8b148 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `d27462aaed26 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `9d52ecb17268 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `5b91aabe3757 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `fd0ad919f702 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `63bf28df1474 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `a4ed471dbc78 -> IMPLEMENT-16`; `6b7a64cec6e5 -> IMPLEMENT-16`; `0a4fdba0ebc0 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `a5033c2aada5 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `e77609eddba0 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `351156e8dde4 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `51d45bd2bbd1 -> IMPLEMENT-16`; `f7796ffcc804 -> IMPLEMENT-16`; `990d730cb494 -> IMPLEMENT-16`; `6ed28bb7d384 -> IMPLEMENT-16`; `8b7d4b5bcf1b -> IMPLEMENT-16`; `88aad500e6e9 -> IMPLEMENT-16`; `877e3e3f9eda -> IMPLEMENT-16`; `fc03c97f834e -> IMPLEMENT-16`; `12939a3da5e0 -> IMPLEMENT-16`; `bdb418335a88 -> IMPLEMENT-16`; `fba97e596ebd -> IMPLEMENT-16`; `3d0b5e2f14f0 -> IMPLEMENT-17`; `87f1424a8692 -> NG`; `6b1ec05182f0 -> IMPLEMENT-11`; `e6d696a27c91 -> NG`; `c77f8ccb52ad -> NG`; `48de2614c0ba -> IMPLEMENT-11`; `32d53f5212e5 -> IMPLEMENT-11`; `7cdb4a9c57b7 -> IMPLEMENT-11`; `16ffc0aa099b -> IMPLEMENT-11`; `d6868ea10b3f -> IMPLEMENT-11`; `4f05ff5567be -> IMPLEMENT-11`; `c70b47ae7a6d -> IMPLEMENT-11`; `5fafd093b58e -> NG`; `567d43ab0c2e -> NG`; `21ceaf7e658a -> NG`; `249427a9f475 -> NG`; `8a7ec13a9b7c -> NG`; `9aeb7fce2012 -> IMPLEMENT-18`; `f11a7cdda220 -> IMPLEMENT-18`; `4523ac029152 -> NG`; `6e87b08c4046 -> NG`; `baa6052c7f0a -> IMPLEMENT-18`; `27d3fad116b1 -> IMPLEMENT-18`; `2cfbeb4388a5 -> IMPLEMENT-18`; `c56ea56a56db -> NG`; `43e2e3c1380d -> IMPLEMENT-17`; `b49690277fb5 -> NG`; `df12304d6a36 -> NG`; `52eacac11fef -> IMPLEMENT-17`; `60092df6b17b -> IMPLEMENT-17`; `361872c6b00e -> IMPLEMENT-17`; `d2bc711a75fb -> IMPLEMENT-17` |
|
|
238
|
-
| `oat-project-implement/references/dispatch-and-dry-run.md` | `21b85f5e4daa -> IMPLEMENT-08`; `74c92b32bb2a -> IMPLEMENT-08`; `8efd2d0517ab -> IMPLEMENT-09`; `461ed9b3e495 -> IMPLEMENT-09`; `b5ad64fd744d -> NG`; `14ce436cfffa -> NG`; `043ca36da3e2 -> NG`; `a23e45c1dc8d -> NG`; `498143bb41a7 -> NG`; `4fe3eb179023 -> NG`; `7f75485e5a33 -> NG`; `8ec3a96df029 -> NG`; `16c3f96e758d -> NG`; `5915c41fe058 -> NG`; `f51e43eeac56 -> NG`; `fd41c25623cb -> NG`; `58a932ed6453 -> NG`; `4718bd3ce12d -> NG`; `58c444a2126b -> NG`; `2df3adae4120 -> NG`; `e75df892b55c -> NG`; `8ba5dbd2a0d8 -> NG`
|
|
238
|
+
| `oat-project-implement/references/dispatch-and-dry-run.md` | `21b85f5e4daa -> IMPLEMENT-08`; `74c92b32bb2a -> IMPLEMENT-08`; `8efd2d0517ab -> IMPLEMENT-09`; `461ed9b3e495 -> IMPLEMENT-09`; `b5ad64fd744d -> NG`; `14ce436cfffa -> NG`; `043ca36da3e2 -> NG`; `a23e45c1dc8d -> NG`; `498143bb41a7 -> NG`; `4fe3eb179023 -> NG`; `7f75485e5a33 -> NG`; `8ec3a96df029 -> NG`; `16c3f96e758d -> NG`; `5915c41fe058 -> NG`; `f51e43eeac56 -> NG`; `fd41c25623cb -> NG`; `58a932ed6453 -> NG`; `4718bd3ce12d -> NG`; `58c444a2126b -> NG`; `2df3adae4120 -> NG`; `e75df892b55c -> NG`; `8ba5dbd2a0d8 -> NG`; `4d6c519131e5 -> NG` |
|
|
239
239
|
| `oat-project-implement/references/docs/autonomy-contract.md` | `* -> NG` |
|
|
240
|
-
| `oat-project-implement/references/phase-execution.md` | `27737e814790 -> NG`; `6dda2b8e62e2 -> IMPLEMENT-10`; `b3197086bb1e -> IMPLEMENT-10`
|
|
240
|
+
| `oat-project-implement/references/phase-execution.md` | `27737e814790 -> NG`; `6dda2b8e62e2 -> IMPLEMENT-10`; `b3197086bb1e -> IMPLEMENT-10`; `25f2a6e104ee -> NG`; `4aa21120295f -> NG` |
|
|
241
241
|
| `oat-project-implement/references/plan-and-resume.md` | `413829d31e32 -> IMPLEMENT-02`; `c7706cd8ad09 -> IMPLEMENT-03`; `a80a948df658 -> IMPLEMENT-03`; `b7ea139780ec -> IMPLEMENT-03+IMPLEMENT-04`; `8d438f2180ba -> IMPLEMENT-03`; `9e72e0518cda -> IMPLEMENT-03`; `3e177a1021e6 -> IMPLEMENT-03+IMPLEMENT-04`; `b59fc9eb9ce3 -> IMPLEMENT-03`; `a2b1d6855283 -> IMPLEMENT-03`; `44351a32e52a -> IMPLEMENT-03`; `b98b022f5523 -> IMPLEMENT-03`; `e9f5b949e214 -> IMPLEMENT-03`; `316fb6d9e980 -> IMPLEMENT-03`; `8b25a2c5c548 -> IMPLEMENT-03`; `1a59b1c0e705 -> IMPLEMENT-03`; `466cd562fc52 -> IMPLEMENT-03`; `083d896978d5 -> IMPLEMENT-03`; `f4ab11c13ae9 -> IMPLEMENT-03`; `7dc17ffcc1c4 -> IMPLEMENT-03`; `f731a90adabd -> IMPLEMENT-04`; `886ac01e7aa9 -> IMPLEMENT-04`; `b715db67df0c -> IMPLEMENT-04`; `2d9f26a539f3 -> IMPLEMENT-10`; `28384dee114f -> IMPLEMENT-05`; `f2591a4978b4 -> NG`; `8290823080b5 -> IMPLEMENT-06`; `f75789bf6c8e -> IMPLEMENT-07` |
|
|
242
242
|
| `oat-project-document/SKILL.md` | `4fc2d8618208 -> NG`; `3f9b0273ba77 -> NG`; `40f8be47affa -> NG`; `3a3c390528f3 -> DOCUMENT-03`; `2a7ba093b315 -> DOCUMENT-02`; `252aabe44db2 -> DOCUMENT-02`; `3751172de299 -> DOCUMENT-02`; `b987a0697ba9 -> DOCUMENT-01`; `a06ff3ca7926 -> NG`; `0d04714ca9fc -> NG`; `f79af01d94c6 -> DOCUMENT-02`; `71634113c348 -> DOCUMENT-02`; `cdb707f5081e -> NG` |
|
|
243
243
|
| `oat-project-document/references/docs/autonomy-contract.md` | `* -> NG` |
|
|
@@ -14,6 +14,13 @@ oat_parallel_execution: false
|
|
|
14
14
|
oat_phase: { OAT_PHASE } # Current phase: discovery | spec | design | plan | implement | decomposition
|
|
15
15
|
oat_phase_status: in_progress # Status: in_progress | complete | pr_open
|
|
16
16
|
# oat_orchestration_retry_limit: 2 # optional; override fix-loop retry limit (range 0-5)
|
|
17
|
+
# oat_phase_recovery_policy: # optional; automatic append-only post-commit phase recovery
|
|
18
|
+
# default_attempt_limit: 10 # project default, integer 0-20; 0 disables automatic recovery
|
|
19
|
+
# phase_attempt_limits: {} # optional pNN: 0-20 overrides; prior usage never resets
|
|
20
|
+
# phase_attempt_usage: # authoritative monotonic per-phase attempt ledger
|
|
21
|
+
# pNN:
|
|
22
|
+
# used_attempts: 0
|
|
23
|
+
# pending_attempt: null # null or {attempt, event_id, original_request_id, original_task_id, original_commit, discovered_by, dispatch_target, reservation_head, status}
|
|
17
24
|
# oat_dispatch_policy: # optional project dispatch policy; managed keeps OAT selection active, inherit leaves controls to the host
|
|
18
25
|
# mode: managed # managed | inherit
|
|
19
26
|
# policy: balanced # economy | balanced | high | frontier | uncapped; omit when mode: inherit
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@open-agent-toolkit/cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.28",
|
|
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.
|
|
37
|
+
"@open-agent-toolkit/control-plane": "0.2.28"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/node": "^22.10.0",
|