@open-agent-toolkit/cli 0.2.72 → 0.2.74

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 (165) hide show
  1. package/assets/agents/oat-reviewer.md +4 -3
  2. package/assets/agents/recon-worker.md +42 -8
  3. package/assets/bundle-metadata.json +1 -1
  4. package/assets/docs/cli-utilities/configuration.md +3 -56
  5. package/assets/docs/cli-utilities/tool-packs.md +4 -4
  6. package/assets/docs/contributing/code.md +2 -2
  7. package/assets/docs/contributing/index.md +0 -1
  8. package/assets/docs/reference/cli-reference.md +1 -1
  9. package/assets/docs/reference/troubleshooting.md +17 -40
  10. package/assets/docs/workflows/projects/artifacts.md +16 -34
  11. package/assets/docs/workflows/projects/lifecycle.md +20 -19
  12. package/assets/docs/workflows/skills/explainer-kit.md +180 -440
  13. package/assets/docs/workflows/skills/index.md +1 -2
  14. package/assets/docs/workflows/skills/recon.md +114 -23
  15. package/assets/public-package-versions.json +4 -4
  16. package/assets/skills/explainer-kit/SKILL.md +96 -171
  17. package/assets/skills/explainer-kit/recipes/engineer-tour.json +1 -22
  18. package/assets/skills/explainer-kit/recipes/program-recap.json +1 -29
  19. package/assets/skills/explainer-kit/recipes/project-explainer.json +1 -22
  20. package/assets/skills/explainer-kit/recipes/project-recap.v2.json +1 -43
  21. package/assets/skills/explainer-kit/references/fact-base-contract.md +76 -101
  22. package/assets/skills/explainer-kit/references/recap-authoring.md +99 -0
  23. package/assets/skills/explainer-kit/schemas/manifest.schema.json +13 -135
  24. package/assets/skills/explainer-kit/scripts/bundle.mjs +712 -0
  25. package/assets/skills/explainer-kit/scripts/lib/claim-subject.mjs +40 -0
  26. package/assets/skills/explainer-kit/scripts/lib/contracts.mjs +113 -1504
  27. package/assets/skills/explainer-kit/scripts/lib/failure.mjs +13 -0
  28. package/assets/skills/explainer-kit/scripts/lib/package-coverage.mjs +57 -403
  29. package/assets/skills/explainer-kit/scripts/lib/qa-result.mjs +168 -0
  30. package/assets/skills/explainer-kit/scripts/lib/qa.mjs +90 -488
  31. package/assets/skills/explainer-kit/scripts/lib/recipes.mjs +28 -545
  32. package/assets/skills/explainer-kit/scripts/lib/run-package.mjs +120 -0
  33. package/assets/skills/explainer-kit/scripts/lib/sanitize.mjs +42 -0
  34. package/assets/skills/explainer-kit/scripts/record.mjs +335 -0
  35. package/assets/skills/explainer-kit/scripts/verify.mjs +648 -0
  36. package/assets/skills/oat-explainer-kit/SKILL.md +57 -117
  37. package/assets/skills/oat-explainer-kit/references/config-contract.md +20 -64
  38. package/assets/skills/oat-explainer-kit/references/lifecycle-contract.md +85 -237
  39. package/assets/skills/oat-explainer-kit/scripts/bind-project-sources.mjs +18 -10
  40. package/assets/skills/oat-explainer-kit/scripts/check-core.mjs +1 -0
  41. package/assets/skills/oat-explainer-kit/scripts/check-terminal-outcome.mjs +256 -21
  42. package/assets/skills/oat-explainer-kit/scripts/persist-intent.mjs +82 -3
  43. package/assets/skills/oat-explainer-kit/scripts/resolve-config.mjs +0 -162
  44. package/assets/skills/oat-explainer-kit/scripts/resolve-intent.mjs +57 -123
  45. package/assets/skills/oat-project-autonomous/SKILL.md +14 -13
  46. package/assets/skills/oat-project-autonomous/references/gate-inventory.md +165 -165
  47. package/assets/skills/oat-project-complete/SKILL.md +168 -349
  48. package/assets/skills/oat-project-complete/scripts/consume-persisted-recap-intent.mjs +125 -0
  49. package/assets/skills/oat-project-complete/scripts/execute-synced-archive-entry.mjs +0 -30
  50. package/assets/skills/oat-project-complete/scripts/parse-completion-retry-fields.mjs +4 -37
  51. package/assets/skills/oat-project-complete/scripts/parse-synced-archive-resume-fields.mjs +17 -16
  52. package/assets/skills/oat-project-complete/scripts/recover-completion-receipts.mjs +9 -174
  53. package/assets/skills/oat-project-complete/scripts/resolve-completion-retry.mjs +1 -2
  54. package/assets/skills/oat-project-document/SKILL.md +1 -1
  55. package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +165 -165
  56. package/assets/skills/oat-project-implement/SKILL.md +1 -1
  57. package/assets/skills/oat-project-implement/references/completion-and-closeout.md +44 -56
  58. package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +165 -165
  59. package/assets/skills/oat-project-lite/SKILL.md +1 -1
  60. package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +165 -165
  61. package/assets/skills/oat-project-plan/SKILL.md +5 -6
  62. package/assets/skills/oat-project-pr-final/SKILL.md +1 -1
  63. package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +165 -165
  64. package/assets/skills/oat-project-quick-start/SKILL.md +1 -1
  65. package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +165 -165
  66. package/assets/skills/oat-project-review-receive/SKILL.md +14 -1
  67. package/assets/skills/oat-project-summary/SKILL.md +35 -25
  68. package/assets/skills/oat-wave-execute/SKILL.md +11 -36
  69. package/assets/skills/oat-wave-program/SKILL.md +13 -37
  70. package/assets/skills/recon/SKILL.md +103 -40
  71. package/assets/skills/recon/references/packet-contract.md +150 -67
  72. package/assets/skills/recon/references/profiles.md +38 -16
  73. package/assets/skills/recon/references/worker-contract.md +39 -8
  74. package/assets/skills/recon/scripts/lib/contracts.mjs +703 -55
  75. package/assets/skills/recon/scripts/lib/routing.mjs +588 -0
  76. package/assets/skills/recon/scripts/lib/validated-run.mjs +2 -0
  77. package/assets/skills/recon/scripts/prepare-routing.mjs +88 -0
  78. package/assets/skills/recon/scripts/render-packet.mjs +69 -1
  79. package/assets/skills/recon/scripts/validate-packet.mjs +473 -56
  80. package/assets/skills/subagent-orchestration/SKILL.md +18 -9
  81. package/assets/skills/subagent-orchestration/references/model-selection-principles.md +17 -8
  82. package/dist/commands/config/index.d.ts.map +1 -1
  83. package/dist/commands/config/index.js +9 -113
  84. package/dist/commands/project/archive/archive-utils.d.ts.map +1 -1
  85. package/dist/commands/project/archive/archive-utils.js +32 -184
  86. package/dist/commands/project/archive/explainer-package-coverage.d.ts +3 -8
  87. package/dist/commands/project/archive/explainer-package-coverage.d.ts.map +1 -1
  88. package/dist/commands/project/archive/explainer-package-coverage.js +1 -1
  89. package/dist/config/oat-config.d.ts +0 -11
  90. package/dist/config/oat-config.d.ts.map +1 -1
  91. package/dist/config/oat-config.js +0 -34
  92. package/dist/config/resolve.d.ts.map +1 -1
  93. package/dist/config/resolve.js +0 -8
  94. package/dist/release/public-package-contract.d.ts.map +1 -1
  95. package/dist/release/public-package-contract.js +2 -10
  96. package/dist/validation/project-state.d.ts.map +1 -1
  97. package/dist/validation/project-state.js +42 -3
  98. package/package.json +2 -2
  99. package/assets/docs/contributing/explainer-kit-verification.md +0 -133
  100. package/assets/docs/workflows/skills/explainer-kit-providers.md +0 -155
  101. package/assets/skills/explainer-kit/briefs/deep-dive.md +0 -35
  102. package/assets/skills/explainer-kit/briefs/project-page.md +0 -38
  103. package/assets/skills/explainer-kit/briefs/supporting-diagram.md +0 -28
  104. package/assets/skills/explainer-kit/briefs/walkthrough-deck.md +0 -35
  105. package/assets/skills/explainer-kit/examples/project-explainer/content.md +0 -31
  106. package/assets/skills/explainer-kit/examples/project-explainer/fact-base.md +0 -22
  107. package/assets/skills/explainer-kit/examples/project-recap/content.md +0 -77
  108. package/assets/skills/explainer-kit/examples/project-recap/fact-base.json +0 -104
  109. package/assets/skills/explainer-kit/examples/project-recap/fact-base.md +0 -44
  110. package/assets/skills/explainer-kit/examples/theme-bundle.json +0 -87
  111. package/assets/skills/explainer-kit/recipes/project-recap.v1.json +0 -93
  112. package/assets/skills/explainer-kit/references/contracts.md +0 -324
  113. package/assets/skills/explainer-kit/references/destination-contract.md +0 -210
  114. package/assets/skills/explainer-kit/references/extension-contract.md +0 -80
  115. package/assets/skills/explainer-kit/references/golden-conformance.md +0 -80
  116. package/assets/skills/explainer-kit/references/visual-review.md +0 -71
  117. package/assets/skills/explainer-kit/schemas/author-request.v2.schema.json +0 -212
  118. package/assets/skills/explainer-kit/schemas/author-request.v3.schema.json +0 -241
  119. package/assets/skills/explainer-kit/schemas/author-result.v2.schema.json +0 -52
  120. package/assets/skills/explainer-kit/schemas/build-record.schema.json +0 -98
  121. package/assets/skills/explainer-kit/schemas/durability-evidence.schema.json +0 -53
  122. package/assets/skills/explainer-kit/schemas/publish-receipt.v1.schema.json +0 -97
  123. package/assets/skills/explainer-kit/schemas/publish-receipt.v2.schema.json +0 -215
  124. package/assets/skills/explainer-kit/schemas/publish-request.v1.schema.json +0 -32
  125. package/assets/skills/explainer-kit/schemas/publish-request.v2.schema.json +0 -34
  126. package/assets/skills/explainer-kit/schemas/run-request.schema.json +0 -147
  127. package/assets/skills/explainer-kit/schemas/set-plan.v1.schema.json +0 -149
  128. package/assets/skills/explainer-kit/schemas/terminal-evidence.v1.schema.json +0 -81
  129. package/assets/skills/explainer-kit/schemas/visual-review-evidence.v1.schema.json +0 -66
  130. package/assets/skills/explainer-kit/schemas/visual-review-request.v1.schema.json +0 -117
  131. package/assets/skills/explainer-kit/schemas/visual-review-result.v1.schema.json +0 -80
  132. package/assets/skills/explainer-kit/scripts/lib/catalog.mjs +0 -349
  133. package/assets/skills/explainer-kit/scripts/lib/content-approval.mjs +0 -418
  134. package/assets/skills/explainer-kit/scripts/lib/diagram.mjs +0 -514
  135. package/assets/skills/explainer-kit/scripts/lib/durability.mjs +0 -643
  136. package/assets/skills/explainer-kit/scripts/lib/fact-base.mjs +0 -664
  137. package/assets/skills/explainer-kit/scripts/lib/internal-references.mjs +0 -538
  138. package/assets/skills/explainer-kit/scripts/lib/markdown.mjs +0 -414
  139. package/assets/skills/explainer-kit/scripts/lib/publication-policy.mjs +0 -54
  140. package/assets/skills/explainer-kit/scripts/lib/records.mjs +0 -954
  141. package/assets/skills/explainer-kit/scripts/lib/render.mjs +0 -703
  142. package/assets/skills/explainer-kit/scripts/lib/s3-roots.mjs +0 -353
  143. package/assets/skills/explainer-kit/scripts/lib/s3-static.mjs +0 -759
  144. package/assets/skills/explainer-kit/scripts/lib/set-plan.mjs +0 -209
  145. package/assets/skills/explainer-kit/scripts/lib/source-backlinks.mjs +0 -218
  146. package/assets/skills/explainer-kit/scripts/lib/terminal-evidence.mjs +0 -157
  147. package/assets/skills/explainer-kit/scripts/lib/visual-review.mjs +0 -400
  148. package/assets/skills/explainer-kit/scripts/publish.mjs +0 -76
  149. package/assets/skills/explainer-kit/scripts/record-durability.mjs +0 -64
  150. package/assets/skills/explainer-kit/scripts/render-qa.mjs +0 -461
  151. package/assets/skills/explainer-kit/scripts/run.mjs +0 -3038
  152. package/assets/skills/explainer-kit/scripts/validate.mjs +0 -59
  153. package/assets/skills/oat-explainer-kit/references/author-callback.md +0 -53
  154. package/assets/skills/oat-explainer-kit/references/migration.md +0 -144
  155. package/assets/skills/oat-explainer-kit/references/visual-review-callback.md +0 -83
  156. package/assets/skills/oat-explainer-kit/scripts/derive-destination.mjs +0 -91
  157. package/assets/skills/oat-explainer-kit/scripts/finalize-tracked-run.mjs +0 -531
  158. package/assets/skills/oat-explainer-kit/scripts/probe-recap-seams.mjs +0 -371
  159. package/assets/skills/oat-explainer-kit/scripts/run.mjs +0 -905
  160. package/dist/commands/project/archive/explainer-source-backlinks.d.ts +0 -18
  161. package/dist/commands/project/archive/explainer-source-backlinks.d.ts.map +0 -1
  162. package/dist/commands/project/archive/explainer-source-backlinks.js +0 -27
  163. package/dist/commands/project/archive/explainer-terminal-evidence.d.ts +0 -29
  164. package/dist/commands/project/archive/explainer-terminal-evidence.d.ts.map +0 -1
  165. package/dist/commands/project/archive/explainer-terminal-evidence.js +0 -37
