Skip to content
docs
Arxo ↗

Arxo normative change set 0.1

For LLMs27 sections

A normative change as an object for the Arxo Change Protocol: pairs of states of packages or case releases (before/after), the dependency world, the commencement regime, the declared intent, and the producer artifacts a change dossier is assembled from. Host-level composition over existing producer runs (impact, impact-editions, goals, comparison, measure); it carries no semantics and is not executed. The same schema reads a reform over corpus packages and a change package of a case project.

Accepted schemaVersion: law.change-set/0.1.

nametype-or-$refrequireddescription
schemaVersion"law.change-set/0.1"yes—
idstringyesStable identifier of the change set (URN).
kindenum (3)yesdraft-amendment: pinned edition against a draft model; edition-change: two dated editions of the same act; case-release: two releases of a case package (change package of a project).
title#/$defs/LocalizedTextyes—
jurisdictionstringno—
legalStatus#/$defs/LegalStatusyesLegal status of the AFTER state, not of the model: a draft is not law.
unitsarrayyes—
world#/$defs/Worldyes—
commencement#/$defs/Commencementno—
intent#/$defs/Intentno—
goalsDeclaredarraynoGoals evaluated on both sides, by StableId.
producersarrayyesArtifacts of existing tools the dossier is assembled from. The dossier builder reads them and never re-executes anything.
composition#/$defs/Compositionno—
coverageProfile#/$defs/CoverageProfileno—
readings#/$defs/Readingsno—
objectionsarrayno—
notesarrayno—
locationvalues
properties/schemaVersion"law.change-set/0.1"
properties/kind"draft-amendment", "edition-change", "case-release"
$defs/LegalStatus"draft", "adopted", "in-force", "superseded"
$defs/StateKind"edition", "draft", "case-release"
$defs/ChangeUnit/properties/subject"package", "case"
$defs/Intent/properties/protectedScope/items/properties/kind"predicate", "subject", "stage", "article"
$defs/ObjectionClass"expert", "approved-criterion", "binding-decision"
$defs/Objection/properties/status"open", "accepted", "rejected", "superseded"
$defs/ProducerTool"impact", "impact-editions", "goals", "differential", "measure", "population-impact", "sources", "scenarios", "package-info", "lockfile", "institutional-dependencies", "delivery-channels", "computations-index", "bank-health", "other"
$defs/ProducerRole"root", "consumer", "step", "end-to-end", "reading", "objections"

https://law.arxo.io/schema/change-set.schema.json

Type: string.

Type: string.

Language tag → text.

Type: object.

Values: "draft", "adopted", "in-force", "superseded".

Values: "edition", "draft", "case-release".

A pinned publication or document: bytes named by hash.

Type: object. Required: file, sha256.

nametype-or-$refdescription
filestring—
labelstring—
urlstring—
sha256string—
sizeBytesinteger—

One side of a unit: a dated edition of a package, a draft model over it, or a case release.

Type: object. Required: kind, label.

nametype-or-$refdescription
kind#/$defs/StateKind—
labelstring—
editionstringEdition identifier inside the package (e.g. TAX_CODE_2025).
editionDate#/$defs/Date—
programHash#/$defs/DigestprogramHash of the executed program, as recorded by the producer.
artifactHash#/$defs/DigestartifactHash of the committed CLIR file, when the state is a corpus package.
lockfileHash#/$defs/Digest—
sourcesarray—
draftUnitsarrayDraft files applied over the base package (kind = draft).
caseReleasestringRelease label of the case package (kind = case-release).

Type: object. Required: subject, before, after.

nametype-or-$refdescription
subjectenum (2)—
packagestringPackage name (subject = package) or case package name (subject = case).
before#/$defs/State—
after#/$defs/State—

Type: object. Required: name, version.

nametype-or-$refdescription
namestring—
versionstring—
contentHash#/$defs/Digest—

Dependency world of the change: the import closure of the root. Anything outside the closure is outside the dossier by construction.

Type: object. Required: closure, boundary.

nametype-or-$refdescription
rootstring—
closurearray—
lockfileHash#/$defs/Digest—
resolutionHash#/$defs/Digest—
boundarystringHuman-readable statement of what the world does not contain.

