@open-agent-toolkit/cli 0.2.79 → 0.3.0

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 (57) hide show
  1. package/assets/agents/oat-phase-implementer.md +5 -5
  2. package/assets/agents/oat-reviewer.md +15 -15
  3. package/assets/bundle-metadata.json +1 -1
  4. package/assets/docs/cli-utilities/workflow-gates.md +1 -1
  5. package/assets/docs/workflows/projects/artifacts.md +2 -2
  6. package/assets/docs/workflows/projects/autonomy.md +1 -1
  7. package/assets/docs/workflows/projects/implementation-execution.md +4 -4
  8. package/assets/docs/workflows/projects/lifecycle.md +1 -1
  9. package/assets/docs/workflows/projects/reviews.md +11 -11
  10. package/assets/public-package-versions.json +4 -4
  11. package/assets/skills/oat-agent-instructions-analyze/SKILL.md +3 -3
  12. package/assets/skills/oat-docs-analyze/SKILL.md +3 -3
  13. package/assets/skills/oat-project-autonomous/SKILL.md +2 -2
  14. package/assets/skills/oat-project-autonomous/references/gate-inventory.md +14 -14
  15. package/assets/skills/oat-project-design/SKILL.md +2 -2
  16. package/assets/skills/oat-project-discover/SKILL.md +2 -2
  17. package/assets/skills/oat-project-document/SKILL.md +1 -1
  18. package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +14 -14
  19. package/assets/skills/oat-project-implement/SKILL.md +2 -2
  20. package/assets/skills/oat-project-implement/references/completion-and-closeout.md +1 -1
  21. package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +14 -14
  22. package/assets/skills/oat-project-implement/references/phase-execution.md +3 -3
  23. package/assets/skills/oat-project-implement/references/plan-and-resume.md +2 -2
  24. package/assets/skills/oat-project-import-plan/SKILL.md +2 -2
  25. package/assets/skills/oat-project-lite/SKILL.md +1 -1
  26. package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +14 -14
  27. package/assets/skills/oat-project-plan/SKILL.md +2 -2
  28. package/assets/skills/oat-project-plan-writing/SKILL.md +4 -4
  29. package/assets/skills/oat-project-pr-final/SKILL.md +1 -1
  30. package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +14 -14
  31. package/assets/skills/oat-project-quick-start/SKILL.md +2 -2
  32. package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +14 -14
  33. package/assets/skills/oat-project-review-provide/SKILL.md +14 -14
  34. package/assets/skills/oat-project-review-provide-remote/SKILL.md +10 -10
  35. package/assets/skills/oat-project-review-receive/SKILL.md +64 -45
  36. package/assets/skills/oat-project-review-receive-remote/SKILL.md +6 -6
  37. package/assets/skills/oat-project-revise/SKILL.md +2 -2
  38. package/assets/skills/oat-review-provide/SKILL.md +2 -2
  39. package/assets/skills/oat-review-provide/references/review-artifact-template.md +3 -3
  40. package/assets/skills/oat-review-provide-remote/SKILL.md +11 -11
  41. package/assets/skills/oat-review-receive/SKILL.md +18 -17
  42. package/assets/skills/oat-review-receive-remote/SKILL.md +13 -13
  43. package/assets/skills/oat-wave-execute/SKILL.md +2 -2
  44. package/assets/templates/plan.md +1 -1
  45. package/dist/commands/gate/__fixtures__/fake-runtime.mjs +4 -4
  46. package/dist/commands/gate/index.d.ts.map +1 -1
  47. package/dist/commands/gate/index.js +20 -11
  48. package/dist/commands/gate/review-verdict.d.ts +2 -2
  49. package/dist/commands/gate/review-verdict.d.ts.map +1 -1
  50. package/dist/commands/gate/review-verdict.js +223 -57
  51. package/dist/review-remote/body-builder.d.ts +3 -3
  52. package/dist/review-remote/body-builder.d.ts.map +1 -1
  53. package/dist/review-remote/body-builder.js +12 -12
  54. package/dist/review-remote/reviewer-dispatch.d.ts +2 -2
  55. package/dist/review-remote/reviewer-dispatch.d.ts.map +1 -1
  56. package/dist/review-remote/reviewer-dispatch.js +15 -7
  57. package/package.json +2 -2
@@ -67,13 +67,13 @@ None can continue under `warn` or produce an allowed disposition.
67
67
 
68
68
  ## Boundary classes
69
69
 
70
- | Class | Required behavior |
71
- | ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
72
- | `destructive-change-risk` | Stop before deletion, overwrite of irreplaceable state, force-push/history rewrite, or another destructive action not explicitly authorized by the project contract. |
73
- | `unresolved-critical-findings` | Stop while any Critical finding is unresolved or a blocking review cannot produce a passing result. Important findings follow the configured gate policy; they never silently disappear. |
74
- | `repository-policy-approval` | Stop when a protected branch, required reviewer, merge policy, ownership boundary, or equivalent repository rule requires a human or external approval. |
75
- | `missing-credentials` | Stop when a required credential is absent and no integrity-preserving offline or lower-tier route exists. Name the variable or credential class, never its value. |
76
- | `product-judgment` | Stop when available evidence does not support a choice within the approved goal and choosing would materially change product scope or behavior. |
70
+ | Class | Required behavior |
71
+ | ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
72
+ | `destructive-change-risk` | Stop before deletion, overwrite of irreplaceable state, force-push/history rewrite, or another destructive action not explicitly authorized by the project contract. |
73
+ | `unresolved-critical-findings` | Stop while any Critical finding is unresolved or a blocking review cannot produce a passing result. High findings follow the configured gate policy; they never silently disappear. |
74
+ | `repository-policy-approval` | Stop when a protected branch, required reviewer, merge policy, ownership boundary, or equivalent repository rule requires a human or external approval. |
75
+ | `missing-credentials` | Stop when a required credential is absent and no integrity-preserving offline or lower-tier route exists. Name the variable or credential class, never its value. |
76
+ | `product-judgment` | Stop when available evidence does not support a choice within the approved goal and choosing would materially change product scope or behavior. |
77
77
 
78
78
  ## Provenance