@@ -5,7 +5,7 @@ disable-model-invocation: false
5
5
  user-invocable: true
6
6
  allowed-tools: Read, Write, Bash(git:*), Bash(oat:*), Glob, Grep, AskUserQuestion
7
7
  metadata:
8
- version: 1.6.4
8
+ version: 1.6.6
9
9
  ---
10
10
 
11
11
  # Receive Review
@@ -82,6 +82,19 @@ When executing this skill, provide lightweight progress feedback so the user can
82
82
  - Routing to oat-project-implement
83
83
  - For `artifact` reviews: updating reviewed artifact files directly after user confirmation
84
84
 
85
+ ## Review Artifact Ownership
86
+
87
+ The receiving/root agent reads the selected review artifact completely and
88
+ interprets every finding. Do not delegate review-artifact reading, parsing,
89
+ finding analysis, disposition judgment, or artifact edits to an explorer or
90
+ reconnaissance worker.
91
+
92
+ After the root has read the artifact, it may delegate a bounded inspection of
93
+ explicitly scoped related code or evidence when corroboration is useful. That
94
+ assignment must exclude the review artifact, return exact `file:line` evidence,
95
+ and leave finding analysis, disposition, and all lifecycle mutations with the
96
+ receiving/root agent.
97
+
85
98
  ## Artifact Hygiene
