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.