79
79
 
@@ -114,7 +114,7 @@ remains.
114
114
  | QS-08 | `oat-project-quick-start` | Dispatch-ladder scope | Choose shared, local, user, or no adoption | Check existing user, local, then authorized shared config in that fixed order without prompting or provenance-based reordering; skip scalar-blocked candidates, stop before writing only if none is compatible, then adopt once and re-run preflight | `auto-resolve` / `boundary:repository-policy-approval` | File existence, compatibility evidence, selected scope, and recheck |
115
115
  | QS-09 | `oat-project-quick-start` | Project dispatch policy | Choose a named ceiling, uncapped, inherit, or unresolved | Preserve an explicit/configured value; unresolved non-interactive state blocks | `boundary:repository-policy-approval` | `state.md` policy or resolver diagnostic |
116
116
  | QS-10 | `oat-project-quick-start` | Optional phase-gate setup | Choose all, selected, or disabled | Use the shared non-interactive contract: leave absent and disabled unless an explicit value already exists | `auto-resolve` | Phase-gate setup status |
117
- | QS-11 | `oat-project-quick-start` | Plan artifact-review findings | Accept offered Medium/Minor fixes | Apply in-bundle, unambiguous fixes and re-review; preserve residuals and stop on unresolved Critical or material ambiguity | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row and residual-finding note |
117
+ | QS-11 | `oat-project-quick-start` | Plan artifact-review findings | Accept offered Medium/Low fixes | Apply in-bundle, unambiguous fixes and re-review; preserve residuals and stop on unresolved Critical or material ambiguity | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row and residual-finding note |
118
118
  | QS-12 | `oat-project-quick-start` | Configured exit gate | `block`, `prompt`, or `warn` after failure | Apply the configured failure semantics; `prompt` becomes a reported boundary | `auto-resolve` / `boundary:repository-policy-approval` | Structured gate result and disposition |
119
119
  | QS-13 | `oat-project-quick-start` | Lifecycle gate posture setup | Keep or disable each configured lifecycle gate | Use the shared non-interactive contract: preserve an explicit map; otherwise leave it absent and every configured gate enabled | `auto-resolve` | Gate posture setup status |
120
120
  | LITE-01 | `oat-project-lite` | Inherited dirty tree | Commit, proceed, or abort | Proceed without staging unrelated files; a required destructive cleanup stops | `auto-resolve` / `boundary:destructive-change-risk` | Lite preflight note |
@@ -124,7 +124,7 @@ remains.
124
124
  | LITE-05 | `oat-project-lite` | Plan approval gate | Approve, revise, or promote | Auto-confirm the recorded requirement set; contradictory or materially incomplete requirements stop | `auto-resolve` / `boundary:product-judgment` | Approval record in `plan.md` |
125
125
  | LITE-06 | `oat-project-lite` | Dispatch-ladder scope | Choose shared, local, user, or no adoption | Check existing user, local, then authorized shared config in that fixed order without prompting or provenance-based reordering; skip scalar-blocked candidates, stop before writing only if none is compatible, then adopt once and re-run preflight | `auto-resolve` / `boundary:repository-policy-approval` | File existence, compatibility evidence, selected scope, and recheck |
126
126
  | LITE-07 | `oat-project-lite` | Project dispatch policy | Choose a named ceiling, uncapped, inherit, or unresolved | Preserve an explicit/configured value; unresolved non-interactive state blocks | `boundary:repository-policy-approval` | `state.md` policy or resolver diagnostic |
127
- | LITE-08 | `oat-project-lite` | Plan artifact-review findings | Accept offered Medium/Minor fixes | Apply only unambiguous canonicalization fixes; never rewrite source intent; unresolved Critical or ambiguity stops | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row and lite disposition |
127
+ | LITE-08 | `oat-project-lite` | Plan artifact-review findings | Accept offered Medium/Low fixes | Apply only unambiguous canonicalization fixes; never rewrite source intent; unresolved Critical or ambiguity stops | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row and lite disposition |
128
128
  | LITE-09 | `oat-project-lite` | Configured exit gate | `block`, `prompt`, or `warn` after failure | Apply the configured failure semantics; `prompt` becomes a reported boundary | `auto-resolve` / `boundary:repository-policy-approval` | Structured gate result and disposition |
129
129
  | LITE-10 | `oat-project-lite` | Configured lifecycle gate posture | Keep or disable each configured lifecycle gate | Preserve an existing override map; otherwise preserve configured gates and write no override in non-interactive planning | `auto-resolve` / `boundary:repository-policy-approval` | `state.md` override map or recorded non-interactive preservation |
130
130
  | DISC-01 | `oat-project-discover` | Active-project confirmation or switch | Confirm the active project or choose another | Use only an explicitly supplied or valid active project; otherwise stop without guessing | `boundary:product-judgment` | Resolved project path |
@@ -151,7 +151,7 @@ remains.
151
151
  | PLAN-06 | `oat-project-plan` | Project dispatch policy | Choose a runnable policy | Preserve explicit/configured policy; unresolved non-interactive state blocks | `boundary:repository-policy-approval` | `state.md` policy or resolver diagnostic |
152
152
  | PLAN-07 | `oat-project-plan` | Plan breakdown confirmation | Confirm tasks or request changes | Complete the independent plan artifact-review loop, apply unambiguous fixes, and confirm only a clean executable plan | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row |
153
153
  | PLAN-08 | `oat-project-plan` | Optional phase-gate setup | Choose all, selected, or disabled | Use the shared non-interactive contract: preserve explicit state or leave disabled | `auto-resolve` | Phase-gate setup status |
154
- | PLAN-09 | `oat-project-plan` | Plan artifact-review findings | Accept offered Medium/Minor fixes | Apply unambiguous artifact-local fixes and re-review; unresolved Critical or material ambiguity stops | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row and residuals |
154
+ | PLAN-09 | `oat-project-plan` | Plan artifact-review findings | Accept offered Medium/Low fixes | Apply unambiguous artifact-local fixes and re-review; unresolved Critical or material ambiguity stops | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row and residuals |
155
155
  | PLAN-10 | `oat-project-plan` | Parallel-group proposal | Confirm a candidate group | Accept only when write-set and dependency evidence proves independence; otherwise keep sequential and record why | `auto-resolve` | Plan Parallelism section |
