docs← Back to article

Markdown for LLMs

Arxo canonical law.lock 0.3

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

Download this articlePlain text ↗
# Arxo canonical law.lock 0.3

Reference page for the `lockfile.schema.json` JSON schema.

## Versions

No accepted version marker is declared.

## Top-level fields

| name | type-or-$ref | required | description |
|---|---|---|---|
| `lockVersion` | enum (3) | yes | — |
| `languageSemantics` | `string` | yes | — |
| `root` | [`#/$defs/LockedPackageRef`](#lockedpackageref) | yes | — |
| `packages` | `array` | yes | — |
| `dependencyEdges` | `array` | yes | — |
| `editionsAsPresented` | [`evaluation.schema.json#/$defs/LegalTime`](/protocols/schemas/evaluation/#legaltime) | no | Root `[editions] as_presented` of a dated world. Included in the resolution hash; case preparation passes it as the transport field `editions_as_presented`. |
| `resolutionHash` | [`#/$defs/Digest`](#digest) | yes | — |
| `resources` | `array` | no | — |
| `expansions` | `array` | no | Pinned expansion-definition packages. A compile-time dependency of the consumer: included in the resolution hash, never becomes a semantic import of the compiled form. |
| `semanticLayer` | enum (4) | no | Semantic layer of the build. The field is named `semanticLayer`, not `layer`, because the short name is taken by the package profile of ontological packages. The layer is a ceiling: declaring higher than the inferred value is allowed, lower is rejected (LDC-E8101). In the lockfile it is the EFFECTIVE build layer: the maximum over the root and all pinned dependencies. |
| `profile` | `object` | no | Pinned canon profile: `packages` is the full expansion of profile B; the resolution hash covers the block. |

## Enumerations

| location | values |
|---|---|
| `properties/lockVersion` | `"0.1"`, `"0.2"`, `"0.3"` |
| `properties/semanticLayer` | `"L0"`, `"L1"`, `"L2"`, `"L3"` |
| `allOf/0/if/properties/lockVersion` | `"0.2"` |
| `allOf/1/if/properties/lockVersion` | `"0.3"` |
| `$defs/LockedExpansion/properties/expansionProfile` | `"law.expansion/0.1"`, `"law.expansion/0.2"` |
| `$defs/LockedResource/properties/kind` | `"parameter-dataset"`, `"decision-table"`, `"label-overlay"`, `"calendar-dataset"`, `"document"`, `"case-snapshot"` |
| `$defs/LockedResource/properties/capability` | `"compile_time"`, `"presentation"`, `"law.calendar/0.1"`, `"evidence"`, `"law.case-export/0.1"` |

## Raw schema

[`https://law.arxo.io/schema/lockfile.schema.json`](https://law.arxo.io/schema/lockfile.schema.json)

## `LockedExpansion`

Type: `object`.
Required: `consumer`, `alias`, `name`, `version`, `entry`, `expansionProfile`, `contentHash`.

| name | type-or-$ref | description |
|---|---|---|
| `consumer` | [`#/$defs/PackageName`](#packagename) | — |
| `alias` | `string` | — |
| `name` | [`#/$defs/PackageName`](#packagename) | — |
| `version` | [`#/$defs/Version`](#version) | — |
| `entry` | `string` | — |
| `expansionProfile` | enum (2) | — |
| `contentHash` | [`#/$defs/Digest`](#digest) | — |

## `Digest`

Type: `string`.

## `PackageName`

Type: `string`.

## `Version`

Type: `string`.

## `Feature`

Type: `string`.

## `LockedResource`

Type: `object`.
Required: `id`, `kind`, `path`, `contentHash`, `capability`.

| name | type-or-$ref | description |
|---|---|---|
| `id` | `string` | — |
| `kind` | enum (6) | — |
| `path` | `string` | — |
| `contentHash` | [`#/$defs/Digest`](#digest) | — |
| `capability` | enum (5) | Resource roles. A3 resources participate in compilation (compile_time); label overlays are a presentation layer outside the compiled form (presentation); calendar datasets are resolved at execution time (calendar form); case documents are evidence support whose bytes are checked against content_hash (evidence). |

## `LockedPackageRef`

Type: `object`.
Required: `name`, `version`, `namespace`, `contentHash`.

| name | type-or-$ref | description |
|---|---|---|
| `name` | [`#/$defs/PackageName`](#packagename) | — |
| `version` | [`#/$defs/Version`](#version) | — |
| `namespace` | `string` | Package namespace, a URN. The `format` keyword of Draft 2020-12 is only an annotation, so the shape is enforced by `pattern`. |
| `contentHash` | [`#/$defs/Digest`](#digest) | — |

## `LockedPackage`

Type: `object`.
Required: `name`, `version`, `namespace`, `contentHash`, `features`.

| name | type-or-$ref | description |
|---|---|---|
| `name` | [`#/$defs/PackageName`](#packagename) | — |
| `version` | [`#/$defs/Version`](#version) | — |
| `namespace` | `string` | Package namespace, a URN. The `format` keyword of Draft 2020-12 is only an annotation, so the shape is enforced by `pattern`. |
| `contentHash` | [`#/$defs/Digest`](#digest) | — |
| `editorSourceMapHash` | [`#/$defs/Digest`](#digest) | Optional editor-only source-map sidecar for this pinned dependency. Its bytes are delivered as deps/<name>.editor-source-map.json and must identify this exact CLIR package before an editor may expose authored locations. |
| `questionCatalogHash` | [`#/$defs/Digest`](#digest) | Optional pinned questions-catalog sidecar, installed as deps/<package>.questions.json for case cards. |
| `taskGuideCatalogHash` | [`#/$defs/Digest`](#digest) | Optional pinned task-guides catalog sidecar, installed as deps/<package>.task-guides.json for task guides of the dependency. Metadata only: it does not affect CLIR or evaluation semantics; the resolution hash covers the pin. |
| `registryId` | `string` | — |
| `resolverUri` | `string` | Where the package was resolved from. `pattern` requires at least a URI scheme; it is not a full URI parser. |
| `features` | `array` | — |
| `signature` | `object` | — |

## `DependencyEdge`

Type: `object`.
Required: `from`, `to`, `requested`, `resolved`, `features`.

| name | type-or-$ref | description |
|---|---|---|
| `from` | [`#/$defs/PackageName`](#packagename) | — |
| `to` | [`#/$defs/PackageName`](#packagename) | — |
| `requested` | [`#/$defs/Version`](#version) | — |
| `resolved` | [`#/$defs/Version`](#version) | — |
| `features` | `array` | — |