Skip to content

feat: canonical taxonomy v0 (categories, component types, aliases)#8

Merged
jal-co merged 1 commit into
mainfrom
feat/taxonomy-v0
Jul 13, 2026
Merged

feat: canonical taxonomy v0 (categories, component types, aliases)#8
jal-co merged 1 commit into
mainfrom
feat/taxonomy-v0

Conversation

@jal-co

@jal-co jal-co commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

What

Canonical, versioned category + component-type vocabulary with alias/deprecation machinery, its own schema, item-manifest fields (category/componentType/tags), and a taxonomy-resolution validation layer.

Why

Closes #7 — one taxonomy across web authoring, CLI publishing, registry metadata, and catalog filters.

How

  • Taxonomy is a data file (taxonomy/v0/taxonomy.json), not schema enums — vocabularies evolve without schema version bumps; consumers resolve aliases first.
  • Item fields are additive/optional so existing v0 artifacts remain valid; publish-time requiredness is a registry policy, stated in the field description.
  • Discovery metadata is explicitly outside the source digest.

Testing

27/27 (fixtures incl. alias migration, unknown, malformed, tag-flooding, markup-in-tag; taxonomy document self-validates).

Screenshots

n/a

Closes #7.

- taxonomy/v0/taxonomy.json: versioned vocabulary — 12 categories
  (what a thing is for) and 65 component types (what it is, the
  shadcn-style vocabulary), plus alias and deprecation machinery.
  Discovery metadata only: taxonomy changes never touch a release's
  source content or digest.
- schemas/v0/taxonomy.schema.json validates the taxonomy document
  itself (kebab ids, label/description limits, alias map shape).
- modulora-item schema gains optional category, componentType, and
  tags (max 10, normalized kebab) — additive, so existing v0 artifacts
  stay valid; registries require category at publish time.
- Validation gains a taxonomy resolution layer (resolve aliases →
  id must exist → not deprecated for new publishes) exercised by
  fixtures: canonical values, alias migration (forms-inputs → forms),
  unknown id, malformed casing, tag flooding, markup-in-tag.

27/27 tests pass. The web app's src/lib/taxonomy.ts is the same
vocabulary; this document is now the canonical home.

Signed-off-by: Justin Levine <20596508+jal-co@users.noreply.github.com>
@jal-co
jal-co requested review from a team as code owners July 13, 2026 15:15
@jal-co
jal-co merged commit 49247b9 into main Jul 13, 2026
2 checks passed
@jal-co
jal-co deleted the feat/taxonomy-v0 branch July 13, 2026 15:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Canonical category taxonomy for web + CLI publishing

1 participant