156
156
  | PLAN-11 | `oat-project-plan` | Configured exit gate | `block`, `prompt`, or `warn` after failure | Apply configured failure semantics; `prompt` becomes a reported boundary | `auto-resolve` / `boundary:repository-policy-approval` | Structured gate result and disposition |
157
157
  | PLAN-12 | `oat-project-plan` | Project-explainer intent | Generate or skip the project explainer | Preserve explicit or persisted intent; in autonomy generate only when kickoff explicitly requested it and never prompt | `auto-resolve` | Persisted project-explainer intent |
@@ -163,7 +163,7 @@ remains.
163
163
  | IMPORT-05 | `oat-project-import-plan` | Dispatch-ladder scope | Choose persistence scope | Check existing user, local, then authorized shared config in that fixed order without prompting or provenance-based reordering; skip scalar-blocked candidates, stop before writing only if none is compatible, then adopt once and re-run preflight | `auto-resolve` / `boundary:repository-policy-approval` | File existence, compatibility evidence, selected scope, and recheck |
164
164
  | IMPORT-06 | `oat-project-import-plan` | Project dispatch policy | Choose a runnable policy | Preserve explicit/configured policy; unresolved non-interactive state blocks | `boundary:repository-policy-approval` | `state.md` policy or resolver diagnostic |
165
165
  | IMPORT-07 | `oat-project-import-plan` | Optional phase-gate setup | Choose all, selected, or disabled | Preserve explicit imported state; otherwise use the shared non-interactive disabled behavior | `auto-resolve` | Phase-gate setup status |
166
- | IMPORT-08 | `oat-project-import-plan` | Import-aware artifact-review findings | Accept offered Medium/Minor fixes | Apply only unambiguous canonicalization fixes; never rewrite source intent; unresolved Critical or ambiguity stops | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row and import disposition |
166
+ | IMPORT-08 | `oat-project-import-plan` | Import-aware artifact-review findings | Accept offered Medium/Low fixes | Apply only unambiguous canonicalization fixes; never rewrite source intent; unresolved Critical or ambiguity stops | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row and import disposition |
167
167
  | IMPORT-09 | `oat-project-import-plan` | Configured exit gate | `block`, `prompt`, or `warn` after failure | Apply configured failure semantics; `prompt` becomes a reported boundary | `auto-resolve` / `boundary:repository-policy-approval` | Structured gate result and disposition |
168
168
  | IMPORT-10 | `oat-project-import-plan` | Lifecycle gate posture setup | Keep or disable each configured lifecycle gate | Preserve an explicit imported map; otherwise use the shared non-interactive behavior and leave every configured gate enabled | `auto-resolve` | Gate posture setup status |
169
169
  | IMPLEMENT-01 | `oat-project-implement` | Missing active project | Ask for project name | Use only an explicitly supplied or valid active project; otherwise stop | `boundary:product-judgment` | Resolved project path |
@@ -212,7 +212,7 @@ remains.
212
212
  | REVIEWRECEIVE-02 | `oat-project-review-receive` | Review-cycle limit | Choose manual review, proceed, or override | Stop at the configured cycle limit; never self-authorize an override or proceed to PR | `boundary:repository-policy-approval` | Cycle-count blocker |
213
213
  | REVIEWRECEIVE-03 | `oat-project-review-receive` | Final deferred Medium findings | Convert or accept deferral | Convert valid findings to fix tasks; preserve only an already explicit, evidence-backed deferral; ambiguity stops | `auto-resolve` / `boundary:product-judgment` | Deferred Medium ledger |
214
214
  | REVIEWRECEIVE-04 | `oat-project-review-receive` | New Medium deferral request | Approve deferral per finding | Default to conversion; do not create a new autonomous deferral for material work | `auto-resolve` | Finding disposition map |
215
- | REVIEWRECEIVE-05 | `oat-project-review-receive` | Final Minor disposition | Defer selected/all or convert all | Convert in-scope Minors by default; reject only with concrete evidence | `auto-resolve` | Finding disposition map |
215
+ | REVIEWRECEIVE-05 | `oat-project-review-receive` | Final Low disposition | Defer selected/all or convert all | Convert in-scope Lows by default; reject only with concrete evidence | `auto-resolve` | Finding disposition map |
216
216
  | REVIEWRECEIVE-06 | `oat-project-review-receive` | Code-review next action | Execute fixes, inspect plan, or exit | Execute added fix tasks through implement, then re-review | `auto-resolve` | State pointer and receive summary |
217
217
  | REVIEWRECEIVE-07 | `oat-project-review-receive` | Artifact-review next action | Resolve direction, re-review, or continue | Re-review applied edits; continue only after passing; user-direction findings stop | `auto-resolve` / `boundary:product-judgment` | Artifact disposition and review row |
218
218
  | REVIEWRECEIVE-08 | `oat-project-review-receive` | Defer receive bookkeeping commit | Confirm proceeding uncommitted | Never defer; commit bounded bookkeeping or stop on commit failure | `auto-resolve` / `boundary:repository-policy-approval` | Bookkeeping commit |
@@ -263,8 +263,8 @@ remains immutable baseline evidence for the original p01-t01 verification.
263
263
  | `oat-project-pr-final/SKILL.md` | `601ac2b890f2 -> NG`; `c264a64398f0 -> NG`; `9efcbcee42ea -> NG`; `655d61df0a8f -> NG`; `cf317c17c586 -> PRFINAL-01`; `2de348a391c0 -> PRFINAL-03` |
264
264
  | `oat-project-pr-final/references/docs/autonomy-contract.md` | `* -> NG` |
