# Arxo Core 0.1 Canonical Legal IR
Draft machine-readable schema for the canonical Legal IR defined by Arxo Law Core 0.1.
## Versions
Accepted `schemaVersion`: `law.core.ir/0.1`, `law.core.ir/0.2`, `law.core.ir/0.3`, `law.core.ir/0.4`, `law.core.ir/0.5`, `law.core.ir/0.6`.
## Top-level fields
| name | type-or-$ref | required | description |
|---|---|---|---|
| `features` | `array` | no | — |
| `imports` | `array` | no | — |
| `metadata` | [`#/$defs/JsonObject`](#jsonobject) | no | — |
| `nodes` | `array` | yes | — |
| `package` | [`#/$defs/PackageRef`](#packageref) | yes | — |
| `schemaVersion` | enum (6) | yes | The document envelope determines the form of SymbolDecl.parameters and the minimum reader version: law.core.ir/0.1 is TypeRef[], law.core.ir/0.2 is ParameterDecl[] (reading 0.1 is compat mode). law.core.ir/0.3 adds the event-model nodes (procedure, temporal_resolution_policy); a document is written as 0.3 only when it carries such a node, otherwise it stays 0.2 — the envelope declares the required reader, not the build date, and a program without the new node is read unchanged by the previous implementation. law.core.ir/0.4 adds the `anchor` node (relation, coverage and the optional `quote`), emitted only for `@source` annotations that carry at least one named attribute; a document is written as 0.4 only when it carries an `anchor` node, otherwise it stays 0.2/0.3 by the same rule. law.core.ir/0.5 adds `Fragment.texts[].exactBytes`, the carrier of the exact source bytes of an official text whose bytes differ from its NFC form; a document is written as 0.5 only when at least one text carries `exactBytes` (0.5 is newer than 0.4), otherwise it stays 0.2/0.3/0.4 byte for byte. law.core.ir/0.6 adds the executable `stage` node (`status: "executable" with `index` and `bindings`); a document is written as 0.6 only when it carries such a node (a reserved `stage` with empty body stays 0.2 as before), otherwise it stays 0.2/0.3/0.4/0.5 byte for byte. |
| `semanticHash` | [`#/$defs/Digest`](#digest) | yes | — |
| `theoryHash` | [`#/$defs/Digest`](#digest) | no | Normalized declarations without presentation or provenance. |
| `artifactHash` | [`#/$defs/Digest`](#digest) | no | Canonical CLIR artifact identity with provenance, excluding presentation labels. |
| `semanticVersion` | anyOf (2) | yes | Exact execution identity; legacy forms remain archival-readable, without granting execution. |
| `strata` | `array` | no | — |
## Enumerations
| location | values |
|---|---|
| `$defs/AchievementGoal/properties/kind` | `"achievement"` |
| `$defs/AggregateTerm/properties/kind` | `"aggregate"` |
| `$defs/AggregateTerm/properties/op` | `"sum"`, `"count"`, `"min"`, `"max"`, `"average"`, `"only"` |
| `$defs/Anchor/allOf/1/properties/coverage` | `"exact"`, `"partial"`, `"contextual"`, `"disputed"` |
| `$defs/Anchor/allOf/1/properties/kind` | `"anchor"` |
| `$defs/Anchor/allOf/1/properties/relation` | `"formalizes"`, `"interprets"`, `"quotes"`, `"paraphrases"`, `"derives_from"`, `"applies"`, `"limits"`, `"invalidates"`, `"distinguishes"` |
| `$defs/AssertionBody/properties/kind` | `"assertion"` |
| `$defs/AssertionBody/properties/origin` | `"case_input"`, `"source_asserted"`, `"external_snapshot"`, `"derived"`, `"adjudicated"`, `"assumed_for_simulation"` |
| `$defs/BinaryTerm/properties/kind` | `"binary"` |
| `$defs/BindPattern/properties/kind` | `"bind"` |
| `$defs/BoolFormula/properties/kind` | `"boolean"` |
| `$defs/CalendarSnapshot/allOf/1/properties/kind` | `"calendar_snapshot"` |
| `$defs/EvidencePolicy/allOf/1/properties/kind` | `"evidence_policy"` |
| `$defs/EvidencePolicy/allOf/1/properties/visibility` | `"public"` |
| `$defs/EvidencePolicy/allOf/1/properties/inputs/propertyNames` | `"edge"`, `"status"`, `"issuer"`, `"observed"`, `"recorded"`, `"available"`, `"current"`, `"authentic"`, `"knowledge"`, `"source"` |
| `$defs/DeadlinePolicy/allOf/1/properties/kind` | `"deadline_policy"` |
| `$defs/DeadlinePolicy/allOf/1/properties/visibility` | `"public"` |
| `$defs/DeadlinePolicy/allOf/1/properties/policy/properties/start_count` | `"same_day"`, `"next_day"` |
| `$defs/DeadlinePolicy/allOf/1/properties/policy/properties/roll` | `"no_roll"`, `"next_working_day"`, `"previous_working_day"` |
| `$defs/DeadlinePolicy/allOf/1/properties/policy/properties/month_end` | `"last_day_of_month"`, `"reject_nonexistent"` |
| `$defs/TemporalResolutionPolicy/allOf/1/properties/kind` | `"temporal_resolution_policy"` |
| `$defs/TemporalResolutionPolicy/allOf/1/properties/visibility` | `"public"` |
| `$defs/Procedure/allOf/1/properties/kind` | `"procedure"` |
| `$defs/ProcedureJoin/properties/policy` | `"all"`, `"any"`, `"quorum"` |
| `$defs/Stage/allOf/1/properties/kind` | `"stage"` |
| `$defs/Stage/allOf/1/properties/status` | `"reserved"`, `"executable"` |
| `$defs/Stage/allOf/1/properties/index/properties/type` | `"Integer"`, `"Date"` |
| `$defs/Stage/allOf/1/properties/index/properties/direction` | `"ascending"`, `"descending"` |
| `$defs/CallTerm/properties/kind` | `"call"` |
| `$defs/ClosurePolicy/allOf/1/properties/kind` | `"closure_policy"` |
| `$defs/ComparisonFormula/properties/kind` | `"comparison"` |
| `$defs/ComparisonFormula/properties/op` | `"eq"`, `"ne"`, `"lt"`, `"le"`, `"gt"`, `"ge"`, `"in"`, `"text_matches"` |
| `$defs/ComprehensionTerm/properties/kind` | `"comprehension"` |
| `$defs/Constraint/allOf/1/properties/kind` | `"constraint"` |
| `$defs/Constraint/allOf/1/properties/severity` | `"info"`, `"warning"`, `"error"`, `"critical"` |
| `$defs/CounterfactualDecl/allOf/1/properties/kind` | `"counterfactual_decl"` |
| `$defs/DutyPayload/properties/allocationPolicy/oneOf/0` | `"individual"`, `"joint"`, `"several"`, `"joint_and_several"` |
| `$defs/DutyPayload/properties/kind` | `"duty"` |
| `$defs/DynamicReference/allOf/1/properties/kind` | `"reference"` |
| `$defs/DynamicReference/allOf/1/properties/resolveAt` | `"legal_time"` |
| `$defs/EvidenceItem/allOf/1/properties/kind` | `"evidence_item"` |
| `$defs/ExternalDecl/allOf/1/properties/effect` | `"snapshot"`, `"judgment"`, `"opaque"` |
| `$defs/ExternalDecl/allOf/1/properties/kind` | `"external_decl"` |
| `$defs/ExternalDecl/allOf/1/allOf/0/if/properties/effect` | `"snapshot"` |
| `$defs/ExternalDecl/allOf/1/allOf/1/if/properties/effect` | `"judgment"` |
| `$defs/FieldTerm/properties/kind` | `"field"` |
| `$defs/ForbearanceGoal/properties/kind` | `"forbearance"` |
| `$defs/Fragment/allOf/1/properties/kind` | `"fragment"` |
| `$defs/Fragment/allOf/1/properties/visibility` | `"public"` |
| `$defs/FunctionDecl/allOf/1/properties/effect` | `"pure"` |
| `$defs/FunctionDecl/allOf/1/properties/kind` | `"function_decl"` |
| `$defs/FunctionDecl/allOf/1/properties/visibility` | `"public"` |
| `$defs/IfTerm/properties/kind` | `"if"` |
| `$defs/ImmunityPayload/properties/kind` | `"immunity"` |
| `$defs/Interpretation/allOf/1/properties/kind` | `"interpretation"` |
| `$defs/Interpretation/allOf/1/properties/visibility` | `"public"` |
| `$defs/InterpretationGroup/allOf/1/properties/kind` | `"interpretation_group"` |
| `$defs/InterpretationGroup/allOf/1/properties/selection` | `"exactly_one"`, `"any_of"`, `"compose_explicitly"` |
| `$defs/IntervalTerm/properties/kind` | `"interval"` |
| `$defs/Label/properties/status` | `"official"`, `"unofficial"`, `"translation"` |
| `$defs/LegalEffect/properties/kind` | `"create"`, `"terminate"`, `"modify"`, `"opaque"` |
| `$defs/LetTerm/properties/kind` | `"let"` |
| `$defs/LibertyPayload/properties/kind` | `"liberty"` |
| `$defs/ListTerm/properties/kind` | `"list"` |
| `$defs/Literal/properties/kind` | `"literal"` |
| `$defs/Literal/properties/polarity` | `"positive"`, `"negative"` |
| `$defs/LiteralTerm/properties/kind` | `"value"` |
| `$defs/MaintenanceGoal/properties/kind` | `"maintenance"` |
| `$defs/MapTerm/properties/kind` | `"map"` |
| `$defs/MatchTerm/properties/kind` | `"match"` |
| `$defs/NaryFormula/properties/kind` | `"and"`, `"or"` |
| `$defs/NormTemplate/allOf/1/properties/kind` | `"norm_template"` |
| `$defs/NormTemplate/allOf/1/properties/modality` | `"duty"`, `"liberty"`, `"power"`, `"immunity"` |
| `$defs/NormTemplateRef/properties/kind` | `"norm_template_ref"` |
| `$defs/PowerPayload/properties/kind` | `"power"` |
| `$defs/PriorityRule/allOf/1/properties/kind` | `"priority_rule"` |
| `$defs/PriorityRule/allOf/1/properties/priorityKind` | `"direct"`, `"policy"` |
| `$defs/ProvenanceEdge/properties/relation` | `"was_derived_from"`, `"was_generated_by"`, `"was_attributed_to"`, `"used"`, `"was_revision_of"`, `"was_invalidated_by"` |
| `$defs/Publication/allOf/1/properties/kind` | `"publication"` |
| `$defs/QuantifiedFormula/properties/kind` | `"quantified"` |
| `$defs/QuantifiedFormula/properties/quantifier` | `"exists"`, `"forall"` |
| `$defs/Query/allOf/1/properties/kind` | `"query"` |
| `$defs/RecordTerm/properties/kind` | `"record"` |
| `$defs/RecurringGoal/properties/kind` | `"recurring"` |
| `$defs/RefTerm/properties/kind` | `"const_ref"`, `"entity_ref"` |
| `$defs/Revision/allOf/1/properties/kind` | `"revision"` |
| `$defs/Entrenchment/allOf/1/properties/kind` | `"entrenchment"` |
| `$defs/RevisionOperation/allOf/0/properties/op` | `"replace"`, `"insert"`, `"repeal"`, `"renumber"` |
| `$defs/RevisionOperation/allOf/1/oneOf/0/properties/op` | `"replace"` |
| `$defs/RevisionOperation/allOf/1/oneOf/1/properties/op` | `"insert"` |
| `$defs/RevisionOperation/allOf/1/oneOf/2/properties/op` | `"repeal"` |
| `$defs/RevisionOperation/allOf/1/oneOf/3/properties/op` | `"renumber"` |
| `$defs/Rule/allOf/1/properties/kind` | `"rule"` |
| `$defs/Rule/allOf/1/properties/strength` | `"strict"`, `"defeasible"`, `"defeater"` |
| `$defs/Rule/allOf/1/properties/visibility` | `"public"` |
| `$defs/SetTerm/properties/kind` | `"set"` |
| `$defs/SourceEdition/allOf/1/properties/applicability` | `"timeless"` |
| `$defs/SourceEdition/allOf/1/properties/kind` | `"source_edition"` |
| `$defs/SourceEdition/allOf/1/properties/materializationStatus` | `"PINNED_OFFICIAL_BYTES"`, `"PINNED_UNOFFICIAL_COPY"`, `"PINNED_EDITORIAL_RECONSTRUCTION"`, `"DYNAMIC_OFFICIAL_PAGE"`, `"ABSTRACT_ONLY"`, `"UNAVAILABLE"` |
| `$defs/SourceEdition/allOf/1/allOf/0/if/properties/applicability` | `"timeless"` |
| `$defs/SourceWork/allOf/1/properties/kind` | `"source_work"` |
| `$defs/StatusFormula/properties/kind` | `"status"` |
| `$defs/StatusFormula/properties/status` | `"established"`, `"supported"`, `"monotone"`, `"refuted"`, `"opposed"`, `"conflicted"`, `"unknown"`, `"not_known"`, `"no_evidence"` |
| `$defs/SupportEdge/allOf/1/properties/kind` | `"support_edge"` |
| `$defs/SupportEdge/allOf/1/properties/relation` | `"supports"`, `"refutes"`, `"authenticates"`, `"measures"`, `"reports"`, `"establishes"` |
| `$defs/SymbolDecl/allOf/1/allOf/0/if/properties/symbolKind` | `"relation"` |
| `$defs/SymbolDecl/allOf/1/allOf/1/if/properties/symbolKind` | `"function"` |
| `$defs/SymbolDecl/allOf/1/allOf/2/if/properties/symbolKind` | `"constant"` |
| `$defs/SymbolDecl/allOf/1/properties/effect` | `"pure"`, `"snapshot"`, `"judgment"`, `"opaque"` |
| `$defs/SymbolDecl/allOf/1/properties/kind` | `"symbol_decl"` |
| `$defs/SymbolDecl/allOf/1/properties/symbolKind` | `"relation"`, `"function"`, `"constant"` |
| `$defs/SymbolDecl/allOf/1/properties/visibility` | `"public"` |
| `$defs/TemporalFormula/properties/kind` | `"temporal"` |
| `$defs/TemporalFormula/properties/op` | `"before"`, `"after"`, `"during"`, `"overlaps"`, `"contains"`, `"starts"`, `"finishes"` |
| `$defs/TemporalInterval/properties/end/oneOf/2` | `"infinity"` |
| `$defs/TemporalInterval/properties/start/oneOf/2` | `"-infinity"` |
| `$defs/TypeDecl/allOf/1/allOf/0/if/properties/typeKind` | `"alias"` |
| `$defs/TypeDecl/allOf/1/allOf/1/if/properties/typeKind` | `"variant"` |
| `$defs/TypeDecl/allOf/1/properties/kind` | `"type_decl"` |
| `$defs/TypeDecl/allOf/1/properties/typeKind` | `"entity"`, `"record"`, `"enum"`, `"variant"`, `"alias"` |
| `$defs/TypeDecl/allOf/1/properties/visibility` | `"public"` |
| `$defs/UnaryTerm/properties/kind` | `"unary"` |
| `$defs/ValuePattern/properties/kind` | `"value"` |
| `$defs/WildcardTerm/properties/kind` | `"wildcard"` |
| `$defs/VarTerm/properties/kind` | `"var"` |
| `$defs/VariantTerm/properties/kind` | `"variant_value"` |
| `$defs/VariantPattern/properties/kind` | `"variant"` |
| `$defs/WildcardPattern/properties/kind` | `"wildcard"` |
| `$defs/FactorVocabulary/allOf/1/properties/kind` | `"factor_vocabulary"` |
| `$defs/PrecedentDecl/allOf/1/properties/kind` | `"precedent_decl"` |
| `$defs/UnitDecl/allOf/1/properties/dimension/items/prefixItems/0` | `"Length"`, `"Mass"`, `"Time"`, `"Current"`, `"Temperature"`, `"Amount"`, `"Luminosity"` |
| `$defs/UnitDecl/allOf/1/properties/kind` | `"unit_decl"` |
| `$defs/UnitDecl/allOf/1/properties/unitKind` | `"simple"`, `"derived"`, `"alias"` |
| `$defs/UnitDecl/allOf/2/if/properties/unitKind` | `"simple"` |
| `$defs/UnitDecl/allOf/3/if/properties/unitKind` | `"derived"` |
| `$defs/UnitDecl/allOf/4/if/properties/unitKind` | `"alias"` |
| `$defs/RoundingFormula/properties/kind` | `"rounding"` |
| `$defs/RoundingFormula/properties/mode` | `"HALF_UP"`, `"HALF_EVEN"`, `"HALF_DOWN"`, `"UP"`, `"DOWN"`, `"CEILING"`, `"FLOOR"` |
| `properties/schemaVersion` | `"law.core.ir/0.1"`, `"law.core.ir/0.2"`, `"law.core.ir/0.3"`, `"law.core.ir/0.4"`, `"law.core.ir/0.5"`, `"law.core.ir/0.6"` |
## Raw schema
[`https://law.arxo.io/schema/legal-ir.schema.json`](https://law.arxo.io/schema/legal-ir.schema.json)
## `AchievementGoal`
Type: `object`.
Required: `kind`, `condition`, `window`.
| name | type-or-$ref | description |
|---|---|---|
| `completenessPolicy` | [`#/$defs/StableId`](#stableid) | — |
| `condition` | [`#/$defs/Formula`](#formula) | — |
| `kind` | `"achievement"` | — |
| `termination` | [`#/$defs/Formula`](#formula) | — |
| `window` | [`#/$defs/Term`](#term) | — |
## `AggregateTerm`
Type: `object`.
Required: `kind`, `op`, `input`.
| name | type-or-$ref | description |
|---|---|---|
| `input` | [`#/$defs/Term`](#term) | — |
| `kind` | `"aggregate"` | — |
| `op` | enum (6) | — |
| `options` | [`#/$defs/JsonObject`](#jsonobject) | — |
## `Anchor`
Definition `Anchor`.
## `Assertion`
Definition `Assertion`.
## `AssertionBody`
Type: `object`.
Required: `kind`, `id`, `package`, `literal`, `origin`.
| name | type-or-$ref | description |
|---|---|---|
| `anchors` | — | — |
| `annotations` | — | — |
| `contentHash` | — | — |
| `evidence` | `array` | — |
| `id` | — | — |
| `judgment` | `object` | — |
| `kind` | `"assertion"` | — |
| `labels` | — | — |
| `literal` | [`#/$defs/Literal`](#literal) | — |
| `observedAt` | oneOf (2) | — |
| `origin` | enum (6) | — |
| `package` | — | — |
| `provenance` | — | — |
| `recordedAt` | oneOf (2) | — |
| `sourceSpan` | — | — |
| `valid` | [`#/$defs/TemporalInterval`](#temporalinterval) | — |
## `BinaryTerm`
Type: `object`.
Required: `kind`, `op`, `left`, `right`.
| name | type-or-$ref | description |
|---|---|---|
| `kind` | `"binary"` | — |
| `left` | [`#/$defs/Term`](#term) | — |
| `op` | `string` | — |
| `right` | [`#/$defs/Term`](#term) | — |
## `BindPattern`
Type: `object`.
Required: `kind`, `variable`.
| name | type-or-$ref | description |
|---|---|---|
| `kind` | `"bind"` | — |
| `variable` | [`#/$defs/Variable`](#variable) | — |
## `BoolFormula`
Type: `object`.
Required: `kind`, `value`.
| name | type-or-$ref | description |
|---|---|---|
| `kind` | `"boolean"` | — |
| `value` | `boolean` | — |
## `CalendarSnapshot`
Definition `CalendarSnapshot`.
## `CaseAssertion`
Definition `CaseAssertion`.
## `EvidencePolicy`
Carrier of an executable evidence policy. Phase rules are closed by the `rules` list; the node has no open metadata.
## `DeadlinePolicy`
Definition `DeadlinePolicy`.
## `TemporalResolutionPolicy`
Resolution of `Date` into `Instant`. Only `utcOffset` is executed; `timezone` is a provenance label, and no time-zone database is read.
## `Procedure`
The profile automaton as data, executed by the folding phase. Desugaring no longer emits the `
/initial`, `
//valid` and `//enters` rules.
## `ProcedureState`
Type: `object`.
Required: `id`, `initial`, `terminal`.
| name | type-or-$ref | description |
|---|---|---|
| `id` | [`#/$defs/StableId`](#stableid) | — |
| `initial` | `boolean` | — |
| `terminal` | `boolean` | — |
| `regions` | `array` | — |
| `join` | [`#/$defs/ProcedureJoin`](#procedurejoin) | — |
## `ProcedureRegion`
Type: `object`.
Required: `id`, `states`, `transitions`.
| name | type-or-$ref | description |
|---|---|---|
| `id` | [`#/$defs/StableId`](#stableid) | — |
| `states` | `array` | — |
| `transitions` | `array` | — |
## `ProcedureTransition`
Type: `object`.
Required: `id`, `from`, `to`, `requires`.
| name | type-or-$ref | description |
|---|---|---|
| `id` | [`#/$defs/StableId`](#stableid) | — |
| `from` | [`#/$defs/StableId`](#stableid) | — |
| `to` | [`#/$defs/StableId`](#stableid) | — |
| `on` | [`#/$defs/StableId`](#stableid) | — |
| `guard` | [`#/$defs/Formula`](#formula) | — |
| `requires` | `array` | — |
## `ProcedureJoin`
Type: `object`.
Required: `policy`.
| name | type-or-$ref | description |
|---|---|---|
| `policy` | enum (3) | — |
| `count` | `integer` | — |
## `Stage`
Definition `Stage`.
## `CallTerm`
Type: `object`.
Required: `kind`, `function`, `args`.
| name | type-or-$ref | description |
|---|---|---|
| `args` | `array` | — |
| `function` | [`#/$defs/StableId`](#stableid) | — |
| `kind` | `"call"` | — |
## `ClosurePolicy`
Definition `ClosurePolicy`.
## `ComparisonFormula`
Type: `object`.
Required: `kind`, `op`, `left`, `right`.
| name | type-or-$ref | description |
|---|---|---|
| `kind` | `"comparison"` | — |
| `left` | [`#/$defs/Term`](#term) | — |
| `op` | enum (8) | — |
| `right` | [`#/$defs/Term`](#term) | — |
## `ComprehensionTerm`
Type: `object`.
Required: `kind`, `variable`, `element`, `generator`, `distinct`.
| name | type-or-$ref | description |
|---|---|---|
| `binders` | `array` | Auxiliary existential-local generator binders; they distinguish List positions but are not collection elements. |
| `distinct` | `boolean` | True gives Set (`collect`, distinct ground values); false gives List (`collect all`, one element per solution substitution of the generator). Required, with no default: multiplicity is the author's semantic decision, not a schema default. |
| `element` | [`#/$defs/Term`](#term) | — |
| `generator` | [`#/$defs/Formula`](#formula) | — |
| `kind` | `"comprehension"` | — |
| `variable` | [`#/$defs/Variable`](#variable) | — |
## `Constraint`
Definition `Constraint`.
## `CounterfactualDecl`
Definition `CounterfactualDecl`.
## `DateString`
Type: `string`.
## `DecimalString`
Type: `string`.
## `Digest`
Type: `string`.
## `DutyPayload`
Type: `object`.
Required: `kind`, `bearer`, `goal`.
| name | type-or-$ref | description |
|---|---|---|
| `activation` | [`#/$defs/Formula`](#formula) | — |
| `allocationPolicy` | oneOf (2) | — |
| `bearer` | [`#/$defs/Term`](#term) | — |
| `beneficiary` | [`#/$defs/Term`](#term) | — |
| `dischargePolicy` | [`#/$defs/StableId`](#stableid) | — |
| `goal` | [`#/$defs/Goal`](#goal) | — |
| `kind` | `"duty"` | — |
| `violationPolicy` | [`#/$defs/StableId`](#stableid) | — |
## `DynamicReference`
Definition `DynamicReference`.
## `EvidenceItem`
Definition `EvidenceItem`.
## `ExternalDecl`
Definition `ExternalDecl`.
## `FieldTerm`
Type: `object`.
Required: `kind`, `target`, `field`.
| name | type-or-$ref | description |
|---|---|---|
| `field` | `string` | — |
| `kind` | `"field"` | — |
| `target` | [`#/$defs/Term`](#term) | — |
## `ForbearanceGoal`
Type: `object`.
Required: `kind`, `action`, `window`.
| name | type-or-$ref | description |
|---|---|---|
| `action` | [`#/$defs/Term`](#term) | — |
| `completenessPolicy` | [`#/$defs/StableId`](#stableid) | — |
| `kind` | `"forbearance"` | — |
| `window` | [`#/$defs/Term`](#term) | — |
## `Formula`
Definition `Formula`.
## `Fragment`
Definition `Fragment`.
## `FunctionDecl`
Definition `FunctionDecl`.
## `Goal`
Definition `Goal`.
## `IfTerm`
Type: `object`.
Required: `kind`, `condition`, `then`, `else`.
| name | type-or-$ref | description |
|---|---|---|
| `condition` | [`#/$defs/Formula`](#formula) | — |
| `else` | [`#/$defs/Term`](#term) | — |
| `kind` | `"if"` | — |
| `then` | [`#/$defs/Term`](#term) | — |
## `ImmunityPayload`
Type: `object`.
Required: `kind`, `holder`, `protectedEffect`.
| name | type-or-$ref | description |
|---|---|---|
| `against` | [`#/$defs/Term`](#term) | — |
| `holder` | [`#/$defs/Term`](#term) | — |
| `kind` | `"immunity"` | — |
| `protectedEffect` | [`#/$defs/LegalEffect`](#legaleffect) | — |
| `window` | [`#/$defs/Term`](#term) | — |
## `InstantString`
Type: `string`.
## `Interpretation`
Definition `Interpretation`.
## `InterpretationGroup`
Definition `InterpretationGroup`.
## `IntervalTerm`
Type: `object`.
Required: `kind`, `start`, `end`, `startInclusive`, `endInclusive`.
| name | type-or-$ref | description |
|---|---|---|
| `end` | [`#/$defs/Term`](#term) | — |
| `endInclusive` | `boolean` | — |
| `kind` | `"interval"` | — |
| `start` | [`#/$defs/Term`](#term) | — |
| `startInclusive` | `boolean` | — |
## `JsonObject`
Type: `object`.
## `JsonValue`
Definition `JsonValue`.
## `Label`
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. Presentational: outside the semantic hash, inside the node's content hash. |
| `language` | [`#/$defs/LanguageTag`](#languagetag) | — |
| `status` | enum (3) | — |
| `template` | `string` | Predicate template of a relation label: a positive clause with placeholders {parameterName} for every parameter; {{ and }} are literal braces. Presentational: outside the semantic hash, inside the node's content hash; allowed only on labels of relation symbol_decl. |
| `text` | `string` | — |
## `LanguageTag`
Type: `string`.
## `LegalEffect`
Type: `object`.
Required: `kind`.
| name | type-or-$ref | description |
|---|---|---|
| `after` | [`#/$defs/Formula`](#formula) | — |
| `before` | [`#/$defs/Formula`](#formula) | — |
| `description` | `string` | — |
| `kind` | enum (4) | — |
## `LetTerm`
Type: `object`.
Required: `kind`, `variable`, `value`, `body`.
| name | type-or-$ref | description |
|---|---|---|
| `body` | [`#/$defs/Term`](#term) | — |
| `kind` | `"let"` | — |
| `value` | [`#/$defs/Term`](#term) | — |
| `variable` | [`#/$defs/Variable`](#variable) | — |
## `LibertyPayload`
Type: `object`.
Required: `kind`, `holder`, `action`, `window`.
| name | type-or-$ref | description |
|---|---|---|
| `action` | [`#/$defs/Term`](#term) | — |
| `against` | [`#/$defs/Term`](#term) | — |
| `holder` | [`#/$defs/Term`](#term) | — |
| `kind` | `"liberty"` | — |
| `window` | [`#/$defs/Term`](#term) | — |
## `LifecycleEvent`
Type: `object`.
Required: `status`, `extent`.
| name | type-or-$ref | description |
|---|---|---|
| `extent` | oneOf (3) | — |
| `source` | [`#/$defs/StableId`](#stableid) | — |
| `status` | `string` | — |
## `ListTerm`
Type: `object`.
Required: `kind`, `items`.
| name | type-or-$ref | description |
|---|---|---|
| `items` | `array` | — |
| `kind` | `"list"` | — |
## `Literal`
Type: `object`.
Required: `kind`, `polarity`, `predicate`, `args`.
| name | type-or-$ref | description |
|---|---|---|
| `args` | `array` | — |
| `kind` | `"literal"` | — |
| `polarity` | enum (2) | — |
| `predicate` | [`#/$defs/StableId`](#stableid) | — |
## `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 a quantity's base units. `unit` is not parsed on read but is checked against its rendering: the grammar "base _per_ base" is ambiguous. |
| `lower` | `string` | Lower bound of the interval, an irreducible fraction `/`. |
| `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 min-poly coefficients, ascending, 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` | RealExpr canon string; verified through the constructor funnel on read, never trusted. |
## `LockedImport`
Type: `object`.
Required: `package`, `contentHash`.
| name | type-or-$ref | description |
|---|---|---|
| `contentHash` | [`#/$defs/Digest`](#digest) | — |
| `features` | `array` | — |
| `package` | [`#/$defs/PackageRef`](#packageref) | — |
## `MaintenanceGoal`
Type: `object`.
Required: `kind`, `condition`, `window`.
| name | type-or-$ref | description |
|---|---|---|
| `completenessPolicy` | [`#/$defs/StableId`](#stableid) | — |
| `condition` | [`#/$defs/Formula`](#formula) | — |
| `kind` | `"maintenance"` | — |
| `termination` | [`#/$defs/Formula`](#formula) | — |
| `window` | [`#/$defs/Term`](#term) | — |
## `MapTerm`
Type: `object`.
Required: `kind`, `entries`.
| name | type-or-$ref | description |
|---|---|---|
| `entries` | `array` | — |
| `kind` | `"map"` | — |
## `MatchArm`
Type: `object`.
Required: `pattern`, `value`.
| name | type-or-$ref | description |
|---|---|---|
| `pattern` | [`#/$defs/Pattern`](#pattern) | — |
| `value` | [`#/$defs/Term`](#term) | — |
## `MatchTerm`
Type: `object`.
Required: `kind`, `subject`, `arms`.
| name | type-or-$ref | description |
|---|---|---|
| `arms` | `array` | — |
| `kind` | `"match"` | — |
| `subject` | [`#/$defs/Term`](#term) | — |
## `NaryFormula`
Type: `object`.
Required: `kind`, `items`.
| name | type-or-$ref | description |
|---|---|---|
| `items` | `array` | — |
| `kind` | enum (2) | — |
## `Node`
Definition `Node`.
## `NodeCommon`
Type: `object`.
Required: `kind`, `id`, `package`, `contentHash`.
| name | type-or-$ref | description |
|---|---|---|
| `anchors` | `array` | — |
| `annotations` | [`#/$defs/JsonObject`](#jsonobject) | — |
| `contentHash` | [`#/$defs/Digest`](#digest) | — |
| `id` | [`#/$defs/StableId`](#stableid) | — |
| `kind` | `string` | — |
| `labels` | `array` | — |
| `package` | [`#/$defs/StableId`](#stableid) | — |
| `provenance` | `array` | — |
| `sourceSpan` | [`#/$defs/SourceSpan`](#sourcespan) | — |
## `NodeCommonInput`
Type: `object`.
Required: `kind`, `id`, `package`.
| name | type-or-$ref | description |
|---|---|---|
| `anchors` | `array` | — |
| `annotations` | [`#/$defs/JsonObject`](#jsonobject) | — |
| `contentHash` | [`#/$defs/Digest`](#digest) | — |
| `id` | [`#/$defs/StableId`](#stableid) | — |
| `kind` | `string` | — |
| `labels` | `array` | — |
| `package` | [`#/$defs/StableId`](#stableid) | — |
| `provenance` | `array` | — |
| `sourceSpan` | [`#/$defs/SourceSpan`](#sourcespan) | — |
## `NormTemplate`
Definition `NormTemplate`.
## `NormTemplateRef`
Type: `object`.
Required: `kind`, `id`.
| name | type-or-$ref | description |
|---|---|---|
| `id` | [`#/$defs/StableId`](#stableid) | — |
| `kind` | `"norm_template_ref"` | — |
## `PackageRef`
Type: `object`.
Required: `name`, `version`, `namespace`, `semanticHash`.
| name | type-or-$ref | description |
|---|---|---|
| `labels` | `array` | The human-readable name of the package: the act or code it formalizes. A package is not a node, so the shared node `labels` did not apply to it, and there was nothing to name the package with. The field is optional and presentational: outside the semantic hash (`labels` stays in RECURSIVE_EXCLUDED_KEYS), inside the canonical bytes — i.e. it changes the package's contentHash but cannot change any inference. |
| `name` | [`#/$defs/QName`](#qname) | — |
| `namespace` | `string` | — |
| `semanticHash` | [`#/$defs/Digest`](#digest) | — |
| `version` | `string` | — |
## `Pattern`
Definition `Pattern`.
## `PatternField`
Type: `object`.
Required: `name`, `pattern`.
| name | type-or-$ref | description |
|---|---|---|
| `name` | `string` | — |
| `pattern` | [`#/$defs/Pattern`](#pattern) | — |
## `PowerPayload`
Type: `object`.
Required: `kind`, `holder`, `exercise`, `effect`, `validWhen`.
| name | type-or-$ref | description |
|---|---|---|
| `effect` | [`#/$defs/LegalEffect`](#legaleffect) | — |
| `exercise` | [`#/$defs/Term`](#term) | — |
| `holder` | [`#/$defs/Term`](#term) | — |
| `kind` | `"power"` | — |
| `over` | [`#/$defs/Term`](#term) | — |
| `subject` | `array` | The subject matter of a power: a finite enumeration of what the delegate may regulate, using identifiers from the dictionary of the authorizing act itself. Finiteness is essential: inferring that one norm covers another in general is prohibited, and subject-matter competence is checked by membership of the declared item in the declared set, not by inference from the text. Absence of the field means the subject matter is not declared and there is nothing to check it against (LDC-W5302) — this is not "any subject matter". |
| `validWhen` | [`#/$defs/Formula`](#formula) | — |
| `window` | [`#/$defs/Term`](#term) | — |
## `PriorityRule`
Definition `PriorityRule`.
## `ProvenanceEdge`
A normalized edge of the provenance graph. `attributes` profiles: sugar — `{declaration: "definition", mode: necessary|exact, part: sufficient|necessary, alternative?: Integer}` on a rule and a constraint, where `target` is the concept's symbol; A3 decision tables — `{decisionKind, hitPolicy, rows}`; fact groups — `{factGroup, visibility?}`.
Type: `object`.
Required: `relation`, `target`.
| name | type-or-$ref | description |
|---|---|---|
| `at` | [`#/$defs/InstantString`](#instantstring) | — |
| `attributes` | [`#/$defs/JsonObject`](#jsonobject) | — |
| `relation` | enum (6) | — |
| `target` | [`#/$defs/StableId`](#stableid) | — |
## `Publication`
Definition `Publication`.
## `QName`
Type: `string`.
## `QuantifiedFormula`
Type: `object`.
Required: `kind`, `quantifier`, `variable`, `domain`, `body`.
| name | type-or-$ref | description |
|---|---|---|
| `body` | [`#/$defs/Formula`](#formula) | — |
| `domain` | [`#/$defs/Term`](#term) | — |
| `kind` | `"quantified"` | — |
| `quantifier` | enum (2) | — |
| `variable` | [`#/$defs/Variable`](#variable) | — |
## `Query`
Definition `Query`.
## `RecordTerm`
Type: `object`.
Required: `kind`, `type`, `fields`.
| name | type-or-$ref | description |
|---|---|---|
| `fields` | `object` | — |
| `kind` | `"record"` | — |
| `type` | [`#/$defs/TypeRef`](#typeref) | — |
## `RecurringGoal`
`over` is the interval of the entire recurrence; it is also the schedule's anchor and its finiteness bound. The optional `activation` is the internal activation formula, the only one that sees the `occurrence.*` meta-terms; the schedule's overall external activation lives entirely in the `activation` field of `DutyPayload`.
Type: `object`.
Required: `kind`, `schedule`, `over`, `goal`.
| name | type-or-$ref | description |
|---|---|---|
| `activation` | [`#/$defs/Formula`](#formula) | — |
| `goal` | [`#/$defs/Goal`](#goal) | — |
| `kind` | `"recurring"` | — |
| `over` | [`#/$defs/Term`](#term) | — |
| `schedule` | [`#/$defs/Term`](#term) | — |
## `RefTerm`
Type: `object`.
Required: `kind`, `id`.
| name | type-or-$ref | description |
|---|---|---|
| `id` | [`#/$defs/StableId`](#stableid) | — |
| `kind` | enum (2) | — |
## `Revision`
Definition `Revision`.
## `Entrenchment`
Definition `Entrenchment`.
## `RevisionOperation`
Definition `RevisionOperation`.
## `Rule`
Definition `Rule`.
## `SetTerm`
Type: `object`.
Required: `kind`, `items`.
| name | type-or-$ref | description |
|---|---|---|
| `items` | `array` | — |
| `kind` | `"set"` | — |
## `SourceEdition`
Definition `SourceEdition`.
## `SourceSpan`
Type: `object`.
Required: `artifact`, `start`, `end`.
| name | type-or-$ref | description |
|---|---|---|
| `artifact` | [`#/$defs/StableId`](#stableid) | — |
| `column` | `integer` | — |
| `end` | `integer` | — |
| `line` | `integer` | — |
| `start` | `integer` | — |
## `SourceWork`
Definition `SourceWork`.
## `StableId`
Type: `string`.
## `StatusFormula`
Type: `object`.
Required: `kind`, `status`, `formula`.
| name | type-or-$ref | description |
|---|---|---|
| `formula` | [`#/$defs/Literal`](#literal) | — |
| `kind` | `"status"` | — |
| `policy` | [`#/$defs/StableId`](#stableid) | — |
| `status` | enum (9) | — |
## `Stratum`
Type: `object`.
Required: `index`, `rules`.
| name | type-or-$ref | description |
|---|---|---|
| `index` | `integer` | — |
| `rules` | `array` | — |
| `strictSccs` | `array` | — |
## `SupportEdge`
Definition `SupportEdge`.
## `SymbolDecl`
Definition `SymbolDecl`.
## `TemporalFormula`
Type: `object`.
Required: `kind`, `op`, `left`, `right`.
| name | type-or-$ref | description |
|---|---|---|
| `kind` | `"temporal"` | — |
| `left` | [`#/$defs/Term`](#term) | — |
| `op` | enum (7) | — |
| `right` | [`#/$defs/Term`](#term) | — |
## `TemporalInterval`
Type: `object`.
Required: `startInclusive`, `endInclusive`.
| name | type-or-$ref | description |
|---|---|---|
| `axis` | `string` | — |
| `end` | oneOf (3) | — |
| `endInclusive` | `boolean` | — |
| `start` | oneOf (3) | — |
| `startInclusive` | `boolean` | — |
## `Term`
Definition `Term`.
## `TypeDecl`
Definition `TypeDecl`.
## `VariantCaseField`
Type: `object`.
Required: `name`, `type`.
| name | type-or-$ref | description |
|---|---|---|
| `constraint` | [`#/$defs/Formula`](#formula) | — |
| `name` | `string` | — |
| `type` | [`#/$defs/TypeRef`](#typeref) | — |
## `VariantCase`
Type: `object`.
Required: `name`, `constructor`.
| name | type-or-$ref | description |
|---|---|---|
| `constructor` | [`#/$defs/StableId`](#stableid) | — |
| `fields` | `array` | — |
| `name` | `string` | — |
## `ParameterDecl`
The 0.2 form of a symbol parameter: id is the parameter's StableId (source precedence: explicit @id, suffix from role, suffix from name); name is the argument name, non-semantic metadata outside the semantic hash; role is an optional semantic role (SHOULD for pub; MUST together with @id for public declarations in core-auditable and ontology packages); array order and length preserve the validity of positional keys; labels are the labels of the parameter itself, non-empty only.
Type: `object`.
Required: `id`, `name`, `type`.
| name | type-or-$ref | description |
|---|---|---|
| `id` | [`#/$defs/StableId`](#stableid) | — |
| `labels` | `array` | Labels of the parameter itself: it has its own carrier, not the owning node. A non-empty list only (minItems 1): an empty one is not serialized, and an unlabeled parameter keeps the previous bytes. Outside the semantic, theory and artifact hashes (recursively), inside the owning node's content hash. |
| `name` | `string` | — |
| `optional` | `boolean` | — |
| `role` | [`#/$defs/StableId`](#stableid) | — |
| `type` | [`#/$defs/TypeRef`](#typeref) | — |
## `TypeRef`
Type: `object`.
Required: `name`.
| name | type-or-$ref | description |
|---|---|---|
| `args` | `array` | — |
| `name` | [`#/$defs/StableId`](#stableid) | — |
| `optional` | `boolean` | — |
## `UnaryTerm`
Type: `object`.
Required: `kind`, `op`, `operand`.
| name | type-or-$ref | description |
|---|---|---|
| `kind` | `"unary"` | — |
| `op` | `string` | — |
| `operand` | [`#/$defs/Term`](#term) | — |
## `ValuePattern`
Type: `object`.
Required: `kind`, `value`.
| name | type-or-$ref | description |
|---|---|---|
| `kind` | `"value"` | — |
| `value` | oneOf (2) | — |
## `WildcardTerm`
The existential argument of a rule-body literal: "there is some value". It does not bind, it is not part of the substitution; it is legal only as an argument of a positive body literal, otherwise a static error is reported.
Type: `object`.
Required: `kind`.
| name | type-or-$ref | description |
|---|---|---|
| `kind` | `"wildcard"` | — |
## `VarTerm`
Type: `object`.
Required: `kind`, `var`.
| name | type-or-$ref | description |
|---|---|---|
| `kind` | `"var"` | — |
| `var` | `string` | — |
## `Variable`
Type: `object`.
Required: `id`, `type`.
| name | type-or-$ref | description |
|---|---|---|
| `domain` | [`#/$defs/Term`](#term) | — |
| `id` | `string` | — |
| `type` | [`#/$defs/TypeRef`](#typeref) | — |
## `VariantTerm`
A value of an algebraic type: Result/Option and a user enum payload. Unlike VariantPattern this is a term, not a pattern.
Type: `object`.
Required: `kind`, `constructor`, `fields`.
| name | type-or-$ref | description |
|---|---|---|
| `kind` | `"variant_value"` | — |
| `constructor` | [`#/$defs/StableId`](#stableid) | — |
| `fields` | `array` | — |
## `VariantPattern`
Type: `object`.
Required: `kind`, `constructor`, `fields`.
| name | type-or-$ref | description |
|---|---|---|
| `constructor` | [`#/$defs/StableId`](#stableid) | — |
| `fields` | `array` | — |
| `kind` | `"variant"` | — |
## `WildcardPattern`
Type: `object`.
Required: `kind`.
| name | type-or-$ref | description |
|---|---|---|
| `kind` | `"wildcard"` | — |
## `FactorVocabulary`
Definition `FactorVocabulary`.
## `PrecedentDecl`
Definition `PrecedentDecl`.
## `UnitDecl`
Simple: an atom with an exact rational scale and a tuple of the seven SI base units; derived unfolds into atoms; alias is a second name. Sugar is normalized before hashing.
## `RoundingFormula`
The only core formula whose support is taken from the proof. `I ⊆ C` gives TRUE_ONLY, `I ∩ C = ∅` gives FALSE_ONLY, and an intersection of several cells gives NEITHER due to insufficient bounds.
Type: `object`.
Required: `kind`, `bounds`, `value`, `precision`, `mode`.
| name | type-or-$ref | description |
|---|---|---|
| `bounds` | [`#/$defs/Term`](#term) | — |
| `kind` | `"rounding"` | — |
| `mode` | enum (7) | — |
| `precision` | `integer` | — |
| `sourceSpan` | — | — |
| `value` | [`#/$defs/Term`](#term) | — |