@adia-ai/adia-ui-forge 0.1.3 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/.claude-plugin/plugin.json +4 -7
  2. package/CHANGELOG.md +35 -34
  3. package/README.md +35 -40
  4. package/agents/a2ui-engineer.md +22 -53
  5. package/agents/component-author.md +29 -0
  6. package/agents/framework-verifier.md +26 -0
  7. package/agents/release-engineer.md +21 -81
  8. package/agents/routing-corpus.json +293 -64
  9. package/bin/demo-postwrite-pattern-gate +94 -0
  10. package/bin/forge-lint +17 -2
  11. package/bin/sidecar-prewrite-guard +104 -0
  12. package/commands/deploy.md +9 -0
  13. package/commands/dogfood.md +10 -0
  14. package/commands/gen-review.md +9 -0
  15. package/commands/release.md +10 -0
  16. package/hooks/hooks.json +15 -0
  17. package/package.json +3 -6
  18. package/references/contracts/a2ui-mcp-surface.md +35 -0
  19. package/references/contracts/migration-guide-format.md +34 -0
  20. package/references/shared/content-trust.md +19 -74
  21. package/skills/adia-a2ui/SKILL.md +99 -0
  22. package/skills/{adia-ui-a2ui → adia-a2ui}/evals/routing-corpus.json +10 -10
  23. package/skills/adia-a2ui/references/anti-patterns.md +27 -0
  24. package/skills/adia-a2ui/references/chunk-authoring.md +71 -0
  25. package/skills/adia-a2ui/references/corpus-discipline.md +68 -0
  26. package/skills/adia-a2ui/references/eval-diagnostics.md +86 -0
  27. package/skills/adia-a2ui/references/format-extension-decisions.md +66 -0
  28. package/skills/adia-a2ui/references/leverage-rules.md +52 -0
  29. package/skills/adia-a2ui/references/mcp-pipeline-ops.md +83 -0
  30. package/skills/adia-a2ui/references/mcp-tool-reference.md +59 -0
  31. package/skills/adia-a2ui/references/pipeline-overview.md +115 -0
  32. package/skills/adia-a2ui/references/semantic-fail-lifting.md +74 -0
  33. package/skills/adia-a2ui/references/strategy-engines.md +109 -0
  34. package/skills/adia-a2ui/references/zettel-calibration.md +104 -0
  35. package/skills/adia-author/SKILL.md +112 -0
  36. package/skills/adia-author/evals/routing-corpus.json +222 -0
  37. package/skills/{adia-ui-authoring → adia-author}/references/anti-patterns.md +33 -4
  38. package/skills/{adia-ui-authoring → adia-author}/references/authoring-cycle.md +9 -11
  39. package/skills/adia-author/references/canonical-pattern-index.md +243 -0
  40. package/skills/{adia-ui-authoring → adia-author}/references/code-style.md +19 -21
  41. package/skills/adia-author/references/common-gotchas.md +129 -0
  42. package/skills/adia-author/references/composite-demo-protocol.md +271 -0
  43. package/skills/{adia-ui-authoring → adia-author}/references/css-patterns.md +19 -6
  44. package/skills/{adia-ui-authoring → adia-author}/references/lifecycle-patterns.md +1 -0
  45. package/skills/{adia-ui-authoring → adia-author}/references/llm-bridge.md +3 -5
  46. package/skills/{adia-ui-authoring → adia-author}/references/module-promotion.md +20 -38
  47. package/skills/{adia-ui-authoring → adia-author}/references/primitive-audit.md +2 -4
  48. package/skills/{adia-ui-authoring → adia-author}/references/shell-patterns.md +12 -18
  49. package/skills/{adia-ui-authoring → adia-author}/references/token-contract.md +5 -7
  50. package/skills/{adia-ui-authoring → adia-author}/references/worked-example.md +3 -3
  51. package/skills/{adia-ui-authoring → adia-author}/references/yaml-contract.md +3 -3
  52. package/skills/{adia-ui-authoring → adia-author}/scripts/build-canonical-pattern-index.mjs +3 -3
  53. package/skills/adia-deploy/SKILL.md +128 -0
  54. package/skills/{adia-ui-ops → adia-deploy}/references/deploy-playbooks.md +47 -30
  55. package/skills/adia-dogfood/SKILL.md +124 -0
  56. package/skills/adia-dogfood/references/admin-shell-anatomy.md +77 -0
  57. package/skills/adia-dogfood/references/app-shell-pitfalls.md +66 -0
  58. package/skills/adia-dogfood/references/card-anatomy-sweep.md +66 -0
  59. package/skills/adia-dogfood/references/html-attr-sweep.md +63 -0
  60. package/skills/adia-dogfood/references/native-leak-annotations.md +73 -0
  61. package/skills/adia-dogfood/references/visual-probe-triage.md +80 -0
  62. package/skills/{adia-ui-dogfood → adia-dogfood}/scripts/analyze.mjs +30 -14
  63. package/skills/adia-gen-review/SKILL.md +127 -0
  64. package/skills/adia-gen-review/references/corpus-html-patterns.md +279 -0
  65. package/skills/adia-gen-review/references/loop-protocol.md +216 -0
  66. package/skills/adia-gen-review/references/rubric-cosmetic.md +100 -0
  67. package/skills/adia-gen-review/references/rubric-decompose.md +101 -0
  68. package/skills/adia-gen-review/references/rubric-score.md +214 -0
  69. package/skills/{adia-ui-gen-review → adia-gen-review}/references/scores.schema.json +2 -2
  70. package/skills/{adia-ui-gen-review → adia-gen-review}/scripts/gen-review-coverage-audit.mjs +4 -4
  71. package/skills/{adia-ui-gen-review → adia-gen-review}/scripts/gen-review-decompose.mjs +10 -6
  72. package/skills/{adia-ui-gen-review → adia-gen-review}/scripts/gen-review-status.mjs +5 -5
  73. package/skills/{adia-ui-gen-review → adia-gen-review}/scripts/validate-cycle-scores.mjs +5 -5
  74. package/skills/adia-llm-internals/SKILL.md +77 -0
  75. package/skills/{adia-ui-llm → adia-llm-internals}/references/adapter-contract.md +4 -2
  76. package/skills/{adia-ui-llm → adia-llm-internals}/references/add-a-provider.md +4 -5
  77. package/skills/{adia-ui-llm → adia-llm-internals}/references/bridge-facade.md +10 -3
  78. package/skills/{adia-ui-llm → adia-llm-internals}/references/browser-proxy-boundary.md +1 -1
  79. package/skills/{adia-ui-llm → adia-llm-internals}/references/model-registry.md +5 -3
  80. package/skills/{adia-ui-llm → adia-llm-internals}/references/streaming-sse.md +2 -2
  81. package/skills/adia-release/SKILL.md +72 -0
  82. package/skills/adia-release/references/changelog-discipline.md +119 -0
  83. package/skills/adia-release/references/cut-procedure.md +247 -0
  84. package/skills/adia-release/references/gates-catalog.md +222 -0
  85. package/skills/adia-release/references/independent-package-release.md +52 -0
  86. package/skills/adia-release/references/migration-guide-authoring.md +86 -0
  87. package/skills/adia-release/references/notes-authoring.md +90 -0
  88. package/skills/adia-release/references/recovery-paths.md +106 -0
  89. package/skills/{adia-ui-release → adia-release}/scripts/bump.mjs +28 -3
  90. package/skills/{adia-ui-release → adia-release}/scripts/dispatch-publish.mjs +10 -7
  91. package/skills/{adia-ui-release → adia-release}/scripts/insert-stub.mjs +1 -1
  92. package/skills/{adia-ui-release → adia-release}/scripts/package-paths.mjs +6 -0
  93. package/skills/{adia-ui-release → adia-release}/scripts/promote-unreleased.mjs +1 -1
  94. package/skills/{adia-ui-release → adia-release}/scripts/release-pack.mjs +38 -31
  95. package/skills/{adia-ui-release → adia-release}/scripts/tag-lockstep.mjs +7 -3
  96. package/skills/adia-site-docs/SKILL.md +68 -0
  97. package/skills/adia-site-docs/evals/audit-report.md +30 -0
  98. package/skills/adia-site-docs/evals/routing-corpus.json +176 -0
  99. package/skills/adia-site-docs/intent.md +72 -0
  100. package/agents/README.md +0 -209
  101. package/agents/author.md +0 -56
  102. package/agents/repo-steward.md +0 -56
  103. package/agents/spec-architect.md +0 -53
  104. package/agents/tech-lead.md +0 -57
  105. package/agents/verifier.md +0 -55
  106. package/bin/lib/audit-axes.mjs +0 -555
  107. package/bin/lib/dry-run-irreversible.mjs +0 -236
  108. package/bin/lib/run-skill-evals.mjs +0 -487
  109. package/bin/lib/teach-router.mjs +0 -250
  110. package/commands/adia-forge-a2ui.md +0 -10
  111. package/commands/adia-forge-author.md +0 -10
  112. package/commands/adia-forge-dogfood.md +0 -8
  113. package/commands/adia-forge-llm.md +0 -8
  114. package/commands/adia-forge-orient.md +0 -10
  115. package/commands/adia-forge-release.md +0 -8
  116. package/commands/adia-forge-review.md +0 -10
  117. package/references/shared/pev-rationale.md +0 -64
  118. package/references/shared/skill-conventions.md +0 -133
  119. package/skills/adia-ui-a2ui/CHANGELOG.md +0 -32
  120. package/skills/adia-ui-a2ui/SKILL.md +0 -243
  121. package/skills/adia-ui-a2ui/evals/adversarial-corpus.json +0 -75
  122. package/skills/adia-ui-a2ui/evals/teach-routing-cases.json +0 -100
  123. package/skills/adia-ui-a2ui/references/anti-patterns.md +0 -24
  124. package/skills/adia-ui-a2ui/references/chunk-authoring.md +0 -88
  125. package/skills/adia-ui-a2ui/references/corpus-discipline.md +0 -56
  126. package/skills/adia-ui-a2ui/references/eval-diagnostics.md +0 -127
  127. package/skills/adia-ui-a2ui/references/fragment-graph.md +0 -91
  128. package/skills/adia-ui-a2ui/references/mcp-pipeline-ops.md +0 -106
  129. package/skills/adia-ui-a2ui/references/mcp-tool-reference.md +0 -398
  130. package/skills/adia-ui-a2ui/references/pipeline-overview.md +0 -175
  131. package/skills/adia-ui-a2ui/references/semantic-fail-lifting.md +0 -120
  132. package/skills/adia-ui-a2ui/references/strategy-engines.md +0 -111
  133. package/skills/adia-ui-a2ui/references/teach-protocol.md +0 -220
  134. package/skills/adia-ui-a2ui/references/zettel-calibration.md +0 -93
  135. package/skills/adia-ui-a2ui/scripts/audit-a2ui-roster.mjs +0 -96
  136. package/skills/adia-ui-a2ui/scripts/teach-route.mjs +0 -157
  137. package/skills/adia-ui-a2ui/skill.json +0 -38
  138. package/skills/adia-ui-authoring/CHANGELOG.md +0 -32
  139. package/skills/adia-ui-authoring/SKILL.md +0 -256
  140. package/skills/adia-ui-authoring/assets/case-studies/admin-shell-decomposition.md +0 -101
  141. package/skills/adia-ui-authoring/assets/case-studies/maxtokens-32768-discovery.md +0 -109
  142. package/skills/adia-ui-authoring/assets/case-studies/theme-panel-promotion.md +0 -113
  143. package/skills/adia-ui-authoring/evals/adversarial-design-plan-gates.json +0 -138
  144. package/skills/adia-ui-authoring/evals/routing-corpus.json +0 -245
  145. package/skills/adia-ui-authoring/references/canonical-pattern-index.md +0 -179
  146. package/skills/adia-ui-authoring/references/common-gotchas.md +0 -93
  147. package/skills/adia-ui-authoring/references/composite-demo-protocol.md +0 -1084
  148. package/skills/adia-ui-authoring/references/teach-protocol.md +0 -428
  149. package/skills/adia-ui-authoring/scripts/audit-authoring-roster.mjs +0 -148
  150. package/skills/adia-ui-authoring/skill.json +0 -45
  151. package/skills/adia-ui-dogfood/CHANGELOG.md +0 -17
  152. package/skills/adia-ui-dogfood/README.md +0 -62
  153. package/skills/adia-ui-dogfood/SKILL.md +0 -866
  154. package/skills/adia-ui-dogfood/skill.json +0 -40
  155. package/skills/adia-ui-forge/SKILL.md +0 -88
  156. package/skills/adia-ui-forge/evals/routing-corpus.json +0 -30
  157. package/skills/adia-ui-gen-review/CHANGELOG.md +0 -108
  158. package/skills/adia-ui-gen-review/SKILL.md +0 -266
  159. package/skills/adia-ui-gen-review/references/loop-protocol.md +0 -712
  160. package/skills/adia-ui-gen-review/references/rubric-cosmetic.md +0 -144
  161. package/skills/adia-ui-gen-review/references/rubric-decompose.md +0 -117
  162. package/skills/adia-ui-gen-review/references/rubric-score.md +0 -249
  163. package/skills/adia-ui-gen-review/references/teach-protocol.md +0 -214
  164. package/skills/adia-ui-gen-review/skill.json +0 -23
  165. package/skills/adia-ui-llm/CHANGELOG.md +0 -25
  166. package/skills/adia-ui-llm/SKILL.md +0 -165
  167. package/skills/adia-ui-llm/evals/adversarial-corpus.json +0 -75
  168. package/skills/adia-ui-llm/evals/routing-corpus.json +0 -30
  169. package/skills/adia-ui-llm/evals/teach-routing-cases.json +0 -73
  170. package/skills/adia-ui-llm/references/teach-protocol.md +0 -78
  171. package/skills/adia-ui-llm/scripts/audit-llm-roster.mjs +0 -93
  172. package/skills/adia-ui-llm/scripts/teach-route.mjs +0 -119
  173. package/skills/adia-ui-llm/skill.json +0 -33
  174. package/skills/adia-ui-ops/CHANGELOG.md +0 -291
  175. package/skills/adia-ui-ops/SKILL.md +0 -401
  176. package/skills/adia-ui-ops/references/INDEX.md +0 -158
  177. package/skills/adia-ui-ops/references/audit-cadence.md +0 -263
  178. package/skills/adia-ui-ops/references/audit-patterns/archive-link-sweep.md +0 -96
  179. package/skills/adia-ui-ops/references/audit-patterns/audit-history-ledger.md +0 -162
  180. package/skills/adia-ui-ops/references/audit-patterns/browser-bundle-node-imports.md +0 -154
  181. package/skills/adia-ui-ops/references/audit-patterns/changelog-unreleased-bloat.md +0 -75
  182. package/skills/adia-ui-ops/references/audit-patterns/coverage-gaps.md +0 -187
  183. package/skills/adia-ui-ops/references/audit-patterns/entry-file-coverage.md +0 -122
  184. package/skills/adia-ui-ops/references/audit-patterns/format-hygiene.md +0 -217
  185. package/skills/adia-ui-ops/references/audit-patterns/lockstep-versioning.md +0 -113
  186. package/skills/adia-ui-ops/references/audit-patterns/memory-fragmentation.md +0 -180
  187. package/skills/adia-ui-ops/references/audit-patterns/orphan-detection.md +0 -202
  188. package/skills/adia-ui-ops/references/audit-patterns/pointer-validation.md +0 -180
  189. package/skills/adia-ui-ops/references/audit-patterns/redundancy-detection.md +0 -210
  190. package/skills/adia-ui-ops/references/audit-patterns/spec-dating-sweep.md +0 -91
  191. package/skills/adia-ui-ops/references/audit-patterns/stale-content.md +0 -182
  192. package/skills/adia-ui-ops/references/audit-patterns/staleness-tooling.md +0 -156
  193. package/skills/adia-ui-ops/references/audit-patterns/token-waste-detection.md +0 -196
  194. package/skills/adia-ui-ops/references/doc-types/adr-pattern.md +0 -210
  195. package/skills/adia-ui-ops/references/doc-types/architecture-md.md +0 -190
  196. package/skills/adia-ui-ops/references/doc-types/changelog.md +0 -183
  197. package/skills/adia-ui-ops/references/doc-types/decisions-log.md +0 -146
  198. package/skills/adia-ui-ops/references/doc-types/plan-roadmap.md +0 -182
  199. package/skills/adia-ui-ops/references/doc-types/postmortem-pattern.md +0 -206
  200. package/skills/adia-ui-ops/references/genres/prose-and-writing.md +0 -149
  201. package/skills/adia-ui-ops/references/guidance/context-budget.md +0 -137
  202. package/skills/adia-ui-ops/references/guidance/llm-doc-writing.md +0 -116
  203. package/skills/adia-ui-ops/references/guidance/reliability-dial.md +0 -186
  204. package/skills/adia-ui-ops/references/recipes/adr-introduction.md +0 -211
  205. package/skills/adia-ui-ops/references/recipes/audit-existing-repo.md +0 -234
  206. package/skills/adia-ui-ops/references/recipes/cold-start-harvest.md +0 -263
  207. package/skills/adia-ui-ops/references/recipes/concurrent-learnings-merge.md +0 -158
  208. package/skills/adia-ui-ops/references/recipes/continuous-learning-loop.md +0 -169
  209. package/skills/adia-ui-ops/references/recipes/external-reference-verification.md +0 -158
  210. package/skills/adia-ui-ops/references/recipes/findings-index-readout.md +0 -126
  211. package/skills/adia-ui-ops/references/recipes/greenfield-setup.md +0 -252
  212. package/skills/adia-ui-ops/references/recipes/harvest-repo-brain.md +0 -169
  213. package/skills/adia-ui-ops/references/recipes/import-repo-brain-harvest.md +0 -153
  214. package/skills/adia-ui-ops/references/recipes/memory-organization.md +0 -182
  215. package/skills/adia-ui-ops/references/recipes/recommend-then-validate.md +0 -199
  216. package/skills/adia-ui-ops/references/recipes/self-healing-hooks.md +0 -366
  217. package/skills/adia-ui-ops/references/recipes/skill-stewardship-loop.md +0 -113
  218. package/skills/adia-ui-ops/references/standards/agents-md-spec.md +0 -138
  219. package/skills/adia-ui-ops/references/standards/claude-md-convention.md +0 -123
  220. package/skills/adia-ui-ops/references/standards/cross-tool-matrix.md +0 -85
  221. package/skills/adia-ui-ops/references/standards/readme-conventions.md +0 -232
  222. package/skills/adia-ui-ops/references/teach-protocol.md +0 -215
  223. package/skills/adia-ui-ops/scripts/audit-ops-roster.mjs +0 -104
  224. package/skills/adia-ui-ops/skill.json +0 -65
  225. package/skills/adia-ui-release/CHANGELOG.md +0 -66
  226. package/skills/adia-ui-release/SKILL.md +0 -323
  227. package/skills/adia-ui-release/assets/case-studies/2026-05-20-batch-push-v0.6.14-v0.6.15.md +0 -144
  228. package/skills/adia-ui-release/assets/case-studies/2026-05-20-corpus-drift-remediation-v0.6.15.md +0 -155
  229. package/skills/adia-ui-release/assets/case-studies/2026-05-20-version-skip-correction-v0.6.12.md +0 -114
  230. package/skills/adia-ui-release/assets/case-studies/2026-05-21-author-from-scratch-v0.6.18.md +0 -139
  231. package/skills/adia-ui-release/assets/case-studies/2026-05-21-feedback37-retraction-v0.6.21.md +0 -124
  232. package/skills/adia-ui-release/assets/case-studies/2026-05-21-fn1-enrichment-pass-v0.6.19.md +0 -125
  233. package/skills/adia-ui-release/assets/case-studies/2026-05-21-stale-test-detection-v0.6.20.md +0 -142
  234. package/skills/adia-ui-release/assets/case-studies/2026-05-23-freshness-gate-recovery-v0.6.32.md +0 -97
  235. package/skills/adia-ui-release/assets/case-studies/2026-05-26-catalog-drift-recurring-v0.6.40.md +0 -147
  236. package/skills/adia-ui-release/assets/templates/stub-changelog.template.md +0 -22
  237. package/skills/adia-ui-release/evals/evals.json +0 -164
  238. package/skills/adia-ui-release/references/changelog-discipline.md +0 -250
  239. package/skills/adia-ui-release/references/cycle-happy-path.md +0 -520
  240. package/skills/adia-ui-release/references/exe-deploy.md +0 -149
  241. package/skills/adia-ui-release/references/gates-catalog.md +0 -778
  242. package/skills/adia-ui-release/references/independent-package-release.md +0 -129
  243. package/skills/adia-ui-release/references/ledger-discipline.md +0 -232
  244. package/skills/adia-ui-release/references/migration-guide-authoring.md +0 -174
  245. package/skills/adia-ui-release/references/multi-agent-baseline.md +0 -207
  246. package/skills/adia-ui-release/references/notes-authoring.md +0 -212
  247. package/skills/adia-ui-release/references/recovery-paths.md +0 -262
  248. package/skills/adia-ui-release/references/rollup-notes.md +0 -208
  249. package/skills/adia-ui-release/references/teach-protocol.md +0 -468
  250. package/skills/adia-ui-release/scripts/audit-gate-roster.mjs +0 -196
  251. package/skills/adia-ui-release/scripts/make-ledger.mjs +0 -200
  252. package/skills/adia-ui-release/skill.json +0 -77
  253. package/skills/dogfood-sweep/CHANGELOG.md +0 -37
  254. package/skills/dogfood-sweep/README.md +0 -105
  255. package/skills/dogfood-sweep/SKILL.md +0 -1000
  256. package/skills/dogfood-sweep/analyze.mjs +0 -600
  257. package/skills/dogfood-sweep/skill.json +0 -31
  258. /package/skills/{adia-ui-authoring → adia-author}/references/api-contract.md +0 -0
  259. /package/skills/{adia-ui-release → adia-release}/scripts/assert-monorepo-root.mjs +0 -0