265
265
  | `oat-project-complete/SKILL.md` | `6ed459f9e462 -> NG`; `a167d03559fa -> NG`; `79c2eeed668c -> COMPLETE-01`; `2c1514b9d9af -> COMPLETE-01`; `31c750b4fea7 -> COMPLETE-01`; `cfba413b1293 -> COMPLETE-01`; `7fcfce0423ac -> COMPLETE-01`; `7bcbf58b54e9 -> NG`; `4c7f88a7f942 -> COMPLETE-02`; `6a1a95acc8cc -> COMPLETE-02`; `3b559956b3eb -> COMPLETE-03`; `14d161cdf99b -> COMPLETE-03`; `fffe5eea5ebd -> NG`; `e7dc6fdc4eb3 -> COMPLETE-01`; `e5460e437299 -> NG`; `882b61c9096c -> NG`; `9ffa1c752505 -> NG`; `8c5e599f6bac -> NG` |
266
- | `oat-project-review-provide/SKILL.md` | `1f4b981cac8b -> NG`; `adaeca152bb2 -> NG`; `2f7c201c3c06 -> NG`; `88f79700afdc -> NG`; `655d61df0a8f -> NG`; `efafde9ef5a0 -> NG`; `d2a3861d6323 -> REVIEWPROVIDE-02`; `65f5b9cf49cd -> REVIEWPROVIDE-04`; `962cb38d246a -> REVIEWPROVIDE-04`; `1a568483ba0b -> REVIEWPROVIDE-04`; `610e27edfe85 -> REVIEWPROVIDE-04`; `bb0096e95c47 -> REVIEWPROVIDE-06`; `55f6357a987d -> REVIEWPROVIDE-06`; `1bee61f8531c -> REVIEWPROVIDE-07`; `3d35091607a1 -> REVIEWPROVIDE-08`; `fb40c4341c4c -> NG`; `b22d16885150 -> NG`; `d2b25906242e -> REVIEWPROVIDE-08`; `fd8ebf72b3c4 -> NG`; `fcb9de611ff3 -> NG`; `d2a838dfb18d -> NG`; `c3d50ea7cf69 -> NG`; `09b1b8dd445c -> NG`; `7acc8f3718d2 -> REVIEWPROVIDE-09`; `b2fa883fc4a2 -> NG`; `fe4421531b4c -> NG` |
267
- | `oat-project-review-receive/SKILL.md` | `9b8a3743d626 -> NG`; `df49c8c6f192 -> NG`; `4ee8730382d3 -> NG`; `655d61df0a8f -> NG`; `765f897d67ac -> NG`; `53b58d16dd32 -> NG`; `fb8755a3bdf4 -> NG`; `c8ab5dd90075 -> NG`; `1f7dd98dff2f -> NG`; `56f78c6740e6 -> NG`; `76f5fb5a88cd -> NG`; `085abfa3599f -> REVIEWRECEIVE-01`; `3ad3aadb8c60 -> NG`; `a7d114059bb6 -> NG`; `ac88cfaa83d9 -> NG`; `594bbf70346c -> REVIEWRECEIVE-08`; `f31f07284718 -> REVIEWRECEIVE-02`; `aba178a21441 -> REVIEWRECEIVE-04`; `a37e601cd731 -> REVIEWRECEIVE-05`; `20e05e1a4381 -> REVIEWRECEIVE-06`; `90001dadf75f -> REVIEWRECEIVE-07`; `f8fd58180ecf -> NG`; `c3abcdc02d9f -> NG`; `f2ebdd6abb9b -> NG` |
266
+ | `oat-project-review-provide/SKILL.md` | `1f4b981cac8b -> NG`; `adaeca152bb2 -> NG`; `2f7c201c3c06 -> NG`; `88f79700afdc -> NG`; `655d61df0a8f -> NG`; `efafde9ef5a0 -> NG`; `d2a3861d6323 -> REVIEWPROVIDE-02`; `65f5b9cf49cd -> REVIEWPROVIDE-04`; `962cb38d246a -> REVIEWPROVIDE-04`; `1a568483ba0b -> REVIEWPROVIDE-04`; `610e27edfe85 -> REVIEWPROVIDE-04`; `bb0096e95c47 -> REVIEWPROVIDE-06`; `55f6357a987d -> REVIEWPROVIDE-06`; `1bee61f8531c -> REVIEWPROVIDE-07`; `3d35091607a1 -> REVIEWPROVIDE-08`; `fb40c4341c4c -> NG`; `b22d16885150 -> NG`; `d2b25906242e -> REVIEWPROVIDE-08`; `fd8ebf72b3c4 -> NG`; `79c8103e8656 -> NG`; `4fbd78337e33 -> NG`; `c3d50ea7cf69 -> NG`; `09b1b8dd445c -> NG`; `7acc8f3718d2 -> REVIEWPROVIDE-09`; `b2fa883fc4a2 -> NG`; `fe4421531b4c -> NG` |
267
+ | `oat-project-review-receive/SKILL.md` | `9b8a3743d626 -> NG`; `df49c8c6f192 -> NG`; `4ee8730382d3 -> NG`; `655d61df0a8f -> NG`; `765f897d67ac -> NG`; `53b58d16dd32 -> NG`; `fb8755a3bdf4 -> NG`; `1d710fb4cc66 -> NG`; `1f7dd98dff2f -> NG`; `56f78c6740e6 -> NG`; `76f5fb5a88cd -> NG`; `085abfa3599f -> REVIEWRECEIVE-01`; `92578f7df686 -> NG`; `a7d114059bb6 -> NG`; `ac88cfaa83d9 -> NG`; `594bbf70346c -> REVIEWRECEIVE-08`; `f31f07284718 -> REVIEWRECEIVE-02`; `e4c0625439f8 -> REVIEWRECEIVE-04`; `505ad8389c0a -> REVIEWRECEIVE-05`; `20e05e1a4381 -> REVIEWRECEIVE-06`; `90001dadf75f -> REVIEWRECEIVE-07`; `f8fd58180ecf -> NG`; `c3abcdc02d9f -> NG`; `f2ebdd6abb9b -> NG` |
268
268
  | `oat-project-review-provide/SKILL.md` | `2e794bf4fc4a -> REVIEWPROVIDE-08`; `5441ab977b46 -> REVIEWPROVIDE-08` |
269
269
  | `oat-project-review-provide/SKILL.md` | `f4238ebb1887 -> NG`; `0360fa2db9a5 -> NG` |
270
270
  | `oat-project-implement/references/phase-execution.md` | `b31a9a4e6f75 -> NG` |