86
99
 
87
100
  Artifact hygiene contract: Before finishing or committing, format every file you created or edited. Use the concrete write/fix formatting command supplied by the governing plan, task, or brief. If none is usable, discover the repository's documented write/fix command from applicable `AGENTS.md`/`CLAUDE.md` instructions and relevant package manifests; do not infer or hardcode a formatter. Prefer a file-scoped invocation when supported, and avoid rewriting unrelated files. If no command is discoverable, warn once with `no format command discovered in repo instructions; skipping`, then continue.
@@ -5,7 +5,7 @@ disable-model-invocation: false
5
5
  user-invocable: true
6
6
  allowed-tools: Read, Write, Bash(git:*), Bash(jq:*), Bash(oat config:*), Bash(oat decision:*), Bash(oat pjm:*), Bash(oat project log:*), Bash(oat project push:*), Bash(oat project scope:*), Bash(oat tools:*), Glob, Grep, AskUserQuestion
7
7
  metadata:
8
- version: 1.5.5
8
+ version: 1.5.6
9
9
  ---
10
10
 
11
11
  # Project Summary
@@ -258,21 +258,21 @@ spec, or design artifacts.
258
258
 
259
259
  **Non-lite section sources:**
260
260
 
261
- | Section | Primary Sources |
262
- | ------------------------------ | --------------------------------------------------------------------------------- |
263
- | Overview | discovery.md initial request, spec.md problem statement |
264
- | What Was Implemented | implementation.md task outcomes, plan.md phase structure |
265
- | Key Decisions | design.md decisions, implementation.md notes/decisions |
266
- | Design Deltas | implementation.md deviations table; review-received design drift notes |
267
- | Notable Challenges | implementation.md issues/blockers in task notes |
268
- | Tradeoffs Made | implementation.md decisions, design.md tradeoff sections |
269
- | Integration Notes | implementation.md notes about cross-cutting concerns |
270
- | Revision History | plan.md p-revN phases, implementation.md revision notes |
271
- | Follow-up Items | implementation.md deferred findings, plan.md deferred items |
272
- | Associated Issues | state.md `associated_issues` field |
273
- | Workflow Observations | project-log.md via `oat project log rollup` only |
274
- | Autonomous Execution Learnings | oat-execution-learnings.md dated entries |
275
- | Explainer Outcome | project-recap `manifest.json` and `build-record.json`, or the recorded recap skip |
261
+ | Section | Primary Sources |
262
+ | ------------------------------ | ------------------------------------------------------------------------------ |
263
+ | Overview | discovery.md initial request, spec.md problem statement |
264
+ | What Was Implemented | implementation.md task outcomes, plan.md phase structure |
265
+ | Key Decisions | design.md decisions, implementation.md notes/decisions |
266
+ | Design Deltas | implementation.md deviations table; review-received design drift notes |
267
+ | Notable Challenges | implementation.md issues/blockers in task notes |
268
+ | Tradeoffs Made | implementation.md decisions, design.md tradeoff sections |
269
+ | Integration Notes | implementation.md notes about cross-cutting concerns |
270
+ | Revision History | plan.md p-revN phases, implementation.md revision notes |
271
+ | Follow-up Items | implementation.md deferred findings, plan.md deferred items |
272
+ | Associated Issues | state.md `associated_issues` field |
273
+ | Workflow Observations | project-log.md via `oat project log rollup` only |
274
+ | Autonomous Execution Learnings | oat-execution-learnings.md dated entries |
275
+ | Explainer Outcome | project-recap `manifest.json` and `qa/result.json`, or the recorded recap skip |
276
276
 
