@adia-ai/a2ui 0.8.37 → 0.8.39

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/CHANGELOG.md CHANGED
@@ -4,6 +4,30 @@
4
4
  > 0.8.37 (the estate-split cut) were released under the old name and are kept
5
5
  > verbatim.
6
6
 
7
+ ## [0.8.39] — 2026-08-15
8
+
9
+ ### Added
10
+ - **L1 is populated — 44 curated widgets in `@adia-ai/a2ui/catalog/tiers` (ADR-0050, gh#1291 phase 1).** The gap tier the ladder was built for: named, versioned, chat-scale functional units, each carrying its `composes` edge to L0, an A2UI `template`, a description, retrieval keywords, and `source` provenance — enough for a consumer to enumerate a widget and emit it without the corpus. Breadth-first across 17 domains (agent, auth, billing, content, dashboard, data, data-management, display, error, forms, input, layout, marketing, navigation, onboarding, overlay, settings), capped at 3 per domain. Curated from the 516 harvested templates by five mechanical gates and three selection rules, both authored in `catalog/tiers/curation/l1-widgets.curation.json` with their rationale. L2 is unblocked — the composability law had L1 as its precondition. The tier index grows 25 KB → 213 KB; `wiring` and `preview` remain unpopulated (later phases).
11
+
12
+ ### Changed
13
+ - **The composability law now reaches into templates (gh#1291).** For any tier entry carrying a `template`, `composes` must be exactly the set of rung-below entries the template uses — no undeclared uses, no unused declarations — joining A2UI standard type names (`Column`, `CheckBox`) to catalog component names (`Col`, `Check`) through the registry's tag mapping. Additive: the index schema is unchanged, and L0's derivation is untouched. Previously `composes` was a hand-claimed list nothing verified, which made the ladder's one law decorative for any tier shipping templates.
14
+ - **The `preview` key is documented as reserved-and-unbuilt (gh#1291 phase 2).** `catalog/tiers/README.md` now says so at the file-shape sketch instead of implying a generator exists. Rendering a widget needs a browser, and every rendering path in the repo is ephemeral review tooling against a running dev server; the scope-out rationale and the re-entry checklist live in `.claude/docs/specs/tiered-catalogs.md` ## Previews. `source.page` remains the pointer at a live demo page.
15
+ - **The L0+L1 rungs are served over MCP** by `adia-mcp protocol`'s new `get_catalog_ladder` (see `@adia-ai/mcp`) — reading this package's `./catalog/tiers` export, which is what lets a protocol-only consumer enumerate widgets without the generation system.
16
+
17
+ ## [0.8.38] — 2026-08-15
18
+
19
+ ### Added
20
+ - **The catalog contract ships from this package — `@adia-ai/a2ui/catalog` (ADR-0050, gh#1243, phase 1).** `catalog-a2ui_0_9.json` (190 components, prop schemas, taxonomy) moved out of `@adia-ai/gen-ui`'s corpus and is now a subpath export here, alongside its authoring sources (`./catalog/common-types`, `./catalog/functions`). The catalog is the CONTRACT — what exists and how it composes — and the corpus is the FUEL that derives from it; a consumer that only needs to emit valid A2UI no longer installs the ~21MB corpus to enumerate the vocabulary. **The package stays zero-dependency:** the catalog is data it exports, not a dependency it gains.
21
+ - **`@adia-ai/a2ui/catalog/tiers` — the L0–L4 ladder index.** Derived (`npm run build:catalog-tiers`, gated by `check:catalog-tiers`), never hand-edited. Five rungs — L0 primitives, L1 widgets, L2 layouts, L3 shells, L4 flows — each carrying its entry unit, the rung it composes, populated/reserved status, count, and entries. The ladder's one law, **every tier-N entry is a declared composition of tier-(N−1) entries**, is enforced by the derivation. L0 is populated (190 entries); L1–L4 are reserved — curation is its own phase (`.claude/docs/specs/tiered-catalogs.md` ## Follow-up phases). The index extends genui-system R-C7's grammar with an additive `tiers` section rather than minting a second manifest format.
22
+
23
+ ### Changed
24
+ - **Package directory moved `packages/a2ui` → `packages/gen-ui/a2ui` (ADR-0049, gh#1244).** Directory move only — the npm name, exports, and API are unchanged.
25
+
26
+ ### Maintenance
27
+ - **`controllers/` touched in this release window** (8 file(s), e.g. `controllers/accordion.js`) — carried by the entries above.
28
+ - **`dockables/` touched in this release window** (14 file(s), e.g. `dockables/action.d.ts`) — carried by the entries above.
29
+ - **`validate/` touched in this release window** (7 file(s), e.g. `validate/CHANGELOG.md`) — carried by the entries above.
30
+
7
31
  ## [0.8.37] — 2026-08-14
8
32
 
9
33
  ### Maintenance
@@ -753,28 +777,28 @@ _No pending changes._
753
777
 
754
778
  Lockstep PATCH cut alongside `@adia-ai/web-components@0.4.8` (§80 event-types codegen for 38 non-form primitives + §85 class-subpath script fix + §89 icons.js split + B+C+D consumer-friction infra), `@adia-ai/web-modules@0.4.8` (FEEDBACK-02 #1 `.d.ts` shipment + `composes:` ADR-0027 wiring), `@adia-ai/a2ui-compose@0.4.8` (§87 zettel `ensureBooted()` race fix + §88 free-form composition mode), `@adia-ai/a2ui-corpus@0.4.8` (catalog regen ride-along), `@adia-ai/a2ui-mcp@0.4.8` (§87 eval threshold rebaseline). Source byte-identical to v0.4.7.
755
779
 
756
- Internal `@adia-ai/*` dep ranges stay at `^0.4.0` (patch-cut asymmetry — `^0.4.0` covers `0.4.x` under semver). See root [CHANGELOG.md `## [0.4.8]`](../../CHANGELOG.md) for the cut narrative.
780
+ Internal `@adia-ai/*` dep ranges stay at `^0.4.0` (patch-cut asymmetry — `^0.4.0` covers `0.4.x` under semver). See root [CHANGELOG.md `## [0.4.8]`](../../../CHANGELOG.md) for the cut narrative.
757
781
  ## [0.4.7] - 2026-05-12
758
782
 
759
783
  ### Ride-along (no source changes)
760
784
 
761
785
  Lockstep PATCH cut alongside `@adia-ai/web-components@0.4.7` (§74 `.d.ts` codegen for 73 non-form primitives + §77 non-side-effect `class` subpath per component + class.js helper extractions in agent + toolbar primitives), `@adia-ai/web-modules@0.4.7`, `@adia-ai/a2ui-compose@0.4.7` (§72 `getComponentCatalog()` reads canonical catalog), `@adia-ai/a2ui-corpus@0.4.7` (§72 `corpus/patterns/` + `corpus/compositions/` retired from disk + tarball — v0.4.6 §65 carry-over closed), `@adia-ai/a2ui-mcp@0.4.7`, `@adia-ai/a2ui-retrieval@0.4.7` (§72 vocab reads canonical catalog + dead pattern-embeddings retired). Source byte-identical to v0.4.6.
762
786
 
763
- Internal `@adia-ai/*` dep ranges stay at `^0.4.0` (patch-cut asymmetry — `^0.4.0` covers `0.4.x` under semver). See root [CHANGELOG.md `## [0.4.7]`](../../CHANGELOG.md) for the cut narrative.
787
+ Internal `@adia-ai/*` dep ranges stay at `^0.4.0` (patch-cut asymmetry — `^0.4.0` covers `0.4.x` under semver). See root [CHANGELOG.md `## [0.4.7]`](../../../CHANGELOG.md) for the cut narrative.
764
788
  ## [0.4.6] - 2026-05-12
765
789
 
766
790
  ### Ride-along (no source changes)
767
791
 
768
792
  Lockstep PATCH cut alongside `@adia-ai/web-components@0.4.6` (§68 .d.ts shipment + USAGE.md + `defineIfFree` + NEW `<toggle-scheme-ui>` primitive + `<pane-ui>` resize tracking 1:1), `@adia-ai/web-modules@0.4.6` (`<editor-sidebar>` resize-state detection widened via `:has()`), `@adia-ai/a2ui-compose@0.4.6` (§66 canonical `.a2ui.json` sidecars in `buildSystemPrompt` + §64 composition-library canonical retrieval), `@adia-ai/a2ui-corpus@0.4.6` (§63 settings-admin-page Mode A + 12 antipattern fixes + chunk re-harvest), `@adia-ai/a2ui-retrieval@0.4.6` (§64 pattern-library retirement, consumers migrated to composition-library), `@adia-ai/a2ui-mcp@0.4.6` (§64 step 5 patterns surface retired from server.js + eval-fix.mjs). Source byte-identical to v0.4.5.
769
793
 
770
- Internal `@adia-ai/*` dep ranges stay at `^0.4.0` (patch-cut asymmetry — `^0.4.0` covers `0.4.x` under semver). See root [CHANGELOG.md `## [0.4.6]`](../../CHANGELOG.md) for the cut narrative.
794
+ Internal `@adia-ai/*` dep ranges stay at `^0.4.0` (patch-cut asymmetry — `^0.4.0` covers `0.4.x` under semver). See root [CHANGELOG.md `## [0.4.6]`](../../../CHANGELOG.md) for the cut narrative.
771
795
  ## [0.4.5] - 2026-05-12
772
796
 
773
797
  ### Ride-along (no source changes)
774
798
 
775
799
  Lockstep PATCH cut alongside `@adia-ai/web-components@0.4.5` (§61 CSS subpath exports + CustomEvent.detail sweep across 17 form-bearing primitives + slider reactivity test lock-in + §52 design-tokens export module + UI), `@adia-ai/web-modules@0.4.5` (§61 CSS subpath exports — six cluster `*.css` exports), `@adia-ai/a2ui-compose@0.4.5` (§56 system-prompt CORPUS CONTEXT block in monolithic strategies), `@adia-ai/llm@0.4.5` (§54 doc-comment path refresh). Source byte-identical to v0.4.4.
776
800
 
777
- Internal `@adia-ai/*` dep ranges stay at `^0.4.0` (patch-cut asymmetry — `^0.4.0` covers `0.4.x` under semver). See root [CHANGELOG.md `## [0.4.5]`](../../CHANGELOG.md) for the cut narrative.
801
+ Internal `@adia-ai/*` dep ranges stay at `^0.4.0` (patch-cut asymmetry — `^0.4.0` covers `0.4.x` under semver). See root [CHANGELOG.md `## [0.4.5]`](../../../CHANGELOG.md) for the cut narrative.
778
802
  ## [0.4.4] - 2026-05-12
779
803
 
780
804
  ### Changed
@@ -798,53 +822,53 @@ Internal `@adia-ai/*` dep ranges stay at `^0.4.0` (patch-cut asymmetry — `^0.4
798
822
 
799
823
  Project-lifetime category error; same shape as the §47 `<a>` → Button transpiler bug. Both encoded incorrect assumptions about HTML attribute spelling. Fix: new `static #HTML_LOWERCASE_ATTRS` set (38 HTML-spec attrs sourced from MDN reference + DOM specs covering input/form/media/image/anchor/generic/microdata/script categories); `#toAttr()` now consults the set before kebab-casing. Multi-token attrs still kebab correctly.
800
824
 
801
- See root [CHANGELOG.md `[Unreleased]`](../../CHANGELOG.md) for the cross-cutting arc narrative + `.claude/docs/journal/2026/05/2026-05-12.md` §§ 45 / 49 / 51 for per-§ details.
825
+ See root [CHANGELOG.md `[Unreleased]`](../../../CHANGELOG.md) for the cross-cutting arc narrative + `.claude/docs/journal/2026/05/2026-05-12.md` §§ 45 / 49 / 51 for per-§ details.
802
826
  ## [0.4.3] - 2026-05-11
803
827
 
804
828
  ### Ride-along (no source changes)
805
829
 
806
830
  Lockstep PATCH cut alongside `@adia-ai/web-components@0.4.3` (input-ui type=number locale + thousands grouping + hold-to-repeat) + `@adia-ai/a2ui-compose@0.4.3` + `@adia-ai/a2ui-retrieval@0.4.3` (process.env browser-compat fix) + `@adia-ai/a2ui-corpus@0.4.3` (catalog regen + chunks re-harvest with new settings-appearance pattern). Source byte-identical to v0.4.2.
807
831
 
808
- Internal `@adia-ai/*` dep ranges stay at `^0.4.0` (patch-cut asymmetry — `^0.4.0` covers `0.4.x` under semver). See root [CHANGELOG.md `## [0.4.3]`](../../CHANGELOG.md) for the cut narrative.
832
+ Internal `@adia-ai/*` dep ranges stay at `^0.4.0` (patch-cut asymmetry — `^0.4.0` covers `0.4.x` under semver). See root [CHANGELOG.md `## [0.4.3]`](../../../CHANGELOG.md) for the cut narrative.
809
833
  ## [0.4.2] - 2026-05-11
810
834
 
811
835
  ### Ride-along (no source changes)
812
836
 
813
837
  Lockstep PATCH cut alongside `@adia-ai/web-components@0.4.2` (`<input-ui type="number">` rewrite drops native `<input type=number>` wrapping) + `@adia-ai/web-modules@0.4.2` (`<editor-sidebar>` grid-track width-mirror fix). Source byte-identical to v0.4.1.
814
838
 
815
- Internal `@adia-ai/*` dep ranges stay at `^0.4.0` (patch-cut asymmetry — `^0.4.0` covers `0.4.x` under semver). See root [CHANGELOG.md `## [0.4.2]`](../../CHANGELOG.md) for the cut narrative.
839
+ Internal `@adia-ai/*` dep ranges stay at `^0.4.0` (patch-cut asymmetry — `^0.4.0` covers `0.4.x` under semver). See root [CHANGELOG.md `## [0.4.2]`](../../../CHANGELOG.md) for the cut narrative.
816
840
  ## [0.4.1] - 2026-05-10
817
841
 
818
842
  ### Ride-along (no source changes)
819
843
 
820
844
  Lockstep PATCH cut alongside `@adia-ai/web-modules@0.4.1` (simple cluster) + `@adia-ai/a2ui-validator@0.4.1` (Phase 3 foundation) + `@adia-ai/a2ui-corpus@0.4.1` (fragment metrics reconciliation). Source byte-identical to v0.4.0.
821
845
 
822
- Internal `@adia-ai/*` dep ranges bumped from `^0.4.0` to `^0.4.1`. See root [CHANGELOG.md `## [0.4.1]`](../../CHANGELOG.md) for the cut narrative.
846
+ Internal `@adia-ai/*` dep ranges bumped from `^0.4.0` to `^0.4.1`. See root [CHANGELOG.md `## [0.4.1]`](../../../CHANGELOG.md) for the cut narrative.
823
847
  ## [0.4.0] - 2026-05-10
824
848
 
825
849
  ### Ride-along (no source changes)
826
850
 
827
851
  Lockstep MINOR cut alongside `@adia-ai/web-modules@0.4.0` (ADR-0024 legacy shell shapes retired). Source byte-identical to v0.3.6.
828
852
 
829
- Internal `@adia-ai/*` dep ranges bumped from `^0.3.0` to `^0.4.0`. See root [CHANGELOG.md `## [0.4.0]`](../../CHANGELOG.md) for the cut narrative.
853
+ Internal `@adia-ai/*` dep ranges bumped from `^0.3.0` to `^0.4.0`. See root [CHANGELOG.md `## [0.4.0]`](../../../CHANGELOG.md) for the cut narrative.
830
854
  ## [0.3.6] - 2026-05-10
831
855
 
832
856
  ### Ride-along (no source changes)
833
857
 
834
- Lockstep version bump only — source byte-identical to v0.3.5. Internal `@adia-ai/*` dep ranges remain at `^0.3.0`. See root [CHANGELOG.md `## [0.3.6]`](../../CHANGELOG.md) for the cut narrative.
858
+ Lockstep version bump only — source byte-identical to v0.3.5. Internal `@adia-ai/*` dep ranges remain at `^0.3.0`. See root [CHANGELOG.md `## [0.3.6]`](../../../CHANGELOG.md) for the cut narrative.
835
859
  ## [0.3.5] - 2026-05-07
836
860
 
837
861
  ### Ride-along (no source changes)
838
862
 
839
- Lockstep version bump only — source byte-identical to v0.3.4. Internal `@adia-ai/*` dep ranges remain at `^0.3.0`. See root [CHANGELOG.md `## [0.3.5]`](../../CHANGELOG.md) for the cut narrative.
863
+ Lockstep version bump only — source byte-identical to v0.3.4. Internal `@adia-ai/*` dep ranges remain at `^0.3.0`. See root [CHANGELOG.md `## [0.3.5]`](../../../CHANGELOG.md) for the cut narrative.
840
864
  ## [0.3.4] - 2026-05-07
841
865
 
842
866
  ### Ride-along (no source changes)
843
867
 
844
- Lockstep version bump only — source byte-identical to v0.3.3. Internal `@adia-ai/*` dep ranges remain at `^0.3.0`. See root [CHANGELOG.md `## [0.3.4]`](../../CHANGELOG.md) for the cut narrative.
868
+ Lockstep version bump only — source byte-identical to v0.3.3. Internal `@adia-ai/*` dep ranges remain at `^0.3.0`. See root [CHANGELOG.md `## [0.3.4]`](../../../CHANGELOG.md) for the cut narrative.
845
869
  ## [0.3.3] - 2026-05-07
846
870
 
847
- **Lockstep cut.** All 9 published `@adia-ai/*` packages now share version `0.3.3`, governed by [`.claude/docs/specs/package-architecture.md` § 15](../../.claude/docs/specs/package-architecture.md#15-versioning-policy).
871
+ **Lockstep cut.** All 9 published `@adia-ai/*` packages now share version `0.3.3`, governed by [`.claude/docs/specs/package-architecture.md` § 15](../../../.claude/docs/specs/package-architecture.md#15-versioning-policy).
848
872
 
849
873
  ### Changed
850
874
 
@@ -857,7 +881,7 @@ Lockstep version bump only — source byte-identical to v0.3.3. Internal `@adia-
857
881
  ## [0.3.2] - 2026-05-06
858
882
 
859
883
  **9-package lockstep patch cut to v0.3.2.** All lockstep members share
860
- one version per [`.claude/docs/specs/package-architecture.md` § 15](../../.claude/docs/specs/package-architecture.md#15-versioning-policy).
884
+ one version per [`.claude/docs/specs/package-architecture.md` § 15](../../../.claude/docs/specs/package-architecture.md#15-versioning-policy).
861
885
  Internal `@adia-ai/*` dep ranges unchanged at `^0.3.0`.
862
886
 
863
887
  ### No source changes
@@ -870,7 +894,7 @@ version only.
870
894
  - `version`: `0.3.1` → `0.3.2`.
871
895
  ## [0.3.1] - 2026-05-06
872
896
 
873
- **9-package lockstep patch cut.** All 9 published `@adia-ai/*` packages bump 0.3.0 → 0.3.1 per [`.claude/docs/specs/package-architecture.md` § 15](../../.claude/docs/specs/package-architecture.md#15-versioning-policy). Internal `@adia-ai/*` dep ranges remain at `^0.3.0` (covers `0.3.1` under semver — patch-cut asymmetry).
897
+ **9-package lockstep patch cut.** All 9 published `@adia-ai/*` packages bump 0.3.0 → 0.3.1 per [`.claude/docs/specs/package-architecture.md` § 15](../../../.claude/docs/specs/package-architecture.md#15-versioning-policy). Internal `@adia-ai/*` dep ranges remain at `^0.3.0` (covers `0.3.1` under semver — patch-cut asymmetry).
874
898
 
875
899
  This package itself ships **no source changes** in v0.3.1. The cut bumps version only — substantive content lives in [`@adia-ai/web-components`](https://github.com/adiahealth/gen-ui-kit/releases/tag/web-components-v0.3.1) (folder-per-trait restructure; barrel API unchanged).
876
900
 
@@ -880,7 +904,7 @@ This package itself ships **no source changes** in v0.3.1. The cut bumps version
880
904
  - Internal `@adia-ai/*` dep ranges: unchanged at `^0.3.0` (covers `0.3.1` under semver — patch-cut asymmetry).
881
905
  ## [0.3.0] - 2026-05-05
882
906
 
883
- **9-package lockstep cut + package rename + LLM extraction.** All 9 published `@adia-ai/*` packages bump 0.2.5 → 0.3.0 per [`.claude/docs/specs/package-architecture.md` § 15](../../.claude/docs/specs/package-architecture.md#15-versioning-policy). Internal `@adia-ai/*` dep ranges bump `^0.2.0` → `^0.3.0`.
907
+ **9-package lockstep cut + package rename + LLM extraction.** All 9 published `@adia-ai/*` packages bump 0.2.5 → 0.3.0 per [`.claude/docs/specs/package-architecture.md` § 15](../../../.claude/docs/specs/package-architecture.md#15-versioning-policy). Internal `@adia-ai/*` dep ranges bump `^0.2.0` → `^0.3.0`.
884
908
 
885
909
  This is a **minor cut on top of v0.2.5 with two BREAKING changes for npm consumers** (acceptable under pre-1.0 semver):
886
910
  1. **Package renamed** — `@adia-ai/a2ui-utils` → `@adia-ai/a2ui-runtime` (this package).
@@ -919,7 +943,7 @@ The `@adia-ai/a2ui-utils@0.2.5` and earlier remain on npm and continue to work;
919
943
  "utils" undersold what this package is and collided visually with `web-modules/runtime/` (which holds `<a2ui-root>`, the surface element). The package's own description has always called it "A2UI runtime — renderer, registry, streams"; the name now matches.
920
944
  ## [0.2.5] - 2026-05-04
921
945
 
922
- **8-package lockstep cut.** All 8 published `@adia-ai/*` packages bump 0.2.4 → 0.2.5 per [`.claude/docs/specs/package-architecture.md` § 15](../../.claude/docs/specs/package-architecture.md#15-versioning-policy). Internal `@adia-ai/*` dep ranges remain at `^0.2.0` (covers 0.2.5 under semver — patch-cut asymmetry).
946
+ **8-package lockstep cut.** All 8 published `@adia-ai/*` packages bump 0.2.4 → 0.2.5 per [`.claude/docs/specs/package-architecture.md` § 15](../../../.claude/docs/specs/package-architecture.md#15-versioning-policy). Internal `@adia-ai/*` dep ranges remain at `^0.2.0` (covers 0.2.5 under semver — patch-cut asymmetry).
923
947
 
924
948
  This is a **patch cut on top of v0.2.4, no BREAKING changes.** Substantive content lives in `web-components` (new `<fields-ui>` form-grid primitive + `draggable-list-item` last-item drop-zone fix, both surfaced by the Tasks UI Playground at `.claude/docs/projects/tasks-playground/`); `a2ui-corpus` ships a catalog regen for the new `<fields-ui>` yaml. `a2ui-utils` rides along at version bump only — no source change.
925
949
 
@@ -929,7 +953,7 @@ This is a **patch cut on top of v0.2.4, no BREAKING changes.** Substantive conte
929
953
  - Internal `@adia-ai/*` dep ranges: unchanged at `^0.2.0` (covers `0.2.5` under semver — patch-cut asymmetry).
930
954
  ## [0.2.4] - 2026-05-04
931
955
 
932
- **8-package lockstep cut.** All 8 published `@adia-ai/*` packages bump 0.2.3 → 0.2.4 per [`.claude/docs/specs/package-architecture.md` § 15](../../.claude/docs/specs/package-architecture.md#15-versioning-policy). Internal `@adia-ai/*` dep ranges remain at `^0.2.0` (covers 0.2.4 under semver — patch-cut asymmetry).
956
+ **8-package lockstep cut.** All 8 published `@adia-ai/*` packages bump 0.2.3 → 0.2.4 per [`.claude/docs/specs/package-architecture.md` § 15](../../../.claude/docs/specs/package-architecture.md#15-versioning-policy). Internal `@adia-ai/*` dep ranges remain at `^0.2.0` (covers 0.2.4 under semver — patch-cut asymmetry).
933
957
 
934
958
  This is a **patch cut on top of v0.2.3, no BREAKING changes.** Substantive content lives in `web-components` (Tier 4 trait library lift, 11 new traits + 2 architectural rewrites, plus accumulated bug fixes); `a2ui-corpus` ships a catalog regen for the new `<demo-toggle-ui>` primitive. Six packages ride along at version + dep-range bump.
935
959
 
@@ -949,7 +973,7 @@ _Nothing yet._
949
973
 
950
974
  **Lockstep cut.** All 8 published `@adia-ai/*` packages bump
951
975
  0.2.2 → 0.2.3 per
952
- [`.claude/docs/specs/package-architecture.md` § 15](../../.claude/docs/specs/package-architecture.md#15-versioning-policy).
976
+ [`.claude/docs/specs/package-architecture.md` § 15](../../../.claude/docs/specs/package-architecture.md#15-versioning-policy).
953
977
  Patch cut — no breaking changes.
954
978
 
955
979
  ### Changed
@@ -961,7 +985,7 @@ Patch cut — no breaking changes.
961
985
  `@adia-ai/a2ui-utils` source is byte-identical to `0.2.2`. The cut bumps version only.
962
986
  ## [0.2.2] — 2026-05-02
963
987
 
964
- **Lockstep cut.** All 8 published `@adia-ai/*` packages bump 0.2.1 → 0.2.2 per [`.claude/docs/specs/package-architecture.md` § 15](../../.claude/docs/specs/package-architecture.md#15-versioning-policy). Patch cut — no breaking changes.
988
+ **Lockstep cut.** All 8 published `@adia-ai/*` packages bump 0.2.1 → 0.2.2 per [`.claude/docs/specs/package-architecture.md` § 15](../../../.claude/docs/specs/package-architecture.md#15-versioning-policy). Patch cut — no breaking changes.
965
989
 
966
990
  ### Changed
967
991
 
@@ -974,7 +998,7 @@ Patch cut — no breaking changes.
974
998
  ---
975
999
  ## [0.2.1] — 2026-05-02
976
1000
 
977
- **Lockstep cut + A2UI registry mappings (`Field`/`Rating`/`ListItem`/`NavItem`/`NavGroup`).** All 8 published `@adia-ai/*` packages bump 0.2.0 → 0.2.1 per [`.claude/docs/specs/package-architecture.md` § 15](../../.claude/docs/specs/package-architecture.md#15-versioning-policy). Patch cut — no breaking changes.
1001
+ **Lockstep cut + A2UI registry mappings (`Field`/`Rating`/`ListItem`/`NavItem`/`NavGroup`).** All 8 published `@adia-ai/*` packages bump 0.2.0 → 0.2.1 per [`.claude/docs/specs/package-architecture.md` § 15](../../../.claude/docs/specs/package-architecture.md#15-versioning-policy). Patch cut — no breaking changes.
978
1002
 
979
1003
  ### Changed
980
1004
 
@@ -999,7 +1023,7 @@ Smoke side-effect: zettel score 91 → 92; `smoke:engines` flipped from `valid=f
999
1023
 
1000
1024
  **Lockstep cut.** All 8 published `@adia-ai/*` packages now share one
1001
1025
  version, governed by [`.claude/docs/specs/package-architecture.md` § 15
1002
- (Versioning Policy)](../../.claude/docs/specs/package-architecture.md#15-versioning-policy).
1026
+ (Versioning Policy)](../../../.claude/docs/specs/package-architecture.md#15-versioning-policy).
1003
1027
 
1004
1028
  ### Changed
1005
1029
 
package/README.md CHANGED
@@ -77,8 +77,22 @@ import { SurfaceManifest } from '@adia-ai/a2ui/surface';
77
77
  import { WiringEngine } from '@adia-ai/a2ui/wiring';
78
78
  import { ActionDock } from '@adia-ai/a2ui/dockables';
79
79
  import { validateSchema } from '@adia-ai/a2ui/validate';
80
+
81
+ import catalog from '@adia-ai/a2ui/catalog' with { type: 'json' };
82
+ import tierIndex from '@adia-ai/a2ui/catalog/tiers' with { type: 'json' };
80
83
  ```
81
84
 
85
+ `./catalog` is **the contract** (ADR-0050): one freestanding JSON Schema
86
+ document listing every component, its props, and its taxonomy — enough to
87
+ emit valid A2UI with nothing else installed. `./catalog/tiers` is the derived
88
+ L0–L4 ladder index (L0 primitives · L1 widgets · L2 layouts · L3 shells ·
89
+ L4 flows), under one law: **every tier-N entry is a declared composition of
90
+ tier-(N−1) entries**. L0 is populated today; the upper rungs are reserved
91
+ while curation lands. `./catalog/common-types` and `./catalog/functions` are
92
+ the catalog's authoring sources. All of it is exported data — this package
93
+ stays dependency-free. The harvested chunk corpus that *derives* from the
94
+ catalog is generation fuel and lives in `@adia-ai/gen-ui`.
95
+
82
96
  `./validate` is the protocol-side validator — structural + wiring/registry
83
97
  coherence checks against the A2UI protocol, no catalog and no LLM, so it
84
98
  keeps this package dependency-free. Catalog-aware validation and the LLM
package/a2ui.schema.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- // AUTO-GENERATED FROM packages/a2ui/a2ui.schema.json. DO NOT EDIT.
1
+ // AUTO-GENERATED FROM packages/gen-ui/a2ui/a2ui.schema.json. DO NOT EDIT.
2
2
  // Regenerate with: node scripts/build/a2ui-schema-types.mjs
3
3
  // Verify drift with: node scripts/build/a2ui-schema-types.mjs --verify
4
4
 
@@ -0,0 +1,4 @@
1
+ // v0.5.21 hotfix stub — TS-migration Phase 1 (568bb998d) declared this
2
+ // types: export but Phase 2 hasn't generated real declarations yet.
3
+ // Replace with real type declarations when Phase 2 lands.
4
+ export {};