@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,207 +0,0 @@
1
- # `multi-agent-baseline.md` — peer-in-flight classification + stash discipline
2
-
3
- > Loaded by every mode when the working tree shows files you didn't author. Companion to `AGENTS.md` § "Multi-agent baseline assumption" — release-side specialization.
4
-
5
- The AdiaUI monorepo is **always** worked on by multiple agents concurrently. At any moment a peer agent may be: writing source, drafting tickets, updating skills, regenerating corpus chunks, fixing demo shells, or running an unrelated cycle. Your context is stale at the start of every turn.
6
-
7
- Release work is unusually sensitive to peer activity because:
8
-
9
- - A release commit's CHANGELOG makes claims (`### Added — X`); peer files in the working tree may **contradict** those claims (the classic v0.6.20 case: peer revert of FEEDBACK-37 while the v0.6.20 CHANGELOG documented FEEDBACK-37 as added).
10
- - A release tarball is built from the tag's tree; peer-in-flight uncommitted files don't ship — but the site build (working-tree driven) DOES include them. This split is silent and easy to miss.
11
- - A `git add -A` on a peer-dirty tree sweeps in peer work without consent. The release commit then makes claims it doesn't authorize.
12
-
13
- This reference encodes the four disciplines that prevent these defects.
14
-
15
- ---
16
-
17
- ## §Discipline 1 — Re-baseline at every turn
18
-
19
- Non-negotiable. The first **four** commands of every release-cycle turn:
20
-
21
- ```bash
22
- git -C $REPO branch --show-current # MUST equal main before cutting
23
- git -C $REPO status --short
24
- git -C $REPO log --oneline -8
25
- git -C $REPO fetch && git -C $REPO log HEAD..origin/main --oneline
26
- ```
27
-
28
- Then read the output BEFORE running anything mutating:
29
-
30
- - `branch --show-current` shows the checked-out branch. **It must be `main`.** Peers in this shared clone sometimes work on local feature branches (`fix/*`, `feat/*`) — the AGENTS.md session snapshot saying "Current branch: main" reflects the _prior_ session, not now. Cutting on a feature branch means `git push origin main` pushes the stale `main` ref (not your release commit) while the tags point at the feature tip → tags ahead of main. See the §Wrong-branch recovery below.
31
- - `status` shows working-tree changes. Every modified or untracked file is a classification decision.
32
- - `log -8` shows recent commits. Peer commits since your last turn? New work staged for the release? An unexpected revert?
33
- - `fetch && log HEAD..origin/main` shows remote drift. Did someone else push?
34
-
35
- > **§Wrong-branch recovery (v0.7.4 incident, 2026-06-02).** Cut the release on a peer's local-only `fix/font-family-floor-and-css-rollups` instead of main; caught at push (origin/main landed at a mid-window commit, tags pointed at the feature tip). Recovery was clean **because publish is `workflow_dispatch`, not tag-triggered** — npm stayed at the prior version through the whole tangle. If the feature tip's parent is an ancestor of the old main (it was: ff-able), recover with `git branch -f main <release-sha>` → `git checkout main` (no churn since main now == HEAD) → `git push origin main` to fast-forward origin/main to the release commit. Verify `origin/main == vX.Y.Z tag == HEAD` BEFORE dispatching publish. Moving tags while local is free (`tag-lockstep --delete`); moving them after a publish is not.
36
-
37
- If anything is unexpected, **diff before deciding**:
38
-
39
- ```bash
40
- git -C $REPO diff <path> # working-tree changes
41
- git -C $REPO show <sha> --stat # peer commits
42
- ```
43
-
44
- Never proceed past surprising state without classifying it.
45
-
46
- ---
47
-
48
- ## §Discipline 2 — Classification taxonomy
49
-
50
- Every modified or untracked file falls into one of these buckets:
51
-
52
- | Bucket | Definition | Action |
53
- | --- | --- | --- |
54
- | **Mine** | You authored this in the current turn | Stage explicitly |
55
- | **Peer-release-relevant** | Peer authored, part of THIS release's scope (the peer's release-prep work — Variant A) | Stage explicitly |
56
- | **Peer-in-flight, release-relevant, undocumented, contradicts CHANGELOG** | Peer authored, would change the release's behavior but has no CHANGELOG entry and may contradict an existing one | **Stash** — exclude from release; flag to operator |
57
- | **Peer-in-flight, future-release scope** | Peer's working-tree progress destined for a later cut (e.g. `[Unreleased]` block additions, demo-page updates not yet documented) | Leave uncommitted — not yours to commit |
58
- | **Ticket-lane / skill / journal** | `.agents/team/tickets/**`, `.agents/skills/**`, `docs/journal/**` peer work | Leave uncommitted — ticket / skill / docs lane |
59
- | **Generated / regenerable** | `package-lock.json` after a bump, sidecar `.a2ui.json`, `chunk-embeddings.json` after regen | Stage iff you ran the generator this turn |
60
- | **Unknown** | Diff doesn't tell you intent | Ask the operator OR check the most recent commit message for clues OR check `.brain/notes/` for a peer prep note |
61
-
62
- The decision is **per-file**, not per-directory. A peer might have modified `admin-shell.js` (release-relevant) AND `SKILL.md` (skill-lane) in the same turn — they get different verdicts.
63
-
64
- ---
65
-
66
- ## §Discipline 3 — Explicit allowlist staging
67
-
68
- **Never** `git add -A` or `git add .` on a peer-dirty tree. The staging area is opaque without inspection; a peer may have left files staged from a prior partial workflow.
69
-
70
- The defensive pattern:
71
-
72
- ```bash
73
- # 1. Reset the staging area defensively.
74
- git -C $REPO reset HEAD >/dev/null 2>&1
75
-
76
- # 2. Stage the explicit allowlist by name.
77
- git -C $REPO add \
78
- package-lock.json \
79
- packages/web-components/package.json \
80
- packages/web-components/CHANGELOG.md \
81
- packages/web-modules/package.json \
82
- packages/web-modules/CHANGELOG.md \
83
- packages/llm/package.json \
84
- packages/llm/CHANGELOG.md \
85
- packages/a2ui/compose/package.json \
86
- packages/a2ui/compose/CHANGELOG.md \
87
- packages/a2ui/corpus/package.json \
88
- packages/a2ui/corpus/CHANGELOG.md \
89
- packages/a2ui/mcp/package.json \
90
- packages/a2ui/mcp/CHANGELOG.md \
91
- packages/a2ui/retrieval/package.json \
92
- packages/a2ui/retrieval/CHANGELOG.md \
93
- packages/a2ui/runtime/package.json \
94
- packages/a2ui/runtime/CHANGELOG.md \
95
- packages/a2ui/validator/package.json \
96
- packages/a2ui/validator/CHANGELOG.md
97
-
98
- # 3. Verify staged count matches the allowlist.
99
- git -C $REPO diff --cached --stat | tail -3
100
- # Expected: "19 files changed" for a pure-stub release; more if you
101
- # also staged source files (test updates, etc.)
102
-
103
- # 4. Confirm peer-in-flight files are NOT in the staged set.
104
- git -C $REPO diff --cached --name-only | sort
105
- # Eyeball — no surprises.
106
- ```
107
-
108
- The memory `feedback_git_commit_targeted` records this rule as a "4th incident" — peer renames absorbed silently 4 times before the `git reset HEAD` defensive prefix became standard.
109
-
110
- ---
111
-
112
- ## §Discipline 4 — Stash workflow for strays
113
-
114
- A stray = a peer-in-flight file that is:
115
-
116
- 1. Uncommitted,
117
- 2. Undocumented (no CHANGELOG entry covers it, no commit message explains it),
118
- 3. Would change behavior visible to consumers, AND
119
- 4. Contradicts an existing release-relevant artifact.
120
-
121
- The canonical example: `admin-shell.tokens.css` `--page-content-header-bg` changed from `--a-canvas-1` to `--a-canvas-0` uncommitted, with the inline comment still describing `canvas-1`. Sat across v0.6.17/0.6.18/0.6.19 cycles. Resolved when the operator confirmed "keep canvas-0" in the v0.6.19→v0.6.20 boundary.
122
-
123
- The stash workflow:
124
-
125
- ```bash
126
- # 1. Stash the stray file(s) by name. Include a clear message so the
127
- # next operator (or you next turn) understands why.
128
- git -C $REPO stash push <path1> <path2> \
129
- -m "vX.Y.Z-cycle: <stray reason> — parked during release"
130
-
131
- # 2. Verify the working tree is sane.
132
- git -C $REPO status --short
133
- # Stashed files no longer appear as modified.
134
-
135
- # 3. Do the full release (Steps 3–10 of cycle-happy-path.md).
136
-
137
- # 4. Restore the stash AFTER the cycle ships.
138
- git -C $REPO stash pop
139
- # If "Dropped stash" prints, it applied cleanly.
140
- # If "kept the stash" prints, there's a conflict — the working tree
141
- # moved while you were releasing. Investigate before dropping.
142
- ```
143
-
144
- **Always stash, never revert** unless the operator explicitly says "discard." Revert (`git checkout <file>`) destroys peer work; stash preserves it.
145
-
146
- **Note the stash in the audit-history ledger** so the next operator can see what was excluded and why.
147
-
148
- The 4 case studies in `assets/case-studies/` covering this discipline:
149
-
150
- - `2026-05-21-stale-test-detection-v0.6.20.md` — peer changed CSS, didn't update test; deploy session updated the test (NOT stashed — fixed forward because the test was legitimately stale).
151
- - `2026-05-21-feedback37-retraction-v0.6.21.md` — peer staged a revert of FEEDBACK-37 mid-cycle; stashed (would contradict the v0.6.20 CHANGELOG); the peer committed the revert post-publish for v0.6.21.
152
- - `2026-05-20-version-skip-correction-v0.6.12.md` — peer mislabeled the cut v0.6.13; corrected 25 files across the release commit.
153
- - (Phase 3) `2026-05-21-stash-pop-conflict-v0.6.20.md` — concurrent peer activity caused stash pop to keep-the-stash. Resolution: drop if the working tree has caught up (committed the same content); preserve if not. Never blind drop.
154
-
155
- ---
156
-
157
- ## §Pre-cut state classification flowchart
158
-
159
- When you re-baseline at Step 1 and find a non-clean working tree, walk this in order. The output is "what mode" + "what to stash."
160
-
161
- ```text
162
- Is there an unpushed release commit (`release(*): vX.Y.Z`)?
163
- ├── Yes, exactly one → Mode 3 (Deploy handoff) — peer pre-cut
164
- │ └── Are there commits AFTER it?
165
- │ ├── Yes, with CHANGELOG additions to [Unreleased] → §Boundary check
166
- │ │ (see recovery-paths.md § [Unreleased] promotion, Phase 2 —
167
- │ │ the v0.6.18 case: peer release commit fails check:demo-shells
168
- │ │ because the demo-shell fix landed entangled with future work)
169
- │ └── No → Mode 3 happy path; tag at HEAD
170
- ├── Yes, multiple → Mode 4 (Batch push)
171
- │ (see recovery-paths.md § batch-push, Phase 2 — the v0.6.14+v0.6.15
172
- │ case: publish in version order for npm latest)
173
- └── No → Mode 2 (Author from scratch); promote [Unreleased] → [vX.Y.Z]
174
-
175
- Is the working tree clean?
176
- ├── Yes → proceed with the determined mode.
177
- └── No → classify per the §Discipline 2 taxonomy.
178
- For every file: Mine? Peer-release-relevant? Stray? Ticket-lane?
179
- Stash strays, leave ticket-lane alone, stage release-relevant.
180
- ```
181
-
182
- ---
183
-
184
- ## §The audit-history ledger contract
185
-
186
- Every cycle's ledger (Step 11 of `cycle-happy-path.md`) includes a `notes` array. Entries about peer-in-flight handling go there. Standard phrasings:
187
-
188
- ```json
189
- "notes": [
190
- "STRAY UNCOMMITTED CHANGE EXCLUDED: <file> — <one-line summary>. git-stashed during the release; restored to the working tree after. Flagged to operator.",
191
- "PEER-IN-FLIGHT EXCLUDED: <file> — <one-line summary>. v0.X.Y ships the committed state, NOT the peer's uncommitted change. The revert was restored post-release.",
192
- "Peer cycle activity: skill v2.X.Y / journal §NNN / ticket-lane grooming rode along on main inside the unpushed range — already committed by peers; not npm release artifacts.",
193
- "Concurrent peer modified <file> mid-cycle; was committed by the peer in <sha> as `<message>`. v0.X.Y absorbed / excluded per <reason>."
194
- ]
195
- ```
196
-
197
- The ledger is the long-term memory of the peer-classification decision. Future cycles read past ledgers (Mode 8 — Phase 3 Investigation).
198
-
199
- ---
200
-
201
- ## §When this reference is "done v1"
202
-
203
- - Every modified file in a release cycle classifies cleanly into one bucket from §Discipline 2 (zero "unknown" verdicts).
204
- - Every stash command in the release uses the `vX.Y.Z-cycle:` prefix
205
- - a meaningful reason.
206
- - Every audit-history ledger has at least one `notes` entry per excluded / stashed / peer-in-flight file.
207
- - The §Pre-cut state classification flowchart correctly routes the next 3 cycles without operator override.
@@ -1,212 +0,0 @@
1
- # `notes-authoring.md` — Slack + GH-release single-version notes
2
-
3
- > Loaded by mode 9 (Authoring discipline only) and by mode 1 Step 10 (GH releases). Covers both the per-version GH-release body and the Slack-flavored team announcement.
4
-
5
- The AdiaUI repo has two single-version note formats:
6
-
7
- 1. **GH release body** — markdown, attached to each per-package tag's GH Release (created via `gh release create <pkg>-vX.Y.Z --notes-file ...`). All 9 packages get the same body.
8
- 2. **Slack release post** — markdown, intended to be pasted into #releases or similar. Shorter, more conversational, has the `npm install` snippet at the top.
9
-
10
- Multi-version rollup notes are a separate format — see `rollup-notes.md`.
11
-
12
- ---
13
-
14
- ## §The GH release body — single version
15
-
16
- Audience: external consumers reading the GH Releases page. Substantive
17
-
18
- - practical. Each entry should answer "what shipped" + "what do I do with it."
19
-
20
- **Standard structure (~80–200 lines per release):**
21
-
22
- ```markdown
23
- ## vX.Y.Z — <one-line tagline>
24
-
25
- 9-package lockstep **PATCH** cut. <One sentence on the scope.>
26
-
27
- <Optional: a > heads-up callout if there's a behavior change or
28
- breaking thing.>
29
-
30
- ### `@adia-ai/<substantive-pkg>`
31
-
32
- - **<Bold-prefix headline>.** <Why → what → file paths.> Closes <FEEDBACK-NN>.
33
- - **<Bold-prefix headline>.** <Same shape.>
34
-
35
- ### `@adia-ai/<other-substantive-pkg>`
36
-
37
- - ...
38
-
39
- ### Ride-along stubs
40
-
41
- `@adia-ai/<pkg1>`, `@adia-ai/<pkg2>`, ... — version bump only.
42
-
43
- ### Verification
44
-
45
- - `check:lockstep` OK at `X.Y.Z / ^X.Y.0`
46
- - **N/N vitest** across NN files · typecheck clean
47
- - `components --verify` clean (NN files) · `verify:traits` 56/56
48
- - `check:demo-shells` clean · `check:lightningcss-build` clean (NN files)
49
- - `verify:corpus` 0/0 · `check:embeddings-fresh` OK
50
- - `smoke:engines` green · `smoke:register-engine` 11/11 · `eval:diff zettel` cov=N% avg=N · `check:links` NNNN clean
51
-
52
- ### Install
53
-
54
- \`\`\`bash
55
- npm i @adia-ai/web-components@X.Y.Z @adia-ai/web-modules@X.Y.Z
56
- \`\`\`
57
- ```
58
-
59
- **Shape rules:**
60
-
61
- - **Open with the tagline + one-sentence scope** — no preamble, no "we're excited to announce." Readers came to find out what's in it.
62
- - **Group by package** — `### @adia-ai/<pkg>` headings. Use the `@adia-ai/` prefix; it's the npm name + the search key.
63
- - **Bold-prefix every bullet** with the headline. Then 1–3 sentences: why → what → files. Inline backtick file paths.
64
- - **Cite tickets by ID** — `FEEDBACK-NN` (or `FB-NN`). Match the CHANGELOG entry's citation style for that cycle.
65
- - **Show before/after** when a change has consumer-facing markup difference. Use fenced code blocks.
66
- - **Stubs go in a one-line `### Ride-along stubs`** — list the packages by name. Don't repeat the "lockstep version bump only" text — readers see the same per-cycle.
67
- - **Verification section** is identical-style across cycles. Paste the gate output from your pre-flight. The repetition is a feature — readers learn what "all green" looks like.
68
- - **Install matrix** at the bottom — **npm + CDN, both packages** (same mandate as the Slack post). npm: always `@adia-ai/web-components` + `@adia-ai/web-modules` (the universal entry points). CDN: a jsdelivr block pinned `@0.X` — `web-components@0.X/dist/web-components.min.{css,js}` + the `web-modules@0.X/dist/everything.min.js` kitchen-sink. Other packages added if substantive in the cut.
69
-
70
- **Anti-patterns:**
71
-
72
- - Marketing language. The notes are technical.
73
- - Vague verbs. "Improved" / "polished" / "tweaked" without specifics is empty.
74
- - Missing file paths. Inline backticks like `packages/<pkg>/...` let readers grep.
75
- - Long preambles. Maximum 1 short paragraph before the per-package sections.
76
-
77
- ### Template — copy this verbatim and fill in
78
-
79
- The template lives at `assets/templates/gh-release-notes.template.md` (Phase 2). It maps to a minimal cycle output (~80 lines for a stub-heavy release like v0.6.17, ~200 lines for a substantive cycle like v0.6.18).
80
-
81
- For now, the most recent cycles' release notes are reference templates:
82
-
83
- - `/tmp/release-v0.6.21.md` — table-ui truncate + FEEDBACK-37 retraction
84
- - `/tmp/release-v0.6.20.md` — claims-ui-v5 + admin-entity-item
85
- - `/tmp/release-v0.6.19.md` — claims-ui-v4 batch + corpus remediation
86
-
87
- ---
88
-
89
- ## §The Slack release post
90
-
91
- Audience: internal team in #releases or similar. Shorter, more conversational, with the `npm install` snippet at the top so readers can copy-paste immediately.
92
-
93
- **Standard structure (~40–80 lines):**
94
-
95
- ```markdown
96
- 🚀 **AdiaUI vX.Y.Z** is out — <one-line tagline>
97
-
98
- \`\`\`bash
99
- npm i @adia-ai/web-components@X.Y.Z @adia-ai/web-modules@X.Y.Z
100
- \`\`\`
101
-
102
- 9-package lockstep PATCH cut. <One sentence on scope.>
103
-
104
- ## <emoji> `@adia-ai/<substantive-pkg>` — <subsection-headline>
105
-
106
- <2–4 sentences. The thing that matters.> Closes <FEEDBACK-NN>.
107
-
108
- \`\`\`html
109
- <example markup if useful>
110
- \`\`\`
111
-
112
- ## <emoji> Ride-along
113
-
114
- <short>
115
-
116
- ## ✅ Verification
117
-
118
- <one-line summary of the gate roster status>
119
-
120
- ## 📚 Links
121
-
122
- - GH Releases: https://github.com/adiahealth/gen-ui-kit/releases (filter `vX.Y.Z`)
123
- - Live demos: https://ui-kit.exe.xyz/site/playground/gen-ui
124
- ```
125
-
126
- > **Every `https://ui-kit.exe.xyz/site/<route>` URL cited in notes MUST be verified against `site/sitemap.json` first** (`grep '"path": "/site/…"'`). The docs site is an SPA — unmatched routes return HTTP 200 but render blank, so a curl check won't catch a wrong URL. There is no `/site/gen-ui/` route; the Gen UI Canvas is `/site/playground/gen-ui`. `<theme-panel>` has no standalone page — it's the palette popover on every page. (v0.7.4 incident: both cited URLs were blank.)
127
-
128
- **Shape rules:**
129
-
130
- - **Open with the rocket emoji + bold version + tagline.** Slack renders this prominently.
131
- - **Install matrix immediately under the header (MANDATORY — npm + CDN, both packages).** Every note carries the full install surface, in this order:
132
- 1. **npm** — `npm i @adia-ai/web-components@X.Y.Z @adia-ai/web-modules@X.Y.Z` (BOTH packages, never just web-components).
133
- 2. **CDN** — a jsdelivr block pinned to the `@0.X` minor-range: `web-components@0.X/dist/web-components.min.css` (CSS) + `web-components@0.X/dist/web-components.min.js` (primitives JS), plus the `web-modules@0.X/dist/everything.min.js` kitchen-sink as the all-in-one `<script>` alternative. (CDN bundles ship since v0.6.29/0.6.30.) Operator standard since 2026-05-31. Canonical shape: `.brain/release-notes/0.7.0-release-notes.md`.
134
- - **Section emojis** — `🔷` (substantive feature), `🛠️` (DX fix), `🎨` (visual), `🧹` (cleanup), `⚠️` (breaking / behavior change), `✅` (verification), `📚` (links). Slack renders these natively.
135
- - **Skip the per-package grouping** when there's only 1 substantive package. Group by feature instead.
136
- - **Code blocks for examples** — Slack's modern rich-text composer (since 2020) renders standard markdown fenced code blocks. Memory: `feedback_slack_renders_standard_markdown` — `-` bullets + `[text](URL)` links work natively; legacy `•` + `<URL|text>` mrkdwn isn't needed.
137
- - **Links section at the bottom** — GH Releases + live demos at minimum.
138
-
139
- **Anti-patterns:**
140
-
141
- - Marketing speak ("we're thrilled..."). Engineers read this.
142
- - Long verification sections. One line is enough for Slack; details live in the GH release.
143
- - Multi-paragraph "context" sections. If the tagline + 2 sentences don't cover it, the change is too complex for a single Slack post — link to the GH release or a longer write-up.
144
-
145
- ### Where to put the notes
146
-
147
- **Canonical home: `.brain/release-notes/{version}-release-notes.md`** (committed with the cycle's ledger — durable repo artifact, not `/tmp`, and not `.brain/notes/` which is for working notes/plans). Open with YAML frontmatter per `.brain/release-notes/README.md`:
148
-
149
- ```yaml
150
- ---
151
- title: AdiaUI v{version} — release notes
152
- version: {version}
153
- topic: release-notes
154
- status: final
155
- created: <ISO-8601 UTC, from `date -u +%Y-%m-%dT%H:%M:%SZ`>
156
- last_edited: <same; bump on edit>
157
- author: adia-ui-release ({model})
158
- ---
159
- ```
160
-
161
- The Slack post and GH-release body are **derived from** this file (strip frontmatter for the GH body — see `cycle-happy-path.md` §Step 10). If the operator wants a separate Slack-flavored draft, `/tmp/release-vX.Y.Z/slack.md` is fine for that scratch copy, but the `.brain/notes/` file is the source of record. The operator copy-pastes from whichever they prefer. The `release-pack.mjs` orchestrator (Phase 3) will support a `--push-slack <channel>` flag for direct send, but the default remains draft-to-file — the operator owns the announcement decision.
162
-
163
- ---
164
-
165
- ## §The verification section — what to actually include
166
-
167
- Standard verification block (paste from the cycle's pre-flight output):
168
-
169
- - `check:lockstep` line
170
- - `test:unit` count
171
- - `typecheck` (one-word "clean")
172
- - `components --verify` (file count)
173
- - `verify:traits` (`56/56`)
174
- - `check:demo-shells` (shell count)
175
- - `check:lightningcss-build` (CSS file count)
176
- - `verify:corpus` (`0/0`)
177
- - `check:embeddings-fresh` (`OK`)
178
- - `smoke:engines` + `smoke:register-engine`
179
- - `eval:diff zettel` (cov + avg)
180
- - `check:links` (file count)
181
-
182
- For a substantive cycle, also include any NEW gates added in this cycle (e.g. v0.6.12 added `verify:no-legacy-shell-shapes`; first cycle shipping a new gate calls it out).
183
-
184
- Skip optional gates (`check:card-structure`, `check:drawer-structure`, etc.) unless one of them was the lesson of the cycle.
185
-
186
- ---
187
-
188
- ## §Cross-references — when to cite siblings
189
-
190
- A single-version note may need to reference:
191
-
192
- - **A previous version** when the current cycle retracts / iterates on it. Example: v0.6.21 retracts FEEDBACK-37 from v0.6.20 — the v0.6.21 note has a heads-up paragraph naming v0.6.20.
193
- - **A future version** when something is deferred. Less common; use sparingly.
194
- - **A companion plugin/skill version** when the cycle bundles a tooling update alongside the package cut. Format: "Companion: `<companion-plugin>` **vX.Y.Z** — `<one-line>`."
195
- - **An ADR** when the cycle ratifies an architectural decision. Format: "Post-mortem at ADR-NNNN." Example: v0.6.21 → ADR-0033.
196
-
197
- ---
198
-
199
- ## §What NOT to put in the notes
200
-
201
- - Internal-only ticket fields (assignee, status before/after, etc.).
202
- - Implementation details that don't affect consumers (file rename inside a package, refactor that didn't change API).
203
- - "Coming soon" announcements about future versions. Notes describe shipped work.
204
- - Profanity, jokes, or off-topic content. Notes are a permanent artifact attached to a tag.
205
-
206
- ---
207
-
208
- ## §When this reference is "done v1"
209
-
210
- - The `gh-release-notes.template.md` and `slack-release.template.md` templates land in `assets/templates/`.
211
- - The next 3 cycles' notes are authored from the template + the per-cycle CHANGELOG content with no operator improvisation beyond filling in version-specific details.
212
- - The Slack post copy-paste shape works in Slack's rich-text composer with zero `mrkdwn` (legacy) overrides.