277
277
  **Explainer Outcome (conditional):**
278
278
 
@@ -282,11 +282,11 @@ section with exactly one item. A run that happened uses the first form:
282
282
  ```markdown
283
283
  ## Explainer Outcome
284
284
 
285
- - **project-recap:** {generated | degraded} {outcome} — `{run path}`{optional warning or recovery note}
285
+ - **project-recap:** {generated | generated — needs review | failed} — `{run path}`{optional reason or cause}
286
286
  ```
287
287
 
288
- A recap that never ran because a required seam was unavailable uses the second
289
- form, which has a reason and no run path:
288
+ A recap that did not run because persisted intent records a skip uses the
289
+ second form, which has a reason and no run path:
290
290
 
291
291
  ```markdown
292
292
  ## Explainer Outcome
@@ -294,11 +294,21 @@ form, which has a reason and no run path:
294
294
  - **project-recap:** skipped — {skip reason}
295
295
  ```
296
296
 
297
- Include exactly one concise item with its recipe, state (`generated`, `degraded`, or `skipped`), and either its outcome (`built-durable`, `built-not-durable`, `built-needs-review`, or `failed`) with run path, or its skip reason. Add a warning or recovery note when applicable. Use `generated` for `built-durable`, `degraded` for any other terminal outcome, and `skipped` only for a recap whose intent resolved to skip.
297
+ Include exactly one concise item with its recipe and run path or skip reason:
298
298
 
299
- Use `manifest.json` and `build-record.json` as the source of truth for a run, and the recorded recap intent for a skip; refresh the existing item instead of appending a duplicate.
299
+ - `generated` for manifest outcome `built`;
300
+ - `generated — needs review` for `built-needs-review`, including the reason
301
+ from `qa/result.json`;
302
+ - `failed` for `failed` or `incomplete`, including the sanitized cause; and
303
+ - `skipped` only when persisted recap intent resolves to skip.
300
304
 
