@adia-ai/adia-ui-forge 0.1.2 → 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.
- package/.claude-plugin/plugin.json +3 -6
- package/CHANGELOG.md +27 -26
- package/README.md +35 -40
- package/agents/a2ui-engineer.md +26 -0
- package/agents/component-author.md +29 -0
- package/agents/framework-verifier.md +26 -0
- package/agents/release-engineer.md +25 -0
- package/agents/routing-corpus.json +318 -0
- package/bin/demo-postwrite-pattern-gate +94 -0
- package/bin/forge-lint +17 -2
- package/bin/sidecar-prewrite-guard +104 -0
- package/commands/deploy.md +9 -0
- package/commands/dogfood.md +10 -0
- package/commands/gen-review.md +9 -0
- package/commands/release.md +10 -0
- package/hooks/hooks.json +15 -0
- package/package.json +3 -5
- package/references/contracts/a2ui-mcp-surface.md +35 -0
- package/references/contracts/migration-guide-format.md +34 -0
- package/references/shared/content-trust.md +19 -74
- package/skills/adia-a2ui/SKILL.md +99 -0
- package/skills/{adia-ui-a2ui → adia-a2ui}/evals/routing-corpus.json +10 -10
- package/skills/adia-a2ui/references/anti-patterns.md +27 -0
- package/skills/adia-a2ui/references/chunk-authoring.md +71 -0
- package/skills/adia-a2ui/references/corpus-discipline.md +68 -0
- package/skills/adia-a2ui/references/eval-diagnostics.md +86 -0
- package/skills/adia-a2ui/references/format-extension-decisions.md +66 -0
- package/skills/adia-a2ui/references/leverage-rules.md +52 -0
- package/skills/adia-a2ui/references/mcp-pipeline-ops.md +83 -0
- package/skills/adia-a2ui/references/mcp-tool-reference.md +59 -0
- package/skills/adia-a2ui/references/pipeline-overview.md +115 -0
- package/skills/adia-a2ui/references/semantic-fail-lifting.md +74 -0
- package/skills/adia-a2ui/references/strategy-engines.md +109 -0
- package/skills/adia-a2ui/references/zettel-calibration.md +104 -0
- package/skills/adia-author/SKILL.md +112 -0
- package/skills/adia-author/evals/routing-corpus.json +222 -0
- package/skills/{adia-ui-authoring → adia-author}/references/anti-patterns.md +33 -4
- package/skills/{adia-ui-authoring → adia-author}/references/authoring-cycle.md +9 -11
- package/skills/adia-author/references/canonical-pattern-index.md +243 -0
- package/skills/{adia-ui-authoring → adia-author}/references/code-style.md +19 -21
- package/skills/adia-author/references/common-gotchas.md +129 -0
- package/skills/adia-author/references/composite-demo-protocol.md +271 -0
- package/skills/{adia-ui-authoring → adia-author}/references/css-patterns.md +19 -6
- package/skills/{adia-ui-authoring → adia-author}/references/lifecycle-patterns.md +1 -0
- package/skills/{adia-ui-authoring → adia-author}/references/llm-bridge.md +3 -5
- package/skills/{adia-ui-authoring → adia-author}/references/module-promotion.md +22 -40
- package/skills/{adia-ui-authoring → adia-author}/references/primitive-audit.md +2 -4
- package/skills/{adia-ui-authoring → adia-author}/references/shell-patterns.md +12 -18
- package/skills/{adia-ui-authoring → adia-author}/references/token-contract.md +5 -7
- package/skills/{adia-ui-authoring → adia-author}/references/worked-example.md +3 -3
- package/skills/{adia-ui-authoring → adia-author}/references/yaml-contract.md +3 -3
- package/skills/{adia-ui-authoring → adia-author}/scripts/build-canonical-pattern-index.mjs +3 -3
- package/skills/adia-deploy/SKILL.md +128 -0
- package/skills/adia-deploy/references/deploy-playbooks.md +276 -0
- package/skills/adia-dogfood/SKILL.md +124 -0
- package/skills/adia-dogfood/references/admin-shell-anatomy.md +77 -0
- package/skills/adia-dogfood/references/app-shell-pitfalls.md +66 -0
- package/skills/adia-dogfood/references/card-anatomy-sweep.md +66 -0
- package/skills/adia-dogfood/references/html-attr-sweep.md +63 -0
- package/skills/adia-dogfood/references/native-leak-annotations.md +73 -0
- package/skills/adia-dogfood/references/visual-probe-triage.md +80 -0
- package/skills/{adia-ui-dogfood → adia-dogfood}/scripts/analyze.mjs +30 -14
- package/skills/adia-gen-review/SKILL.md +127 -0
- package/skills/adia-gen-review/references/corpus-html-patterns.md +279 -0
- package/skills/adia-gen-review/references/loop-protocol.md +216 -0
- package/skills/adia-gen-review/references/rubric-cosmetic.md +100 -0
- package/skills/adia-gen-review/references/rubric-decompose.md +101 -0
- package/skills/adia-gen-review/references/rubric-score.md +214 -0
- package/skills/{adia-ui-gen-review → adia-gen-review}/references/scores.schema.json +2 -2
- package/skills/{adia-ui-gen-review → adia-gen-review}/scripts/gen-review-coverage-audit.mjs +4 -4
- package/skills/{adia-ui-gen-review → adia-gen-review}/scripts/gen-review-decompose.mjs +10 -6
- package/skills/{adia-ui-gen-review → adia-gen-review}/scripts/gen-review-status.mjs +5 -5
- package/skills/{adia-ui-gen-review → adia-gen-review}/scripts/validate-cycle-scores.mjs +5 -5
- package/skills/adia-llm-internals/SKILL.md +77 -0
- package/skills/{adia-ui-llm → adia-llm-internals}/references/adapter-contract.md +4 -2
- package/skills/{adia-ui-llm → adia-llm-internals}/references/add-a-provider.md +4 -5
- package/skills/{adia-ui-llm → adia-llm-internals}/references/bridge-facade.md +10 -3
- package/skills/{adia-ui-llm → adia-llm-internals}/references/browser-proxy-boundary.md +1 -1
- package/skills/{adia-ui-llm → adia-llm-internals}/references/model-registry.md +5 -3
- package/skills/{adia-ui-llm → adia-llm-internals}/references/streaming-sse.md +2 -2
- package/skills/adia-release/SKILL.md +72 -0
- package/skills/adia-release/references/changelog-discipline.md +119 -0
- package/skills/adia-release/references/cut-procedure.md +247 -0
- package/skills/adia-release/references/gates-catalog.md +222 -0
- package/skills/adia-release/references/independent-package-release.md +52 -0
- package/skills/adia-release/references/migration-guide-authoring.md +86 -0
- package/skills/adia-release/references/notes-authoring.md +90 -0
- package/skills/adia-release/references/recovery-paths.md +106 -0
- package/skills/{adia-ui-release → adia-release}/scripts/bump.mjs +27 -2
- package/skills/{adia-ui-release → adia-release}/scripts/dispatch-publish.mjs +72 -6
- package/skills/{adia-ui-release → adia-release}/scripts/insert-stub.mjs +6 -4
- package/skills/adia-release/scripts/package-paths.mjs +50 -0
- package/skills/{adia-ui-release → adia-release}/scripts/promote-unreleased.mjs +4 -3
- package/skills/{adia-ui-release → adia-release}/scripts/release-pack.mjs +48 -27
- package/skills/{adia-ui-release → adia-release}/scripts/tag-lockstep.mjs +15 -3
- package/skills/adia-site-docs/SKILL.md +68 -0
- package/skills/adia-site-docs/evals/audit-report.md +30 -0
- package/skills/adia-site-docs/evals/routing-corpus.json +176 -0
- package/skills/adia-site-docs/intent.md +72 -0
- package/bin/lib/audit-axes.mjs +0 -555
- package/bin/lib/dry-run-irreversible.mjs +0 -236
- package/bin/lib/run-skill-evals.mjs +0 -487
- package/bin/lib/teach-router.mjs +0 -250
- package/commands/adia-forge-a2ui.md +0 -10
- package/commands/adia-forge-author.md +0 -10
- package/commands/adia-forge-dogfood.md +0 -8
- package/commands/adia-forge-llm.md +0 -8
- package/commands/adia-forge-orient.md +0 -10
- package/commands/adia-forge-release.md +0 -8
- package/commands/adia-forge-review.md +0 -10
- package/references/shared/pev-rationale.md +0 -64
- package/references/shared/skill-conventions.md +0 -133
- package/skills/adia-ui-a2ui/CHANGELOG.md +0 -32
- package/skills/adia-ui-a2ui/SKILL.md +0 -243
- package/skills/adia-ui-a2ui/evals/adversarial-corpus.json +0 -75
- package/skills/adia-ui-a2ui/evals/teach-routing-cases.json +0 -100
- package/skills/adia-ui-a2ui/references/anti-patterns.md +0 -24
- package/skills/adia-ui-a2ui/references/chunk-authoring.md +0 -88
- package/skills/adia-ui-a2ui/references/corpus-discipline.md +0 -56
- package/skills/adia-ui-a2ui/references/eval-diagnostics.md +0 -127
- package/skills/adia-ui-a2ui/references/fragment-graph.md +0 -91
- package/skills/adia-ui-a2ui/references/mcp-pipeline-ops.md +0 -106
- package/skills/adia-ui-a2ui/references/mcp-tool-reference.md +0 -398
- package/skills/adia-ui-a2ui/references/pipeline-overview.md +0 -175
- package/skills/adia-ui-a2ui/references/semantic-fail-lifting.md +0 -120
- package/skills/adia-ui-a2ui/references/strategy-engines.md +0 -111
- package/skills/adia-ui-a2ui/references/teach-protocol.md +0 -220
- package/skills/adia-ui-a2ui/references/zettel-calibration.md +0 -93
- package/skills/adia-ui-a2ui/scripts/audit-a2ui-roster.mjs +0 -96
- package/skills/adia-ui-a2ui/scripts/teach-route.mjs +0 -157
- package/skills/adia-ui-a2ui/skill.json +0 -38
- package/skills/adia-ui-authoring/CHANGELOG.md +0 -32
- package/skills/adia-ui-authoring/SKILL.md +0 -256
- package/skills/adia-ui-authoring/assets/case-studies/admin-shell-decomposition.md +0 -101
- package/skills/adia-ui-authoring/assets/case-studies/maxtokens-32768-discovery.md +0 -109
- package/skills/adia-ui-authoring/assets/case-studies/theme-panel-promotion.md +0 -113
- package/skills/adia-ui-authoring/evals/adversarial-design-plan-gates.json +0 -138
- package/skills/adia-ui-authoring/evals/routing-corpus.json +0 -245
- package/skills/adia-ui-authoring/references/canonical-pattern-index.md +0 -179
- package/skills/adia-ui-authoring/references/common-gotchas.md +0 -93
- package/skills/adia-ui-authoring/references/composite-demo-protocol.md +0 -1084
- package/skills/adia-ui-authoring/references/teach-protocol.md +0 -428
- package/skills/adia-ui-authoring/scripts/audit-authoring-roster.mjs +0 -148
- package/skills/adia-ui-authoring/skill.json +0 -45
- package/skills/adia-ui-dogfood/CHANGELOG.md +0 -17
- package/skills/adia-ui-dogfood/README.md +0 -62
- package/skills/adia-ui-dogfood/SKILL.md +0 -866
- package/skills/adia-ui-dogfood/skill.json +0 -40
- package/skills/adia-ui-forge/SKILL.md +0 -88
- package/skills/adia-ui-forge/evals/routing-corpus.json +0 -30
- package/skills/adia-ui-gen-review/CHANGELOG.md +0 -108
- package/skills/adia-ui-gen-review/SKILL.md +0 -266
- package/skills/adia-ui-gen-review/references/loop-protocol.md +0 -712
- package/skills/adia-ui-gen-review/references/rubric-cosmetic.md +0 -144
- package/skills/adia-ui-gen-review/references/rubric-decompose.md +0 -117
- package/skills/adia-ui-gen-review/references/rubric-score.md +0 -249
- package/skills/adia-ui-gen-review/references/teach-protocol.md +0 -214
- package/skills/adia-ui-gen-review/skill.json +0 -22
- package/skills/adia-ui-llm/CHANGELOG.md +0 -25
- package/skills/adia-ui-llm/SKILL.md +0 -165
- package/skills/adia-ui-llm/evals/adversarial-corpus.json +0 -75
- package/skills/adia-ui-llm/evals/routing-corpus.json +0 -30
- package/skills/adia-ui-llm/evals/teach-routing-cases.json +0 -73
- package/skills/adia-ui-llm/references/teach-protocol.md +0 -78
- package/skills/adia-ui-llm/scripts/audit-llm-roster.mjs +0 -93
- package/skills/adia-ui-llm/scripts/teach-route.mjs +0 -119
- package/skills/adia-ui-llm/skill.json +0 -33
- package/skills/adia-ui-release/CHANGELOG.md +0 -23
- package/skills/adia-ui-release/SKILL.md +0 -295
- package/skills/adia-ui-release/assets/case-studies/2026-05-20-batch-push-v0.6.14-v0.6.15.md +0 -144
- package/skills/adia-ui-release/assets/case-studies/2026-05-20-corpus-drift-remediation-v0.6.15.md +0 -155
- package/skills/adia-ui-release/assets/case-studies/2026-05-20-version-skip-correction-v0.6.12.md +0 -114
- package/skills/adia-ui-release/assets/case-studies/2026-05-21-author-from-scratch-v0.6.18.md +0 -139
- package/skills/adia-ui-release/assets/case-studies/2026-05-21-feedback37-retraction-v0.6.21.md +0 -124
- package/skills/adia-ui-release/assets/case-studies/2026-05-21-fn1-enrichment-pass-v0.6.19.md +0 -125
- package/skills/adia-ui-release/assets/case-studies/2026-05-21-stale-test-detection-v0.6.20.md +0 -142
- package/skills/adia-ui-release/assets/case-studies/2026-05-23-freshness-gate-recovery-v0.6.32.md +0 -97
- package/skills/adia-ui-release/assets/case-studies/2026-05-26-catalog-drift-recurring-v0.6.40.md +0 -147
- package/skills/adia-ui-release/assets/templates/stub-changelog.template.md +0 -22
- package/skills/adia-ui-release/evals/evals.json +0 -164
- package/skills/adia-ui-release/references/changelog-discipline.md +0 -250
- package/skills/adia-ui-release/references/cycle-happy-path.md +0 -520
- package/skills/adia-ui-release/references/exe-deploy.md +0 -149
- package/skills/adia-ui-release/references/gates-catalog.md +0 -778
- package/skills/adia-ui-release/references/ledger-discipline.md +0 -232
- package/skills/adia-ui-release/references/migration-guide-authoring.md +0 -174
- package/skills/adia-ui-release/references/multi-agent-baseline.md +0 -207
- package/skills/adia-ui-release/references/notes-authoring.md +0 -212
- package/skills/adia-ui-release/references/recovery-paths.md +0 -215
- package/skills/adia-ui-release/references/rollup-notes.md +0 -208
- package/skills/adia-ui-release/references/teach-protocol.md +0 -468
- package/skills/adia-ui-release/scripts/audit-gate-roster.mjs +0 -196
- package/skills/adia-ui-release/scripts/make-ledger.mjs +0 -179
- package/skills/adia-ui-release/skill.json +0 -75
- /package/skills/{adia-ui-authoring → adia-author}/references/api-contract.md +0 -0
- /package/skills/{adia-ui-release → adia-release}/scripts/assert-monorepo-root.mjs +0 -0
|
@@ -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.
|
|
@@ -1,215 +0,0 @@
|
|
|
1
|
-
# `recovery-paths.md` — the 5 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
|
-
## §Decision flowchart — which scenario applies?
|
|
181
|
-
|
|
182
|
-
```text
|
|
183
|
-
Pre-flight or F-N1 gate failed?
|
|
184
|
-
├── check:demo-shells fails at the release-commit candidate?
|
|
185
|
-
│ └── Look at the post-commit diff: was there a fix-up?
|
|
186
|
-
│ ├── Yes, but entangled with [Unreleased] work → Scenario 4
|
|
187
|
-
│ └── No → Author the fix in this cycle (Mode 2 from scratch)
|
|
188
|
-
├── check:lockstep fails? → typically a peer manually edited an
|
|
189
|
-
│ internal range during a PATCH cut → Scenario 4 or fix in place
|
|
190
|
-
├── verify:corpus fails? → corpus drift → routes to adia-ui-a2ui skill
|
|
191
|
-
├── check:embeddings-fresh fails? → run npm run build:embeddings:chunks;
|
|
192
|
-
│ stage chunk-embeddings.json; document in a2ui-corpus CHANGELOG
|
|
193
|
-
├── test:unit fails? → Scenario 5 (stale test) OR real regression
|
|
194
|
-
│ (read assertion vs CHANGELOG vs source code to tell apart)
|
|
195
|
-
└── F-N1 warns (cosmetic)? → enrichment pass (changelog-discipline.md)
|
|
196
|
-
|
|
197
|
-
Multiple unpushed release commits exist?
|
|
198
|
-
└── Scenario 2 (batch push)
|
|
199
|
-
|
|
200
|
-
Peer commit's CHANGELOG references a different version than its bump?
|
|
201
|
-
└── Scenario 1 (version-skip correction)
|
|
202
|
-
|
|
203
|
-
Working tree has uncommitted source files when you start the cycle?
|
|
204
|
-
└── Apply multi-agent-baseline.md § classification taxonomy.
|
|
205
|
-
Stash strays per § Discipline 4 if they're release-relevant +
|
|
206
|
-
undocumented + contradicting.
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
---
|
|
210
|
-
|
|
211
|
-
## §When this reference is "done v1"
|
|
212
|
-
|
|
213
|
-
- Each of the 5 (now 6) scenarios has a documented case study in `assets/case-studies/` (Phase 3).
|
|
214
|
-
- The decision flowchart correctly routes the next 5 release cycles with no operator override.
|
|
215
|
-
- 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.
|