Some checks failed
joule-moq-room room service / joule-moq-room · does this change touch it (push) Successful in 31s
wai-audit collector and player integration / does this change touch it (push) Successful in 17s
wai-quantum command line / does this change touch it (push) Successful in 29s
WAI operation catalogue / does this change touch it (push) Successful in 30s
wai-quantum clippy / does this change touch it (push) Successful in 30s
wai-quantum contract / does this change touch it (push) Successful in 18s
wai-quantum docs, course and locales / does this change touch it (push) Successful in 56s
wai-quantum other formats / does this change touch it (push) Successful in 54s
wai-quantum resource estimation / does this change touch it (push) Successful in 54s
wai-quantum editors / does this change touch it (push) Successful in 56s
wai-quantum studio and desktop / does this change touch it (push) Successful in 22s
wai-quantum views in agent hosts / does this change touch it (push) Successful in 21s
wai-quantum variational and algorithm library / does this change touch it (push) Successful in 23s
wai-quantum verdicts and repairs / does this change touch it (push) Successful in 23s
wai-sink-swift native sink package / does this change touch it (push) Successful in 14s
wai-quantum on Windows / does this change touch it (push) Successful in 17s
wai-sink-android native sink library / does this change touch it (push) Successful in 17s
WAI Studio / does this change touch it (push) Successful in 16s
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (push) Successful in 7s
WAI examples / WAI examples · does this change touch them (push) Successful in 8s
wai-quantum energy-landscape jobs / does this change touch it (push) Successful in 9s
wai-quantum for Python / does this change touch it (push) Successful in 3m30s
wai-quantum qudit jobs / does this change touch it (push) Successful in 3m28s
wai-quantum error correction and mitigation / does this change touch it (push) Successful in 3m29s
wai-quantum for JavaScript / does this change touch it (push) Successful in 3m38s
wai-quantum pulse and dynamics / does this change touch it (push) Successful in 3m37s
wai-quantum OpenQASM reader / does this change touch it (push) Successful in 3m38s
wai-quantum service / does this change touch it (push) Successful in 3m10s
wai-quantum extension points / does this change touch it (push) Successful in 3m28s
wai-quantum wasmQ / does this change touch it (push) Successful in 12s
wai-quantum service / service energy · linux packages (push) Failing after 7s
wai-quantum contract / the policy is linked, and the deprecations page reads (push) Successful in 8s
wai-audit collector and player integration / collector · linux (push) Successful in 4m39s
wai-quantum clippy / clippy, warnings denied, every feature set · linux (push) Successful in 4m31s
wai-quantum docs, course and locales / the Studio's words in every locale · linux (push) Successful in 14s
wai-quantum docs, course and locales / the course and the command line's languages · linux (push) Successful in 4m39s
wai-quantum editors / editors · linux (push) Successful in 4m39s
wai-quantum contract / API compatibility · linux (push) Successful in 11m14s
wai-quantum other formats / the set under wasm32-wasip2 (wasmtime) (push) Successful in 2m23s
wai-quantum verdicts and repairs / the intent set and the verdict under wasm32-wasip2 (wasmtime) (push) Successful in 1m55s
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux, release (push) Successful in 3m39s
wai-quantum verdicts and repairs / verdicts, repairs and the intent set · linux (push) Successful in 2m48s
WAI operation catalogue / the catalogue and every door · linux (push) Successful in 16m56s
wai-quantum contract / schemas and the committed tool lists · linux (push) Successful in 15m50s
WAI Studio / the catalogue's actions, the unit tests and the core · linux (push) Successful in 1m6s
wai-quantum resource estimation / estimation and calibration · linux, release (push) Successful in 7m45s
wai-quantum other formats / readers, writers and the set · linux (push) Successful in 7m19s
wai-quantum studio and desktop / studio · browser (push) Successful in 6m0s
wai-quantum views in agent hosts / views · a scripted host (push) Successful in 7m43s
wai-quantum views in agent hosts / views · the page and its engine (push) Successful in 8m13s
wai-quantum studio and desktop / desktop app · linux (push) Successful in 11m44s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (push) Failing after 6m54s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (push) Successful in 3m38s
wai-quantum command line / command line · linux (push) Successful in 31m11s
wai-quantum for Python / python · linux (push) Failing after 5m24s
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux-arm64, release (push) Successful in 3m16s
wai-quantum energy-landscape jobs / native against WebAssembly, over many seeds (push) Successful in 7m43s
wai-quantum qudit jobs / the module and the conformance set under wasm32-wasip2 (wasmtime) (push) Successful in 2m24s
WAI Studio / Studio in WebKit · linux (push) Successful in 20m40s
wai-quantum pulse and dynamics / reader, simulator and pulse jobs under wasm32-wasip2 (wasmtime) (push) Successful in 1m29s
joule-moq-room room service / joule-moq-room, every target (push) Successful in 10m32s
wai-quantum OpenQASM reader / corpus under wasm32-wasip2 (wasmtime) (push) Successful in 1m35s
wai-quantum qudit jobs / the module, the job, the conformance set, the referee and the verb · linux (push) Successful in 6m54s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (push) Successful in 12m20s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (push) Successful in 6m3s
wai-quantum wasmQ / the reference modules rebuild to their modules of record · linux (push) Successful in 31s
wai-quantum extension points / the registry under wasm32-wasip2 (wasmtime) (push) Successful in 1m49s
wai-quantum pulse and dynamics / reader, simulator and pulse jobs · linux, release (push) Successful in 4m27s
wai-quantum error correction and mitigation / codes, decoders, texts and mitigation · linux, release (push) Successful in 9m51s
wai-quantum OpenQASM reader / reader and corpus · linux (push) Successful in 3m0s
wai-quantum for JavaScript / javascript · linux (push) Successful in 6m8s
WAI examples / WAI examples · portable · linux (push) Successful in 14m4s
wai-quantum pulse and dynamics / the same bits · linux-arm64 (push) Successful in 2m38s
wai-quantum docs, course and locales / every command and snippet in the docs · linux (push) Successful in 36m4s
wai-quantum energy-landscape jobs / reader, kernels, answers and the stated result · linux, release (push) Successful in 16m51s
wai-quantum extension points / the registry and the example · linux (push) Successful in 6m18s
wai-quantum extension points / the registry and the example · linux-arm64 (push) Successful in 5m50s
wai-quantum wasmQ / interpreter and vectors under wasm32-wasip2 (wasmtime) (push) Successful in 7m5s
wai-quantum energy-landscape jobs / the module under wasm32-wasip2 (wasmtime) (push) Successful in 19m27s
WAI examples / WAI examples · android-app · linux-arm64 (push) Successful in 10m41s
wai-quantum command line / command line · macos (push) Successful in 3m21s
wai-quantum wasmQ / profile, engines, reference modules, adversarial, vectors · linux (push) Successful in 11m24s
wai-quantum service / service · linux (push) Failing after 14m21s
wai-quantum editors / editors · macos (push) Successful in 1m47s
wai-quantum studio and desktop / desktop app · macos (push) Successful in 5m12s
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (push) Failing after 14m47s
wai-quantum energy-landscape jobs / the same bits · linux-arm64 (push) Successful in 23m35s
WAI Studio / Studio in Chromium and Firefox · macos (push) Successful in 9m47s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (push) Successful in 8m25s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (push) Successful in 15m4s
wai-quantum energy-landscape jobs / the same bits · macos (push) Successful in 8m11s
wai-quantum for Python / python · macos (push) Failing after 3m27s
wai-quantum pulse and dynamics / the same bits · macos (push) Successful in 1m26s
wai-quantum qudit jobs / the same bits · macos (push) Successful in 2m12s
wai-quantum wasmQ / profile, engines, reference modules, adversarial, vectors · macos (push) Successful in 3m45s
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (push) Successful in 17m14s
wai-quantum service / service · macos (push) Successful in 7m55s
wai-quantum studio and desktop / desktop app · windows (push) Successful in 14m39s
wai-quantum on Windows / engine · windows (push) Failing after 17m39s
wai-quantum on Windows / command line · windows (push) Failing after 5m56s
wai-quantum on Windows / job service · windows (push) Failing after 4m50s
wai-quantum on Windows / python · windows (push) Failing after 10m17s
A receipt sealed no time and the verifier left key trust to the reader, so a receipt could be shown again for ever and no key could be revoked. And the MCP verify tools and the views judged the value their reader had parsed, which no longer shows a member named twice or a whole number past a double. The time (quantum-providers section 8.2). A receipt may carry `time`: `issued_ms` and, optionally, `not_after_ms`, by its signer's clock. It is inside the digest, under the domain byte 0x03 with its canonical text after the result's, so it cannot be changed, taken off or put on. The request and the result are untouched: no job's answer, set leaf or replay digest moves. A host with no clock seals none, and none writes a placeholder. The job service seals a time on every receipt (WAI_QSVC_RECEIPT_TIME=none turns it off; WAI_QSVC_RECEIPT_VALID_S adds an end); the command line seals none unless asked (WAI_QUANTUM_RECEIPT_TIME), so the same key and job still give the same bytes. Every receipt sealed before verifies as it did, and its verdict says no time is sealed. Whose key, and when (section 8.8, new). `verify --trust KEYS.json --at MS|now --skew-ms MS`, the local MCP tool's trust, at_ms and skew_ms, and the second verifier's --trust, --at and --skew-ms hold a receipt to a trust list, which is a key set as the job service publishes it with `revoked_from_ms` added, and to a time. Five reasons: key_untrusted, key_window, key_revoked, expired, issued_later. A receipt with no time passes a window with no end and fails one that ends, and any revocation. A list that does not read is refused whole (status 2, no verdict). `wai-quantum-service revoke-key KEY [FROM_MS]` marks a retired key. Judged from text (section 9). The command line's and the service's MCP verify tools, and the views' engine, judge a job given as members as their message's text writes it, read as section 8.2 reads a job, and every such verdict says how the job was given: text, members, or parsed with what it could not see. Both verifiers (the engine, and receipt_verify.py written from the text) agreed with the manifest on the corpus's 451 receipts held to nothing, 40 judgements of receipts held to a list or a time, 30 trust lists (7 read, 23 refused whole), and 34,332 one-member changes of the valid receipts, on the tree before main's second-version landscape receipts joined the corpus; with them the second verifier agrees with the manifest on all 500, and the command line's workflow holds the engine to them. Three planted defects of the second verifier are each caught. The views' page is rebuilt with the engine that knows the time. A verifier from before this text reports digest_mismatch on a receipt that seals a time: it fails closed. A deployment whose readers still run one sets WAI_QSVC_RECEIPT_TIME=none until they have updated. Co-Authored-By: Claude Fable 5.2 <[email protected]>
577 lines
17 KiB
JSON
577 lines
17 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "https://git.transaction.science/Transaction-Science/open-standards/raw/branch/main/wai/wai-quantum/schemas/estimate.v1.json",
|
|
"title": "wai.quantum.estimate/1",
|
|
"description": "A resource estimate as a host returns it (the command line's estimate --json, both servers' estimate_resources, the job service's POST /v1/estimate): the request, and the result, which its receipt seals in a job's form. The result holds the program's logical counts, the error budget and how it was shared, the decoder calibration the physical model uses, the headline estimate and the frontier trading physical qubits for runtime, each estimate sealed in the resource-estimate receipt family (the frontier's naming the headline's as parent), and the model's notes. A result names the engine that made it and this schema (engine and schema); results made before results carried them have neither. docs/estimate.md explains every number.",
|
|
"type": "object",
|
|
"required": [
|
|
"request",
|
|
"result"
|
|
],
|
|
"properties": {
|
|
"request": {
|
|
"type": "object",
|
|
"description": "A program (qasm), a logical-counts document (counts) or a routine document (routine), with the estimate's options, as given.",
|
|
"properties": {
|
|
"qasm": {
|
|
"type": "string"
|
|
},
|
|
"counts": {
|
|
"type": "object"
|
|
},
|
|
"routine": {
|
|
"type": "object"
|
|
},
|
|
"inputs": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"budget": {
|
|
"type": "number"
|
|
},
|
|
"qubit": {
|
|
"type": [
|
|
"string",
|
|
"object"
|
|
]
|
|
},
|
|
"calibration": {
|
|
"type": "string"
|
|
},
|
|
"max_slowdown": {
|
|
"type": "integer"
|
|
},
|
|
"clock": {
|
|
"description": "How long a Toffoli takes: steps (the default: three logical steps of d cycles), or the reaction-limited clock, a Toffoli one tick of the control system's reaction time in µs, its Clifford fixups teleported away, with enough factories to keep up.",
|
|
"anyOf": [
|
|
{
|
|
"const": "steps"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"reaction_us"
|
|
],
|
|
"properties": {
|
|
"reaction_us": {
|
|
"type": "number",
|
|
"exclusiveMinimum": 0,
|
|
"exclusiveMaximum": 1000000000
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
]
|
|
},
|
|
"export": {
|
|
"enum": [
|
|
"counts",
|
|
"routine"
|
|
]
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"result": {
|
|
"$ref": "#/$defs/result"
|
|
}
|
|
},
|
|
"$defs": {
|
|
"result": {
|
|
"type": "object",
|
|
"required": [
|
|
"ok",
|
|
"format",
|
|
"program",
|
|
"counts",
|
|
"epsilon",
|
|
"options",
|
|
"estimate",
|
|
"frontier"
|
|
],
|
|
"properties": {
|
|
"engine": {
|
|
"type": "object",
|
|
"description": "The engine that made the result: the wai-quantum crate's name and version.",
|
|
"required": [
|
|
"name",
|
|
"version"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"const": "wai-quantum"
|
|
},
|
|
"version": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"schema": {
|
|
"const": "wai.quantum.estimate/1"
|
|
},
|
|
"ok": {
|
|
"const": true
|
|
},
|
|
"format": {
|
|
"const": "wai.quantum.estimate/1"
|
|
},
|
|
"program": {
|
|
"type": "object",
|
|
"description": "What was estimated: a circuit (its digest, BLAKE3 of the program's text), or a document's counts.",
|
|
"properties": {
|
|
"origin": {
|
|
"enum": [
|
|
"circuit",
|
|
"counts",
|
|
"routine"
|
|
]
|
|
},
|
|
"digest": {
|
|
"type": "string"
|
|
},
|
|
"qubits": {
|
|
"type": "integer"
|
|
},
|
|
"bound": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"counts": {
|
|
"type": "object",
|
|
"description": "The program's logical counts: qubits and ancillas, measurements, Clifford gates, T gates, Toffolis, rotations (each costed at its own synthesised word's T count), T states, depths.",
|
|
"additionalProperties": {
|
|
"type": [
|
|
"integer",
|
|
"number",
|
|
"string",
|
|
"null",
|
|
"array"
|
|
]
|
|
}
|
|
},
|
|
"epsilon": {
|
|
"type": "object",
|
|
"description": "The error budget, the synthesis share and each rotation's share, the bound the rotations' distances add to, and their T counts.",
|
|
"properties": {
|
|
"budget": {
|
|
"type": [
|
|
"number",
|
|
"null"
|
|
]
|
|
},
|
|
"synthesis": {
|
|
"type": [
|
|
"number",
|
|
"null"
|
|
]
|
|
},
|
|
"each": {
|
|
"type": [
|
|
"number",
|
|
"null"
|
|
]
|
|
},
|
|
"rotations": {
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
},
|
|
"angles": {
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
},
|
|
"bound": {
|
|
"type": [
|
|
"number",
|
|
"null"
|
|
]
|
|
},
|
|
"t_per_rotation": {
|
|
"type": [
|
|
"object",
|
|
"null"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"calibration": {
|
|
"type": "object",
|
|
"description": "The decoder calibration the physical model uses: the decoder, the experiment, the fit, its measured range, and how to reproduce it."
|
|
},
|
|
"options": {
|
|
"type": "object",
|
|
"description": "The options the estimate ran with, the defaults filled in."
|
|
},
|
|
"estimate": {
|
|
"$ref": "#/$defs/point"
|
|
},
|
|
"frontier": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/$defs/point"
|
|
},
|
|
"description": "Estimates no other beats on both physical qubits and runtime; the headline among them."
|
|
},
|
|
"notes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "The model's assumptions."
|
|
},
|
|
"rotations": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object"
|
|
},
|
|
"description": "Each distinct rotation angle: how many there are, its T count, gates and distance."
|
|
},
|
|
"export": {
|
|
"type": "object",
|
|
"description": "With export: the program's counts as a logical-counts or a routine document."
|
|
},
|
|
"receipt": {
|
|
"$ref": "receipt.v2.json"
|
|
}
|
|
}
|
|
},
|
|
"point": {
|
|
"type": "object",
|
|
"description": "One estimate on a physical qubit: the code and its distance, the slowdown, physical qubits (the algorithm's and the factories'), factories, runtime, logical steps and their length, tiles, the logical error, T states, and how the budget was shared; sealed by its resource-estimate receipt (receipt), or marked the headline.",
|
|
"properties": {
|
|
"qubit": {
|
|
"type": "string"
|
|
},
|
|
"code": {
|
|
"type": "string"
|
|
},
|
|
"distance": {
|
|
"type": "integer"
|
|
},
|
|
"slowdown": {
|
|
"type": "integer"
|
|
},
|
|
"physical_qubits": {
|
|
"type": "integer"
|
|
},
|
|
"algorithm_qubits": {
|
|
"type": "integer"
|
|
},
|
|
"factory_qubits": {
|
|
"type": "integer"
|
|
},
|
|
"factories": {
|
|
"type": "integer"
|
|
},
|
|
"factory_fraction": {
|
|
"type": "number"
|
|
},
|
|
"runtime_s": {
|
|
"type": "number"
|
|
},
|
|
"steps": {
|
|
"type": "integer"
|
|
},
|
|
"step_us": {
|
|
"type": "number"
|
|
},
|
|
"tiles": {
|
|
"type": "integer"
|
|
},
|
|
"tile_qubits": {
|
|
"type": "integer"
|
|
},
|
|
"logical_error": {
|
|
"type": "number"
|
|
},
|
|
"t_states": {
|
|
"type": "integer"
|
|
},
|
|
"t_target": {
|
|
"type": "number"
|
|
},
|
|
"budget": {
|
|
"type": "object",
|
|
"properties": {
|
|
"logical": {
|
|
"type": "number"
|
|
},
|
|
"distillation": {
|
|
"type": "number"
|
|
},
|
|
"synthesis": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"factory": {
|
|
"type": [
|
|
"object",
|
|
"null"
|
|
]
|
|
},
|
|
"headline": {
|
|
"type": "boolean"
|
|
},
|
|
"receipt": {
|
|
"$ref": "#/$defs/resource_receipt"
|
|
},
|
|
"clock": {
|
|
"type": "object",
|
|
"description": "On the reaction-limited clock only: its reaction time, one tick at this estimate's slowdown, and the Toffolis run on ticks. Then steps are the lattice-surgery steps alone, and runtime_s adds the ticks.",
|
|
"required": [
|
|
"reaction_us",
|
|
"tick_us",
|
|
"toffolis"
|
|
],
|
|
"properties": {
|
|
"reaction_us": {
|
|
"type": "number"
|
|
},
|
|
"tick_us": {
|
|
"type": "number"
|
|
},
|
|
"toffolis": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"resource_receipt": {
|
|
"type": "object",
|
|
"description": "A receipt of the resource-estimate family: the estimate, the hashes of its job and its result, its Merkle root, its signer and signature, and the receipt it names as parent.",
|
|
"required": [
|
|
"kind",
|
|
"receipt_hash",
|
|
"sig",
|
|
"signer_pubkey"
|
|
],
|
|
"properties": {
|
|
"kind": {
|
|
"const": "quantum-resource"
|
|
},
|
|
"clock": {
|
|
"type": "object",
|
|
"description": "On the reaction-limited clock only: the runtime the estimate's steps do not account for, read from its signed figures. How long one tick was is the job's, whose hash binds the reaction time.",
|
|
"required": [
|
|
"kind",
|
|
"tick_time_ns_bits",
|
|
"tick_time_s"
|
|
],
|
|
"properties": {
|
|
"kind": {
|
|
"const": "reaction"
|
|
},
|
|
"tick_time_ns_bits": {
|
|
"type": "string"
|
|
},
|
|
"tick_time_s": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"estimate": {
|
|
"type": "object"
|
|
},
|
|
"job_hash": {
|
|
"type": "string"
|
|
},
|
|
"joules_micro": {
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
],
|
|
"description": "The microjoules the estimate took, where something read them; null in the unmetered form (quantum-ops section 3.5), beside energy_unmetered. An unlabelled 0 is the legacy form of the unmetered statement, sealed before that form: never a figure of zero joules."
|
|
},
|
|
"parent_receipt_hash": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"receipt_hash": {
|
|
"type": "string"
|
|
},
|
|
"result_hash": {
|
|
"type": "string"
|
|
},
|
|
"root_hash": {
|
|
"type": "string"
|
|
},
|
|
"sig": {
|
|
"type": "string"
|
|
},
|
|
"signer_id": {
|
|
"type": "string"
|
|
},
|
|
"signer_pubkey": {
|
|
"type": "string"
|
|
},
|
|
"energy_provenance": {
|
|
"type": "string"
|
|
},
|
|
"energy_uncertainty": {
|
|
"type": "object"
|
|
},
|
|
"energy_unmetered": {
|
|
"type": "string",
|
|
"description": "The unmetered form (quantum-ops section 3.5): why nothing read the estimate's energy, inside the signature. Every receipt an estimate is sealed with now carries it."
|
|
}
|
|
}
|
|
},
|
|
"verify": {
|
|
"type": "object",
|
|
"description": "An estimate's check: its seal, every estimate's receipt, and the request re-run here giving the same figures.",
|
|
"required": [
|
|
"valid",
|
|
"signed",
|
|
"receipts",
|
|
"reproduced"
|
|
],
|
|
"properties": {
|
|
"valid": {
|
|
"type": "boolean"
|
|
},
|
|
"reasons": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "The provider protocol's section 8.4 reasons: none, since an answer is run again only once its receipt and every rule hold; a receipt that fails is answered with its reasons alone."
|
|
},
|
|
"signed": {
|
|
"type": "boolean"
|
|
},
|
|
"receipts": {
|
|
"type": "boolean"
|
|
},
|
|
"reproduced": {
|
|
"type": "boolean"
|
|
},
|
|
"rerun_error": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
],
|
|
"description": "Why the request could not be run again, when no host runs it (a request an estimate refuses): the answer is then not valid, and nothing is reproduced. Null when it ran."
|
|
},
|
|
"key": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"signer": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"estimates": {
|
|
"type": "integer"
|
|
},
|
|
"time": {
|
|
"type": "object",
|
|
"description": "What the receipt seals of when it was issued (the provider protocol's section 8.2): the time, in milliseconds since 1970 by its signer's clock, or that it seals none.",
|
|
"required": [
|
|
"sealed"
|
|
],
|
|
"properties": {
|
|
"sealed": {
|
|
"type": "boolean"
|
|
},
|
|
"issued_ms": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"not_after_ms": {
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
],
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991,
|
|
"description": "The first moment the receipt is no longer offered; null when it states none."
|
|
}
|
|
}
|
|
},
|
|
"trust": {
|
|
"type": "object",
|
|
"description": "With a trust list (section 8.8): whether it lists the receipt's key, and the window and revocation its entry gives.",
|
|
"required": [
|
|
"listed"
|
|
],
|
|
"properties": {
|
|
"listed": {
|
|
"type": "boolean"
|
|
},
|
|
"not_before_ms": {
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
],
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"not_after_ms": {
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
],
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"revoked_from_ms": {
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
],
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
}
|
|
}
|
|
},
|
|
"checked_at_ms": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991,
|
|
"description": "With a time to hold the receipt to (section 8.8): that time."
|
|
},
|
|
"skew_ms": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"description": "How far after checked_at_ms a receipt's issue may be."
|
|
},
|
|
"given": {
|
|
"enum": [
|
|
"text",
|
|
"members",
|
|
"parsed"
|
|
],
|
|
"description": "From a surface that says how the job was given (the provider protocol's section 9): its own text; its members, judged as the message wrote them; or a value already parsed, with no text to judge."
|
|
},
|
|
"not_seen": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "For a job given parsed: what parsing loses, which this verdict could not see."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|