301
- Omit `Explainer Outcome` only when no project-recap attempt and no recorded recap skip exist. A degraded or skipped recap remains visible as its own product outcome; do not reinterpret either as project implementation failure. A `capability_probe` skip means the host had no provider configured for a required seam, not that the recap failed.
305
+ Use `manifest.json` and `qa/result.json` as the source of truth for a run, and
306
+ the persisted recap intent for a skip. Refresh the existing item instead of
307
+ appending a duplicate.
308
+
309
+ Omit `Explainer Outcome` only when no project-recap attempt and no persisted
310
+ recap skip exist. A failed or skipped recap remains visible as its own product
311
+ outcome; do not reinterpret it as project implementation failure.
302
312
 
303
313
  **Autonomous Execution Learnings (conditional):**
304
314
 
@@ -652,6 +662,6 @@ Summary tracks: last task {task_id}, {N} revision phases
652
662
  ledger graduation
653
663
  - When the PJM tool pack is available, each Key Decision is promoted to a canonical `reference/decisions/DR-YYMMDD-slug` record via `oat decision new` (status `accepted`), deduped on the date-independent slug so re-runs never create duplicate records
654
664
  - When the PJM tool pack is unavailable, decision promotion is skipped silently with no prompt
655
- - A project-recap attempt or recorded capability skip appears once in a concise
656
- Explainer Outcome section sourced from its manifest and build record, or from
657
- the recorded recap intent
665
+ - A project-recap attempt or recorded skip appears once in a concise Explainer
666
+ Outcome section sourced from `manifest.json` and `qa/result.json`, or from the
667
+ persisted recap intent
@@ -6,7 +6,7 @@ disable-model-invocation: false
6
6
  user-invocable: true
7
7
  allowed-tools: Read, Write, Edit, Bash, Grep, Glob, Task
8
8
  metadata:
9
- version: 1.9.3
9
+ version: 1.9.4
10
10
  ---
11
11
 
12
12
  # Execute a Wave of External Plans
@@ -460,41 +460,16 @@ archive anything first.
460
460
 
461
461
  #### Program-close recap explainer caller
462
462
 
463
- The orchestrator owns fact-base synthesis. At program close it synthesizes an
464
- `explainer-kit.fact-base/v1` document from the reconciled execution-program
465
- artifact, ALL wave summaries, and ALL completion records. Its required keys are
466
- exactly:
467
- `schemaVersion, generatedAt, mode, freshnessPolicy, sources, claims, unresolvedClaims, overrides`.
468
-
469
- The caller also owns CONTENT AUTHORING, exactly as it owns critic execution and
470
- fact-base synthesis: the kit validates structure and fact consistency, but
471
- nothing in it owns prose quality. Every recap run requires exactly one
472
- provider-neutral author seam — in-process callers supply an `author(request)`
473
- callback; JSON/CLI callers supply `authorModulePath` naming a module with an
474
- `author` function export. The core invokes it for every floor and accepted
475
- expansion artifact with `author-request/v2`: the artifact brief is inlined,
476
- the fact base is attached, and artistic requests include the resolved theme
477
- and hash-pinned shell. Authors may propose only recipe-declared expansion
478
- profiles and return `author-result/v2`; runs fail on absent or invalid author
479
- results or excessive verbatim source copying. Callbacks and module paths never
480
- enter persisted run requests.
481
-
482
- The mechanical caller constructs an `explainer-kit.run-request/v1` document whose
483
- required keys are exactly:
484
- `schemaVersion, recipe, slug, outputRoot, factBase, mode`. Set `recipe` to
485
- `{ "id": "program-recap", "version": "1" }`; this is an object with exactly
486
- `id` and `version`. Set `outputRoot` to
487
- `.oat/repo/reference/explainers/<slug>/`. Bind the
488
- synthesized fact-base file through `factBase` with the required keys
489
- `mode, freshnessPolicy`, set `mode` to `"supplied"`, set `freshnessPolicy` to
490
- `"live-wins"`, and set `path` to that file.
491
-
492
- After the run, read the `explainer-kit.manifest/v1` document. Its required keys
493
- are exactly:
494
- `schemaVersion, runId, slug, recipe, createdAt, source, theme, artifacts, immutableHashes, outcome, buildRecord, warnings`.
495
- Record the default program recap's manifest `runId` and `outcome` in the
496
- program ledger; use a wave ledger row only for an explicitly requested per-wave
497
- recap. Publishing is human-gated; this caller never invokes publish.
463
+ At program close, invoke `oat-explainer-kit` § Generate with recipe
464
+ `program-recap` over the reconciled execution-program artifact and the selected
465
+ wave summaries and completion records. The adapter resolves approved inputs,
466
+ theme, and the repository output root, then runs bundle, host-agent authoring,
467
+ verification, and recording in unattended mode.
468
+
469
+ Record the resulting manifest `runId` and `outcome` in the program ledger; use
470
+ a wave ledger row only for an explicitly requested per-wave recap. If the flow
471
+ fails before recording, preserve the sanitized cause and record the explicit
472
+ retry or skip disposition.
498
473
 
499
474
  ## Success Criteria
500
475
 
@@ -6,7 +6,7 @@ disable-model-invocation: false
6
6
  user-invocable: true
7
7
  allowed-tools: Read, Write, Edit, Bash, Grep, Glob, Task
8
8
  metadata:
9
- version: 1.5.2
9
+ version: 1.5.3
10
10
  ---