@@ -5,7 +5,7 @@ disable-model-invocation: true
5
5
  user-invocable: true
6
6
  allowed-tools: Read, Write, Bash(git:*), Glob, Grep, AskUserQuestion
7
7
  metadata:
8
- version: 2.3.5
8
+ version: 2.3.6
9
9
  ---
10
10
 
11
11
  # Design Phase
@@ -738,7 +738,7 @@ the autonomy contract's `onFailure` semantics without prompting: `warn`
738
738
  continues with provenance, `block` stops after bounded attempts, and `prompt`
739
739
  is a reported boundary. Unresolved Critical review findings always stop
740
740
  autonomous design progression, regardless of a less restrictive gate failure
741
- setting; record the blocker and leave the project resumable. Important findings
741
+ setting; record the blocker and leave the project resumable. High findings
742
742
  follow the configured gate policy. When autonomy is inactive, the interactive
743
743
  behavior above is unchanged.
744
744
 
@@ -5,7 +5,7 @@ disable-model-invocation: false
5
5
  user-invocable: true
6
6
  allowed-tools: Read, Write, Bash(git:*), Bash(oat:*), Bash(pnpm:*), Glob, Grep, AskUserQuestion
7
7
  metadata:
8
- version: 2.2.6
8
+ version: 2.2.7
9
9
  ---
10
10
 
11
11
  # Discovery Phase
@@ -512,7 +512,7 @@ the autonomy contract's `onFailure` semantics without prompting: `warn`
512
512
  continues with provenance, `block` stops after bounded attempts, and `prompt`
513
513
  is a reported boundary. Unresolved Critical review findings always stop
514
514
  autonomous discovery progression, regardless of a less restrictive gate
515
- failure setting; record the blocker and leave the project resumable. Important
515
+ failure setting; record the blocker and leave the project resumable. High
516
516
  findings follow the configured gate policy. When autonomy is inactive, the
517
517
  interactive behavior above is unchanged.
518
518
 
@@ -6,7 +6,7 @@ disable-model-invocation: false
6
6
  user-invocable: true
7
7
  allowed-tools: Read, Write, Edit, Bash(git:*), Bash(jq:*), Bash(oat pjm:*), Bash(oat project push:*), Bash(oat project scope:*), Bash(oat tools:*), Glob, Grep, AskUserQuestion, Skill
8
8
  metadata:
9
- version: 1.8.4
9
+ version: 1.8.5
10
10
  ---
11
11
 
12
12
  # Project Documentation Sync
@@ -67,13 +67,13 @@ None can continue under `warn` or produce an allowed disposition.
67
67
 
68
68
  ## Boundary classes
69
69
 
70
- | Class | Required behavior |
71
- | ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
72
- | `destructive-change-risk` | Stop before deletion, overwrite of irreplaceable state, force-push/history rewrite, or another destructive action not explicitly authorized by the project contract. |
73
- | `unresolved-critical-findings` | Stop while any Critical finding is unresolved or a blocking review cannot produce a passing result. Important findings follow the configured gate policy; they never silently disappear. |
74
- | `repository-policy-approval` | Stop when a protected branch, required reviewer, merge policy, ownership boundary, or equivalent repository rule requires a human or external approval. |
75
- | `missing-credentials` | Stop when a required credential is absent and no integrity-preserving offline or lower-tier route exists. Name the variable or credential class, never its value. |
76
- | `product-judgment` | Stop when available evidence does not support a choice within the approved goal and choosing would materially change product scope or behavior. |
70
+ | Class | Required behavior |
71
+ | ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
72
+ | `destructive-change-risk` | Stop before deletion, overwrite of irreplaceable state, force-push/history rewrite, or another destructive action not explicitly authorized by the project contract. |
73
+ | `unresolved-critical-findings` | Stop while any Critical finding is unresolved or a blocking review cannot produce a passing result. High findings follow the configured gate policy; they never silently disappear. |
74
+ | `repository-policy-approval` | Stop when a protected branch, required reviewer, merge policy, ownership boundary, or equivalent repository rule requires a human or external approval. |
75
+ | `missing-credentials` | Stop when a required credential is absent and no integrity-preserving offline or lower-tier route exists. Name the variable or credential class, never its value. |
76
+ | `product-judgment` | Stop when available evidence does not support a choice within the approved goal and choosing would materially change product scope or behavior. |
77
77
 
78
78
  ## Provenance
79
79
 
@@ -114,7 +114,7 @@ remains.
114
114
  | QS-08 | `oat-project-quick-start` | Dispatch-ladder scope | Choose shared, local, user, or no adoption | Check existing user, local, then authorized shared config in that fixed order without prompting or provenance-based reordering; skip scalar-blocked candidates, stop before writing only if none is compatible, then adopt once and re-run preflight | `auto-resolve` / `boundary:repository-policy-approval` | File existence, compatibility evidence, selected scope, and recheck |
115
115
  | QS-09 | `oat-project-quick-start` | Project dispatch policy | Choose a named ceiling, uncapped, inherit, or unresolved | Preserve an explicit/configured value; unresolved non-interactive state blocks | `boundary:repository-policy-approval` | `state.md` policy or resolver diagnostic |
116
116
  | QS-10 | `oat-project-quick-start` | Optional phase-gate setup | Choose all, selected, or disabled | Use the shared non-interactive contract: leave absent and disabled unless an explicit value already exists | `auto-resolve` | Phase-gate setup status |
117
- | QS-11 | `oat-project-quick-start` | Plan artifact-review findings | Accept offered Medium/Minor fixes | Apply in-bundle, unambiguous fixes and re-review; preserve residuals and stop on unresolved Critical or material ambiguity | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row and residual-finding note |
117
+ | QS-11 | `oat-project-quick-start` | Plan artifact-review findings | Accept offered Medium/Low fixes | Apply in-bundle, unambiguous fixes and re-review; preserve residuals and stop on unresolved Critical or material ambiguity | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row and residual-finding note |
118
118
  | QS-12 | `oat-project-quick-start` | Configured exit gate | `block`, `prompt`, or `warn` after failure | Apply the configured failure semantics; `prompt` becomes a reported boundary | `auto-resolve` / `boundary:repository-policy-approval` | Structured gate result and disposition |
