@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.
- package/assets/agents/oat-reviewer.md +4 -3
- package/assets/agents/recon-worker.md +42 -8
- package/assets/bundle-metadata.json +1 -1
- package/assets/docs/cli-utilities/configuration.md +3 -56
- package/assets/docs/cli-utilities/tool-packs.md +4 -4
- package/assets/docs/contributing/code.md +2 -2
- package/assets/docs/contributing/index.md +0 -1
- package/assets/docs/reference/cli-reference.md +1 -1
- package/assets/docs/reference/troubleshooting.md +17 -40
- package/assets/docs/workflows/projects/artifacts.md +16 -34
- package/assets/docs/workflows/projects/lifecycle.md +20 -19
- package/assets/docs/workflows/skills/explainer-kit.md +180 -440
- package/assets/docs/workflows/skills/index.md +1 -2
- package/assets/docs/workflows/skills/recon.md +114 -23
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/explainer-kit/SKILL.md +96 -171
- package/assets/skills/explainer-kit/recipes/engineer-tour.json +1 -22
- package/assets/skills/explainer-kit/recipes/program-recap.json +1 -29
- package/assets/skills/explainer-kit/recipes/project-explainer.json +1 -22
- package/assets/skills/explainer-kit/recipes/project-recap.v2.json +1 -43
- package/assets/skills/explainer-kit/references/fact-base-contract.md +76 -101
- package/assets/skills/explainer-kit/references/recap-authoring.md +99 -0
- package/assets/skills/explainer-kit/schemas/manifest.schema.json +13 -135
- package/assets/skills/explainer-kit/scripts/bundle.mjs +712 -0
- package/assets/skills/explainer-kit/scripts/lib/claim-subject.mjs +40 -0
- package/assets/skills/explainer-kit/scripts/lib/contracts.mjs +113 -1504
- package/assets/skills/explainer-kit/scripts/lib/failure.mjs +13 -0
- package/assets/skills/explainer-kit/scripts/lib/package-coverage.mjs +57 -403
- package/assets/skills/explainer-kit/scripts/lib/qa-result.mjs +168 -0
- package/assets/skills/explainer-kit/scripts/lib/qa.mjs +90 -488
- package/assets/skills/explainer-kit/scripts/lib/recipes.mjs +28 -545
- package/assets/skills/explainer-kit/scripts/lib/run-package.mjs +120 -0
- package/assets/skills/explainer-kit/scripts/lib/sanitize.mjs +42 -0
- package/assets/skills/explainer-kit/scripts/record.mjs +335 -0
- package/assets/skills/explainer-kit/scripts/verify.mjs +648 -0
- package/assets/skills/oat-explainer-kit/SKILL.md +57 -117
- package/assets/skills/oat-explainer-kit/references/config-contract.md +20 -64
- package/assets/skills/oat-explainer-kit/references/lifecycle-contract.md +85 -237
- package/assets/skills/oat-explainer-kit/scripts/bind-project-sources.mjs +18 -10
- package/assets/skills/oat-explainer-kit/scripts/check-core.mjs +1 -0
- package/assets/skills/oat-explainer-kit/scripts/check-terminal-outcome.mjs +256 -21
- package/assets/skills/oat-explainer-kit/scripts/persist-intent.mjs +82 -3
- package/assets/skills/oat-explainer-kit/scripts/resolve-config.mjs +0 -162
- package/assets/skills/oat-explainer-kit/scripts/resolve-intent.mjs +57 -123
- package/assets/skills/oat-project-autonomous/SKILL.md +14 -13
- package/assets/skills/oat-project-autonomous/references/gate-inventory.md +165 -165
- package/assets/skills/oat-project-complete/SKILL.md +168 -349
- package/assets/skills/oat-project-complete/scripts/consume-persisted-recap-intent.mjs +125 -0
- package/assets/skills/oat-project-complete/scripts/execute-synced-archive-entry.mjs +0 -30
- package/assets/skills/oat-project-complete/scripts/parse-completion-retry-fields.mjs +4 -37
- package/assets/skills/oat-project-complete/scripts/parse-synced-archive-resume-fields.mjs +17 -16
- package/assets/skills/oat-project-complete/scripts/recover-completion-receipts.mjs +9 -174
- package/assets/skills/oat-project-complete/scripts/resolve-completion-retry.mjs +1 -2
- package/assets/skills/oat-project-document/SKILL.md +1 -1
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +165 -165
- package/assets/skills/oat-project-implement/SKILL.md +1 -1
- package/assets/skills/oat-project-implement/references/completion-and-closeout.md +44 -56
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +165 -165
- package/assets/skills/oat-project-lite/SKILL.md +1 -1
- package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +165 -165
- package/assets/skills/oat-project-plan/SKILL.md +5 -6
- package/assets/skills/oat-project-pr-final/SKILL.md +1 -1
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +165 -165
- package/assets/skills/oat-project-quick-start/SKILL.md +1 -1
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +165 -165
- package/assets/skills/oat-project-review-receive/SKILL.md +14 -1
- package/assets/skills/oat-project-summary/SKILL.md +35 -25
- package/assets/skills/oat-wave-execute/SKILL.md +11 -36
- package/assets/skills/oat-wave-program/SKILL.md +13 -37
- package/assets/skills/recon/SKILL.md +103 -40
- package/assets/skills/recon/references/packet-contract.md +150 -67
- package/assets/skills/recon/references/profiles.md +38 -16
- package/assets/skills/recon/references/worker-contract.md +39 -8
- package/assets/skills/recon/scripts/lib/contracts.mjs +703 -55
- package/assets/skills/recon/scripts/lib/routing.mjs +588 -0
- package/assets/skills/recon/scripts/lib/validated-run.mjs +2 -0
- package/assets/skills/recon/scripts/prepare-routing.mjs +88 -0
- package/assets/skills/recon/scripts/render-packet.mjs +69 -1
- package/assets/skills/recon/scripts/validate-packet.mjs +473 -56
- package/assets/skills/subagent-orchestration/SKILL.md +18 -9
- package/assets/skills/subagent-orchestration/references/model-selection-principles.md +17 -8
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +9 -113
- package/dist/commands/project/archive/archive-utils.d.ts.map +1 -1
- package/dist/commands/project/archive/archive-utils.js +32 -184
- package/dist/commands/project/archive/explainer-package-coverage.d.ts +3 -8
- package/dist/commands/project/archive/explainer-package-coverage.d.ts.map +1 -1
- package/dist/commands/project/archive/explainer-package-coverage.js +1 -1
- package/dist/config/oat-config.d.ts +0 -11
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +0 -34
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +0 -8
- package/dist/release/public-package-contract.d.ts.map +1 -1
- package/dist/release/public-package-contract.js +2 -10
- package/dist/validation/project-state.d.ts.map +1 -1
- package/dist/validation/project-state.js +42 -3
- package/package.json +2 -2
- package/assets/docs/contributing/explainer-kit-verification.md +0 -133
- package/assets/docs/workflows/skills/explainer-kit-providers.md +0 -155
- package/assets/skills/explainer-kit/briefs/deep-dive.md +0 -35
- package/assets/skills/explainer-kit/briefs/project-page.md +0 -38
- package/assets/skills/explainer-kit/briefs/supporting-diagram.md +0 -28
- package/assets/skills/explainer-kit/briefs/walkthrough-deck.md +0 -35
- package/assets/skills/explainer-kit/examples/project-explainer/content.md +0 -31
- package/assets/skills/explainer-kit/examples/project-explainer/fact-base.md +0 -22
- package/assets/skills/explainer-kit/examples/project-recap/content.md +0 -77
- package/assets/skills/explainer-kit/examples/project-recap/fact-base.json +0 -104
- package/assets/skills/explainer-kit/examples/project-recap/fact-base.md +0 -44
- package/assets/skills/explainer-kit/examples/theme-bundle.json +0 -87
- package/assets/skills/explainer-kit/recipes/project-recap.v1.json +0 -93
- package/assets/skills/explainer-kit/references/contracts.md +0 -324
- package/assets/skills/explainer-kit/references/destination-contract.md +0 -210
- package/assets/skills/explainer-kit/references/extension-contract.md +0 -80
- package/assets/skills/explainer-kit/references/golden-conformance.md +0 -80
- package/assets/skills/explainer-kit/references/visual-review.md +0 -71
- package/assets/skills/explainer-kit/schemas/author-request.v2.schema.json +0 -212
- package/assets/skills/explainer-kit/schemas/author-request.v3.schema.json +0 -241
- package/assets/skills/explainer-kit/schemas/author-result.v2.schema.json +0 -52
- package/assets/skills/explainer-kit/schemas/build-record.schema.json +0 -98
- package/assets/skills/explainer-kit/schemas/durability-evidence.schema.json +0 -53
- package/assets/skills/explainer-kit/schemas/publish-receipt.v1.schema.json +0 -97
- package/assets/skills/explainer-kit/schemas/publish-receipt.v2.schema.json +0 -215
- package/assets/skills/explainer-kit/schemas/publish-request.v1.schema.json +0 -32
- package/assets/skills/explainer-kit/schemas/publish-request.v2.schema.json +0 -34
- package/assets/skills/explainer-kit/schemas/run-request.schema.json +0 -147
- package/assets/skills/explainer-kit/schemas/set-plan.v1.schema.json +0 -149
- package/assets/skills/explainer-kit/schemas/terminal-evidence.v1.schema.json +0 -81
- package/assets/skills/explainer-kit/schemas/visual-review-evidence.v1.schema.json +0 -66
- package/assets/skills/explainer-kit/schemas/visual-review-request.v1.schema.json +0 -117
- package/assets/skills/explainer-kit/schemas/visual-review-result.v1.schema.json +0 -80
- package/assets/skills/explainer-kit/scripts/lib/catalog.mjs +0 -349
- package/assets/skills/explainer-kit/scripts/lib/content-approval.mjs +0 -418
- package/assets/skills/explainer-kit/scripts/lib/diagram.mjs +0 -514
- package/assets/skills/explainer-kit/scripts/lib/durability.mjs +0 -643
- package/assets/skills/explainer-kit/scripts/lib/fact-base.mjs +0 -664
- package/assets/skills/explainer-kit/scripts/lib/internal-references.mjs +0 -538
- package/assets/skills/explainer-kit/scripts/lib/markdown.mjs +0 -414
- package/assets/skills/explainer-kit/scripts/lib/publication-policy.mjs +0 -54
- package/assets/skills/explainer-kit/scripts/lib/records.mjs +0 -954
- package/assets/skills/explainer-kit/scripts/lib/render.mjs +0 -703
- package/assets/skills/explainer-kit/scripts/lib/s3-roots.mjs +0 -353
- package/assets/skills/explainer-kit/scripts/lib/s3-static.mjs +0 -759
- package/assets/skills/explainer-kit/scripts/lib/set-plan.mjs +0 -209
- package/assets/skills/explainer-kit/scripts/lib/source-backlinks.mjs +0 -218
- package/assets/skills/explainer-kit/scripts/lib/terminal-evidence.mjs +0 -157
- package/assets/skills/explainer-kit/scripts/lib/visual-review.mjs +0 -400
- package/assets/skills/explainer-kit/scripts/publish.mjs +0 -76
- package/assets/skills/explainer-kit/scripts/record-durability.mjs +0 -64
- package/assets/skills/explainer-kit/scripts/render-qa.mjs +0 -461
- package/assets/skills/explainer-kit/scripts/run.mjs +0 -3038
- package/assets/skills/explainer-kit/scripts/validate.mjs +0 -59
- package/assets/skills/oat-explainer-kit/references/author-callback.md +0 -53
- package/assets/skills/oat-explainer-kit/references/migration.md +0 -144
- package/assets/skills/oat-explainer-kit/references/visual-review-callback.md +0 -83
- package/assets/skills/oat-explainer-kit/scripts/derive-destination.mjs +0 -91
- package/assets/skills/oat-explainer-kit/scripts/finalize-tracked-run.mjs +0 -531
- package/assets/skills/oat-explainer-kit/scripts/probe-recap-seams.mjs +0 -371
- package/assets/skills/oat-explainer-kit/scripts/run.mjs +0 -905
- package/dist/commands/project/archive/explainer-source-backlinks.d.ts +0 -18
- package/dist/commands/project/archive/explainer-source-backlinks.d.ts.map +0 -1
- package/dist/commands/project/archive/explainer-source-backlinks.js +0 -27
- package/dist/commands/project/archive/explainer-terminal-evidence.d.ts +0 -29
- package/dist/commands/project/archive/explainer-terminal-evidence.d.ts.map +0 -1
- package/dist/commands/project/archive/explainer-terminal-evidence.js +0 -37
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-reviewer
|
|
3
|
-
version: 1.2.
|
|
3
|
+
version: 1.2.5
|
|
4
4
|
description: Unified reviewer for OAT projects - mode-aware verification of requirements/design alignment and code quality. Writes a review artifact to disk by default, or returns structured findings in-memory when dispatched in structured-output mode.
|
|
5
5
|
tools: Read, Bash, Grep, Glob, Write, Task
|
|
6
6
|
color: yellow
|
|
@@ -93,8 +93,9 @@ When delegation is eligible:
|
|
|
93
93
|
Mechanical workers may execute checks and report exact output, but interpretation and policy judgment require stronger classes or stay with the root reviewer.
|
|
94
94
|
|
|
95
95
|
5. The generic dispatch contract owns capability, catalog, model, effort, route, authorization, launch evidence, class-floor selection, and floor-satisfaction evidence. It applies active user and repository instructions, the active-provider reference, the live nested catalog, and the supplied policy/ceiling. Select an explicit target meeting the declared floor; never silently inherit the primary reviewer's model and never hard-code provider model names. Prefer a cheaper/faster worker only when the host reliably exposes that control and the target still satisfies the floor.
|
|
96
|
-
6.
|
|
97
|
-
7.
|
|
96
|
+
6. When the selected lane worker is the canonical `recon-worker`, construct and validate its complete Assignment Gate envelope before launch: run, wave, and lane IDs; approved manifest wave mode; worker assignment mode; bounded objective; included and excluded scope; allowed and excluded inputs; source-read authority and read-only tools; sole write path; artifact kind, schema version, and closed output schema; enforcement; deadline; and escalation path. If the complete envelope cannot be constructed, do not launch the worker; record the attempt as not attempted or failed as appropriate and cover the lane inline. Other worker roles follow their own contracts.
|
|
97
|
+
7. Give each lane an exact scope and a compact return contract: coverage, checks performed, exact `file:line` evidence, gaps, and explicit uncertainty. Reports are advisory candidate observations, not accepted findings.
|
|
98
|
+
8. Workers must not mutate files, emit final findings, assign severity, make validation decisions, write review artifacts or `StructuredFindings`, or otherwise write either output sink.
|
|
98
99
|
|
|
99
100
|
Lanes may share one homogeneous dispatch wave only when every existing dispatch axis, `task_class`, and `model_class_floor` match. Mixed task classes require separate records and waves. The one-level fan-out limit applies across all waves.
|
|
100
101
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: recon-worker
|
|
3
|
-
version: 1.0.
|
|
3
|
+
version: 1.0.1
|
|
4
4
|
description: Executes one bounded recon packet assignment as a non-interactive leaf worker and writes exactly one declared artifact.
|
|
5
5
|
tools: Read, Bash, Grep, Glob, Write, WebSearch, WebFetch
|
|
6
6
|
color: cyan
|
|
@@ -12,12 +12,31 @@ You are a non-interactive recon leaf worker. Execute exactly one assignment in
|
|
|
12
12
|
one declared mode: `map`, `gather`, `compile`, `verify`, `adversary`, `coverage`,
|
|
13
13
|
or `reconcile`. No other mode is valid.
|
|
14
14
|
|
|
15
|
+
The controller maps approved manifest waves to this closed vocabulary:
|
|
16
|
+
|
|
17
|
+
| Manifest wave mode | Worker assignment mode |
|
|
18
|
+
| -------------------------- | ---------------------- |
|
|
19
|
+
| `map` | `map` |
|
|
20
|
+
| `gather` | `gather` |
|
|
21
|
+
| `compile` | `compile` |
|
|
22
|
+
| `semantic-verification` | `verify` |
|
|
23
|
+
| `adversarial` | `adversary` |
|
|
24
|
+
| `coverage` | `coverage` |
|
|
25
|
+
| `reconciliation` | `reconcile` |
|
|
26
|
+
| `redundant-gather` | `gather` |
|
|
27
|
+
| `redundant-verification` | `verify` |
|
|
28
|
+
| `contradiction-resolution` | `adversary` |
|
|
29
|
+
|
|
30
|
+
Preserve the approved wave identity and target; never select or upgrade a
|
|
31
|
+
route yourself.
|
|
32
|
+
|
|
15
33
|
## Assignment Gate
|
|
16
34
|
|
|
17
35
|
Before work, require a complete envelope containing run, wave, and lane IDs;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
36
|
+
the approved manifest wave mode; exactly one worker assignment mode; bounded
|
|
37
|
+
objective; included and excluded scope; allowed inputs; excluded inputs;
|
|
38
|
+
source-read authority and read-only tools; sole write path; artifact kind and
|
|
39
|
+
schema version; output schema; enforcement level; and deadline.
|
|
21
40
|
|
|
22
41
|
Reject the assignment if inputs overlap exclusions, source authority is
|
|
23
42
|
missing, the write path is not unique and packet-contained, the schema is
|
|
@@ -70,6 +89,9 @@ reasoning, synthesis prose, or prior reviews.
|
|
|
70
89
|
Consume only declared scope, questions, and provisional statements. Search for
|
|
71
90
|
counterevidence, unsupported inference, incompatible interpretations, and
|
|
72
91
|
missing alternatives. Do not read gathering or prior-review conclusions.
|
|
92
|
+
When assigned a `contradiction-resolution` wave, seek discriminating evidence
|
|
93
|
+
for that named contradiction; do not reconcile the ledger or decide which
|
|
94
|
+
interpretation wins.
|
|
73
95
|
|
|
74
96
|
### `coverage`
|
|
75
97
|
|
|
@@ -86,14 +108,26 @@ the existing ledger in place.
|
|
|
86
108
|
|
|
87
109
|
## Output
|
|
88
110
|
|
|
89
|
-
Write one JSON artifact
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
111
|
+
Write one JSON artifact using only the supplied closed schema's fields. A
|
|
112
|
+
`recon.raw-dossier` identifies its approved manifest wave with `waveId` and its
|
|
113
|
+
closed worker assignment with `mode`; it also includes `laneId` and `outcome`.
|
|
114
|
+
A `recon.review-result` identifies its approved lane with `reviewerLane` and its
|
|
115
|
+
approved review discriminator with `reviewKind`. Include the remaining
|
|
116
|
+
required identity, input, exclusion, finding or disposition, uncertainty,
|
|
117
|
+
contradiction, gap, diagnostic, and direct-reference fields only as the
|
|
118
|
+
supplied schema permits.
|
|
119
|
+
|
|
120
|
+
Do not add a second mode field or any other unknown field. The controller
|
|
121
|
+
validates `waveId` and `mode`, or `reviewerLane` and `reviewKind`, against the
|
|
122
|
+
approved manifest wave before promoting the artifact.
|
|
93
123
|
|
|
94
124
|
Return only the artifact path and compact outcome. Do not return source bodies,
|
|
95
125
|
worker reasoning, or dossier contents to the controller.
|
|
96
126
|
|
|
127
|
+
The controller and caller decide whether the evidence is sufficient. Never turn
|
|
128
|
+
an assignment result into a downstream recommendation, architecture verdict, or
|
|
129
|
+
final review conclusion.
|
|
130
|
+
|
|
97
131
|
## Critical Rules
|
|
98
132
|
|
|
99
133
|
**ONE MODE. ONE ARTIFACT.** Perform only the assigned mode and write only its
|
|
@@ -177,8 +177,8 @@ table and template precedence.
|
|
|
177
177
|
|
|
178
178
|
### Explainer configuration
|
|
179
179
|
|
|
180
|
-
The `oat-explainer-kit` adapter
|
|
181
|
-
|
|
180
|
+
The `oat-explainer-kit` adapter resolves theme defaults from
|
|
181
|
+
`explainers.defaults.*` and project lifecycle preferences from
|
|
182
182
|
`workflow.explainers.*`.
|
|
183
183
|
|
|
184
184
|
| Key | Type | Stored scopes | Default |
|
|
@@ -187,12 +187,6 @@ plumbing uses `explainers.*`; project lifecycle preferences use
|
|
|
187
187
|
| `explainers.defaults.palette` | nullable string (deprecated) | local, shared, user | `null` |
|
|
188
188
|
| `explainers.defaults.visualProfile` | nullable string (deprecated) | local, shared, user | `null` |
|
|
189
189
|
| `explainers.defaults.themeBundlePath` | path | local, shared | unset |
|
|
190
|
-
| `explainers.publish.provider` | `s3-static` | shared | unset |
|
|
191
|
-
| `explainers.publish.s3Uri` | `s3://` URI | shared | unset |
|
|
192
|
-
| `explainers.publish.publicBaseUrl` | HTTPS URL | shared | unset |
|
|
193
|
-
| `explainers.publish.awsRegion` | non-empty string | shared | unset |
|
|
194
|
-
| `explainers.publish.awsProfile` | non-empty string | local, user | unset |
|
|
195
|
-
| `explainers.publish.publicAccess` | `public\|protected` | shared | `public` |
|
|
196
190
|
| `workflow.explainers.projectExplainer` | `always\|ask\|never` | local, shared, user | `ask` |
|
|
197
191
|
| `workflow.explainers.projectRecap` | `always\|ask\|never` | local, shared, user | `ask` |
|
|
198
192
|
|
|
@@ -220,38 +214,6 @@ advanced compatibility but emit deprecation warnings. When no source explicitly
|
|
|
220
214
|
selects a theme, the core uses `clean-neutral` and records a visible fallback
|
|
221
215
|
warning.
|
|
222
216
|
|
|
223
|
-
Publishing remains build-only when `explainers.publish.provider` is unset.
|
|
224
|
-
When it is `s3-static`, `s3Uri`, `publicBaseUrl`, and `awsRegion` are all
|
|
225
|
-
required. `awsProfile` is optional; when absent, the standard AWS credential
|
|
226
|
-
chain applies. Config never starts publishing by itself: lifecycle callers must
|
|
227
|
-
still select publish durability explicitly, and publishing remains
|
|
228
|
-
human-gated. Raw AWS credentials are not config keys.
|
|
229
|
-
|
|
230
|
-
`publicAccess` declares whether published objects are expected to be reachable
|
|
231
|
-
anonymously; it does not authorize publication and it does not change any
|
|
232
|
-
bucket policy. It selects how publication is verified. The default `public`
|
|
233
|
-
fetches every uploaded object over HTTPS and compares the returned bytes
|
|
234
|
-
against the manifest hash. `protected` skips those anonymous fetches, verifies
|
|
235
|
-
each object through authenticated S3 hashing instead, and records
|
|
236
|
-
`skipped-protected` in the publish receipt. Because no anonymous fetch happens
|
|
237
|
-
under `protected`, a mistyped `publicBaseUrl` is not detected at publish time:
|
|
238
|
-
the advertised URLs are still written into the initiative catalog and receipt,
|
|
239
|
-
and the catalog records `publicVerification: "skipped-by-policy"` so consumers
|
|
240
|
-
can see the URLs were never exercised.
|
|
241
|
-
|
|
242
|
-
### Explainer publication environment variables
|
|
243
|
-
|
|
244
|
-
Two escape hatches are read from the process environment rather than from
|
|
245
|
-
config, because both are machine-local operational overrides rather than
|
|
246
|
-
project settings. Neither has a config key.
|
|
247
|
-
|
|
248
|
-
| Variable | Effect | Default |
|
|
249
|
-
| ------------------------------------------------ | --------------------------------------------------------------------------- | ------- |
|
|
250
|
-
| `EXPLAINER_KIT_ALLOW_PRIVATE_PUBLIC_ROOT` | Permits a loopback, link-local, unique-local or RFC 1918 `publicBaseUrl` | off |
|
|
251
|
-
| `EXPLAINER_KIT_SUPPRESS_ROOT_DIVERGENCE_WARNING` | Silences the advisory warning when the S3 key prefix and public path differ | off |
|
|
252
|
-
|
|
253
|
-
Both accept `1`, `true` or `on`.
|
|
254
|
-
|
|
255
217
|
### Bundled assets root (`OAT_ASSETS_DIR`)
|
|
256
218
|
|
|
257
219
|
The CLI reads its bundled skills, agents, templates, and scripts from the
|
|
@@ -294,23 +256,8 @@ packaged `assets/` directory next to the installed CLI. Setting a non-empty
|
|
|
294
256
|
This is primarily a test-isolation and packaging seam; day-to-day use of the CLI
|
|
295
257
|
does not need it.
|
|
296
258
|
|
|
297
|
-
`EXPLAINER_KIT_ALLOW_PRIVATE_PUBLIC_ROOT` disables an anti-SSRF control. Public
|
|
298
|
-
verification issues an outbound GET against whatever `publicBaseUrl` names, so
|
|
299
|
-
by default the connector refuses internal addresses — including the
|
|
300
|
-
`169.254.169.254` instance-metadata endpoint. Enable it only for a genuinely
|
|
301
|
-
internal mirror. When it is set and the root is in fact non-public, the run
|
|
302
|
-
records `publicRootPolicy: "private-allowed"` in the publish receipt, so a
|
|
303
|
-
publication made with the control disabled is distinguishable in durable
|
|
304
|
-
evidence from one made without it. The policy is address-literal only: a
|
|
305
|
-
hostname that resolves inward is not detected either way.
|
|
306
|
-
|
|
307
|
-
`EXPLAINER_KIT_SUPPRESS_ROOT_DIVERGENCE_WARNING` only affects an advisory
|
|
308
|
-
message. Divergent roots are never a publication failure — a CloudFront Origin
|
|
309
|
-
Path deployment legitimately maps a bucket prefix to the distribution root — so
|
|
310
|
-
this changes no validation outcome.
|
|
311
|
-
|
|
312
259
|
See [Explainer Kit](../workflows/skills/explainer-kit.md) for recipes, artifact
|
|
313
|
-
locations, lifecycle behavior, and
|
|
260
|
+
locations, lifecycle behavior, and archive/export behavior.
|
|
314
261
|
|
|
315
262
|
Workflow gate objects are structured config and use their own command group
|
|
316
263
|
instead of the scalar `oat config set` surface. See
|
|
@@ -161,10 +161,9 @@ oat tools update --pack research --scope project
|
|
|
161
161
|
The public explainer family also spans two packs:
|
|
162
162
|
|
|
163
163
|
- `utility` owns `explainer-kit`, the destination-neutral core with its
|
|
164
|
-
|
|
165
|
-
optional publishing connector.
|
|
164
|
+
recipes, briefs, themes, templates, bundler, verifier, and recorder.
|
|
166
165
|
- `workflows` owns `oat-explainer-kit`, the adapter that resolves OAT config,
|
|
167
|
-
project artifacts, output paths, and lifecycle intent.
|
|
166
|
+
approved project artifacts, output paths, and lifecycle intent.
|
|
168
167
|
|
|
169
168
|
Install the core at user scope before using the adapter:
|
|
170
169
|
|
|
@@ -173,7 +172,8 @@ oat tools install utility --scope user
|
|
|
173
172
|
oat tools install workflows
|
|
174
173
|
```
|
|
175
174
|
|
|
176
|
-
The dependency is one-way: the adapter invokes the core
|
|
175
|
+
The dependency is one-way: the adapter invokes the core's
|
|
176
|
+
`bundle → host-agent authoring → verify → record` flow, while the core remains
|
|
177
177
|
usable without OAT. The adapter checks the installed canonical core path and
|
|
178
178
|
minimum compatible version before reading config or running. If the core is
|
|
179
179
|
missing it fails closed with the utility install command; if it is too old it
|
|
@@ -56,8 +56,8 @@ pnpm build:docs # builds docs site and its dependencies
|
|
|
56
56
|
```
|
|
57
57
|
|
|
58
58
|
`pnpm test` is composite: it runs the workspace vitest suites, then
|
|
59
|
-
`test:smoke` (`tools/smoke`), `test:skills` (`.agents/skills/*/tests`),
|
|
60
|
-
|
|
59
|
+
`test:smoke` (`tools/smoke`), `test:skills` (`.agents/skills/*/tests`), and last
|
|
60
|
+
`test:scripts` (`scripts/worktree`). Steps 5 and 6 are the version-lockstep
|
|
61
61
|
gates; they are in the local list because they previously ran only in CI and
|
|
62
62
|
version-bump drift twice reached review with no local gate to surface it.
|
|
63
63
|
|
|
@@ -17,5 +17,4 @@ Use this section when you are changing OAT itself rather than consuming it as a
|
|
|
17
17
|
- [Commit Conventions](commit-conventions.md) - Traceable commit patterns for project and docs work.
|
|
18
18
|
- [Hooks and Safety](hooks-and-safety.md) - Safety and mutation contracts for provider-sync behavior.
|
|
19
19
|
- [Smoke Testing](smoke-testing.md) - Runbook for the live workflow smoke runner: prerequisites, scenarios, evidence reports, and recovery.
|
|
20
|
-
- [Verifying Explainer Kit](explainer-kit-verification.md) - Golden recap cases, real-Chromium evidence, fixture regeneration, and release validation.
|
|
21
20
|
- [Verifying Cursor Pins](verifying-cursor-pins.md) - Runbook for probe-verifying a Cursor model pin before shipping it.
|
|
@@ -151,7 +151,7 @@ Notable commands introduced in the current CLI surface:
|
|
|
151
151
|
- `oat review latest --json` - find the newest review artifact by `oat_generated_at`, scanning the active or specified project's `reviews/` and `reviews/archived/` directories plus ad-hoc review locations. Same-time candidates use target priority, then lifecycle recency (`final` > higher phase/task > lower phase/task). The JSON contract returns `path`, `scope`, `generatedAt`, `kind` (`project` or `adhoc`), `archived`, and `actionable`, with `null` values when no review exists. Archived project reviews remain discoverable as history but return `actionable: false`.
|
|
152
152
|
- `oat project list --json` - summary state for tracked projects under the configured projects root
|
|
153
153
|
- `oat project complete-state <project-path>` - apply the canonical completed-state mutation to a project's `state.md`; used by `oat-project-complete` during lifecycle closeout
|
|
154
|
-
- `oat project archive [project-path] [--project-recap-run <project-relative-path>] [--no-commit]` - archive a tracked project through the same local move, summary export, and configured S3 upload path used by completion. When omitted, the project path falls back to the active project. The optional recap path must identify a `project-recap` run inside the project's `explainers/` directory. Archive stages the selected complete package into `.oat/repo/reference/project-recaps/<YYYYMMDD-project-slug>/`, verifies every manifest-declared
|
|
154
|
+
- `oat project archive [project-path] [--project-recap-run <project-relative-path>] [--no-commit]` - archive a tracked project through the same local move, summary export, and configured S3 upload path used by completion. When omitted, the project path falls back to the active project. The optional recap path must identify a `project-recap` run inside the project's `explainers/` directory. Archive stages the selected complete package into `.oat/repo/reference/project-recaps/<YYYYMMDD-project-slug>/`, verifies every manifest-declared file byte, then atomically installs the export before deleting the active project. Existing destinations, incomplete inventory coverage, stale bytes, path escapes, and recipe mismatches fail without removing the active project. For synced projects, a configured S3 upload must succeed before terminal cleanup. Successful closeout makes `refs/oat/completed/<project>` authoritative, deletes the tracked JSON record and nested checkout, and leaves archive metadata sufficient for an idempotent recordless retry. With `--json`, the terminal receipt reports `completedRef`, `verifiedSourceSha`, whether `activeAliasDisposition` was `retained` or `removed`, whether `recordRetired` completed, and the parent `lifecycleCommit`. `--no-commit` is a manual/library-only option: for a synced project it still removes the checkout but deliberately leaves `lifecycleCommit` null. Never pass it through `oat-project-complete`, which requires that receipt.
|
|
155
155
|
- `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.
|
|
156
156
|
- `oat project dispatch record --event-file <json-file-or-dash> [--project <project-path>]` - validate one generic dispatch record plus its namespaced OAT evidence event, and persist it into the project's append-only `dispatch/` journal (optional; no lifecycle skill requires it). Omit `--project` to validate without persisting. Revision 1 is `dispatch/<request-id>.json` and every later revision is `dispatch/<request-id>@<NNNN>.json`; superseded revisions are never replaced or removed. The command validates and records evidence only — it never launches a provider. A `runtime-observation` event may carry either a finished `observation` or the provider `metadata` envelope (`provider`, `observedAt`, `entries`) to normalize, but not both. `entries` may be raw provider output: they are projected through the owning parser's allowlist, are never persisted, and both forms have their `match` derived from the record's configured invocation rather than trusted from the caller, with the observation's `provider` bound to the record's. With `--json`, the result adds `runtimeIdentity` with separate `configured` and `observed` objects plus a `match` of `matching`, `mismatching`, `not-comparable`, or `null`; observation is corroboration only and never overrides configured invocation. Error output is redacted on a best-effort basis; absolute paths in identity fields are rejected outright, while some prose forms (colon-prefixed, URL routes) can survive. See [Evidence Layers](../workflows/projects/evidence-layers.md).
|
|
157
157
|
- `oat project validate-plan --project-path <path>` - validates `oat_plan_parallel_groups` metadata in `plan.md`; exits non-zero on invalid. Lite plans must contain exactly one phase, declare no parallel groups, and give every Validation Criteria bullet either a backticked command or a `manual:` instruction. See [Implementation Execution](../workflows/projects/implementation-execution.md#parallel-phase-groups).
|
|
@@ -330,55 +330,32 @@ failure, which is intentional — you asked for a scope that does not exist here
|
|
|
330
330
|
|
|
331
331
|
## An Explainer Kit recap ends as `built-needs-review`
|
|
332
332
|
|
|
333
|
-
`built-needs-review`
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
333
|
+
`built-needs-review` is a satisfied generation outcome. The explainer page and
|
|
334
|
+
browser-free checks are complete, but the browser rung was unavailable or
|
|
335
|
+
reported a visual issue that needs a human look. Lifecycle closeout can
|
|
336
|
+
continue, and a fresh package that passes the complete package guard can be
|
|
337
|
+
selected and archived.
|
|
337
338
|
|
|
338
339
|
Inspect:
|
|
339
340
|
|
|
340
|
-
1. `
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
correction-provider modules.
|
|
341
|
+
1. `qa/result.json` for the selected browser rung, browser availability, and
|
|
342
|
+
visual findings.
|
|
343
|
+
2. `manifest.json` for warnings, outcome, and the exact package inventory.
|
|
344
|
+
3. `site/index.html` at 320, 768, and 1440 pixels when visual inspection is
|
|
345
|
+
available.
|
|
346
|
+
4. Adapter logs for a browser launch or capture failure.
|
|
347
347
|
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
evidence is diagnostic only.
|
|
353
|
-
|
|
354
|
-
See
|
|
355
|
-
[Explainer Provider Integration](../workflows/skills/explainer-kit-providers.md)
|
|
356
|
-
for the trusted-session and critic contracts.
|
|
357
|
-
|
|
358
|
-
## Explainer Kit resume fails with `E_APPROVAL_RESUME`
|
|
359
|
-
|
|
360
|
-
Interactive resume is same-request only. Keep the opaque `ekrt2` token returned
|
|
361
|
-
as `approval.resumeToken` outside the package and provide it as
|
|
362
|
-
`reviewedSource.resumeToken` with the complete original request.
|
|
363
|
-
|
|
364
|
-
The error is expected when:
|
|
365
|
-
|
|
366
|
-
- the token is missing, malformed, or not `ekrt2`;
|
|
367
|
-
- the configured output root or retained run root moved;
|
|
368
|
-
- `run-request.json` or a retained set-plan record changed;
|
|
369
|
-
- the current request differs in source binding, recipe, mode, theme, render
|
|
370
|
-
strategy, privacy, public URL, durability, or publish destination; or
|
|
371
|
-
- the package contains a legacy `ekrt1` token.
|
|
372
|
-
|
|
373
|
-
Do not edit retained files or weaken the current request to force a match.
|
|
374
|
-
Restore the exact original request and package bytes. Legacy paused runs cannot
|
|
375
|
-
be upgraded in place; restart them to receive an authenticated `ekrt2` token.
|
|
348
|
+
If the page is acceptable, retain the outcome as-is; the manifest honestly
|
|
349
|
+
records that visual review is still due. If it is not acceptable, fix the
|
|
350
|
+
source or authoring issue and generate a new run. Do not mutate a recorded run
|
|
351
|
+
package.
|
|
376
352
|
|
|
377
353
|
## Reference artifacts
|
|
378
354
|
|
|
379
355
|
- `.oat/projects/<scope>/<project>/implementation.md`
|
|
380
356
|
- `.oat/projects/<scope>/<project>/reviews/`
|
|
381
|
-
- `.oat/projects/<scope>/<project>/explainers/<slug>/
|
|
357
|
+
- `.oat/projects/<scope>/<project>/explainers/<slug>/manifest.json`
|
|
358
|
+
- `.oat/projects/<scope>/<project>/explainers/<slug>/qa/result.json`
|
|
382
359
|
- `packages/cli/src/commands/doctor/index.ts`
|
|
383
360
|
- `packages/cli/src/commands/status/index.ts`
|
|
384
361
|
- `packages/cli/src/commands/tools/shared/pack-inventory.ts`
|
|
@@ -101,8 +101,8 @@ different retention contracts:
|
|
|
101
101
|
- A selected final `project-recap` is a durable completion record. Before a
|
|
102
102
|
shared project is removed, archive copies the complete selected run to
|
|
103
103
|
`.oat/repo/reference/project-recaps/<YYYYMMDD-project-slug>/`, verifies its
|
|
104
|
-
|
|
105
|
-
PR links use this export, never the gitignored local archive. Lifecycle
|
|
104
|
+
package inventory and hashes, and reports that tracked export path. Summary
|
|
105
|
+
and PR links use this export, never the gitignored local archive. Lifecycle
|
|
106
106
|
callers identify the selected project-relative run with:
|
|
107
107
|
|
|
108
108
|
```bash
|
|
@@ -110,40 +110,22 @@ different retention contracts:
|
|
|
110
110
|
--project-recap-run explainers/<recap-slug>
|
|
111
111
|
```
|
|
112
112
|
|
|
113
|
-
The archive exports at most one selected recap package. It
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
- the
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
- canonical mobile, tablet, and desktop screenshots;
|
|
125
|
-
- paired `browser-evidence/v2` metrics with launched Chromium name, version,
|
|
126
|
-
and capture identity;
|
|
127
|
-
- cohesion observations and each visual-review request/result; and
|
|
128
|
-
- the bounded revision record when a correction occurred.
|
|
129
|
-
|
|
130
|
-
Canonical object hashes identify normalized fact-base, theme, runtime, and
|
|
131
|
-
capture objects; `manifest.immutableHashes` independently covers serialized file
|
|
132
|
-
bytes. The archive requires one complete, internally consistent browser and
|
|
133
|
-
review chain for a successful unattended recap. Missing, stale, forged,
|
|
134
|
-
cross-record-mismatched, or tampered coverage fails before the active project is
|
|
135
|
-
deleted.
|
|
136
|
-
|
|
137
|
-
`built-needs-review` is a terminal review-gate outcome, not a non-durable
|
|
138
|
-
success. Its partial evidence remains available for diagnosis, but it cannot be
|
|
139
|
-
finalized, exported, attested, archived, or pushed. Review and rebuild the recap
|
|
140
|
-
to a passing visual-review outcome first.
|
|
113
|
+
The archive exports at most one selected recap package. It rejects an existing
|
|
114
|
+
dated destination and requires the selected path to stay under the project's
|
|
115
|
+
`explainers/` directory with a `project-recap` manifest. Verification checks
|
|
116
|
+
the manifest's exact inventory, every declared file byte, the fact base and
|
|
117
|
+
ledger, resolved theme, authored page, and QA result before deleting the active
|
|
118
|
+
project.
|
|
119
|
+
|
|
120
|
+
Both `built` and `built-needs-review` are complete, archivable outcomes.
|
|
121
|
+
`built-needs-review` means the browser rung was unavailable or found an issue;
|
|
122
|
+
the archive retains that visible human-review signal. `failed`, `incomplete`,
|
|
123
|
+
stale, mismatched, or tampered packages fail the export guard.
|
|
141
124
|
|
|
142
125
|
Local-scope projects are not archived through this export path. Their explainer
|
|
143
|
-
packages
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
must provide their own explicit output root.
|
|
126
|
+
packages remain local working artifacts. Non-project OAT explainer runs use
|
|
127
|
+
`.oat/repo/reference/explainers/<slug>/`; direct core callers provide an
|
|
128
|
+
explicit output root.
|
|
147
129
|
|
|
148
130
|
### Gate review frontmatter
|
|
149
131
|
|
|
@@ -79,24 +79,24 @@ After implementation closeout finishes:
|
|
|
79
79
|
|
|
80
80
|
### Project-recap gate (non-lite)
|
|
81
81
|
|
|
82
|
-
The final-closeout orchestrator
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
82
|
+
The final-closeout orchestrator re-reads persisted recap intent after final
|
|
83
|
+
review and configured pre-approval summary and documentation steps, but before
|
|
84
|
+
final HiLL approval. A persisted skip suppresses manifest discovery and the
|
|
85
|
+
entire generation flow. A persisted generate decision reuses a fresh satisfied
|
|
86
|
+
package or invokes `oat-explainer-kit` § Generate.
|
|
87
|
+
|
|
88
|
+
Fresh means the package identifies this project and recipe, has outcome `built`
|
|
89
|
+
or `built-needs-review`, passes the complete package guard, and records source
|
|
90
|
+
hashes for the current approved inputs. Wrong-project, wrong-recipe, stale,
|
|
91
|
+
`failed`, and `incomplete` packages do not qualify.
|
|
92
|
+
|
|
93
|
+
The flow bundles approved evidence, lets the host agent author one page,
|
|
94
|
+
verifies it at the best available browser rung, and records the package.
|
|
95
|
+
`built-needs-review` satisfies generation and does not block approval. In
|
|
96
|
+
autonomy, an unsatisfied run is retried once; a second failure persists
|
|
97
|
+
`skip/failed_attempt`, which closeout consumes without another bundle or
|
|
98
|
+
authoring pass. Reports and `summary.md` preserve the actual outcome, run path,
|
|
99
|
+
or skip reason.
|
|
100
100
|
|
|
101
101
|
**Lite skips this gate entirely.** Lite sets `PROJECT_RECAP_REACHABLE=false` and
|
|
102
102
|
does not resolve recap intent, inspect recap runs, invoke `oat-explainer-kit`,
|
|
@@ -125,7 +125,8 @@ On completion, OAT treats archive handling as an explicit closeout choice:
|
|
|
125
125
|
- When archiving is disabled or declined, durable projects remain at their
|
|
126
126
|
active path. Synced completion still finalizes and pushes the project ref,
|
|
127
127
|
commits the discovery record as `complete`, retains the checkout and ref, and
|
|
128
|
-
|
|
128
|
+
keeps any recap governed by its manifest and package verification without a
|
|
129
|
+
separate closeout evidence push.
|
|
129
130
|
- For a synced project, closeout first finalizes the project artifacts and
|
|
130
131
|
pushes them to `refs/oat/projects/<project>`. Archive then requires a clean,
|
|
131
132
|
fully pushed checkout; copies it without the `.git` pointer or `reviews/`;
|