docs← Back to article

Markdown for LLMs

Arxo population impact report 0.1

The source Markdown for this article. Copy it into your assistant or download it as a text file.

Download this articlePlain text ↗
# Arxo population impact report 0.1

Report of the population-impact comparison. reportCore is deterministic and reproducible: reportCoreHash is the sha256 of its canonical bytes; receipt is the execution receipt outside the core and the hash. Row classes are a mechanical projection of closed evaluation documents by a fixed classification matrix, not a legal answer; changing the matrix requires a new schemaVersion.

## Versions

No accepted version marker is declared.

## Top-level fields

| name | type-or-$ref | required | description |
|---|---|---|---|
| `reportCore` | [`#/$defs/ReportCore`](#reportcore) | yes | — |
| `reportCoreHash` | [`#/$defs/Digest`](#digest) | yes | — |
| `receipt` | [`#/$defs/Receipt`](#receipt) | yes | — |

## Enumerations

| location | values |
|---|---|
| `$defs/RowClass` | `"VALUE_ON_BOTH"`, `"VALUE_BEFORE_ONLY"`, `"VALUE_AFTER_ONLY"`, `"NO_COMPARABLE_VALUE"`, `"EXCLUDED"`, `"FAILED"` |
| `$defs/ReportCore/properties/schemaVersion` | `"law.population.impact-report/0.1"`, `"law.population.impact-report/0.2"` |
| `$defs/ReportCore/properties/proofMode` | `"omitted"` |
| `$defs/ReportCore/allOf/0/if/properties/schemaVersion` | `"law.population.impact-report/0.2"` |
| `$defs/ReportCore/if/properties/verdict/properties/verdict` | `"INCOMPLETE"` |
| `$defs/Row/properties/unrankedReason` | `"RANK_NO_VALUE"`, `"RANK_SIZE"`, `"RANK_FAILED"` |
| `$defs/Row/allOf/0/if/properties/class` | `"EXCLUDED"` |
| `$defs/Row/allOf/1/if/properties/class` | `"VALUE_ON_BOTH"` |
| `$defs/Side/properties/state` | `"VALUE"`, `"NO_VALUE"`, `"EXCLUDED"`, `"FAILED"` |
| `$defs/Side/allOf/0/if/properties/state` | `"FAILED"` |
| `$defs/Side/allOf/1/if/properties/state` | `"VALUE"` |
| `$defs/Side/allOf/2/if/properties/state` | `"EXCLUDED"` |
| `$defs/Verdict/properties/verdict` | `"INCOMPLETE"`, `"CHANGE"`, `"NO_COMPARABLE_WEIGHT"`, `"NO_WEIGHTED_CHANGE"` |
| `$defs/Verdict/properties/exitCode` | `4`, `1`, `3`, `0` |
| `$defs/Verdict/allOf/0/if/properties/verdict` | `"INCOMPLETE"` |
| `$defs/Verdict/allOf/0/then/properties/exitCode` | `4` |
| `$defs/Verdict/allOf/1/if/properties/verdict` | `"CHANGE"` |
| `$defs/Verdict/allOf/1/then/properties/exitCode` | `1` |
| `$defs/Verdict/allOf/2/if/properties/verdict` | `"NO_COMPARABLE_WEIGHT"` |
| `$defs/Verdict/allOf/2/then/properties/exitCode` | `3` |
| `$defs/Verdict/allOf/3/if/properties/verdict` | `"NO_WEIGHTED_CHANGE"` |
| `$defs/Verdict/allOf/3/then/properties/exitCode` | `0` |
| `$defs/SemanticDiff/properties/entries/items/properties/kind` | `"added"`, `"removed"`, `"changed"`, `"renamed"`, `"presentation"` |
| `$defs/Receipt/properties/implementation` | `"lawref"`, `"lawc"` |
| `$defs/Receipt/properties/schemaVersions/properties/bank` | `"law.population.bank/0.1"`, `"law.population.bank/0.2"` |
| `$defs/Receipt/properties/schemaVersions/properties/report` | `"law.population.impact-report/0.1"`, `"law.population.impact-report/0.2"` |
| `$defs/Receipt/properties/storeMode` | `"full"`, `"none"` |
| `$defs/Receipt/properties/failures/items/properties/side` | `"before"`, `"after"` |
| `$defs/AuxState` | `"VALUE"`, `"NO_VALUE"`, `"EXCLUDED"`, `"FAILED"` |
| `$defs/Distribution/properties/basis` | `"before"` |

## Raw schema

[`https://law.arxo.io/schema/population-impact-report.schema.json`](https://law.arxo.io/schema/population-impact-report.schema.json)

## `Digest`

Type: `string`.

## `Decimal`

Canonical decimal string, not less than zero.

Type: `string`.

## `SignedDecimal`

Canonical signed decimal string, without negative zero.

Type: `string`.

## `Tally`

Type: `object`.
Required: `rows`, `weight`.

| name | type-or-$ref | description |
|---|---|---|
| `rows` | `integer` | — |
| `weight` | [`#/$defs/Decimal`](#decimal) | — |

## `RowClass`

Values: `"VALUE_ON_BOTH"`, `"VALUE_BEFORE_ONLY"`, `"VALUE_AFTER_ONLY"`, `"NO_COMPARABLE_VALUE"`, `"EXCLUDED"`, `"FAILED"`.

## `ReportCore`

Type: `object`.
Required: `schemaVersion`, `bank`, `worlds`, `measure`, `rows`, `coverage`, `verdict`, `semdiff`.

| name | type-or-$ref | description |
|---|---|---|
| `schemaVersion` | enum (2) | — |
| `proofMode` | `"omitted"` | Proof-omitted mode (`--no-proof`): the documents' proof graph was neither encoded nor hashed; sides have no documentRef, the record address is outcomeHash. The field is absent in full mode. |
| `bank` | [`#/$defs/BankSection`](#banksection) | — |
| `worlds` | `object` | — |
| `measure` | [`population-bank.schema.json#/$defs/Measure`](/protocols/schemas/population-bank/#measure) | — |
| `rows` | `array` | Rows in the byte order of rowId of the canonical form. |
| `coverage` | [`#/$defs/Coverage`](#coverage) | — |
| `aggregate` | [`#/$defs/Aggregate`](#aggregate) | — |
| `verdict` | [`#/$defs/Verdict`](#verdict) | — |
| `semdiff` | [`#/$defs/SemanticDiff`](#semanticdiff) | — |
| `distribution` | [`#/$defs/Distribution`](#distribution) | — |

## `BankSection`

Type: `object`.
Required: `bankId`, `contentHash`, `rows`, `weightTotal`, `legalTime`.

| name | type-or-$ref | description |
|---|---|---|
| `bankId` | [`population-bank.schema.json#/$defs/Name`](/protocols/schemas/population-bank/#name) | — |
| `contentHash` | [`#/$defs/Digest`](#digest) | — |
| `rows` | `integer` | — |
| `weightTotal` | [`#/$defs/Decimal`](#decimal) | — |
| `legalTime` | `object` | Distribution of legalTime across row cases: minimum, maximum, and the number of distinct values; null means no row supplied a date. |

## `Row`

Type: `object`.
Required: `rowId`, `case`, `weight`, `legalTime`, `class`, `parameterGap`, `before`, `after`.

| name | type-or-$ref | description |
|---|---|---|
| `rowId` | [`population-bank.schema.json#/$defs/Name`](/protocols/schemas/population-bank/#name) | — |
| `case` | [`population-bank.schema.json#/$defs/CaseName`](/protocols/schemas/population-bank/#casename) | — |
| `weight` | [`#/$defs/Decimal`](#decimal) | — |
| `legalTime` | `string` or `null` | — |
| `class` | [`#/$defs/RowClass`](#rowclass) | — |
| `excludedKey` | `string` | Key of the EXCLUDED class: side and state (when both sides are excluded — before). |
| `parameterGap` | `boolean` | MISSING_PARAMETER_VALUE in the document of at least one side. |
| `outcomeUnchanged` | `boolean` | The sides' outcomeHash matched; present only when both sides have a document. Not the same as the aggregate unchanged tally. |
| `rank` | [`#/$defs/Side`](#side) | State of the auxiliary rank query on the basis side: a separate ask document with its own documentRef, classified by the same row matrix, value is Money in the currency of distribution.rank. |
| `size` | `object` | — |
| `group` | `integer` | Group number from 1 to the group count for a rankable row; absent for an unrankable one. |
| `unrankedReason` | enum (3) | — |
| `delta` | [`#/$defs/SignedDecimal`](#signeddecimal) | after − before; present only for VALUE_ON_BOTH. |
| `before` | [`#/$defs/Side`](#side) | — |
| `after` | [`#/$defs/Side`](#side) | — |

## `Side`

Type: `object`.
Required: `state`.

| name | type-or-$ref | description |
|---|---|---|
| `state` | enum (4) | — |
| `excluded` | `string` | <status>[/<code of the first blocking issue>], COMPUTED/<code>, AMBIGUOUS_MEASURE, MEASURE_KIND (element is not Money), or MEASURE_CURRENCY (different currency). |
| `evaluationStatus` | [`evaluation.schema.json#/$defs/EvaluationStatus`](/protocols/schemas/evaluation/#evaluationstatus) | — |
| `elements` | `integer` | Number of quantity elements in the result (0 or 1 for a term). |
| `value` | [`#/$defs/SignedDecimal`](#signeddecimal) | Sum of the side's Money in the measure's currency. |
| `blockingIssues` | `array` | Codes of the document's error- and fatal-level issues, in document order. |
| `outcomeHash` | [`#/$defs/Digest`](#digest) | — |
| `documentRef` | [`#/$defs/Digest`](#digest) | — |
| `error` | `object` | — |

## `Coverage`

Type: `object`.
Required: `rows`, `weight`, `classes`, `excluded`, `parameterGap`.

| name | type-or-$ref | description |
|---|---|---|
| `rows` | `integer` | — |
| `weight` | [`#/$defs/Decimal`](#decimal) | — |
| `classes` | [`#/$defs/ClassTallies`](#classtallies) | — |
| `excluded` | `object` | EXCLUDED rows keyed by excludedKey. |
| `parameterGap` | [`#/$defs/Tally`](#tally) | — |

## `Aggregate`

Sums over VALUE_ON_BOTH rows; winners/losers/unchanged are by the sign of the delta, unchanged being VALUE_ON_BOTH rows with a zero delta (not the same as the row's outcomeUnchanged flag); comparableWeight is the weight of VALUE_ON_BOTH.

Type: `object`.
Required: `comparableWeight`, `weightedSignedDelta`, `weightedAbsoluteDelta`, `winners`, `losers`, `unchanged`.

| name | type-or-$ref | description |
|---|---|---|
| `comparableWeight` | [`#/$defs/Decimal`](#decimal) | — |
| `weightedSignedDelta` | [`#/$defs/SignedDecimal`](#signeddecimal) | — |
| `weightedAbsoluteDelta` | [`#/$defs/Decimal`](#decimal) | — |
| `winners` | [`#/$defs/Tally`](#tally) | — |
| `losers` | [`#/$defs/Tally`](#tally) | — |
| `unchanged` | [`#/$defs/Tally`](#tally) | — |

## `Verdict`

Verdict precedence: 4, then 1, then 3, then 0 (refusal 2 is not printed in the report).

Type: `object`.
Required: `verdict`, `exitCode`.

| name | type-or-$ref | description |
|---|---|---|
| `verdict` | enum (4) | — |
| `exitCode` | enum (4) | — |

## `SemanticDiff`

Semantic difference of the sides' linked worlds: which rules, norms, and texts were added, removed, changed, or renamed.

Type: `object`.
Required: `entries`, `semanticChange`.

| name | type-or-$ref | description |
|---|---|---|
| `entries` | `array` | — |
| `semanticChange` | `boolean` | — |

## `Receipt`

Execution receipt: outside the core and the hash, mandatory. Completion order, chunk size, and worker count do not affect the core.

Type: `object`.
Required: `implementation`, `build`, `schemaVersions`, `workers`, `startedAt`, `finishedAt`.

| name | type-or-$ref | description |
|---|---|---|
| `implementation` | enum (2) | — |
| `build` | `string` | — |
| `schemaVersions` | `object` | — |
| `workers` | `integer` | — |
| `storeMode` | enum (2) | Run storage mode: full means documents are recorded by documentRef; none means only addresses are kept, and the document is reproduced by replaying the population from the bank's pins. Outside the core and the hash. |
| `startedAt` | [`evaluation.schema.json#/$defs/Instant`](/protocols/schemas/evaluation/#instant) | — |
| `failures` | `array` | Details of FAILED sides, outside the core: compiler diagnostic text, system error, or crash. In reportCore, a FAILED side carries only code and a fixed message keyed by the code. The field is present only when a FAILED occurred. |
| `finishedAt` | [`evaluation.schema.json#/$defs/Instant`](/protocols/schemas/evaluation/#instant) | — |

## `ClassTallies`

Type: `object`.
Required: `VALUE_ON_BOTH`, `VALUE_BEFORE_ONLY`, `VALUE_AFTER_ONLY`, `NO_COMPARABLE_VALUE`, `EXCLUDED`, `FAILED`.

| name | type-or-$ref | description |
|---|---|---|
| `VALUE_ON_BOTH` | [`#/$defs/Tally`](#tally) | — |
| `VALUE_BEFORE_ONLY` | [`#/$defs/Tally`](#tally) | — |
| `VALUE_AFTER_ONLY` | [`#/$defs/Tally`](#tally) | — |
| `NO_COMPARABLE_VALUE` | [`#/$defs/Tally`](#tally) | — |
| `EXCLUDED` | [`#/$defs/Tally`](#tally) | — |
| `FAILED` | [`#/$defs/Tally`](#tally) | — |

## `AuxState`

Values: `"VALUE"`, `"NO_VALUE"`, `"EXCLUDED"`, `"FAILED"`.

## `SizeSide`

State of the size.adults / size.children query: the same document projection as Side, but value is an integer of zero or more.

Type: `object`.
Required: `state`.

| name | type-or-$ref | description |
|---|---|---|
| `state` | [`#/$defs/AuxState`](#auxstate) | — |
| `evaluationStatus` | [`evaluation.schema.json#/$defs/EvaluationStatus`](/protocols/schemas/evaluation/#evaluationstatus) | — |
| `blockingIssues` | `array` | — |
| `outcomeHash` | [`#/$defs/Digest`](#digest) | — |
| `excluded` | `string` | — |
| `value` | `integer` | — |
| `documentRef` | [`#/$defs/Digest`](#digest) | — |
| `error` | `object` | — |

## `Rational`

Exact rational pair of reduced integers: denominator above zero.

Type: `object`.
Required: `numerator`, `denominator`.

| name | type-or-$ref | description |
|---|---|---|
| `numerator` | `string` | — |
| `denominator` | `string` | — |

## `Group`

Distribution group: aggregate sums run over the group's VALUE_ON_BOTH rows; no sums when INCOMPLETE.

Type: `object`.
Required: `index`, `rows`, `weight`, `bounds`, `classes`.

| name | type-or-$ref | description |
|---|---|---|
| `index` | `integer` | — |
| `rows` | `integer` | — |
| `weight` | [`#/$defs/Decimal`](#decimal) | — |
| `bounds` | `object` | — |
| `classes` | [`#/$defs/ClassTallies`](#classtallies) | — |
| `comparableWeight` | [`#/$defs/Decimal`](#decimal) | — |
| `weightedSignedDelta` | [`#/$defs/SignedDecimal`](#signeddecimal) | — |
| `weightedAbsoluteDelta` | [`#/$defs/Decimal`](#decimal) | — |
| `winners` | [`#/$defs/Tally`](#tally) | — |
| `losers` | [`#/$defs/Tally`](#tally) | — |
| `unchanged` | [`#/$defs/Tally`](#tally) | — |
| `meanSignedDelta` | oneOf (2) | — |

## `Distribution`

Income-group distribution section of form 0.2 of the impact comparison.

Type: `object`.
Required: `basis`, `groups`, `scale`, `rankMeasure`, `byGroup`, `unranked`, `ties`.

| name | type-or-$ref | description |
|---|---|---|
| `basis` | `"before"` | — |
| `groups` | `integer` | — |
| `scale` | [`population-bank.schema.json#/$defs/ScalePin`](/protocols/schemas/population-bank/#scalepin) | — |
| `rankMeasure` | `object` | — |
| `byGroup` | `array` | — |
| `unranked` | `object` | — |
| `ties` | `object` | — |