@@ -1,778 +0,0 @@
1
- # `gates-catalog.md` — pre-flight gate roster + failure → recovery map
2
-
3
- > Loaded by mode 6 (Just verify) and on any gate failure in modes 1–3. This file maps every gate × what it checks × typical failure modes × recovery path. (Mode 6 absorbs what was once a separate structural-change verification-sweep skill.)
4
-
5
- > **Worked example — the @adia-ai monorepo's gate roster.** The gate names, package paths, and failure narratives below are **the worked example** drawn from the @adia-ai lockstep monorepo. They are NOT a universal gate set — a different @adia-ai-style lockstep monorepo has its own roster. The portable discipline is: maintain a catalog of every gate the release cycle runs, grouped by **failure category** (how the operator routes when a gate fails — not by alphabetical namespace), each with command · what it checks · typical failure · recovery. Substitute your monorepo's gates into the same shape.
6
-
7
- The @adia-ai monorepo has ~50 `check:*` / `verify:*` / `smoke:*` / `test:*` scripts. This catalogue covers every gate used during a release cycle. They're grouped by **failure category** because that's how the operator routes when a gate fails — not by alphabetical namespace.
8
-
9
- For each gate, the row layout is:
10
-
11
- ```text
12
- ### `npm run <gate>`
13
-
14
- - **What:** one-line description of what it checks
15
- - **Reads:** the inputs (yaml? package.json? CSS? tests?)
16
- - **Typical failure:** the most common cause of red, with one
17
- concrete example from a past cycle if there is one
18
- - **Recovery:** the fix path (link to a case study or another section)
19
- ```
20
-
21
- ---
22
-
23
- ## §Category 1 — Release identity
24
-
25
- These are the gates that prevent shipping an inconsistent or mis-versioned release. **Hard-fail any cut on these.**
26
-
27
- ### `npm run check:lockstep`
28
-
29
- - **What:** all 9 `@adia-ai/*` packages declare the same `version`; all internal `@adia-ai/*` dep ranges in their `dependencies` match the policy (`^X.Y.0` during PATCH cycles, bumped at MINOR).
30
- - **Reads:** 9 × `package.json`.
31
- - **Typical failure:** one of the 9 forgot to bump. Or a peer manually edited an internal dep range during a PATCH cut (PATCH-cut asymmetry violation).
32
- - **Recovery:** bump the offender (`scripts/bump.mjs`); re-run.
33
-
34
- ### `node scripts/release/check-release.mjs --all-pending` (F-N1)
35
-
36
- - **What:** for every tag-pending in the working repo (i.e. any tag not yet pushed to origin), verify CHANGELOG coverage of the diff between this tag and the previous version's tag for the same package.
37
- - **Reads:** git tag list, git diff between consecutive package tags, CHANGELOG `[VERSION]` block.
38
- - **Typical failure (cosmetic):** "diff `packages/<pkg>/components/` touched but CHANGELOG `[X.Y.Z]` doesn't mention 'components'." Means the entries describe the component by name (`table-ui`) but not the literal path keyword (`components/`). Cosmetic regex miss.
39
- - **Typical failure (real):** a touched directory has NO matching CHANGELOG entry at all — the cycle missed documenting a change.
40
- - **Recovery for cosmetic:** add path keyword to a relevant entry (e.g. `table.yaml` → `components/table/table.yaml`). Amend release commit. Re-tag at new SHA. See `changelog-discipline.md` § F-N1 enrichment (Phase 2) + v0.6.19 case study.
41
- - **Recovery for real:** add the missing CHANGELOG entry to the relevant package's `[VERSION]` block. Amend + re-tag.
42
-
43
- ### `npm run check:changelog-coverage`
44
-
45
- - **What:** every published package has a `[vX.Y.Z]` CHANGELOG block for the current `package.json` version.
46
- - **Typical failure:** package.json bumped but CHANGELOG missing the new version block.
47
- - **Recovery:** add the block (stub if no source changes).
48
-
49
- ---
50
-
51
- ## §Category 2 — Generated-file coherence
52
-
53
- These confirm yaml/SoT-to-sidecar generation is in sync. **Hard-fail any cut on these.**
54
-
55
- ### `node scripts/build/components.mjs --verify`
56
-
57
- - **What:** every component yaml has a matching, up-to-date `.a2ui.json` sidecar; `.d.ts` codegen is current.
58
- - **Reads:** `packages/web-components/components/**/*.yaml` + `packages/web-modules/shell/**/*.yaml` + their sidecars.
59
- - **Typical failure:** peer edited a yaml but didn't run `npm run components` to regen the sidecar.
60
- - **Recovery:** `node scripts/build/components.mjs` (without `--verify`) to regenerate; stage the regenerated sidecars.
61
-
62
- ### `npm run verify:traits`
63
-
64
- - **What:** trait catalog (`traits/_catalog.json`) reflects every trait's `defineTrait()` call across the source tree; 100% test coverage.
65
- - **Typical failure:** peer added a trait but didn't run `npm run build:traits`.
66
- - **Recovery:** regenerate; stage.
67
-
68
- ### `npm run verify:a2ui-schema`
69
-
70
- - **What:** the A2UI JSON Schema (`a2ui.schema.json`) is in sync with the TS types in `@adia-ai/a2ui-runtime`.
71
- - **Typical failure:** peer extended the schema but the codegen output is stale.
72
- - **Recovery:** `node scripts/build/a2ui-schema-types.mjs`; stage.
73
-
74
- ### `npm run verify:tsconfig-strictness`
75
-
76
- - **What:** per-package `tsconfig.json` `compilerOptions` don't silently relax flags set strict in `tsconfig.base.json` (the ADR-0029 substrate invariant).
77
- - **Typical failure:** peer added a per-package override without a `// TS-MIG-NNN` tracking comment.
78
- - **Recovery:** either remove the override OR add the tracking comment
79
- - entry in `.brain/notes/ts-mig-tracking.md`. Per AGENTS.md hard rule #13.
80
-
81
- ---
82
-
83
- ## §Category 3 — Component / primitive structural drift
84
-
85
- These verify the per-component contract holds (slots, composes-deps, demos, registry parity).
86
-
87
- ### `npm run check:demo-shells`
88
-
89
- - **What:** every component's demo `.html` shell imports all primitives named in its yaml `composes:` field.
90
- - **Reads:** `packages/web-components/components/<name>/<name>.html`
91
- - the yaml `composes:` list.
92
- - **Typical failure:** a primitive's yaml gained a new `composes:` entry (e.g. `skeleton-ui` after `stat-ui loading` added in v0.6.18), but the demo `.html` shell didn't get the matching `<script>` import.
93
- - **Recovery:** add `<script type="module" src="../<tag>/<tag>.js">` to the demo shell. See v0.6.18 case study (`assets/case-studies/`, Phase 3) — the f167b72bc release commit failed this gate, requiring v0.6.18 to extend to HEAD.
94
- - **Release-blocking severity:** HIGH — a release commit that fails this gate ships broken demo pages in its tarball.
95
-
96
- ### `npm run check:composes`
97
-
98
- - **What:** every yaml `composes:` entry resolves to a real primitive in the registry.
99
- - **Recovery:** fix typos / register missing primitives.
100
-
101
- ### `npm run check:dts-sibling-presence`
102
-
103
- - **What:** every component with a `.js` has a sibling `.d.ts`.
104
- - **Typical failure:** new component added without `.d.ts` (codegen wasn't run, or hand-authored case wasn't added to the `HAND_AUTHORED_DTS` skip-set in `dts-codegen.mjs`).
105
- - **Recovery:** regenerate or hand-author per ADR-0027.
106
-
107
- ### `npm run check:registry-catalog-coherence`
108
-
109
- - **What:** every primitive registered in the runtime has an A2UI catalog entry, and vice versa.
110
- - **Typical failure:** new primitive registered but catalog regen not run. Or `customElements.define` for a co-located element missing (`feedback_orphan_component_registry_catalog_parity` memory).
111
- - **Recovery:** regenerate the catalog (`packages/a2ui/mcp/scripts/ generate.mjs ...`) OR add the missing `customElements.define`.
112
-
113
- ### `npm run check:required-icons`
114
-
115
- - **What:** every `<icon-ui>` referenced by a component yaml or demo is in the icon registry.
116
- - **Typical failure:** new component uses an unregistered Phosphor icon.
117
- - **Recovery:** add to `requiredIcons` list or register.
118
-
119
- ### `npm run check:standalone-html-phosphor`
120
-
121
- - **What:** standalone demo pages that use Phosphor icons include the icon loader.
122
-
123
- ### `npm run check:substitutable-set-drift`
124
-
125
- - **What:** the substitutable-element registry (cross-component shape compatibility) is in sync.
126
-
127
- ---
128
-
129
- ## §Category 4 — CSS spec compatibility
130
-
131
- These prevent LightningCSS / Vite-7-default minify failures that silently passed in Vite 6.
132
-
133
- ### `npm run check:scope-bare-descendants`
134
-
135
- - **What:** no `@scope { > X {} }` bare-combinator descendants (LightningCSS rejects as "Invalid empty selector").
136
- - **Typical failure:** new CSS authored with the legacy bare-combinator shape.
137
- - **Recovery:** `node scripts/build/codemod-scope-bare-descendants.mjs` rewrites `> X` → `& > X`. See v0.6.9 case study (claims-ui FB-02 closure).
138
-
139
- ### `npm run check:lightningcss-build`
140
-
141
- - **What:** every CSS file under `packages/web-{components,modules}/` minifies cleanly under LightningCSS + Vite 8 default targets (Chromium 125+, Safari 18+, Firefox 129+).
142
- - **Reads:** 120+ CSS files.
143
- - **Typical failure:** new CSS uses a feature LightningCSS doesn't support, or has a bare-combinator descendant inside `@scope` (see above).
144
- - **Recovery:** fix the offending CSS; re-run.
145
-
146
- ### `npm run check:no-self-import-css`
147
-
148
- - **What:** no CSS file `@import`s itself (transitively).
149
- - **Typical failure:** a barrel CSS that includes itself.
150
- - **Recovery:** restructure.
151
-
152
- ### `npm run check:rolldown-glob`
153
-
154
- - **What:** `import.meta.glob` calls work under Rolldown (Vite 8).
155
-
156
- ---
157
-
158
- ## §Category 5 — Browser safety / module hygiene
159
-
160
- These prevent Node-only imports from leaking into browser bundles.
161
-
162
- ### `npm run check:browser-safe`
163
-
164
- - **What:** no top-level `import 'node:*'` in browser-reachable modules (`packages/a2ui/compose/`, `retrieval/` browser parts, `validator/` browser parts, `web-components/`, `web-modules/`, `apps/*/app/*.contents.js`).
165
- - **Typical failure:** peer added a Node import to a browser-shared module. See AGENTS.md hard rule #11.
166
- - **Recovery:** wrap in the dual-mode pattern (`IS_NODE` check + dynamic `await import(/* @vite-ignore */ 'node:*')` inside the Node-only branch + `import.meta.glob()` in the browser branch). Reference: `retrieval/component-catalog.js`.
167
-
168
- ### `npm run check:absolute-imports`
169
-
170
- - **What:** no leading-`/` imports (the v0.6.8 claims-ui F-001 trap).
171
- - **Typical failure:** peer used `/packages/...` instead of `../../../...`.
172
- - **Recovery:** rewrite to relative.
173
-
174
- ### `npm run check:no-live-readers`
175
-
176
- - **What:** no runtime DOM reads in places they shouldn't be.
177
-
178
- ### `npm run check:form-bearing-dts`
179
-
180
- - **What:** form-element `.d.ts` files correctly declare their form participation.
181
-
182
- ### `npm run check:form-element-label-opt-out`
183
-
184
- - **What:** form elements that opt out of label conventions are declared.
185
-
186
- ### `npm run check:template-interp`
187
-
188
- - **What:** `core/template.js` `${expr}` interpolations match the documented contract (the v0.6.8 FB-55 lesson — `.camelCaseProp=${expr}` routes to the canonical setter; partial-class warns).
189
-
190
- ### `npm run check:yaml-events`
191
-
192
- - **What:** yaml `events:` declarations match the actual runtime `customElement.dispatchEvent` calls.
193
-
194
- ### `npm run check:yaml-impl-coverage`
195
-
196
- - **What:** every yaml-declared prop is implemented in the JS class.
197
-
198
- ---
199
-
200
- ## §Category 6 — Visual / structural integrity
201
-
202
- ### `npm run check:card-structure`
203
-
204
- - **What:** every `<card-ui>` body wraps in `<section>` (the `feedback_card_drawer_body_section_wrap` memory). Strict variant of `audit:card-structure` — same probe, fails on any finding.
205
-
206
- ### `npm run audit:card-structure`
207
-
208
- - **What:** soft variant of `check:card-structure` — same probe (`scripts/audit/audit-card-structure.mjs`) but reports findings without failing. Use when sweeping for findings to triage, not when gating a release.
209
-
210
- ### `npm run check:drawer-structure`
211
-
212
- - **What:** same for `<drawer-ui>`. Strict variant of `audit:drawer-structure`.
213
-
214
- ### `npm run audit:drawer-structure`
215
-
216
- - **What:** soft variant of `check:drawer-structure`. Same probe (`scripts/audit/audit-drawer-structure.mjs`), reports without failing.
217
-
218
- ### `npm run check:with-css-pairing`
219
-
220
- - **What:** every shell with paired `.js` + `.css` has a canonical `/with-css` companion + exports-map entry (v0.6.10 closure for claims-ui FB-06).
221
-
222
- ### `verify:no-legacy-shell-shapes`
223
-
224
- - **What:** scans `site/`, `apps/`, `playgrounds/`, `catalog/` for legacy `<main>` / `<article data-content-root>` / `<div data-content-header>` shapes under `<admin-shell>` ancestors. Added in v0.6.12 (ADR-0032).
225
- - **Recovery:** migrate to 10-tag canonical bespoke composition.
226
-
227
- ### `npm run audit:native-primitive-leak`
228
-
229
- - **What:** static-HTML probe across `apps/`, `playgrounds/`, `catalog/` for native HTML primitives (`<button>`, `<input>`, `<select>`, `<textarea>`, `<table>`, `<a href>`, `<img>`) where an AdiaUI `*-ui` equivalent exists. Catches "agent reached for `<button>` instead of `<button-ui>`" smells. Added in v0.6.27 (commit `9c64e7658`); window- widening fix in commit `<post-§3-commit>` (peer-discovered 80→200- char window pitfall).
230
- - **Severity tiers:** `<button>` / `<input>` / `<select>` / `<textarea>` / `<table>` are **critical** (always wrong, no exceptions); `<a href>` / `<img>` are **info** by default (often legitimate, `--strict-links` promotes `<a>` to warning).
231
- - **Escape hatches:** `<input type="hidden|file|radio|checkbox">` and the `data-native-ok="<reason>"` annotation form (preferred over preceding-comment form per the `adia-ui-dogfood` skill's pitfall note).
232
- - **Recovery for criticals:** either (a) replace the native tag with the `*-ui` equivalent (NOT auto-fixable — slot/attr semantics require human eyeball), (b) annotate the escape hatch with `data-native-ok="<reason>"`, or (c) document why the probe should be retired and update the script's `PROBES` array deliberately.
233
- - **Typical failure mode:** agent generated a composition surface reaching for native primitives. Recovery: pair-with the `adia-ui-dogfood` skill's "Native Primitive Leak Audit" section for the full triage flow.
234
- - **Pre-cut policy:** soft-fail in F-N1 sweep (exit 1 if criticals, exit 0 if only info-level); release proceeds if all criticals are either replaced or annotated. The audit is **opt-in for the release agent** — not blocking, but its findings get folded into the release notes if non-zero.
235
-
236
- ### `npm run audit:native-primitive-leak:strict`
237
-
238
- - **What:** same probe but fails on **any** finding (incl. info-level `<a href>` + `<img>`). Use only for full-sweep audit cycles, not pre-cut gates — info-level findings include legitimate `<a href>` navigation that doesn't need to be `<link-ui>` in most cases.
239
-
240
- ### `npm run audit:shell-composition`
241
-
242
- - **What:** static-HTML probe across `apps/`, `playgrounds/`, `catalog/` for admin-shell compositions missing one or more of the 12 canonical parts (per the consumer/app-author plugin's "Pre-author bundle gate" 8-part enumeration plus 4 sub-part checks). Catches the FEEDBACK-41 / 2026-05-23 claims-ui regression class: shells missing `<admin-statusbar>` (sidebar footer OR content footer), missing `[data-spacer]` + `[data-actions]` in content topbar, sidebar nav not wrapped in `<section>` / `<section-ui>` / `<admin-scroll>`, etc. Added 2026-05-23 in v0.6.29 lockstep (commit `52b5e4738`).
243
- - **Severity tiers:** outer `<admin-shell>`, `<admin-sidebar slot="leading">`, `<admin-content>`, and `<admin-scroll>` > `<admin-page>` are **critical** (shell can't render usefully without these); the `<admin-statusbar>` slots, sidebar topbar header, page-header/body pair, content topbar with toggle+breadcrumb are **warning** (shell renders but loses canonical chrome); `[data-spacer]` + `[data-actions]` are **info** by default.
244
- - **Escape hatch:** `data-shell-opt-out="<reason>"` attribute on the `<admin-shell>` opening tag demotes ALL findings on that shell to info-level. Use sparingly — for minimal shells or custom layouts only.
245
- - **Recovery for findings:** load the consumer/app-author plugin's admin-shell recipe ("Advanced — full markup, start here for any new product surface") and add the canonical markup for the missing part. Do NOT auto-fix — slot/attr semantics require human eyeball.
246
- - **Typical failure mode:** consumer agent (e.g. claude-code in a consumer repo) generates an admin dashboard without loading the Advanced recipe bundle. The FEEDBACK-41 cluster surfaces 5+ canonical-shape defects in one build. Recovery: pair-with the `adia-ui-dogfood` skill's "Admin-Shell Composition Audit" section for the full triage flow.
247
- - **Pre-cut policy:** opt-in soft-fail in F-N1 sweep (exit 1 if criticals/warnings, exit 0 if only info-level). Release proceeds if all findings are either fixed or annotated. The audit is opt-in for the release agent — not blocking, but its findings get folded into the release notes if non-zero.
248
-
249
- ### `npm run audit:shell-composition:strict`
250
-
251
- - **What:** same probe but fails on **any** finding (incl. info-level `[data-spacer]` / `[data-actions]` checks). Use for full-sweep cycles where you want every canonical chrome part enforced.
252
-
253
- ### `npm run audit:shell-composition:all`
254
-
255
- - **What:** same probe with info-level findings rendered in the human-readable output. Doesn't affect exit code. Use when investigating a shell's full composition profile, not just critical defects.
256
-
257
- ---
258
-
259
- ## §Category 7 — Corpus / training-pipeline freshness
260
-
261
- These are the gates that gate-keep the gen-UI training-data side of a release.
262
-
263
- ### `npm run verify:corpus`
264
-
265
- - **What:** every chunk in `packages/a2ui/corpus/chunks/*.json` is reachable and well-formed.
266
- - **Typical failure (v0.6.19 case):** 22 corpus-drift findings — chunks reference primitives that have changed shape.
267
- - **Recovery:** harvest fix (`packages/a2ui/mcp/scripts/...`). Routes to **`adia-ui-a2ui` skill** for the remediation.
268
-
269
- ### `npm run check:embeddings-fresh`
270
-
271
- - **What:** `chunk-embeddings.json` mtime is at-or-newer-than `chunks/_index.json`.
272
- - **Typical failure (v0.6.15 case):** corpus chunks regenerated but `chunk-embeddings.json` not — found 6.6 days stale.
273
- - **Recovery:** `npm run build:embeddings:chunks`. Requires `OPENAI_API_KEY` env. ~6 seconds for ~230 chunks at `text-embedding-3-small`. Stage `chunk-embeddings.json`; add a note to the a2ui-corpus CHANGELOG `[vX.Y.Z]` entry.
274
-
275
- ### `npm run check:chunks-fresh`
276
-
277
- - **What:** `chunks/_index.json` matches the on-disk chunk files (no orphaned entries, no missing entries).
278
- - **Typical failure:** peer added or removed a chunk without regenerating the index.
279
- - **Recovery:** `node scripts/build/index-chunks.mjs` (or equivalent — check `adia-ui-a2ui` skill).
280
-
281
- ### `npm run check:css-bundles-fresh`
282
-
283
- - **What:** verifies the CSS bundles produced by `scripts/build/bundle-css.mjs` are up-to-date with their source component CSS. Bundles ship as consumer-facing artifacts (e.g. the `@adia-ai/web-components/css/bundled`
284
- - `@adia-ai/web-modules/<cluster>/<shell>/bundled` exports); stale bundles mean consumers get yesterday's CSS even on a fresh install.
285
- - **Typical failure:** a component CSS file was edited but bundles weren't regenerated.
286
- - **Recovery:** `node scripts/build/bundle-css.mjs` to rebuild bundles; stage and commit the updated `dist/` outputs.
287
-
288
- ### `npm run check:js-bundles-fresh`
289
-
290
- - **What:** verifies the JS bundles produced by `scripts/build/bundle-js.mjs` (`web-components.min.js`, `everything.min.js`, the 4 per-shell `*.min.js`, AND the `icons-manifest.js` artifact) are up-to-date with their source. Bundles ship as CDN-consumer-facing artifacts; stale bundles mean jsdelivr/unpkg serve yesterday's JS.
291
- - **Typical failure:** a primitive or shell `.js` file was edited but bundles weren't regenerated; OR phosphor-icons-core was bumped but `icons-manifest.js` wasn't refreshed.
292
- - **Recovery:** `node scripts/build/bundle-js.mjs` to rebuild all 6 bundles + `icons-manifest.js`. Stage and commit the updated `dist/` outputs.
293
- - **Pre-flight verification** (manual; complements the check script):
294
-
295
- ```bash
296
- # everything.js entry MUST import @adia-ai/web-components first
297
- grep "import '@adia-ai/web-components'" packages/web-modules/everything.js
298
- # → import '@adia-ai/web-components'; (must be present)
299
-
300
- # everything.min.js MUST register primitives (≥100 `*-ui` tag strings)
301
- grep -oE '"[a-z][a-z-]*-ui"' packages/web-modules/dist/everything.min.js | sort -u | wc -l
302
- # → ≥100 (was 17 pre-v0.6.32 = shells-only bug)
303
-
304
- # everything.min.js size ≥1 MB raw (was 751KB pre-v0.6.32)
305
- ls -la packages/web-modules/dist/everything.min.js | awk '{print $5}'
306
- # → ~1093311 bytes raw / ~330KB Brotli wire
307
-
308
- # icons-manifest.js exists, non-empty, has cdn key
309
- node -e "const m=require('./packages/web-components/dist/icons-manifest.js'); \
310
- console.log('regular:', m.default.regular.length, '| cdn:', m.default.cdn)"
311
- # → regular: 1512 | cdn: https://cdn.jsdelivr.net/npm/@phosphor-icons/core@X.Y.Z/assets/
312
- ```
313
-
314
- - **Why this matters:** the v0.6.29-v0.6.31 release cycles shipped `everything.min.js` as a shells-only bundle (751KB, missing all primitives) AND `web-components.min.js` without a co-distributed `icons-manifest.js`. CDN consumers hit a hard `TypeError: Cannot read properties of undefined (reading 'toLowerCase')` crash on `.value` access for any primitive element. Fix shipped in v0.6.32+ (commits `c531eb82b` / `52b5e4738` and follow-ups); the manual verification commands above catch regressions. Source: FB-51 (chat-ui-framework-gap-analysis-report 2026-05-23).
315
-
316
- ### `npm run check:llms-fresh` (NOT YET SHIPPED — recommended)
317
-
318
- > **Status**: not in `package.json` as of v0.6.31. This is the recommended next-cycle addition; for now, use the manual verification commands below in the pre-flight checklist. See FB-52 §9 for the source.
319
-
320
- - **What:** would verify `site/llms.txt` exists, is non-empty (≥900 lines), and was last generated from the current sitemap. The `llms.txt` file is the machine-readable docs route index that AI coding agents consume for discovery. `build:site` runs `build:llms` first; this gate catches the case where `llms.mjs` errored and `build:site` proceeded silently.
321
- - **Typical failure:** a route was added under `site/` but `npm run build:llms` wasn't re-run; OR `scripts/build/llms.mjs` has a runtime error and the generator emitted a stale/partial file.
322
- - **Recovery:**
323
-
324
- ```bash
325
- npm run build:llms # regenerate
326
- ls site/llms.txt && wc -l site/llms.txt
327
- # → file exists, ≥900 lines
328
- ```
329
-
330
- Stage and commit the updated `site/llms.txt`.
331
-
332
- - **Why this matters:** AI agents (Claude Code, Cursor, Windsurf, Claude Desktop) use `llms.txt` for docs discovery against the live site at `ui-kit.exe.xyz`. A missing or stale file silently breaks that discovery path with no user-visible error.
333
-
334
- ### `npm run audit:chunk-reconcile`
335
-
336
- - **What:** duplicate-reconciliation report for the chunk corpus. Surfaces 3 classes of duplication the harvester does NOT catch: (1) fingerprint collisions (different names, byte-identical normalized HTML), (2) near-duplicates (slot/attr-only differences), (3) structural twins (same component-tree shape, different content).
337
- - **Typical failure:** corpus regrowth introduced accidental name forks (e.g. `auth-card` vs `auth-card-header` for the same shape).
338
- - **Recovery:** rename one source to match the other; re-run harvest; re-run `chunk-reconcile` to confirm convergence.
339
-
340
- ### `npm run audit:corpus-stats`
341
-
342
- - **What:** chunk corpus regrowth dashboard. Tracks `unique_names`, `instances`, `kind` distribution, and primary-tag distribution as the corpus regrows past the 500-tripwire (currently RED in `test:a2ui` 6b).
343
- - **Modes:** default = human-readable summary table; `--json` = machine-readable; `audit:corpus-stats:record` appends a dated row to `docs/reports/corpus-stats-history.md` (cron-friendly).
344
- - **No release gate;** purely for tracking corpus regrowth velocity.
345
-
346
- ### `npm run audit:corpus-stats:record`
347
-
348
- - **What:** record-mode variant of `audit:corpus-stats` — appends a dated row to the corpus-stats-history ledger. Cron-friendly; designed for weekly trend tracking.
349
-
350
- ---
351
-
352
- ## §Category 8 — Tests + types
353
-
354
- ### `npm run test:unit`
355
-
356
- - **What:** the vitest unit suite. ~1000+ tests across the monorepo.
357
- - **Typical failure (v0.6.20 case):** a peer changed CSS deliberately (FEEDBACK-38 addendum narrowed `[slot="heading"]`) but did NOT update the regression test (`admin-shell.test.js` still asserted the old blanket shape). **Stale test, not a regression.**
358
- - **Recovery:** if the failure is a stale-test against a deliberate, CHANGELOG-documented change, **update the test assertion**. If the failure is a real regression, fix the regression. The diff between the test's expectation and the actual is the truth: if the actual matches the CHANGELOG `[VERSION]` entry's described behavior, the test is stale.
359
- - **Parallel-contention flake (investigated 2026-06-02, v0.7.5 cut):** a few heavy web-modules composite suites (billing-overview, onboarding-checklist, integrations-page) were observed failing under full parallelism in the 0.7.2–0.7.4 cuts — `signals: drain loop exceeded 100 iterations` (a _non-fatal_ `console.error` + `break` in `core/signals.js`, which abandons pending effects → assertion fail or timeout). **It is load-dependent, NOT a code defect:** the scheduler is untouched since 0.7.2; vitest runs `pool: forks, isolate: true` (files don't share signal state — it's within-file timing under CPU contention); and **4/4 full-parallel runs were green on a quiet machine**. Likely surfaces only under heavy concurrent load (multiple agents/vites — see the multi-vite memory). **Recovery: re-run `npx vitest run --no-file-parallelism` (sequential is the source of truth for gating); do NOT treat a one-off parallel flake as a release blocker.** If it ever reproduces _reliably_, the real fix is to make the heavy suites flush effects deterministically (await settle) or pin them to a single fork via vitest `poolMatchGlobs` — NOT to raise the drain guard blindly (it would mask a genuine effect cycle).
360
-
361
- ### `npm run typecheck`
362
-
363
- - **What:** `tsc --noEmit`.
364
- - **Typical failure:** peer added a TS error in `.d.ts` or `.ts`.
365
- - **Recovery:** fix the type error.
366
-
367
- ### `npm run smoke:engines`
368
-
369
- - **What:** gen-UI engine smoke (monolithic + zettel + free-form) + retrieval-quality probes.
370
- - **Typical failure:** corpus drift produces composition-match failures.
371
- - **Recovery:** corpus remediation (routes to `adia-ui-a2ui`).
372
-
373
- ### `npm run smoke:register-engine`
374
-
375
- - **What:** 11/11 register-engine tests.
376
-
377
- ### `npm run test:a2ui`
378
-
379
- - **What:** A2UI MCP server + integration tests.
380
- - **Note:** expected count is 22/22 (+1 skipped) since v0.6.11; the AGENTS.md figure of "25/25" pre-dates a consolidation.
381
-
382
- ### `npm run eval:diff -- --engine zettel`
383
-
384
- - **What:** end-to-end gen-UI eval. Floors:
385
- - **Zettel**: cov ≥ 5%, avg ≥ 85, MRR ≥ 0.94 (post-§87a baseline)
386
- - **Free-form**: cov ≥ 88%, avg ≥ 85, F1 ≥ 52 (v0.5.2 §129 baseline)
387
- - **Monolithic**: cov = 100%, avg ≥ 95
388
- - **Typical failure:** corpus or schema change broke retrieval.
389
- - **Recovery:** `adia-ui-a2ui` skill — likely a chunk re-annotation pass.
390
-
391
- ---
392
-
393
- ## §Category 9 — Misc release safety
394
-
395
- ### `npm run dogfood:status`
396
-
397
- - **What:** aggregator over 7 dogfood audits — runs each via `--json`, classifies findings by defect-class + severity per the dogfooding-plan P0/P1/P2/P3 rubric, writes `.brain/findings/dogfood-tracker.md` as the always-regenerated ledger, prints a console summary. **Gate #17 in the pre-flight roster** (adopted v0.6.38 prep, 2026-05-26).
398
- - **Audits aggregated:**
399
- - `audit:warning-strong-vs-bg` (token-drift)
400
- - `audit:contenteditable-placeholder` (layout-jump)
401
- - `audit:static-properties-vs-yaml` (yaml-drift)
402
- - `audit:lifecycle-leak` (lifecycle)
403
- - `audit:token-pair` (contrast)
404
- - `audit:slot-vocab-vs-css` (yaml-drift)
405
- - `audit:icon-color-inherit` (icon-inherit)
406
- - **Severity mapping:** each audit's `critical` maps to P1 or P2 by defect class (lifecycle / contenteditable-placeholder / icon-color → P1 visibly wrong; warning-strong / static-properties / token-pair / slot-vocab → P2 conceptually wrong); each `advisory` → P3.
407
- - **Gate signal:** exit-1 when `P0 + P1 > 0`; exit-0 otherwise. P2/P3 findings are advisory and don't block the cut. Read the ledger (`.brain/findings/dogfood-tracker.md`) for the punch list grouped by defect class with canonical fix templates inlined per class.
408
- - **Typical failure:** a new substrate change introduced a P1 — a `MutationObserver` without `.disconnect()`, a `[data-empty]::before` pseudo without `position: absolute`, or an icon-color inheritance regression. Recovery: open the ledger, locate the file:line citation, apply the canonical fix template, re-run `dogfood:status`.
409
- - **Cost:** ~5s on a warm machine (7 audits run in series + temp-file redirect to bypass Node's 8KB pipe-truncation bug).
410
- - **Pre-cut policy:** **MUST PASS BEFORE TAG.** The gate's whole purpose is to catch regressions in defect classes the substrate has already eliminated. Any P0/P1 means "we just re-introduced a class of bug we already paid down" — recovery is canonical (templates inlined), so the floor stays low.
411
-
412
- ### `npm run check:links`
413
-
414
- - **What:** every intra-repo markdown link resolves.
415
- - **Typical failure:** a doc reference broke after a file move.
416
-
417
- ### `npm run verify:pack`
418
-
419
- - **What:** `npm pack --dry-run` succeeds for every package. Catches malformed `files`/`exports` in `package.json`.
420
-
421
- ### `npm run verify:contrast`
422
-
423
- - **What:** color contrast pairs satisfy WCAG thresholds.
424
-
425
- ### `npm run verify:palette`
426
-
427
- - **What:** OKLCH ramp stability.
428
-
429
- ### `npm run check:extensibility`
430
-
431
- - **What:** validates the 5-point §Teach extensibility binding across all senior skills (frontmatter trigger cluster, capability-menu Teach label, teach-protocol content + size, extensibility-rationale cross-reference, manifest binding). Ensures every skill's §Teach mode is harness-discoverable. Source: a substrate-side `check-extensibility` skills gate (lives in the @adia-ai monorepo, not in this plugin).
432
- - **Typical failure:** a new senior skill ships without §Teach wiring; or a skill's teach-protocol falls below the size threshold; or the extensibility-rationale cross-reference rots out.
433
- - **Recovery:** read the per-skill P-failure detail; restore the missing binding point per the skill-ecosystem conventions in `${CLAUDE_PLUGIN_ROOT}/references/shared/skill-conventions.md`.
434
-
435
- ### `npm run check:extensibility:strict`
436
-
437
- - **What:** same probe but fails on any P-failure across any senior skill. Used in the skills-ecosystem gate chain.
438
-
439
- ### `npm run check:pev`
440
-
441
- - **What:** validates the 5-point §Plan-Execute-Verify binding across all senior skills (top-band `## §Plan-Execute-Verify` H2 + cold- start band mention, per-mode verify-target table, §Teach → §PEV cross-reference, cold-start mention, skill.json claims verify capability). Source: a substrate-side `check-pev` skills gate (lives in the @adia-ai monorepo, not in this plugin).
442
- - **Typical failure:** a senior skill's §Plan-Execute-Verify section was renamed; or a new mode landed without a verify-target row; or a §Teach landing missed the cross-reference.
443
- - **Recovery:** read the per-skill P-failure detail; restore the binding per the 5-point PEV-binding check in `${CLAUDE_PLUGIN_ROOT}/references/shared/pev-rationale.md`.
444
-
445
- ### `npm run check:pev:strict`
446
-
447
- - **What:** same probe but fails on any P-failure. Used in the skills-ecosystem gate chain.
448
-
449
- ### `npm run audit:native-primitive-leak:all`
450
-
451
- - **What:** same probe as `audit:native-primitive-leak` but renders info-level findings (`<a href>`, `<img>`) in the human-readable output. Doesn't affect exit code. Use for full-sweep audit cycles where you want to see every native-primitive instance, including legitimate ones.
452
-
453
- ### `npm run audit:skill-hygiene`
454
-
455
- - **What:** measure a skill's token / structure / drift health against soft thresholds. UNLIKE `check:*` gates, this is a health report — emits metrics + flagged findings but exits 0 unless `--strict` is passed. Eight axes (see the skill-hygiene doctrine in `${CLAUDE_PLUGIN_ROOT}/references/shared/skill-conventions.md`).
456
- - **Typical failure:** skill grew past soft thresholds (token count, reference-file count, frontmatter description length).
457
- - **Recovery:** operator triages — sometimes the growth is real and thresholds need raising; sometimes the skill needs pruning. Not release-blocking.
458
-
459
- ### `npm run audit:skills`
460
-
461
- - **What:** ops-repo skill-surface audit. Walks 6 detection signals to surface skill candidates (procedure-shaped sections in journals), stale skills, and redundancy. Read-only. Optionally writes a `kind: skill-audit` entry to `.brain/audit-history/YYYY-MM-DD-*.json`.
462
- - **No release gate;** stewardship companion script that runs out of band when the operator wants to review the skill surface.
463
-
464
- ---
465
-
466
- ## §The "minimum 6" — Just-verify (mode 6) default
467
-
468
- If the operator says "just verify" without specifying gates, run this subset (it's the fastest cycle-validating set that catches release- blocking issues):
469
-
470
- ```bash
471
- node scripts/build/components.mjs --verify
472
- npm run check:lockstep
473
- npm run verify:traits
474
- npm run test:unit
475
- npm run typecheck
476
- npm run check:demo-shells
477
- ```
478
-
479
- Add `verify:corpus` + `check:embeddings-fresh` if corpus chunks were touched. Add `check:lightningcss-build` if CSS was touched. Add F-N1 (`check:release --all-pending`) if release tags exist locally.
480
-
481
- ---
482
-
483
- ## §The "full sweep" — pre-cut default for substantive cycles
484
-
485
- For modes 1 / 2 (Cut & ship or Author from scratch with substantive package changes), run the full sweep listed in `cycle-happy-path.md` § Step 3. Total wall time on a modern Mac: ~90 seconds.
486
-
487
- ---
488
-
489
- ## §The omnibus
490
-
491
- ```bash
492
- npm run check
493
- ```
494
-
495
- This invokes everything (per `package.json` `"check"` script). Heavy. Use when re-baselining a stale checkout or after a major architecture change; otherwise the targeted subset is faster.
496
-
497
- ---
498
-
499
- ## §Gate-roster currency — self-audit
500
-
501
- This file MUST stay in sync with `package.json` `scripts`. The **Phase 4** `scripts/audit-gate-roster.mjs` will enumerate every `check:*` / `verify:*` script in `package.json` and compare to this catalogue. Until then, the discipline is manual: when you encounter a gate that's not in this file, **add it** with the row layout at the top.
502
-
503
- The §SelfAudit Axis 9 (`SKILL.md` § SelfAudit Phase 2) makes this a hygiene metric.
504
-
505
- ---
506
-
507
- ## §Category 10 — Curation backlog (Phase 4 catalog completion pass)
508
-
509
- The 48 gates below exist in `package.json` `scripts` but the Phase 1 catalog (Categories 1-9 above) doesn't yet have proper rows for them. Added in **v1.0.1** of this skill so `audit-gate-roster.mjs` reports a clean roster. **Each entry below is a stub** — the command + 1-sentence hint. Future operators encountering one of these gates in a release cycle should: (a) promote the entry to its proper category above with full **What / Reads / Typical failure / Recovery** columns, and (b) note the cycle the promotion happened in.
510
-
511
- ### §`npm run check` structural + CSS-layer pre-flight gates
512
-
513
- Composed into the `npm run check` pre-flight aggregate (so they gate every substantive cut). Stub rows added **v1.10.5** (2026-06-02) when `audit-gate-roster.mjs` was rescoped to the release-flow universe; promote to a full Category 1-9 row when a cycle interacts with one.
514
-
515
- #### `npm run check:admin-page-structure`
516
-
517
- Admin-page composite structural integrity (`<admin-statusbar>` / `[data-spacer]` / `[data-actions]` present) — the FB-41 claims-ui regression class. `--strict`.
518
-
519
- #### `npm run check:brain-notes-frontmatter`
520
-
521
- Required frontmatter on `.brain/notes/` + `.brain/release-notes/` files (the `{date}-`/`{version}-` prefix + `created`/`last_edited` convention).
522
-
523
- #### `npm run check:brand-chrome`
524
-
525
- Brand-chrome token usage across chrome surfaces (no raw colors; `--a-chrome-*`). `--strict`.
526
-
527
- #### `npm run check:cdn-pins`
528
-
529
- CDN `@0.X` minor-range pins cited in docs/notes are coherent with the current package minor (catches a stale `@0.6` after a `0.7` cut).
530
-
531
- #### `npm run check:components-css-barrel`
532
-
533
- The web-components `index.css` barrel `@import`s every primitive's CSS — add-a-component → silently-unstyled drift (the site v1.7.3 regression class).
534
-
535
- #### `npm run check:display-default`
536
-
537
- Components honor the display-default convention (no missing host `display`).
538
-
539
- #### `npm run check:dogfood-audits`
540
-
541
- Aggregator — runs the 6 component dogfood audits (`audit:warning-strong-vs-bg`, `:contenteditable-placeholder`, `:static-properties-vs-yaml`, `:lifecycle-leak`, `:token-pair`, `:slot-vocab-vs-css`). These `audit:*` scripts are adia-ui-authoring's §SelfAudit domain; the release flow runs them via this gate.
542
-
543
- #### `npm run check:empty-raw-table`
544
-
545
- Flags `<table-ui raw>` with an empty element body (renders nothing — `raw` means the consumer owns the body). Comment-aware. Added v0.7.5. `--strict`.
546
-
547
- #### `npm run check:foundation-layers`
548
-
549
- Foundation CSS cascade-layer placement (tokens/reset/foundation in the right `@layer` order). `--strict`.
550
-
551
- #### `npm run check:gap-analysis-freshness`
552
-
553
- The gap-analysis docs are regenerated from the current corpus (not stale).
554
-
555
- #### `npm run mcp:smoke`
556
-
557
- Builds `retrieval` + `mcp-server`, then runs the merged + extended MCP smoke harnesses — the A2UI MCP pipeline composes end-to-end. Tail of `npm run check`.
558
-
559
- ### §Suffix variant convention
560
-
561
- Many gates have `:strict` / `:fix` / `:json` / `:quiet` suffix variants:
562
-
563
- - **`:strict`** — non-zero exit on any warning (default: warns don't fail). Most `check:*` audit-script gates have a strict variant.
564
- - **`:fix`** — apply automatic fixes (e.g. `check:lockstep:fix`).
565
- - **`:json`** / **`:quiet`** — output-format variants of the same gate.
566
-
567
- A variant is "documented" if it has a row in this catalog OR if its base gate is documented in Categories 1-9 above. The `audit-gate-roster.mjs` script tracks each variant as a separate entry; tighten the catalog by either adding the variant inline in its base's row OR adding a dedicated stub below.
568
-
569
- ### §Skill / agent hygiene gates
570
-
571
- #### `npm run check:agents` / `:json` / `:quiet`
572
-
573
- - **Command:** `node scripts/sync-agent-resources.mjs` (+ `--json` / `--quiet`)
574
- - **Hint:** Audits + syncs agent-resource files across the `.agents/` tree.
575
-
576
- #### `npm run check:skills` / `:strict`
577
-
578
- - **Command:** `node scripts/skills/check-skill-frontmatter.mjs && node scripts/skills/check-skill-patterns-sot.mjs`
579
- - **Hint:** Compound gate — runs skill-frontmatter validation + skill-patterns-vs-SoT drift check. `:strict` fails on any warn.
580
-
581
- #### `npm run check:skill-patterns-sot`
582
-
583
- - **Command:** `node scripts/skills/check-skill-patterns-sot.mjs`
584
- - **Hint:** Detects drift between skill-declared §Patterns and the upstream yaml SoT. Added in v0.6.21 cycle (§392 journal entry).
585
-
586
- ### §Component / primitive structural drift gates (extensions)
587
-
588
- #### `npm run check:core-barrel-dts`
589
-
590
- - **Command:** `node scripts/release/check-core-barrel-dts.mjs`
591
- - **Hint:** Verifies the `@adia-ai/web-components/core` barrel exports have matching `.d.ts` declarations.
592
-
593
- #### `npm run check:element-imports`
594
-
595
- - **Command:** `node scripts/audit/audit-element-imports.mjs --strict`
596
- - **Hint:** Audits cross-element imports — catches monorepo-absolute paths and other shape drift.
597
-
598
- #### `npm run check:extract-props-coverage` / `:strict`
599
-
600
- - **Command:** `node scripts/release/check-extract-props-coverage.mjs` (+ `--strict`)
601
- - **Hint:** Verifies extract-props coverage across components.
602
-
603
- #### `npm run check:rendered-completeness` / `:strict`
604
-
605
- - **Command:** `node scripts/release/check-rendered-completeness.mjs` (+ `--strict`)
606
- - **Hint:** Verifies rendered output completeness across primitive surfaces.
607
-
608
- #### `npm run check:dts-sibling-presence:strict`
609
-
610
- - **Command:** `node scripts/release/check-dts-sibling-presence.mjs --strict`
611
- - **Hint:** `:strict` variant of `check:dts-sibling-presence` (Category 3).
612
-
613
- #### `npm run check:form-element-label-opt-out:strict`
614
-
615
- - **Command:** `node scripts/release/check-form-element-label-opt-out.mjs --strict`
616
- - **Hint:** `:strict` variant of `check:form-element-label-opt-out` (Category 5).
617
-
618
- #### `npm run check:registry-catalog-coherence:strict`
619
-
620
- - **Command:** `node scripts/release/check-registry-catalog-coherence.mjs --strict`
621
- - **Hint:** `:strict` variant of `check:registry-catalog-coherence` (Category 3).
622
-
623
- #### `npm run check:template-interp:strict`
624
-
625
- - **Command:** `node scripts/release/check-template-interp.mjs --strict`
626
- - **Hint:** `:strict` variant of `check:template-interp` (Category 5).
627
-
628
- #### `npm run check:yaml-description-length`
629
-
630
- - **Command:** `node scripts/audit/audit-yaml-description-length.mjs --strict`
631
- - **Hint:** Yaml description-length policy enforcement.
632
-
633
- #### `npm run check:yaml-impl-coverage:strict`
634
-
635
- - **Command:** `node scripts/release/check-yaml-impl-coverage.mjs --strict`
636
- - **Hint:** `:strict` variant of `check:yaml-impl-coverage` (Category 5).
637
-
638
- #### `npm run check:yaml-legacy-claims`
639
-
640
- - **Command:** `node scripts/audit/audit-yaml-legacy-claims.mjs --strict`
641
- - **Hint:** Audits yaml files for retired-claim phrasings (e.g. `v0.4.0-legacy backcompat`). Added in the §404 SoT-completeness sweep.
642
-
643
- #### `npm run check:yaml-rules-coverage`
644
-
645
- - **Command:** `node scripts/audit/audit-yaml-rules-coverage.mjs --strict`
646
- - **Hint:** Yaml `a2ui.rules` coverage policy.
647
-
648
- ### §Visual / structural integrity gates (extensions)
649
-
650
- #### `npm run verify:no-legacy-shell-shapes`
651
-
652
- - **Command:** `node scripts/verify/no-legacy-shell-shapes.mjs`
653
- - **Hint:** Scans `site/`, `apps/`, `playgrounds/`, `catalog/` for legacy admin-shell DOM. Added in v0.6.12 (ADR-0032). Wired into omnibus `npm run check`.
654
-
655
- #### `npm run smoke:consumers`
656
-
657
- - **Command:** `node scripts/smoke-consumer-migrations.mjs`
658
- - **Hint:** Smokes 6 consumer-migration paths (admin-shell, site-index, chat, gen-ui, construct-canvas, a2ui-editor). Mentioned in v0.6.12 ledger as "6/6 smoke:consumers."
659
-
660
- ### §Corpus / training-pipeline gates (extensions)
661
-
662
- #### `npm run verify:components` (alias)
663
-
664
- - **Command:** `node scripts/build/components.mjs --verify`
665
- - **Hint:** npm-script alias for the canonical pre-flight `node scripts/build/components.mjs --verify` command in Category 2. Both invocations are equivalent.
666
-
667
- #### `npm run verify:corpus:strict`
668
-
669
- - **Command:** `node scripts/verify/corpus.mjs --strict`
670
- - **Hint:** `:strict` variant of `verify:corpus` (Category 7).
671
-
672
- #### `npm run check:corpus-rules-format`
673
-
674
- - **Command:** `node scripts/audit/audit-corpus-rules-format.mjs --strict`
675
- - **Hint:** Audits A2UI corpus rules format consistency.
676
-
677
- #### `npm run smoke:chunks`
678
-
679
- - **Command:** `node packages/a2ui/mcp/scripts/test-chunks.mjs`
680
- - **Hint:** Corpus-chunk smoke (under `adia-ui-a2ui` skill's broader domain).
681
-
682
- #### `npm run smoke:state-cache`
683
-
684
- - **Command:** `node packages/a2ui/mcp/scripts/smoke-state-cache.mjs`
685
- - **Hint:** A2UI state-cache smoke. Tied to multi-turn refinement state.
686
-
687
- ### §Release-identity gates (npm-script alias)
688
-
689
- #### `npm run check:release`
690
-
691
- - **Command:** `node scripts/release/check-release.mjs`
692
- - **Hint:** npm-script form of F-N1 (Category 1). Equivalent to `node scripts/release/check-release.mjs --all-pending` when run during a release cycle.
693
-
694
- #### `npm run check:lockstep:fix`
695
-
696
- - **Command:** `node scripts/release/check-lockstep.mjs --fix`
697
- - **Hint:** `:fix` variant of `check:lockstep` (Category 1). Auto-aligns internal `^X.Y.0` dep ranges when they drift.
698
-
699
- ### §Test + types gates (extensions)
700
-
701
- #### `npm run verify:exports-conditionals`
702
-
703
- - **Command:** `node scripts/verify/exports-conditionals.mjs`
704
- - **Hint:** Verifies `package.json` `exports` map conditionals (TS / import / default) are well-formed.
705
-
706
- #### `npm run check:free-form-eval-regression`
707
-
708
- - **Command:** `node scripts/release/check-free-form-eval-regression.mjs`
709
- - **Hint:** Free-form eval regression guard (paired with Category 8's `eval:diff`).
710
-
711
- #### `npm run check:iteration-prompt-coherence` / `:strict`
712
-
713
- - **Command:** `node scripts/release/check-iteration-prompt-coherence.mjs` (+ `--strict`)
714
- - **Hint:** Iteration-prompt-vs-SoT coherence (gen-UI multi-turn refinement).
715
-
716
- #### `npm run test:llm`
717
-
718
- - **Command:** `vitest run packages/llm/`
719
- - **Hint:** Subset of `test:unit` scoped to the `@adia-ai/llm` package.
720
-
721
- #### `npm run test:a2ui:full`
722
-
723
- - **Command:** `node packages/a2ui/mcp/scripts/test-a2ui.mjs --thinking --verbose`
724
- - **Hint:** Full A2UI test suite (thinking + verbose). Slower than `test:a2ui`.
725
-
726
- #### `npm run test:all`
727
-
728
- - **Command:** `node packages/a2ui/mcp/scripts/test-a2ui.mjs && node packages/a2ui/mcp/scripts/test-evals.mjs`
729
- - **Hint:** A2UI test + eval combined.
730
-
731
- #### `npm run test:evals` / `:baseline` / `:thinking`
732
-
733
- - **Command:** `node packages/a2ui/mcp/scripts/test-evals.mjs` (+ `--save-baseline` or `--mode=thinking`)
734
- - **Hint:** A2UI evals; `:baseline` saves a new baseline; `:thinking` runs in thinking mode.
735
-
736
- #### `npm run test:unit:watch`
737
-
738
- - **Command:** `vitest`
739
- - **Hint:** Watch-mode variant of `test:unit` (Category 8). Dev convenience.
740
-
741
- #### `npm run test:visual` / `:pro`
742
-
743
- - **Command:** `node packages/a2ui/mcp/scripts/visual-validate.mjs --open` (+ `--pro`)
744
- - **Hint:** Visual-validation harness (opens a browser).
745
-
746
- #### `npm run smoke:genui-composition-retrieval`
747
-
748
- - **Command:** `node scripts/smoke-genui-composition-retrieval.mjs`
749
- - **Hint:** Gen-UI composition-retrieval smoke.
750
-
751
- #### `npm run smoke:genui-error-ux`
752
-
753
- - **Command:** `node scripts/smoke-genui-error-ux.mjs`
754
- - **Hint:** Gen-UI error-UX smoke.
755
-
756
- #### `npm run smoke:issues`
757
-
758
- - **Command:** `node packages/a2ui/mcp/scripts/smoke-issues.mjs`
759
- - **Hint:** A2UI issue-reporter smoke.
760
-
761
- #### `npm run smoke:iteration-synthesis`
762
-
763
- - **Command:** `node scripts/smoke-iteration-synthesis.mjs`
764
- - **Hint:** Iteration-synthesis (multi-turn refinement) smoke.
765
-
766
- #### `npm run smoke:mcp-extended`
767
-
768
- - **Command:** `node packages/a2ui/mcp/scripts/smoke-extended.mjs`
769
- - **Hint:** Extended MCP-server smoke (beyond the standard `mcp:smoke` 3/3).
770
-
771
- #### `npm run smoke:refine`
772
-
773
- - **Command:** `node packages/a2ui/mcp/scripts/smoke-refine.mjs`
774
- - **Hint:** Multi-turn refinement smoke.
775
-
776
- ---
777
-
778
- That closes the §Category 10 curation backlog at v1.0.1. Subsequent cycles should promote entries from here to Categories 1-9 above as operators encounter them with enough detail to fill the full row shape.