@open-agent-toolkit/cli 0.2.2 → 0.2.3
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/cli-utilities/workflow-gates.md +69 -8
- package/assets/docs/workflows/projects/autonomy.md +20 -6
- package/assets/docs/workflows/projects/implementation-execution.md +46 -0
- package/assets/docs/workflows/projects/lifecycle.md +29 -6
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-project-autonomous/references/gate-inventory.md +145 -139
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +145 -139
- package/assets/skills/oat-project-implement/SKILL.md +4 -2
- package/assets/skills/oat-project-implement/references/completion-and-closeout.md +387 -58
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +145 -139
- package/assets/skills/oat-project-next/SKILL.md +59 -18
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +145 -139
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +145 -139
- package/assets/skills/oat-wave-execute/SKILL.md +16 -1
- package/assets/skills/oat-wave-program/SKILL.md +16 -1
- package/assets/templates/state.md +32 -0
- package/dist/commands/gate/index.d.ts +1 -0
- package/dist/commands/gate/index.d.ts.map +1 -1
- package/dist/commands/gate/index.js +5 -1
- package/dist/commands/shared/frontmatter.d.ts +1 -1
- package/dist/commands/shared/frontmatter.d.ts.map +1 -1
- package/dist/commands/shared/frontmatter.js +1 -0
- package/package.json +2 -2
|
@@ -33,7 +33,7 @@ Gate config lives under `workflow.gates.skills` and is keyed by skill name.
|
|
|
33
33
|
"gates": {
|
|
34
34
|
"skills": {
|
|
35
35
|
"oat-project-implement": {
|
|
36
|
-
"command": "oat gate review --project \"$PROJECT_PATH\" --review-type code --review-scope final \"Use oat-project-review-provide code final for the declared project\"",
|
|
36
|
+
"command": "oat --json gate review --project \"$PROJECT_PATH\" --review-type code --review-scope final \"Use oat-project-review-provide code final for the declared project\"",
|
|
37
37
|
"description": "Run a fresh-runtime final review before implementation is considered done.",
|
|
38
38
|
"onFailure": "block",
|
|
39
39
|
"maxAttempts": 2
|
|
@@ -57,6 +57,52 @@ in skill frontmatter with `oat_gateable: true`, and
|
|
|
57
57
|
`oat internal validate-oat-skills` warns when config targets a missing or
|
|
58
58
|
non-gateable skill.
|
|
59
59
|
|
|
60
|
+
### Implementation exit-gate closeout
|
|
61
|
+
|
|
62
|
+
For `oat-project-implement`, the configured skill gate is a final, resumable
|
|
63
|
+
closeout boundary. It is independent from the root-owned phase reviews, the
|
|
64
|
+
mandatory final lifecycle review, and the optional `oat_phase_review_gate`.
|
|
65
|
+
Passing or disabling one of those mechanisms never satisfies or disables the
|
|
66
|
+
configured implementation gate.
|
|
67
|
+
|
|
68
|
+
After final verification and the mandatory final lifecycle review pass, OAT
|
|
69
|
+
persists `oat_implement_exit_gate` in project state before it launches the
|
|
70
|
+
configured command. The state records:
|
|
71
|
+
|
|
72
|
+
- `pending`, `allowed`, `blocked`, or `stale` status;
|
|
73
|
+
- a `configured` or `no_gate` resolution;
|
|
74
|
+
- `passed`, `warned`, `prompt_approved`, or `no_gate` allowed dispositions;
|
|
75
|
+
- the resolved configuration fingerprint, reviewed HEAD, implementation
|
|
76
|
+
fingerprint, gate run, envelope, and receive provenance; and
|
|
77
|
+
- launch and receive reconciliation data needed to resume without duplicating
|
|
78
|
+
an accepted run or completed receive.
|
|
79
|
+
|
|
80
|
+
A `null` resolution is explicit success for that closeout generation:
|
|
81
|
+
`allowed/no_gate` with `disposition: no_gate`. Configured success becomes
|
|
82
|
+
`allowed/passed`; `warn` and an explicit `prompt` continuation persist their
|
|
83
|
+
own allowed dispositions only for a validated, receive-eligible `blocked`
|
|
84
|
+
envelope after eligible receive completes durably. Unresolved, malformed,
|
|
85
|
+
contradictory, validation, correlation, launch, or receive failures ignore
|
|
86
|
+
`onFailure` and remain blocked.
|
|
87
|
+
|
|
88
|
+
Resume correlates the persisted launch intent with the gate run marker, durable
|
|
89
|
+
JSON result receipt, and run-bound artifact. Eligible receive similarly
|
|
90
|
+
correlates the source and archived artifact, Reviews event, and bookkeeping
|
|
91
|
+
commit. Missing or ambiguous evidence fails closed instead of launching or
|
|
92
|
+
receiving again.
|
|
93
|
+
|
|
94
|
+
An allowed result remains fresh only while every commit after `reviewed_head`
|
|
95
|
+
contains recognized closeout-only work, such as gate receipts, project
|
|
96
|
+
tracking, summary/documentation/PR sequencing, final HiLL, or completion
|
|
97
|
+
bookkeeping. Implementation, test, skill, template, workflow configuration, or
|
|
98
|
+
unknown changed paths make the result stale and require a current final review
|
|
99
|
+
and a new gate generation.
|
|
100
|
+
|
|
101
|
+
Only an artifact with `oat_review_invocation: gate` and the matching
|
|
102
|
+
`oat_gate_run_id` can satisfy configured-gate provenance. A normal final
|
|
103
|
+
review, phase review, or manually produced independent review cannot substitute
|
|
104
|
+
for it.
|
|
105
|
+
|
|
60
106
|
## Review gates
|
|
61
107
|
|
|
62
108
|
`oat gate review` is intentionally stateful. It is equivalent to running
|
|
@@ -424,7 +470,7 @@ Set or clear a skill gate:
|
|
|
424
470
|
|
|
425
471
|
```bash
|
|
426
472
|
oat gate set oat-project-implement \
|
|
427
|
-
--command 'oat gate review --project "$PROJECT_PATH" --review-type code --review-scope final "Use oat-project-review-provide code final for the declared project"' \
|
|
473
|
+
--command 'oat --json gate review --project "$PROJECT_PATH" --review-type code --review-scope final "Use oat-project-review-provide code final for the declared project"' \
|
|
428
474
|
--description "Run final review in another runtime" \
|
|
429
475
|
--on-failure block \
|
|
430
476
|
--max-attempts 2 \
|
|
@@ -441,17 +487,18 @@ unset lets the dispatcher avoid the current runtime and choose the
|
|
|
441
487
|
highest-priority available non-host target. Pin a target only for manual
|
|
442
488
|
dispatch, debugging, or a deliberate local/user-specific override.
|
|
443
489
|
|
|
444
|
-
### Migrate
|
|
490
|
+
### Migrate legacy lifecycle commands
|
|
445
491
|
|
|
446
492
|
Older user-level lifecycle commands often asked a reviewer to inspect the
|
|
447
|
-
"current project"
|
|
448
|
-
|
|
449
|
-
|
|
493
|
+
"current project", omitted a machine-readable project declaration, or emitted
|
|
494
|
+
human-oriented output. Migrate each stored command to the canonical global-JSON
|
|
495
|
+
shape `oat --json gate review --project "$PROJECT_PATH" ...` while retaining
|
|
496
|
+
provider-neutral target selection. For example:
|
|
450
497
|
|
|
451
498
|
```bash
|
|
452
499
|
export PROJECT_PATH
|
|
453
500
|
oat gate set oat-project-implement \
|
|
454
|
-
--command 'oat gate review --project "$PROJECT_PATH" --review-type code --review-scope final "Use oat-project-review-provide code final for the declared project"' \
|
|
501
|
+
--command 'oat --json gate review --project "$PROJECT_PATH" --review-type code --review-scope final "Use oat-project-review-provide code final for the declared project"' \
|
|
455
502
|
--description "Run final review in another runtime" \
|
|
456
503
|
--on-failure block \
|
|
457
504
|
--max-attempts 2 \
|
|
@@ -463,6 +510,12 @@ Apply the same command shape to `oat-project-plan`,
|
|
|
463
510
|
skills have configured review gates. Do not add `--target`; explicit targets
|
|
464
511
|
remain manual/debug or deliberate local/user-specific overrides.
|
|
465
512
|
|
|
513
|
+
Implementation closeout rejects a stored review command without global
|
|
514
|
+
`--json`, without `--project "$PROJECT_PATH"`, or with a shared `--target`
|
|
515
|
+
before launch. It does not rewrite configuration or inject, reorder, or append
|
|
516
|
+
arguments while executing. Migrate the declaration first; otherwise the
|
|
517
|
+
project remains blocked and resumable through `oat-project-implement`.
|
|
518
|
+
|
|
466
519
|
Set or clear an exec target:
|
|
467
520
|
|
|
468
521
|
```bash
|
|
@@ -589,7 +642,9 @@ contributor fields are absent. The achieved level is one of:
|
|
|
589
642
|
|
|
590
643
|
## Failure behavior
|
|
591
644
|
|
|
592
|
-
Gate failure behavior is owned by the gate-aware skill
|
|
645
|
+
Gate failure behavior is owned by the gate-aware skill. The configured policy
|
|
646
|
+
applies only to a validated, receive-eligible `blocked` result after its
|
|
647
|
+
eligible receive completes durably:
|
|
593
648
|
|
|
594
649
|
| `onFailure` | Meaning |
|
|
595
650
|
| ----------- | ------------------------------------------------------------------------------------ |
|
|
@@ -597,6 +652,12 @@ Gate failure behavior is owned by the gate-aware skill:
|
|
|
597
652
|
| `prompt` | Surface the failure and ask the user how to proceed. |
|
|
598
653
|
| `warn` | Record the failure and continue. |
|
|
599
654
|
|
|
655
|
+
`review_failed`, `artifact_validation_failed`,
|
|
656
|
+
`targeting_correlation_failed`, unknown or contradictory envelopes, launch
|
|
657
|
+
failures, and receive failures are operational failures rather than validated
|
|
658
|
+
blocking findings. They remain blocked regardless of `onFailure`; even `warn`
|
|
659
|
+
cannot turn them into an allowed disposition.
|
|
660
|
+
|
|
600
661
|
`cross-provider-exec` does fallback only before dispatch, while selecting an
|
|
601
662
|
available target. Once a target actually runs, its exit code is the gate result;
|
|
602
663
|
OAT does not try another target after a failed review.
|
|
@@ -84,6 +84,9 @@ Autonomous execution preserves independent review:
|
|
|
84
84
|
bounded implement-and-re-review loop.
|
|
85
85
|
- Critical findings and failed blocking reviews stop progression. Important
|
|
86
86
|
findings follow the configured gate policy.
|
|
87
|
+
- A normal phase or final lifecycle review cannot satisfy a configured
|
|
88
|
+
implementation exit gate. Only gate invocation provenance with the matching
|
|
89
|
+
run ID can authorize that boundary.
|
|
87
90
|
|
|
88
91
|
Project review artifacts and review rows reference launcher-owned dispatch
|
|
89
92
|
records. The configured invocation is authoritative evidence; child
|
|
@@ -104,12 +107,23 @@ An existing valid explicit list is preserved. An existing `[]` is also
|
|
|
104
107
|
preserved and means every phase, never no phases. At each configured checkpoint,
|
|
105
108
|
autonomy runs and receives the review without waiting.
|
|
106
109
|
|
|
107
|
-
At final closeout,
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
110
|
+
At final closeout, autonomy follows the same authoritative order as an
|
|
111
|
+
interactive run: final verification, mandatory final lifecycle review,
|
|
112
|
+
configured implementation exit gate, pre-approval sequence, final HiLL
|
|
113
|
+
approval, post-approval sequence, then implementation completion and success
|
|
114
|
+
output. A null gate resolution persists an explicit no-gate allowance before
|
|
115
|
+
the sequence starts.
|
|
116
|
+
|
|
117
|
+
Autonomy does not turn an ordinary independent review into configured-gate
|
|
118
|
+
provenance. A configured review must produce a gate-originated artifact with
|
|
119
|
+
the matching run ID, and eligible receive must be durably reconciled. Blocked,
|
|
120
|
+
ambiguous, malformed, or stale gate state is a boundary stop: the run remains
|
|
121
|
+
resumable through `oat-project-implement` and cannot continue to approval,
|
|
122
|
+
completion, or output.
|
|
123
|
+
|
|
124
|
+
The default autonomous tail is summary, documentation, and final PR when no
|
|
125
|
+
post-implementation sequence is configured; stored legacy or structured
|
|
126
|
+
sequences retain their documented meaning.
|
|
113
127
|
|
|
114
128
|
## Execution-learnings loop
|
|
115
129
|
|
|
@@ -20,6 +20,9 @@ and updates project state.
|
|
|
20
20
|
phase report.
|
|
21
21
|
- **Fix boundary:** blocking findings return to the original phase handle when
|
|
22
22
|
possible.
|
|
23
|
+
- **Final exit-gate boundary:** after final verification and final lifecycle
|
|
24
|
+
review, the root resolves the configured implementation gate before
|
|
25
|
+
approval-aware sequencing, final HiLL, completion, or success output.
|
|
23
26
|
- **Optional nesting:** a phase agent may dispatch bounded recon, fanout, or
|
|
24
27
|
specialist work when that materially helps. Ordinary tasks do not require a
|
|
25
28
|
third tier.
|
|
@@ -84,6 +87,49 @@ commit range, task IDs and boundaries, project artifacts, and verification
|
|
|
84
87
|
evidence. The review passes with zero Critical and zero Important findings.
|
|
85
88
|
Medium and Minor findings are recorded without blocking the phase.
|
|
86
89
|
|
|
90
|
+
## Final Exit-Gate Boundary
|
|
91
|
+
|
|
92
|
+
After every planned phase and review round finishes, the project root runs final
|
|
93
|
+
verification and the mandatory final lifecycle review. It then resolves
|
|
94
|
+
`workflow.gates.skills.oat-project-implement` and persists the result in
|
|
95
|
+
`oat_implement_exit_gate`. This configured gate is separate from the phase
|
|
96
|
+
reviewer, final lifecycle reviewer, and optional phase gate; none can substitute
|
|
97
|
+
for another.
|
|
98
|
+
|
|
99
|
+
Resolution and policy outcomes are explicit:
|
|
100
|
+
|
|
101
|
+
- A null resolution persists `allowed/no_gate` for the current implementation
|
|
102
|
+
basis.
|
|
103
|
+
- A configured passing review persists `allowed/passed` after any eligible
|
|
104
|
+
review receive is durably completed.
|
|
105
|
+
- `warn` persists `allowed/warned`; `prompt` proceeds only after explicit
|
|
106
|
+
approval persists `allowed/prompt_approved`.
|
|
107
|
+
- `block`, an unresolved prompt, invalid or contradictory output, and
|
|
108
|
+
operational or receive failures remain blocked. Remediation retries follow
|
|
109
|
+
the persisted `maxAttempts` policy.
|
|
110
|
+
|
|
111
|
+
Gate execution is resumable across both launch and receive. Before launch, OAT
|
|
112
|
+
persists an attempt ID, start time, and result-receipt path. It correlates those
|
|
113
|
+
with the gate run marker, structured envelope, and run-bound artifact before it
|
|
114
|
+
accepts a result or relaunches. Before receive, it persists the handoff and
|
|
115
|
+
source/archive correlation; resume verifies the archived artifact, Reviews
|
|
116
|
+
event, and bookkeeping commit before marking receive complete. Missing,
|
|
117
|
+
contradictory, or ambiguous correlation fails closed. A valid accepted run or
|
|
118
|
+
completed receive is never duplicated.
|
|
119
|
+
|
|
120
|
+
Freshness is bound to the reviewed HEAD and an implementation fingerprint.
|
|
121
|
+
Recognized closeout-only descendants preserve a valid result: gate artifacts
|
|
122
|
+
and receipts, project tracking and project-log appends,
|
|
123
|
+
summary/documentation/PR sequence outputs, final HiLL bookkeeping, and
|
|
124
|
+
completion bookkeeping. An implementation, test, skill, template, workflow
|
|
125
|
+
configuration, or unknown path change is substantive. It makes the gate result
|
|
126
|
+
stale, requires a current final lifecycle review for the new basis, and starts
|
|
127
|
+
a new gate generation.
|
|
128
|
+
|
|
129
|
+
Only an allowed and fresh gate disposition can enter the pre-approval sequence,
|
|
130
|
+
cross final HiLL, run the post-approval sequence, mark implementation complete,
|
|
131
|
+
or emit success.
|
|
132
|
+
|
|
87
133
|
## Phase Scope
|
|
88
134
|
|
|
89
135
|
The root supplies one scope for the whole phase:
|
|
@@ -44,7 +44,23 @@ flowchart LR
|
|
|
44
44
|
|
|
45
45
|
## Post-implementation flow
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
Implementation closeout has one authoritative order:
|
|
48
|
+
|
|
49
|
+
1. Run final implementation verification.
|
|
50
|
+
2. Pass the mandatory final lifecycle review.
|
|
51
|
+
3. Resolve and disposition the configured `oat-project-implement` exit gate.
|
|
52
|
+
4. Run the configured pre-approval sequence.
|
|
53
|
+
5. Record final HiLL approval when the final phase is a checkpoint.
|
|
54
|
+
6. Run the configured post-approval sequence.
|
|
55
|
+
7. Mark implementation complete and emit the implementation success output.
|
|
56
|
+
|
|
57
|
+
The configured exit gate is independent from the mandatory lifecycle review,
|
|
58
|
+
root-owned phase reviews, and optional `oat_phase_review_gate`. It must reach an
|
|
59
|
+
allowed and fresh disposition before pre-approval work starts. A null
|
|
60
|
+
configuration is recorded explicitly as `allowed/no_gate`; it is not inferred
|
|
61
|
+
from missing state.
|
|
62
|
+
|
|
63
|
+
After implementation closeout finishes:
|
|
48
64
|
|
|
49
65
|
1. **Summary** (`oat-project-summary`) — generates `summary.md` as institutional memory from project artifacts; PR-final and completion will auto-refresh it if you have not already run it or if it is stale
|
|
50
66
|
2. **Documentation** (`oat-project-document`) — optional sync of project docs; now uses the shared `tools.project-management` config signal to decide whether repo-reference refresh should run before docs analysis, and should recommend new docs pages/directories when the shipped work introduces a capability area that the docs app does not already cover
|
|
@@ -87,11 +103,18 @@ This distinction matters during completion: `oat-project-complete` can skip the
|
|
|
87
103
|
### Approval-aware post-implementation sequencing
|
|
88
104
|
|
|
89
105
|
`workflow.postImplementSequence` can use the legacy string values or a structured
|
|
90
|
-
`{ preApproval, postApproval }` value. After
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
from its first
|
|
106
|
+
`{ preApproval, postApproval }` value. After final verification, final review,
|
|
107
|
+
and an allowed, fresh implementation exit-gate disposition, OAT snapshots the
|
|
108
|
+
effective sequence, runs ordered pre-approval steps, records final HiLL
|
|
109
|
+
approval, and only then runs post-approval steps. The snapshot is restart-safe:
|
|
110
|
+
an incomplete sequence routes back to implementation and resumes from its first
|
|
111
|
+
incomplete step.
|
|
112
|
+
|
|
113
|
+
`oat-project-next` checks `oat_implement_exit_gate` before every normal
|
|
114
|
+
post-implementation route. Missing, pending, blocked, malformed, or stale state
|
|
115
|
+
routes back to `oat-project-implement` even when `oat_phase_status` is
|
|
116
|
+
`complete` or `pr_open`. Only an allowed, fresh disposition can continue to
|
|
117
|
+
summary, documentation, PR, or project completion.
|
|
95
118
|
|
|
96
119
|
When `workflow.autoReviewAtHillCheckpoints` is enabled or `plan.md` frontmatter sets `oat_auto_review_at_hill_checkpoints`, completing a HiLL checkpoint automatically runs the extra lifecycle review scoped to every implementation phase not already covered by a passed whole-phase code review, through the just-completed checkpoint. Mid-implementation multi-phase reviews use inclusive phase-range scopes such as `p02-p03`; the final implementation checkpoint uses `code final`. The review uses auto-disposition mode (minors auto-converted to fix tasks, no user prompts). Disabled by default. Legacy `autoReviewAtCheckpoints` and `oat_auto_review_at_checkpoints` are still read as fallbacks. This does not control Tier 1 per-phase `oat-reviewer` gates.
|
|
97
120
|
|