This section documents the Mzizi registry — the shipping component system and design
system served at mzizi.dev. It is not documentation for Mzizi-lang,
the Phase 0 research language the rest of this site covers. The ecosystem
page draws the line between them, and the distinction is load-bearing.
type:
The model is served, not written down.
GET https://mzizi.dev/api/v1/architecture returns the
live set, and the tables below are a snapshot of it taken on 11 September 2026 — orientation,
not the contract.
The nodes
Eight, all on the engineering backbone today. Thecomponent_count column is what the
registry held at the time of the snapshot; read the endpoint for the current number.
The node layout is visible on disk as well as over the API: registry components live under
components/registry/n1-tokens/, n2-primitives/, n3-brand/ and so on in
mzizi-dev/mzizi-registry.
The rungs
Four. A rung bridges both backbones and belongs to no strand, sostrand is null on every
one of them.
N9 is the self-healing rung: it consumes N8 assurance signals and remediates the root cause.
N10 is the single home for anything document-shaped. N11 is the machine-facing surface —
preview images, structured data,
llms.txt, robots, agent-readiness — and a page with no
preview image fails N11 the way an unvalidated input fails N4. N12 holds agent skills,
authored in git and projected into the registry.
The strands
Six, three per backbone.core-guarantee is the load-bearing covenant for adopters: an accessibility layer you can
switch off is a suggestion, not a guarantee. swappable is its complement — you fork tokens,
icons and framework, and inherit everything else unchanged.
Node numbers are labels, not a sequence
N9 is not “above” N8, and N12 is not the top. The numbers are stable identifiers and
nothing more. Two consequences follow:
- Nothing consumes the model in numeric order. A node reads from the strand below it on the same backbone; a rung bridges both and is never imported by a node.
- The node set is not capped. More nodes and rungs get added — N12 is itself newer than much of the prose written about this model. Any code, prompt, schema or sentence that hardcodes an upper bound is wrong the moment the next one lands. Read the endpoint instead.
Rules that follow from the shape
- A node consumes from the strand below it on the same backbone — never sideways, never upward.
- Rungs bridge both backbones and are never imported by a node.
- N1 is the only node allowed to define CSS values. Every other node reads them through
var(). - N6 pages never hardcode a button, card or SVG — a page is pure composition of N2 and N3.
- N3 destructures
{ log, motion, LiveRegion }fromuseNyuchiHarness; N2 never touches the harness.
The retired axis model
An earlier version of this model described ten ecosystem nodes arranged across five axes (X horizontal, Y vertical, Z depth, plus “outside” and “documentation”). That model is gone. Its API surfaces were retired rather than repaired, and they say so:
Verified 11 September 2026 against production.
Retirement rather than rewiring was a deliberate call, and the reasoning generalises: rewiring
an
axis_geometry field to return a strand would look correct and teach the wrong model to
every consumer downstream. Absence is the correct state here, not repair. The fix for
anything axis-shaped is that it stops answering, not that it answers differently.
One consequence worth carrying: a surface can be well-formed and still answer with retired
data, and nothing in a schema check will go red. When a tool and this model disagree, the
endpoint above is the arbiter.