Skip to main content

API_V1_SCHEMA_JSON

Constant API_V1_SCHEMA_JSON 

Source
pub const API_V1_SCHEMA_JSON: &str = "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://github.com/lemma/lemma/blob/main/engine/schemas/api.v1.json\",\n  \"title\": \"Lemma engine API\",\n  \"description\": \"Schema for the JSON document shapes the engine produces at its consumer boundary: Show (Engine::show), Response (Engine::evaluate), specs (Engine::specs, array of Repository), errors (array of EngineError), and RepositoryInstallResult (SDK install). Explanation trees live under RuleResult.explanation (RuleNode / ExplanationNode).\",\n  \"$defs\": {\n    \"DecimalString\": {\n      \"type\": \"string\",\n      \"format\": \"lemma-decimal\",\n      \"description\": \"Arbitrary-precision decimal literal (never a JSON number, to avoid float precision loss). Maps to Java BigDecimal, a plain string in TypeScript/Elixir.\"\n    },\n    \"RationalFactor\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"numer\",\n        \"denom\"\n      ],\n      \"additionalProperties\": false,\n      \"description\": \"Exact rational as a reduced numerator/denominator pair of arbitrary-precision integer strings.\",\n      \"properties\": {\n        \"numer\": {\n          \"$ref\": \"#/$defs/DecimalString\"\n        },\n        \"denom\": {\n          \"$ref\": \"#/$defs/DecimalString\"\n        }\n      }\n    },\n    \"NamedBound\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"unit\"\n      ],\n      \"additionalProperties\": false,\n      \"description\": \"A unit-scoped bound (Measure/DateRange/TimeRange/MeasureRange minimum/maximum/lower/upper).\",\n      \"properties\": {\n        \"value\": {\n          \"$ref\": \"#/$defs/DecimalString\"\n        },\n        \"unit\": {\n          \"type\": \"string\"\n        }\n      }\n    },\n    \"MeasureUnit\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"factor\",\n        \"derived_measure_factors\",\n        \"decomposition\"\n      ],\n      \"additionalProperties\": false,\n      \"description\": \"One declared unit of a Measure type. `factor`: 1 of this unit equals `factor` canonical units.\",\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"factor\": {\n          \"$ref\": \"#/$defs/RationalFactor\"\n        },\n        \"derived_measure_factors\": {\n          \"type\": \"array\",\n          \"description\": \"(measure_ref, exponent) pairs from a compound unit declaration (e.g. meter/second). Empty for base units.\",\n          \"items\": {\n            \"type\": \"array\",\n            \"prefixItems\": [\n              {\n                \"type\": \"string\"\n              },\n              {\n                \"type\": \"integer\"\n              }\n            ],\n            \"items\": false,\n            \"minItems\": 2,\n            \"maxItems\": 2\n          }\n        },\n        \"decomposition\": {\n          \"type\": \"object\",\n          \"additionalProperties\": {\n            \"type\": \"integer\"\n          }\n        },\n        \"minimum\": {\n          \"$ref\": \"#/$defs/DecimalString\"\n        },\n        \"maximum\": {\n          \"$ref\": \"#/$defs/DecimalString\"\n        },\n        \"suggestion\": {\n          \"$ref\": \"#/$defs/DecimalString\"\n        }\n      }\n    },\n    \"RatioUnit\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"value\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"$ref\": \"#/$defs/RationalFactor\"\n        },\n        \"minimum\": {\n          \"$ref\": \"#/$defs/DecimalString\"\n        },\n        \"maximum\": {\n          \"$ref\": \"#/$defs/DecimalString\"\n        },\n        \"suggestion\": {\n          \"$ref\": \"#/$defs/DecimalString\"\n        }\n      }\n    },\n    \"TypeDefiningSpec\": {\n      \"description\": \"Where a custom type\'s extension chain is rooted.\",\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"kind\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"kind\": {\n              \"const\": \"local\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"kind\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"kind\": {\n              \"const\": \"import\"\n            }\n          }\n        }\n      ]\n    },\n    \"TypeExtends\": {\n      \"description\": \"What a type extends: a primitive built-in, or a custom type by name.\",\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"kind\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"kind\": {\n              \"const\": \"primitive\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"kind\",\n            \"parent\",\n            \"family\",\n            \"defining_spec\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"kind\": {\n              \"const\": \"custom\"\n            },\n            \"parent\": {\n              \"type\": \"string\"\n            },\n            \"family\": {\n              \"type\": \"string\"\n            },\n            \"defining_spec\": {\n              \"$ref\": \"#/$defs/TypeDefiningSpec\"\n            }\n          }\n        }\n      ]\n    },\n    \"LemmaType\": {\n      \"description\": \"Resolved Lemma type: `TypeSpecification` fields flattened alongside `name` and `extends`. Sentinel-only specifications (`veto`, `undetermined`) never reach the API and are excluded.\",\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/$defs/LemmaTypeBoolean\"\n        },\n        {\n          \"$ref\": \"#/$defs/LemmaTypeMeasure\"\n        },\n        {\n          \"$ref\": \"#/$defs/LemmaTypeNumber\"\n        },\n        {\n          \"$ref\": \"#/$defs/LemmaTypeNumberRange\"\n        },\n        {\n          \"$ref\": \"#/$defs/LemmaTypeRatio\"\n        },\n        {\n          \"$ref\": \"#/$defs/LemmaTypeRatioRange\"\n        },\n        {\n          \"$ref\": \"#/$defs/LemmaTypeText\"\n        },\n        {\n          \"$ref\": \"#/$defs/LemmaTypeDate\"\n        },\n        {\n          \"$ref\": \"#/$defs/LemmaTypeDateRange\"\n        },\n        {\n          \"$ref\": \"#/$defs/LemmaTypeTime\"\n        },\n        {\n          \"$ref\": \"#/$defs/LemmaTypeTimeRange\"\n        },\n        {\n          \"$ref\": \"#/$defs/LemmaTypeMeasureRange\"\n        },\n        {\n          \"$ref\": \"#/$defs/LemmaTypeSpec\"\n        },\n        {\n          \"$ref\": \"#/$defs/LemmaTypeList\"\n        }\n      ]\n    },\n    \"TypeSpecification\": {\n      \"description\": \"Element type of a list: the `LemmaType` fields without `name` and `extends`. A spec element names the row spec of an instance list. Lists do not nest.\",\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"kind\",\n            \"help\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"kind\": {\n              \"const\": \"boolean\"\n            },\n            \"help\": {\n              \"type\": \"string\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"kind\",\n            \"minimum\",\n            \"maximum\",\n            \"decimals\",\n            \"units\",\n            \"traits\",\n            \"decomposition\",\n            \"help\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"kind\": {\n              \"const\": \"measure\"\n            },\n            \"minimum\": {\n              \"anyOf\": [\n                {\n                  \"type\": \"null\"\n                },\n                {\n                  \"$ref\": \"#/$defs/NamedBound\"\n                }\n              ]\n            },\n            \"maximum\": {\n              \"anyOf\": [\n                {\n                  \"type\": \"null\"\n                },\n                {\n                  \"$ref\": \"#/$defs/NamedBound\"\n                }\n              ]\n            },\n            \"decimals\": {\n              \"type\": [\n                \"integer\",\n                \"null\"\n              ]\n            },\n            \"units\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/$defs/MeasureUnit\"\n              }\n            },\n            \"traits\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"enum\": [\n                  \"duration\",\n                  \"calendar\"\n                ]\n              }\n            },\n            \"decomposition\": {\n              \"anyOf\": [\n                {\n                  \"type\": \"null\"\n                },\n                {\n                  \"type\": \"object\",\n                  \"additionalProperties\": {\n                    \"type\": \"integer\"\n                  }\n                }\n              ]\n            },\n            \"help\": {\n              \"type\": \"string\"\n            },\n            \"unit\": {\n              \"type\": \"string\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"kind\",\n            \"minimum\",\n            \"maximum\",\n            \"decimals\",\n            \"help\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"kind\": {\n              \"const\": \"number\"\n            },\n            \"minimum\": {\n              \"anyOf\": [\n                {\n                  \"type\": \"null\"\n                },\n                {\n                  \"$ref\": \"#/$defs/DecimalString\"\n                }\n              ]\n            },\n            \"maximum\": {\n              \"anyOf\": [\n                {\n                  \"type\": \"null\"\n                },\n                {\n                  \"$ref\": \"#/$defs/DecimalString\"\n                }\n              ]\n            },\n            \"decimals\": {\n              \"type\": [\n                \"integer\",\n                \"null\"\n              ]\n            },\n            \"help\": {\n              \"type\": \"string\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"kind\",\n            \"lower\",\n            \"upper\",\n            \"minimum\",\n            \"maximum\",\n            \"help\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"kind\": {\n              \"const\": \"number_range\"\n            },\n            \"lower\": {\n              \"anyOf\": [\n                {\n                  \"type\": \"null\"\n                },\n                {\n                  \"$ref\": \"#/$defs/DecimalString\"\n                }\n              ]\n            },\n            \"upper\": {\n              \"anyOf\": [\n                {\n                  \"type\": \"null\"\n                },\n                {\n                  \"$ref\": \"#/$defs/DecimalString\"\n                }\n              ]\n            },\n            \"minimum\": {\n              \"anyOf\": [\n                {\n                  \"type\": \"null\"\n                },\n                {\n                  \"$ref\": \"#/$defs/DecimalString\"\n                }\n              ]\n            },\n            \"maximum\": {\n              \"anyOf\": [\n                {\n                  \"type\": \"null\"\n                },\n                {\n                  \"$ref\": \"#/$defs/DecimalString\"\n                }\n              ]\n            },\n            \"help\": {\n              \"type\": \"string\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"kind\",\n            \"minimum\",\n            \"maximum\",\n            \"decimals\",\n            \"units\",\n            \"help\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"kind\": {\n              \"const\": \"ratio\"\n            },\n            \"minimum\": {\n              \"anyOf\": [\n                {\n                  \"type\": \"null\"\n                },\n                {\n                  \"$ref\": \"#/$defs/DecimalString\"\n                }\n              ]\n            },\n            \"maximum\": {\n              \"anyOf\": [\n                {\n                  \"type\": \"null\"\n                },\n                {\n                  \"$ref\": \"#/$defs/DecimalString\"\n                }\n              ]\n            },\n            \"decimals\": {\n              \"type\": [\n                \"integer\",\n                \"null\"\n              ]\n            },\n            \"units\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/$defs/RatioUnit\"\n              }\n            },\n            \"help\": {\n              \"type\": \"string\"\n            },\n            \"unit\": {\n              \"type\": \"string\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"kind\",\n            \"lower\",\n            \"upper\",\n            \"minimum\",\n            \"maximum\",\n            \"units\",\n            \"help\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"kind\": {\n              \"const\": \"ratio_range\"\n            },\n            \"lower\": {\n              \"anyOf\": [\n                {\n                  \"type\": \"null\"\n                },\n                {\n                  \"$ref\": \"#/$defs/DecimalString\"\n                }\n              ]\n            },\n            \"upper\": {\n              \"anyOf\": [\n                {\n                  \"type\": \"null\"\n                },\n                {\n                  \"$ref\": \"#/$defs/DecimalString\"\n                }\n              ]\n            },\n            \"minimum\": {\n              \"anyOf\": [\n                {\n                  \"type\": \"null\"\n                },\n                {\n                  \"$ref\": \"#/$defs/DecimalString\"\n                }\n              ]\n            },\n            \"maximum\": {\n              \"anyOf\": [\n                {\n                  \"type\": \"null\"\n                },\n                {\n                  \"$ref\": \"#/$defs/DecimalString\"\n                }\n              ]\n            },\n            \"units\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/$defs/RatioUnit\"\n              }\n            },\n            \"help\": {\n              \"type\": \"string\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"kind\",\n            \"length\",\n            \"options\",\n            \"help\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"kind\": {\n              \"const\": \"text\"\n            },\n            \"length\": {\n              \"type\": [\n                \"integer\",\n                \"null\"\n              ]\n            },\n            \"options\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              }\n            },\n            \"help\": {\n              \"type\": \"string\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"kind\",\n            \"minimum\",\n            \"maximum\",\n            \"help\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"kind\": {\n              \"const\": \"date\"\n            },\n            \"minimum\": {\n              \"type\": [\n                \"string\",\n                \"null\"\n              ]\n            },\n            \"maximum\": {\n              \"type\": [\n                \"string\",\n                \"null\"\n              ]\n            },\n            \"help\": {\n              \"type\": \"string\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"kind\",\n            \"lower\",\n            \"upper\",\n            \"minimum\",\n            \"maximum\",\n            \"help\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"kind\": {\n              \"const\": \"date_range\"\n            },\n            \"lower\": {\n              \"type\": [\n                \"string\",\n                \"null\"\n              ]\n            },\n            \"upper\": {\n              \"type\": [\n                \"string\",\n                \"null\"\n              ]\n            },\n            \"minimum\": {\n              \"anyOf\": [\n                {\n                  \"type\": \"null\"\n                },\n                {\n                  \"$ref\": \"#/$defs/NamedBound\"\n                }\n              ]\n            },\n            \"maximum\": {\n              \"anyOf\": [\n                {\n                  \"type\": \"null\"\n                },\n                {\n                  \"$ref\": \"#/$defs/NamedBound\"\n                }\n              ]\n            },\n            \"help\": {\n              \"type\": \"string\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"kind\",\n            \"minimum\",\n            \"maximum\",\n            \"help\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"kind\": {\n              \"const\": \"time\"\n            },\n            \"minimum\": {\n              \"type\": [\n                \"string\",\n                \"null\"\n              ]\n            },\n            \"maximum\": {\n              \"type\": [\n                \"string\",\n                \"null\"\n              ]\n            },\n            \"help\": {\n              \"type\": \"string\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"kind\",\n            \"lower\",\n            \"upper\",\n            \"minimum\",\n            \"maximum\",\n            \"help\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"kind\": {\n              \"const\": \"time_range\"\n            },\n            \"lower\": {\n              \"type\": [\n                \"string\",\n                \"null\"\n              ]\n            },\n            \"upper\": {\n              \"type\": [\n                \"string\",\n                \"null\"\n              ]\n            },\n            \"minimum\": {\n              \"anyOf\": [\n                {\n                  \"type\": \"null\"\n                },\n                {\n                  \"$ref\": \"#/$defs/NamedBound\"\n                }\n              ]\n            },\n            \"maximum\": {\n              \"anyOf\": [\n                {\n                  \"type\": \"null\"\n                },\n                {\n                  \"$ref\": \"#/$defs/NamedBound\"\n                }\n              ]\n            },\n            \"help\": {\n              \"type\": \"string\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"kind\",\n            \"lower\",\n            \"upper\",\n            \"minimum\",\n            \"maximum\",\n            \"units\",\n            \"decomposition\",\n            \"help\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"kind\": {\n              \"const\": \"measure_range\"\n            },\n            \"lower\": {\n              \"anyOf\": [\n                {\n                  \"type\": \"null\"\n                },\n                {\n                  \"$ref\": \"#/$defs/NamedBound\"\n                }\n              ]\n            },\n            \"upper\": {\n              \"anyOf\": [\n                {\n                  \"type\": \"null\"\n                },\n                {\n                  \"$ref\": \"#/$defs/NamedBound\"\n                }\n              ]\n            },\n            \"minimum\": {\n              \"anyOf\": [\n                {\n                  \"type\": \"null\"\n                },\n                {\n                  \"$ref\": \"#/$defs/NamedBound\"\n                }\n              ]\n            },\n            \"maximum\": {\n              \"anyOf\": [\n                {\n                  \"type\": \"null\"\n                },\n                {\n                  \"$ref\": \"#/$defs/NamedBound\"\n                }\n              ]\n            },\n            \"units\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/$defs/MeasureUnit\"\n              }\n            },\n            \"decomposition\": {\n              \"anyOf\": [\n                {\n                  \"type\": \"null\"\n                },\n                {\n                  \"type\": \"object\",\n                  \"additionalProperties\": {\n                    \"type\": \"integer\"\n                  }\n                }\n              ]\n            },\n            \"help\": {\n              \"type\": \"string\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"kind\",\n            \"spec\",\n            \"effective\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"kind\": {\n              \"const\": \"spec\"\n            },\n            \"spec\": {\n              \"type\": \"string\"\n            },\n            \"effective\": {\n              \"type\": \"string\"\n            },\n            \"repository\": {\n              \"type\": \"string\"\n            }\n          }\n        }\n      ]\n    },\n    \"ListKey\": {\n      \"description\": \"How a list addresses its rows: \\\"numbered\\\" (by row number), or the ordered `-> key` field names.\",\n      \"oneOf\": [\n        {\n          \"const\": \"numbered\"\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"fields\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"fields\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"minItems\": 1\n            }\n          }\n        }\n      ]\n    },\n    \"LemmaTypeBoolean\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"kind\",\n        \"help\",\n        \"extends\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"kind\": {\n          \"const\": \"boolean\"\n        },\n        \"help\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"extends\": {\n          \"$ref\": \"#/$defs/TypeExtends\"\n        }\n      }\n    },\n    \"LemmaTypeMeasure\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"kind\",\n        \"minimum\",\n        \"maximum\",\n        \"decimals\",\n        \"units\",\n        \"traits\",\n        \"decomposition\",\n        \"help\",\n        \"extends\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"kind\": {\n          \"const\": \"measure\"\n        },\n        \"minimum\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/NamedBound\"\n            }\n          ]\n        },\n        \"maximum\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/NamedBound\"\n            }\n          ]\n        },\n        \"decimals\": {\n          \"type\": [\n            \"integer\",\n            \"null\"\n          ]\n        },\n        \"units\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/MeasureUnit\"\n          }\n        },\n        \"traits\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"enum\": [\n              \"duration\",\n              \"calendar\"\n            ]\n          }\n        },\n        \"decomposition\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"integer\"\n              }\n            }\n          ]\n        },\n        \"help\": {\n          \"type\": \"string\"\n        },\n        \"unit\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"extends\": {\n          \"$ref\": \"#/$defs/TypeExtends\"\n        }\n      }\n    },\n    \"LemmaTypeNumber\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"kind\",\n        \"minimum\",\n        \"maximum\",\n        \"decimals\",\n        \"help\",\n        \"extends\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"kind\": {\n          \"const\": \"number\"\n        },\n        \"minimum\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/DecimalString\"\n            }\n          ]\n        },\n        \"maximum\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/DecimalString\"\n            }\n          ]\n        },\n        \"decimals\": {\n          \"type\": [\n            \"integer\",\n            \"null\"\n          ]\n        },\n        \"help\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"extends\": {\n          \"$ref\": \"#/$defs/TypeExtends\"\n        }\n      }\n    },\n    \"LemmaTypeNumberRange\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"kind\",\n        \"lower\",\n        \"upper\",\n        \"minimum\",\n        \"maximum\",\n        \"help\",\n        \"extends\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"kind\": {\n          \"const\": \"number_range\"\n        },\n        \"lower\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/DecimalString\"\n            }\n          ]\n        },\n        \"upper\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/DecimalString\"\n            }\n          ]\n        },\n        \"minimum\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/DecimalString\"\n            }\n          ]\n        },\n        \"maximum\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/DecimalString\"\n            }\n          ]\n        },\n        \"help\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"extends\": {\n          \"$ref\": \"#/$defs/TypeExtends\"\n        }\n      }\n    },\n    \"LemmaTypeRatio\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"kind\",\n        \"minimum\",\n        \"maximum\",\n        \"decimals\",\n        \"units\",\n        \"help\",\n        \"extends\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"kind\": {\n          \"const\": \"ratio\"\n        },\n        \"minimum\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/DecimalString\"\n            }\n          ]\n        },\n        \"maximum\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/DecimalString\"\n            }\n          ]\n        },\n        \"decimals\": {\n          \"type\": [\n            \"integer\",\n            \"null\"\n          ]\n        },\n        \"units\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/RatioUnit\"\n          }\n        },\n        \"help\": {\n          \"type\": \"string\"\n        },\n        \"unit\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"extends\": {\n          \"$ref\": \"#/$defs/TypeExtends\"\n        }\n      }\n    },\n    \"LemmaTypeRatioRange\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"kind\",\n        \"lower\",\n        \"upper\",\n        \"minimum\",\n        \"maximum\",\n        \"units\",\n        \"help\",\n        \"extends\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"kind\": {\n          \"const\": \"ratio_range\"\n        },\n        \"lower\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/DecimalString\"\n            }\n          ]\n        },\n        \"upper\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/DecimalString\"\n            }\n          ]\n        },\n        \"minimum\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/DecimalString\"\n            }\n          ]\n        },\n        \"maximum\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/DecimalString\"\n            }\n          ]\n        },\n        \"units\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/RatioUnit\"\n          }\n        },\n        \"help\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"extends\": {\n          \"$ref\": \"#/$defs/TypeExtends\"\n        }\n      }\n    },\n    \"LemmaTypeText\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"kind\",\n        \"length\",\n        \"options\",\n        \"help\",\n        \"extends\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"kind\": {\n          \"const\": \"text\"\n        },\n        \"length\": {\n          \"type\": [\n            \"integer\",\n            \"null\"\n          ]\n        },\n        \"options\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"help\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"extends\": {\n          \"$ref\": \"#/$defs/TypeExtends\"\n        }\n      }\n    },\n    \"LemmaTypeDate\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"kind\",\n        \"minimum\",\n        \"maximum\",\n        \"help\",\n        \"extends\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"kind\": {\n          \"const\": \"date\"\n        },\n        \"minimum\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"maximum\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"help\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"extends\": {\n          \"$ref\": \"#/$defs/TypeExtends\"\n        }\n      }\n    },\n    \"LemmaTypeDateRange\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"kind\",\n        \"lower\",\n        \"upper\",\n        \"minimum\",\n        \"maximum\",\n        \"help\",\n        \"extends\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"kind\": {\n          \"const\": \"date_range\"\n        },\n        \"lower\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"upper\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"minimum\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/NamedBound\"\n            }\n          ]\n        },\n        \"maximum\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/NamedBound\"\n            }\n          ]\n        },\n        \"help\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"extends\": {\n          \"$ref\": \"#/$defs/TypeExtends\"\n        }\n      }\n    },\n    \"LemmaTypeTime\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"kind\",\n        \"minimum\",\n        \"maximum\",\n        \"help\",\n        \"extends\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"kind\": {\n          \"const\": \"time\"\n        },\n        \"minimum\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"maximum\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"help\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"extends\": {\n          \"$ref\": \"#/$defs/TypeExtends\"\n        }\n      }\n    },\n    \"LemmaTypeTimeRange\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"kind\",\n        \"lower\",\n        \"upper\",\n        \"minimum\",\n        \"maximum\",\n        \"help\",\n        \"extends\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"kind\": {\n          \"const\": \"time_range\"\n        },\n        \"lower\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"upper\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"minimum\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/NamedBound\"\n            }\n          ]\n        },\n        \"maximum\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/NamedBound\"\n            }\n          ]\n        },\n        \"help\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"extends\": {\n          \"$ref\": \"#/$defs/TypeExtends\"\n        }\n      }\n    },\n    \"LemmaTypeMeasureRange\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"kind\",\n        \"lower\",\n        \"upper\",\n        \"minimum\",\n        \"maximum\",\n        \"units\",\n        \"decomposition\",\n        \"help\",\n        \"extends\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"kind\": {\n          \"const\": \"measure_range\"\n        },\n        \"lower\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/NamedBound\"\n            }\n          ]\n        },\n        \"upper\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/NamedBound\"\n            }\n          ]\n        },\n        \"minimum\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/NamedBound\"\n            }\n          ]\n        },\n        \"maximum\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/NamedBound\"\n            }\n          ]\n        },\n        \"units\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/MeasureUnit\"\n          }\n        },\n        \"decomposition\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"integer\"\n              }\n            }\n          ]\n        },\n        \"help\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"extends\": {\n          \"$ref\": \"#/$defs/TypeExtends\"\n        }\n      }\n    },\n    \"LemmaTypeSpec\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"kind\",\n        \"spec\",\n        \"effective\",\n        \"extends\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"kind\": {\n          \"const\": \"spec\"\n        },\n        \"spec\": {\n          \"type\": \"string\"\n        },\n        \"effective\": {\n          \"type\": \"string\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"extends\": {\n          \"$ref\": \"#/$defs/TypeExtends\"\n        }\n      }\n    },\n    \"LemmaTypeList\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"kind\",\n        \"element\",\n        \"key\",\n        \"extends\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"kind\": {\n          \"const\": \"list\"\n        },\n        \"element\": {\n          \"$ref\": \"#/$defs/TypeSpecification\"\n        },\n        \"key\": {\n          \"$ref\": \"#/$defs/ListKey\"\n        },\n        \"name\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"extends\": {\n          \"$ref\": \"#/$defs/TypeExtends\"\n        }\n      }\n    },\n    \"CalendarResult\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"unit\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"value\": {\n          \"$ref\": \"#/$defs/DecimalString\"\n        },\n        \"unit\": {\n          \"type\": \"string\"\n        }\n      }\n    },\n    \"RuleResultValueEndpoint\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"description\": \"RuleResultValue fields without `range` \u{2014} a range endpoint must never itself be a range.\",\n      \"properties\": {\n        \"result\": {\n          \"type\": \"string\"\n        },\n        \"measure\": {\n          \"type\": \"object\",\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/DecimalString\"\n          }\n        },\n        \"ratio\": {\n          \"type\": \"object\",\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/DecimalString\"\n          }\n        },\n        \"number\": {\n          \"$ref\": \"#/$defs/DecimalString\"\n        },\n        \"boolean\": {\n          \"type\": \"boolean\"\n        },\n        \"text\": {\n          \"type\": \"string\"\n        },\n        \"date\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        },\n        \"calendar\": {\n          \"$ref\": \"#/$defs/CalendarResult\"\n        },\n        \"unit\": {\n          \"type\": \"string\"\n        }\n      }\n    },\n    \"RangeResult\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"from\",\n        \"to\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"from\": {\n          \"$ref\": \"#/$defs/RuleResultValueEndpoint\"\n        },\n        \"to\": {\n          \"$ref\": \"#/$defs/RuleResultValueEndpoint\"\n        }\n      }\n    },\n    \"SpecRuleResult\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"vetoed\",\n        \"rule_type\"\n      ],\n      \"additionalProperties\": false,\n      \"description\": \"One rule of a spec instance, or one evaluated data slot of a spec instance. A spec-valued rule nests SpecResult in result.spec.\",\n      \"properties\": {\n        \"vetoed\": {\n          \"type\": \"boolean\"\n        },\n        \"veto_reason\": {\n          \"type\": \"string\"\n        },\n        \"rule_type\": {\n          \"type\": \"string\"\n        },\n        \"result\": {\n          \"$ref\": \"#/$defs/RuleResultValue\"\n        }\n      }\n    },\n    \"SpecResult\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"spec\",\n        \"effective\",\n        \"instance\",\n        \"path\",\n        \"data\",\n        \"rules\"\n      ],\n      \"additionalProperties\": false,\n      \"description\": \"Spec instance returned by a rule. data holds one evaluated entry per data slot, keyed relative to the spec; unbound slots are omitted.\",\n      \"properties\": {\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"spec\": {\n          \"type\": \"string\"\n        },\n        \"effective\": {\n          \"type\": \"string\"\n        },\n        \"instance\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/PathSegment\"\n          },\n          \"minItems\": 1,\n          \"description\": \"One segment per uses hop of instance.\"\n        },\n        \"data\": {\n          \"type\": \"object\",\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/SpecRuleResult\"\n          }\n        },\n        \"rules\": {\n          \"type\": \"object\",\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/SpecRuleResult\"\n          }\n        }\n      }\n    },\n    \"RowReference\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"spec\",\n        \"effective\",\n        \"instance\",\n        \"index\"\n      ],\n      \"additionalProperties\": false,\n      \"description\": \"A row of an instance list. Its data and rules are Response.rows[index]. instance is the row path relative to the spec holding this value (lines.2).\",\n      \"properties\": {\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"spec\": {\n          \"type\": \"string\"\n        },\n        \"effective\": {\n          \"type\": \"string\"\n        },\n        \"instance\": {\n          \"type\": \"string\"\n        },\n        \"index\": {\n          \"type\": \"integer\",\n          \"minimum\": 0\n        }\n      }\n    },\n    \"RowResult\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"spec\",\n        \"effective\",\n        \"data\",\n        \"rules\"\n      ],\n      \"additionalProperties\": false,\n      \"description\": \"Data and rules of one distinct row reached by a response, filled once and referenced by RowReference.index. Keys are relative to the row spec; unbound slots are omitted.\",\n      \"properties\": {\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"spec\": {\n          \"type\": \"string\"\n        },\n        \"effective\": {\n          \"type\": \"string\"\n        },\n        \"data\": {\n          \"type\": \"object\",\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/SpecRuleResult\"\n          }\n        },\n        \"rules\": {\n          \"type\": \"object\",\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/SpecRuleResult\"\n          }\n        }\n      }\n    },\n    \"RuleResultValue\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"description\": \"API value shared by RuleResult (flattened), Show property x-lemma-value/x-lemma-suggestion, and explanation Rule/Data nodes (flattened). When present: always `result`, plus exactly one typed field for a non-range value; `range` is set instead for a range value. A list sets `list`, one value per row. A list row sets `row` in rule results and RowResult members; in explanation nodes and Show it carries `result` only.\",\n      \"properties\": {\n        \"result\": {\n          \"type\": \"string\"\n        },\n        \"measure\": {\n          \"type\": \"object\",\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/DecimalString\"\n          }\n        },\n        \"ratio\": {\n          \"type\": \"object\",\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/DecimalString\"\n          }\n        },\n        \"number\": {\n          \"$ref\": \"#/$defs/DecimalString\"\n        },\n        \"boolean\": {\n          \"type\": \"boolean\"\n        },\n        \"text\": {\n          \"type\": \"string\"\n        },\n        \"date\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        },\n        \"calendar\": {\n          \"$ref\": \"#/$defs/CalendarResult\"\n        },\n        \"unit\": {\n          \"type\": \"string\"\n        },\n        \"range\": {\n          \"$ref\": \"#/$defs/RangeResult\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/$defs/SpecResult\"\n        },\n        \"row\": {\n          \"$ref\": \"#/$defs/RowReference\"\n        },\n        \"list\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/RuleResultValue\"\n          }\n        },\n        \"fields\": {\n          \"type\": \"object\",\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/RuleResultValue\"\n          },\n          \"description\": \"Show only: on a source row of an instance list value, the fields the row sets, keyed relative to the row spec. Such rows and their list carry no result; row order is array order.\"\n        },\n        \"reference\": {\n          \"type\": \"string\",\n          \"description\": \"Show only: on a source-row field whose value is a reference; the input key of the referenced data in the spec declaring the list.\"\n        }\n      }\n    },\n    \"PathSegment\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"uses\",\n        \"spec\"\n      ],\n      \"additionalProperties\": false,\n      \"description\": \"One uses hop on a Show data or rule path. uses is the alias; repository is omitted for the unnamed workspace; spec is the resolved target name.\",\n      \"properties\": {\n        \"uses\": {\n          \"type\": \"string\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"spec\": {\n          \"type\": \"string\"\n        }\n      }\n    },\n    \"EvaluateDataJson\": {\n      \"description\": \"An evaluation-data JSON value: a literal string, a boolean, a list (array), or an object (list row, or single-unit measure map). JSON numbers and null are not evaluation data.\",\n      \"anyOf\": [\n        {\n          \"type\": \"string\"\n        },\n        {\n          \"type\": \"boolean\"\n        },\n        {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/EvaluateDataJson\"\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/EvaluateDataJson\"\n          }\n        }\n      ]\n    },\n    \"ShowPropertyType\": {\n      \"description\": \"x-lemma-type of a Show property: the LemmaType without help and text options/length, which the property states as description, enum and minLength/maxLength. Single spec types are uses aliases, never properties.\",\n      \"oneOf\": [\n        {\n          \"allOf\": [\n            {\n              \"$ref\": \"#/$defs/ShowTypeBoolean\"\n            },\n            {\n              \"$ref\": \"#/$defs/ShowTypeNameExtends\"\n            }\n          ],\n          \"unevaluatedProperties\": false\n        },\n        {\n          \"allOf\": [\n            {\n              \"$ref\": \"#/$defs/ShowTypeMeasure\"\n            },\n            {\n              \"$ref\": \"#/$defs/ShowTypeNameExtends\"\n            }\n          ],\n          \"unevaluatedProperties\": false\n        },\n        {\n          \"allOf\": [\n            {\n              \"$ref\": \"#/$defs/ShowTypeNumber\"\n            },\n            {\n              \"$ref\": \"#/$defs/ShowTypeNameExtends\"\n            }\n          ],\n          \"unevaluatedProperties\": false\n        },\n        {\n          \"allOf\": [\n            {\n              \"$ref\": \"#/$defs/ShowTypeNumberRange\"\n            },\n            {\n              \"$ref\": \"#/$defs/ShowTypeNameExtends\"\n            }\n          ],\n          \"unevaluatedProperties\": false\n        },\n        {\n          \"allOf\": [\n            {\n              \"$ref\": \"#/$defs/ShowTypeRatio\"\n            },\n            {\n              \"$ref\": \"#/$defs/ShowTypeNameExtends\"\n            }\n          ],\n          \"unevaluatedProperties\": false\n        },\n        {\n          \"allOf\": [\n            {\n              \"$ref\": \"#/$defs/ShowTypeRatioRange\"\n            },\n            {\n              \"$ref\": \"#/$defs/ShowTypeNameExtends\"\n            }\n          ],\n          \"unevaluatedProperties\": false\n        },\n        {\n          \"allOf\": [\n            {\n              \"$ref\": \"#/$defs/ShowTypeText\"\n            },\n            {\n              \"$ref\": \"#/$defs/ShowTypeNameExtends\"\n            }\n          ],\n          \"unevaluatedProperties\": false\n        },\n        {\n          \"allOf\": [\n            {\n              \"$ref\": \"#/$defs/ShowTypeDate\"\n            },\n            {\n              \"$ref\": \"#/$defs/ShowTypeNameExtends\"\n            }\n          ],\n          \"unevaluatedProperties\": false\n        },\n        {\n          \"allOf\": [\n            {\n              \"$ref\": \"#/$defs/ShowTypeDateRange\"\n            },\n            {\n              \"$ref\": \"#/$defs/ShowTypeNameExtends\"\n            }\n          ],\n          \"unevaluatedProperties\": false\n        },\n        {\n          \"allOf\": [\n            {\n              \"$ref\": \"#/$defs/ShowTypeTime\"\n            },\n            {\n              \"$ref\": \"#/$defs/ShowTypeNameExtends\"\n            }\n          ],\n          \"unevaluatedProperties\": false\n        },\n        {\n          \"allOf\": [\n            {\n              \"$ref\": \"#/$defs/ShowTypeTimeRange\"\n            },\n            {\n              \"$ref\": \"#/$defs/ShowTypeNameExtends\"\n            }\n          ],\n          \"unevaluatedProperties\": false\n        },\n        {\n          \"allOf\": [\n            {\n              \"$ref\": \"#/$defs/ShowTypeMeasureRange\"\n            },\n            {\n              \"$ref\": \"#/$defs/ShowTypeNameExtends\"\n            }\n          ],\n          \"unevaluatedProperties\": false\n        },\n        {\n          \"allOf\": [\n            {\n              \"$ref\": \"#/$defs/ShowTypeList\"\n            },\n            {\n              \"$ref\": \"#/$defs/ShowTypeNameExtends\"\n            }\n          ],\n          \"unevaluatedProperties\": false\n        }\n      ]\n    },\n    \"ShowPropertyElementType\": {\n      \"description\": \"Element of a list ShowPropertyType: the TypeSpecification without help and text options/length.\",\n      \"oneOf\": [\n        {\n          \"allOf\": [\n            {\n              \"$ref\": \"#/$defs/ShowTypeBoolean\"\n            }\n          ],\n          \"unevaluatedProperties\": false\n        },\n        {\n          \"allOf\": [\n            {\n              \"$ref\": \"#/$defs/ShowTypeMeasure\"\n            }\n          ],\n          \"unevaluatedProperties\": false\n        },\n        {\n          \"allOf\": [\n            {\n              \"$ref\": \"#/$defs/ShowTypeNumber\"\n            }\n          ],\n          \"unevaluatedProperties\": false\n        },\n        {\n          \"allOf\": [\n            {\n              \"$ref\": \"#/$defs/ShowTypeNumberRange\"\n            }\n          ],\n          \"unevaluatedProperties\": false\n        },\n        {\n          \"allOf\": [\n            {\n              \"$ref\": \"#/$defs/ShowTypeRatio\"\n            }\n          ],\n          \"unevaluatedProperties\": false\n        },\n        {\n          \"allOf\": [\n            {\n              \"$ref\": \"#/$defs/ShowTypeRatioRange\"\n            }\n          ],\n          \"unevaluatedProperties\": false\n        },\n        {\n          \"allOf\": [\n            {\n              \"$ref\": \"#/$defs/ShowTypeText\"\n            }\n          ],\n          \"unevaluatedProperties\": false\n        },\n        {\n          \"allOf\": [\n            {\n              \"$ref\": \"#/$defs/ShowTypeDate\"\n            }\n          ],\n          \"unevaluatedProperties\": false\n        },\n        {\n          \"allOf\": [\n            {\n              \"$ref\": \"#/$defs/ShowTypeDateRange\"\n            }\n          ],\n          \"unevaluatedProperties\": false\n        },\n        {\n          \"allOf\": [\n            {\n              \"$ref\": \"#/$defs/ShowTypeTime\"\n            }\n          ],\n          \"unevaluatedProperties\": false\n        },\n        {\n          \"allOf\": [\n            {\n              \"$ref\": \"#/$defs/ShowTypeTimeRange\"\n            }\n          ],\n          \"unevaluatedProperties\": false\n        },\n        {\n          \"allOf\": [\n            {\n              \"$ref\": \"#/$defs/ShowTypeMeasureRange\"\n            }\n          ],\n          \"unevaluatedProperties\": false\n        },\n        {\n          \"allOf\": [\n            {\n              \"$ref\": \"#/$defs/ShowTypeSpec\"\n            }\n          ],\n          \"unevaluatedProperties\": false\n        }\n      ]\n    },\n    \"ShowItems\": {\n      \"description\": \"items of a list property: the element literal schema of a value list, or a $ref to the row object schema of an instance list in the document\'s $defs.\",\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"anyOf\": [\n            {\n              \"required\": [\n                \"type\"\n              ]\n            },\n            {\n              \"required\": [\n                \"oneOf\"\n              ]\n            }\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"type\": {\n              \"enum\": [\n                \"string\",\n                \"boolean\"\n              ]\n            },\n            \"oneOf\": {\n              \"type\": \"array\",\n              \"minItems\": 2,\n              \"items\": {\n                \"type\": \"object\"\n              }\n            },\n            \"pattern\": {\n              \"type\": \"string\"\n            },\n            \"enum\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              }\n            },\n            \"minLength\": {\n              \"type\": \"integer\",\n              \"minimum\": 0\n            },\n            \"maxLength\": {\n              \"type\": \"integer\",\n              \"minimum\": 0\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"$ref\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"$ref\": {\n              \"type\": \"string\",\n              \"pattern\": \"^#/\\\\$defs/LemmaRow_[A-Za-z0-9_-]+$\"\n            }\n          }\n        }\n      ]\n    },\n    \"ShowProperty\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"x-lemma-type\",\n        \"x-lemma-path\",\n        \"x-lemma-needed-by-rules\"\n      ],\n      \"anyOf\": [\n        {\n          \"required\": [\n            \"type\"\n          ]\n        },\n        {\n          \"required\": [\n            \"oneOf\"\n          ]\n        }\n      ],\n      \"additionalProperties\": false,\n      \"description\": \"One evaluation-data input of a Show document, keyed by its input key (dotted keys included). Standard keywords state the JSON shape; default/examples are the evaluation-data JSON of x-lemma-value/x-lemma-suggestion.\",\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"boolean\",\n            \"string\",\n            \"array\"\n          ]\n        },\n        \"oneOf\": {\n          \"type\": \"array\",\n          \"minItems\": 2,\n          \"items\": {\n            \"type\": \"object\"\n          },\n          \"description\": \"Alternatives: text, boolean, or a single-unit object for measure and ratio data.\"\n        },\n        \"pattern\": {\n          \"type\": \"string\",\n          \"description\": \"Literal grammar of number, measure and ratio inputs (ECMA-262).\"\n        },\n        \"enum\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"Text options.\"\n        },\n        \"minLength\": {\n          \"type\": \"integer\",\n          \"minimum\": 0\n        },\n        \"maxLength\": {\n          \"type\": \"integer\",\n          \"minimum\": 0\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Type help.\"\n        },\n        \"default\": {\n          \"$ref\": \"#/$defs/EvaluateDataJson\"\n        },\n        \"examples\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/EvaluateDataJson\"\n          },\n          \"minItems\": 1,\n          \"maxItems\": 1\n        },\n        \"items\": {\n          \"$ref\": \"#/$defs/ShowItems\"\n        },\n        \"maxItems\": {\n          \"type\": \"integer\",\n          \"minimum\": 0,\n          \"description\": \"max_list_rows.\"\n        },\n        \"x-lemma-type\": {\n          \"$ref\": \"#/$defs/ShowPropertyType\"\n        },\n        \"x-lemma-path\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/PathSegment\"\n          },\n          \"description\": \"Import hops to this slot. Empty means this spec.\"\n        },\n        \"x-lemma-needed-by-rules\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"x-lemma-rules keys that transitively need this data after normalize. Empty = reuse catalog only (not an eval intake key for this spec).\"\n        },\n        \"x-lemma-value\": {\n          \"$ref\": \"#/$defs/RuleResultValue\"\n        },\n        \"x-lemma-suggestion\": {\n          \"$ref\": \"#/$defs/RuleResultValue\"\n        }\n      }\n    },\n    \"ShowRowSchema\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"title\",\n        \"type\",\n        \"additionalProperties\",\n        \"properties\"\n      ],\n      \"additionalProperties\": false,\n      \"description\": \"Row object schema of an instance list, one per row spec in the Show document\'s $defs. Every row-spec data entry is a property, dotted uses fields included.\",\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"object\"\n        },\n        \"additionalProperties\": {\n          \"const\": true\n        },\n        \"properties\": {\n          \"type\": \"object\",\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/ShowProperty\"\n          }\n        },\n        \"required\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        }\n      }\n    },\n    \"ShowConversionTarget\": {\n      \"description\": \"Target of a Show `as` conversion (inspection only).\",\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"type\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"type\": {\n              \"type\": \"string\",\n              \"enum\": [\n                \"boolean\",\n                \"measure\",\n                \"measure_range\",\n                \"number\",\n                \"number_range\",\n                \"ratio\",\n                \"ratio_range\",\n                \"text\",\n                \"date\",\n                \"date_range\",\n                \"time\",\n                \"time_range\"\n              ]\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"unit\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"unit\": {\n              \"type\": \"object\",\n              \"required\": [\n                \"unit_name\"\n              ],\n              \"additionalProperties\": false,\n              \"properties\": {\n                \"unit_name\": {\n                  \"type\": \"string\"\n                }\n              }\n            }\n          }\n        }\n      ]\n    },\n    \"ShowExpression\": {\n      \"description\": \"Resolved expression on a Show rule branch. Internally tagged by `type`.\",\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"type\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"result\": {\n              \"type\": \"string\"\n            },\n            \"measure\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/$defs/DecimalString\"\n              }\n            },\n            \"ratio\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/$defs/DecimalString\"\n              }\n            },\n            \"number\": {\n              \"$ref\": \"#/$defs/DecimalString\"\n            },\n            \"boolean\": {\n              \"type\": \"boolean\"\n            },\n            \"text\": {\n              \"type\": \"string\"\n            },\n            \"date\": {\n              \"type\": \"string\"\n            },\n            \"time\": {\n              \"type\": \"string\"\n            },\n            \"calendar\": {\n              \"$ref\": \"#/$defs/CalendarResult\"\n            },\n            \"unit\": {\n              \"type\": \"string\"\n            },\n            \"range\": {\n              \"$ref\": \"#/$defs/RangeResult\"\n            },\n            \"spec\": {\n              \"$ref\": \"#/$defs/SpecResult\"\n            },\n            \"row\": {\n              \"$ref\": \"#/$defs/RowReference\"\n            },\n            \"list\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/$defs/RuleResultValue\"\n              }\n            },\n            \"fields\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/$defs/RuleResultValue\"\n              },\n              \"description\": \"Show only: on a source row of an instance list value, the fields the row sets, keyed relative to the row spec. Such rows and their list carry no result; row order is array order.\"\n            },\n            \"reference\": {\n              \"type\": \"string\",\n              \"description\": \"Show only: on a source-row field whose value is a reference; the input key of the referenced data in the spec declaring the list.\"\n            },\n            \"type\": {\n              \"const\": \"literal\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"type\",\n            \"name\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"type\": {\n              \"const\": \"data\"\n            },\n            \"name\": {\n              \"type\": \"string\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"type\",\n            \"name\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"type\": {\n              \"const\": \"rule\"\n            },\n            \"name\": {\n              \"type\": \"string\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"type\",\n            \"operands\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"type\": {\n              \"const\": \"and\"\n            },\n            \"operands\": {\n              \"type\": \"array\",\n              \"minItems\": 2,\n              \"items\": {\n                \"$ref\": \"#/$defs/ShowExpression\"\n              }\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"type\",\n            \"operand\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"type\": {\n              \"const\": \"not\"\n            },\n            \"operand\": {\n              \"$ref\": \"#/$defs/ShowExpression\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"type\",\n            \"first\",\n            \"steps\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"type\": {\n              \"const\": \"arithmetic\"\n            },\n            \"first\": {\n              \"$ref\": \"#/$defs/ShowExpression\"\n            },\n            \"steps\": {\n              \"type\": \"array\",\n              \"minItems\": 1,\n              \"items\": {\n                \"type\": \"object\",\n                \"required\": [\n                  \"op\",\n                  \"operand\"\n                ],\n                \"additionalProperties\": false,\n                \"properties\": {\n                  \"op\": {\n                    \"type\": \"string\",\n                    \"enum\": [\n                      \"add\",\n                      \"subtract\",\n                      \"multiply\",\n                      \"divide\",\n                      \"modulo\",\n                      \"power\"\n                    ]\n                  },\n                  \"operand\": {\n                    \"$ref\": \"#/$defs/ShowExpression\"\n                  }\n                }\n              }\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"type\",\n            \"op\",\n            \"left\",\n            \"right\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"type\": {\n              \"const\": \"comparison\"\n            },\n            \"op\": {\n              \"type\": \"string\",\n              \"enum\": [\n                \"greater_than\",\n                \"less_than\",\n                \"greater_than_or_equal\",\n                \"less_than_or_equal\",\n                \"is\",\n                \"is_not\"\n              ]\n            },\n            \"left\": {\n              \"$ref\": \"#/$defs/ShowExpression\"\n            },\n            \"right\": {\n              \"$ref\": \"#/$defs/ShowExpression\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"type\",\n            \"operand\",\n            \"targets\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"type\": {\n              \"const\": \"unit_conversion\"\n            },\n            \"operand\": {\n              \"$ref\": \"#/$defs/ShowExpression\"\n            },\n            \"targets\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/$defs/ShowConversionTarget\"\n              }\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"type\",\n            \"op\",\n            \"operand\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"type\": {\n              \"const\": \"math\"\n            },\n            \"op\": {\n              \"type\": \"string\",\n              \"enum\": [\n                \"sqrt\",\n                \"sin\",\n                \"cos\",\n                \"tan\",\n                \"asin\",\n                \"acos\",\n                \"atan\",\n                \"log\",\n                \"exp\",\n                \"abs\",\n                \"floor\",\n                \"ceil\",\n                \"round\"\n              ]\n            },\n            \"operand\": {\n              \"$ref\": \"#/$defs/ShowExpression\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"type\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"type\": {\n              \"const\": \"veto\"\n            },\n            \"message\": {\n              \"type\": \"string\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"type\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"type\": {\n              \"const\": \"now\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"type\",\n            \"kind\",\n            \"operand\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"type\": {\n              \"const\": \"date_relative\"\n            },\n            \"kind\": {\n              \"type\": \"string\",\n              \"enum\": [\n                \"in_past\",\n                \"in_future\"\n              ]\n            },\n            \"operand\": {\n              \"$ref\": \"#/$defs/ShowExpression\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"type\",\n            \"kind\",\n            \"unit\",\n            \"operand\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"type\": {\n              \"const\": \"date_calendar\"\n            },\n            \"kind\": {\n              \"type\": \"string\",\n              \"enum\": [\n                \"current\",\n                \"past\",\n                \"future\",\n                \"not_in\"\n              ]\n            },\n            \"unit\": {\n              \"type\": \"string\",\n              \"enum\": [\n                \"year\",\n                \"month\",\n                \"week\"\n              ]\n            },\n            \"operand\": {\n              \"$ref\": \"#/$defs/ShowExpression\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"type\",\n            \"from\",\n            \"to\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"type\": {\n              \"const\": \"range_literal\"\n            },\n            \"from\": {\n              \"$ref\": \"#/$defs/ShowExpression\"\n            },\n            \"to\": {\n              \"$ref\": \"#/$defs/ShowExpression\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"type\",\n            \"kind\",\n            \"operand\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"type\": {\n              \"const\": \"past_future_range\"\n            },\n            \"kind\": {\n              \"type\": \"string\",\n              \"enum\": [\n                \"in_past\",\n                \"in_future\"\n              ]\n            },\n            \"operand\": {\n              \"$ref\": \"#/$defs/ShowExpression\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"type\",\n            \"value\",\n            \"range\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"type\": {\n              \"const\": \"range_containment\"\n            },\n            \"value\": {\n              \"$ref\": \"#/$defs/ShowExpression\"\n            },\n            \"range\": {\n              \"$ref\": \"#/$defs/ShowExpression\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"type\",\n            \"bound\",\n            \"operand\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"type\": {\n              \"const\": \"range_bound\"\n            },\n            \"bound\": {\n              \"type\": \"string\",\n              \"enum\": [\n                \"lower\",\n                \"upper\"\n              ]\n            },\n            \"operand\": {\n              \"$ref\": \"#/$defs/ShowExpression\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"type\",\n            \"operand\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"type\": {\n              \"const\": \"is_veto\"\n            },\n            \"operand\": {\n              \"$ref\": \"#/$defs/ShowExpression\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"type\",\n            \"base\",\n            \"member\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"type\": {\n              \"const\": \"spec_member\"\n            },\n            \"base\": {\n              \"type\": \"string\"\n            },\n            \"member\": {\n              \"type\": \"string\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"type\",\n            \"base\",\n            \"member\"\n          ],\n          \"additionalProperties\": false,\n          \"description\": \"Field of a computed row value: `(menu -> find ordered).price`.\",\n          \"properties\": {\n            \"type\": {\n              \"const\": \"member\"\n            },\n            \"base\": {\n              \"$ref\": \"#/$defs/ShowExpression\"\n            },\n            \"member\": {\n              \"type\": \"string\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"type\",\n            \"field\"\n          ],\n          \"additionalProperties\": false,\n          \"description\": \"Field of the current row inside a list command argument.\",\n          \"properties\": {\n            \"type\": {\n              \"const\": \"row_field\"\n            },\n            \"field\": {\n              \"type\": \"string\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"type\"\n          ],\n          \"additionalProperties\": false,\n          \"description\": \"The current row\'s value inside a value-list command argument.\",\n          \"properties\": {\n            \"type\": {\n              \"const\": \"row_value\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"type\",\n            \"field\",\n            \"value\"\n          ],\n          \"additionalProperties\": false,\n          \"description\": \"One `field: value` pair of an inline row appended by `-> with`.\",\n          \"properties\": {\n            \"type\": {\n              \"const\": \"row_field_value\"\n            },\n            \"field\": {\n              \"type\": \"string\"\n            },\n            \"value\": {\n              \"$ref\": \"#/$defs/ShowExpression\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"type\",\n            \"list\",\n            \"command\",\n            \"args\"\n          ],\n          \"additionalProperties\": false,\n          \"description\": \"Postfix list command (`staff -> sum bonus`). direction is present exactly on sort. A value-list condition is a comparison or range_containment whose left operand is row_value.\",\n          \"properties\": {\n            \"type\": {\n              \"const\": \"list_command\"\n            },\n            \"list\": {\n              \"$ref\": \"#/$defs/ShowExpression\"\n            },\n            \"command\": {\n              \"type\": \"string\",\n              \"enum\": [\n                \"find\",\n                \"first\",\n                \"last\",\n                \"count\",\n                \"sum\",\n                \"avg\",\n                \"product\",\n                \"min\",\n                \"max\",\n                \"any\",\n                \"all\",\n                \"where\",\n                \"sort\",\n                \"top\",\n                \"with\"\n              ]\n            },\n            \"direction\": {\n              \"type\": \"string\",\n              \"enum\": [\n                \"asc\",\n                \"desc\"\n              ]\n            },\n            \"args\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/$defs/ShowExpression\"\n              }\n            }\n          }\n        }\n      ]\n    },\n    \"ShowBranch\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"result\"\n      ],\n      \"additionalProperties\": false,\n      \"description\": \"One arm of a rule\'s flat last-match table. Default arm omits condition.\",\n      \"properties\": {\n        \"condition\": {\n          \"$ref\": \"#/$defs/ShowExpression\"\n        },\n        \"result\": {\n          \"$ref\": \"#/$defs/ShowExpression\"\n        }\n      }\n    },\n    \"ShowRule\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"path\",\n        \"branches\",\n        \"depends_on_rules\"\n      ],\n      \"additionalProperties\": false,\n      \"description\": \"Rule on Show: result type, import path ([] = this spec), authored default/unless branches, and depends_on_rules (Show.rules keys).\",\n      \"properties\": {\n        \"type\": {\n          \"$ref\": \"#/$defs/LemmaType\"\n        },\n        \"path\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/PathSegment\"\n          },\n          \"description\": \"Import hops to this rule. Empty means this spec.\"\n        },\n        \"branches\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/ShowBranch\"\n          }\n        },\n        \"depends_on_rules\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"Show.rules keys this rule depends on (planning topo). Always present.\"\n        }\n      }\n    },\n    \"SourceType\": {\n      \"description\": \"Provenance of a loaded source. Externally tagged; the unit `Volatile` variant is the bare string \\\"volatile\\\".\",\n      \"oneOf\": [\n        {\n          \"const\": \"volatile\"\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"path\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"path\": {\n              \"type\": \"string\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"dependency\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"dependency\": {\n              \"type\": \"string\"\n            }\n          }\n        }\n      ]\n    },\n    \"LiteralValue\": {\n      \"description\": \"Parsed literal value. Externally tagged.\",\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"number\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"number\": {\n              \"$ref\": \"#/$defs/DecimalString\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"number_with_unit\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"number_with_unit\": {\n              \"type\": \"array\",\n              \"prefixItems\": [\n                {\n                  \"$ref\": \"#/$defs/DecimalString\"\n                },\n                {\n                  \"type\": \"string\"\n                }\n              ],\n              \"items\": false,\n              \"minItems\": 2,\n              \"maxItems\": 2\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"text\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"text\": {\n              \"type\": \"string\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"date\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"date\": {\n              \"type\": \"string\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"time\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"time\": {\n              \"type\": \"string\"\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"boolean\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"boolean\": {\n              \"enum\": [\n                \"true\",\n                \"false\",\n                \"yes\",\n                \"no\"\n              ]\n            }\n          }\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"range\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"range\": {\n              \"type\": \"array\",\n              \"prefixItems\": [\n                {\n                  \"$ref\": \"#/$defs/LiteralValue\"\n                },\n                {\n                  \"$ref\": \"#/$defs/LiteralValue\"\n                }\n              ],\n              \"items\": false,\n              \"minItems\": 2,\n              \"maxItems\": 2\n            }\n          }\n        }\n      ]\n    },\n    \"Show\": {\n      \"description\": \"Result of Engine::show: a Draft 2020-12 JSON Schema for the spec\'s evaluation-data inputs. properties holds inputs rules need (non-empty x-lemma-needed-by-rules), required the unbound ones, $defs instance-list row schemas. x-lemma-types is local data declarations; x-lemma-rules is this spec\'s rule graph (local plus reachable imports).\",\n      \"allOf\": [\n        {\n          \"$ref\": \"https://json-schema.org/draft/2020-12/schema\"\n        },\n        {\n          \"type\": \"object\",\n          \"required\": [\n            \"$schema\",\n            \"title\",\n            \"type\",\n            \"additionalProperties\",\n            \"properties\",\n            \"x-lemma-start-line\",\n            \"x-lemma-meta\",\n            \"x-lemma-types\",\n            \"x-lemma-rules\"\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"$schema\": {\n              \"const\": \"https://json-schema.org/draft/2020-12/schema\"\n            },\n            \"title\": {\n              \"type\": \"string\",\n              \"description\": \"Spec name.\"\n            },\n            \"description\": {\n              \"type\": \"string\",\n              \"description\": \"Spec commentary.\"\n            },\n            \"type\": {\n              \"const\": \"object\"\n            },\n            \"additionalProperties\": {\n              \"const\": true\n            },\n            \"properties\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/$defs/ShowProperty\"\n              }\n            },\n            \"required\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              }\n            },\n            \"$defs\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/$defs/ShowRowSchema\"\n              }\n            },\n            \"x-lemma-repository\": {\n              \"type\": \"string\",\n              \"description\": \"Interned repository name. Omitted for the unnamed workspace.\"\n            },\n            \"x-lemma-effective-from\": {\n              \"type\": \"string\"\n            },\n            \"x-lemma-effective-to\": {\n              \"type\": \"string\"\n            },\n            \"x-lemma-start-line\": {\n              \"type\": \"integer\"\n            },\n            \"x-lemma-source-type\": {\n              \"$ref\": \"#/$defs/SourceType\"\n            },\n            \"x-lemma-meta\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/$defs/LiteralValue\"\n              }\n            },\n            \"x-lemma-types\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/$defs/LemmaType\"\n              },\n              \"description\": \"Local data declarations (empty path), declaration order.\"\n            },\n            \"x-lemma-rules\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/$defs/ShowRule\"\n              }\n            }\n          }\n        }\n      ]\n    },\n    \"RuleResult\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"vetoed\",\n        \"rule_type\"\n      ],\n      \"additionalProperties\": false,\n      \"description\": \"Result of evaluating one rule. RuleResultValue fields are flattened directly onto this object (no `value` wrapper key) when the rule is not vetoed.\",\n      \"properties\": {\n        \"result\": {\n          \"type\": \"string\"\n        },\n        \"measure\": {\n          \"type\": \"object\",\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/DecimalString\"\n          }\n        },\n        \"ratio\": {\n          \"type\": \"object\",\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/DecimalString\"\n          }\n        },\n        \"number\": {\n          \"$ref\": \"#/$defs/DecimalString\"\n        },\n        \"boolean\": {\n          \"type\": \"boolean\"\n        },\n        \"text\": {\n          \"type\": \"string\"\n        },\n        \"date\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        },\n        \"calendar\": {\n          \"$ref\": \"#/$defs/CalendarResult\"\n        },\n        \"unit\": {\n          \"type\": \"string\"\n        },\n        \"range\": {\n          \"$ref\": \"#/$defs/RangeResult\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/$defs/SpecResult\"\n        },\n        \"row\": {\n          \"$ref\": \"#/$defs/RowReference\"\n        },\n        \"list\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/RuleResultValue\"\n          }\n        },\n        \"fields\": {\n          \"type\": \"object\",\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/RuleResultValue\"\n          },\n          \"description\": \"Show only: on a source row of an instance list value, the fields the row sets, keyed relative to the row spec. Such rows and their list carry no result; row order is array order.\"\n        },\n        \"reference\": {\n          \"type\": \"string\",\n          \"description\": \"Show only: on a source-row field whose value is a reference; the input key of the referenced data in the spec declaring the list.\"\n        },\n        \"vetoed\": {\n          \"type\": \"boolean\"\n        },\n        \"veto_reason\": {\n          \"type\": \"string\"\n        },\n        \"rule_type\": {\n          \"type\": \"string\"\n        },\n        \"explanation\": {\n          \"$ref\": \"#/$defs/RuleNode\"\n        },\n        \"missing_data\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        }\n      }\n    },\n    \"Response\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"spec\",\n        \"effective\",\n        \"results\"\n      ],\n      \"additionalProperties\": false,\n      \"description\": \"Result of Engine::evaluate.\",\n      \"properties\": {\n        \"spec\": {\n          \"type\": \"string\"\n        },\n        \"effective\": {\n          \"type\": \"string\"\n        },\n        \"spec_effective_from\": {\n          \"type\": \"string\"\n        },\n        \"spec_effective_to\": {\n          \"type\": \"string\"\n        },\n        \"results\": {\n          \"type\": \"object\",\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/RuleResult\"\n          }\n        },\n        \"rows\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/RowResult\"\n          },\n          \"description\": \"Rows reached by results, in first-reached order, indexed by RowReference.index. Omitted when no result reaches a row.\"\n        }\n      }\n    },\n    \"SpecDependency\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ],\n      \"additionalProperties\": false,\n      \"description\": \"One uses target written on a spec version.\",\n      \"properties\": {\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"effective\": {\n          \"type\": \"string\"\n        }\n      }\n    },\n    \"SpecVersion\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ],\n      \"additionalProperties\": false,\n      \"description\": \"One temporal spec version from Engine::specs.\",\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"effective_from\": {\n          \"type\": \"string\"\n        },\n        \"effective_to\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/SpecDependency\"\n          },\n          \"description\": \"uses targets in declaration order. Omitted when empty.\"\n        }\n      }\n    },\n    \"Repository\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"specs\"\n      ],\n      \"additionalProperties\": false,\n      \"description\": \"One repository group from Engine::specs. `repository` is absent for the default unnamed repository.\",\n      \"properties\": {\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"specs\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/SpecVersion\"\n          }\n        }\n      }\n    },\n    \"EngineErrorSource\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"attribute\",\n        \"line\",\n        \"column\",\n        \"length\"\n      ],\n      \"additionalProperties\": false,\n      \"description\": \"Source location attached to an EngineError. Line/column are 1-based; length is the UTF-8 byte length of the offending span.\",\n      \"properties\": {\n        \"attribute\": {\n          \"type\": \"string\"\n        },\n        \"line\": {\n          \"type\": \"integer\"\n        },\n        \"column\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        }\n      }\n    },\n    \"Recommendation\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"message\",\n        \"spec\",\n        \"effective_from\",\n        \"repository\",\n        \"source\"\n      ],\n      \"additionalProperties\": false,\n      \"description\": \"Structural quality recommendation from Engine::quality. Advisory only.\",\n      \"properties\": {\n        \"message\": {\n          \"type\": \"string\"\n        },\n        \"spec\": {\n          \"type\": \"string\"\n        },\n        \"effective_from\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ],\n          \"description\": \"Declared temporal start of the analyzed slice, or null for Origin.\"\n        },\n        \"repository\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/EngineErrorSource\"\n        }\n      }\n    },\n    \"EngineError\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"kind\",\n        \"message\",\n        \"related_data\",\n        \"spec\",\n        \"related_spec\",\n        \"source\",\n        \"suggestion\",\n        \"repository\",\n        \"registry_kind\",\n        \"request_kind\",\n        \"limit_name\",\n        \"limit_value\",\n        \"actual_value\"\n      ],\n      \"additionalProperties\": false,\n      \"description\": \"Structured error thrown by Engine::evaluate/show/load/fetch.\",\n      \"properties\": {\n        \"kind\": {\n          \"enum\": [\n            \"parsing\",\n            \"validation\",\n            \"inversion\",\n            \"registry\",\n            \"missing_repository\",\n            \"request\",\n            \"resource_limit\"\n          ]\n        },\n        \"message\": {\n          \"type\": \"string\"\n        },\n        \"related_data\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"spec\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"related_spec\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"source\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/EngineErrorSource\"\n            }\n          ]\n        },\n        \"suggestion\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"repository\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"registry_kind\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"enum\": [\n                \"not_found\",\n                \"unauthorized\",\n                \"network_error\",\n                \"server_error\",\n                \"other\"\n              ]\n            }\n          ]\n        },\n        \"request_kind\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"enum\": [\n                \"spec_not_found\",\n                \"rule_not_found\",\n                \"invalid_request\"\n              ]\n            }\n          ]\n        },\n        \"limit_name\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"limit_value\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"actual_value\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        }\n      }\n    },\n    \"Cause\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"condition\",\n        \"value\"\n      ],\n      \"additionalProperties\": false,\n      \"description\": \"One evaluated unless condition, stated as a fact. A falsified comparison is flipped to its complement, so the condition text describes what held.\",\n      \"properties\": {\n        \"condition\": {\n          \"type\": \"string\",\n          \"description\": \"True-form condition expression text from the source rule.\"\n        },\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"\\\"true\\\" for facts stated positively (including flipped conditions), \\\"false\\\" when the condition could not be flipped into a positive statement, or the veto text when evaluating the condition vetoed.\"\n        },\n        \"children\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/ExplanationNode\"\n          }\n        }\n      }\n    },\n    \"ConversionStep\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"role\",\n        \"text\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"role\": {\n          \"enum\": [\n            \"outcome\",\n            \"rule\"\n          ]\n        },\n        \"text\": {\n          \"type\": \"string\"\n        }\n      }\n    },\n    \"ExplanationNode\": {\n      \"oneOf\": [\n        {\n          \"$ref\": \"#/$defs/RuleRefNode\"\n        },\n        {\n          \"$ref\": \"#/$defs/ComposeNode\"\n        },\n        {\n          \"$ref\": \"#/$defs/DataNode\"\n        },\n        {\n          \"$ref\": \"#/$defs/DataUnusedNode\"\n        },\n        {\n          \"$ref\": \"#/$defs/ConversionNode\"\n        },\n        {\n          \"$ref\": \"#/$defs/VetoNode\"\n        },\n        {\n          \"$ref\": \"#/$defs/RowNode\"\n        },\n        {\n          \"$ref\": \"#/$defs/FilterNode\"\n        }\n      ]\n    },\n    \"RuleNode\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"name\",\n        \"result\",\n        \"body\"\n      ],\n      \"additionalProperties\": false,\n      \"description\": \"Root rule explanation under RuleResult.explanation. Nested rule uses are rule_ref into the rules table. RuleResultValue fields are flattened.\",\n      \"properties\": {\n        \"result\": {\n          \"type\": \"string\"\n        },\n        \"measure\": {\n          \"type\": \"object\",\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/DecimalString\"\n          }\n        },\n        \"ratio\": {\n          \"type\": \"object\",\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/DecimalString\"\n          }\n        },\n        \"number\": {\n          \"$ref\": \"#/$defs/DecimalString\"\n        },\n        \"boolean\": {\n          \"type\": \"boolean\"\n        },\n        \"text\": {\n          \"type\": \"string\"\n        },\n        \"date\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        },\n        \"calendar\": {\n          \"$ref\": \"#/$defs/CalendarResult\"\n        },\n        \"unit\": {\n          \"type\": \"string\"\n        },\n        \"range\": {\n          \"$ref\": \"#/$defs/RangeResult\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/$defs/SpecResult\"\n        },\n        \"row\": {\n          \"$ref\": \"#/$defs/RowReference\"\n        },\n        \"list\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/RuleResultValue\"\n          }\n        },\n        \"fields\": {\n          \"type\": \"object\",\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/RuleResultValue\"\n          },\n          \"description\": \"Show only: on a source row of an instance list value, the fields the row sets, keyed relative to the row spec. Such rows and their list carry no result; row order is array order.\"\n        },\n        \"reference\": {\n          \"type\": \"string\",\n          \"description\": \"Show only: on a source-row field whose value is a reference; the input key of the referenced data in the spec declaring the list.\"\n        },\n        \"type\": {\n          \"const\": \"rule\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"body\": {\n          \"type\": \"string\"\n        },\n        \"causes\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/Cause\"\n          }\n        },\n        \"children\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/ExplanationNode\"\n          }\n        },\n        \"rules\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/ExplainedRule\"\n          },\n          \"description\": \"Narrated rules reachable from this root, referenced by rule_ref nodes. Ids are dense from 0 in first-reach order.\"\n        }\n      }\n    },\n    \"ExplainedRule\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"result\",\n        \"body\"\n      ],\n      \"additionalProperties\": false,\n      \"description\": \"One narrated rule body in a root explanation\'s rules table.\",\n      \"properties\": {\n        \"result\": {\n          \"type\": \"string\"\n        },\n        \"measure\": {\n          \"type\": \"object\",\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/DecimalString\"\n          }\n        },\n        \"ratio\": {\n          \"type\": \"object\",\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/DecimalString\"\n          }\n        },\n        \"number\": {\n          \"$ref\": \"#/$defs/DecimalString\"\n        },\n        \"boolean\": {\n          \"type\": \"boolean\"\n        },\n        \"text\": {\n          \"type\": \"string\"\n        },\n        \"date\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        },\n        \"calendar\": {\n          \"$ref\": \"#/$defs/CalendarResult\"\n        },\n        \"unit\": {\n          \"type\": \"string\"\n        },\n        \"range\": {\n          \"$ref\": \"#/$defs/RangeResult\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/$defs/SpecResult\"\n        },\n        \"row\": {\n          \"$ref\": \"#/$defs/RowReference\"\n        },\n        \"list\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/RuleResultValue\"\n          }\n        },\n        \"fields\": {\n          \"type\": \"object\",\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/RuleResultValue\"\n          },\n          \"description\": \"Show only: on a source row of an instance list value, the fields the row sets, keyed relative to the row spec. Such rows and their list carry no result; row order is array order.\"\n        },\n        \"reference\": {\n          \"type\": \"string\",\n          \"description\": \"Show only: on a source-row field whose value is a reference; the input key of the referenced data in the spec declaring the list.\"\n        },\n        \"id\": {\n          \"type\": \"integer\",\n          \"minimum\": 0\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"body\": {\n          \"type\": \"string\"\n        },\n        \"causes\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/Cause\"\n          }\n        },\n        \"children\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/ExplanationNode\"\n          }\n        }\n      }\n    },\n    \"RuleRefNode\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"id\",\n        \"name\",\n        \"result\"\n      ],\n      \"additionalProperties\": false,\n      \"description\": \"Reference to an ExplainedRule in the enclosing root explanation\'s rules table. RuleResultValue fields are flattened.\",\n      \"properties\": {\n        \"result\": {\n          \"type\": \"string\"\n        },\n        \"measure\": {\n          \"type\": \"object\",\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/DecimalString\"\n          }\n        },\n        \"ratio\": {\n          \"type\": \"object\",\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/DecimalString\"\n          }\n        },\n        \"number\": {\n          \"$ref\": \"#/$defs/DecimalString\"\n        },\n        \"boolean\": {\n          \"type\": \"boolean\"\n        },\n        \"text\": {\n          \"type\": \"string\"\n        },\n        \"date\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        },\n        \"calendar\": {\n          \"$ref\": \"#/$defs/CalendarResult\"\n        },\n        \"unit\": {\n          \"type\": \"string\"\n        },\n        \"range\": {\n          \"$ref\": \"#/$defs/RangeResult\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/$defs/SpecResult\"\n        },\n        \"row\": {\n          \"$ref\": \"#/$defs/RowReference\"\n        },\n        \"list\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/RuleResultValue\"\n          }\n        },\n        \"fields\": {\n          \"type\": \"object\",\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/RuleResultValue\"\n          },\n          \"description\": \"Show only: on a source row of an instance list value, the fields the row sets, keyed relative to the row spec. Such rows and their list carry no result; row order is array order.\"\n        },\n        \"reference\": {\n          \"type\": \"string\",\n          \"description\": \"Show only: on a source-row field whose value is a reference; the input key of the referenced data in the spec declaring the list.\"\n        },\n        \"type\": {\n          \"const\": \"rule_ref\"\n        },\n        \"id\": {\n          \"type\": \"integer\",\n          \"minimum\": 0\n        },\n        \"name\": {\n          \"type\": \"string\"\n        }\n      }\n    },\n    \"RowNode\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"number\",\n        \"fields\"\n      ],\n      \"additionalProperties\": false,\n      \"description\": \"One instance-list row a list command read. Label in ASCII is n. when unkeyed, or [key values] when field-keyed.\",\n      \"properties\": {\n        \"type\": {\n          \"const\": \"row\"\n        },\n        \"number\": {\n          \"type\": \"integer\",\n          \"minimum\": 1\n        },\n        \"appended\": {\n          \"type\": \"boolean\",\n          \"description\": \"True when the row was appended by an expression -> with.\"\n        },\n        \"key\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/ExplanationNode\"\n          },\n          \"description\": \"Key field Data nodes in -> key order; empty for numbered lists.\"\n        },\n        \"fields\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/ExplanationNode\"\n          }\n        }\n      }\n    },\n    \"FilterNode\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"condition\",\n        \"matched\",\n        \"total\"\n      ],\n      \"additionalProperties\": false,\n      \"description\": \"Summary of a where filter: matched of total rows satisfied the condition.\",\n      \"properties\": {\n        \"type\": {\n          \"const\": \"filter\"\n        },\n        \"condition\": {\n          \"type\": \"string\"\n        },\n        \"matched\": {\n          \"type\": \"integer\",\n          \"minimum\": 0\n        },\n        \"total\": {\n          \"type\": \"integer\",\n          \"minimum\": 0\n        },\n        \"children\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/ExplanationNode\"\n          }\n        }\n      }\n    },\n    \"ComposeNode\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"expression\",\n        \"operands\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"type\": {\n          \"const\": \"compose\"\n        },\n        \"expression\": {\n          \"type\": \"string\"\n        },\n        \"operator\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"add\",\n            \"subtract\",\n            \"multiply\",\n            \"divide\",\n            \"modulo\",\n            \"power\"\n          ]\n        },\n        \"operands\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/ExplanationNode\"\n          }\n        }\n      }\n    },\n    \"DataNode\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"name\",\n        \"result\"\n      ],\n      \"additionalProperties\": false,\n      \"description\": \"Bound data narration. RuleResultValue fields are flattened (result plus typed measure/ratio/\u{2026} maps).\",\n      \"properties\": {\n        \"result\": {\n          \"type\": \"string\"\n        },\n        \"measure\": {\n          \"type\": \"object\",\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/DecimalString\"\n          }\n        },\n        \"ratio\": {\n          \"type\": \"object\",\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/DecimalString\"\n          }\n        },\n        \"number\": {\n          \"$ref\": \"#/$defs/DecimalString\"\n        },\n        \"boolean\": {\n          \"type\": \"boolean\"\n        },\n        \"text\": {\n          \"type\": \"string\"\n        },\n        \"date\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        },\n        \"calendar\": {\n          \"$ref\": \"#/$defs/CalendarResult\"\n        },\n        \"unit\": {\n          \"type\": \"string\"\n        },\n        \"range\": {\n          \"$ref\": \"#/$defs/RangeResult\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/$defs/SpecResult\"\n        },\n        \"row\": {\n          \"$ref\": \"#/$defs/RowReference\"\n        },\n        \"list\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/RuleResultValue\"\n          }\n        },\n        \"fields\": {\n          \"type\": \"object\",\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/RuleResultValue\"\n          },\n          \"description\": \"Show only: on a source row of an instance list value, the fields the row sets, keyed relative to the row spec. Such rows and their list carry no result; row order is array order.\"\n        },\n        \"reference\": {\n          \"type\": \"string\",\n          \"description\": \"Show only: on a source-row field whose value is a reference; the input key of the referenced data in the spec declaring the list.\"\n        },\n        \"type\": {\n          \"const\": \"data\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        }\n      }\n    },\n    \"DataUnusedNode\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"name\"\n      ],\n      \"additionalProperties\": false,\n      \"description\": \"Data path present in a cause condition structure but never looked up (short-circuit or static and-false).\",\n      \"properties\": {\n        \"type\": {\n          \"const\": \"data_unused\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        }\n      }\n    },\n    \"ConversionNode\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"expression\",\n        \"steps\",\n        \"operands\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"type\": {\n          \"const\": \"conversion\"\n        },\n        \"expression\": {\n          \"type\": \"string\"\n        },\n        \"steps\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/ConversionStep\"\n          }\n        },\n        \"operands\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/ExplanationNode\"\n          }\n        }\n      }\n    },\n    \"VetoNode\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"type\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"type\": {\n          \"const\": \"veto\"\n        },\n        \"message\": {\n          \"type\": \"string\"\n        }\n      }\n    },\n    \"RepositoryInstallResult\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"source\",\n        \"id\"\n      ],\n      \"additionalProperties\": false,\n      \"description\": \"Result of Engine.install / Lemma.install: LemmaBase repository source text and normalized id. Not yet loaded.\",\n      \"properties\": {\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        }\n      }\n    },\n    \"ShowTypeBoolean\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"kind\"\n      ],\n      \"properties\": {\n        \"kind\": {\n          \"const\": \"boolean\"\n        }\n      }\n    },\n    \"ShowTypeMeasure\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"kind\",\n        \"minimum\",\n        \"maximum\",\n        \"decimals\",\n        \"units\",\n        \"traits\",\n        \"decomposition\"\n      ],\n      \"properties\": {\n        \"kind\": {\n          \"const\": \"measure\"\n        },\n        \"minimum\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/NamedBound\"\n            }\n          ]\n        },\n        \"maximum\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/NamedBound\"\n            }\n          ]\n        },\n        \"decimals\": {\n          \"type\": [\n            \"integer\",\n            \"null\"\n          ]\n        },\n        \"units\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/MeasureUnit\"\n          }\n        },\n        \"traits\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"enum\": [\n              \"duration\",\n              \"calendar\"\n            ]\n          }\n        },\n        \"decomposition\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"integer\"\n              }\n            }\n          ]\n        },\n        \"unit\": {\n          \"type\": \"string\"\n        }\n      }\n    },\n    \"ShowTypeNumber\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"kind\",\n        \"minimum\",\n        \"maximum\",\n        \"decimals\"\n      ],\n      \"properties\": {\n        \"kind\": {\n          \"const\": \"number\"\n        },\n        \"minimum\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/DecimalString\"\n            }\n          ]\n        },\n        \"maximum\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/DecimalString\"\n            }\n          ]\n        },\n        \"decimals\": {\n          \"type\": [\n            \"integer\",\n            \"null\"\n          ]\n        }\n      }\n    },\n    \"ShowTypeNumberRange\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"kind\",\n        \"lower\",\n        \"upper\",\n        \"minimum\",\n        \"maximum\"\n      ],\n      \"properties\": {\n        \"kind\": {\n          \"const\": \"number_range\"\n        },\n        \"lower\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/DecimalString\"\n            }\n          ]\n        },\n        \"upper\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/DecimalString\"\n            }\n          ]\n        },\n        \"minimum\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/DecimalString\"\n            }\n          ]\n        },\n        \"maximum\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/DecimalString\"\n            }\n          ]\n        }\n      }\n    },\n    \"ShowTypeRatio\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"kind\",\n        \"minimum\",\n        \"maximum\",\n        \"decimals\",\n        \"units\"\n      ],\n      \"properties\": {\n        \"kind\": {\n          \"const\": \"ratio\"\n        },\n        \"minimum\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/DecimalString\"\n            }\n          ]\n        },\n        \"maximum\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/DecimalString\"\n            }\n          ]\n        },\n        \"decimals\": {\n          \"type\": [\n            \"integer\",\n            \"null\"\n          ]\n        },\n        \"units\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/RatioUnit\"\n          }\n        },\n        \"unit\": {\n          \"type\": \"string\"\n        }\n      }\n    },\n    \"ShowTypeRatioRange\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"kind\",\n        \"lower\",\n        \"upper\",\n        \"minimum\",\n        \"maximum\",\n        \"units\"\n      ],\n      \"properties\": {\n        \"kind\": {\n          \"const\": \"ratio_range\"\n        },\n        \"lower\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/DecimalString\"\n            }\n          ]\n        },\n        \"upper\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/DecimalString\"\n            }\n          ]\n        },\n        \"minimum\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/DecimalString\"\n            }\n          ]\n        },\n        \"maximum\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/DecimalString\"\n            }\n          ]\n        },\n        \"units\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/RatioUnit\"\n          }\n        }\n      }\n    },\n    \"ShowTypeText\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"kind\"\n      ],\n      \"properties\": {\n        \"kind\": {\n          \"const\": \"text\"\n        }\n      }\n    },\n    \"ShowTypeDate\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"kind\",\n        \"minimum\",\n        \"maximum\"\n      ],\n      \"properties\": {\n        \"kind\": {\n          \"const\": \"date\"\n        },\n        \"minimum\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"maximum\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        }\n      }\n    },\n    \"ShowTypeDateRange\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"kind\",\n        \"lower\",\n        \"upper\",\n        \"minimum\",\n        \"maximum\"\n      ],\n      \"properties\": {\n        \"kind\": {\n          \"const\": \"date_range\"\n        },\n        \"lower\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"upper\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"minimum\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/NamedBound\"\n            }\n          ]\n        },\n        \"maximum\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/NamedBound\"\n            }\n          ]\n        }\n      }\n    },\n    \"ShowTypeTime\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"kind\",\n        \"minimum\",\n        \"maximum\"\n      ],\n      \"properties\": {\n        \"kind\": {\n          \"const\": \"time\"\n        },\n        \"minimum\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"maximum\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        }\n      }\n    },\n    \"ShowTypeTimeRange\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"kind\",\n        \"lower\",\n        \"upper\",\n        \"minimum\",\n        \"maximum\"\n      ],\n      \"properties\": {\n        \"kind\": {\n          \"const\": \"time_range\"\n        },\n        \"lower\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"upper\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"minimum\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/NamedBound\"\n            }\n          ]\n        },\n        \"maximum\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/NamedBound\"\n            }\n          ]\n        }\n      }\n    },\n    \"ShowTypeMeasureRange\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"kind\",\n        \"lower\",\n        \"upper\",\n        \"minimum\",\n        \"maximum\",\n        \"units\",\n        \"decomposition\"\n      ],\n      \"properties\": {\n        \"kind\": {\n          \"const\": \"measure_range\"\n        },\n        \"lower\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/NamedBound\"\n            }\n          ]\n        },\n        \"upper\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/NamedBound\"\n            }\n          ]\n        },\n        \"minimum\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/NamedBound\"\n            }\n          ]\n        },\n        \"maximum\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/NamedBound\"\n            }\n          ]\n        },\n        \"units\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/$defs/MeasureUnit\"\n          }\n        },\n        \"decomposition\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"integer\"\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"ShowTypeSpec\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"kind\",\n        \"spec\",\n        \"effective\"\n      ],\n      \"properties\": {\n        \"kind\": {\n          \"const\": \"spec\"\n        },\n        \"spec\": {\n          \"type\": \"string\"\n        },\n        \"effective\": {\n          \"type\": \"string\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        }\n      }\n    },\n    \"ShowTypeList\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"kind\",\n        \"element\",\n        \"key\"\n      ],\n      \"properties\": {\n        \"kind\": {\n          \"const\": \"list\"\n        },\n        \"element\": {\n          \"$ref\": \"#/$defs/ShowPropertyElementType\"\n        },\n        \"key\": {\n          \"$ref\": \"#/$defs/ListKey\"\n        }\n      }\n    },\n    \"ShowTypeNameExtends\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"extends\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": [\n            \"string\",\n            \"null\"\n          ]\n        },\n        \"extends\": {\n          \"$ref\": \"#/$defs/TypeExtends\"\n        }\n      }\n    }\n  },\n  \"anyOf\": [\n    {\n      \"$ref\": \"#/$defs/Show\"\n    },\n    {\n      \"$ref\": \"#/$defs/Response\"\n    },\n    {\n      \"type\": \"array\",\n      \"items\": {\n        \"$ref\": \"#/$defs/Repository\"\n      }\n    },\n    {\n      \"type\": \"array\",\n      \"items\": {\n        \"$ref\": \"#/$defs/EngineError\"\n      }\n    },\n    {\n      \"$ref\": \"#/$defs/RepositoryInstallResult\"\n    }\n  ]\n}\n";
Expand description

Checked-in JSON Schema for Show, Response, and related wire types (engine/schemas/api.v1.json). Regenerated by cargo run -p xtask -- schema.