Transition regime as read from the act: general date and closed exceptions. Transitional provisions themselves are rules of the package, not host logic.

Type: object. Required: general.

nametype-or-$refdescription
general#/$defs/Date—
exceptionsarray—
readingDecisionstringDecision that fixed the reading of the dates and its status.

Scenario outcome as printed by impact (NEITHER, TRUE_ONLY, FALSE_ONLY, BOTH, or a calc outcome).

Type: string.

Declared boundary of the reform: expected outcome changes, goals that must hold, and the area that must not change. Absent in a dossier built without a declaration; then every observed difference is classified observed, never expected.

Type: object. Required: expectedChanges, protectedGoals, protectedScope.

nametype-or-$refdescription
declaredBystring—
declaredOn#/$defs/Date—
expectedChangesarray—
protectedGoalsarray—
protectedScopearray—

Two readings of the same source: the adopted one (the AFTER state of the units) and an alternative built from the same draft; the producer is an impact report between the two AFTER worlds, and the dossier names the scenario classes on which they diverge.

Type: object. Required: adopted, alternative, producer.

nametype-or-$refdescription
adoptedstring—
alternativestring—
basisstring—
producerstringPath of the impact artifact adopted → alternative, as listed in producers (role reading).
objectionsProducerstringPath of the impact artifact adopted → alternative over the objection scenarios only.

expert: a scenario by an expert or a party, no legal force; approved-criterion: adopted by the owner of the formalization as a check; binding-decision: grounded in a court decision or an official clarification. Entering the bank gives a scenario no legal force.

Values: "expert", "approved-criterion", "binding-decision".

Type: object. Required: id, scenario, class, claim, source, filedOn, status, history.

nametype-or-$refdescription
idstring—
scenariostringScenario name in the objections bank (file stem—NNN).
class#/$defs/ObjectionClass—
claimstring—
sourcestring—
filedOn#/$defs/Date—
statusenum (4)—
historyarray—

Values: "impact", "impact-editions", "goals", "differential", "measure", "population-impact", "sources", "scenarios", "package-info", "lockfile", "institutional-dependencies", "delivery-channels", "computations-index", "bank-health", "other".

root: the report about the changed package itself; consumer: the same pair re-run over a package that imports it (section 8); step / end-to-end: legs of a composition of successive changes (section 3, composition).

Values: "root", "consumer", "step", "end-to-end", "reading", "objections".

Type: object. Required: label, from, to, producer.

nametype-or-$refdescription
labelstring—
from#/$defs/Date—
to#/$defs/Date—
producerstringPath of the impact-editions artifact of this leg, as listed in producers.

A chain of successive changes of the same root: every step and the end-to-end pair are separate producers; the dossier reports transient changes (present in a step, absent end-to-end) and interactions.

Type: object. Required: steps, endToEnd.

nametype-or-$refdescription
stepsarray—
endToEnd#/$defs/CompositionLeg—

Type: object. Required: name, predicate, argIndex, values.

nametype-or-$refdescription
namestring—
predicatestringLocal name of the case-input predicate that fixes this axis.
argIndexinteger—
valuesarray—
capintegerInteger axes: values at or above this bound fold into the last declared value.

Finite product of axes read from the scenario bank: which cells of the product at least one scenario fixes. A coverage statement about the bank, not a legal answer.

Type: object. Required: axes.

nametype-or-$refdescription
axesarray—
notestring—

Type: object. Required: tool, path, sha256.

nametype-or-$refdescription
tool#/$defs/ProducerTool—
pathstringPath of the artifact relative to the repository root.
sha256#/$defs/Digestsha256 of the artifact bytes as read by the builder.
schemaVersionstring—
role#/$defs/ProducerRole—
packagestringFor role = consumer: the importing package the artifact is about.
concatarrayPackages added to the world beyond the import closure, as the package’s own test families do (concat in law.toml): a replay, not a dependency world.
labelstring—
notestring—

Documentation for Arxo. Writings — blog.arxo.io.

Anonymous visit counts on stats.arxo.io, no cookies.