Markdown for LLMs
Arxo A3 decision table 0.1
The source Markdown for this article. Copy it into your assistant or download it as a text file.
# Arxo A3 decision table 0.1 Canonical typed decision table: the authoring surface of the A3 format. ## Versions Accepted `schemaVersion`: `law.decision/0.1`. ## Top-level fields | name | type-or-$ref | required | description | |---|---|---|---| | `schemaVersion` | `"law.decision/0.1"` | yes | — | | `kind` | `"decision-table"` | yes | — | | `id` | [`#/$defs/StableId`](#stableid) | yes | — | | `mode` | enum (2) | yes | — | | `hitPolicy` | enum (6) | yes | — | | `priorityOrder` | `array` | no | — | | `total` | `boolean` | yes | — | | `aggregation` | enum (5) | no | — | | `inputs` | `array` | yes | — | | `outputs` | `array` | yes | — | | `emit` | [`#/$defs/EmitTarget`](#emittarget) | no | — | | `rows` | `array` | yes | — | | `labels` | `array` | no | Labels of the table ITSELF — they propagate to its symbol_decl. They do not spill onto rows: a row has its own carrier, because the table generates a node for each row, and the table label would give them all the same name. | | `metadata` | `object` | no | — | ## Enumerations | location | values | |---|---| | `properties/schemaVersion` | `"law.decision/0.1"` | | `properties/kind` | `"decision-table"` | | `properties/mode` | `"function"`, `"rules"` | | `properties/hitPolicy` | `"unique"`, `"first"`, `"any"`, `"priority"`, `"collect"`, `"multiple"` | | `properties/aggregation` | `"list"`, `"count"`, `"sum"`, `"min"`, `"max"` | | `allOf/0/if/properties/hitPolicy` | `"priority"` | | `allOf/1/if/properties/mode` | `"rules"` | | `allOf/2/if/properties/hitPolicy` | `"collect"` | | `$defs/LiteralTerm/properties/kind` | `"value"` | | `$defs/Operand/oneOf/1/properties/kind` | `"parameter"` | | `$defs/Condition/oneOf/0/properties/kind` | `"any"` | | `$defs/Condition/oneOf/1/properties/kind` | `"comparison"` | | `$defs/Condition/oneOf/1/properties/op` | `"eq"`, `"neq"`, `"lt"`, `"lte"`, `"gt"`, `"gte"` | | `$defs/Condition/oneOf/2/properties/kind` | `"interval"` | | `$defs/Condition/oneOf/3/properties/kind` | `"in"` | | `$defs/Condition/oneOf/4/properties/kind` | `"and"` | | `$defs/Label/properties/status` | `"official"`, `"unofficial"`, `"translation"` | | `$defs/EmitArgument/oneOf/0/properties/kind` | `"input"` | | `$defs/EmitArgument/oneOf/1/properties/kind` | `"output"` | | `$defs/EmitArgument/oneOf/2/properties/kind` | `"literal"` | | `$defs/EmitTarget/properties/polarity` | `"positive"`, `"negative"` | ## Raw schema [`https://law.arxo.io/schema/decision-table.schema.json`](https://law.arxo.io/schema/decision-table.schema.json) ## `StableId` Type: `string`. ## `LocalId` Type: `string`. ## `TypeRef` Type: `object`. Required: `name`. | name | type-or-$ref | description | |---|---|---| | `name` | [`#/$defs/StableId`](#stableid) | — | | `args` | `array` | — | | `optional` | `boolean` | — | ## `JsonValue` Definition `JsonValue`. ## `LiteralTerm` Type: `object`. Required: `kind`, `type`. | name | type-or-$ref | description | |---|---|---| | `currency` | `string` | — | | `display` | `string` | — | | `kind` | `"value"` | — | | `type` | [`#/$defs/TypeRef`](#typeref) | — | | `unit` | `string` | — | | `value` | [`#/$defs/JsonValue`](#jsonvalue) | — | | `factors` | `array` | The multiset of base units of a quantity. `unit` is not parsed on read but is CHECKED against its rendering: the "base _per_ base" grammar is ambiguous. | | `lower` | `string` | Lower bound of the interval, an irreducible fraction `<n>/<d>`. | | `upper` | `string` | Upper bound of the interval. | | `derivation` | `string` | The derivation canon. The bounds are RECOMPUTED from it, not checked field by field. | | `poly` | `array` | Algebraic minimal-polynomial coefficients in ascending order, as ASCII-int decimal strings; verified through the canon funnel on read, never trusted. | | `root` | `integer` | 1-based index of the real root in ascending order; range-checked against the Sturm count on read. | | `expr` | `string` | Real-expression canon string; verified through the constructor funnel on read, never trusted. | ## `Operand` Definition `Operand`. ## `Condition` Definition `Condition`. ## `InputColumn` Type: `object`. Required: `id`, `type`. | name | type-or-$ref | description | |---|---|---| | `id` | [`#/$defs/LocalId`](#localid) | — | | `name` | `string` | — | | `type` | [`#/$defs/TypeRef`](#typeref) | — | ## `OutputColumn` Type: `object`. Required: `id`, `type`. | name | type-or-$ref | description | |---|---|---| | `id` | [`#/$defs/LocalId`](#localid) | — | | `name` | `string` | — | | `type` | [`#/$defs/TypeRef`](#typeref) | — | ## `InputCell` Type: `object`. Required: `input`, `condition`. | name | type-or-$ref | description | |---|---|---| | `input` | [`#/$defs/LocalId`](#localid) | — | | `condition` | [`#/$defs/Condition`](#condition) | — | ## `OutputCell` Type: `object`. Required: `output`, `value`. | name | type-or-$ref | description | |---|---|---| | `output` | [`#/$defs/LocalId`](#localid) | — | | `value` | [`#/$defs/Operand`](#operand) | — | ## `DecisionRow` Type: `object`. Required: `id`, `when`, `then`, `anchors`. | name | type-or-$ref | description | |---|---|---| | `id` | [`#/$defs/LocalId`](#localid) | — | | `when` | `array` | — | | `then` | `array` | — | | `anchors` | `array` | — | | `labels` | `array` | Labels of a table row. They propagate to the nodes generated by THIS row (in mode=rules — to its rule, in mode=function — to its helper symbol); the table label does NOT spill onto rows, otherwise every row would be named after the table. Outside the semantic hash, inside the content hash of the node. | ## `LanguageTag` Type: `string`. ## `Label` A copy of the label definition from the intermediate-representation schema: A3 schemas are self-contained and do not borrow even their own primitives (StableId, LiteralTerm, TypeRef). Type: `object`. Required: `language`, `status`, `text`. | name | type-or-$ref | description | |---|---|---| | `grammaticalForms` | `object` | Morphological forms of the label; the key is a slot from the closed dictionary of its language tag, the value is a non-empty form. | | `language` | [`#/$defs/LanguageTag`](#languagetag) | — | | `status` | enum (3) | — | | `text` | `string` | — | ## `EmitArgument` Definition `EmitArgument`. ## `EmitTarget` Type: `object`. Required: `predicate`, `polarity`, `args`. | name | type-or-$ref | description | |---|---|---| | `predicate` | [`#/$defs/StableId`](#stableid) | — | | `polarity` | enum (2) | — | | `args` | `array` | — |