@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.
Files changed (196) hide show
  1. package/.claude-plugin/plugin.json +3 -6
  2. package/CHANGELOG.md +27 -26
  3. package/README.md +35 -40
  4. package/agents/a2ui-engineer.md +26 -0
  5. package/agents/component-author.md +29 -0
  6. package/agents/framework-verifier.md +26 -0
  7. package/agents/release-engineer.md +25 -0
  8. package/agents/routing-corpus.json +318 -0
  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 -5
  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 +22 -40
  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-deploy/references/deploy-playbooks.md +276 -0
  55. package/skills/adia-dogfood/SKILL.md +124 -0
  56. package/skills/adia-dogfood/references/admin-shell-anatomy.md +77 -0
  57. package/skills/adia-dogfood/references/app-shell-pitfalls.md +66 -0
  58. package/skills/adia-dogfood/references/card-anatomy-sweep.md +66 -0
  59. package/skills/adia-dogfood/references/html-attr-sweep.md +63 -0
  60. package/skills/adia-dogfood/references/native-leak-annotations.md +73 -0
  61. package/skills/adia-dogfood/references/visual-probe-triage.md +80 -0
  62. package/skills/{adia-ui-dogfood → adia-dogfood}/scripts/analyze.mjs +30 -14
  63. package/skills/adia-gen-review/SKILL.md +127 -0
  64. package/skills/adia-gen-review/references/corpus-html-patterns.md +279 -0
  65. package/skills/adia-gen-review/references/loop-protocol.md +216 -0
  66. package/skills/adia-gen-review/references/rubric-cosmetic.md +100 -0
  67. package/skills/adia-gen-review/references/rubric-decompose.md +101 -0
  68. package/skills/adia-gen-review/references/rubric-score.md +214 -0
  69. package/skills/{adia-ui-gen-review → adia-gen-review}/references/scores.schema.json +2 -2
  70. package/skills/{adia-ui-gen-review → adia-gen-review}/scripts/gen-review-coverage-audit.mjs +4 -4
  71. package/skills/{adia-ui-gen-review → adia-gen-review}/scripts/gen-review-decompose.mjs +10 -6
  72. package/skills/{adia-ui-gen-review → adia-gen-review}/scripts/gen-review-status.mjs +5 -5
  73. package/skills/{adia-ui-gen-review → adia-gen-review}/scripts/validate-cycle-scores.mjs +5 -5
  74. package/skills/adia-llm-internals/SKILL.md +77 -0
  75. package/skills/{adia-ui-llm → adia-llm-internals}/references/adapter-contract.md +4 -2
  76. package/skills/{adia-ui-llm → adia-llm-internals}/references/add-a-provider.md +4 -5
  77. package/skills/{adia-ui-llm → adia-llm-internals}/references/bridge-facade.md +10 -3
  78. package/skills/{adia-ui-llm → adia-llm-internals}/references/browser-proxy-boundary.md +1 -1
  79. package/skills/{adia-ui-llm → adia-llm-internals}/references/model-registry.md +5 -3
  80. package/skills/{adia-ui-llm → adia-llm-internals}/references/streaming-sse.md +2 -2
  81. package/skills/adia-release/SKILL.md +72 -0
  82. package/skills/adia-release/references/changelog-discipline.md +119 -0
  83. package/skills/adia-release/references/cut-procedure.md +247 -0
  84. package/skills/adia-release/references/gates-catalog.md +222 -0
  85. package/skills/adia-release/references/independent-package-release.md +52 -0
  86. package/skills/adia-release/references/migration-guide-authoring.md +86 -0
  87. package/skills/adia-release/references/notes-authoring.md +90 -0
  88. package/skills/adia-release/references/recovery-paths.md +106 -0
  89. package/skills/{adia-ui-release → adia-release}/scripts/bump.mjs +27 -2
  90. package/skills/{adia-ui-release → adia-release}/scripts/dispatch-publish.mjs +72 -6
  91. package/skills/{adia-ui-release → adia-release}/scripts/insert-stub.mjs +6 -4
  92. package/skills/adia-release/scripts/package-paths.mjs +50 -0
  93. package/skills/{adia-ui-release → adia-release}/scripts/promote-unreleased.mjs +4 -3
  94. package/skills/{adia-ui-release → adia-release}/scripts/release-pack.mjs +48 -27
  95. package/skills/{adia-ui-release → adia-release}/scripts/tag-lockstep.mjs +15 -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/bin/lib/audit-axes.mjs +0 -555
  101. package/bin/lib/dry-run-irreversible.mjs +0 -236
  102. package/bin/lib/run-skill-evals.mjs +0 -487
  103. package/bin/lib/teach-router.mjs +0 -250
  104. package/commands/adia-forge-a2ui.md +0 -10
  105. package/commands/adia-forge-author.md +0 -10
  106. package/commands/adia-forge-dogfood.md +0 -8
  107. package/commands/adia-forge-llm.md +0 -8
  108. package/commands/adia-forge-orient.md +0 -10
  109. package/commands/adia-forge-release.md +0 -8
  110. package/commands/adia-forge-review.md +0 -10
  111. package/references/shared/pev-rationale.md +0 -64
  112. package/references/shared/skill-conventions.md +0 -133
  113. package/skills/adia-ui-a2ui/CHANGELOG.md +0 -32
  114. package/skills/adia-ui-a2ui/SKILL.md +0 -243
  115. package/skills/adia-ui-a2ui/evals/adversarial-corpus.json +0 -75
  116. package/skills/adia-ui-a2ui/evals/teach-routing-cases.json +0 -100
  117. package/skills/adia-ui-a2ui/references/anti-patterns.md +0 -24
  118. package/skills/adia-ui-a2ui/references/chunk-authoring.md +0 -88
  119. package/skills/adia-ui-a2ui/references/corpus-discipline.md +0 -56
  120. package/skills/adia-ui-a2ui/references/eval-diagnostics.md +0 -127
  121. package/skills/adia-ui-a2ui/references/fragment-graph.md +0 -91
  122. package/skills/adia-ui-a2ui/references/mcp-pipeline-ops.md +0 -106
  123. package/skills/adia-ui-a2ui/references/mcp-tool-reference.md +0 -398
  124. package/skills/adia-ui-a2ui/references/pipeline-overview.md +0 -175
  125. package/skills/adia-ui-a2ui/references/semantic-fail-lifting.md +0 -120
  126. package/skills/adia-ui-a2ui/references/strategy-engines.md +0 -111
  127. package/skills/adia-ui-a2ui/references/teach-protocol.md +0 -220
  128. package/skills/adia-ui-a2ui/references/zettel-calibration.md +0 -93
  129. package/skills/adia-ui-a2ui/scripts/audit-a2ui-roster.mjs +0 -96
  130. package/skills/adia-ui-a2ui/scripts/teach-route.mjs +0 -157
  131. package/skills/adia-ui-a2ui/skill.json +0 -38
  132. package/skills/adia-ui-authoring/CHANGELOG.md +0 -32
  133. package/skills/adia-ui-authoring/SKILL.md +0 -256
  134. package/skills/adia-ui-authoring/assets/case-studies/admin-shell-decomposition.md +0 -101
  135. package/skills/adia-ui-authoring/assets/case-studies/maxtokens-32768-discovery.md +0 -109
  136. package/skills/adia-ui-authoring/assets/case-studies/theme-panel-promotion.md +0 -113
  137. package/skills/adia-ui-authoring/evals/adversarial-design-plan-gates.json +0 -138
  138. package/skills/adia-ui-authoring/evals/routing-corpus.json +0 -245
  139. package/skills/adia-ui-authoring/references/canonical-pattern-index.md +0 -179
  140. package/skills/adia-ui-authoring/references/common-gotchas.md +0 -93
  141. package/skills/adia-ui-authoring/references/composite-demo-protocol.md +0 -1084
  142. package/skills/adia-ui-authoring/references/teach-protocol.md +0 -428
  143. package/skills/adia-ui-authoring/scripts/audit-authoring-roster.mjs +0 -148
  144. package/skills/adia-ui-authoring/skill.json +0 -45
  145. package/skills/adia-ui-dogfood/CHANGELOG.md +0 -17
  146. package/skills/adia-ui-dogfood/README.md +0 -62
  147. package/skills/adia-ui-dogfood/SKILL.md +0 -866
  148. package/skills/adia-ui-dogfood/skill.json +0 -40
  149. package/skills/adia-ui-forge/SKILL.md +0 -88
  150. package/skills/adia-ui-forge/evals/routing-corpus.json +0 -30
  151. package/skills/adia-ui-gen-review/CHANGELOG.md +0 -108
  152. package/skills/adia-ui-gen-review/SKILL.md +0 -266
  153. package/skills/adia-ui-gen-review/references/loop-protocol.md +0 -712
  154. package/skills/adia-ui-gen-review/references/rubric-cosmetic.md +0 -144
  155. package/skills/adia-ui-gen-review/references/rubric-decompose.md +0 -117
  156. package/skills/adia-ui-gen-review/references/rubric-score.md +0 -249
  157. package/skills/adia-ui-gen-review/references/teach-protocol.md +0 -214
  158. package/skills/adia-ui-gen-review/skill.json +0 -22
  159. package/skills/adia-ui-llm/CHANGELOG.md +0 -25
  160. package/skills/adia-ui-llm/SKILL.md +0 -165
  161. package/skills/adia-ui-llm/evals/adversarial-corpus.json +0 -75
  162. package/skills/adia-ui-llm/evals/routing-corpus.json +0 -30
  163. package/skills/adia-ui-llm/evals/teach-routing-cases.json +0 -73
  164. package/skills/adia-ui-llm/references/teach-protocol.md +0 -78
  165. package/skills/adia-ui-llm/scripts/audit-llm-roster.mjs +0 -93
  166. package/skills/adia-ui-llm/scripts/teach-route.mjs +0 -119
  167. package/skills/adia-ui-llm/skill.json +0 -33
  168. package/skills/adia-ui-release/CHANGELOG.md +0 -23
  169. package/skills/adia-ui-release/SKILL.md +0 -295
  170. package/skills/adia-ui-release/assets/case-studies/2026-05-20-batch-push-v0.6.14-v0.6.15.md +0 -144
  171. package/skills/adia-ui-release/assets/case-studies/2026-05-20-corpus-drift-remediation-v0.6.15.md +0 -155
  172. package/skills/adia-ui-release/assets/case-studies/2026-05-20-version-skip-correction-v0.6.12.md +0 -114
  173. package/skills/adia-ui-release/assets/case-studies/2026-05-21-author-from-scratch-v0.6.18.md +0 -139
  174. package/skills/adia-ui-release/assets/case-studies/2026-05-21-feedback37-retraction-v0.6.21.md +0 -124
  175. package/skills/adia-ui-release/assets/case-studies/2026-05-21-fn1-enrichment-pass-v0.6.19.md +0 -125
  176. package/skills/adia-ui-release/assets/case-studies/2026-05-21-stale-test-detection-v0.6.20.md +0 -142
  177. package/skills/adia-ui-release/assets/case-studies/2026-05-23-freshness-gate-recovery-v0.6.32.md +0 -97
  178. package/skills/adia-ui-release/assets/case-studies/2026-05-26-catalog-drift-recurring-v0.6.40.md +0 -147
  179. package/skills/adia-ui-release/assets/templates/stub-changelog.template.md +0 -22
  180. package/skills/adia-ui-release/evals/evals.json +0 -164
  181. package/skills/adia-ui-release/references/changelog-discipline.md +0 -250
  182. package/skills/adia-ui-release/references/cycle-happy-path.md +0 -520
  183. package/skills/adia-ui-release/references/exe-deploy.md +0 -149
  184. package/skills/adia-ui-release/references/gates-catalog.md +0 -778
  185. package/skills/adia-ui-release/references/ledger-discipline.md +0 -232
  186. package/skills/adia-ui-release/references/migration-guide-authoring.md +0 -174
  187. package/skills/adia-ui-release/references/multi-agent-baseline.md +0 -207
  188. package/skills/adia-ui-release/references/notes-authoring.md +0 -212
  189. package/skills/adia-ui-release/references/recovery-paths.md +0 -215
  190. package/skills/adia-ui-release/references/rollup-notes.md +0 -208
  191. package/skills/adia-ui-release/references/teach-protocol.md +0 -468
  192. package/skills/adia-ui-release/scripts/audit-gate-roster.mjs +0 -196
  193. package/skills/adia-ui-release/scripts/make-ledger.mjs +0 -179
  194. package/skills/adia-ui-release/skill.json +0 -75
  195. /package/skills/{adia-ui-authoring → adia-author}/references/api-contract.md +0 -0
  196. /package/skills/{adia-ui-release → adia-release}/scripts/assert-monorepo-root.mjs +0 -0