119
119
  | QS-13 | `oat-project-quick-start` | Lifecycle gate posture setup | Keep or disable each configured lifecycle gate | Use the shared non-interactive contract: preserve an explicit map; otherwise leave it absent and every configured gate enabled | `auto-resolve` | Gate posture setup status |
120
120
  | LITE-01 | `oat-project-lite` | Inherited dirty tree | Commit, proceed, or abort | Proceed without staging unrelated files; a required destructive cleanup stops | `auto-resolve` / `boundary:destructive-change-risk` | Lite preflight note |
@@ -124,7 +124,7 @@ remains.
124
124
  | LITE-05 | `oat-project-lite` | Plan approval gate | Approve, revise, or promote | Auto-confirm the recorded requirement set; contradictory or materially incomplete requirements stop | `auto-resolve` / `boundary:product-judgment` | Approval record in `plan.md` |
125
125
  | LITE-06 | `oat-project-lite` | Dispatch-ladder scope | Choose shared, local, user, or no adoption | Check existing user, local, then authorized shared config in that fixed order without prompting or provenance-based reordering; skip scalar-blocked candidates, stop before writing only if none is compatible, then adopt once and re-run preflight | `auto-resolve` / `boundary:repository-policy-approval` | File existence, compatibility evidence, selected scope, and recheck |
126
126
  | LITE-07 | `oat-project-lite` | Project dispatch policy | Choose a named ceiling, uncapped, inherit, or unresolved | Preserve an explicit/configured value; unresolved non-interactive state blocks | `boundary:repository-policy-approval` | `state.md` policy or resolver diagnostic |
127
- | LITE-08 | `oat-project-lite` | Plan artifact-review findings | Accept offered Medium/Minor fixes | Apply only unambiguous canonicalization fixes; never rewrite source intent; unresolved Critical or ambiguity stops | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row and lite disposition |
127
+ | LITE-08 | `oat-project-lite` | Plan artifact-review findings | Accept offered Medium/Low fixes | Apply only unambiguous canonicalization fixes; never rewrite source intent; unresolved Critical or ambiguity stops | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row and lite disposition |
128
128
  | LITE-09 | `oat-project-lite` | Configured exit gate | `block`, `prompt`, or `warn` after failure | Apply the configured failure semantics; `prompt` becomes a reported boundary | `auto-resolve` / `boundary:repository-policy-approval` | Structured gate result and disposition |
129
129
  | LITE-10 | `oat-project-lite` | Configured lifecycle gate posture | Keep or disable each configured lifecycle gate | Preserve an existing override map; otherwise preserve configured gates and write no override in non-interactive planning | `auto-resolve` / `boundary:repository-policy-approval` | `state.md` override map or recorded non-interactive preservation |
130
130
  | DISC-01 | `oat-project-discover` | Active-project confirmation or switch | Confirm the active project or choose another | Use only an explicitly supplied or valid active project; otherwise stop without guessing | `boundary:product-judgment` | Resolved project path |
@@ -151,7 +151,7 @@ remains.
151
151
  | PLAN-06 | `oat-project-plan` | Project dispatch policy | Choose a runnable policy | Preserve explicit/configured policy; unresolved non-interactive state blocks | `boundary:repository-policy-approval` | `state.md` policy or resolver diagnostic |
152
152
  | PLAN-07 | `oat-project-plan` | Plan breakdown confirmation | Confirm tasks or request changes | Complete the independent plan artifact-review loop, apply unambiguous fixes, and confirm only a clean executable plan | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row |
153
153
  | PLAN-08 | `oat-project-plan` | Optional phase-gate setup | Choose all, selected, or disabled | Use the shared non-interactive contract: preserve explicit state or leave disabled | `auto-resolve` | Phase-gate setup status |
154
- | PLAN-09 | `oat-project-plan` | Plan artifact-review findings | Accept offered Medium/Minor fixes | Apply unambiguous artifact-local fixes and re-review; unresolved Critical or material ambiguity stops | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row and residuals |
154
+ | PLAN-09 | `oat-project-plan` | Plan artifact-review findings | Accept offered Medium/Low fixes | Apply unambiguous artifact-local fixes and re-review; unresolved Critical or material ambiguity stops | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row and residuals |
155
155
  | PLAN-10 | `oat-project-plan` | Parallel-group proposal | Confirm a candidate group | Accept only when write-set and dependency evidence proves independence; otherwise keep sequential and record why | `auto-resolve` | Plan Parallelism section |
156
156
  | PLAN-11 | `oat-project-plan` | Configured exit gate | `block`, `prompt`, or `warn` after failure | Apply configured failure semantics; `prompt` becomes a reported boundary | `auto-resolve` / `boundary:repository-policy-approval` | Structured gate result and disposition |
157
157
  | PLAN-12 | `oat-project-plan` | Project-explainer intent | Generate or skip the project explainer | Preserve explicit or persisted intent; in autonomy generate only when kickoff explicitly requested it and never prompt | `auto-resolve` | Persisted project-explainer intent |
@@ -163,7 +163,7 @@ remains.
163
163
  | IMPORT-05 | `oat-project-import-plan` | Dispatch-ladder scope | Choose persistence scope | Check existing user, local, then authorized shared config in that fixed order without prompting or provenance-based reordering; skip scalar-blocked candidates, stop before writing only if none is compatible, then adopt once and re-run preflight | `auto-resolve` / `boundary:repository-policy-approval` | File existence, compatibility evidence, selected scope, and recheck |
164
164
  | IMPORT-06 | `oat-project-import-plan` | Project dispatch policy | Choose a runnable policy | Preserve explicit/configured policy; unresolved non-interactive state blocks | `boundary:repository-policy-approval` | `state.md` policy or resolver diagnostic |
165
165
  | IMPORT-07 | `oat-project-import-plan` | Optional phase-gate setup | Choose all, selected, or disabled | Preserve explicit imported state; otherwise use the shared non-interactive disabled behavior | `auto-resolve` | Phase-gate setup status |
