@open-agent-toolkit/cli 0.3.14 → 0.3.16
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/NOTICES.md +48 -0
- package/assets/bundle-metadata.json +1 -1
- package/assets/docs/contributing/markdown-features.md +38 -0
- package/assets/docs/contributing/smoke-testing.md +20 -13
- package/assets/docs/docs-tooling/workflows.md +26 -19
- package/assets/docs/getting-started/concepts.md +35 -21
- package/assets/docs/provider-sync/commands.md +21 -0
- package/assets/docs/provider-sync/manifest-and-drift.md +24 -17
- package/assets/docs/reference/cli-reference.md +2 -1
- package/assets/docs/reference/configuration.md +10 -2
- package/assets/docs/reference/project-state-machine.md +27 -20
- package/assets/docs/skills/index.md +1 -0
- package/assets/docs/skills/recon.md +8 -5
- package/assets/docs/workflows/advanced/autonomy.md +10 -0
- package/assets/docs/workflows/advanced/evidence-layers.md +19 -12
- package/assets/docs/workflows/advanced/orchestration-model.md +48 -34
- package/assets/docs/workflows/advanced/workflow-gates.md +109 -10
- package/assets/docs/workflows/approvals-and-automation.md +3 -1
- package/assets/docs/workflows/ideas/lifecycle.md +32 -25
- package/assets/docs/workflows/projects/closeout/closeout-skills.md +62 -1
- package/assets/docs/workflows/projects/execution/implementation-execution.md +67 -33
- package/assets/docs/workflows/projects/execution/project-log.md +6 -0
- package/assets/docs/workflows/projects/lifecycle.md +119 -63
- package/assets/docs/workflows/projects/reviews/index.md +63 -1
- package/assets/docs/workflows/projects/reviews/review-flavors.md +30 -23
- package/assets/docs/workflows/waves/wave-workflows.md +11 -3
- 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 +172 -165
- package/assets/skills/oat-project-complete-auto/SKILL.md +388 -0
- package/assets/skills/oat-project-document/SKILL.md +1 -1
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +172 -165
- package/assets/skills/oat-project-implement/SKILL.md +6 -1
- package/assets/skills/oat-project-implement/references/completion-and-closeout.md +28 -1
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +172 -165
- package/assets/skills/oat-project-implement/references/docs/complexity-review-fallback.md +262 -0
- package/assets/skills/oat-project-implement/references/docs/gate-approval-record.md +80 -0
- package/assets/skills/oat-project-implement/references/phase-execution.md +18 -0
- package/assets/skills/oat-project-lite/SKILL.md +1 -1
- package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +172 -165
- package/assets/skills/oat-project-next/SKILL.md +19 -2
- package/assets/skills/oat-project-next/references/docs/gate-approval-record.md +80 -0
- package/assets/skills/oat-project-pr-final/SKILL.md +4 -3
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +172 -165
- package/assets/skills/oat-project-progress/SKILL.md +15 -1
- package/assets/skills/oat-project-progress/references/docs/gate-approval-record.md +80 -0
- package/assets/skills/oat-project-quick-start/SKILL.md +31 -3
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +172 -165
- package/assets/skills/oat-project-quick-start/references/docs/complexity-review-fallback.md +262 -0
- package/assets/skills/oat-project-quick-start/references/docs/gate-approval-record.md +80 -0
- package/assets/skills/oat-project-review-receive/SKILL.md +21 -3
- package/assets/skills/oat-project-review-receive/references/docs/complexity-review-fallback.md +262 -0
- package/assets/skills/oat-wave-execute/SKILL.md +49 -28
- package/assets/skills/oat-wave-program/SKILL.md +15 -6
- package/assets/skills/oat-wrap-up/SKILL.md +9 -3
- package/assets/skills/oat-wrap-up/references/report-template.md +1 -1
- package/assets/skills/recon/SKILL.md +1 -1
- package/assets/skills/recon/references/packet-contract.md +18 -3
- package/assets/skills/recon/scripts/lib/contracts.mjs +16 -2
- package/assets/skills/recon/scripts/reconcile-ledger.mjs +20 -10
- package/assets/skills/recon/scripts/render-packet.mjs +31 -3
- package/assets/skills/recon/scripts/validate-packet.mjs +5 -5
- package/assets/templates/docs-app-fuma/app/[[...slug]]/page.tsx +14 -2
- package/assets/templates/docs-app-fuma/app/globals.css +1 -0
- package/assets/templates/state.md +7 -0
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +13 -0
- package/dist/commands/gate/index.d.ts +5 -0
- package/dist/commands/gate/index.d.ts.map +1 -1
- package/dist/commands/gate/index.js +270 -9
- package/dist/commands/shared/frontmatter.d.ts +1 -1
- package/dist/commands/shared/frontmatter.d.ts.map +1 -1
- package/dist/commands/shared/frontmatter.js +1 -0
- package/dist/commands/state/generate.d.ts +1 -1
- package/dist/commands/state/generate.d.ts.map +1 -1
- package/dist/commands/state/generate.js +87 -8
- package/dist/commands/sync/apply.d.ts.map +1 -1
- package/dist/commands/sync/apply.js +31 -5
- package/dist/commands/sync/dry-run.d.ts.map +1 -1
- package/dist/commands/sync/dry-run.js +28 -11
- package/dist/commands/sync/sync.utils.d.ts +13 -0
- package/dist/commands/sync/sync.utils.d.ts.map +1 -1
- package/dist/commands/sync/sync.utils.js +21 -1
- package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -1
- package/dist/commands/tools/shared/pack-manifest.js +1 -0
- package/dist/config/oat-config.d.ts +1 -0
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +3 -0
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +1 -0
- package/dist/drift/detector.js +6 -6
- package/dist/engine/compute-plan.d.ts.map +1 -1
- package/dist/engine/compute-plan.js +87 -2
- package/dist/engine/engine.types.d.ts +10 -1
- package/dist/engine/engine.types.d.ts.map +1 -1
- package/dist/engine/engine.types.js +4 -0
- package/dist/engine/execute-plan.d.ts.map +1 -1
- package/dist/engine/execute-plan.js +42 -5
- package/dist/engine/managed-copy-hash.d.ts +4 -3
- package/dist/engine/managed-copy-hash.d.ts.map +1 -1
- package/dist/engine/managed-copy-hash.js +4 -3
- package/dist/fs/assets.d.ts.map +1 -1
- package/dist/fs/assets.js +7 -1
- package/dist/manifest/hash.d.ts +8 -10
- package/dist/manifest/hash.d.ts.map +1 -1
- package/dist/release/public-package-contract.js +1 -1
- package/dist/ui/output.js +1 -1
- package/dist/validation/skills.d.ts.map +1 -1
- package/dist/validation/skills.js +13 -0
- package/package.json +2 -2
|
@@ -35,14 +35,21 @@ For a one-page view of where people approve and what runs automatically in each
|
|
|
35
35
|
|
|
36
36
|
## Lifecycle Map
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
```
|
|
38
|
+
=== "Diagram"
|
|
39
|
+
|
|
40
|
+

|
|
41
|
+

|
|
42
|
+
|
|
43
|
+
=== "Mermaid source"
|
|
44
|
+
|
|
45
|
+
```mermaid
|
|
46
|
+
flowchart LR
|
|
47
|
+
D["Discovery"] --> S["Spec"] --> G["Design"] --> P["Plan"]
|
|
48
|
+
P --> I["Implement (oat-project-implement)"]
|
|
49
|
+
I --> R["Review loop"] --> PR["PR flow"]
|
|
50
|
+
PR --> DOC["Docs sync (optional)"]
|
|
51
|
+
DOC --> C["Complete"]
|
|
52
|
+
```
|
|
46
53
|
|
|
47
54
|
This map shows the spec-driven default. The quick, lite, import, and capture
|
|
48
55
|
lanes each skip part of it — see [Lane diagrams](#lane-diagrams) below. Lite in
|
|
@@ -311,6 +318,7 @@ See [Implementation Execution](execution/implementation-execution.md) for the fu
|
|
|
311
318
|
- `oat-project-review-receive` now presents a findings overview before asking for any disposition decisions.
|
|
312
319
|
- Findings are shown with stable IDs by severity (`C*`, `I*`, `M*`, `m*`) so follow-up choices map clearly to specific items.
|
|
313
320
|
- For each finding, the receive step summarizes the reviewer note, adds agent analysis, and gives a recommendation (convert now vs defer with rationale).
|
|
321
|
+
- When a scope reaches the three-cycle review cap, the receive step dispatches a [complexity review](reviews/index.md#complexity-review-at-budget-exhaustion) and adds **simplify** to the dispositions the operator can choose. Every other budget exhaustion in the lifecycle (the orchestration retry limit, the final review cap, and a gate's `maxAttempts`) runs the same review before escalating.
|
|
314
322
|
|
|
315
323
|
## Alternate lifecycle lanes
|
|
316
324
|
|
|
@@ -340,12 +348,19 @@ See [Implementation Execution](execution/implementation-execution.md) for the fu
|
|
|
340
348
|
|
|
341
349
|
### Spec-Driven workflow lane
|
|
342
350
|
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
351
|
+
=== "Diagram"
|
|
352
|
+
|
|
353
|
+

|
|
354
|
+

|
|
355
|
+
|
|
356
|
+
=== "Mermaid source"
|
|
357
|
+
|
|
358
|
+
```mermaid
|
|
359
|
+
flowchart LR
|
|
360
|
+
D["Discover"] --> S["Spec"] --> G["Design"] --> P["Plan"]
|
|
361
|
+
P --> I["Implement (oat-project-implement)"]
|
|
362
|
+
I --> R["Review"] --> PR["PR"] --> Doc["Docs (optional)"] --> C["Complete"]
|
|
363
|
+
```
|
|
349
364
|
|
|
350
365
|
During the Design step, `oat-project-design` asks how to work through the document unless a mode was selected by argument, environment, or `workflow.designMode`. The three full-design choices are collaborative, selective collaborative, and draft-and-review.
|
|
351
366
|
|
|
@@ -365,18 +380,31 @@ effort controls.
|
|
|
365
380
|
|
|
366
381
|
### Quick lane
|
|
367
382
|
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
383
|
+
=== "Diagram"
|
|
384
|
+
|
|
385
|
+

|
|
386
|
+

|
|
387
|
+
|
|
388
|
+
=== "Mermaid source"
|
|
389
|
+
|
|
390
|
+
```mermaid
|
|
391
|
+
flowchart LR
|
|
392
|
+
Q["Quick Start\n(adaptive discovery)"] --> D{"Design depth?"}
|
|
393
|
+
D -->|Straight to plan| P["Plan"]
|
|
394
|
+
D -->|Lightweight design| LD["Design (quick)"] --> P
|
|
395
|
+
D -->|Promote| SD["→ Spec-Driven lane"]
|
|
396
|
+
P --> QI["Implement (oat-project-implement)"]
|
|
397
|
+
QI --> QR["Review / PR"]
|
|
398
|
+
```
|
|
377
399
|
|
|
378
400
|
Quick lane lightweight design intentionally keeps a smaller collaborative/draft choice. Selective collaborative becomes available only after promotion into the full spec-driven design lane.
|
|
379
401
|
|
|
402
|
+
When a plan gate is configured, quick-start persists its outcome as
|
|
403
|
+
`oat_quick_start_gate` in project state (see
|
|
404
|
+
[Gate approval records](../advanced/workflow-gates.md#gate-approval-records)).
|
|
405
|
+
`oat-project-next` and `oat-project-progress` report that record; quick plan
|
|
406
|
+
readiness stays the only routing rule for quick plans.
|
|
407
|
+
|
|
380
408
|
Quick-start follows the same dispatch policy rule at the plan boundary: capture
|
|
381
409
|
the policy when interactive, persist `oat_dispatch_policy` to project state, and
|
|
382
410
|
avoid any mid-implementation policy prompt. Legacy dispatch-ceiling state is
|
|
@@ -386,13 +414,20 @@ should use the dispatch-policy names, including explicit `Uncapped` and
|
|
|
386
414
|
|
|
387
415
|
### Lite lane
|
|
388
416
|
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
417
|
+
=== "Diagram"
|
|
418
|
+
|
|
419
|
+

|
|
420
|
+

|
|
421
|
+
|
|
422
|
+
=== "Mermaid source"
|
|
423
|
+
|
|
424
|
+
```mermaid
|
|
425
|
+
flowchart LR
|
|
426
|
+
L["Lite interview\n(one batched round)"] --> P["Single-phase plan\n(one approval)"]
|
|
427
|
+
P --> I["Implement (oat-project-implement)"]
|
|
428
|
+
I --> R["Final review"] --> PR["PR (default closeout)"]
|
|
429
|
+
P -->|Scope grows| Q["Promote to Quick"]
|
|
430
|
+
```
|
|
396
431
|
|
|
397
432
|
Lite keeps planning and validation in `plan.md`. The interview selects a
|
|
398
433
|
`minimal`, `product`, `technical`, or `both` content shape and records the
|
|
@@ -420,29 +455,36 @@ from its five core sections plus any adaptive Product Behavior and Technical
|
|
|
420
455
|
Design, a **fresh** quick template takes over the `plan.md` path, and `state.md`
|
|
421
456
|
is **rewritten** to quick mode.
|
|
422
457
|
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
458
|
+
=== "Diagram"
|
|
459
|
+
|
|
460
|
+

|
|
461
|
+

|
|
462
|
+
|
|
463
|
+
=== "Mermaid source"
|
|
464
|
+
|
|
465
|
+
```mermaid
|
|
466
|
+
flowchart LR
|
|
467
|
+
subgraph Before
|
|
468
|
+
LPLAN["plan.md\nfive core sections plus adaptive\nProduct Behavior / Technical Design"]
|
|
469
|
+
LSTATE["state.md\noat_workflow_mode: lite"]
|
|
470
|
+
end
|
|
471
|
+
|
|
472
|
+
CMD["oat project promote\n--to quick"]
|
|
473
|
+
|
|
474
|
+
subgraph After
|
|
475
|
+
DISC["discovery.md\nderived from the lite plan\noat_ready_for: oat-project-quick-start"]
|
|
476
|
+
REF["references/lite-plan.md\noriginal lite plan, preserved"]
|
|
477
|
+
QPLAN["plan.md\nfresh quick-start template"]
|
|
478
|
+
QSTATE["state.md\noat_workflow_mode: quick\noat_phase: discovery (complete)\noat_ready_for: oat-project-quick-start"]
|
|
479
|
+
end
|
|
480
|
+
|
|
481
|
+
LPLAN --> CMD
|
|
482
|
+
LSTATE --> CMD
|
|
483
|
+
CMD -->|derive| DISC
|
|
484
|
+
CMD -->|move| REF
|
|
485
|
+
CMD -->|scaffold| QPLAN
|
|
486
|
+
CMD -->|rewrite| QSTATE
|
|
487
|
+
```
|
|
446
488
|
|
|
447
489
|
The project slug, directory, and branch are untouched, so history and any open
|
|
448
490
|
work continue uninterrupted. `oat_ready_for` is stamped on **both** `discovery.md`
|
|
@@ -455,21 +497,35 @@ categorical `reason` and exit non-zero. See
|
|
|
455
497
|
|
|
456
498
|
### Import lane
|
|
457
499
|
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
500
|
+
=== "Diagram"
|
|
501
|
+
|
|
502
|
+

|
|
503
|
+

|
|
504
|
+
|
|
505
|
+
=== "Mermaid source"
|
|
506
|
+
|
|
507
|
+
```mermaid
|
|
508
|
+
flowchart LR
|
|
509
|
+
I["Import Plan"] --> II1["Implement (oat-project-implement)"]
|
|
510
|
+
II1 --> IR["Review / PR"]
|
|
511
|
+
```
|
|
463
512
|
|
|
464
513
|
### Capture lane
|
|
465
514
|
|
|
466
515
|
Retroactive project creation for work done outside the OAT project workflow. Common scenario: mobile/cloud sessions where you brainstorm and implement with an agent, then want to open a PR and review from your desktop.
|
|
467
516
|
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
517
|
+
=== "Diagram"
|
|
518
|
+
|
|
519
|
+

|
|
520
|
+

|
|
521
|
+
|
|
522
|
+
=== "Mermaid source"
|
|
523
|
+
|
|
524
|
+
```mermaid
|
|
525
|
+
flowchart LR
|
|
526
|
+
W["Work on branch\n(no project)"] --> Cap["oat-project-capture"]
|
|
527
|
+
Cap --> R["Review / PR"]
|
|
528
|
+
```
|
|
473
529
|
|
|
474
530
|
Entry point: `/oat-project-capture` (skill-only, no CLI command — requires agent conversation context).
|
|
475
531
|
|
|
@@ -166,7 +166,7 @@ is evaluated.
|
|
|
166
166
|
- **Passing gate** (no findings at or above the threshold): receive runs a non-pausing **judgment sweep**. It makes a per-finding decision for each Medium/Low — defer to final review (the default, recorded so [final review](#phase-and-final-review) resurfaces it), address now (only for small, contained, low-risk fixes, which do **not** re-trigger the standard reviewer or re-gate the phase), or reject with rationale — then archives the artifact. Address-now is an exception, not the norm; if such a fix reveals a Critical/High concern it escalates to the blocking path.
|
|
167
167
|
- **Blocking gate** (one or more findings at or above the threshold): receive converts findings to fix tasks and implementation re-runs the standard reviewer and the gate for the phase. These block → fix → re-gate rounds are bounded by `oat_orchestration_retry_limit` (default `2`); exhausting the bound stops a sequential run or excludes the phase in a parallel group, matching the standard fix loop's terminal handling.
|
|
168
168
|
|
|
169
|
-
Gate-originated artifacts (`oat_review_invocation: gate`) are excluded from the same-scope review-cycle cap in `oat-project-review-receive`. The cap measures failed fix cycles of the standard review loop, so counting gate artifacts would trip it on artifact volume rather than real fix rounds.
|
|
169
|
+
Gate-originated artifacts (`oat_review_invocation: gate`) and saved complexity reports are excluded from the same-scope review-cycle cap in `oat-project-review-receive`. The cap measures failed fix cycles of the standard review loop, so counting gate artifacts would trip it on artifact volume rather than real fix rounds.
|
|
170
170
|
|
|
171
171
|
When a phase is re-gated multiple times, each round produces a distinct review artifact — filenames and `oat_generated_at` are seconds-precision, so rounds never collide and `oat review latest` resolves the newest. An orchestrator should know a gate finished from the `oat --json gate review` result envelope on process exit (`status`, `runId`, `generatedAt`), not by watching the `reviews/` directory or the provider's log; see [Gate completion signal](../../advanced/workflow-gates.md#gate-completion-signal).
|
|
172
172
|
|
|
@@ -226,6 +226,68 @@ Final review `passed` gate requires:
|
|
|
226
226
|
- Deferred Medium findings resurfaced and explicitly dispositioned.
|
|
227
227
|
- Low findings explicitly dispositioned (after plain-language explanation).
|
|
228
228
|
|
|
229
|
+
## Complexity review at budget exhaustion
|
|
230
|
+
|
|
231
|
+
When a review or gate budget runs out, another round of the same review is
|
|
232
|
+
unlikely to converge. Before asking the operator how to proceed, the root
|
|
233
|
+
dispatches one complexity review and shows it together with the reasons the
|
|
234
|
+
loop stopped. The review asks whether the reviewed work, and the machinery the
|
|
235
|
+
findings keep demanding, earns its cost against the contract. It is not
|
|
236
|
+
another correctness review.
|
|
237
|
+
|
|
238
|
+
It runs at every budget-exhaustion point:
|
|
239
|
+
|
|
240
|
+
| Exhaustion point | Owning skill |
|
|
241
|
+
| ------------------------------------------------------------- | ---------------------------- |
|
|
242
|
+
| Phase review fix rounds reach `oat_orchestration_retry_limit` | `oat-project-implement` |
|
|
243
|
+
| A phase review gate still blocks at that limit | `oat-project-implement` |
|
|
244
|
+
| The final review reaches its three-cycle cap | `oat-project-implement` |
|
|
245
|
+
| The implementation exit gate ends in `block` at `maxAttempts` | `oat-project-implement` |
|
|
246
|
+
| A review scope reaches the three-cycle cap | `oat-project-review-receive` |
|
|
247
|
+
| The quick-start plan gate ends in `block` at `maxAttempts` | `oat-project-quick-start` |
|
|
248
|
+
|
|
249
|
+
A single `prompt` failure, a `warn` outcome, and launch or transport failures
|
|
250
|
+
that consume no attempt are not budget exhaustions. The operator can ask for
|
|
251
|
+
the same review at any other time; there is no automatic early trigger.
|
|
252
|
+
|
|
253
|
+
How it runs:
|
|
254
|
+
|
|
255
|
+
- **Probe.** OAT looks for an installed `complexity-review` skill in
|
|
256
|
+
`~/.agents/skills`, then `~/.claude/skills`, then the repository's
|
|
257
|
+
`.agents/skills`. When one is found, the reviewer follows it as a document,
|
|
258
|
+
without asking questions. Otherwise the reviewer follows a condensed method
|
|
259
|
+
bundled with the lifecycle skills: restate the contract from independent
|
|
260
|
+
sources, establish the simplest viable baseline, inventory the machinery,
|
|
261
|
+
apply the deletion test, build a ledger (Item, Claimed value, Evidence,
|
|
262
|
+
Lifecycle cost, Recommendation), and give a verdict of
|
|
263
|
+
`Deletion-rule compliant`, `Partially compliant`, or `Not compliant`.
|
|
264
|
+
- **Read-only reviewer.** One reviewer-class subagent at the resolved reviewer
|
|
265
|
+
ceiling reads the reviewed target, the contract sources (backlog items,
|
|
266
|
+
discovery, spec, design, and decision records), and every review artifact of
|
|
267
|
+
the exhausted loop. It writes nothing and returns its report to the root.
|
|
268
|
+
Outside an implement run (quick-start, or a standalone review-receive), the
|
|
269
|
+
root loads the project dispatch skills and resolves the reviewer ceiling with
|
|
270
|
+
`oat project dispatch-ceiling resolve --role reviewer`.
|
|
271
|
+
- **One review per exhausted loop.** A saved report for the scope that is newer
|
|
272
|
+
than every review artifact of that scope is reused, so re-entering a capped
|
|
273
|
+
receive does not dispatch a second review.
|
|
274
|
+
- **OAT additions.** The report marks rows only the operator can settle as
|
|
275
|
+
`REQUIRES-OPERATOR`, classifies each open finding as an accepted
|
|
276
|
+
requirement, a regression, or new hardening, lists the findings a
|
|
277
|
+
simplification would dissolve, and recommends a disposition: extra cycles,
|
|
278
|
+
proceed with override, corrective revision, or **simplify**.
|
|
279
|
+
- **Decision message.** The root saves the report as
|
|
280
|
+
`reviews/archived/complexity-<scope>-<timestamp>.md` (outside the top-level
|
|
281
|
+
`reviews/` directory, so routers never mistake it for an unprocessed review,
|
|
282
|
+
and outside the review-cycle count), shows one decision message with the
|
|
283
|
+
stop reasons, verdict, dissolvable findings, and operator questions, and
|
|
284
|
+
records the operator's choice with the report path in `implementation.md`.
|
|
285
|
+
|
|
286
|
+
Agents never select the disposition, including the recommended one. Under
|
|
287
|
+
`OAT_AUTONOMOUS=1` the run stops at its boundary report, which carries the same
|
|
288
|
+
content. The condensed method adapts the operator's `complexity-review` skill
|
|
289
|
+
from `tkstang/skills`; see `NOTICES.md`.
|
|
290
|
+
|
|
229
291
|
## Subagent Compatibility
|
|
230
292
|
|
|
231
293
|
`oat-project-review-provide` uses provider-aware subagent dispatch when available. This outer dispatch starts the primary `oat-reviewer`; it is separate from any optional reconnaissance workers that the reviewer may launch after resolving its authoritative review scope:
|
|
@@ -38,29 +38,36 @@ for the deep review request/receive mechanics.
|
|
|
38
38
|
|
|
39
39
|
## Flow map
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
41
|
+
=== "Diagram"
|
|
42
|
+
|
|
43
|
+

|
|
44
|
+

|
|
45
|
+
|
|
46
|
+
=== "Mermaid source"
|
|
47
|
+
|
|
48
|
+
```mermaid
|
|
49
|
+
flowchart TD
|
|
50
|
+
subgraph Planning
|
|
51
|
+
PL["Planning-phase\nartifact self-review"] --> PLR["Inherit planning parent"]
|
|
52
|
+
PLR --> PLT["Parent model\n(root already at/above ceiling)"]
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
subgraph Implementation
|
|
56
|
+
IM["Root-owned phase\nself-review"] --> IMR["Resolve dispatch ceiling"]
|
|
57
|
+
IMR --> IMPIN["At-ceiling pin\n(ceiling final candidate)"]
|
|
58
|
+
IMR --> IMINH["Inherit\n(only if dispatcher known at/above ceiling)"]
|
|
59
|
+
IMR --> IMCLI["Exact CLI reviewer\n(selected pre-launch)"]
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
subgraph Gates
|
|
63
|
+
PG["Phase review gate\n(external)"] --> PGR["Configured exec target\n(gates.execTargets)"]
|
|
64
|
+
PGR --> PGT["Separate reviewer CLI\n(prefers another model family;\nfalls back with a warning)"]
|
|
65
|
+
|
|
66
|
+
LG["Lifecycle / final gate"] --> LGR["Configured exec target\n(gates.execTargets)"]
|
|
67
|
+
LGR --> LGT["Separate reviewer CLI\n(never replaced by self-review;\nfalls back with a warning)"]
|
|
68
|
+
LGT -. may spawn .-> LGN["Nested managed\nreviewer child inside gate"]
|
|
69
|
+
end
|
|
70
|
+
```
|
|
64
71
|
|
|
65
72
|
The dotted branch marks the only flavor that may **spawn a nested managed
|
|
66
73
|
reviewer child** inside the gate exec target: the lifecycle/final gate.
|
|
@@ -113,7 +113,9 @@ for your approval before the first wave starts. When the final wave merges,
|
|
|
113
113
|
the skill stops at one human-gated checkpoint that asks whether to run the
|
|
114
114
|
deferred completion tail (archive, S3 upload, and active-project clear) for
|
|
115
115
|
every wave's wrapper project; autonomous runs never answer that question
|
|
116
|
-
themselves.
|
|
116
|
+
themselves. On yes, it runs `oat-project-complete-auto` once in batch mode;
|
|
117
|
+
a wrapper the companion refuses keeps its deferral, and the report names its
|
|
118
|
+
next step (usually completing it with `oat-project-complete`).
|
|
117
119
|
|
|
118
120
|
**Example scenario:** Twelve reviewed external plans include a shared API
|
|
119
121
|
foundation, client changes, and independent documentation work. Use `new` to
|
|
@@ -173,7 +175,10 @@ closeout it archives the wave's backlog items with `oat backlog archive` and
|
|
|
173
175
|
runs the configured closeout sequence (which can open the PR). It then stops
|
|
174
176
|
once at a HiLL (human-in-the-loop) approval checkpoint before running the
|
|
175
177
|
`oat-project-complete` process, including project archive and any configured
|
|
176
|
-
S3 upload.
|
|
178
|
+
S3 upload. Under autonomous execution it runs that process through the
|
|
179
|
+
`oat-project-complete-auto` companion, which needs
|
|
180
|
+
`workflow.autonomousComplete: true` and records a completion-before-merge
|
|
181
|
+
exception for the open wave PR. After you merge the wave, it resets the working branch, deletes
|
|
177
182
|
stale phase branches, and runs `oat-wave-program wave-close`. Merging the wave
|
|
178
183
|
into `main` stays your decision.
|
|
179
184
|
|
|
@@ -192,7 +197,10 @@ presented as proof the integrated tree passes.
|
|
|
192
197
|
|
|
193
198
|
Closeout writes end-of-run synthesis before archive work. Autonomous execution
|
|
194
199
|
can defer a wrapper's archive tail to program close only with an explicit
|
|
195
|
-
ledger disposition
|
|
200
|
+
ledger disposition, and only when the companion refuses for a deferrable
|
|
201
|
+
reason (the opt-in is off, the PR precondition is unmet, or a completion
|
|
202
|
+
question has no recorded answer); any other refusal stops closeout at a
|
|
203
|
+
boundary. That deferral does not satisfy the full completion tail.
|
|
196
204
|
Source-plan requirements remain intact even when live drift changes a mechanism.
|
|
197
205
|
|
|
198
206
|
**Next step:** Follow the wave's reported review and merge boundary. After the
|