# law serve decision record 0.1 Append-only host record. `recordHash` covers the canonical bytes excluding `recordHash` and timing; `executionReceipt` carries its own receipt hash. Hash verification is performed by the journal reader. ## Versions Accepted `schemaVersion`: `law.serve.decision-record/0.1`. ## Top-level fields | name | type-or-$ref | required | description | |---|---|---|---| | `schemaVersion` | `"law.serve.decision-record/0.1"` | yes | — | | `decisionId` | `string` | yes | — | | `sequence` | `integer` | yes | — | | `attempt` | `integer` | yes | — | | `idempotencyKey` | `string` | no | — | | `world` | `object` | yes | — | | `engine` | `object` | yes | — | | `request` | `object` | yes | — | | `outcome` | oneOf (2) | yes | — | | `executionReceipt` | [`evaluation.schema.json#/$defs/ExecutionReceipt`](/protocols/schemas/evaluation/#executionreceipt) | yes | — | | `recordHash` | [`#/$defs/Digest`](#digest) | yes | — | | `timing` | `object` | yes | — | ## Enumerations | location | values | |---|---| | `properties/schemaVersion` | `"law.serve.decision-record/0.1"` | | `properties/engine/properties/host` | `"law-serve-core"` | | `$defs/ParsedHttpEnvelope/properties/proof` | `"full"`, `"omit"` | | `$defs/CheckFileEnvelope/properties/source` | `"check-file"` | | `$defs/DocumentOutcome/properties/kind` | `"document"` | | `$defs/DocumentOutcome/properties/proofMode` | `"full"`, `"omitted"` | | `$defs/DocumentOutcome/oneOf/0/properties/proofMode` | `"full"` | | `$defs/DocumentOutcome/oneOf/1/properties/proofMode` | `"omitted"` | | `$defs/RefusalOutcome/properties/kind` | `"refusal"` | ## Raw schema [`https://law.arxo.io/schema/decision-record.schema.json`](https://law.arxo.io/schema/decision-record.schema.json) ## `Digest` Type: `string`. ## `ParsedHttpEnvelope` The exact parsed HTTP request, including a question that may later be refused by preparation. Type: `object`. Required: `pin`, `case`. | name | type-or-$ref | description | |---|---|---| | `pin` | [`serve-envelope.schema.json#/$defs/RequestPin`](/protocols/schemas/serve-envelope/#requestpin) | — | | `case` | `string` | — | | `query` | `object` | — | | `evaluate` | `string` | — | | `queryId` | `string` | — | | `proof` | enum (2) | — | ## `CheckFileEnvelope` Type: `object`. Required: `source`, `row`, `case`, `templateHash`, `caseSource`, `input`, `queryId`, `question`. | name | type-or-$ref | description | |---|---|---| | `source` | `"check-file"` | — | | `row` | `integer` | — | | `case` | `string` | — | | `templateHash` | [`#/$defs/Digest`](#digest) | — | | `caseSource` | `string` or `null` | — | | `input` | `object` | — | | `queryId` | `string` | — | | `question` | `object` | — | ## `DocumentOutcome` Type: `object`. Required: `kind`, `proofMode`, `outcomeHash`, `caseHash`, `results`. | name | type-or-$ref | description | |---|---|---| | `kind` | `"document"` | — | | `proofMode` | enum (2) | — | | `outcomeHash` | [`#/$defs/Digest`](#digest) | — | | `resultHash` | [`#/$defs/Digest`](#digest) | — | | `caseHash` | [`#/$defs/Digest`](#digest) | — | | `legalTime` | [`evaluation.schema.json#/$defs/LegalTime`](/protocols/schemas/evaluation/#legaltime) | — | | `results` | `array` | — | ## `RefusalOutcome` Type: `object`. Required: `kind`, `error`. | name | type-or-$ref | description | |---|---|---| | `kind` | `"refusal"` | — | | `error` | `object` | — | | `body` | `object` | Optional, additive: the refusal envelope exactly as the service answered it, present when the engine or preparation supplied its own body — a typed request refusal {"error": …} or the separate {"hostError": …} channel. Absent for the host's own refusals, whose envelope is {"error": {code, message}}. Replay must reproduce it verbatim. |