@open-agent-toolkit/cli 0.2.26 → 0.2.28
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/agents/oat-phase-implementer.md +312 -7
- 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/implementation-execution.md +151 -1
- 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-dispatch-subagents/SKILL.md +16 -3
- 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 +2 -2
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +2 -2
- package/assets/skills/oat-project-implement/SKILL.md +5 -4
- package/assets/skills/oat-project-implement/references/dispatch-and-dry-run.md +21 -0
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +2 -2
- package/assets/skills/oat-project-implement/references/phase-execution.md +359 -12
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +2 -2
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +2 -2
- package/assets/templates/state.md +7 -0
- 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/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
|
@@ -25,16 +25,16 @@ schema. Each recipe's own `version` selector remains `"1"`, so `{id, version}`
|
|
|
25
25
|
callers and manifest cross-checks are unaffected by the schema move.
|
|
26
26
|
|
|
27
27
|
A v2 recipe declares a **floor** — the artifacts every run must produce — plus
|
|
28
|
-
a licensed **expansion** set
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
a licensed **expansion** set. Most recipes retain one floor artifact.
|
|
29
|
+
Unattended `project-recap` is the exception: it plans and composes an adaptive
|
|
30
|
+
minimum set before any artifact author runs.
|
|
31
31
|
|
|
32
|
-
| Recipe | Use |
|
|
33
|
-
| ------------------- | ------------------------------------------------------ |
|
|
34
|
-
| `project-explainer` | Working explanation after project planning | one Markdown `hub`
|
|
35
|
-
| `project-recap` | Final record after implementation and final review |
|
|
36
|
-
| `program-recap` | Bird's-eye record of a multi-wave delivery program | one Markdown `hub`
|
|
37
|
-
| `engineer-tour` | Engineer-facing orientation to a codebase and its flow | one HTML-composed `explainer`
|
|
32
|
+
| Recipe | Use | Required floor |
|
|
33
|
+
| ------------------- | ------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------- |
|
|
34
|
+
| `project-explainer` | Working explanation after project planning | one Markdown `hub` covering architecture, decisions, risks, phases, and validation |
|
|
35
|
+
| `project-recap` | Final record after implementation and final review | HTML visual hub, architecture/system diagram, and deck governed by one set plan |
|
|
36
|
+
| `program-recap` | Bird's-eye record of a multi-wave delivery program | one Markdown `hub` covering the wave map, outcomes, convention evolution, aggregate numbers, and follow-up ledger |
|
|
37
|
+
| `engineer-tour` | Engineer-facing orientation to a codebase and its flow | one HTML-composed `explainer` covering orientation, architecture, execution flow, key code, and validation |
|
|
38
38
|
|
|
39
39
|
The OAT project lifecycle owns `project-explainer` and `project-recap`. Both
|
|
40
40
|
bind one project source set. The adapter binds `plan.md`, `design.md`, and
|
|
@@ -43,6 +43,18 @@ bind one project source set. The adapter binds `plan.md`, `design.md`, and
|
|
|
43
43
|
set for `program-recap`; direct core callers can use `engineer-tour` without
|
|
44
44
|
adding an OAT dependency.
|
|
45
45
|
|
|
46
|
+
### Project recap modes
|
|
47
|
+
|
|
48
|
+
Project recaps default to `recapMode: artistic`. This mode uses the shared set
|
|
49
|
+
plan and provider-neutral author seam to compose the required HTML hub,
|
|
50
|
+
architecture view, and deck.
|
|
51
|
+
|
|
52
|
+
`recapMode: deterministic-markdown` is an explicit fallback for callers that
|
|
53
|
+
need deterministic output. It preserves the same planned artifact portfolio and
|
|
54
|
+
cardinality rather than collapsing the recap to one file. The runtime never
|
|
55
|
+
switches modes after an artistic author failure: changing modes requires a new
|
|
56
|
+
request, and a failed artistic run remains failed.
|
|
57
|
+
|
|
46
58
|
### Expansion profiles
|
|
47
59
|
|
|
48
60
|
Each recipe declares the expansion it licenses as a list of profiles. A profile
|
|
@@ -51,18 +63,17 @@ artifact `type`, authoring path, brief, optional shell, and a mandatory
|
|
|
51
63
|
`maxCount`. Every recipe also carries a mandatory `expansion.limits.maxArtifacts`
|
|
52
64
|
that caps the whole expansion set; floor artifacts do not count against it.
|
|
53
65
|
|
|
54
|
-
| Recipe | Profiles (max per profile)
|
|
55
|
-
| ------------------- |
|
|
56
|
-
| `project-recap` | `
|
|
57
|
-
| `program-recap` | `supporting-diagram` 3, `project-page` 12
|
|
58
|
-
| `project-explainer` | `supporting-diagram` 4
|
|
59
|
-
| `engineer-tour` | `supporting-diagram` 4
|
|
66
|
+
| Recipe | Profiles (max per profile) | `maxArtifacts` |
|
|
67
|
+
| ------------------- | ------------------------------------------------ | -------------- |
|
|
68
|
+
| `project-recap` | `status-view` 1, `rollout-view` 1, `deep-dive` 3 | 5 |
|
|
69
|
+
| `program-recap` | `supporting-diagram` 3, `project-page` 12 | 12 |
|
|
70
|
+
| `project-explainer` | `supporting-diagram` 4 | 4 |
|
|
71
|
+
| `engineer-tour` | `supporting-diagram` 4 | 4 |
|
|
60
72
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
the frozen `manifest/v1` enum
|
|
65
|
-
introducing a new type.
|
|
73
|
+
For project recaps, optional status and rollout views require matching
|
|
74
|
+
source-backed justifications, while `deep-dive` remains a Markdown
|
|
75
|
+
`explainer`. Other recipes retain their recipe-owned diagram and project-page
|
|
76
|
+
profiles. Every declared type stays inside the frozen `manifest/v1` enum.
|
|
66
77
|
|
|
67
78
|
## Content authoring and review
|
|
68
79
|
|
|
@@ -105,50 +116,45 @@ author request, so an unattended author receives everything it needs in one
|
|
|
105
116
|
payload. Changing a brief changes output expectations with no contract
|
|
106
117
|
migration.
|
|
107
118
|
|
|
108
|
-
### The author
|
|
119
|
+
### The planning and author seams
|
|
109
120
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
121
|
+
Before authoring, one provider-neutral `planSet` callback produces the complete
|
|
122
|
+
shared terminology, status, and number ledger plus the adaptive artifact
|
|
123
|
+
portfolio. Every run also requires one provider-neutral author callback, in
|
|
124
|
+
**both** modes — there is no synthetic content model to fall back on. A run
|
|
125
|
+
without one fails with `E_AUTHOR_REQUIRED`.
|
|
113
126
|
|
|
114
|
-
|
|
115
|
-
`--author-module`. The OAT adapter accepts either an in-process `author` or an
|
|
116
|
-
`authorModulePath`, and rejects zero or two seams before it invokes the core.
|
|
117
|
-
Callback and module paths are transient and never persisted in the run request.
|
|
118
|
-
Validated results are retained under `source/author/` and authored content under
|
|
119
|
-
`source/content/<artifact>.md` or `.html`; both are covered by the run's
|
|
120
|
-
immutable hashes.
|
|
121
|
-
|
|
122
|
-
The core invokes the author once per artifact with an
|
|
127
|
+
The core invokes the author once per planned artifact with an
|
|
123
128
|
`explainer-kit.author-request/v2` payload carrying the artifact identity and
|
|
124
129
|
type, its authoring path, the inlined brief, the reconciled fact base, the
|
|
125
|
-
resolved theme, the shell source for artistic artifacts,
|
|
126
|
-
|
|
127
|
-
|
|
130
|
+
resolved theme, the shell source for artistic artifacts, the immutable set
|
|
131
|
+
context, the matching planned artifact, and bundled medium-specific authoring
|
|
132
|
+
guidance. The installed skill is the complete unattended baseline; optional
|
|
133
|
+
provider capabilities can enhance composition but are not required. The core
|
|
134
|
+
accepts only a schema-valid `explainer-kit.author-result/v2` containing exactly one of
|
|
128
135
|
`content.markdown` or `content.html` plus non-secret provenance. Authored
|
|
129
136
|
content is still checked for excessive verbatim overlap with the fact base.
|
|
130
137
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
`{id, profileId, rationale}`. Proposals deliberately cannot carry an authoring
|
|
136
|
-
path, brief, or shell — those are read from the referenced profile, so policy
|
|
137
|
-
stays recipe-owned.
|
|
138
|
+
Direct callbacks and module entry points are first-class but transient: they
|
|
139
|
+
never enter retained request contracts. See
|
|
140
|
+
[Explainer Provider Integration](explainer-kit-providers.md) for the exact
|
|
141
|
+
planner, author, browser-session, and visual-critic boundaries.
|
|
138
142
|
|
|
139
|
-
|
|
140
|
-
caps, then issues one author request per accepted proposal. The two outcomes are
|
|
141
|
-
distinct on purpose:
|
|
143
|
+
### Planner-owned adaptive sets
|
|
142
144
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
145
|
+
The set planner finalizes required and optional artifacts before authoring.
|
|
146
|
+
Project recaps always contain a hub, architecture/system diagram, and deck;
|
|
147
|
+
the planner may add only recipe-licensed optional views with a source-backed
|
|
148
|
+
justification. Recipe and per-profile limits still bound the portfolio.
|
|
149
|
+
Undeclared sources, conflicting ledger values, duplicate IDs, and unjustified
|
|
150
|
+
optionals fail validation. Author results cannot add, remove, or replace
|
|
151
|
+
artifacts.
|
|
148
152
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
153
|
+
When the plan contains a non-linear graph, artistic output must preserve its
|
|
154
|
+
closed semantics exactly: direction, every node and label, every edge and
|
|
155
|
+
label, branching, fan-in, and cycles. Missing, extra, duplicated, rewired, or
|
|
156
|
+
semantically drifting observations fail topology validation before browser or
|
|
157
|
+
critic review.
|
|
152
158
|
|
|
153
159
|
### Approval and marking
|
|
154
160
|
|
|
@@ -167,12 +173,25 @@ re-renders and re-runs QA against the edited sources before approval is
|
|
|
167
173
|
processed rather than publishing the stale render.
|
|
168
174
|
|
|
169
175
|
Unattended runs — including recaps triggered by automated project completion —
|
|
170
|
-
flow through end-to-end and auto-approve. The approval record
|
|
171
|
-
two honestly: `explainer-kit.content-approval/v2` carries
|
|
172
|
-
`marking: human-approved` for
|
|
173
|
-
unattended run
|
|
174
|
-
|
|
175
|
-
|
|
176
|
+
flow through end-to-end and auto-approve content. The approval record
|
|
177
|
+
distinguishes the two honestly: `explainer-kit.content-approval/v2` carries
|
|
178
|
+
`marking: human-approved` for interactive approval and `auto-drafted` for an
|
|
179
|
+
unattended run.
|
|
180
|
+
|
|
181
|
+
Unattended project recaps also require a separate whole-set visual review.
|
|
182
|
+
The adapter supplies a branded session created by the compatible core, which
|
|
183
|
+
derives Chromium name and version from the launched browser rather than trusting
|
|
184
|
+
caller metadata. The browser captures each rendered artifact at exact 320, 768,
|
|
185
|
+
and 1440 viewports. The core validates decoded PNG dimensions and pixels, binds
|
|
186
|
+
screenshots and metrics to one capture identity, and sends only that confined
|
|
187
|
+
evidence to an independent critic. Fixture sessions are test-only and are
|
|
188
|
+
rejected in unattended production.
|
|
189
|
+
|
|
190
|
+
A `correct` disposition permits one bounded correction and exactly one final
|
|
191
|
+
review; there is no second correction or third review. Missing, forged,
|
|
192
|
+
cross-record-mismatched, or invalid evidence, a failed critic, or an unresolved
|
|
193
|
+
correction ends as `built-needs-review`. Such output is retained for diagnosis
|
|
194
|
+
but cannot become durable, finalized, archived, or published.
|
|
176
195
|
|
|
177
196
|
The approval record is also the durable source of truth for the resolved
|
|
178
197
|
artifact set. It records every floor and accepted expansion artifact for all
|
|
@@ -182,6 +201,26 @@ re-invoking the author.
|
|
|
182
201
|
|
|
183
202
|
Content approval never authorizes publishing.
|
|
184
203
|
|
|
204
|
+
### Interactive resume security
|
|
205
|
+
|
|
206
|
+
An incomplete interactive run returns an opaque `approval.resumeToken`. Keep it
|
|
207
|
+
outside the package, then echo it as `reviewedSource.resumeToken` when resuming
|
|
208
|
+
the same request. Only fixed-format authenticated `ekrt2` tokens are accepted.
|
|
209
|
+
They bind the run ID, original canonical output root, exact retained
|
|
210
|
+
`run-request.json` bytes, and all retained set-plan records.
|
|
211
|
+
|
|
212
|
+
Before hydrating authored content or invoking planner, author, durability, or
|
|
213
|
+
publish callbacks, resume also compares the complete canonical current request
|
|
214
|
+
with the authenticated retained request. Changes to source binding, recipe,
|
|
215
|
+
mode, theme, render strategy, privacy, public URL, durability, or publish
|
|
216
|
+
destination fail with `E_APPROVAL_RESUME`. Intentionally non-retained art
|
|
217
|
+
direction is omitted from the persisted request projection; executable provider
|
|
218
|
+
seams are separately transient and never part of request equality.
|
|
219
|
+
|
|
220
|
+
Every legacy `ekrt1` token is rejected. A paused run created with the legacy
|
|
221
|
+
format must restart to receive an authenticated token; editing retained package
|
|
222
|
+
state cannot opt it into compatibility.
|
|
223
|
+
|
|
185
224
|
## Warnings and QA severity
|
|
186
225
|
|
|
187
226
|
QA findings are split by severity, and the split is what lets thin content ship
|
|
@@ -211,15 +250,18 @@ succeed in both modes.
|
|
|
211
250
|
| `render-qa-deck-print-layout` | A deck degrades incorrectly in print layout |
|
|
212
251
|
| `render-qa-skipped-no-probe` | Render QA was skipped because no browser probe was supplied |
|
|
213
252
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
253
|
+
When a caller supplies a browser provider, the stage serves the built site
|
|
254
|
+
directory, loads each artifact with animations disabled, and runs the
|
|
255
|
+
layout-probe battery. Viewport clipping deliberately exempts content inside a
|
|
256
|
+
horizontally scrollable ancestor, so intentionally paged deck slides are not
|
|
257
|
+
reported as clipped while genuinely unreachable content still is. The core
|
|
258
|
+
never launches a browser implicitly; the caller creates and closes an explicit
|
|
259
|
+
session, and the OAT adapter validates it before core invocation. For ordinary
|
|
260
|
+
non-retaining runs, omitting a legacy probe records
|
|
261
|
+
`render-qa-skipped-no-probe` and continues. Unattended project recaps require
|
|
262
|
+
the branded browser session and visual critic described in
|
|
263
|
+
[Explainer Provider Integration](explainer-kit-providers.md); missing evidence
|
|
264
|
+
fails closed as `built-needs-review`.
|
|
223
265
|
|
|
224
266
|
## Curated styles and themes
|
|
225
267
|
|
|
@@ -250,6 +292,14 @@ content, resolved theme, `manifest.json`, `build-record.json`, and the rendered
|
|
|
250
292
|
`site/` tree. Rendering or publishing failures preserve successful
|
|
251
293
|
intermediates and recovery information.
|
|
252
294
|
|
|
295
|
+
Reviewed source and citation backlinks are absolute canonical GitHub blob URLs
|
|
296
|
+
pinned to the exact 40-character commit revision and line range, so they
|
|
297
|
+
survive project archival without resolving through a mutable branch or local
|
|
298
|
+
checkout. Each recap also emits
|
|
299
|
+
`site/initiatives/<slug>/catalog.json` from the finalized manifest. Its
|
|
300
|
+
artifact IDs, types, paths, URLs, and source backlinks must remain in exact
|
|
301
|
+
manifest parity; authors do not hand-maintain the catalog.
|
|
302
|
+
|
|
253
303
|
`manifest.immutableHashes` covers the exact retained bytes for
|
|
254
304
|
`run-request.json`, content approval, fact-base JSON and Markdown, declared
|
|
255
305
|
author results, authored content, the resolved theme, and every built
|
|
@@ -264,6 +314,8 @@ Build success and durability are separate:
|
|
|
264
314
|
|
|
265
315
|
- `built-not-durable` means artifacts exist but verified commit or publish
|
|
266
316
|
evidence is absent.
|
|
317
|
+
- `built-needs-review` means the required unattended visual-review chain did
|
|
318
|
+
not finish with a pass; durability and publishing remain blocked.
|
|
267
319
|
- `built-durable` requires verified evidence for every required
|
|
268
320
|
non-rebuildable artifact.
|
|
269
321
|
- `failed` records a failed run without treating partial output as success.
|
|
@@ -12,6 +12,7 @@ Use this section when you want to choose the right OAT skill for a task. If you
|
|
|
12
12
|
- [Writing Skills](../../contributing/skills.md) - Contributor guide to skill authoring, contracts, and governance.
|
|
13
13
|
- [Docs Workflows](../../docs-tooling/workflows.md) - How docs CLI helpers and docs skills work together.
|
|
14
14
|
- [Explainer Kit](explainer-kit.md) - Core and OAT adapter usage, recipes and expansion profiles, the two authoring paths, warnings and QA severity, themes, lifecycle policy, durability, and publishing.
|
|
15
|
+
- [Explainer Provider Integration](explainer-kit-providers.md) - Provider-neutral planner, author, trusted browser-session, and visual-critic contracts.
|
|
15
16
|
- [Repo Improve](repo-improve.md) - Source modes, external-plan boundaries, optional tracking, and OAT import handoff.
|
|
16
17
|
|
|
17
18
|
## Key Skills by Use Case
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: explainer-kit
|
|
3
|
-
version: 2.0.
|
|
3
|
+
version: 2.0.3
|
|
4
4
|
description: Use when building destination-neutral visual explainer artifacts from explicit, versioned inputs.
|
|
5
5
|
user-invocable: true
|
|
6
6
|
allowed-tools: Read, Write, Edit, Bash, Grep, Glob, Agent, mcp__*
|
|
@@ -84,6 +84,11 @@ artifacts. It accepts only a schema-valid
|
|
|
84
84
|
overlap, retains each validated result under `source/author/` and its content
|
|
85
85
|
under `source/content/<artifact>.md` or `.html`, and never prompts.
|
|
86
86
|
|
|
87
|
+
Authors follow the bundled medium-specific rules in
|
|
88
|
+
`references/visual-authoring.md`. They do not require a home-directory plugin:
|
|
89
|
+
an optional installed visual-explainer capability may enhance composition, but
|
|
90
|
+
the bundled briefs, shells, and guidance are the complete unattended baseline.
|
|
91
|
+
|
|
87
92
|
Markdown content is parsed to a validated AST and rendered through the themed
|
|
88
93
|
block library, including GFM tables and task lists, GFM alert callouts, fenced
|
|
89
94
|
`timeline` blocks, and fenced `diagram` blocks rendered to inline SVG at build
|
|
@@ -137,10 +142,18 @@ guideline misses, rejected over-limit proposals, and render-QA layout findings
|
|
|
137
142
|
append stable warning IDs to the manifest's `warnings[]` and let the run
|
|
138
143
|
succeed.
|
|
139
144
|
|
|
145
|
+
Visual critics use the independent whole-set rubric in
|
|
146
|
+
`references/visual-review.md`, which separates review judgment from
|
|
147
|
+
medium-specific authoring rules.
|
|
148
|
+
|
|
140
149
|
Render QA is opt-in. It runs only against an injected `browserProbe`, and the
|
|
141
150
|
core never launches a browser of its own — reviewing the rendered output in a
|
|
142
|
-
browser is the generating agent's job.
|
|
143
|
-
|
|
151
|
+
browser is the generating agent's job. Unattended project recaps require both
|
|
152
|
+
complete browser evidence and an independent visual-critic `pass`. A missing
|
|
153
|
+
probe or critic, a terminal critic failure, or an unresolved correction records
|
|
154
|
+
`built-needs-review`: built artifacts and review evidence remain available, but
|
|
155
|
+
durability and publishing callbacks are not invoked. Other runs without a probe
|
|
156
|
+
record `render-qa-skipped-no-probe` and continue.
|
|
144
157
|
|
|
145
158
|
See `references/contracts.md` for source formats, callback modules, retained
|
|
146
159
|
intermediates, and result semantics.
|
|
@@ -149,6 +162,8 @@ Durability and publishing run only when the request selects them and the caller
|
|
|
149
162
|
supplies the matching callback. The core does not create commits, discover
|
|
150
163
|
destinations, or publish automatically. A successful build remains
|
|
151
164
|
`built-not-durable` until caller-supplied evidence is verified.
|
|
165
|
+
`built-needs-review` is terminal but cannot receive durability evidence or be
|
|
166
|
+
published.
|
|
152
167
|
|
|
153
168
|
## Progress Indicators
|
|
154
169
|
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
{
|
|
16
16
|
"id": "project-recap",
|
|
17
17
|
"type": "hub",
|
|
18
|
-
"authoring": "
|
|
18
|
+
"authoring": "html",
|
|
19
19
|
"template": "house-style",
|
|
20
20
|
"required": true,
|
|
21
21
|
"briefRef": "briefs/project-recap.md",
|
|
@@ -27,38 +27,65 @@
|
|
|
27
27
|
"validation-evidence",
|
|
28
28
|
"outcome"
|
|
29
29
|
]
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"id": "architecture",
|
|
33
|
+
"type": "diagram",
|
|
34
|
+
"authoring": "html",
|
|
35
|
+
"template": "diagram-shell",
|
|
36
|
+
"required": true,
|
|
37
|
+
"briefRef": "briefs/supporting-diagram.md",
|
|
38
|
+
"requiredNarrative": ["as-built-architecture"]
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"id": "deck",
|
|
42
|
+
"type": "deck",
|
|
43
|
+
"authoring": "html",
|
|
44
|
+
"template": "deck-shell",
|
|
45
|
+
"required": true,
|
|
46
|
+
"briefRef": "briefs/walkthrough-deck.md",
|
|
47
|
+
"requiredNarrative": ["outcome"]
|
|
30
48
|
}
|
|
31
49
|
],
|
|
32
50
|
"expansion": {
|
|
33
51
|
"profiles": [
|
|
34
52
|
{
|
|
35
|
-
"profileId": "
|
|
36
|
-
"type": "
|
|
53
|
+
"profileId": "status-view",
|
|
54
|
+
"type": "explainer",
|
|
37
55
|
"authoring": "html",
|
|
38
|
-
"briefRef": "briefs/
|
|
39
|
-
"shell": "
|
|
40
|
-
"maxCount":
|
|
56
|
+
"briefRef": "briefs/project-recap.md",
|
|
57
|
+
"shell": "house-style",
|
|
58
|
+
"maxCount": 1,
|
|
59
|
+
"allowedJustificationKinds": ["status-change"]
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"profileId": "rollout-view",
|
|
63
|
+
"type": "explainer",
|
|
64
|
+
"authoring": "html",
|
|
65
|
+
"briefRef": "briefs/project-recap.md",
|
|
66
|
+
"shell": "house-style",
|
|
67
|
+
"maxCount": 1,
|
|
68
|
+
"allowedJustificationKinds": ["rollout-complexity"]
|
|
41
69
|
},
|
|
42
70
|
{
|
|
43
71
|
"profileId": "deep-dive",
|
|
44
72
|
"type": "explainer",
|
|
45
73
|
"authoring": "markdown",
|
|
46
74
|
"briefRef": "briefs/deep-dive.md",
|
|
47
|
-
"maxCount": 3
|
|
48
|
-
|
|
49
|
-
{
|
|
50
|
-
"profileId": "walkthrough-deck",
|
|
51
|
-
"type": "deck",
|
|
52
|
-
"authoring": "html",
|
|
53
|
-
"briefRef": "briefs/walkthrough-deck.md",
|
|
54
|
-
"shell": "deck-shell",
|
|
55
|
-
"maxCount": 1
|
|
75
|
+
"maxCount": 3,
|
|
76
|
+
"allowedJustificationKinds": ["source-backed-detail"]
|
|
56
77
|
}
|
|
57
78
|
],
|
|
58
79
|
"limits": {
|
|
59
|
-
"maxArtifacts":
|
|
80
|
+
"maxArtifacts": 5
|
|
60
81
|
}
|
|
61
82
|
},
|
|
83
|
+
"fallback": {
|
|
84
|
+
"mode": "deterministic-markdown",
|
|
85
|
+
"selection": "explicit",
|
|
86
|
+
"authoring": "markdown",
|
|
87
|
+
"scope": "portfolio"
|
|
88
|
+
},
|
|
62
89
|
"discoveryLimits": {
|
|
63
90
|
"consecutiveNoNewFindingsRounds": 2,
|
|
64
91
|
"maxRounds": 8
|