@open-agent-toolkit/cli 0.2.25 → 0.2.27
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 +156 -0
- package/assets/docs/cli-utilities/configuration.md +42 -11
- package/assets/docs/contributing/explainer-kit-verification.md +125 -0
- package/assets/docs/contributing/index.md +1 -0
- package/assets/docs/reference/troubleshooting.md +47 -0
- package/assets/docs/workflows/projects/artifacts.md +24 -6
- package/assets/docs/workflows/projects/dispatch-ceiling.md +67 -16
- package/assets/docs/workflows/skills/explainer-kit-providers.md +144 -0
- package/assets/docs/workflows/skills/explainer-kit.md +121 -69
- package/assets/docs/workflows/skills/index.md +1 -0
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/explainer-kit/SKILL.md +18 -3
- package/assets/skills/explainer-kit/recipes/project-recap.json +43 -16
- package/assets/skills/explainer-kit/references/contracts.md +167 -20
- package/assets/skills/explainer-kit/references/golden-conformance.md +80 -0
- package/assets/skills/explainer-kit/references/visual-authoring.md +92 -0
- package/assets/skills/explainer-kit/references/visual-review.md +57 -0
- package/assets/skills/explainer-kit/schemas/author-request.v2.schema.json +172 -1
- package/assets/skills/explainer-kit/schemas/build-record.schema.json +7 -1
- package/assets/skills/explainer-kit/schemas/fact-base.schema.json +38 -2
- package/assets/skills/explainer-kit/schemas/manifest.schema.json +25 -1
- package/assets/skills/explainer-kit/schemas/run-request.schema.json +4 -0
- package/assets/skills/explainer-kit/schemas/set-plan.v1.schema.json +149 -0
- package/assets/skills/explainer-kit/schemas/visual-review-request.v1.schema.json +117 -0
- package/assets/skills/explainer-kit/schemas/visual-review-result.v1.schema.json +80 -0
- package/assets/skills/explainer-kit/scripts/lib/browser-runtime.mjs +148 -4
- package/assets/skills/explainer-kit/scripts/lib/catalog.mjs +243 -0
- package/assets/skills/explainer-kit/scripts/lib/contracts.mjs +586 -8
- package/assets/skills/explainer-kit/scripts/lib/diagram.mjs +285 -8
- package/assets/skills/explainer-kit/scripts/lib/durability.mjs +35 -0
- package/assets/skills/explainer-kit/scripts/lib/fact-base.mjs +144 -8
- package/assets/skills/explainer-kit/scripts/lib/package-coverage.mjs +379 -0
- package/assets/skills/explainer-kit/scripts/lib/png.mjs +287 -0
- package/assets/skills/explainer-kit/scripts/lib/qa.mjs +280 -8
- package/assets/skills/explainer-kit/scripts/lib/recipes.mjs +132 -3
- package/assets/skills/explainer-kit/scripts/lib/records.mjs +513 -21
- package/assets/skills/explainer-kit/scripts/lib/render.mjs +67 -3
- package/assets/skills/explainer-kit/scripts/lib/s3-static.mjs +43 -1
- package/assets/skills/explainer-kit/scripts/lib/set-plan.mjs +208 -0
- package/assets/skills/explainer-kit/scripts/lib/source-backlinks.mjs +218 -0
- package/assets/skills/explainer-kit/scripts/lib/visual-review.mjs +380 -0
- package/assets/skills/explainer-kit/scripts/render-qa.mjs +48 -10
- package/assets/skills/explainer-kit/scripts/run.mjs +859 -134
- package/assets/skills/oat-explainer-kit/SKILL.md +40 -12
- package/assets/skills/oat-explainer-kit/references/author-callback.md +12 -10
- package/assets/skills/oat-explainer-kit/references/lifecycle-contract.md +40 -2
- package/assets/skills/oat-explainer-kit/references/visual-review-callback.md +72 -0
- package/assets/skills/oat-explainer-kit/scripts/bind-project-sources.mjs +167 -5
- package/assets/skills/oat-explainer-kit/scripts/finalize-tracked-run.mjs +92 -5
- package/assets/skills/oat-explainer-kit/scripts/run.mjs +324 -2
- package/assets/skills/oat-project-autonomous/references/gate-inventory.md +1 -1
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +1 -1
- package/assets/skills/oat-project-implement/SKILL.md +9 -11
- package/assets/skills/oat-project-implement/references/dispatch-and-dry-run.md +18 -9
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +1 -1
- package/assets/skills/oat-project-implement/references/phase-execution.md +13 -4
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +1 -1
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +1 -1
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +27 -3
- package/dist/commands/project/archive/archive-utils.d.ts +1 -0
- package/dist/commands/project/archive/archive-utils.d.ts.map +1 -1
- package/dist/commands/project/archive/archive-utils.js +109 -42
- package/dist/commands/project/archive/explainer-package-coverage.d.ts +14 -0
- package/dist/commands/project/archive/explainer-package-coverage.d.ts.map +1 -0
- package/dist/commands/project/archive/explainer-package-coverage.js +27 -0
- package/dist/commands/project/archive/explainer-source-backlinks.d.ts +18 -0
- package/dist/commands/project/archive/explainer-source-backlinks.d.ts.map +1 -0
- package/dist/commands/project/archive/explainer-source-backlinks.js +27 -0
- package/dist/commands/project/archive/push-runner.d.ts +2 -1
- package/dist/commands/project/archive/push-runner.d.ts.map +1 -1
- package/dist/commands/project/archive/push-runner.js +5 -1
- package/dist/commands/project/dispatch-ceiling/index.d.ts.map +1 -1
- package/dist/commands/project/dispatch-ceiling/index.js +90 -0
- package/dist/config/dispatch-notices.d.ts +8 -0
- package/dist/config/dispatch-notices.d.ts.map +1 -0
- package/dist/config/dispatch-notices.js +79 -0
- package/dist/config/dispatch-policy-options.d.ts +2 -0
- package/dist/config/dispatch-policy-options.d.ts.map +1 -1
- package/dist/config/dispatch-policy-options.js +14 -2
- package/dist/providers/identity/dispatch-report.d.ts +17 -0
- package/dist/providers/identity/dispatch-report.d.ts.map +1 -1
- package/dist/providers/identity/dispatch-report.js +30 -0
- package/dist/release/public-package-contract.d.ts +6 -0
- package/dist/release/public-package-contract.d.ts.map +1 -1
- package/dist/release/public-package-contract.js +75 -0
- package/package.json +2 -2
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# NOTICES
|
|
2
|
+
|
|
3
|
+
This file records attribution for externally-sourced prose incorporated
|
|
4
|
+
into this repository. When you adapt or lift prose from an external
|
|
5
|
+
project into a skill, template, or doc, add an entry here — do not
|
|
6
|
+
add attribution footers to the skill files themselves.
|
|
7
|
+
|
|
8
|
+
## Obra Superpowers
|
|
9
|
+
|
|
10
|
+
**Source:** https://github.com/obra/superpowers
|
|
11
|
+
**License:** MIT
|
|
12
|
+
**Version referenced:** 5.0.7
|
|
13
|
+
|
|
14
|
+
### `brainstorming` skill
|
|
15
|
+
|
|
16
|
+
Source file: `skills/brainstorming/SKILL.md`
|
|
17
|
+
|
|
18
|
+
Passages adapted or lifted verbatim into OAT:
|
|
19
|
+
|
|
20
|
+
- "Exploring approaches" (4 lines) — used in `oat-project-design` Component 3.5 (approach reaffirmation)
|
|
21
|
+
- "Presenting the design" (5 lines) — used in `oat-project-design` Component 4 (section iterator)
|
|
22
|
+
- "Design for isolation and clarity" (4 lines) — used as a principle in `oat-project-design`
|
|
23
|
+
- Self-review four-check template — used in `oat-project-design` Component 6
|
|
24
|
+
- User-review gate phrasing — used in `oat-project-design` Component 7
|
|
25
|
+
|
|
26
|
+
Consumer OAT skills: `oat-project-design`, `oat-project-quick-start`
|
|
27
|
+
(via lightweight-design mode choice inheriting the same prose).
|
|
28
|
+
|
|
29
|
+
### Upstream MIT license
|
|
30
|
+
|
|
31
|
+
```text
|
|
32
|
+
MIT License
|
|
33
|
+
|
|
34
|
+
Copyright (c) 2025 Jesse Vincent
|
|
35
|
+
|
|
36
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
37
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
38
|
+
in the Software without restriction, including without limitation the rights
|
|
39
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
40
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
41
|
+
furnished to do so, subject to the following conditions:
|
|
42
|
+
|
|
43
|
+
The above copyright notice and this permission notice shall be included in all
|
|
44
|
+
copies or substantial portions of the Software.
|
|
45
|
+
|
|
46
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
47
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
48
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
49
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
50
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
51
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
52
|
+
SOFTWARE.
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### `brainstorming` skill — visual companion
|
|
56
|
+
|
|
57
|
+
Source files: `skills/brainstorming/scripts/{server.cjs, start-server.sh,
|
|
58
|
+
stop-server.sh, frame-template.html, helper.js}` and
|
|
59
|
+
`skills/brainstorming/visual-companion.md`.
|
|
60
|
+
|
|
61
|
+
Files lifted into OAT (under `.agents/skills/oat-brainstorm/`):
|
|
62
|
+
|
|
63
|
+
- `scripts/server.cjs`, `scripts/stop-server.sh`, `scripts/frame-template.html`,
|
|
64
|
+
`scripts/helper.js` — verbatim from upstream.
|
|
65
|
+
- `scripts/start-server.sh` — verbatim except for default persistence-path
|
|
66
|
+
changes (`.superpowers/brainstorm/` → OAT-managed prefixes:
|
|
67
|
+
`<project>/.oat/brainstorm/`, `<repo-root>/.oat/brainstorm/`,
|
|
68
|
+
`~/.oat/brainstorm/`).
|
|
69
|
+
- `references/visual-companion.md` — adapted prose: persistence paths and
|
|
70
|
+
example invocations updated to OAT conventions.
|
|
71
|
+
|
|
72
|
+
Consumer OAT skills: `oat-brainstorm`.
|
|
73
|
+
|
|
74
|
+
## shadcn/improve
|
|
75
|
+
|
|
76
|
+
**Source:** https://github.com/shadcn/improve/tree/main/skills/improve
|
|
77
|
+
**License:** MIT
|
|
78
|
+
**Version referenced:** `main` (retrieved 2026-07-12)
|
|
79
|
+
|
|
80
|
+
### `improve` skill
|
|
81
|
+
|
|
82
|
+
Source files: `skills/improve/SKILL.md` and
|
|
83
|
+
`skills/improve/references/{audit-playbook.md,closing-the-loop.md,plan-template.md}`.
|
|
84
|
+
|
|
85
|
+
Files copied into `.agents/skills/oat-repo-improve/`; the skill identifier,
|
|
86
|
+
heading, invocation examples, and generated-plan attribution were renamed for
|
|
87
|
+
the OAT repository namespace.
|
|
88
|
+
|
|
89
|
+
### Upstream MIT license
|
|
90
|
+
|
|
91
|
+
```text
|
|
92
|
+
MIT License
|
|
93
|
+
|
|
94
|
+
Copyright (c) 2026 shadcn
|
|
95
|
+
|
|
96
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
97
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
98
|
+
in the Software without restriction, including without limitation the rights
|
|
99
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
100
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
101
|
+
furnished to do so, subject to the following conditions:
|
|
102
|
+
|
|
103
|
+
The above copyright notice and this permission notice shall be included in all
|
|
104
|
+
copies or substantial portions of the Software.
|
|
105
|
+
|
|
106
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
107
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
108
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
109
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
110
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
111
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
112
|
+
SOFTWARE.
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## visual-explainer
|
|
116
|
+
|
|
117
|
+
**Source:** https://github.com/nicobailon/visual-explainer
|
|
118
|
+
**License:** MIT
|
|
119
|
+
**Version referenced:** 0.8.1
|
|
120
|
+
|
|
121
|
+
### Explainer templates and render QA
|
|
122
|
+
|
|
123
|
+
Visual presentation and QA patterns were adapted into
|
|
124
|
+
`.agents/skills/explainer-kit/`, including self-contained HTML shells,
|
|
125
|
+
responsive navigation, slide-deck interaction and print behavior, overflow
|
|
126
|
+
containment, reduced-motion handling, and structural/render checks.
|
|
127
|
+
|
|
128
|
+
The OAT implementation replaces upstream branding, destinations, invocation
|
|
129
|
+
commands, and example content with destination-neutral contracts, themes,
|
|
130
|
+
templates, and fixtures. Consumer OAT skill: `explainer-kit`.
|
|
131
|
+
|
|
132
|
+
### Upstream MIT license
|
|
133
|
+
|
|
134
|
+
```text
|
|
135
|
+
MIT License
|
|
136
|
+
|
|
137
|
+
Copyright (c) 2025 Nico Bailon
|
|
138
|
+
|
|
139
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
140
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
141
|
+
in the Software without restriction, including without limitation the rights
|
|
142
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
143
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
144
|
+
furnished to do so, subject to the following conditions:
|
|
145
|
+
|
|
146
|
+
The above copyright notice and this permission notice shall be included in all
|
|
147
|
+
copies or substantial portions of the Software.
|
|
148
|
+
|
|
149
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
150
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
151
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
152
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
153
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
154
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
155
|
+
SOFTWARE.
|
|
156
|
+
```
|
|
@@ -308,6 +308,15 @@ Adoption fills missing provider/tier cells and preserves explicit existing
|
|
|
308
308
|
values. Planning shows the complete bundled recommendation before asking for
|
|
309
309
|
this scope, then rechecks the effective ladder. If explicit cells still leave
|
|
310
310
|
the ladder incomplete, readiness blocks; OAT does not overwrite them.
|
|
311
|
+
`workflow.dispatchCeiling.recommendationVersion` describes only the bundled
|
|
312
|
+
recommendation that was adopted. Dispatch targets, structured notices, and
|
|
313
|
+
runtime disclosure come from the effective ladder after explicit cells have
|
|
314
|
+
been preserved.
|
|
315
|
+
|
|
316
|
+
A recommended Fable target may require model access from the executing
|
|
317
|
+
provider. The adopting organization is responsible for confirming its
|
|
318
|
+
applicable retention policy. OAT does not determine model access or
|
|
319
|
+
organizational retention eligibility.
|
|
311
320
|
|
|
312
321
|
Scope determines ownership and Codex/Cursor materialization:
|
|
313
322
|
|
|
@@ -366,13 +375,13 @@ tiers are trimmed for readability.
|
|
|
366
375
|
|
|
367
376
|
The bundled recommendation covers 13 Codex model/effort combinations: Luna and
|
|
368
377
|
Terra at `low`, `medium`, `high`, and `xhigh`, plus Sol at those efforts and
|
|
369
|
-
`max`. Claude covers `haiku`, `sonnet`, `opus`, and `fable`.
|
|
370
|
-
candidates across four tiers, drawn from a materialization
|
|
371
|
-
|
|
372
|
-
Fable), GPT, and Grok; the two figures differ because some
|
|
373
|
-
stay materializable without being recommended. An explicit
|
|
374
|
-
each flat ladder ID to a separate bracket-form frontmatter
|
|
375
|
-
and skills never derive or normalize either form.
|
|
378
|
+
`max`. Claude covers `haiku`, `sonnet`, `opus`, and `fable`. The recommendation
|
|
379
|
+
carries 14 Cursor candidates across four tiers, drawn from a materialization
|
|
380
|
+
catalogue with 18 catalogued multi-family flat IDs spanning Composer, Claude
|
|
381
|
+
(Sonnet, Opus, and Fable), GPT, and Grok; the two figures differ because some
|
|
382
|
+
approved mappings stay materializable without being recommended. An explicit
|
|
383
|
+
mapping connects each flat ladder ID to a separate bracket-form frontmatter
|
|
384
|
+
model; configuration and skills never derive or normalize either form.
|
|
376
385
|
|
|
377
386
|
The corresponding pinned Codex variant catalogue includes
|
|
378
387
|
`gpt-5.6-luna-high`, `gpt-5.6-terra-xhigh`, `gpt-5.6-sol-high`, and
|
|
@@ -432,6 +441,10 @@ oat project dispatch-ceiling resolve \
|
|
|
432
441
|
--ceiling-tier high \
|
|
433
442
|
--candidate-model gpt-5.6-terra \
|
|
434
443
|
--candidate-effort medium \
|
|
444
|
+
--task-class default-implementation \
|
|
445
|
+
--task-effort medium \
|
|
446
|
+
--report-scope p02 \
|
|
447
|
+
--report-action implementation \
|
|
435
448
|
--json
|
|
436
449
|
|
|
437
450
|
oat project dispatch-ceiling resolve \
|
|
@@ -439,6 +452,9 @@ oat project dispatch-ceiling resolve \
|
|
|
439
452
|
--role implementer \
|
|
440
453
|
--ceiling-tier high \
|
|
441
454
|
--candidate-model sonnet \
|
|
455
|
+
--task-class default-implementation \
|
|
456
|
+
--report-scope p02 \
|
|
457
|
+
--report-action implementation \
|
|
442
458
|
--json
|
|
443
459
|
|
|
444
460
|
oat project dispatch-ceiling resolve \
|
|
@@ -446,19 +462,34 @@ oat project dispatch-ceiling resolve \
|
|
|
446
462
|
--role implementer \
|
|
447
463
|
--ceiling-tier high \
|
|
448
464
|
--candidate-model gpt-5.6-sol-high \
|
|
465
|
+
--task-class default-implementation \
|
|
466
|
+
--report-scope p02 \
|
|
467
|
+
--report-action implementation \
|
|
449
468
|
--json
|
|
450
469
|
```
|
|
451
470
|
|
|
471
|
+
Use the same classification flags and `--report-action fix` for bounded fixes.
|
|
472
|
+
Reviewer routes carry neither `--task-class` nor `--task-effort`; the CLI
|
|
473
|
+
rejects classification flags for reviewers. Before any implementation, fix, or
|
|
474
|
+
reviewer launch, display `dispatchReport.notices` and the formatted report. The
|
|
475
|
+
effective resolver target—not the recommendation version—owns runtime
|
|
476
|
+
disclosure.
|
|
477
|
+
|
|
452
478
|
`--ceiling-tier` is invocation-only. It accepts `economy`, `balanced`, `high`,
|
|
453
479
|
or `frontier`, overrides layered active-policy ceilings for that call, and never
|
|
454
480
|
writes user, shared, local, or project configuration. JSON reports top-level
|
|
455
481
|
`source: invocation`; `providers.<provider>.cellSource` still identifies the
|
|
456
482
|
config layer that owns the selected candidate.
|
|
457
483
|
|
|
458
|
-
The resolver fails closed when a candidate is
|
|
459
|
-
ambiguous, malformed, or cannot compile exact provider controls.
|
|
460
|
-
|
|
461
|
-
|
|
484
|
+
The resolver fails closed when a requested candidate is above the maximum,
|
|
485
|
+
ambiguous, malformed, or cannot compile exact provider controls. Omitting an
|
|
486
|
+
exact candidate from a managed named-cap implementation or fix currently
|
|
487
|
+
preserves compatibility by resolving successfully at the cap; with report
|
|
488
|
+
context, human and JSON output include the
|
|
489
|
+
`managed-capped-selection-skipped` warning. Callers must surface that warning
|
|
490
|
+
and select an exact candidate before launch. `--preferred` remains
|
|
491
|
+
compatibility behavior for legacy scalar ceilings and managed `Uncapped`; it is
|
|
492
|
+
not the exact managed phase-agent path.
|
|
462
493
|
|
|
463
494
|
### Provider enforcement and materialization
|
|
464
495
|
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Verifying Explainer Kit
|
|
3
|
+
description: 'Maintainer runbook for semantic golden cases, temporary real-Chromium evidence, and release validation.'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Verifying Explainer Kit
|
|
7
|
+
|
|
8
|
+
Explainer Kit uses portable behavioral goldens and a real-browser release gate.
|
|
9
|
+
The goal is not pixel identity: output may change markup, spacing, and
|
|
10
|
+
composition when it preserves the same meaning, topology, interactions, and
|
|
11
|
+
evidence quality.
|
|
12
|
+
|
|
13
|
+
## Golden cases
|
|
14
|
+
|
|
15
|
+
The suite under
|
|
16
|
+
`.agents/skills/explainer-kit/tests/fixtures/golden/` contains three
|
|
17
|
+
portable semantic cases:
|
|
18
|
+
|
|
19
|
+
| Case | What it proves |
|
|
20
|
+
| ------------------------------ | ---------------------------------------------------------- |
|
|
21
|
+
| `simple` | Viewport-sized lead evidence and a cohesive baseline recap |
|
|
22
|
+
| `non-linear` | Exact branch, fan-in, and cycle preservation |
|
|
23
|
+
| `explainer-authoring-redesign` | Archive-only rebuild from a dense completed project record |
|
|
24
|
+
|
|
25
|
+
Every case retains only its descriptor, source input, and content-addressed
|
|
26
|
+
source record. The three cases share one rubric. Generated artifacts, browser
|
|
27
|
+
evidence, screenshots, manifests, catalogs, and review results stay in a
|
|
28
|
+
temporary test directory and are never committed. Paths are
|
|
29
|
+
repository-relative; machine roots, home-relative paths, `file://` URLs,
|
|
30
|
+
Windows drive paths, and UNC paths are rejected.
|
|
31
|
+
|
|
32
|
+
## Prerequisites
|
|
33
|
+
|
|
34
|
+
- Install workspace dependencies.
|
|
35
|
+
- Ensure the repository-supported Chromium runtime is installed and launchable.
|
|
36
|
+
- Run from the repository root.
|
|
37
|
+
|
|
38
|
+
The end-to-end benchmarks require an actual launched Chromium session. A
|
|
39
|
+
deterministic fixture session is valid only for bounded unit/integration tests
|
|
40
|
+
and cannot satisfy a golden production path.
|
|
41
|
+
|
|
42
|
+
## Run the golden suite
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
node --test \
|
|
46
|
+
.agents/skills/explainer-kit/tests/golden-conformance.test.mjs
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
A passing run proves:
|
|
50
|
+
|
|
51
|
+
- one planner-owned hub, architecture view, and deck;
|
|
52
|
+
- source and terminology cohesion;
|
|
53
|
+
- exact topology and catalog parity;
|
|
54
|
+
- mobile, tablet, and desktop Chromium evidence;
|
|
55
|
+
- one independent critic invocation; and
|
|
56
|
+
- a passing terminal review without correction.
|
|
57
|
+
|
|
58
|
+
The focused integration suites below separately exercise the one-correction
|
|
59
|
+
ceiling.
|
|
60
|
+
|
|
61
|
+
The suite recomputes semantic-input hashes, grounds every claim in retained
|
|
62
|
+
source evidence, and evaluates the shared rubric against live runtime output.
|
|
63
|
+
A prose claim or status label without runtime proof does not pass.
|
|
64
|
+
|
|
65
|
+
## Inspect generated evidence
|
|
66
|
+
|
|
67
|
+
The suite materializes each case's runtime package under its temporary working
|
|
68
|
+
directory, validates it, and removes it at test completion. Add a local
|
|
69
|
+
debugger breakpoint or temporarily disable cleanup when diagnosing a failure;
|
|
70
|
+
do not add generated runtime output to the fixture directories.
|
|
71
|
+
|
|
72
|
+
## Focused integrity suites
|
|
73
|
+
|
|
74
|
+
Use these when changing browser identity, immutable evidence, resume, or archive
|
|
75
|
+
contracts:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
node --test \
|
|
79
|
+
.agents/skills/explainer-kit/tests/records.test.mjs \
|
|
80
|
+
.agents/skills/explainer-kit/tests/run.integration.test.mjs
|
|
81
|
+
|
|
82
|
+
node --test \
|
|
83
|
+
.agents/skills/explainer-kit/tests/browser-runtime.test.mjs \
|
|
84
|
+
.agents/skills/explainer-kit/tests/qa.test.mjs \
|
|
85
|
+
.agents/skills/explainer-kit/tests/contracts.test.mjs \
|
|
86
|
+
.agents/skills/explainer-kit/tests/durability.test.mjs \
|
|
87
|
+
.agents/skills/explainer-kit/tests/rebuildability.test.mjs
|
|
88
|
+
|
|
89
|
+
pnpm --filter @open-agent-toolkit/cli exec vitest run \
|
|
90
|
+
src/commands/project/archive/archive-utils.test.ts \
|
|
91
|
+
src/release/public-package-contract.test.ts
|
|
92
|
+
|
|
93
|
+
node --test tools/smoke/explainer-kit/*.test.mjs
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Release gate
|
|
97
|
+
|
|
98
|
+
The required publishable-package gate is:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
pnpm release:validate
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
It validates all five lockstep public package tarballs and then runs the bounded
|
|
105
|
+
curated-style/template matrix in real Chromium. The visual gate retains 65
|
|
106
|
+
machine-readable viewport, clipping, motion, keyboard, no-JavaScript, and print
|
|
107
|
+
measurements. Missing Chromium or untrusted retained evidence fails closed.
|
|
108
|
+
|
|
109
|
+
For the full repository closeout, also run the standard checks documented in
|
|
110
|
+
the root `AGENTS.md`:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
pnpm check
|
|
114
|
+
pnpm type-check
|
|
115
|
+
pnpm test
|
|
116
|
+
pnpm build
|
|
117
|
+
pnpm lint
|
|
118
|
+
pnpm format
|
|
119
|
+
pnpm build:docs
|
|
120
|
+
git diff --check
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Do not treat an isolated transient timeout as a product pass or failure without
|
|
124
|
+
reproducing the failing test. Preserve the exact-head successful rerun evidence
|
|
125
|
+
used for release closure.
|
|
@@ -17,4 +17,5 @@ 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.
|
|
20
21
|
- [Verifying Cursor Pins](verifying-cursor-pins.md) - Runbook for probe-verifying a Cursor model pin before shipping it.
|
|
@@ -113,9 +113,56 @@ oat tools has <pack> --scope user
|
|
|
113
113
|
- Reconcile `state.md`, `plan.md` review table, and `implementation.md`.
|
|
114
114
|
- Ensure phase/review status has been updated after reviews and fix cycles.
|
|
115
115
|
|
|
116
|
+
## An Explainer Kit recap ends as `built-needs-review`
|
|
117
|
+
|
|
118
|
+
`built-needs-review` means the required unattended visual-review chain did not
|
|
119
|
+
reach a valid `pass`. The run retains available output for diagnosis, but OAT
|
|
120
|
+
will not finalize, archive, attest, publish, or push it as a successful recap.
|
|
121
|
+
Do not bypass the review gate by copying the package into a durable location.
|
|
122
|
+
|
|
123
|
+
Inspect:
|
|
124
|
+
|
|
125
|
+
1. `build-record.json` and `manifest.json` for the terminal outcome and warning.
|
|
126
|
+
2. `qa/browser/` for all required mobile, tablet, and desktop PNG/metrics pairs.
|
|
127
|
+
3. `qa/visual-review/attempt-*/request.json` and `result.json` for request
|
|
128
|
+
binding, critic disposition, and findings.
|
|
129
|
+
4. `qa/visual-review/revision.json` when a correction was requested.
|
|
130
|
+
5. Adapter logs for missing or invalid `browserSession`, `visualCritic`, or
|
|
131
|
+
correction-provider modules.
|
|
132
|
+
|
|
133
|
+
Common causes include unavailable Chromium, a fixture or unbranded session,
|
|
134
|
+
missing screenshots, invalid decoded PNG dimensions, runtime/capture identity
|
|
135
|
+
drift, critic exceptions, evidence mutation, `fail`, and an unresolved
|
|
136
|
+
correction. Fix the provider or artifact problem and rebuild the recap; partial
|
|
137
|
+
evidence is diagnostic only.
|
|
138
|
+
|
|
139
|
+
See
|
|
140
|
+
[Explainer Provider Integration](../workflows/skills/explainer-kit-providers.md)
|
|
141
|
+
for the trusted-session and critic contracts.
|
|
142
|
+
|
|
143
|
+
## Explainer Kit resume fails with `E_APPROVAL_RESUME`
|
|
144
|
+
|
|
145
|
+
Interactive resume is same-request only. Keep the opaque `ekrt2` token returned
|
|
146
|
+
as `approval.resumeToken` outside the package and provide it as
|
|
147
|
+
`reviewedSource.resumeToken` with the complete original request.
|
|
148
|
+
|
|
149
|
+
The error is expected when:
|
|
150
|
+
|
|
151
|
+
- the token is missing, malformed, or not `ekrt2`;
|
|
152
|
+
- the configured output root or retained run root moved;
|
|
153
|
+
- `run-request.json` or a retained set-plan record changed;
|
|
154
|
+
- the current request differs in source binding, recipe, mode, theme, render
|
|
155
|
+
strategy, privacy, public URL, durability, or publish destination; or
|
|
156
|
+
- the package contains a legacy `ekrt1` token.
|
|
157
|
+
|
|
158
|
+
Do not edit retained files or weaken the current request to force a match.
|
|
159
|
+
Restore the exact original request and package bytes. Legacy paused runs cannot
|
|
160
|
+
be upgraded in place; restart them to receive an authenticated `ekrt2` token.
|
|
161
|
+
|
|
116
162
|
## Reference artifacts
|
|
117
163
|
|
|
118
164
|
- `.oat/projects/<scope>/<project>/implementation.md`
|
|
119
165
|
- `.oat/projects/<scope>/<project>/reviews/`
|
|
166
|
+
- `.oat/projects/<scope>/<project>/explainers/<slug>/qa/`
|
|
120
167
|
- `packages/cli/src/commands/doctor/index.ts`
|
|
121
168
|
- `packages/cli/src/commands/instructions/`
|
|
@@ -57,12 +57,30 @@ The archive exports at most one selected recap package. It preserves structured
|
|
|
57
57
|
failure outcomes and successful intermediates, rejects an existing dated
|
|
58
58
|
destination, and requires the selected path to stay under the project's
|
|
59
59
|
`explainers/` directory with a `project-recap` manifest. Verification covers
|
|
60
|
-
the
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
60
|
+
the complete mode-aware package:
|
|
61
|
+
|
|
62
|
+
- privacy-safe request and content approval;
|
|
63
|
+
- fact-base JSON and Markdown;
|
|
64
|
+
- the five immutable set-plan records and authored drafts;
|
|
65
|
+
- declared author results and authored content;
|
|
66
|
+
- resolved theme and every built artifact;
|
|
67
|
+
- canonical mobile, tablet, and desktop screenshots;
|
|
68
|
+
- paired `browser-evidence/v2` metrics with launched Chromium name, version,
|
|
69
|
+
and capture identity;
|
|
70
|
+
- cohesion observations and each visual-review request/result; and
|
|
71
|
+
- the bounded revision record when a correction occurred.
|
|
72
|
+
|
|
73
|
+
Canonical object hashes identify normalized fact-base, theme, runtime, and
|
|
74
|
+
capture objects; `manifest.immutableHashes` independently covers serialized file
|
|
75
|
+
bytes. The archive requires one complete, internally consistent browser and
|
|
76
|
+
review chain for a successful unattended recap. Missing, stale, forged,
|
|
77
|
+
cross-record-mismatched, or tampered coverage fails before the active project is
|
|
78
|
+
deleted.
|
|
79
|
+
|
|
80
|
+
`built-needs-review` is a terminal review-gate outcome, not a non-durable
|
|
81
|
+
success. Its partial evidence remains available for diagnosis, but it cannot be
|
|
82
|
+
finalized, exported, attested, archived, or pushed. Review and rebuild the recap
|
|
83
|
+
to a passing visual-review outcome first.
|
|
66
84
|
|
|
67
85
|
Local-scope projects are not archived through this export path. Their explainer
|
|
68
86
|
packages inherit the local project's untracked posture and remain
|
|
@@ -63,6 +63,10 @@ Adoption fills missing provider/tier cells and records
|
|
|
63
63
|
existing cells. Planning shows the complete recommendation before asking which
|
|
64
64
|
scope should own it. If the resulting ladder is still missing or incomplete,
|
|
65
65
|
planning remains blocked rather than replacing the user's explicit values.
|
|
66
|
+
The recommendation version describes only the bundled recommendation. After
|
|
67
|
+
preserving existing cells, OAT resolves the effective ladder and uses that
|
|
68
|
+
effective result—not the recommendation version—for dispatch targets and
|
|
69
|
+
runtime disclosure.
|
|
66
70
|
|
|
67
71
|
### Upgrading to a newer recommendation version
|
|
68
72
|
|
|
@@ -91,6 +95,12 @@ does not compare the two rungs. Both models remain in the pin catalog and stay
|
|
|
91
95
|
available to a hand-edited ladder. An adopter still on the prior version keeps their existing
|
|
92
96
|
Cursor tiers untouched until they take one of the actions above.
|
|
93
97
|
|
|
98
|
+
The terminal Fable target may require model access from the executing provider.
|
|
99
|
+
The adopting organization is responsible for confirming its applicable
|
|
100
|
+
retention policy. OAT does not determine model access or organizational
|
|
101
|
+
retention eligibility; recommendation membership and catalogue presence are
|
|
102
|
+
configuration data, not an eligibility decision.
|
|
103
|
+
|
|
94
104
|
The terminal entries in that version are chosen, not incidental. Because the
|
|
95
105
|
final candidate in a tier is the target its implementation-phase self-review
|
|
96
106
|
pins, reordering a tier changes who reviews it even when the membership is
|
|
@@ -274,6 +284,10 @@ oat project dispatch-ceiling resolve \
|
|
|
274
284
|
--ceiling-tier high \
|
|
275
285
|
--candidate-model gpt-5.6-terra \
|
|
276
286
|
--candidate-effort medium \
|
|
287
|
+
--task-class default-implementation \
|
|
288
|
+
--task-effort medium \
|
|
289
|
+
--report-scope p02 \
|
|
290
|
+
--report-action implementation \
|
|
277
291
|
--json
|
|
278
292
|
|
|
279
293
|
# Claude: exact model argument
|
|
@@ -282,6 +296,9 @@ oat project dispatch-ceiling resolve \
|
|
|
282
296
|
--role implementer \
|
|
283
297
|
--ceiling-tier high \
|
|
284
298
|
--candidate-model sonnet \
|
|
299
|
+
--task-class default-implementation \
|
|
300
|
+
--report-scope p02 \
|
|
301
|
+
--report-action implementation \
|
|
285
302
|
--json
|
|
286
303
|
|
|
287
304
|
# Cursor: exact opaque configured string
|
|
@@ -290,9 +307,16 @@ oat project dispatch-ceiling resolve \
|
|
|
290
307
|
--role implementer \
|
|
291
308
|
--ceiling-tier high \
|
|
292
309
|
--candidate-model gpt-5.6-sol-high \
|
|
310
|
+
--task-class default-implementation \
|
|
311
|
+
--report-scope p02 \
|
|
312
|
+
--report-action implementation \
|
|
293
313
|
--json
|
|
294
314
|
```
|
|
295
315
|
|
|
316
|
+
Use the same classification flags and `--report-action fix` for a bounded fix.
|
|
317
|
+
Reviewer routes use neither `--task-class` nor `--task-effort`; the CLI rejects
|
|
318
|
+
classification flags for reviewers.
|
|
319
|
+
|
|
296
320
|
`--ceiling-tier` accepts `economy`, `balanced`, `high`, or `frontier`. It
|
|
297
321
|
overrides a layered active-policy ceiling for that resolver invocation only. It
|
|
298
322
|
does not modify user, shared, local, or project configuration.
|
|
@@ -306,10 +330,14 @@ Successful JSON reports:
|
|
|
306
330
|
`selection.requestedCandidate`
|
|
307
331
|
- the exact provider-specific `dispatchArgs`
|
|
308
332
|
|
|
309
|
-
The resolver rejects
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
333
|
+
The resolver rejects an above-ceiling candidate, an ambiguous route, malformed
|
|
334
|
+
ordering, a reviewer candidate request, or controls that cannot compile
|
|
335
|
+
exactly. For compatibility, omitting an exact candidate from a managed
|
|
336
|
+
named-cap implementation or fix still resolves successfully at the cap. When
|
|
337
|
+
report context is present, that path emits the coded
|
|
338
|
+
`managed-capped-selection-skipped` warning in human and JSON output. The root
|
|
339
|
+
must treat the warning as a dispatch-policy violation and select an exact
|
|
340
|
+
candidate before launch even though the command retains exit code `0`.
|
|
313
341
|
|
|
314
342
|
Implementer and fix resolution has two mutually exclusive selection branches:
|
|
315
343
|
|
|
@@ -411,20 +439,38 @@ write authority. See
|
|
|
411
439
|
|
|
412
440
|
Resolver calls that pass `--report-scope` and `--report-action` include a
|
|
413
441
|
`dispatchReport` object in JSON output. Consumers must require
|
|
414
|
-
`dispatchReport.schemaVersion: 1` before dispatch. The report keeps
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
| Report area | What it means
|
|
418
|
-
| ------------------------------------------------------------------- |
|
|
419
|
-
| `policy` | The resolved managed/inherit policy, its status, name, and source
|
|
420
|
-
| `selection.ceilingTier` / `selection.ceilingTarget` | The maximum allowed tier and its boundary target
|
|
421
|
-
| `selection.requestedCandidate` / `candidateTier` / `candidateIndex` | The exact candidate requested for this bounded task and its position
|
|
422
|
-
| `selection.
|
|
442
|
+
`dispatchReport.schemaVersion: 1` before dispatch. The report keeps these
|
|
443
|
+
concerns separate:
|
|
444
|
+
|
|
445
|
+
| Report area | What it means |
|
|
446
|
+
| ------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
|
|
447
|
+
| `policy` | The resolved managed/inherit policy, its status, name, and source |
|
|
448
|
+
| `selection.ceilingTier` / `selection.ceilingTarget` | The maximum allowed tier and its boundary target |
|
|
449
|
+
| `selection.requestedCandidate` / `candidateTier` / `candidateIndex` | The exact candidate requested for this bounded task and its position |
|
|
450
|
+
| `selection.preferredValue` | The legacy `--preferred` selection value, or `null` when that compatibility path was not used |
|
|
451
|
+
| `selection.exactSelectedTarget` / `route.target` | The compiled provider target and actual invocation route |
|
|
452
|
+
| `classification` | Caller-reported task class, applicable Codex preferred effort, and provenance source |
|
|
453
|
+
| `notices` | Ordered coded warnings and advisories derived from the effective dispatch context |
|
|
423
454
|
|
|
424
455
|
A named policy or ceiling is never a substitute for the requested candidate or
|
|
425
|
-
exact selected target.
|
|
426
|
-
|
|
427
|
-
|
|
456
|
+
exact selected target. Classification is provenance only: it records the
|
|
457
|
+
root's judgment but does not participate in candidate normalization or let OAT
|
|
458
|
+
judge whether that classification was correct. `requestedControls` records
|
|
459
|
+
what OAT put into the host payload. `configuredDefaults` records fallback
|
|
460
|
+
configuration and is explicitly not a runtime observation.
|
|
461
|
+
|
|
462
|
+
Managed named-cap implementation and fix reports can include two warning codes:
|
|
463
|
+
|
|
464
|
+
- `managed-capped-selection-skipped` means no exact candidate or legacy
|
|
465
|
+
preferred value was supplied, so compatibility behavior selected the cap.
|
|
466
|
+
- `managed-capped-classification-missing` means an exact candidate was supplied
|
|
467
|
+
without `--task-class`.
|
|
468
|
+
|
|
469
|
+
Both warnings preserve resolved status and exit code `0`. They do not apply to
|
|
470
|
+
policy-only preflight, reviewer, inherit, uncapped, unresolved, or
|
|
471
|
+
legacy-preferred routes. `terminal-reviewer-eligibility` is an advisory tied to
|
|
472
|
+
an effective Fable reviewer target, not proof of model access or organizational
|
|
473
|
+
retention eligibility.
|
|
428
474
|
|
|
429
475
|
`gateInvocation` is an immutable copy of configured gate controls.
|
|
430
476
|
`runtimeIdentity` is separate and stays `not-reported` until independently
|
|
@@ -446,6 +492,11 @@ when OAT can establish it; otherwise it is `unknown`. `provenance` is
|
|
|
446
492
|
`declared`, `observed`, `inferred`, or `unknown`. Selected model and effort axes
|
|
447
493
|
can remain exact even when runtime producer identity is not reported.
|
|
448
494
|
|
|
495
|
+
Before launching an implementation, fix, or reviewer, surface the structured
|
|
496
|
+
notices in `dispatchReport.notices` and render the report. Structured notices
|
|
497
|
+
and runtime disclosure use the effective target returned by that resolver call,
|
|
498
|
+
never a target inferred from the bundled recommendation version.
|
|
499
|
+
|
|
449
500
|
## Legacy Compatibility
|
|
450
501
|
|
|
451
502
|
The following remain readable during migration:
|