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

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 +3 -6
  2. package/CHANGELOG.md +27 -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 +27 -2
  90. package/skills/{adia-ui-release → adia-release}/scripts/dispatch-publish.mjs +4 -1
  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 +13 -21
  95. package/skills/{adia-ui-release → adia-release}/scripts/tag-lockstep.mjs +5 -1
  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,262 +0,0 @@
1
- # `recovery-paths.md` — the 7 recovery scenarios
2
-
3
- > Loaded by mode 2 (Author from scratch) when `[Unreleased]` promotion requires extension beyond the peer's early release commit; by mode 4 (Batch push); on F-N1 or pre-flight failure in mode 1; and by mode 7 (Post-release recovery — Phase 3 expansion).
4
-
5
- Each scenario below has the **shape** ("what does the repo state look like?"), the **canonical example** (the cycle where it happened), the **resolution** (commands + judgment calls), and **what to write in the ledger**.
6
-
7
- ---
8
-
9
- ## §Scenario 1 — Version-skip correction
10
-
11
- **Shape:** Peer cut a release commit but mislabeled the version. Common form: package.json bumped 0.6.X → 0.6.X+2, skipping 0.6.X+1. The peer's CHANGELOG body may even reference both "the v0.6.X+1 sweep" and "the v0.6.X+2 cut" as if they were two separate releases. Tags don't exist yet; npm latest is still 0.6.X. The commit is unpushed.
12
-
13
- **Canonical case:** v0.6.12 correction (2026-05-20).
14
-
15
- Peer commit `e8490d96d release(*): v0.6.13 lockstep — admin-shell composition anchors + legacy CSS bridges retired` bumped 0.6.11 → 0.6.13, skipping 0.6.12. The CHANGELOGs referenced "the v0.6.12 dogfooding sweep" and "the v0.6.13 cut" as if both shipped. Operator asked for v0.6.12 release; investigation revealed it was the same body of work, mislabeled.
16
-
17
- **Resolution:**
18
-
19
- 1. Verify the skip — `npm view <pkg> versions --json | tail` confirms no 0.6.X+1 on npm; `git tag --list 'v0.6.X+1*'` confirms no tags. Run pre-flight gates at the peer's commit to confirm content is shippable (no demo-shell fail etc.).
20
- 2. **Correct the version in-place via a NEW commit on top of the peer's commit** (NOT amend — the peer's commit stays for history; `b62992aa0` is the repo precedent).
21
- 3. Run a script (the v0.6.12 cycle used `/tmp/v0612-correct.mjs`) that rewrites every occurrence of the wrong version. For v0.6.12, 25 files needed edits:
22
- - 9 × `package.json` (version field)
23
- - 9 × `CHANGELOG.md` (header + any body refs)
24
- - 4 × admin-shell CSS files (header comment refs)
25
- - 1 × ADR-0032 (multiple body refs — be careful to preserve filename references like `v0.6.13-admin-shell-composition-anchors-...md` that intentionally encode the original label)
26
- - 1 × FEEDBACK ticket (status line)
27
- - 1 × audit note (factual reference)
28
- - 1 × `package-lock.json` (regenerate via `npm install --package-lock-only`)
29
- 4. Commit the correction with a `fix(release): correct v0.6.X+2 version-skip → v0.6.X+1` message that documents the discovery.
30
- 5. **THEN** proceed to the standard cycle from Step 5 onward (`cycle-happy-path.md`). Tag, push, publish at v0.6.X+1.
31
-
32
- **What to write in the ledger:**
33
-
34
- ```json
35
- "version_skip_correction": {
36
- "issue": "Peer release commit <sha> ('release(*): v0.6.X+2 ...') bumped 0.6.X → 0.6.X+2, skipping 0.6.X+1. 0.6.X+1 was never tagged or published (npm latest was 0.6.X). The commit's CHANGELOG bodies further framed the work as two separate releases though it is a single commit.",
37
- "root_cause": "<usually: multi-phase plan staged across versions; phases collapsed but the label landed on the higher version>",
38
- "fix": "Correction commit <new-sha> — 0.6.X+2 → 0.6.X+1 across N files: 9 package.json + 9 CHANGELOG + ..."
39
- }
40
- ```
41
-
42
- ---
43
-
44
- ## §Scenario 2 — Batch push
45
-
46
- **Shape:** Multiple unpushed `release(*): vX.Y.Z` commits sit on `main` since the last published tag. Each one bumps the version, each has its own CHANGELOG block, each has its own substantive content. The operator asks to "initiate the latest version" or "publish what's accumulated."
47
-
48
- **Canonical cases:**
49
-
50
- - v0.6.1 → v0.6.6 (6-release batch, 2026-05-19)
51
- - v0.6.14 + v0.6.15 (2-release batch, 2026-05-20)
52
-
53
- **Resolution:**
54
-
55
- 1. Re-baseline. Identify the cluster of unpushed `release(*):` commits. Order them oldest-to-newest.
56
- 2. For EACH version's release commit:
57
- - Identify the tag-point SHA. **Tag at each version's release-commit SHA**, not at HEAD. (Exception to the standard "tag at HEAD" rule — batch push tags each version where it was actually cut.) Memory: `feedback_tag_at_head_not_bump_commit`.
58
- - Run pre-flight gates at that SHA (via detached checkout if you want full rigor; or trust the peer's verification if the commits were verified at cut time).
59
- - Run F-N1 against the tag candidate — diff-coverage warns may differ per version.
60
- 3. Push `main` (sweeps all commits at once).
61
- 4. Push the per-version tags + umbrella tags (10 tags per version).
62
- 5. **Publish in version order, oldest first**, waiting for each version's 9 workflows to settle before dispatching the next version's 9. This is non-negotiable — `npm dist-tag latest` is set by publish order. If you dispatch v0.6.15 before v0.6.14, you have to manually `npm dist-tag add @adia-ai/<pkg>@0.6.15 latest` after to fix it.
63
- 6. GH releases — author one note per version, then `gh release create` each. The notes can be terser since users will read the rollup.
64
- 7. Site deploy — once at the END (deploys reflect HEAD).
65
- 8. Ledger — write **one batch-push ledger** at `.brain/audit-history/YYYY-MM-DD-batch-push-vA.B.C-vX.Y.Z.json` covering all the versions, instead of N per-version ledgers.
66
-
67
- **What to write in the ledger:**
68
-
69
- ```json
70
- "kind": "batch-push",
71
- "audit_id": "YYYY-MM-DD-batch-push-vA-vZ",
72
- "versions": ["A.B.C", "A.B.D", "A.B.E"],
73
- "tag_commits": {
74
- "vA.B.C": "<sha>",
75
- "vA.B.D": "<sha>",
76
- ...
77
- },
78
- "publish_workflows": {
79
- "dispatched": "N/N — vA.B.C set dispatched + settled FIRST, then vA.B.D set, then vA.B.E set (ordering ensures npm latest lands on vA.B.E)",
80
- "conclusions": "N/N success"
81
- }
82
- ```
83
-
84
- ---
85
-
86
- ## §Scenario 3 — Author from scratch (`[Unreleased]` promotion)
87
-
88
- **Shape:** Peer landed source changes + CHANGELOG entries under `## [Unreleased]` but didn't bump versions or cut a release commit. Operator asks to "initiate v0.6.X release."
89
-
90
- **Canonical cases:**
91
-
92
- - v0.6.19 (claims-ui-v4 FB-22-33 batch — 12 unpushed commits, all under `[Unreleased]`)
93
- - v0.6.20 (claims-ui-v5 FB-34-39 batch — 14 unpushed commits, all under `[Unreleased]`)
94
- - v0.6.21 (table-ui §403 + FB-37 retraction — 23 unpushed commits)
95
-
96
- **Resolution:** Standard `cycle-happy-path.md` Variant B (Step 4 inserts `[Unreleased]` → `[vX.Y.Z] — DATE` promotion). The CLI helper `scripts/promote-unreleased.mjs` mechanizes the heading swap. For packages that need fresh blocks (the corpus-regen case), author them per `changelog-discipline.md` § Authoring.
97
-
98
- ---
99
-
100
- ## §Scenario 4 — `[Unreleased]` extension (early-cut release commit + post-bump work)
101
-
102
- **Shape:** Peer pre-cut a release commit early (e.g. `f167b72bc release(*): v0.6.18 lockstep — loading state + text-ui`) but then landed MORE commits on top that:
103
-
104
- - Have CHANGELOG entries under `[Unreleased]` (the peer was building the next release)
105
- - Include a fix that **completes the early release's own scope** (e.g. `d6d980072 fix(demo-shells): import skeleton-ui` — fixes the demo shells that f167b72bc's loading-state feature broke)
106
-
107
- The early release commit FAILS a release-blocking gate (`check:demo-shells` in v0.6.18). The completing fix is entangled with unrelated `[Unreleased]` work — can't be cleanly cherry-picked back.
108
-
109
- **Canonical case:** v0.6.18 — f167b72bc's stat/table demo shells used `<skeleton-ui>` without importing it; `check:demo-shells` failed at that commit. The fix `d6d980072` landed 10 commits later, interleaved with FB-13/14/15/17 `[Unreleased]` work.
110
-
111
- **Resolution:** Two options:
112
-
113
- 1. **Cherry-pick the fix onto the release commit** to make it shippable in its original scope. Off-mainline tag — messy archaeology.
114
- 2. **Extend the release to HEAD** by promoting the `[Unreleased]` content into `[VERSION]`. The release becomes larger but ships everything consistent. ← This is what v0.6.18 did.
115
-
116
- **Choose option 2** when the early release commit fails a gate AND the completing fix can't be isolated. Choose option 1 only if the operator explicitly wants the minimal scope.
117
-
118
- For option 2:
119
-
120
- 1. Verify HEAD passes all gates (detached checkout from `f167b72bc` confirms the gate failure there; verify HEAD passes).
121
- 2. Promote `[Unreleased]` → `[VERSION]` in the affected CHANGELOGs (`promote-unreleased.mjs`).
122
- 3. For packages whose changes have NO `[Unreleased]` entry yet but DID change (corpus catalog regen — same case as `changelog-discipline.md` § Authoring), write a fresh `[VERSION]` block.
123
- 4. Commit the CHANGELOG merge with a message that documents the boundary decision (the v0.6.18 cycle's `552bc825f` is the reference).
124
- 5. Tag at the new HEAD; proceed.
125
-
126
- **What to write in the ledger:**
127
-
128
- ```json
129
- "boundary_decision": {
130
- "issue": "Early release commit <sha> failed <gate>. Fix landed in <fix-sha>, entangled with [Unreleased] work that includes <FB list>.",
131
- "resolution": "v0.6.X absorbed everything through HEAD. <Unreleased> CHANGELOG sections promoted to [v0.6.X] across <pkg list>. v0.6.X tags land at <merge-sha>."
132
- }
133
- ```
134
-
135
- ---
136
-
137
- ## §Scenario 5 — Stale test detection
138
-
139
- **Shape:** A pre-flight test fails. The test asserts a behavior the peer deliberately changed in a `[Unreleased]` / `[VERSION]` entry. The failure isn't a regression — it's a stale test that was never updated to match the deliberate change.
140
-
141
- **Canonical case:** v0.6.20 — `admin-shell.test.js` 'contains the vanilla-HTML fallback block' test (a v0.6.17 regression guard) asserted the old blanket `[slot="heading"] { display: none }` shape. The v0.6.20 FEEDBACK-38-addendum fix deliberately narrowed it to `:is(span,p,div,h1-6)[slot="heading"], [slot="heading"]:not(:has(> [slot]))` (composed wrappers survive collapse). The peer shipped the CSS change but did NOT update the test.
142
-
143
- **Resolution:**
144
-
145
- 1. **Read the test's assertion + read the CHANGELOG entry that documents the change.** Both should describe the same behavior. If they disagree → one of them is stale.
146
- 2. **Read the actual production code** that the test asserts about. If the code matches the CHANGELOG entry's description → the test is stale. If the code matches the test → the CHANGELOG is wrong (or the change was reverted).
147
- 3. For a stale test: update the assertion to match the new, documented behavior. **Add an inline comment** in the test explaining the v0.X.Y change so future operators don't repeat the diagnosis.
148
- 4. Consider adding a NEW assertion that pins the v0.X.Y contract explicitly (the v0.6.20 case added the `:not(:has(> [slot]))` guard assertion).
149
- 5. Run the test — confirm it passes.
150
- 6. Include the test update in the release commit's allowlist (it's part of the release work — the operator authored the fix that the peer's change implied).
151
-
152
- **What to write in the ledger:**
153
-
154
- ```json
155
- "notes": [
156
- "STALE TEST FIXED: <test path> '<test name>' asserted the old <behavior>. The v0.X.Y <feature> fix deliberately changed it to <new behavior>. The peer shipped the source change but did not update the test. Deploy session updated the assertion to match the new shape + added a guard assertion for the <new contract>. Not a regression — a stale test."
157
- ]
158
- ```
159
-
160
- ---
161
-
162
- ## §Scenario 6 (bonus) — Concurrent peer mid-cycle
163
-
164
- **Shape:** A peer agent is actively modifying files while you're running a release. You see the working tree shift between commands. `git stash pop` may report a conflict. New uncommitted files appear that weren't there 30 seconds ago.
165
-
166
- **Canonical case:** v0.6.20 post-stash-pop — the peer committed the FEEDBACK-37 revert (`664cb3f55`) RIGHT AFTER my release shipped, making my stashed admin-shell.js delta redundant. The pop reported "kept the stash."
167
-
168
- **Resolution:**
169
-
170
- 1. **Don't fight the peer.** Their working-tree changes are theirs. Confirm v0.6.X is fully shipped (tag pushed + npm published + GH releases + site deployed + ledger committed) — if yes, the release itself is safe regardless of post-release working-tree chaos.
171
- 2. If you stashed peer files at Step 2 of the cycle, after the cycle completes:
172
- - Try `git stash pop`. If clean — great.
173
- - If "kept the stash" — investigate: is the stash now redundant (peer committed the same content)? Compare via `git stash show -p stash@{0}` vs the relevant `git log -p` for the file.
174
- - If redundant: `git stash drop` (the work was preserved in the peer's commit).
175
- - If NOT redundant: leave the stash. It preserves the peer-in-flight change; the peer (or operator) decides next.
176
- 3. Note the situation in the ledger so the next cycle has context.
177
-
178
- ---
179
-
180
- ## §Scenario 7 — Tags pushed but ZERO publish workflows triggered (the batch-tag-push skip)
181
-
182
- **Shape:** The cut commit is pushed, all 10 tags (umbrella + 9 per-package) exist on `origin` — but **no `publish-<pkg>.yml` workflow ran**. `gh run list --workflow=publish-<pkg>.yml` shows no run for the new tag. npm `latest` is still the previous version. The packages are NOT on the registry at the new version. Nothing errored; the publishes simply never started.
183
-
184
- **Root cause:** GitHub's `on: push: tags:` trigger fires a single `create` event for the whole ref-set when you push many tags in **one** `git push` invocation (`git push origin <tag1> <tag2> … <tag10>` or `git push origin --tags`). GitHub Actions routinely **drops** that batched create event — so ZERO publish-on-tag workflows trigger. This is not a flake you can retry by re-pushing (the tags already exist on the remote; a no-op push fires nothing). Memory: `feedback_publish_workflow_batch_push`.
185
-
186
- **Canonical case:** the v0.7.14 cut. All 10 tags pushed in one `git push origin <10 tags>`; zero `publish-*` runs fired. Recovered by manually `gh workflow run publish-<pkg>.yml` (workflow_dispatch) for each package.
187
-
188
- **Resolution (recover):**
189
-
190
- 1. Confirm the symptom — for each package: `gh run list --workflow=publish-<pkg>.yml --branch <pkg>-vX.Y.Z --limit 1`. Empty for all (or most) = the batch skip.
191
- 2. **Re-dispatch the misses via `workflow_dispatch`** (the tags are valid refs; the workflow just never ran for them). The bundled helper does exactly this, idempotently:
192
- ```bash
193
- node "${CLAUDE_PLUGIN_ROOT}/skills/adia-ui-release/scripts/dispatch-publish.mjs" \
194
- --version X.Y.Z --verify-triggered
195
- ```
196
- `--verify-triggered` checks each `publish-<pkg>.yml` for an existing run on the `<pkg>-vX.Y.Z` tag and re-dispatches ONLY the packages with no run (so it's safe to run after a *partial* trigger too — it won't double-publish the ones that fired). `--dry` previews without calling `gh`.
197
- 3. For a **batch push** (Scenario 2), preserve npm-latest ordering: re-dispatch + settle the OLDER version's 9 before the newer version's 9. `--after X.Y.Z-1` gates on `npm dist-tag latest` to enforce it.
198
- 4. Wait for settle + verify against the **registry** (not the workflow's "success"): `npm view <scope>/<pkg> version` for all 9 + `npm view <scope>/web-components dist-tags.latest`.
199
-
200
- **Resolution (prevent — next cut):** push per-package tags **one-at-a-time** so each gets its own create event:
201
- ```bash
202
- git push origin main
203
- for t in web-components-vX.Y.Z web-modules-vX.Y.Z … a2ui-validator-vX.Y.Z; do
204
- git push origin "$t"
205
- done
206
- git push origin vX.Y.Z # umbrella last — triggers nothing
207
- ```
208
- `release-pack.mjs` Step 8 now does this automatically, and Step 9 runs `--verify-triggered` to fill any gap; the `tag-lockstep.mjs` push hint prints the per-tag loop + the verify-triggered command. The one-at-a-time push is the primary fix; `--verify-triggered` is the belt-and-suspenders safety net.
209
-
210
- **What to write in the ledger:**
211
-
212
- ```json
213
- "publish_workflows": {
214
- "trigger_anomaly": "Batched tag push (git push origin <10 tags>) triggered ZERO publish-on-tag workflows (the GitHub batch-push create-event skip). Recovered by dispatch-publish.mjs --verify-triggered → re-dispatched N/9 via workflow_dispatch.",
215
- "dispatched": "9/9 (workflow_dispatch)",
216
- "conclusions": "9/9 success — verified on npm registry, not workflow self-report"
217
- }
218
- ```
219
-
220
- ---
221
-
222
- ## §Decision flowchart — which scenario applies?
223
-
224
- ```text
225
- Pre-flight or F-N1 gate failed?
226
- ├── check:demo-shells fails at the release-commit candidate?
227
- │ └── Look at the post-commit diff: was there a fix-up?
228
- │ ├── Yes, but entangled with [Unreleased] work → Scenario 4
229
- │ └── No → Author the fix in this cycle (Mode 2 from scratch)
230
- ├── check:lockstep fails? → typically a peer manually edited an
231
- │ internal range during a PATCH cut → Scenario 4 or fix in place
232
- ├── verify:corpus fails? → corpus drift → routes to adia-ui-a2ui skill
233
- ├── check:embeddings-fresh fails? → run npm run build:embeddings:chunks;
234
- │ stage chunk-embeddings.json; document in a2ui-corpus CHANGELOG
235
- ├── test:unit fails? → Scenario 5 (stale test) OR real regression
236
- │ (read assertion vs CHANGELOG vs source code to tell apart)
237
- └── F-N1 warns (cosmetic)? → enrichment pass (changelog-discipline.md)
238
-
239
- Multiple unpushed release commits exist?
240
- └── Scenario 2 (batch push)
241
-
242
- Peer commit's CHANGELOG references a different version than its bump?
243
- └── Scenario 1 (version-skip correction)
244
-
245
- Tags pushed (all 10 exist on origin) but NO publish-<pkg>.yml ran +
246
- npm latest unchanged?
247
- └── Scenario 7 (batch-tag-push skip) — re-dispatch misses via
248
- dispatch-publish.mjs --verify-triggered; next cut push tags one-at-a-time
249
-
250
- Working tree has uncommitted source files when you start the cycle?
251
- └── Apply multi-agent-baseline.md § classification taxonomy.
252
- Stash strays per § Discipline 4 if they're release-relevant +
253
- undocumented + contradicting.
254
- ```
255
-
256
- ---
257
-
258
- ## §When this reference is "done v1"
259
-
260
- - Each of the 5 (now 7) scenarios has a documented case study in `assets/case-studies/` (Phase 3).
261
- - The decision flowchart correctly routes the next 5 release cycles with no operator override.
262
- - Each scenario's ledger-template fragment is reused verbatim by the `make-ledger.mjs` helper (Phase 3) for that scenario.
@@ -1,208 +0,0 @@
1
- # `rollup-notes.md` — multi-version retrospective notes
2
-
3
- > Loaded by mode 5 (Author rollup release notes). Companion to `notes-authoring.md` (single-version notes).
4
-
5
- A rollup release note covers a RANGE of versions (e.g. v0.6.8 → v0.6.16, v0.6.16 → v0.6.21). Audience: someone catching up on multiple releases at once — typically external consumers who skipped a few cuts, or internal teammates returning from a holiday, or a Slack announcement for a milestone window.
6
-
7
- Two rollup formats have shipped from this skill's lineage:
8
-
9
- 1. **`/tmp/release-v0.6.8-v0.6.16/rollup.md`** (9 PATCH cuts) — organized by **narrative arcs** (3 themes), with per-version bullet-summaries inside each arc.
10
- 2. **`/tmp/release-v0.6.16-v0.6.21/rollup.md`** (6 PATCH cuts, skill-centric) — opened with the **skill as headline framing**, then per-version package work as substrate. Different headline, same per-version-bullet pattern below.
11
-
12
- Both share a common skeleton (this template) but the FRAMING is what makes them distinct.
13
-
14
- ---
15
-
16
- ## §The 5-section skeleton
17
-
18
- ```markdown
19
- 🚀 **AdiaUI vA.B.C → vX.Y.Z** — <one-line tagline>
20
-
21
- \`\`\`bash
22
- npm i @adia-ai/web-components@X.Y.Z @adia-ai/web-modules@X.Y.Z
23
- \`\`\`
24
-
25
- <2–4 sentences setting up: how many releases, what the window is
26
- about, what's load-bearing across all of them (e.g. "internal deps
27
- held at ^0.6.0 throughout").>
28
-
29
- ---
30
-
31
- ## 🧵 <Framing section — pick ONE>
32
-
33
- <This is the headline. It's the through-line that connects the N
34
- releases. See §Framing options below.>
35
-
36
- ---
37
-
38
- ## 📦 Per-version breakdown
39
-
40
- ### vA.B.C — <tagline>
41
-
42
- <3–5 bullets covering substantive work. Inline backtick file paths.
43
- Reference FEEDBACK-NN closures. Cite the substantive packages.>
44
-
45
- ### vA.B.D — <tagline>
46
-
47
- <same shape>
48
-
49
- ... (one block per version)
50
-
51
- ---
52
-
53
- ## ⚠️ <Optional: behavior changes worth knowing>
54
-
55
- <Table summarizing breaking / behavior changes across the window
56
- with opt-out paths. Use sparingly — most PATCH cuts have none.>
57
-
58
- ---
59
-
60
- ## ✅ Verification baseline (held across all N cuts)
61
-
62
- <one-paragraph summary: vitest count growth, gate roster status,
63
- eval floor held, etc.>
64
-
65
- ## 📚 Links
66
-
67
- - GH Releases: <URL>
68
- - Live demos: <URL>
69
-
70
- ---
71
-
72
- **<Closing paragraph — name what the window accomplished as a whole.
73
- Connect to the framing section.>**
74
- ```
75
-
76
- ---
77
-
78
- ## §Framing options — pick ONE for the headline
79
-
80
- A rollup is more than a list of releases — it's a STORY. Pick the headline framing that matches the window:
81
-
82
- ### Option A — "The arcs" (chronological + thematic)
83
-
84
- When the window has 2–4 distinct thematic strands. Each strand gets a short subsection naming the versions that contributed.
85
-
86
- Example (v0.6.8 → v0.6.16):
87
-
88
- > ## 🧵 The three arcs
89
- >
90
- > **1. Toolchain + build-time correctness** (v0.6.8 / v0.6.9) HTML-parser and CSS-spec traps that broke real consumer builds.
91
- >
92
- > **2. Consumer DX cliffs** (v0.6.10 / v0.6.11 / v0.6.15) Cold-start failure modes closed with diagnostics or opt-in carve-outs.
93
- >
94
- > **3. The `<admin-shell>` composition arc** (v0.6.12 → v0.6.16) A five-release refinement of the admin-shell tier.
95
-
96
- Best when: the window is mid-cycle, no single dominant theme.
97
-
98
- ### Option B — "The headline event" (one big thing)
99
-
100
- When the window IS one big thing surrounded by supporting work. A skill-graduation window (v0.6.16 → v0.6.21) used this — the headline was a companion consultant skill graduating to a major version; the package releases are substrate.
101
-
102
- Example:
103
-
104
- > **The headline of this window is not the package releases — it's the skill.** The companion consultant skill (v2.10.0 → v2.20.8) is now the official autonomous-consultant tooling for working with the framework in any LLM-driven coding harness. The package releases that follow are the substrate work that supports it.
105
-
106
- Best when: there's a milestone (skill graduation, ADR ratification, substrate completion). The package releases support a larger arc.
107
-
108
- ### Option C — "Net deltas"
109
-
110
- When the window's main story is what consumers SEE differently end- to-end. Like a `git diff vA.B.C..vX.Y.Z` rendered as prose.
111
-
112
- Example shape:
113
-
114
- > ## 🧵 What changed for consumers
115
- >
116
- > - **New primitives:** `<admin-entity-item>` (v0.6.20), `<list>`
117
- > - **New APIs:** `stat-ui loading`, `table-ui loading` (v0.6.18), `table-ui row-click` (v0.6.20), `<list>`
118
- > - **Breaking-ish:** `<admin-shell mode>` default changed v0.6.13 (rounded borderless); page-header bg iterated v0.6.14 → v0.6.16 → v0.6.20 (canvas-2 → canvas-1 → canvas-0)
119
- > - **Retired:** legacy `<main>` + `[data-content-*]` admin-shell shape (v0.6.12)
120
-
121
- Best when: the window includes a MINOR cut (cumulative change matters) or when a consumer is migrating across a big gap.
122
-
123
- ---
124
-
125
- ## §Per-version block — sub-template
126
-
127
- Each version block has the same shape regardless of framing:
128
-
129
- ```markdown
130
- ### vN.M.X — <tagline>
131
-
132
- `@adia-ai/<pkg>`:
133
- - **<bold-prefix bullet>.** <One-sentence why → what. File paths
134
- inline.> Closes <FEEDBACK-NN>.
135
- - **<bold-prefix bullet>.** <same shape>
136
-
137
- `@adia-ai/<other-pkg>`:
138
- - <bullets>
139
-
140
- Companion: `<companion-plugin>` **vX.Y.Z** — <one-line> (if applicable)
141
- ```
142
-
143
- **Length per version**: 3–5 bullets if the version was substantive; 1–2 bullets if it was small. Stub-only versions get a single sentence at most ("v0.6.17 shipped only an admin-sidebar collapse fallback — see GH release for details").
144
-
145
- **Skip ride-along stubs** in a rollup. The reader knows lockstep exists; mentioning 6 packages did "no source change" 6 times is noise.
146
-
147
- ---
148
-
149
- ## §The "behavior changes worth knowing" table
150
-
151
- Use a 3-column markdown table when the window has 2+ behavior changes that consumers should track:
152
-
153
- ```markdown
154
- | Version | Change | Opt-out / migration |
155
- |---|---|---|
156
- | **v0.6.12** | Legacy `<admin-shell>` CSS bridges removed | Migrate to the 10-tag bespoke composition (zero audited consumers affected) |
157
- | **v0.6.13** | Bare `<admin-shell>` defaults to `mode="rounded borderless"` | Set `mode=""` for the flat legacy chrome |
158
- ```
159
-
160
- Skip the table if the window has zero behavior changes. Don't pad it with non-changes.
161
-
162
- ---
163
-
164
- ## §Verification — one paragraph, not the full table
165
-
166
- For a single-version note (`notes-authoring.md`), the verification section lists every gate's status. For a rollup, that's too much — compress to a paragraph:
167
-
168
- ```markdown
169
- ## ✅ Verification baseline (held across all N cuts)
170
-
171
- - **NNNN/NNNN vitest** across NN files at vX.Y.Z (up from NNNN at the
172
- start of the arc — net +NN from <reasons>)
173
- - `check:lockstep` OK · `components --verify` clean · `verify:traits` 56/56 · typecheck clean
174
- - `check:demo-shells` clean · `check:lightningcss-build` clean (NN CSS files)
175
- - `verify:corpus` 0 errors / 0 warns · `check:embeddings-fresh` OK
176
- - `smoke:engines` green · `smoke:register-engine` 11/11 · `eval:diff zettel` cov=N% avg=N (baseline-identical across the window)
177
- - F-N1 release trip-wire 9/9 per-package clean at every cut
178
- ```
179
-
180
- Show the **growth** (test count delta, new gate counts) — that's the window's velocity signal.
181
-
182
- ---
183
-
184
- ## §The closing paragraph
185
-
186
- The last paragraph is the "what did this window accomplish." It echoes the framing section but as a conclusion.
187
-
188
- Example (v0.6.16 → v0.6.21, skill-centric framing):
189
-
190
- > **The v0.6.16 → v0.6.21 window is the maturation of the companion consultant skill from a documentation skill (v2.x.0) into the autonomous consultant posture (v2.20.8) — with a track record across two consumer cold-start batches (39 tickets between them, all triaged through the skill's own ticket pipeline) and an ADR ratifying the Light-DOM substrate stance the skill teaches first. The package releases are the substrate that backs every claim the skill makes.**
191
-
192
- Tight, evocative, names the window's _accomplishment_ (not just its contents).
193
-
194
- ---
195
-
196
- ## §Where to put the rollup
197
-
198
- Save to `/tmp/release-vA.B.C-vX.Y.Z/rollup.md`. The operator copy-pastes where they want it — Slack #releases for an internal announcement, the GH Releases page as a "milestone" body, a CHANGELOG ROLLUP doc in the repo, or a blog post.
199
-
200
- If the rollup is **announcement-grade** (skill graduation, MINOR cut, ADR ratification), consider also publishing it to a permanent location (`docs/announcements/` or similar). Coordinate with the operator.
201
-
202
- ---
203
-
204
- ## §When this reference is "done v1"
205
-
206
- - The `rollup-notes.template.md` template lands in `assets/templates/`.
207
- - The next 2 rollup notes are authored from the 5-section skeleton + one of the 3 framing options with no operator improvisation beyond filling in window-specific details.
208
- - Each framing option has at least one example in `assets/case-studies/` (Phase 3) so future authors see the shape applied to a real window.