11
11
 
12
12
  # Program a Corpus of External Plans into Waves
@@ -129,46 +129,22 @@ target (same disclaimer as the plan indexes).
129
129
  `SKILL.md` as a document until then, and flip every
130
130
  `completion tail: deferred to program close` ledger disposition to `done`. On
131
131
  no or defer, record the standing deferral and its owner in the program ledger.
132
- This is the program completion gate and mirrors the recap publish gate; never
133
- answer it autonomously or repeat it once per wave.
132
+ This is the program completion gate; never answer it autonomously or repeat
133
+ it once per wave.
134
134
 
135
135
  ### Program-close explainer caller
136
136
 
137
137
  At program close by default, or for a per-wave recap explicitly requested by the
138
- operator, the orchestrator owns fact-base synthesis. For the default program
139
- recap it synthesizes an `explainer-kit.fact-base/v1` document from the reconciled
140
- execution-program artifact, ALL wave summaries, and ALL completion records. Its
141
- required keys are exactly:
142
- `schemaVersion, generatedAt, mode, freshnessPolicy, sources, claims, unresolvedClaims, overrides`.
143
-
144
- The caller also owns CONTENT AUTHORING, exactly as it owns critic execution and
145
- fact-base synthesis: the kit validates structure and fact consistency, but
146
- nothing in it owns prose quality. Every recap run requires exactly one
147
- provider-neutral author seam — in-process callers supply an `author(request)`
148
- callback; JSON/CLI callers supply `authorModulePath` naming a module with an
149
- `author` function export. The core invokes it for every floor and accepted
150
- expansion artifact with `author-request/v2`: the artifact brief is inlined,
151
- the fact base is attached, and artistic requests include the resolved theme
152
- and hash-pinned shell. Authors may propose only recipe-declared expansion
153
- profiles and return `author-result/v2`; runs fail on absent or invalid author
154
- results or excessive verbatim source copying. Callbacks and module paths never
155
- enter persisted run requests.
156
-
157
- The mechanical caller constructs an `explainer-kit.run-request/v1` document whose
158
- required keys are exactly:
159
- `schemaVersion, recipe, slug, outputRoot, factBase, mode`. Set `recipe` to
160
- `{ "id": "program-recap", "version": "1" }`; this is an object with exactly
161
- `id` and `version`. Set `outputRoot` to
162
- `.oat/repo/reference/explainers/<slug>/`. Bind the
163
- synthesized fact-base file through `factBase` with the required keys
164
- `mode, freshnessPolicy`, set `mode` to `"supplied"`, set `freshnessPolicy` to
165
- `"live-wins"`, and set `path` to that file.
166
-
167
- After the run, read the `explainer-kit.manifest/v1` document. Its required keys
168
- are exactly:
169
- `schemaVersion, runId, slug, recipe, createdAt, source, theme, artifacts, immutableHashes, outcome, buildRecord, warnings`.
170
- Record the manifest's `runId` and `outcome` in the wave or program ledger row.
171
- Publishing is human-gated; this caller never invokes publish.
138
+ operator, invoke `oat-explainer-kit` § Generate with recipe `program-recap`
139
+ over the reconciled execution-program artifact and the selected wave summaries
140
+ and completion records. The adapter resolves the approved inputs, theme, and
141
+ repository output root, then runs bundle, host-agent authoring, verification,
142
+ and recording in unattended mode.
143
+
144
+ Record the resulting manifest `runId` and `outcome` in the program ledger. Use
145
+ a wave ledger row only for an explicitly requested per-wave recap. If the flow
146
+ fails before recording, preserve the sanitized cause and record the explicit
147
+ retry or skip disposition.
172
148
 
173
149
  ## Integration with `oat-wave-execute`
174
150
 
@@ -6,15 +6,18 @@ disable-model-invocation: true
6
6
  user-invocable: true
7
7
  allowed-tools: Read, Write, Glob, Grep, Bash, AskUserQuestion, Agent, mcp__*
8
8
  metadata:
9
- version: 1.1.1
9
+ version: 1.1.2
10
10
  ---
11
11
 
12
12
  # Recon
13
13
 
14
14
  Compile a bounded investigation into a durable, validated evidence-packet
15
- directory. `recon` is a provider-neutral controller: it owns decomposition,
16
- artifact boundaries, assurance, and user interaction while installed dispatch
17
- dependencies own live catalogs, target selection, and launch mechanics.
15
+ directory. `recon` is a provider-neutral controller: it owns profile topology,
16
+ routing proposals, evidence flow, artifact boundaries, and assurance.
17
+ `subagent-orchestration` owns task-class and qualification guidance;
18
+ `oat-dispatch-subagents` owns live target resolution and launch mechanics. The
19
+ calling agent owns scope, approval dialogue, evidence-sufficiency judgment, and
20
+ all downstream conclusions.
18
21
 
19
22
  ## When to Use
20
23
 
@@ -115,12 +118,19 @@ Initialize `manifest.json` and the directory skeleton, but do not create
115
118
 
116
119
  Read `references/profiles.md`. Partition the scope into non-overlapping,
117
120
  adaptive lanes within the profile's hard caps. Classify every required and