@@ -1,149 +0,0 @@
1
- # `exe-deploy.md` — site build + deploy + version-verify
2
-
3
- > Loaded by mode 1 Step 10. Long-running VM ops (provision, restart, key rotation, etc.) are a **separate ops concern** — out of scope for this skill and not shipped in this plugin. This file is the release-cycle's deploy tenant only: site build → rsync → verify.
4
-
5
- > **Worked example — the @adia-ai monorepo's demo-site deploy.** The concrete host (`ui-kit.exe.xyz`, a shared Linux VM on exe.dev), the `rsync … :/srv/adia-ui/dist/` target, and the SPA-route trap below are **the worked example** drawn from the @adia-ai monorepo. They are NOT universal. The portable DISCIPLINE is: (1) build the site from the working tree, (2) stash peer-in-flight strays before deploy so the deployed site matches the just-published packages, (3) verify deployed **files** (not SPA routes — see the trap below), (4) restore the stash after. Substitute your monorepo's own demo-site host + transport.
6
-
7
- The @adia-ai demo site is served from `ui-kit.exe.xyz` (a shared Linux VM on exe.dev). Every release cycle ends with a site deploy so the live demos reflect the just-shipped npm packages.
8
-
9
- The site is a **living HEAD demo**, not version-pinned. It tracks main
10
-
11
- - the working tree's demo HTML. This is by design — readers expect the demos to evolve.
12
-
13
- ---
14
-
15
- ## §The 3-step deploy
16
-
17
- ### Step 1 — Build the site locally
18
-
19
- ```bash
20
- npm run build:site 2>&1 | tail -2
21
- # Expected: "done — NNNNN files, NN.N MB, NNNNms"
22
- ```
23
-
24
- `scripts/build/site.mjs` is the site builder. It:
25
-
26
- - Copies `site/`, `apps/`, `playgrounds/`, `catalog/` into `dist/`
27
- - Generates per-component reference pages from yaml
28
- - Copies the 9 `@adia-ai/*` packages' `dist/` into `dist/packages/`
29
- - Symlinks `node_modules/@adia-ai/*` for bare-specifier resolution
30
- - Copies CodeMirror 6 runtime, 2 third-party root deps + 4 transitive
31
- - Injects importmap into 268+ HTML files
32
-
33
- If `build:site` fails, **stop** — don't deploy. Common failure:
34
-
35
- - A `<script>` reference to a non-existent file (often a demo .html referencing a primitive whose path moved).
36
- - A symlink resolution failure (run `npm install` in the worktree if this is a fresh checkout — see `feedback_worktree_node_modules_silent_glob`).
37
-
38
- ### Step 2 — Stash strays before deploy
39
-
40
- **Critical**: the site build runs from the WORKING TREE, not from a git tag. If you have stashed peer-in-flight files at Step 2 of the cycle (per `multi-agent-baseline.md` § Discipline 4), KEEP THEM STASHED through the deploy. The deployed site should match v0.X.Y's npm packages exactly — peer-in-flight uncommitted files would leak.
41
-
42
- If any uncommitted source files appeared mid-cycle (concurrent peer activity), classify them per `multi-agent-baseline.md` § Discipline 2 BEFORE deploying. Decision:
43
-
44
- - **Release-relevant + matches CHANGELOG** — could include (rare; peer finished documenting just-in-time)
45
- - **Release-relevant + contradicts CHANGELOG** — STASH; deploy without
46
- - **Future-release work** — STASH; deploy without
47
- - **Ticket-lane / skill / journal** — they don't affect the site build's output materially, leave or stash per taste
48
-
49
- When in doubt, stash. The deploy then reflects pure committed state.
50
-
51
- ### Step 3 — Rsync to EXE + verify
52
-
53
- > **⚠️ curl-200 on a `/site/<route>` path proves NOTHING (v0.7.4 incident).** The docs site is a **client-side-routed SPA**: the server returns the same ~5 KB `index.html` shell (`<title>AdiaUI Docs</title>`) for **every** path with HTTP 200, then `site.js` renders `#router` from `site/sitemap.json`. An **unmatched** route renders **blank** — still 200. In v0.7.4 the deploy-verify (and the release notes) cited `https://ui-kit.exe.xyz/site/gen-ui/` and `/site/components/theme-panel` — **neither is a sitemap route** — got 200, and reported "renders". Both were blank. The real routes are `/site/playground/gen-ui`, `/site/examples/gen-ui-feed`, `/site/components/<slug>`. **Verify deployed FILES, not SPA routes**, per below.
54
-
55
- ```bash
56
- rsync -az --delete "$REPO/dist/" \
57
- ui-kit.exe.xyz:/srv/adia-ui/dist/ 2>&1 | tail -1
58
-
59
- # (a) Service up + build deployed — curl a CONTENT FILE (returns its OWN
60
- # bytes, not the SPA shell). A 404 here is a REAL deploy failure.
61
- curl -s -o /dev/null -w "host.css: HTTP %{http_code}\n" \
62
- https://ui-kit.exe.xyz/packages/web-components/styles/host.css # expect 200
63
-
64
- # (b) A demo/content artifact for THIS cycle — assert REAL content, not the
65
- # 5 KB "AdiaUI Docs" shell. grep a string only the real file contains:
66
- curl -s https://ui-kit.exe.xyz/apps/genui/app/gen-ui/gen-ui.html \
67
- | grep -q "Gen UI Canvas" && echo "gen-ui content OK" || echo "gen-ui MISSING"
68
- ```
69
-
70
- **Verify checklist (FILES, not routes):**
71
-
72
- - HTTP 200 on a deployed **asset** (`/packages/web-components/styles/host.css`) — confirms the rsync landed + the service serves files.
73
- - The cycle's substantive change has its **content file** deployed with real bytes (grep a unique string; size ≠ ~5 KB shell):
74
- - Component changed? `…/packages/web-components/components/<name>/<name>.html`
75
- - Module/shell changed? `…/packages/web-modules/<cluster>/<name>/<name>.html`
76
- - Standalone docs page? Its `content:` source from sitemap.json, e.g. `…/apps/genui/app/gen-ui/gen-ui.html`
77
- - To cite a **docs route** (in notes or to the operator), it MUST exist in `site/sitemap.json` (`grep '"path": "/site/…"'`) **and** its `content:` / standalone source must be deployed. A route absent from the sitemap renders blank.
78
- - **For true render proof** (not just "file deployed"), run a headless probe — `scripts/qa/*-probe.mjs` — that asserts `#router` has children + 0 console errors. curl can't see client-side render.
79
-
80
- If any HTTP returns non-200, **don't panic** — the deploy might be mid-replication. Wait 30 seconds and re-curl. If still failing, check:
81
-
82
- 1. Did `rsync` actually transfer? Re-run the rsync; look at the transfer count in the output.
83
- 2. Is the demo-site service up? `curl -I https://ui-kit.exe.xyz/` should return 200. If not, the VM itself is down — that's a long-running-ops concern (separate from this skill; out of scope).
84
- 3. Is the new path missing from `dist/`? `find dist/<path>` should list the file. If not — `build:site` didn't generate it (the gen-UI new-primitive case — site/sitemap.json may need an entry; see `feedback_build_site_dist_gap_after_package_change`).
85
-
86
- ---
87
-
88
- ## §Site build invariants
89
-
90
- These hold across every cycle:
91
-
92
- 1. **`dist/site/sitemap.json`** is the live demo manifest. The site home page reads it; entries with missing files render as 404.
93
- 2. **`dist/node_modules/@adia-ai/*`** are symlinks to `dist/packages/*`. The importmap depends on them.
94
- 3. **HTML files get the importmap injected** at build time (~268 files in the current site). Skipped: files that already have one, or files without `<head>`.
95
- 4. **CodeMirror 6 runtime ships with `<code-ui>`** — copied to `dist/packages/web-components/components/code/` (12 files, ~555 KB min).
96
- 5. **`dist/` is reproducible** — running `npm run build:site` twice should produce identical output (modulo timestamps).
97
-
98
- ---
99
-
100
- ## §EXE deploy invariants
101
-
102
- These are EXE-specific concerns:
103
-
104
- 1. **The remote target is `ui-kit.exe.xyz:/srv/adia-ui/dist/`** for the @adia-ai monorepo — wired into nginx vhost config on the VM, so don't change it for that deploy. The host is the worked-example default; `release-pack.mjs` exposes it as `--host <deploy-host>` (or `$ADIA_DEPLOY_HOST`), defaulting to `ui-kit.exe.xyz`, so a forked lockstep monorepo can point rsync + the curl verify at its own demo host without editing the script.
105
- 2. **`rsync -az --delete`** is the canonical command. The `--delete` flag removes files on the remote that aren't in the local `dist/`. This is what keeps stale demos from accumulating.
106
- 3. **SSH access** is operator-owned (kimba's SSH key). The skill doesn't manage credentials.
107
- 4. **HTTPS termination** is handled by exe.dev; the VM serves HTTP. Trust the cert chain.
108
- 5. **For per-package CLI version verification** — the v0.6.7 `bin/` added `adia-ui-doc` CLI; for cycles that touch `packages/<pkg>/bin/`, verify the published CLI works after deploy:
109
-
110
- ```bash
111
- npx @adia-ai/web-components@X.Y.Z adia-ui-doc <component>
112
- ```
113
-
114
- ---
115
-
116
- ## §When deploy is NOT clean
117
-
118
- If `build:site` fails or `rsync` errors or `curl` returns non-200:
119
-
120
- 1. **Don't immediately re-deploy** — diagnose first.
121
- 2. The v0.X.Y release is ALREADY SHIPPED to npm at this point (the deploy runs after publish in Step 10). The site lag is recoverable; the npm publishes aren't.
122
- 3. Common recovery paths:
123
- - **Site build error** — fix the source issue (often a typo in a demo .html or a missing primitive registration), re-build, re-deploy.
124
- - **rsync hung / SSH refused** — VM rebooting? Check `https://ui-kit.exe.xyz/` directly; if up, retry rsync. If down, the VM is a long-running-ops concern (separate from this skill; out of scope).
125
- - **HTTP 404 on a new path** — `sitemap.json` may not have the new entry, OR the build's file-copy missed a per-package path (memory: `feedback_build_site_dist_gap_after_package_change`).
126
- 4. Log the deploy issue in the ledger's `notes` array even if the release shipped to npm successfully.
127
-
128
- ---
129
-
130
- ## §Stash restoration AFTER deploy
131
-
132
- If you stashed files at the start of the cycle (Step 2) OR mid-cycle (post-publish, pre-deploy), restore them after the deploy completes:
133
-
134
- ```bash
135
- git -C $REPO stash pop 2>&1 | tail -3
136
- ```
137
-
138
- If `pop` reports "Dropped stash@{0}" — clean restore, you're done.
139
-
140
- If it reports "kept the stash" — there's a conflict. The working tree moved while you were releasing (typically a concurrent peer made changes). Investigate per `recovery-paths.md` § Scenario 6 (concurrent peer mid-cycle).
141
-
142
- ---
143
-
144
- ## §When this reference is "done v1"
145
-
146
- - Every cycle's site deploy completes with a single HTTP 200 verify
147
- - (optional) demo-route verify.
148
- - Stash discipline is followed across cycles — the deployed site matches the v0.X.Y tag's tree, modulo intentional living-HEAD demo updates.
149
- - Deploy failures route through this file's "When deploy is NOT clean" decision tree without operator improvisation.