166
- | IMPORT-08 | `oat-project-import-plan` | Import-aware artifact-review findings | Accept offered Medium/Minor fixes | Apply only unambiguous canonicalization fixes; never rewrite source intent; unresolved Critical or ambiguity stops | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row and import disposition |
166
+ | IMPORT-08 | `oat-project-import-plan` | Import-aware artifact-review findings | Accept offered Medium/Low fixes | Apply only unambiguous canonicalization fixes; never rewrite source intent; unresolved Critical or ambiguity stops | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row and import disposition |
167
167
  | IMPORT-09 | `oat-project-import-plan` | Configured exit gate | `block`, `prompt`, or `warn` after failure | Apply configured failure semantics; `prompt` becomes a reported boundary | `auto-resolve` / `boundary:repository-policy-approval` | Structured gate result and disposition |
168
168
  | IMPORT-10 | `oat-project-import-plan` | Lifecycle gate posture setup | Keep or disable each configured lifecycle gate | Preserve an explicit imported map; otherwise use the shared non-interactive behavior and leave every configured gate enabled | `auto-resolve` | Gate posture setup status |
169
169
  | IMPLEMENT-01 | `oat-project-implement` | Missing active project | Ask for project name | Use only an explicitly supplied or valid active project; otherwise stop | `boundary:product-judgment` | Resolved project path |
@@ -212,7 +212,7 @@ remains.
212
212
  | REVIEWRECEIVE-02 | `oat-project-review-receive` | Review-cycle limit | Choose manual review, proceed, or override | Stop at the configured cycle limit; never self-authorize an override or proceed to PR | `boundary:repository-policy-approval` | Cycle-count blocker |
213
213
  | REVIEWRECEIVE-03 | `oat-project-review-receive` | Final deferred Medium findings | Convert or accept deferral | Convert valid findings to fix tasks; preserve only an already explicit, evidence-backed deferral; ambiguity stops | `auto-resolve` / `boundary:product-judgment` | Deferred Medium ledger |
214
214
  | REVIEWRECEIVE-04 | `oat-project-review-receive` | New Medium deferral request | Approve deferral per finding | Default to conversion; do not create a new autonomous deferral for material work | `auto-resolve` | Finding disposition map |
215
- | REVIEWRECEIVE-05 | `oat-project-review-receive` | Final Minor disposition | Defer selected/all or convert all | Convert in-scope Minors by default; reject only with concrete evidence | `auto-resolve` | Finding disposition map |
215
+ | REVIEWRECEIVE-05 | `oat-project-review-receive` | Final Low disposition | Defer selected/all or convert all | Convert in-scope Lows by default; reject only with concrete evidence | `auto-resolve` | Finding disposition map |
216
216
  | REVIEWRECEIVE-06 | `oat-project-review-receive` | Code-review next action | Execute fixes, inspect plan, or exit | Execute added fix tasks through implement, then re-review | `auto-resolve` | State pointer and receive summary |
217
217
  | REVIEWRECEIVE-07 | `oat-project-review-receive` | Artifact-review next action | Resolve direction, re-review, or continue | Re-review applied edits; continue only after passing; user-direction findings stop | `auto-resolve` / `boundary:product-judgment` | Artifact disposition and review row |
218
218
  | REVIEWRECEIVE-08 | `oat-project-review-receive` | Defer receive bookkeeping commit | Confirm proceeding uncommitted | Never defer; commit bounded bookkeeping or stop on commit failure | `auto-resolve` / `boundary:repository-policy-approval` | Bookkeeping commit |
@@ -263,8 +263,8 @@ remains immutable baseline evidence for the original p01-t01 verification.
263
263
  | `oat-project-pr-final/SKILL.md` | `601ac2b890f2 -> NG`; `c264a64398f0 -> NG`; `9efcbcee42ea -> NG`; `655d61df0a8f -> NG`; `cf317c17c586 -> PRFINAL-01`; `2de348a391c0 -> PRFINAL-03` |
264
264
  | `oat-project-pr-final/references/docs/autonomy-contract.md` | `* -> NG` |
265
265
  | `oat-project-complete/SKILL.md` | `6ed459f9e462 -> NG`; `a167d03559fa -> NG`; `79c2eeed668c -> COMPLETE-01`; `2c1514b9d9af -> COMPLETE-01`; `31c750b4fea7 -> COMPLETE-01`; `cfba413b1293 -> COMPLETE-01`; `7fcfce0423ac -> COMPLETE-01`; `7bcbf58b54e9 -> NG`; `4c7f88a7f942 -> COMPLETE-02`; `6a1a95acc8cc -> COMPLETE-02`; `3b559956b3eb -> COMPLETE-03`; `14d161cdf99b -> COMPLETE-03`; `fffe5eea5ebd -> NG`; `e7dc6fdc4eb3 -> COMPLETE-01`; `e5460e437299 -> NG`; `882b61c9096c -> NG`; `9ffa1c752505 -> NG`; `8c5e599f6bac -> NG` |
