PanelSpec schema (v1)
Worlds ship UI surfaces as panels. To avoid “brittle UI soup”, ZAK uses a strict, versioned PanelSpec schema so panels remain predictable, renderable, and auditable across versions.
Version
Current: 1.0.0
Supported panel kinds
form | list | log | chat | dashboard | status | info | detail | approval Minimal example
{
"version": "1.0.0",
"id": "change-request-form",
"kind": "form",
"title": "Request change",
"description": "Submit a governed change request",
"data": {
"kind": "form",
"spec": {
"schema": [
{ "id": "summary", "type": "text", "label": "Summary", "required": true },
{ "id": "risk", "type": "select", "label": "Risk level", "required": true, "options": [
{ "value": "low", "label": "Low" },
{ "value": "medium", "label": "Medium" },
{ "value": "high", "label": "High" }
] }
],
"submitLabel": "Submit",
"submitAction": "change.request.submit"
}
},
"governedBy": ["CHANGE-001", "RISK-001"],
"visibleTo": ["engineer", "change_manager"]
} Why this matters
- Determinism: panel kinds + fields are a finite contract (no ad-hoc UI shape-shifting).
- Auditability: panels can declare what laws govern them (
governedBy). - Upgrade safety: schema is versioned; migrations are explicit.
See also: Receipt schema