@open-agent-toolkit/cli 0.2.4 → 0.2.5
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/docs/workflows/projects/implementation-execution.md +30 -5
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-project-implement/SKILL.md +1 -1
- package/assets/skills/oat-project-implement/references/completion-and-closeout.md +67 -9
- package/assets/skills/oat-project-next/SKILL.md +31 -11
- package/assets/templates/state.md +4 -1
- package/package.json +2 -2
|
@@ -117,14 +117,39 @@ event, and bookkeeping commit before marking receive complete. Missing,
|
|
|
117
117
|
contradictory, or ambiguous correlation fails closed. A valid accepted run or
|
|
118
118
|
completed receive is never duplicated.
|
|
119
119
|
|
|
120
|
-
Freshness is bound to the reviewed HEAD and
|
|
120
|
+
Freshness is bound to the reviewed HEAD and a versioned implementation
|
|
121
|
+
fingerprint. New generations use an `effective-delta-v1` fingerprint over
|
|
122
|
+
Git's canonical NUL-delimited raw tree delta. The generation persists the
|
|
123
|
+
logical PR/default-branch base ref, requires one merge base, and hashes full
|
|
124
|
+
base and final modes and object IDs with rename detection disabled. This makes
|
|
125
|
+
same-file base changes visible while excluding commit history and human diff
|
|
126
|
+
context. Every effective-delta path is included except the exact project
|
|
127
|
+
`state.md` file that carries the digest and would otherwise be self-referential;
|
|
128
|
+
that structured state is validated independently.
|
|
129
|
+
|
|
121
130
|
Recognized closeout-only descendants preserve a valid result: gate artifacts
|
|
122
131
|
and receipts, project tracking and project-log appends,
|
|
123
132
|
summary/documentation/PR sequence outputs, final HiLL bookkeeping, and
|
|
124
|
-
completion bookkeeping.
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
133
|
+
completion bookkeeping. Recognition also requires the corresponding persisted
|
|
134
|
+
gate or sequence transition; a matching path category alone is insufficient.
|
|
135
|
+
After each authorized closeout boundary, the workflow advances a rolling
|
|
136
|
+
checkpoint to the complete effective delta at that HEAD. The checkpoint records
|
|
137
|
+
the last non-checkpoint commit; a following persistence commit is ignored only
|
|
138
|
+
when its diff changes that exact state carrier and nothing else.
|
|
139
|
+
|
|
140
|
+
A merge, rebase, or base update preserves the result only when its full
|
|
141
|
+
effective delta matches that rolling checkpoint. Conflict resolution or
|
|
142
|
+
branch-owned implementation, test, skill, template, or workflow changes that
|
|
143
|
+
alter the delta make the result stale, require a current final lifecycle review,
|
|
144
|
+
and start a new gate generation. No implementation or closeout output path is
|
|
145
|
+
excluded from the comparison. Legacy unqualified fingerprints retain the older
|
|
146
|
+
fail-closed descendant-path behavior and are not migrated in place.
|
|
147
|
+
|
|
148
|
+
This narrow merge-only exemption relies on fresh repository CI, automated
|
|
149
|
+
review such as Bugbot, and lifecycle self-review to cover integration risk.
|
|
150
|
+
Those checks do not substitute for the semantic gate on the full
|
|
151
|
+
implementation; they avoid repeating that expensive review when the
|
|
152
|
+
implementation outcome itself did not change.
|
|
128
153
|
|
|
129
154
|
Only an allowed and fresh gate disposition can enter the pre-approval sequence,
|
|
130
155
|
cross final HiLL, run the post-approval sequence, mark implementation complete,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-implement
|
|
3
|
-
version: 2.1.
|
|
3
|
+
version: 2.1.6
|
|
4
4
|
description: Use when plan.md is ready for execution. Dispatches one phase implementer per phase, owns independent phase review and bounded fix routing, and supports plan-declared worktree-isolated parallel phases.
|
|
5
5
|
oat_gateable: true
|
|
6
6
|
argument-hint: '[--retry-limit <N>] [--dry-run]'
|
|
@@ -310,7 +310,10 @@ oat_implement_exit_gate:
|
|
|
310
310
|
max_attempts: 2
|
|
311
311
|
attempts_completed: 0
|
|
312
312
|
reviewed_head: null
|
|
313
|
+
implementation_base_ref: null
|
|
313
314
|
implementation_fingerprint: null
|
|
315
|
+
freshness_head: null
|
|
316
|
+
freshness_fingerprint: null
|
|
314
317
|
launch_state: not_started # not_started | intent_persisted | accepted | result_persisted | not_accepted
|
|
315
318
|
launch_attempt_id: null
|
|
316
319
|
launch_started_at: null
|
|
@@ -343,6 +346,29 @@ pending` before any gate launch. Missing state means unresolved, never no gate.
|
|
|
343
346
|
A `null` resolution persists `allowed/no_gate` with `disposition: no_gate`,
|
|
344
347
|
null run/artifact/receive provenance, and the current implementation basis.
|
|
345
348
|
|
|
349
|
+
New generations persist `implementation_fingerprint` as
|
|
350
|
+
`sha256:effective-delta-v1:<digest>`. Resolve the logical integration base from
|
|
351
|
+
the tracked PR's exact base ref, then the repository's configured remote default
|
|
352
|
+
branch; missing or ambiguous resolution fails closed. Persist the logical base
|
|
353
|
+
ref as `implementation_base_ref`; require exactly one merge base between that
|
|
354
|
+
ref and each compared HEAD.
|
|
355
|
+
|
|
356
|
+
Prefix the fingerprint input with the bytes `effective-delta-v1\0`. Hash the
|
|
357
|
+
exact NUL-delimited byte stream from Git
|
|
358
|
+
`--raw -z --no-renames --no-abbrev` output, which includes both base and final
|
|
359
|
+
modes and full object IDs for blobs, symlinks, deletions, and gitlinks. Run with
|
|
360
|
+
`LC_ALL=C` from the unique merge base to the compared HEAD. Git's raw `-z`
|
|
361
|
+
format owns path framing and byte ordering; do not parse and reserialize it,
|
|
362
|
+
abbreviate object IDs, enable rename detection, or hash human patch output.
|
|
363
|
+
|
|
364
|
+
Exclude only the exact `$PROJECT_PATH/state.md` checkpoint carrier to avoid a
|
|
365
|
+
self-referential digest. Use Git's literal exclusion pathspec, not a glob.
|
|
366
|
+
Validate that file independently as the structured transition above. Every
|
|
367
|
+
other path remains fingerprinted. Set `freshness_head` to `reviewed_head` and
|
|
368
|
+
`freshness_fingerprint` to `implementation_fingerprint` when the generation
|
|
369
|
+
starts. These rolling fields preserve the accepted tree outcome after later
|
|
370
|
+
authorized closeout transitions without changing the immutable reviewed basis.
|
|
371
|
+
|
|
346
372
|
An in-flight `pending` or `blocked` generation reuses its persisted resolved
|
|
347
373
|
configuration and never re-resolves it. Recompute the fingerprint from those
|
|
348
374
|
persisted inputs before resume. If the persisted resolved configuration does
|
|
@@ -476,19 +502,43 @@ disposition.
|
|
|
476
502
|
policy, or persistence boundary.
|
|
477
503
|
- A fresh `allowed` result resumes after the gate without executing the gate or
|
|
478
504
|
receive a second time. Reuse requires a valid disposition, complete
|
|
479
|
-
configured-gate provenance when configured, an unchanged
|
|
480
|
-
fingerprint,
|
|
505
|
+
configured-gate provenance when configured, an unchanged immutable
|
|
506
|
+
implementation fingerprint, a valid rolling freshness checkpoint, and any
|
|
507
|
+
eligible receive marked complete.
|
|
481
508
|
- Closeout-only descendants include configured gate artifacts and receipts,
|
|
482
509
|
project tracking, `project-log.md` appends, summary/documentation/PR sequence
|
|
483
510
|
outputs, final HiLL bookkeeping, and completion bookkeeping. Classify
|
|
484
511
|
gate-owned `oat project log append` mutations introduced with PR #156 as
|
|
485
|
-
closeout-only
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
512
|
+
closeout-only. A path category alone is insufficient: the corresponding
|
|
513
|
+
persisted gate or sequence transition must own that descendant boundary;
|
|
514
|
+
unknown or mixed work is substantive.
|
|
515
|
+
- For a qualified `sha256:effective-delta-v1:<digest>` value, require the
|
|
516
|
+
persisted `implementation_base_ref`, `freshness_head`, one current merge base,
|
|
517
|
+
and 64-character lowercase hexadecimal implementation and freshness digests.
|
|
518
|
+
Missing or malformed inputs fail closed. Walk descendants after
|
|
519
|
+
`freshness_head` in commit order. Ignore a checkpoint-persistence commit only
|
|
520
|
+
after verifying its diff changes the exact state carrier and nothing else.
|
|
521
|
+
After a corroborated closeout-only transition, hash the complete current
|
|
522
|
+
effective delta and persist the rolling freshness checkpoint. Record the
|
|
523
|
+
transition's last non-checkpoint commit as `freshness_head`; the following
|
|
524
|
+
state-only persistence commit is the verified carrier exception above. For a
|
|
525
|
+
merge, rebase, or base-update boundary, recompute the complete effective delta
|
|
526
|
+
against the current merge base. A merge, rebase, or base update is not
|
|
527
|
+
substantive by itself. When it matches the rolling fingerprint, preserve the
|
|
528
|
+
allowed generation and persist an advanced rolling checkpoint without
|
|
529
|
+
rerunning gate or receive. A mismatch, unknown commit, or mixed
|
|
530
|
+
closeout/substantive boundary marks the generation `stale`.
|
|
531
|
+
Conflict resolution or branch-owned implementation, test, skill, template, or
|
|
532
|
+
workflow changes that alter the effective delta are substantive.
|
|
533
|
+
- Legacy unqualified `sha256:<digest>` values keep the descendant-path policy
|
|
534
|
+
and are never reinterpreted or migrated in place. Determine freshness from
|
|
535
|
+
every path changed after `reviewed_head`, and require each descendant commit
|
|
536
|
+
to contain only recognized closeout work. An unknown changed path fails closed
|
|
537
|
+
as substantive implementation change. Implementation, test, skill, template,
|
|
538
|
+
or workflow configuration changes make the prior result `stale`.
|
|
539
|
+
- Every stale transition preserves prior provenance for audit, requires a
|
|
540
|
+
current final lifecycle review for the changed basis, and starts a new
|
|
541
|
+
generation using the qualified fingerprint format.
|
|
492
542
|
|
|
493
543
|
Before approval-aware sequencing, final HiLL approval, implementation
|
|
494
544
|
completion, or success output, run the configured gate:
|
|
@@ -683,6 +733,14 @@ A pre-approval failure leaves `approval: pending`; a post-approval failure
|
|
|
683
733
|
retains `approval: approved`. Fail fast with the boundary, failed step, and
|
|
684
734
|
exact resume command: `oat-project-implement`.
|
|
685
735
|
|
|
736
|
+
For qualified gate state, treat each committed sequence step as a corroborated
|
|
737
|
+
closeout boundary. Recompute the complete effective delta, record that step
|
|
738
|
+
commit as `freshness_head`, and persist `freshness_fingerprint` in a separate
|
|
739
|
+
state-only checkpoint commit before dispatching the next step. Apply the same
|
|
740
|
+
checkpoint protocol to gate bookkeeping, final HiLL bookkeeping, and completion
|
|
741
|
+
bookkeeping. A mixed commit, missing child transition, or non-state path in the
|
|
742
|
+
checkpoint-persistence commit fails closed as stale.
|
|
743
|
+
|
|
686
744
|
1. Dispatch incomplete `pre_approval` steps in stored order.
|
|
687
745
|
2. When they succeed and a final checkpoint exists, commit `status:
|
|
688
746
|
awaiting_approval` with `approval: pending` before asking for final HiLL
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-next
|
|
3
|
-
version: 1.0.
|
|
3
|
+
version: 1.0.11
|
|
4
4
|
description: Use when continuing work on the active OAT project. Reads project state, determines the next lifecycle action, and invokes the appropriate skill automatically.
|
|
5
5
|
disable-model-invocation: true
|
|
6
6
|
user-invocable: true
|
|
@@ -270,9 +270,13 @@ Before every other post-implementation route, inspect
|
|
|
270
270
|
or not fresh, route to `oat-project-implement`.
|
|
271
271
|
|
|
272
272
|
This override applies even when `oat_phase_status` is `complete` or `pr_open`,
|
|
273
|
-
and before the summary, document, PR, or `oat-project-complete` routes.
|
|
274
|
-
|
|
275
|
-
|
|
273
|
+
and before the summary, document, PR, or `oat-project-complete` routes. When a
|
|
274
|
+
qualified allowed result matches but its rolling checkpoint trails HEAD,
|
|
275
|
+
announce exactly: "Implementation exit gate freshness checkpoint pending —
|
|
276
|
+
resume with `oat-project-implement` before post-implementation routing." For all
|
|
277
|
+
other unresolved or stale cases, announce exactly: "Implementation exit gate
|
|
278
|
+
unresolved or stale — resume with `oat-project-implement` before
|
|
279
|
+
post-implementation routing."
|
|
276
280
|
|
|
277
281
|
Only an `allowed` and fresh exit-gate disposition falls through to the normal
|
|
278
282
|
post-implementation checks.
|
|
@@ -282,11 +286,13 @@ alone:
|
|
|
282
286
|
|
|
283
287
|
- `allowed/no_gate` is valid only with `disposition: no_gate`, null gate-run and
|
|
284
288
|
artifact provenance, and current `reviewed_head` and implementation
|
|
285
|
-
fingerprint fields.
|
|
289
|
+
fingerprint fields. Qualified state also requires `implementation_base_ref`,
|
|
290
|
+
`freshness_head`, and `freshness_fingerprint`.
|
|
286
291
|
- `allowed/configured` is valid only with `disposition: passed`, `warned`, or
|
|
287
292
|
`prompt_approved`; matching `config_fingerprint`, `reviewed_head`,
|
|
288
|
-
`implementation_fingerprint`,
|
|
289
|
-
|
|
293
|
+
`implementation_fingerprint`, configured gate-run provenance, and any eligible
|
|
294
|
+
receive durably completed. Qualified state also requires the complete rolling
|
|
295
|
+
freshness fields.
|
|
290
296
|
- `pending`, `blocked`, malformed, contradictory, or legacy-absent state never
|
|
291
297
|
falls through. Pending and blocked generations resume their persisted
|
|
292
298
|
configuration; configuration-fingerprint mismatch fails closed.
|
|
@@ -294,10 +300,24 @@ alone:
|
|
|
294
300
|
paths and substantive changes route as stale. The recognized set is limited
|
|
295
301
|
to configured gate artifacts and receipts, project tracking and
|
|
296
302
|
`project-log.md` appends, summary/documentation/PR sequence outputs, final
|
|
297
|
-
HiLL bookkeeping, and completion bookkeeping.
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
303
|
+
HiLL bookkeeping, and completion bookkeeping. A category match without its
|
|
304
|
+
persisted transition boundary is unknown, not closeout-only.
|
|
305
|
+
- For qualified state, require `implementation_base_ref`, `freshness_head`, and
|
|
306
|
+
a valid `freshness_fingerprint`. Exactly one merge base and 64-character
|
|
307
|
+
lowercase hexadecimal implementation/freshness digests are mandatory.
|
|
308
|
+
Missing or malformed inputs route as stale. When HEAD differs from
|
|
309
|
+
`freshness_head`, use the full raw Git byte algorithm from
|
|
310
|
+
`oat-project-implement` with only its literal state-carrier exclusion. Verify
|
|
311
|
+
and ignore state-only checkpoint commits before classification. An unchanged
|
|
312
|
+
qualified fingerprint preserves freshness across a merge, rebase, or base
|
|
313
|
+
update but routes to `oat-project-implement` to persist the advanced rolling
|
|
314
|
+
checkpoint; a mismatch routes as stale. This read-only router never advances
|
|
315
|
+
state or invents another fingerprint algorithm.
|
|
316
|
+
- Legacy unqualified fingerprints retain the closeout-only descendant-path
|
|
317
|
+
check. Any implementation, test, skill, template, workflow configuration, or
|
|
318
|
+
other unrecognized change after `reviewed_head` invalidates the implementation
|
|
319
|
+
fingerprint and routes to `oat-project-implement`. Do not reinterpret or
|
|
320
|
+
migrate legacy state while routing.
|
|
301
321
|
|
|
302
322
|
Routing is read-only: announce stale or malformed state, but leave transition
|
|
303
323
|
repair, gate execution, receive, and persistence to `oat-project-implement`.
|
|
@@ -40,7 +40,10 @@ oat_workflow_origin: native # native | imported
|
|
|
40
40
|
# max_attempts: 2
|
|
41
41
|
# attempts_completed: 0
|
|
42
42
|
# reviewed_head: null
|
|
43
|
-
#
|
|
43
|
+
# implementation_base_ref: null # exact logical base ref for effective-delta-v1
|
|
44
|
+
# implementation_fingerprint: null # new generations use sha256:effective-delta-v1:<digest>
|
|
45
|
+
# freshness_head: null # rolling accepted tree checkpoint
|
|
46
|
+
# freshness_fingerprint: null # full effective delta at freshness_head
|
|
44
47
|
# launch_state: not_started # not_started | intent_persisted | accepted | result_persisted | not_accepted
|
|
45
48
|
# launch_attempt_id: null
|
|
46
49
|
# launch_started_at: null
|
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.5",
|
|
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.5"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/node": "^22.10.0",
|