UI schema, version 1.0
The UI schema is a JSON document that tells the desktop apps what the installed toolbox offers. It covers developmental stages and their parameters, neuron models and their costs, development rules, the genes of a schedule, and the Project schema version.
The apps build their editors from it. Nothing about an individual stage, Param, model, rule or gene is coded into an app; app code is only layout, look and interaction. The macOS, Windows and Linux apps therefore show the same panels, and a stage merged into the toolbox appears in all three without changing them.
Format owner |
desktop apps (this file). Changes need a PR that keeps all three apps working. |
Exporter |
|
Machine-checkable form |
|
Complete example |
|
1. Versioning
"format": "neurogenesis-ui-schema"and"version": "MAJOR.MINOR".A MINOR bump adds optional fields or new enum values. Apps ignore fields they do not know. Apps show an item with an unknown
typeorcostform as read-only JSON, never as an error.A MAJOR bump renames, removes or changes the meaning of a field. Apps refuse a MAJOR version they do not know and tell the user to update.
2. Document
{
"format": "neurogenesis-ui-schema",
"version": "1.0",
"generated_by": {"toolbox": "0.1.0", "python": "3.12.15", "date": "2026-11-01T18:00:00Z"},
"project_schema_version": "1.1.0",
"param_sources": [...],
"stages": [...],
"models": [...],
"rule_phases": [...],
"rules": [...],
"schedule_genes": [...]
}
Every top-level key is required. A list may be empty: for example, stages before any stage is registered.
2.1 param_sources: where a parameter’s value comes from (A3)
Each entry has these fields:
Field |
Meaning |
|---|---|
|
|
|
Short label. |
|
One or two sentences. |
|
The fields to edit for this source, each |
Apps render the source switch and its inputs from this list. When a source has an input of an unknown type, apps edit that input as raw JSON.
2.2 stages: registered stages (A4) and planned ones
Each stage has these fields:
Field |
Meaning |
|---|---|
|
Registry name, used in schedule entries ( |
|
Label and help text. |
|
Roadmap id ( |
|
False for planned stages that are not registered yet. Apps show them but cannot run them. |
|
A list of Param specs (2.3), in display order. |
|
|
|
The stage accepts |
|
The stage accepts a |
2.3 Param spec
Field |
Required |
Meaning |
|---|---|---|
|
yes |
Key in the schedule entry’s |
|
yes |
Label. |
|
yes |
Help text, shown by the (?) button: what the parameter is and what it changes. |
|
yes |
The value’s type: |
|
yes |
An A3 param dict, e.g. |
|
yes |
Allowed |
|
no |
E.g. |
|
no |
Bounds of the value (inclusive). They also bound Gene |
|
no |
Increment for steppers and sliders. |
|
for |
|
|
no |
True if the parameter can vary across cells (sources |
|
no |
Shown collapsed by default. |
Widgets by type. The apps choose widgets from the type, never from the name:
|
Widget |
|---|---|
|
Number field. A slider is added when both bounds are finite. |
|
Toggle. |
|
Text field. |
|
Picker. |
|
Three number fields, x / y / z. |
|
Picker over the project’s geometry names. |
|
Picker over the project’s field names. |
|
Gene path editor. |
|
JSON editor. |
anything else |
Read-only JSON. |
Every widget has a label (title) and a (?) help (doc, with units and the bounds).
2.4 models: neuron models and their costs
Each model has these fields:
Field |
Meaning |
|---|---|
|
Identity and help text. |
|
Updates per 1 ms tick. |
|
Per neuron. |
|
Per neuron and substep. |
|
|
|
True when the apps can run the model live ( |
2.5 rule_phases and rules: development rules (neurogenesis.development.rules)
rule_phaseslists every phase, in order:[{"name": "placement", "title", "doc"}, ...].ruleslists every rule, as[{"phase", "name", "doc", "genes": [gene path patterns that activate it], "default": bool}].defaultis true when the rule is in the default plan rules.
2.6 schedule_genes: the genes a schedule uses (A3 collect_genes)
Each gene is {"path", "lo", "hi", "integer", "used_by": [{"stage", "param"}]}. Its path is a gene path (2.7).
The list is empty in a document exported without a project. With a project (ui-schema --project p.json, or the
bridge method ui_schema with project), it lists the genes of that project’s schedule. The Evolution panel offers
exactly these genes.
2.7 Gene paths
A gene path is a JSON list of keys. "src->dst" stands for a projection key (a tuple in Python), and integers index
arrays. For example, ["guidance", "sensor->map", "B", 0, 1]. The same convention is used in PROTOCOL.md.
3. Obtaining it
python -m neurogenesis ui-schema [--project p.json] [--calibrated]writes the document to stdout (H3).Bridge method
ui_schema, with params{project?}, returns the same document. Apps call it afterready, and again after the user refreshes the toolbox.Until H3 is merged, apps may render
ui_schema.example.jsonto develop and test their panels. They markavailable: falsestages as not runnable.