@open-agent-toolkit/cli 0.2.1 → 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.
Files changed (24) hide show
  1. package/assets/docs/cli-utilities/workflow-gates.md +69 -8
  2. package/assets/docs/workflows/projects/autonomy.md +20 -6
  3. package/assets/docs/workflows/projects/implementation-execution.md +46 -0
  4. package/assets/docs/workflows/projects/lifecycle.md +29 -6
  5. package/assets/public-package-versions.json +4 -4
  6. package/assets/skills/oat-project-autonomous/references/gate-inventory.md +145 -139
  7. package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +145 -139
  8. package/assets/skills/oat-project-implement/SKILL.md +4 -2
  9. package/assets/skills/oat-project-implement/references/completion-and-closeout.md +387 -58
  10. package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +145 -139
  11. package/assets/skills/oat-project-next/SKILL.md +59 -18
  12. package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +145 -139
  13. package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +145 -139
  14. package/assets/skills/oat-wave-execute/SKILL.md +40 -2
  15. package/assets/skills/oat-wave-execute/assets/program-recap.recipe.json +34 -0
  16. package/assets/skills/oat-wave-program/SKILL.md +41 -1
  17. package/assets/templates/state.md +32 -0
  18. package/dist/commands/gate/index.d.ts +1 -0
  19. package/dist/commands/gate/index.d.ts.map +1 -1
  20. package/dist/commands/gate/index.js +5 -1
  21. package/dist/commands/shared/frontmatter.d.ts +1 -1
  22. package/dist/commands/shared/frontmatter.d.ts.map +1 -1
  23. package/dist/commands/shared/frontmatter.js +1 -0
  24. 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 ambient lifecycle commands
490
+ ### Migrate legacy lifecycle commands
445
491
 
446
492
  Older user-level lifecycle commands often asked a reviewer to inspect the
447
- "current project" but omitted a machine-readable declaration. Migrate each
448
- stored `oat gate review` command by inserting `--project "$PROJECT_PATH"` and
449
- retaining provider-neutral target selection. For example:
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, pre-approval lifecycle steps run first. After a passing final
108
- review, autonomy records final HiLL approval and then runs post-approval steps.
109
- A failed blocking review stops before approval. The default autonomous tail is
110
- summary, documentation, and final PR when no post-implementation sequence is
111
- configured; stored legacy or structured sequences retain their documented
112
- meaning.
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
- After implementation and final review pass:
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 the final review passes, OAT
91
- snapshots the effective sequence, runs ordered pre-approval steps, records final
92
- HiLL approval, and only then runs post-approval steps. The snapshot is
93
- restart-safe: an incomplete sequence routes back to implementation and resumes
94
- from its first incomplete step.
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
 
@@ -1,6 +1,6 @@
1
1
  {
2
- "cli": "0.2.1",
3
- "docs-config": "0.2.1",
4
- "docs-theme": "0.2.1",
5
- "docs-transforms": "0.2.1"
2
+ "cli": "0.2.3",
3
+ "docs-config": "0.2.3",
4
+ "docs-theme": "0.2.3",
5
+ "docs-transforms": "0.2.3"
6
6
  }