@open-agent-toolkit/cli 0.1.66 → 0.1.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/agents/oat-reviewer.md +0 -1
- package/assets/docs/cli-utilities/workflow-gates.md +24 -5
- package/assets/docs/reference/cli-reference.md +1 -1
- package/assets/docs/workflows/projects/dispatch-ceiling.md +11 -3
- package/assets/docs/workflows/projects/pr-flow.md +12 -1
- package/assets/docs/workflows/projects/reviews.md +21 -1
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-project-autonomous/SKILL.md +1 -1
- package/assets/skills/oat-project-autonomous/references/gate-inventory.md +2 -2
- package/assets/skills/oat-project-complete/SKILL.md +20 -2
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +2 -2
- package/assets/skills/oat-project-implement/SKILL.md +1 -1
- package/assets/skills/oat-project-implement/references/completion-and-closeout.md +12 -1
- package/assets/skills/oat-project-implement/references/dispatch-and-dry-run.md +24 -9
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +2 -2
- package/assets/skills/oat-project-implement/references/phase-execution.md +5 -2
- package/assets/skills/oat-project-next/SKILL.md +21 -6
- package/assets/skills/oat-project-plan/SKILL.md +6 -1
- package/assets/skills/oat-project-plan-writing/SKILL.md +19 -2
- package/assets/skills/oat-project-pr-final/SKILL.md +20 -5
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +2 -2
- package/assets/skills/oat-project-pr-progress/SKILL.md +18 -3
- package/assets/skills/oat-project-progress/SKILL.md +4 -1
- package/assets/skills/oat-project-quick-start/SKILL.md +6 -1
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +2 -2
- package/assets/skills/oat-project-review-provide/SKILL.md +7 -2
- package/assets/skills/oat-project-review-receive/SKILL.md +46 -18
- package/assets/skills/oat-project-review-receive-remote/SKILL.md +41 -8
- package/dist/commands/cleanup/project/project.utils.d.ts.map +1 -1
- package/dist/commands/cleanup/project/project.utils.js +19 -1
- package/dist/commands/gate/index.d.ts +2 -0
- package/dist/commands/gate/index.d.ts.map +1 -1
- package/dist/commands/gate/index.js +29 -1
- package/dist/commands/review/latest.d.ts +1 -0
- package/dist/commands/review/latest.d.ts.map +1 -1
- package/dist/commands/review/latest.js +96 -22
- package/package.json +2 -2
|
@@ -520,11 +520,30 @@ Gate failure behavior is owned by the gate-aware skill:
|
|
|
520
520
|
available target. Once a target actually runs, its exit code is the gate result;
|
|
521
521
|
OAT does not try another target after a failed review.
|
|
522
522
|
|
|
523
|
-
Gate target execution has a child-process timeout
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
523
|
+
Gate target execution has a child-process timeout. Set
|
|
524
|
+
`OAT_GATE_EXEC_TIMEOUT_MS` to a positive integer number of milliseconds to
|
|
525
|
+
override the 900,000 ms (15-minute) default. An unset, non-integer, or
|
|
526
|
+
non-positive value uses the default.
|
|
527
|
+
|
|
528
|
+
After a review target times out, OAT re-scans the project reviews for exactly
|
|
529
|
+
one artifact carrying that invocation's `oat_gate_run_id`. A recovered artifact
|
|
530
|
+
still passes through the normal project, timestamp, invocation, normalization,
|
|
531
|
+
threshold, and handoff checks. If those checks produce `status: ok` or
|
|
532
|
+
`status: blocked`, the envelope also includes `lateCompletion: true`. This is
|
|
533
|
+
additive recovery telemetry, not a new status: route review-receive from
|
|
534
|
+
`status`, `receiveEligible`, and `handoff` as usual.
|
|
535
|
+
|
|
536
|
+
When timeout recovery finds no matching run-ID path and no changed diagnostic
|
|
537
|
+
artifact, JSON output reports `status: review_failed`, `outcome:
|
|
538
|
+
review_did_not_complete`, `timedOut: true`, the timeout value, and
|
|
539
|
+
`noOutputProduced`. That field is `true` only when the timed-out child emitted
|
|
540
|
+
zero stdout and stderr bytes; it is `false` when the child emitted any captured
|
|
541
|
+
output.
|
|
542
|
+
|
|
543
|
+
Correlation anomalies keep their more specific failure. Multiple artifacts
|
|
544
|
+
carrying the run ID, or a changed artifact carrying a mismatched run ID, return
|
|
545
|
+
`targeting_correlation_failed` with `receiveEligible: false`. Do not receive
|
|
546
|
+
those artifacts; correct the project/run correlation and start a new gate run.
|
|
528
547
|
|
|
529
548
|
## Current limits
|
|
530
549
|
|
|
@@ -68,7 +68,7 @@ Notable commands introduced in the current CLI surface:
|
|
|
68
68
|
- `oat repo archive sync [project-name]` - hydrate archived project snapshots from the configured repo-scoped S3 archive into `.oat/projects/archived/`. The old `oat project archive sync` path remains as a deprecated shim.
|
|
69
69
|
- `oat project validate-plan --project-path <path>` - validates `oat_plan_parallel_groups` metadata in `plan.md`; exits non-zero on invalid. See [Implementation Execution](../workflows/projects/implementation-execution.md#plan-declared-parallelism).
|
|
70
70
|
- `oat project set-mode` — deprecated no-op. Execution mode is no longer user-selectable; emits a deprecation warning and preserves the `--json` contract.
|
|
71
|
-
- `oat gate review <prompt...>` - run a stateful OAT review through the target registry, parse the produced review artifact, and exit nonzero for configured blocking findings. With `--json`, the result envelope on exit is the canonical completion signal: `status` is `ok` | `blocked` | `review_failed` | `artifact_validation_failed` | `targeting_correlation_failed`, alongside `runId`, `generatedAt`, and `artifactPath` when available. Invoke `oat-project-review-receive` only when all three conditions hold: `status` is `ok` or `blocked`, `receiveEligible` is `true`, and `handoff` is non-null. For `artifact_validation_failed`, correct the artifact and rerun the gate for successful revalidation before receive. `targeting_correlation_failed` sets `receiveEligible: false`; do not run review-receive even if it reports an artifact path. Orchestrators should read the structured result rather than poll the filesystem. The command runs standalone (for example, `--review-scope final`), not only inside `oat-project-implement`. See [Workflow Gates → Gate completion signal](../cli-utilities/workflow-gates.md#gate-completion-signal).
|
|
71
|
+
- `oat gate review <prompt...>` - run a stateful OAT review through the target registry, parse the produced review artifact, and exit nonzero for configured blocking findings. With `--json`, the result envelope on exit is the canonical completion signal: `status` is `ok` | `blocked` | `review_failed` | `artifact_validation_failed` | `targeting_correlation_failed`, alongside `runId`, `generatedAt`, and `artifactPath` when available. Invoke `oat-project-review-receive` only when all three conditions hold: `status` is `ok` or `blocked`, `receiveEligible` is `true`, and `handoff` is non-null. For `artifact_validation_failed`, correct the artifact and rerun the gate for successful revalidation before receive. `targeting_correlation_failed` sets `receiveEligible: false`; do not run review-receive even if it reports an artifact path. The child-process timeout defaults to 900,000 ms (15 minutes); set `OAT_GATE_EXEC_TIMEOUT_MS` to a positive integer number of milliseconds to override it. After a timeout, a validated run-correlated artifact returns the ordinary `ok` or `blocked` envelope with additive `lateCompletion: true`. A timeout with no matching run-ID path and no changed diagnostic artifact returns `review_failed` with additive `noOutputProduced`, which is `true` only when the child emitted zero stdout and stderr bytes. Duplicate run-ID matches or a changed artifact with a mismatched run ID retain `targeting_correlation_failed` and `receiveEligible: false`. Neither additive field changes receive routing: continue to use `status`, `receiveEligible`, and `handoff`. Orchestrators should read the structured result rather than poll the filesystem. The command runs standalone (for example, `--review-scope final`), not only inside `oat-project-implement`. See [Workflow Gates → Gate completion signal](../cli-utilities/workflow-gates.md#gate-completion-signal).
|
|
72
72
|
- `oat gate target set <id> --invocation-model <model|provider-default> --invocation-reasoning-effort <effort|provider-default>` - persist optional configured invocation metadata alongside an exec target without inferring it from the target command.
|
|
73
73
|
- `oat gate target list --json` - inspect resolved gate targets without selecting or executing a reviewer. Each entry reports its config origin, whether it is explicitly configured and enabled, current availability, and normalized configured invocation values (`unknown` when omitted).
|
|
74
74
|
- `oat gate cross-provider-exec <prompt...>` - choose an available exec target while avoiding the current runtime by default, then run the prompt with the chosen target's configured base command and exit with the child status.
|
|
@@ -253,9 +253,17 @@ ambiguous route, malformed ordering, a reviewer candidate request, or controls
|
|
|
253
253
|
that cannot compile exactly. The root blocks instead of reusing its own target,
|
|
254
254
|
a base role, or a provider default.
|
|
255
255
|
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
256
|
+
Implementer and fix resolution has two mutually exclusive selection branches:
|
|
257
|
+
|
|
258
|
+
- **Preferred selection:** pass `--preferred` for legacy scalar ceilings or
|
|
259
|
+
managed `Uncapped` compatibility. Do not include `--candidate-model` or
|
|
260
|
+
`--candidate-effort`.
|
|
261
|
+
- **Exact-candidate selection:** pass `--candidate-model` and, where applicable,
|
|
262
|
+
`--candidate-effort` for a managed capped phase or fix. Do not include
|
|
263
|
+
`--preferred`.
|
|
264
|
+
|
|
265
|
+
Never combine the branches in one resolver invocation. The exact-candidate
|
|
266
|
+
branch replaces, rather than supplements, preferred selection.
|
|
259
267
|
|
|
260
268
|
## Provider Enforcement
|
|
261
269
|
|
|
@@ -46,7 +46,18 @@ After `oat-project-pr-final` creates the PR, `state.md` transitions to `oat_phas
|
|
|
46
46
|
From `pr_open`:
|
|
47
47
|
|
|
48
48
|
- **Feedback received:** run `oat-project-revise` to create revision tasks and re-enter implementation
|
|
49
|
-
- **
|
|
49
|
+
- **Ready for completion:** run `oat-project-complete` to finalize and archive the project. If `oat_pr_status: open` is already tracked, completion skips asking whether to open a PR again and can show the tracked `oat_pr_url` in its summary.
|
|
50
|
+
|
|
51
|
+
Both completion orderings are supported:
|
|
52
|
+
|
|
53
|
+
- **Complete before merge:** run `oat-project-complete` while the PR is open,
|
|
54
|
+
then merge.
|
|
55
|
+
- **Merge before completion:** merge the PR first, then run
|
|
56
|
+
`oat-project-complete`.
|
|
57
|
+
|
|
58
|
+
An open PR is not a completion blocker. When completion archives project
|
|
59
|
+
artifacts, the archive-aware flow regenerates and synchronizes the open PR body
|
|
60
|
+
so its artifact links remain valid.
|
|
50
61
|
|
|
51
62
|
## Reference artifacts
|
|
52
63
|
|
|
@@ -26,9 +26,12 @@ Use `oat review latest` when a skill or operator needs to resolve "the most rece
|
|
|
26
26
|
```bash
|
|
27
27
|
oat review latest --json
|
|
28
28
|
oat review latest --project .oat/projects/shared/example --json
|
|
29
|
+
oat review latest --project .oat/projects/shared/example --actionable-project --json
|
|
29
30
|
```
|
|
30
31
|
|
|
31
|
-
The resolver orders candidates by `oat_generated_at` frontmatter, not filesystem mtime. With an active or explicit project, it scans the project's `reviews/` directory first, then `reviews/archived/`, then ad-hoc review locations (`.oat/repo/reviews/` and `.oat/projects/local/orphan-reviews/`). When candidates share the same generated time, active project reviews outrank archived and ad-hoc reviews, then lifecycle recency breaks remaining ties (`final` > higher phase/task scope > lower phase/task scope).
|
|
32
|
+
The default resolver is an all-history lookup. It orders candidates by `oat_generated_at` frontmatter, not filesystem mtime. With an active or explicit project, it scans the project's `reviews/` directory first, then `reviews/archived/`, then ad-hoc review locations (`.oat/repo/reviews/` and `.oat/projects/local/orphan-reviews/`). When candidates share the same generated time, active project reviews outrank archived and ad-hoc reviews, then lifecycle recency breaks remaining ties (`final` > higher phase/task scope > lower phase/task scope).
|
|
33
|
+
|
|
34
|
+
Use `--actionable-project` when project review-receive needs work waiting for disposition. A top-level artifact is actionable only when its scope, type, and artifact path identify a `received` event in the plan's Reviews ledger. Top-level placement alone is insufficient: passed, `fixes_added`, `fixes_completed`, mismatched, and archived events return `actionable: false`. The JSON response contains `path`, `scope`, `generatedAt`, `kind` (`project` or `adhoc`), `archived`, and `actionable`. If no matching review exists, those fields are `null`.
|
|
32
35
|
|
|
33
36
|
`oat-project-review-receive` uses this resolver when it is invoked from natural language and needs to offer the latest project review, or route an ad-hoc result to `oat-review-receive`.
|
|
34
37
|
|
|
@@ -89,6 +92,23 @@ Status progression in `plan.md` Reviews table:
|
|
|
89
92
|
- `fixes_completed`
|
|
90
93
|
- `passed`
|
|
91
94
|
|
|
95
|
+
Each row is an append-ordered review event. Duplicate scope and type rows are
|
|
96
|
+
valid because separate reviews can cover the same subject. Scope, type, and the
|
|
97
|
+
artifact filename identify an event:
|
|
98
|
+
|
|
99
|
+
- The first event for a scope and type may claim an unbound `pending` row whose
|
|
100
|
+
artifact is `-`.
|
|
101
|
+
- A review with a distinct artifact filename appends a new row instead of
|
|
102
|
+
overwriting an earlier bound event.
|
|
103
|
+
- Later bookkeeping updates match the event by scope, type, and artifact
|
|
104
|
+
filename. Moving an artifact into `reviews/archived/` preserves that identity.
|
|
105
|
+
- An event advances through the status progression monotonically and never
|
|
106
|
+
moves backward. A later event can begin at `received` without changing an
|
|
107
|
+
earlier event that already reached `passed`.
|
|
108
|
+
|
|
109
|
+
Readers that need current lifecycle state use the latest appended event matching
|
|
110
|
+
the relevant scope and type.
|
|
111
|
+
|
|
92
112
|
## Current policy
|
|
93
113
|
|
|
94
114
|
- Critical/Important: address before pass.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-autonomous
|
|
3
|
-
version: 1.0.
|
|
3
|
+
version: 1.0.3
|
|
4
4
|
description: Use when a user explicitly asks to run an OAT project autonomously end-to-end. Activates session-only autonomy, resumes the correct lifecycle phase, and drives the existing OAT skills through final PR or a reported boundary.
|
|
5
5
|
argument-hint: '<goal | project-slug | ticket-ref>'
|
|
6
6
|
disable-model-invocation: true
|
|
@@ -227,7 +227,7 @@ remains immutable baseline evidence for the original p01-t01 verification.
|
|
|
227
227
|
| `oat-project-import-plan/SKILL.md` | `f7ca8635452f -> NG`; `c2e5fa410069 -> NG`; `655d61df0a8f -> NG`; `b137f73db20c -> IMPORT-01`; `45b699c1c0b5 -> IMPORT-01`; `ba6d120791c1 -> IMPORT-01`; `070ebc5259af -> IMPORT-03`; `c11552696e2e -> IMPORT-03`; `cfe661966baf -> IMPORT-04`; `baa91c0a0bf8 -> NG`; `e364e84b2702 -> NG`; `39031985a945 -> IMPORT-06`; `f106aa29a217 -> IMPORT-07`; `65038450aee3 -> IMPORT-07`; `bee4c4aa34c6 -> NG`; `3f0b53056edd -> IMPORT-09` |
|
|
228
228
|
| `oat-project-implement/SKILL.md` | `c6732295bc8c -> NG`; `ffb3af0ba8ef -> NG`; `e0355c7a05e9 -> IMPLEMENT-11+IMPLEMENT-13+IMPLEMENT-16`; `6296f41ae11c -> NG`; `a167d03559fa -> NG`; `cf317c17c586 -> IMPLEMENT-01`; `8ce8a09feca4 -> NG` |
|
|
229
229
|
| `oat-project-implement/references/completion-and-closeout.md` | `105600fbd045 -> IMPLEMENT-11`; `3e6055aede6c -> IMPLEMENT-11`; `0705f7533039 -> IMPLEMENT-11`; `0c39746f3cb5 -> IMPLEMENT-11`; `14d89fe39c8c -> IMPLEMENT-11`; `378a75543a72 -> IMPLEMENT-11`; `c7b25627e674 -> IMPLEMENT-11`; `51ef9a453323 -> IMPLEMENT-11`; `c67145e3fb00 -> IMPLEMENT-11`; `64fbeac64811 -> IMPLEMENT-11`; `19b13c17bddb -> NG`; `f7dab9c1f96c -> IMPLEMENT-12`; `c69c17a069a8 -> IMPLEMENT-14`; `a97fa5634a68 -> IMPLEMENT-14`; `3af58881811c -> IMPLEMENT-14`; `4203e1f49d0f -> IMPLEMENT-14`; `c3bd2458a3d3 -> IMPLEMENT-13`; `95b5eafc070d -> IMPLEMENT-13`; `25ecbe9c998b -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `f6f24fd71da4 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `f18283bc1cf9 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `2c1ffc4a82dd -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `3454a07aa843 -> IMPLEMENT-16`; `0d86e2098cfb -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `d5fe597d266f -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `55a152e944c1 -> IMPLEMENT-16`; `effac7cbd573 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `9d2a34d8b148 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `d27462aaed26 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `9d52ecb17268 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `5b91aabe3757 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `fd0ad919f702 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `63bf28df1474 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `a4ed471dbc78 -> IMPLEMENT-16`; `6b7a64cec6e5 -> IMPLEMENT-16`; `0a4fdba0ebc0 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `a5033c2aada5 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `e77609eddba0 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `351156e8dde4 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `51d45bd2bbd1 -> IMPLEMENT-16`; `f7796ffcc804 -> IMPLEMENT-16`; `990d730cb494 -> IMPLEMENT-16`; `6ed28bb7d384 -> IMPLEMENT-16`; `8b7d4b5bcf1b -> IMPLEMENT-16`; `88aad500e6e9 -> IMPLEMENT-16`; `877e3e3f9eda -> IMPLEMENT-16`; `fc03c97f834e -> IMPLEMENT-16`; `12939a3da5e0 -> IMPLEMENT-16`; `bdb418335a88 -> IMPLEMENT-16`; `fba97e596ebd -> IMPLEMENT-16`; `3d0b5e2f14f0 -> IMPLEMENT-17`; `f56a9ce88461 -> IMPLEMENT-17`; `9ba67b50d0ba -> IMPLEMENT-17`; `39ff911760af -> IMPLEMENT-17`; `5b560b5bd6e3 -> IMPLEMENT-17`; `fa21df5e5e01 -> IMPLEMENT-17`; `0fed77bec55e -> IMPLEMENT-17`; `6d81cfb0483f -> IMPLEMENT-17`; `bee4c4aa34c6 -> NG`; `3f0b53056edd -> IMPLEMENT-18` |
|
|
230
|
-
| `oat-project-implement/references/dispatch-and-dry-run.md` | `21b85f5e4daa -> IMPLEMENT-08`; `74c92b32bb2a -> IMPLEMENT-08`; `8efd2d0517ab -> IMPLEMENT-09`; `461ed9b3e495 -> IMPLEMENT-09`; `b5ad64fd744d -> NG`; `14ce436cfffa -> NG`; `043ca36da3e2 -> NG`; `a23e45c1dc8d -> NG`; `498143bb41a7 -> NG`; `4fe3eb179023 -> NG`; `7f75485e5a33 -> NG`; `8ec3a96df029 -> NG`; `16c3f96e758d -> NG`; `5915c41fe058 -> NG`; `f51e43eeac56 -> NG`; `fd41c25623cb -> NG`; `58a932ed6453 -> NG`; `4718bd3ce12d -> NG`; `58c444a2126b -> NG`
|
|
230
|
+
| `oat-project-implement/references/dispatch-and-dry-run.md` | `21b85f5e4daa -> IMPLEMENT-08`; `74c92b32bb2a -> IMPLEMENT-08`; `8efd2d0517ab -> IMPLEMENT-09`; `461ed9b3e495 -> IMPLEMENT-09`; `b5ad64fd744d -> NG`; `14ce436cfffa -> NG`; `043ca36da3e2 -> NG`; `a23e45c1dc8d -> NG`; `498143bb41a7 -> NG`; `4fe3eb179023 -> NG`; `7f75485e5a33 -> NG`; `8ec3a96df029 -> NG`; `16c3f96e758d -> NG`; `5915c41fe058 -> NG`; `f51e43eeac56 -> NG`; `fd41c25623cb -> NG`; `58a932ed6453 -> NG`; `4718bd3ce12d -> NG`; `58c444a2126b -> NG`; `2df3adae4120 -> NG`; `e75df892b55c -> NG` |
|
|
231
231
|
| `oat-project-implement/references/docs/autonomy-contract.md` | `* -> NG` |
|
|
232
232
|
| `oat-project-implement/references/phase-execution.md` | `27737e814790 -> NG`; `6dda2b8e62e2 -> IMPLEMENT-10`; `b3197086bb1e -> IMPLEMENT-10` |
|
|
233
233
|
| `oat-project-implement/references/plan-and-resume.md` | `413829d31e32 -> IMPLEMENT-02`; `c7706cd8ad09 -> IMPLEMENT-03`; `a80a948df658 -> IMPLEMENT-03`; `b7ea139780ec -> IMPLEMENT-03+IMPLEMENT-04`; `8d438f2180ba -> IMPLEMENT-03`; `9e72e0518cda -> IMPLEMENT-03`; `3e177a1021e6 -> IMPLEMENT-03+IMPLEMENT-04`; `b59fc9eb9ce3 -> IMPLEMENT-03`; `a2b1d6855283 -> IMPLEMENT-03`; `44351a32e52a -> IMPLEMENT-03`; `b98b022f5523 -> IMPLEMENT-03`; `e9f5b949e214 -> IMPLEMENT-03`; `316fb6d9e980 -> IMPLEMENT-03`; `8b25a2c5c548 -> IMPLEMENT-03`; `1a59b1c0e705 -> IMPLEMENT-03`; `466cd562fc52 -> IMPLEMENT-03`; `083d896978d5 -> IMPLEMENT-03`; `f4ab11c13ae9 -> IMPLEMENT-03`; `7dc17ffcc1c4 -> IMPLEMENT-03`; `f731a90adabd -> IMPLEMENT-04`; `886ac01e7aa9 -> IMPLEMENT-04`; `b715db67df0c -> IMPLEMENT-04`; `2d9f26a539f3 -> IMPLEMENT-10`; `28384dee114f -> IMPLEMENT-05`; `f2591a4978b4 -> NG`; `8290823080b5 -> IMPLEMENT-06`; `f75789bf6c8e -> IMPLEMENT-07` |
|
|
@@ -238,7 +238,7 @@ remains immutable baseline evidence for the original p01-t01 verification.
|
|
|
238
238
|
| `oat-project-pr-final/references/docs/autonomy-contract.md` | `* -> NG` |
|
|
239
239
|
| `oat-project-complete/SKILL.md` | `6ed459f9e462 -> NG`; `a167d03559fa -> NG`; `79c2eeed668c -> COMPLETE-01`; `2c1514b9d9af -> COMPLETE-01`; `31c750b4fea7 -> COMPLETE-01`; `cfba413b1293 -> COMPLETE-01`; `ffcdc9d576c0 -> COMPLETE-01`; `7fcfce0423ac -> COMPLETE-01`; `9497d9f94eed -> COMPLETE-01`; `7b59c728d3fb -> COMPLETE-01`; `48e10a9636fe -> COMPLETE-01`; `c0dad37fc166 -> COMPLETE-01`; `aa9a36243ec1 -> COMPLETE-01`; `7bcbf58b54e9 -> NG`; `4c7f88a7f942 -> COMPLETE-02`; `6a1a95acc8cc -> COMPLETE-02`; `3b559956b3eb -> COMPLETE-03`; `14d161cdf99b -> COMPLETE-03`; `12f7c30a54c8 -> NG`; `fffe5eea5ebd -> NG` |
|
|
240
240
|
| `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`; `fab62c510bd0 -> REVIEWPROVIDE-05`; `a9f30853c867 -> REVIEWPROVIDE-05`; `0929c916fc20 -> REVIEWPROVIDE-05`; `f9a37c63afab -> REVIEWPROVIDE-05`; `687bb9368f92 -> REVIEWPROVIDE-05`; `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` |
|
|
241
|
-
| `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`; `3f758313fedb -> REVIEWRECEIVE-08`; `f31f07284718 -> REVIEWRECEIVE-02`; `aba178a21441 -> REVIEWRECEIVE-04`; `a37e601cd731 -> REVIEWRECEIVE-05`; `20e05e1a4381 -> REVIEWRECEIVE-06`; `90001dadf75f -> REVIEWRECEIVE-07`; `f8fd58180ecf -> NG`; `c3abcdc02d9f -> NG`
|
|
241
|
+
| `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`; `3f758313fedb -> REVIEWRECEIVE-08`; `f31f07284718 -> REVIEWRECEIVE-02`; `aba178a21441 -> REVIEWRECEIVE-04`; `a37e601cd731 -> REVIEWRECEIVE-05`; `20e05e1a4381 -> REVIEWRECEIVE-06`; `90001dadf75f -> REVIEWRECEIVE-07`; `f8fd58180ecf -> NG`; `c3abcdc02d9f -> NG`; `f2ebdd6abb9b -> NG` |
|
|
242
242
|
| `oat-dispatch-subagents/SKILL.md` | `cb4f86157fd6 -> DISPATCH-01`; `f165b1626192 -> DISPATCH-01`; `7ed5e2b1eb71 -> PDISPATCH-01`; `11c72bcdebad -> DISPATCH-02`; `0834ee701e12 -> DISPATCH-02`; `7fda54e1d519 -> PDISPATCH-01` |
|
|
243
243
|
| `oat-dispatch-subagents/references/provider-claude.md` | `fbe3a21e9533 -> NG` |
|
|
244
244
|
| `oat-dispatch-subagents/references/provider-codex.md` | `95b0f82018c7 -> NG` |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-complete
|
|
3
|
-
version: 1.5.
|
|
3
|
+
version: 1.5.2
|
|
4
4
|
description: Use when all implementation work is finished and the project is ready to close. Marks the OAT project lifecycle as complete.
|
|
5
5
|
disable-model-invocation: true
|
|
6
6
|
user-invocable: true
|
|
@@ -79,6 +79,15 @@ Use the same `state.md` read you already perform for `oat_pr_status`/`oat_pr_url
|
|
|
79
79
|
|
|
80
80
|
Some questions can be answered automatically from workflow preferences. Read each preference before deciding whether to include its question in the batched prompt:
|
|
81
81
|
|
|
82
|
+
Both lifecycle orderings are supported:
|
|
83
|
+
|
|
84
|
+
- **Complete before merge:** run this skill while the PR is open, then merge.
|
|
85
|
+
- **Merge before completion:** merge first, then run this skill.
|
|
86
|
+
|
|
87
|
+
An open PR is not a blocker. When completion archives project artifacts, the
|
|
88
|
+
existing archive-aware flow regenerates and syncs the open PR body so its links
|
|
89
|
+
remain valid.
|
|
90
|
+
|
|
82
91
|
```bash
|
|
83
92
|
ARCHIVE_PREF=$(oat config get workflow.archiveOnComplete 2>/dev/null || true)
|
|
84
93
|
PR_ON_COMPLETE=$(oat config get workflow.createPrOnComplete 2>/dev/null || true)
|
|
@@ -149,7 +158,12 @@ Run all gate checks and collect warnings. These are informational — they don't
|
|
|
149
158
|
PLAN_FILE="${PROJECT_PATH}/plan.md"
|
|
150
159
|
|
|
151
160
|
if [[ -f "$PLAN_FILE" ]]; then
|
|
152
|
-
|
|
161
|
+
reviews_section=$(awk '
|
|
162
|
+
/^## Reviews[[:space:]]*$/ { in_reviews = 1; next }
|
|
163
|
+
in_reviews && /^##[[:space:]]/ { exit }
|
|
164
|
+
in_reviews { print }
|
|
165
|
+
' "$PLAN_FILE")
|
|
166
|
+
final_row=$(printf '%s\n' "$reviews_section" | grep -E "^\|\s*final\s*\|\s*code\s*\|" | tail -1 || true)
|
|
153
167
|
if [[ -z "$final_row" ]]; then
|
|
154
168
|
echo "Warning: No final review row found in plan.md."
|
|
155
169
|
elif ! echo "$final_row" | grep -qE "\|\s*passed\s*\|"; then
|
|
@@ -161,6 +175,10 @@ else
|
|
|
161
175
|
fi
|
|
162
176
|
```
|
|
163
177
|
|
|
178
|
+
`reviews_section` is strictly the `## Reviews` section through the next
|
|
179
|
+
level-two heading. Within that ledger, `final_row` is the latest appended event
|
|
180
|
+
whose Scope is `final` and Type is `code`; earlier events remain history.
|
|
181
|
+
|
|
164
182
|
#### 3.2: Deferred Medium Findings
|
|
165
183
|
|
|
166
184
|
```bash
|
|
@@ -227,7 +227,7 @@ remains immutable baseline evidence for the original p01-t01 verification.
|
|
|
227
227
|
| `oat-project-import-plan/SKILL.md` | `f7ca8635452f -> NG`; `c2e5fa410069 -> NG`; `655d61df0a8f -> NG`; `b137f73db20c -> IMPORT-01`; `45b699c1c0b5 -> IMPORT-01`; `ba6d120791c1 -> IMPORT-01`; `070ebc5259af -> IMPORT-03`; `c11552696e2e -> IMPORT-03`; `cfe661966baf -> IMPORT-04`; `baa91c0a0bf8 -> NG`; `e364e84b2702 -> NG`; `39031985a945 -> IMPORT-06`; `f106aa29a217 -> IMPORT-07`; `65038450aee3 -> IMPORT-07`; `bee4c4aa34c6 -> NG`; `3f0b53056edd -> IMPORT-09` |
|
|
228
228
|
| `oat-project-implement/SKILL.md` | `c6732295bc8c -> NG`; `ffb3af0ba8ef -> NG`; `e0355c7a05e9 -> IMPLEMENT-11+IMPLEMENT-13+IMPLEMENT-16`; `6296f41ae11c -> NG`; `a167d03559fa -> NG`; `cf317c17c586 -> IMPLEMENT-01`; `8ce8a09feca4 -> NG` |
|
|
229
229
|
| `oat-project-implement/references/completion-and-closeout.md` | `105600fbd045 -> IMPLEMENT-11`; `3e6055aede6c -> IMPLEMENT-11`; `0705f7533039 -> IMPLEMENT-11`; `0c39746f3cb5 -> IMPLEMENT-11`; `14d89fe39c8c -> IMPLEMENT-11`; `378a75543a72 -> IMPLEMENT-11`; `c7b25627e674 -> IMPLEMENT-11`; `51ef9a453323 -> IMPLEMENT-11`; `c67145e3fb00 -> IMPLEMENT-11`; `64fbeac64811 -> IMPLEMENT-11`; `19b13c17bddb -> NG`; `f7dab9c1f96c -> IMPLEMENT-12`; `c69c17a069a8 -> IMPLEMENT-14`; `a97fa5634a68 -> IMPLEMENT-14`; `3af58881811c -> IMPLEMENT-14`; `4203e1f49d0f -> IMPLEMENT-14`; `c3bd2458a3d3 -> IMPLEMENT-13`; `95b5eafc070d -> IMPLEMENT-13`; `25ecbe9c998b -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `f6f24fd71da4 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `f18283bc1cf9 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `2c1ffc4a82dd -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `3454a07aa843 -> IMPLEMENT-16`; `0d86e2098cfb -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `d5fe597d266f -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `55a152e944c1 -> IMPLEMENT-16`; `effac7cbd573 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `9d2a34d8b148 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `d27462aaed26 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `9d52ecb17268 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `5b91aabe3757 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `fd0ad919f702 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `63bf28df1474 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `a4ed471dbc78 -> IMPLEMENT-16`; `6b7a64cec6e5 -> IMPLEMENT-16`; `0a4fdba0ebc0 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `a5033c2aada5 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `e77609eddba0 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `351156e8dde4 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `51d45bd2bbd1 -> IMPLEMENT-16`; `f7796ffcc804 -> IMPLEMENT-16`; `990d730cb494 -> IMPLEMENT-16`; `6ed28bb7d384 -> IMPLEMENT-16`; `8b7d4b5bcf1b -> IMPLEMENT-16`; `88aad500e6e9 -> IMPLEMENT-16`; `877e3e3f9eda -> IMPLEMENT-16`; `fc03c97f834e -> IMPLEMENT-16`; `12939a3da5e0 -> IMPLEMENT-16`; `bdb418335a88 -> IMPLEMENT-16`; `fba97e596ebd -> IMPLEMENT-16`; `3d0b5e2f14f0 -> IMPLEMENT-17`; `f56a9ce88461 -> IMPLEMENT-17`; `9ba67b50d0ba -> IMPLEMENT-17`; `39ff911760af -> IMPLEMENT-17`; `5b560b5bd6e3 -> IMPLEMENT-17`; `fa21df5e5e01 -> IMPLEMENT-17`; `0fed77bec55e -> IMPLEMENT-17`; `6d81cfb0483f -> IMPLEMENT-17`; `bee4c4aa34c6 -> NG`; `3f0b53056edd -> IMPLEMENT-18` |
|
|
230
|
-
| `oat-project-implement/references/dispatch-and-dry-run.md` | `21b85f5e4daa -> IMPLEMENT-08`; `74c92b32bb2a -> IMPLEMENT-08`; `8efd2d0517ab -> IMPLEMENT-09`; `461ed9b3e495 -> IMPLEMENT-09`; `b5ad64fd744d -> NG`; `14ce436cfffa -> NG`; `043ca36da3e2 -> NG`; `a23e45c1dc8d -> NG`; `498143bb41a7 -> NG`; `4fe3eb179023 -> NG`; `7f75485e5a33 -> NG`; `8ec3a96df029 -> NG`; `16c3f96e758d -> NG`; `5915c41fe058 -> NG`; `f51e43eeac56 -> NG`; `fd41c25623cb -> NG`; `58a932ed6453 -> NG`; `4718bd3ce12d -> NG`; `58c444a2126b -> NG`
|
|
230
|
+
| `oat-project-implement/references/dispatch-and-dry-run.md` | `21b85f5e4daa -> IMPLEMENT-08`; `74c92b32bb2a -> IMPLEMENT-08`; `8efd2d0517ab -> IMPLEMENT-09`; `461ed9b3e495 -> IMPLEMENT-09`; `b5ad64fd744d -> NG`; `14ce436cfffa -> NG`; `043ca36da3e2 -> NG`; `a23e45c1dc8d -> NG`; `498143bb41a7 -> NG`; `4fe3eb179023 -> NG`; `7f75485e5a33 -> NG`; `8ec3a96df029 -> NG`; `16c3f96e758d -> NG`; `5915c41fe058 -> NG`; `f51e43eeac56 -> NG`; `fd41c25623cb -> NG`; `58a932ed6453 -> NG`; `4718bd3ce12d -> NG`; `58c444a2126b -> NG`; `2df3adae4120 -> NG`; `e75df892b55c -> NG` |
|
|
231
231
|
| `oat-project-implement/references/docs/autonomy-contract.md` | `* -> NG` |
|
|
232
232
|
| `oat-project-implement/references/phase-execution.md` | `27737e814790 -> NG`; `6dda2b8e62e2 -> IMPLEMENT-10`; `b3197086bb1e -> IMPLEMENT-10` |
|
|
233
233
|
| `oat-project-implement/references/plan-and-resume.md` | `413829d31e32 -> IMPLEMENT-02`; `c7706cd8ad09 -> IMPLEMENT-03`; `a80a948df658 -> IMPLEMENT-03`; `b7ea139780ec -> IMPLEMENT-03+IMPLEMENT-04`; `8d438f2180ba -> IMPLEMENT-03`; `9e72e0518cda -> IMPLEMENT-03`; `3e177a1021e6 -> IMPLEMENT-03+IMPLEMENT-04`; `b59fc9eb9ce3 -> IMPLEMENT-03`; `a2b1d6855283 -> IMPLEMENT-03`; `44351a32e52a -> IMPLEMENT-03`; `b98b022f5523 -> IMPLEMENT-03`; `e9f5b949e214 -> IMPLEMENT-03`; `316fb6d9e980 -> IMPLEMENT-03`; `8b25a2c5c548 -> IMPLEMENT-03`; `1a59b1c0e705 -> IMPLEMENT-03`; `466cd562fc52 -> IMPLEMENT-03`; `083d896978d5 -> IMPLEMENT-03`; `f4ab11c13ae9 -> IMPLEMENT-03`; `7dc17ffcc1c4 -> IMPLEMENT-03`; `f731a90adabd -> IMPLEMENT-04`; `886ac01e7aa9 -> IMPLEMENT-04`; `b715db67df0c -> IMPLEMENT-04`; `2d9f26a539f3 -> IMPLEMENT-10`; `28384dee114f -> IMPLEMENT-05`; `f2591a4978b4 -> NG`; `8290823080b5 -> IMPLEMENT-06`; `f75789bf6c8e -> IMPLEMENT-07` |
|
|
@@ -238,7 +238,7 @@ remains immutable baseline evidence for the original p01-t01 verification.
|
|
|
238
238
|
| `oat-project-pr-final/references/docs/autonomy-contract.md` | `* -> NG` |
|
|
239
239
|
| `oat-project-complete/SKILL.md` | `6ed459f9e462 -> NG`; `a167d03559fa -> NG`; `79c2eeed668c -> COMPLETE-01`; `2c1514b9d9af -> COMPLETE-01`; `31c750b4fea7 -> COMPLETE-01`; `cfba413b1293 -> COMPLETE-01`; `ffcdc9d576c0 -> COMPLETE-01`; `7fcfce0423ac -> COMPLETE-01`; `9497d9f94eed -> COMPLETE-01`; `7b59c728d3fb -> COMPLETE-01`; `48e10a9636fe -> COMPLETE-01`; `c0dad37fc166 -> COMPLETE-01`; `aa9a36243ec1 -> COMPLETE-01`; `7bcbf58b54e9 -> NG`; `4c7f88a7f942 -> COMPLETE-02`; `6a1a95acc8cc -> COMPLETE-02`; `3b559956b3eb -> COMPLETE-03`; `14d161cdf99b -> COMPLETE-03`; `12f7c30a54c8 -> NG`; `fffe5eea5ebd -> NG` |
|
|
240
240
|
| `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`; `fab62c510bd0 -> REVIEWPROVIDE-05`; `a9f30853c867 -> REVIEWPROVIDE-05`; `0929c916fc20 -> REVIEWPROVIDE-05`; `f9a37c63afab -> REVIEWPROVIDE-05`; `687bb9368f92 -> REVIEWPROVIDE-05`; `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` |
|
|
241
|
-
| `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`; `3f758313fedb -> REVIEWRECEIVE-08`; `f31f07284718 -> REVIEWRECEIVE-02`; `aba178a21441 -> REVIEWRECEIVE-04`; `a37e601cd731 -> REVIEWRECEIVE-05`; `20e05e1a4381 -> REVIEWRECEIVE-06`; `90001dadf75f -> REVIEWRECEIVE-07`; `f8fd58180ecf -> NG`; `c3abcdc02d9f -> NG`
|
|
241
|
+
| `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`; `3f758313fedb -> REVIEWRECEIVE-08`; `f31f07284718 -> REVIEWRECEIVE-02`; `aba178a21441 -> REVIEWRECEIVE-04`; `a37e601cd731 -> REVIEWRECEIVE-05`; `20e05e1a4381 -> REVIEWRECEIVE-06`; `90001dadf75f -> REVIEWRECEIVE-07`; `f8fd58180ecf -> NG`; `c3abcdc02d9f -> NG`; `f2ebdd6abb9b -> NG` |
|
|
242
242
|
| `oat-dispatch-subagents/SKILL.md` | `cb4f86157fd6 -> DISPATCH-01`; `f165b1626192 -> DISPATCH-01`; `7ed5e2b1eb71 -> PDISPATCH-01`; `11c72bcdebad -> DISPATCH-02`; `0834ee701e12 -> DISPATCH-02`; `7fda54e1d519 -> PDISPATCH-01` |
|
|
243
243
|
| `oat-dispatch-subagents/references/provider-claude.md` | `fbe3a21e9533 -> NG` |
|
|
244
244
|
| `oat-dispatch-subagents/references/provider-codex.md` | `95b0f82018c7 -> NG` |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-implement
|
|
3
|
-
version: 2.1.
|
|
3
|
+
version: 2.1.2
|
|
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]'
|
|
@@ -142,10 +142,21 @@ Before requesting final review, ensure the latest project-artifact bookkeeping i
|
|
|
142
142
|
Check if final review already completed (preferred source of truth: plan.md Reviews table):
|
|
143
143
|
|
|
144
144
|
```bash
|
|
145
|
-
|
|
145
|
+
REVIEWS_SECTION=$(awk '
|
|
146
|
+
/^## Reviews[[:space:]]*$/ { in_reviews = 1; next }
|
|
147
|
+
in_reviews && /^##[[:space:]]/ { exit }
|
|
148
|
+
in_reviews { print }
|
|
149
|
+
' "$PROJECT_PATH/plan.md" 2>/dev/null)
|
|
150
|
+
FINAL_ROW=$(printf '%s\n' "$REVIEWS_SECTION" | grep -E "^\\|\\s*final\\s*\\|\\s*code\\s*\\|" | tail -1)
|
|
146
151
|
echo "$FINAL_ROW"
|
|
147
152
|
```
|
|
148
153
|
|
|
154
|
+
`REVIEWS_SECTION` is strictly the `## Reviews` section through the next
|
|
155
|
+
level-two heading. `FINAL_ROW` is the latest appended event in that ledger
|
|
156
|
+
matching Scope `final` and Type `code`. Earlier events remain history and must
|
|
157
|
+
not override the latest event. When fixes advance this event, match its artifact
|
|
158
|
+
filename and never move its status backward.
|
|
159
|
+
|
|
149
160
|
**If final review row exists and status is `passed`:**
|
|
150
161
|
|
|
151
162
|
- Example row:
|
|
@@ -168,10 +168,19 @@ pass through (Codex: `variant` name; Claude: `model` string; Cursor: opaque
|
|
|
168
168
|
`model` string). `selection` carries `role`, `selectedValue`, `capped`,
|
|
169
169
|
`selectionMode`, and policy fields; `selection.target` and an optional
|
|
170
170
|
`providers.<provider>.target` carry route data. For implementer/fix dispatch,
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
171
|
+
use exactly one of two mutually exclusive selection paths:
|
|
172
|
+
|
|
173
|
+
1. **Preferred-selection branch:** pass `--preferred <preferred-value>` when
|
|
174
|
+
asking the resolver to choose from a preference under an uncapped or other
|
|
175
|
+
preference-driven policy. Do not include `--candidate-model` or
|
|
176
|
+
`--candidate-effort`.
|
|
177
|
+
2. **Exact-candidate branch:** pass `--candidate-model` and, when applicable,
|
|
178
|
+
`--candidate-effort` after selecting a concrete configured candidate for a
|
|
179
|
+
managed-capped route. This branch must not include `--preferred`.
|
|
180
|
+
|
|
181
|
+
Use `selection.selectedValue` as the selected axis value when it is present.
|
|
182
|
+
Never re-derive these controls from the policy label or a ceiling-only variant
|
|
183
|
+
— the resolver is the single compilation/join point.
|
|
175
184
|
|
|
176
185
|
Print before phase work:
|
|
177
186
|
|
|
@@ -338,7 +347,8 @@ requested; never silently downgrade to it.
|
|
|
338
347
|
4. For managed `Uncapped` implementer/fix work, selected effort is the preferred effort with no cap.
|
|
339
348
|
5. For inherit/default mode, the resolver returns no selected dispatch args. Use the base/unpinned Codex role, log `Selected effort: provider-default`, display provider default effort when known, and do not describe this as managed uncapped behavior.
|
|
340
349
|
6. For managed capped phase-implementer/fix dispatch, choose an exact
|
|
341
|
-
configured candidate
|
|
350
|
+
configured candidate and use the exact-candidate branch, not the
|
|
351
|
+
preferred-selection branch. For implementation, call
|
|
342
352
|
`oat project dispatch-ceiling resolve --provider codex --role implementer --ceiling-tier <project-or-phase-tier> --candidate-model <model> --candidate-effort <effort> --escalation-level <route-level> --report-scope <phase-id> --report-action implementation --json`.
|
|
343
353
|
For a bounded fix, use the same phase target with
|
|
344
354
|
`--report-scope <phase-or-fix-scope> --report-action fix`. Read
|
|
@@ -363,10 +373,15 @@ requested; never silently downgrade to it.
|
|
|
363
373
|
Claude rules:
|
|
364
374
|
|
|
365
375
|
- Claude policy selection is model-based: `haiku < sonnet < opus < fable`.
|
|
366
|
-
- Implementer/fix dispatch
|
|
367
|
-
-
|
|
368
|
-
|
|
369
|
-
|
|
376
|
+
- Implementer/fix dispatch chooses one selection branch:
|
|
377
|
+
- Managed `Uncapped`: use the preferred-selection branch with
|
|
378
|
+
`--preferred <preferred-model>` so the resolver selects the classified
|
|
379
|
+
model with no cap.
|
|
380
|
+
- Capped managed policy: use the exact-candidate branch below. The
|
|
381
|
+
`--candidate-model` call replaces the preferred-selection call and must not
|
|
382
|
+
include `--preferred`.
|
|
383
|
+
- Inherit/default: use neither selection branch; the resolver returns no
|
|
384
|
+
selected model, so omit `model` and inherit host/default behavior.
|
|
370
385
|
- Review dispatch:
|
|
371
386
|
- Capped managed policy: target the configured policy cap directly.
|
|
372
387
|
- Managed `Uncapped` or inherit/default: no reviewer target exists; omit `model` and log inherited/default model behavior.
|