118
- conditionally allowed wave before selection. Record each wave's task class and
119
- floor, then compute the run-wide maximum model-class floor.
120
-
121
- All lanes within a launch are a homogeneous wave. All waves use the same
122
- approved model and effort. Profiles change topology, redundancy, and
123
- concurrency—not the target tier.
121
+ conditionally allowed wave from its concrete bounded assignment, not its phase
122
+ label. Start with the economical provider-qualified route for the actual work;
123
+ narrow the assignment before escalating, and preserve stronger capability when
124
+ the work itself requires judgment.
125
+
126
+ Use the complete mode policy from `references/profiles.md` and
127
+ `scripts/lib/routing.mjs`. Map manifest wave modes to the worker's closed
128
+ assignment vocabulary: `redundant-gather` to `gather`;
129
+ `semantic-verification` and `redundant-verification` to `verify`; `adversarial`
130
+ and `contradiction-resolution` to `adversary`; and only `reconciliation` to
131
+ `reconcile`. The remaining modes keep their same-named assignment. All lanes
132
+ within one launch are a homogeneous wave. Select each wave independently; a
133
+ stronger wave never raises unrelated waves' targets or effort.
124
134
 
125
135
  ### Step 4: Prepare One Exact Dispatch Manifest
126
136
 
@@ -141,34 +151,55 @@ pack is already installed, `oat tools update --pack utility --scope
141
151
 
142
152
  Read `${UTILITY_SKILLS_ROOT}/oat-dispatch-subagents/SKILL.md` and perform
143
153
  only the selection steps of its Full-Information Selection: observe the
144
- catalog, resolve one exact target, and record the selection. Stop before its
145
- launch step; nothing launches until Step 5 runs after approval. From the same
146
- root, read
154
+ catalog, resolve each wave's exact target, and record each selection. Stop
155
+ before its launch step; nothing launches until Step 5 runs after approval. From
156
+ the same root, read
147
157
  `subagent-orchestration/references/model-selection-principles.md`, exactly one
148
158
  active-provider selection reference, and the matching
149
159
  `oat-dispatch-subagents` provider mechanics reference. Do not copy provider
150
160
  catalogs or exact launch construction into this skill.
151
161
 
152
- Resolve every planned and conditional wave against one exact target satisfying
153
- the run-wide floor. Prefer the canonical `recon-worker` role. If that role is
154
- unavailable, plan the generic role with the complete worker contract as a
155
- visible generic role fallback before approval. A fallback after approval is
156
- forbidden.
162
+ Resolve every planned and conditional wave independently against its recorded
163
+ task class and class floor. Preserve provider, route, role, model, effort,
164
+ reasoning mode, and service tier as separate provider-native axes. A null axis
165
+ means the adapter exposes no independently requested control; never translate
166
+ effort between harnesses or normalize an opaque selector. Prefer the canonical
167
+ `recon-worker` role. If that role is unavailable, plan the generic role with the
168
+ complete worker contract as a visible generic role fallback before approval. A
169
+ fallback after approval is forbidden.
170
+
171
+ Prepare a `schemaVersion: 2` draft manifest. Its execution object contains a
172
+ complete inherited `target`, limits, waves, conditions, and later the approval.
173
+ Every wave records `taskClass`, `classFloor`, a substantive
174
+ `selectionReason`, its lanes and conditional flag, and an optional complete
175
+ replacement `target`. Partial target overrides are invalid. Use the production
176
+ proposal helper rather than manually reinterpreting the manifest:
177
+
178
+ ```bash
179
+ node scripts/prepare-routing.mjs --manifest manifest.json --format markdown
180
+ ```
157
181
 
158
- Write the approval envelope into `manifest.execution`. It binds:
182
+ The proposal shown for approval includes:
159
183
 
160
- - provider, route, role, model, effort, reasoning mode, and service tier;
184
+ - every wave's exact effective provider, route, role, model, effort, reasoning
185
+ mode, and service tier;
161
186
  - authority level, maximum concurrency, per-lane deadline, and retry limit; and
162
- - every wave with its mode, task class, and conditional flag, and every lane
163
- with its identity, read scope, and worker-owned write root.
164
-
165
- Its canonical fingerprint covers every field above.
166
-
167
- Present the exact provider, model and effort for explicit approval before any
168
- worker launch, together with the full topology and hard execution limits. Named model examples are
169
- illustrative and non-normative; never route from an example. Declining approval
170
- leaves the run at `awaiting-approval` and launches nothing. Approval records
171
- `explicit-user-approval`, the approval time, and the fingerprint.
187
+ - every wave with its mode, task class, class floor, selection reason, target,
188
+ and conditional flag; every condition with its predecessor, destination,
189
+ predicate, and single-activation cap; and every lane with its identity, read
190
+ scope, and worker-owned write root.
191
+
192
+ Present every wave's exact supported target axes, class/floor, lane count,
193
+ selection rationale, conditions, and finite worst-case concurrency, deadline,
194
+ retry, lane, and condition limits for explicit approval before any worker
195
+ launch. Name unsupported controls as null instead of inventing them. Named
196
+ model examples are illustrative and non-normative; never route from an example.
197
+ Declining approval leaves the run at `awaiting-approval` and launches nothing.
198
+ Approval records `explicit-user-approval` and the approval time. Approval is
199
+ session-local: it authorizes only the exact proposal shown in the same
200
+ uninterrupted control flow. If the run is resumed, reloaded, or changed before
201
+ launch, remove the approval, return to `awaiting-approval`, render the current
202
+ proposal again, and obtain fresh approval.
172
203
 
173
204
  **Deadlines.** Choose the per-lane deadline from the expected task class and
174
205
  scope, and show it in the approval envelope; it is an approved execution limit,
@@ -187,18 +218,30 @@ result. If any approved axis cannot be satisfied, stop with a
187
218
  launch nothing. Never substitute a different axis to make the launch fit.
188
219
 
189
220
  Launch each wave through the dispatch dependency with exactly the approved
190
- axes. Immediately before each launch, compare the axes that will actually run
191
- against the approval fingerprint. Any drift returns the complete manifest for
192
- renewed approval. Launch acceptance is distinct from worker completion. After
193
- acceptance there is no replacement child, alternate route, target
194
- substitution, or no silent retry. If an accepted lane fails, is cancelled, or
195
- times out, record that pass as failed with a material `PASS_FAILED` gap
196
- naming the pass.
221
+ axes. Immediately before each launch, check the constructed target through the
222
+ same production helper used by preview:
223
+
224
+ ```bash
225
+ node scripts/prepare-routing.mjs --manifest manifest.json --wave <wave-id> --check-target <candidate-target.json>
226
+ ```
227
+
228
+ Any constructed-target mismatch returns the complete manifest for renewed
229
+ approval. This check proves invocation intent, not actual runtime
230
+ identity. Launch acceptance is distinct from worker completion. After
231
+ acceptance there is no replacement child, alternate route, target substitution,
232
+ and no silent retry. If an accepted lane fails, is cancelled, or times out,
233
+ record that lane as failed with a material `PASS_FAILED` gap carrying its exact
234
+ approved `waveId` and `laneId`. This structured identity is required for
235
+ conditional and non-conditional lanes alike; prose is descriptive, not
236
+ identity.
197
237
 
198
238
  Run the passes in this order:
199
239
 
200
240
  1. `map` and `gather` workers write unique dossiers under `raw/dossiers/`.
201
- 2. `compile` writes a candidate canonical claim ledger.
241
+ Thorough runs complete their independent `redundant-gather` wave here too.
242
+ 2. `compile` writes a candidate canonical claim ledger. A thorough candidate
243
+ directly references a complete dossier from every approved primary and
244
+ redundant gather lane before any review brief is created.
202
245
  3. Source preflight: run `scripts/validate-artifact.mjs` on the candidate
203
246
  manifest and ledger, then reopen every declared source and evidence locator
204
247
  with the checks in `scripts/validate-packet.mjs`. Resolve source roots to
@@ -206,10 +249,26 @@ Run the passes in this order:
206
249
  mark them unavailable, and add a material gap for every ineligible source
207
250
  and each affected claim. Do not create review briefs until the candidate
208
251
  manifest and ledger pair validates.
209
- 4. profile-required `verify`, `adversary`, and `coverage` workers consume only
252
+ 4. Profile-required `verify`, `adversary`, and `coverage` workers consume only
210
253
  immutable selectively blind briefs created by
211
254
  `scripts/create-review-brief.mjs` at unique paths.
212
- 5. `reconcile` writes a new candidate ledger without mutating the prior ledger.
255
+ 5. Evaluate each predeclared evidence condition only after its completed
256
+ predecessor artifacts exist. Record exactly one root-authored condition
257
+ outcome. A triggered `contradiction-resolution` wave runs once as an
258
+ `adversary` evidence assignment; a not-triggered or unresolved wave supplies
259
+ no artifact. Accepted failure, cancellation, timeout, or missing output never
260
+ authorizes replacement work.
261
+ 6. Standard and thorough execute exactly one terminal `reconciliation` wave,
262
+ mapped to `reconcile`, after required review evidence and any triggered
263
+ contradiction investigation. It writes a new candidate ledger without
264
+ mutating the prior ledger.
265
+
266
+ If `reconciliation-needs-judgment` is foreseeable, select an adequate target
267
+ for that one terminal wave before approval. If it appears after approval and
268
+ the approved target is inadequate, preserve completed evidence and return an
269
+ explicit unresolved, out-of-envelope gap for renewed approval or a new run.
270
+ Never mutate the target, launch a second reconciliation, or substitute a
271
+ contradiction search for synthesis.
213
272
 
214
273
  Use `references/worker-contract.md` for every assignment. Never allow two
215
274
  workers to share a write path. Every dossier records its approved wave and lane;
@@ -247,6 +306,10 @@ refer to a different canonical generation.
247
306
  Derive the achieved profile from complete, typed, digest-bound same-run
248
307
  artifacts written by approved lanes. Do not accept a worker or manifest
249
308
  assertion of achievement. A `quick` run can reach `supported` but never `verified`.
309
+ Quick is deliberately an evidence packet for an intelligent consumer and has
310
+ no independent semantic pass. Its consumer, not the packet, judges sufficiency
311
+ and conclusions. Standard and thorough retain their independent typed semantic,
312
+ adversarial, coverage, and single-terminal reconciliation requirements.
250
313
  `verified` claims require unique complete semantic, adversarial, and coverage
251
314
  results bound to immutable briefs and correct claim dispositions. Unresolved
252
315
  material challenge prevents verification. A run with contested claims may