266
- | `oat-project-review-provide/SKILL.md` | `1f4b981cac8b -> NG`; `adaeca152bb2 -> NG`; `2f7c201c3c06 -> NG`; `88f79700afdc -> NG`; `655d61df0a8f -> NG`; `efafde9ef5a0 -> NG`; `d2a3861d6323 -> REVIEWPROVIDE-02`; `65f5b9cf49cd -> REVIEWPROVIDE-04`; `962cb38d246a -> REVIEWPROVIDE-04`; `1a568483ba0b -> REVIEWPROVIDE-04`; `610e27edfe85 -> REVIEWPROVIDE-04`; `bb0096e95c47 -> REVIEWPROVIDE-06`; `55f6357a987d -> REVIEWPROVIDE-06`; `1bee61f8531c -> REVIEWPROVIDE-07`; `3d35091607a1 -> REVIEWPROVIDE-08`; `fb40c4341c4c -> NG`; `b22d16885150 -> NG`; `d2b25906242e -> REVIEWPROVIDE-08`; `fd8ebf72b3c4 -> NG`; `fcb9de611ff3 -> NG`; `d2a838dfb18d -> NG`; `c3d50ea7cf69 -> NG`; `09b1b8dd445c -> NG`; `7acc8f3718d2 -> REVIEWPROVIDE-09`; `b2fa883fc4a2 -> NG`; `fe4421531b4c -> NG` |
267
- | `oat-project-review-receive/SKILL.md` | `9b8a3743d626 -> NG`; `df49c8c6f192 -> NG`; `4ee8730382d3 -> NG`; `655d61df0a8f -> NG`; `765f897d67ac -> NG`; `53b58d16dd32 -> NG`; `fb8755a3bdf4 -> NG`; `c8ab5dd90075 -> NG`; `1f7dd98dff2f -> NG`; `56f78c6740e6 -> NG`; `76f5fb5a88cd -> NG`; `085abfa3599f -> REVIEWRECEIVE-01`; `3ad3aadb8c60 -> NG`; `a7d114059bb6 -> NG`; `ac88cfaa83d9 -> NG`; `594bbf70346c -> REVIEWRECEIVE-08`; `f31f07284718 -> REVIEWRECEIVE-02`; `aba178a21441 -> REVIEWRECEIVE-04`; `a37e601cd731 -> REVIEWRECEIVE-05`; `20e05e1a4381 -> REVIEWRECEIVE-06`; `90001dadf75f -> REVIEWRECEIVE-07`; `f8fd58180ecf -> NG`; `c3abcdc02d9f -> NG`; `f2ebdd6abb9b -> NG` |
266
+ | `oat-project-review-provide/SKILL.md` | `1f4b981cac8b -> NG`; `adaeca152bb2 -> NG`; `2f7c201c3c06 -> NG`; `88f79700afdc -> NG`; `655d61df0a8f -> NG`; `efafde9ef5a0 -> NG`; `d2a3861d6323 -> REVIEWPROVIDE-02`; `65f5b9cf49cd -> REVIEWPROVIDE-04`; `962cb38d246a -> REVIEWPROVIDE-04`; `1a568483ba0b -> REVIEWPROVIDE-04`; `610e27edfe85 -> REVIEWPROVIDE-04`; `bb0096e95c47 -> REVIEWPROVIDE-06`; `55f6357a987d -> REVIEWPROVIDE-06`; `1bee61f8531c -> REVIEWPROVIDE-07`; `3d35091607a1 -> REVIEWPROVIDE-08`; `fb40c4341c4c -> NG`; `b22d16885150 -> NG`; `d2b25906242e -> REVIEWPROVIDE-08`; `fd8ebf72b3c4 -> NG`; `79c8103e8656 -> NG`; `4fbd78337e33 -> NG`; `c3d50ea7cf69 -> NG`; `09b1b8dd445c -> NG`; `7acc8f3718d2 -> REVIEWPROVIDE-09`; `b2fa883fc4a2 -> NG`; `fe4421531b4c -> NG` |
267
+ | `oat-project-review-receive/SKILL.md` | `9b8a3743d626 -> NG`; `df49c8c6f192 -> NG`; `4ee8730382d3 -> NG`; `655d61df0a8f -> NG`; `765f897d67ac -> NG`; `53b58d16dd32 -> NG`; `fb8755a3bdf4 -> NG`; `1d710fb4cc66 -> NG`; `1f7dd98dff2f -> NG`; `56f78c6740e6 -> NG`; `76f5fb5a88cd -> NG`; `085abfa3599f -> REVIEWRECEIVE-01`; `92578f7df686 -> NG`; `a7d114059bb6 -> NG`; `ac88cfaa83d9 -> NG`; `594bbf70346c -> REVIEWRECEIVE-08`; `f31f07284718 -> REVIEWRECEIVE-02`; `e4c0625439f8 -> REVIEWRECEIVE-04`; `505ad8389c0a -> REVIEWRECEIVE-05`; `20e05e1a4381 -> REVIEWRECEIVE-06`; `90001dadf75f -> REVIEWRECEIVE-07`; `f8fd58180ecf -> NG`; `c3abcdc02d9f -> NG`; `f2ebdd6abb9b -> NG` |
268
268
  | `oat-project-review-provide/SKILL.md` | `2e794bf4fc4a -> REVIEWPROVIDE-08`; `5441ab977b46 -> REVIEWPROVIDE-08` |
269
269
  | `oat-project-review-provide/SKILL.md` | `f4238ebb1887 -> NG`; `0360fa2db9a5 -> NG` |
270
270
  | `oat-project-implement/references/phase-execution.md` | `b31a9a4e6f75 -> NG` |
@@ -7,7 +7,7 @@ disable-model-invocation: true
7
7
  user-invocable: true
8
8
  allowed-tools: Read, Write, Bash(git:*), Bash(oat:*), Bash(oat project log:*), Glob, Grep, AskUserQuestion, Task
9
9
  metadata:
10
- version: 2.3.10
10
+ version: 2.3.11
11
11
  ---
12
12
 
13
13
  # Implementation Phase
@@ -239,7 +239,7 @@ Rules:
239
239
  - Each task result and commit was verified against HEAD and its file boundary
240
240
  - Implementation.md tracks all progress
241
241
  - Final verification passes
242
- - Final review passes (no Critical/Important findings)
242
+ - Final review passes (no Critical/High findings)
243
243
  - The configured implementation exit gate has an allowed and fresh disposition
244
244
  before approval-aware sequencing, completion state, or success output
245
245
  - No unresolved blockers
@@ -289,7 +289,7 @@ To run in a separate session use: oat-project-review-provide code final
289
289
  - If fresh session (option 2): User runs `oat-project-review-provide code final` in a separate session, then returns here
290
290
  - If inline (option 3): Agent first verifies equivalent current-host controls or an allowed exception, then executes the review per `oat-project-review-provide`; otherwise it uses the exact/pinned route or blocks
291
291
  - After review: User runs `oat-project-review-receive` to process findings
292
- - If Critical/Important findings: Fix tasks added, re-run the `oat-project-implement` skill
292
+ - If Critical/High findings: Fix tasks added, re-run the `oat-project-implement` skill
293
293
  - Loop until final review passes (max 3 cycles per oat-project-review-receive)
294
294
 
295
295
  **After final review is marked `passed`:**