Review of the first pass:
- The bit-exact method's bits are the rounding of each gate it applies, so a
gate held whole gives other bits than its standard gates. A job on exact now
runs standard gates by default, and gives the hash it always gave; it holds
such a gate whole only when asked, "options": {"controls": "whole"}.
catalog::runs_whole takes the request, and the planner's bit-exact circuit
is the one the method runs.
- A result's and lint's `gates` count standard gates however the method ran
them, as they always have, so a receipt's provenance is unchanged;
`operations` (new, optional) says what a method holding gates whole ran.
The schemas say so.
- The comparison's driver follows the job path: whole on the state vector,
standard on exact unless asked.
- The tests hold the default bit-exact hash to the one before the change.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2752 lines
71 KiB
JSON
2752 lines
71 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/tools.v1.json",
|
|
"title": "wai.quantum.tools/1",
|
|
"description": "The answers of the engine's tools, as the command line's --json, both MCP servers, the job service's checks and the Studio give them: lint, the reader's diagnostic codes, critique, the equivalence check, improve, the classical shortcuts, the methods, the rewrites, novelty, the workbench, convergence, the study, the repair, the debugger and the device targets. Each is a $def. A member named here keeps its name and type within this major version; members may be added.",
|
|
"$defs": {
|
|
"error": {
|
|
"type": "object",
|
|
"description": "A program that does not read: the problem, and its line, its diagnostic code, column and length when the reader names them.",
|
|
"required": [
|
|
"ok",
|
|
"error"
|
|
],
|
|
"properties": {
|
|
"ok": {
|
|
"const": false
|
|
},
|
|
"error": {
|
|
"type": "string"
|
|
},
|
|
"line": {
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
},
|
|
"code": {
|
|
"type": "string",
|
|
"description": "The reader's diagnostic code, as Q103; qasm_diagnostics says what each means."
|
|
},
|
|
"column": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"description": "Where the problem starts on its line, in characters from 1."
|
|
},
|
|
"length": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"description": "Its length on that line, in characters."
|
|
}
|
|
}
|
|
},
|
|
"lint": {
|
|
"description": "A program read as the engine reads it: its shape, or the first problem with its line.",
|
|
"anyOf": [
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"ok",
|
|
"qubits",
|
|
"gates",
|
|
"bits",
|
|
"measured"
|
|
],
|
|
"properties": {
|
|
"ok": {
|
|
"const": true
|
|
},
|
|
"qubits": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"gates": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"description": "The program's gates in standard gates, at most 2^53 - 1."
|
|
},
|
|
"operations": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"description": "When a gate under many controls would double in standard gates: the operations a job on the state vector runs, each such gate one."
|
|
},
|
|
"bits": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"measured": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"dynamic_steps": {
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
],
|
|
"description": "The steps of a program that measures in the middle, resets or branches; null otherwise."
|
|
},
|
|
"diagnostics": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/$defs/diagnostic"
|
|
},
|
|
"description": "The reader's warnings and notes on a program it read, each with its code; present only when there are any."
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/$defs/error"
|
|
}
|
|
]
|
|
},
|
|
"diagnostic": {
|
|
"type": "object",
|
|
"description": "One of the reader's diagnostics: its code, what happens to the construct it is about, its message (without the line or the code), and where it stands.",
|
|
"required": [
|
|
"code",
|
|
"outcome",
|
|
"message"
|
|
],
|
|
"properties": {
|
|
"code": {
|
|
"type": "string"
|
|
},
|
|
"outcome": {
|
|
"enum": [
|
|
"refused",
|
|
"lowered",
|
|
"carried",
|
|
"preserved",
|
|
"warned"
|
|
]
|
|
},
|
|
"message": {
|
|
"type": "string"
|
|
},
|
|
"line": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
},
|
|
"column": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
},
|
|
"length": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
}
|
|
}
|
|
},
|
|
"diagnostic_code": {
|
|
"type": "object",
|
|
"description": "A row of a table of codes, the reader's (Q…) or the job layer's (J…): a code, its outcome, its meaning, and whether it is retired (a retired code keeps its row and its meaning, and nothing gives it).",
|
|
"required": [
|
|
"code",
|
|
"outcome",
|
|
"meaning",
|
|
"retired"
|
|
],
|
|
"properties": {
|
|
"code": {
|
|
"type": "string"
|
|
},
|
|
"outcome": {
|
|
"enum": [
|
|
"refused",
|
|
"retry",
|
|
"failed",
|
|
"lowered",
|
|
"carried",
|
|
"preserved",
|
|
"warned",
|
|
"dropped",
|
|
"defaulted"
|
|
]
|
|
},
|
|
"meaning": {
|
|
"type": "string"
|
|
},
|
|
"retired": {
|
|
"type": "boolean"
|
|
},
|
|
"table": {
|
|
"enum": [
|
|
"reader",
|
|
"job"
|
|
],
|
|
"description": "Which table the code is in: the reader's (Q…) or the job layer's (J…)."
|
|
}
|
|
}
|
|
},
|
|
"diagnostic_codes": {
|
|
"description": "The codes of both tables, the reader's (Q…) and the job layer's (J…), or the row of one code.",
|
|
"anyOf": [
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"codes"
|
|
],
|
|
"properties": {
|
|
"codes": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/$defs/diagnostic_code"
|
|
}
|
|
},
|
|
"stable": {
|
|
"type": "string"
|
|
},
|
|
"job_codes": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/$defs/diagnostic_code"
|
|
},
|
|
"description": "The job layer's codes (J…): what a host refuses of a job it read, and why."
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/$defs/diagnostic_code"
|
|
}
|
|
]
|
|
},
|
|
"refusal": {
|
|
"type": "object",
|
|
"description": "A refusal as data: the message, every code in it (the last is the code), its outcome and meaning as the code's table gives them. A host that refuses for its own reasons gives the error alone.",
|
|
"required": [
|
|
"error"
|
|
],
|
|
"properties": {
|
|
"error": {
|
|
"type": "string"
|
|
},
|
|
"message": {
|
|
"type": "string"
|
|
},
|
|
"code": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"codes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"outcome": {
|
|
"enum": [
|
|
"refused",
|
|
"retry",
|
|
"failed",
|
|
"lowered",
|
|
"carried",
|
|
"preserved",
|
|
"warned",
|
|
"dropped",
|
|
"defaulted"
|
|
]
|
|
},
|
|
"meaning": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"repair": {
|
|
"type": "object",
|
|
"description": "A program repaired on the lines its diagnostics flag alone: the program as it now is, each repair with the code it answered and every line it changed, and what needs a person, with the reader's advice.",
|
|
"required": [
|
|
"ok",
|
|
"changed",
|
|
"qasm",
|
|
"repairs",
|
|
"needs_person"
|
|
],
|
|
"properties": {
|
|
"ok": {
|
|
"type": "boolean",
|
|
"description": "Whether the program now reads."
|
|
},
|
|
"changed": {
|
|
"type": "boolean"
|
|
},
|
|
"qasm": {
|
|
"type": "string"
|
|
},
|
|
"repairs": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/$defs/repair_step"
|
|
}
|
|
},
|
|
"needs_person": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"code"
|
|
],
|
|
"properties": {
|
|
"code": {
|
|
"type": "string"
|
|
},
|
|
"line": {
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
},
|
|
"message": {
|
|
"type": "string"
|
|
},
|
|
"advice": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"repair_step": {
|
|
"type": "object",
|
|
"required": [
|
|
"code",
|
|
"by",
|
|
"edits"
|
|
],
|
|
"properties": {
|
|
"code": {
|
|
"type": "string"
|
|
},
|
|
"rule": {
|
|
"type": "string"
|
|
},
|
|
"by": {
|
|
"enum": [
|
|
"engine",
|
|
"proposal"
|
|
]
|
|
},
|
|
"flagged": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"edits": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"line": {
|
|
"type": "integer"
|
|
},
|
|
"before": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"after": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"debug_step_point": {
|
|
"type": [
|
|
"object",
|
|
"null"
|
|
],
|
|
"description": "A step of the program: its place, its kind, its line, what it does and on which qubits.",
|
|
"properties": {
|
|
"step": {
|
|
"type": "integer"
|
|
},
|
|
"kind": {
|
|
"type": "string"
|
|
},
|
|
"op": {
|
|
"type": "integer"
|
|
},
|
|
"line": {
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
},
|
|
"label": {
|
|
"type": "string"
|
|
},
|
|
"qubits": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"bit": {
|
|
"type": "integer"
|
|
},
|
|
"final": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"debug_step": {
|
|
"type": "object",
|
|
"description": "The engine's state at one point of a program's path: where it is, the measurements decided on the way and their weight, each qubit's Bloch vector, a reduced state and an entanglement measure when asked, and the state's digest and amplitudes.",
|
|
"required": [
|
|
"ok",
|
|
"method",
|
|
"position",
|
|
"at_end",
|
|
"decisions",
|
|
"outcomes",
|
|
"weight",
|
|
"classical",
|
|
"state"
|
|
],
|
|
"properties": {
|
|
"ok": {
|
|
"const": true
|
|
},
|
|
"method": {
|
|
"type": "string"
|
|
},
|
|
"accuracy": {
|
|
"type": "object",
|
|
"description": "The method's accuracy class and what it promises.",
|
|
"properties": {
|
|
"class": {
|
|
"type": "string"
|
|
},
|
|
"note": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"qubits": {
|
|
"type": "integer"
|
|
},
|
|
"bits": {
|
|
"type": "integer"
|
|
},
|
|
"position": {
|
|
"type": "integer",
|
|
"description": "Steps taken from the start."
|
|
},
|
|
"at_end": {
|
|
"type": "boolean"
|
|
},
|
|
"next": {
|
|
"$ref": "#/$defs/debug_step_point"
|
|
},
|
|
"last": {
|
|
"$ref": "#/$defs/debug_step_point"
|
|
},
|
|
"decisions": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"position": {
|
|
"type": "integer"
|
|
},
|
|
"step": {
|
|
"type": "integer"
|
|
},
|
|
"kind": {
|
|
"type": "string"
|
|
},
|
|
"line": {
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
},
|
|
"qubit": {
|
|
"type": "integer"
|
|
},
|
|
"bit": {
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
},
|
|
"outcome": {
|
|
"type": "integer"
|
|
},
|
|
"p": {
|
|
"type": "number"
|
|
},
|
|
"by": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"outcomes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 1
|
|
}
|
|
},
|
|
"weight": {
|
|
"type": "number",
|
|
"description": "The path's probability so far."
|
|
},
|
|
"classical": {
|
|
"type": "string",
|
|
"description": "The classical bits so far, the highest first."
|
|
},
|
|
"bloch": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"qubit": {
|
|
"type": "integer"
|
|
},
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
},
|
|
"z": {
|
|
"type": "number"
|
|
},
|
|
"length": {
|
|
"type": "number"
|
|
},
|
|
"purity": {
|
|
"type": "number"
|
|
},
|
|
"p1": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"reduced": {
|
|
"type": "object",
|
|
"description": "The reduced state of the qubits asked for: its density matrix, purity and entropy."
|
|
},
|
|
"entanglement": {
|
|
"type": "object",
|
|
"description": "An entanglement measure across a cut: the entropy of a pure state, or the logarithmic negativity of a mixed one."
|
|
},
|
|
"ideal": {
|
|
"type": "object",
|
|
"description": "With noise: the same path without it, and the noisy state's fidelity to it."
|
|
},
|
|
"state": {
|
|
"type": "object",
|
|
"properties": {
|
|
"digest": {
|
|
"type": "string"
|
|
},
|
|
"norm": {
|
|
"type": "number"
|
|
},
|
|
"purity": {
|
|
"type": "number"
|
|
},
|
|
"nonzero": {
|
|
"type": "integer"
|
|
},
|
|
"of": {
|
|
"type": "integer"
|
|
},
|
|
"amplitudes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"probabilities": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"trace": {
|
|
"type": "number",
|
|
"description": "With noise: the density matrix's trace."
|
|
}
|
|
}
|
|
},
|
|
"length": {
|
|
"type": "integer",
|
|
"description": "With length: the steps in the path."
|
|
},
|
|
"outline": {
|
|
"type": "array",
|
|
"description": "With outline: every step, in order.",
|
|
"items": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"debug_branches": {
|
|
"type": "object",
|
|
"description": "Every branch of a program at its measurements in the middle, each with its weight (exact for a noiseless Clifford program), and each leaf's path, outcomes and final distribution.",
|
|
"required": [
|
|
"ok",
|
|
"method",
|
|
"qubits",
|
|
"bits",
|
|
"tree",
|
|
"leaves",
|
|
"total_weight"
|
|
],
|
|
"properties": {
|
|
"ok": {
|
|
"const": true
|
|
},
|
|
"method": {
|
|
"type": "string"
|
|
},
|
|
"accuracy": {
|
|
"type": "object",
|
|
"description": "The method's accuracy class and what it promises.",
|
|
"properties": {
|
|
"class": {
|
|
"type": "string"
|
|
},
|
|
"note": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"weights": {
|
|
"type": "string"
|
|
},
|
|
"qubits": {
|
|
"type": "integer"
|
|
},
|
|
"bits": {
|
|
"type": "integer"
|
|
},
|
|
"tree": {
|
|
"type": [
|
|
"object",
|
|
"null"
|
|
],
|
|
"description": "The tree of branches, from the first measurement; null when there is none."
|
|
},
|
|
"leaves": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"leaf": {
|
|
"type": "integer"
|
|
},
|
|
"path": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"outcomes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"weight": {
|
|
"type": "number"
|
|
},
|
|
"weight_exact": {
|
|
"type": "string"
|
|
},
|
|
"final": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"final_outcomes": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"total_weight": {
|
|
"type": "number"
|
|
},
|
|
"truncated": {
|
|
"type": "boolean"
|
|
},
|
|
"note": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"figures": {
|
|
"type": [
|
|
"object",
|
|
"null"
|
|
],
|
|
"properties": {
|
|
"min": {
|
|
"type": "number"
|
|
},
|
|
"median": {
|
|
"type": "number"
|
|
},
|
|
"max": {
|
|
"type": "number"
|
|
},
|
|
"of": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"description": "The least, the median and the most of a figure across the device, and how many it has; null when the target gives none."
|
|
},
|
|
"target_summary": {
|
|
"type": "object",
|
|
"description": "A device target in brief: its name and hash, where it came from, its calibration snapshot, its qubits and pairs, each native gate's error and duration across the device, the native gate set it is compiled to, and its qubits' T1, T2 and readout error.",
|
|
"required": [
|
|
"name",
|
|
"hash",
|
|
"qubits",
|
|
"pairs"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"hash": {
|
|
"type": "string",
|
|
"description": "BLAKE3 of the target document's RFC 8785 text: what a receipt names."
|
|
},
|
|
"source": {
|
|
"type": "object",
|
|
"properties": {
|
|
"format": {
|
|
"type": "string"
|
|
},
|
|
"note": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"calibration": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"timestamp": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"qubits": {
|
|
"type": "integer"
|
|
},
|
|
"pairs": {
|
|
"type": "integer"
|
|
},
|
|
"gates": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"gate": {
|
|
"type": "string"
|
|
},
|
|
"qubits": {
|
|
"type": "integer"
|
|
},
|
|
"where": {
|
|
"type": "integer"
|
|
},
|
|
"error": {
|
|
"$ref": "#/$defs/figures"
|
|
},
|
|
"duration_ns": {
|
|
"$ref": "#/$defs/figures"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"native": {
|
|
"type": "object",
|
|
"description": "The compiler's gate set the target's gates hold, whether exactly, and how each is costed."
|
|
},
|
|
"t1_us": {
|
|
"$ref": "#/$defs/figures"
|
|
},
|
|
"t2_us": {
|
|
"$ref": "#/$defs/figures"
|
|
},
|
|
"readout_error": {
|
|
"$ref": "#/$defs/figures"
|
|
},
|
|
"view": {
|
|
"type": "object",
|
|
"description": "With view: each qubit's place and errors and each pair's error, to draw the coupling map."
|
|
},
|
|
"document": {
|
|
"$ref": "target.v1.json"
|
|
}
|
|
}
|
|
},
|
|
"targets": {
|
|
"type": "object",
|
|
"description": "The device targets this host knows: the built-in ones (all synthetic) and the person's own, kept in a directory of theirs.",
|
|
"required": [
|
|
"built_in",
|
|
"yours"
|
|
],
|
|
"properties": {
|
|
"built_in": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/$defs/target_summary"
|
|
}
|
|
},
|
|
"yours": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/$defs/target_summary"
|
|
}
|
|
},
|
|
"kept_in": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"note": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"measures": {
|
|
"type": "object",
|
|
"description": "A program's measures, computed by the engine.",
|
|
"required": [
|
|
"ok",
|
|
"qubits",
|
|
"gates",
|
|
"depth",
|
|
"two_qubit",
|
|
"t_count",
|
|
"clifford"
|
|
],
|
|
"properties": {
|
|
"ok": {
|
|
"const": true
|
|
},
|
|
"qubits": {
|
|
"type": "integer"
|
|
},
|
|
"bits": {
|
|
"type": "integer"
|
|
},
|
|
"gates": {
|
|
"type": "integer"
|
|
},
|
|
"one_qubit": {
|
|
"type": "integer"
|
|
},
|
|
"two_qubit": {
|
|
"type": "integer"
|
|
},
|
|
"three_qubit": {
|
|
"type": "integer"
|
|
},
|
|
"t_count": {
|
|
"type": "integer"
|
|
},
|
|
"non_clifford": {
|
|
"type": "integer"
|
|
},
|
|
"clifford": {
|
|
"type": "boolean"
|
|
},
|
|
"depth": {
|
|
"type": "integer"
|
|
},
|
|
"two_qubit_depth": {
|
|
"type": "integer"
|
|
},
|
|
"measured": {
|
|
"type": "integer"
|
|
},
|
|
"dynamic": {
|
|
"type": "boolean"
|
|
},
|
|
"by_gate": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"fidelity_model": {
|
|
"type": "object",
|
|
"description": "A fidelity under reference error rates: a model of a device, not a run.",
|
|
"required": [
|
|
"estimate"
|
|
],
|
|
"properties": {
|
|
"estimate": {
|
|
"type": "number"
|
|
},
|
|
"rates": {
|
|
"type": "object",
|
|
"properties": {
|
|
"one_qubit": {
|
|
"type": "number"
|
|
},
|
|
"two_qubit": {
|
|
"type": "number"
|
|
},
|
|
"readout": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"note": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"smells": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/$defs/smell"
|
|
}
|
|
},
|
|
"inputs": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "integer"
|
|
},
|
|
"description": "A generator's inputs, when it was read at them."
|
|
}
|
|
}
|
|
},
|
|
"smell": {
|
|
"type": "object",
|
|
"required": [
|
|
"kind",
|
|
"message",
|
|
"lines",
|
|
"fixable"
|
|
],
|
|
"properties": {
|
|
"kind": {
|
|
"type": "string"
|
|
},
|
|
"message": {
|
|
"type": "string"
|
|
},
|
|
"lines": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"ops": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"qubits": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"fixable": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"critique": {
|
|
"description": "A program's measures and its smells, each with its lines; or why it does not read.",
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/$defs/measures"
|
|
},
|
|
{
|
|
"$ref": "#/$defs/error"
|
|
}
|
|
]
|
|
},
|
|
"equivalence": {
|
|
"type": "object",
|
|
"description": "Whether two programs are the same circuit up to a global phase, and how the engine decided.",
|
|
"required": [
|
|
"verdict",
|
|
"how",
|
|
"why"
|
|
],
|
|
"properties": {
|
|
"verdict": {
|
|
"enum": [
|
|
"equivalent",
|
|
"different",
|
|
"unchecked"
|
|
]
|
|
},
|
|
"how": {
|
|
"enum": [
|
|
"tableau",
|
|
"exact",
|
|
"rewrites",
|
|
"random",
|
|
"state",
|
|
"shape",
|
|
"none"
|
|
],
|
|
"description": "tableau, exact and rewrites are proofs; state is a proof of the same state from |0…0⟩; random is evidence, not proof; shape: they differ in their shape; none: unchecked."
|
|
},
|
|
"why": {
|
|
"type": "string"
|
|
},
|
|
"global_phase": {
|
|
"type": [
|
|
"number",
|
|
"null"
|
|
],
|
|
"description": "The global phase between them, in units of π."
|
|
},
|
|
"steps": {
|
|
"type": "integer",
|
|
"description": "rewrites: the checked steps to nothing."
|
|
}
|
|
}
|
|
},
|
|
"improve": {
|
|
"description": "The program with its smells fixed, all together and each alone, each candidate checked against the program; a candidate found different is never given.",
|
|
"anyOf": [
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"ok",
|
|
"base",
|
|
"candidates"
|
|
],
|
|
"properties": {
|
|
"ok": {
|
|
"const": true
|
|
},
|
|
"base": {
|
|
"$ref": "#/$defs/measures"
|
|
},
|
|
"candidates": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"label",
|
|
"qasm",
|
|
"changes",
|
|
"measures",
|
|
"equivalence"
|
|
],
|
|
"properties": {
|
|
"label": {
|
|
"type": "string"
|
|
},
|
|
"qasm": {
|
|
"type": "string"
|
|
},
|
|
"changes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"measures": {
|
|
"$ref": "#/$defs/measures"
|
|
},
|
|
"equivalence": {
|
|
"$ref": "#/$defs/equivalence"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/$defs/error"
|
|
}
|
|
]
|
|
},
|
|
"route": {
|
|
"type": "object",
|
|
"required": [
|
|
"route",
|
|
"answers",
|
|
"applies",
|
|
"why"
|
|
],
|
|
"properties": {
|
|
"route": {
|
|
"type": "string"
|
|
},
|
|
"answers": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"applies": {
|
|
"type": "boolean"
|
|
},
|
|
"why": {
|
|
"type": "string"
|
|
},
|
|
"memory_bytes": {
|
|
"type": "number"
|
|
},
|
|
"log2_work": {
|
|
"type": "number"
|
|
},
|
|
"seconds_at_reference": {
|
|
"type": "number"
|
|
},
|
|
"size": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"shortcuts": {
|
|
"description": "Every exact classical route the engine knows for a program, priced on it, and the cheapest for each question.",
|
|
"anyOf": [
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"ok",
|
|
"qubits",
|
|
"gates",
|
|
"routes",
|
|
"cheapest",
|
|
"summary"
|
|
],
|
|
"properties": {
|
|
"ok": {
|
|
"const": true
|
|
},
|
|
"qubits": {
|
|
"type": "integer"
|
|
},
|
|
"gates": {
|
|
"type": "integer"
|
|
},
|
|
"thorough": {
|
|
"type": "boolean"
|
|
},
|
|
"routes": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/$defs/route"
|
|
}
|
|
},
|
|
"cheapest": {
|
|
"type": "object",
|
|
"description": "For counts, amplitudes, expectations and one_qubit_expectations: the cheapest route that answers it, or null.",
|
|
"additionalProperties": {
|
|
"anyOf": [
|
|
{
|
|
"type": "null"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"route"
|
|
],
|
|
"properties": {
|
|
"route": {
|
|
"type": "string"
|
|
},
|
|
"memory_bytes": {
|
|
"type": "number"
|
|
},
|
|
"log2_work": {
|
|
"type": "number"
|
|
},
|
|
"seconds_at_reference": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"summary": {
|
|
"type": "string"
|
|
},
|
|
"reference_rate": {
|
|
"type": "number",
|
|
"description": "Operations a second the times assume."
|
|
},
|
|
"note": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/$defs/error"
|
|
}
|
|
]
|
|
},
|
|
"method": {
|
|
"type": "object",
|
|
"required": [
|
|
"method",
|
|
"accuracy",
|
|
"circuits",
|
|
"max_qubits",
|
|
"answers"
|
|
],
|
|
"properties": {
|
|
"method": {
|
|
"type": "string"
|
|
},
|
|
"accuracy": {
|
|
"type": "string"
|
|
},
|
|
"circuits": {
|
|
"type": "string"
|
|
},
|
|
"max_qubits": {
|
|
"type": "integer"
|
|
},
|
|
"max_cut": {
|
|
"type": "integer"
|
|
},
|
|
"available": {
|
|
"type": "boolean",
|
|
"description": "false when this build or this machine lacks it."
|
|
},
|
|
"answers": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"options": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"methods": {
|
|
"type": "object",
|
|
"required": [
|
|
"methods"
|
|
],
|
|
"properties": {
|
|
"methods": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/$defs/method"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"draw": {
|
|
"type": "object",
|
|
"description": "A program's circuit: as text (one wire per qubit), a standalone SVG drawing, a LaTeX (TikZ) picture, or a description in words for a screen reader, as asked.",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
},
|
|
"svg": {
|
|
"type": "string"
|
|
},
|
|
"latex": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"rewrite": {
|
|
"description": "The rewrites: options (each rewrite the program admits), apply (the program with one made), simplify (every rewrite to a fixed point), prove (two programs equal by rewrites) or explain (how one program becomes another).",
|
|
"anyOf": [
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"ok",
|
|
"options"
|
|
],
|
|
"properties": {
|
|
"ok": {
|
|
"const": true
|
|
},
|
|
"options": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"rule",
|
|
"why",
|
|
"result"
|
|
],
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"rule": {
|
|
"type": "string"
|
|
},
|
|
"why": {
|
|
"type": "string"
|
|
},
|
|
"gates": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"lines": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"result": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"note": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"ok",
|
|
"unread"
|
|
],
|
|
"properties": {
|
|
"ok": {
|
|
"const": false
|
|
},
|
|
"unread": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"result",
|
|
"why"
|
|
],
|
|
"properties": {
|
|
"result": {
|
|
"type": "string"
|
|
},
|
|
"why": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"steps",
|
|
"gates",
|
|
"result"
|
|
],
|
|
"properties": {
|
|
"steps": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/$defs/step"
|
|
}
|
|
},
|
|
"gates": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"minItems": 2,
|
|
"maxItems": 2
|
|
},
|
|
"result": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"description": "prove: whether checked rewrites take the first followed by the second's inverse to nothing.",
|
|
"required": [
|
|
"verdict",
|
|
"how",
|
|
"why"
|
|
],
|
|
"properties": {
|
|
"verdict": {
|
|
"enum": [
|
|
"equivalent",
|
|
"unproved"
|
|
]
|
|
},
|
|
"how": {
|
|
"const": "rewrites"
|
|
},
|
|
"why": {
|
|
"type": "string"
|
|
},
|
|
"steps": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"ok",
|
|
"found",
|
|
"a_steps",
|
|
"b_steps"
|
|
],
|
|
"properties": {
|
|
"ok": {
|
|
"const": true
|
|
},
|
|
"found": {
|
|
"type": "boolean"
|
|
},
|
|
"reordered": {
|
|
"type": "boolean"
|
|
},
|
|
"a_steps": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/$defs/step"
|
|
}
|
|
},
|
|
"b_steps": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/$defs/step"
|
|
}
|
|
},
|
|
"gates": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"form": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"step": {
|
|
"type": "object",
|
|
"required": [
|
|
"rule",
|
|
"why"
|
|
],
|
|
"properties": {
|
|
"rule": {
|
|
"type": "string"
|
|
},
|
|
"why": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"novelty": {
|
|
"description": "A program's structural distance to the known constructions and to programs given, each known construction it is found to be, and the measures it beats a reference on that the cost does not weigh.",
|
|
"anyOf": [
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"ok",
|
|
"compared",
|
|
"nearest",
|
|
"rediscovers"
|
|
],
|
|
"properties": {
|
|
"ok": {
|
|
"const": true
|
|
},
|
|
"qubits": {
|
|
"type": "integer"
|
|
},
|
|
"compared": {
|
|
"type": "integer"
|
|
},
|
|
"nearest": {
|
|
"anyOf": [
|
|
{
|
|
"type": "null"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"distance"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"distance": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"novelty": {
|
|
"type": [
|
|
"number",
|
|
"null"
|
|
]
|
|
},
|
|
"rediscovers": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"route",
|
|
"distance"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"route": {
|
|
"type": "string"
|
|
},
|
|
"distance": {
|
|
"type": "number"
|
|
},
|
|
"how": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"prepares": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"unasked": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"measure",
|
|
"candidate",
|
|
"reference"
|
|
],
|
|
"properties": {
|
|
"measure": {
|
|
"type": "string"
|
|
},
|
|
"candidate": {
|
|
"type": "number"
|
|
},
|
|
"reference": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/$defs/error"
|
|
}
|
|
]
|
|
},
|
|
"discover_evaluate": {
|
|
"type": "object",
|
|
"description": "The engine's verdict on a generator against a workbench specification.",
|
|
"required": [
|
|
"verified",
|
|
"sizes"
|
|
],
|
|
"properties": {
|
|
"verified": {
|
|
"type": "boolean"
|
|
},
|
|
"strength": {
|
|
"type": "string",
|
|
"description": "The weakest check it passed: tableau, exact and state decide it; random is evidence."
|
|
},
|
|
"failure": {
|
|
"type": "string"
|
|
},
|
|
"sizes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"cost": {
|
|
"type": "number"
|
|
},
|
|
"axes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"minItems": 2,
|
|
"maxItems": 2
|
|
},
|
|
"aberration": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"discover_archive": {
|
|
"type": "object",
|
|
"description": "A workbench archive's summary.",
|
|
"required": [
|
|
"spec",
|
|
"stats",
|
|
"front",
|
|
"cells"
|
|
],
|
|
"properties": {
|
|
"spec": {
|
|
"type": "string"
|
|
},
|
|
"task": {
|
|
"type": "string"
|
|
},
|
|
"axes": {
|
|
"type": "array"
|
|
},
|
|
"stats": {
|
|
"type": "object"
|
|
},
|
|
"joules_per_improvement": {
|
|
"type": [
|
|
"number",
|
|
"null"
|
|
]
|
|
},
|
|
"reference": {
|
|
"type": [
|
|
"object",
|
|
"null"
|
|
]
|
|
},
|
|
"best": {
|
|
"type": [
|
|
"object",
|
|
"null"
|
|
]
|
|
},
|
|
"front": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"cells": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"sources": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"discover_novelty": {
|
|
"description": "What is new in one entry of a workbench archive, read at the specification's largest size.",
|
|
"anyOf": [
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"ok",
|
|
"entry",
|
|
"compared",
|
|
"nearest",
|
|
"rediscovers"
|
|
],
|
|
"properties": {
|
|
"ok": {
|
|
"const": true
|
|
},
|
|
"qubits": {
|
|
"type": "integer"
|
|
},
|
|
"compared": {
|
|
"type": "integer"
|
|
},
|
|
"nearest": {
|
|
"anyOf": [
|
|
{
|
|
"type": "null"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"distance"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"distance": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"novelty": {
|
|
"type": [
|
|
"number",
|
|
"null"
|
|
]
|
|
},
|
|
"rediscovers": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"route",
|
|
"distance"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"route": {
|
|
"type": "string"
|
|
},
|
|
"distance": {
|
|
"type": "number"
|
|
},
|
|
"how": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"prepares": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"unasked": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"measure",
|
|
"candidate",
|
|
"reference"
|
|
],
|
|
"properties": {
|
|
"measure": {
|
|
"type": "string"
|
|
},
|
|
"candidate": {
|
|
"type": "number"
|
|
},
|
|
"reference": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"entry": {
|
|
"type": "string",
|
|
"description": "The entry's id."
|
|
},
|
|
"inputs": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "integer"
|
|
},
|
|
"description": "The specification's largest size, at which it was read."
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/$defs/error"
|
|
}
|
|
]
|
|
},
|
|
"converge_cohort": {
|
|
"type": "object",
|
|
"description": "How diverse a set of programs is: the Vendi score (the effective number of distinct designs), each one's distance to the centroid, the medoid and the outlier, and with times, the score in windows over time.",
|
|
"required": [
|
|
"programs",
|
|
"vendi",
|
|
"share",
|
|
"centroid",
|
|
"medoid",
|
|
"outlier"
|
|
],
|
|
"properties": {
|
|
"programs": {
|
|
"type": "integer"
|
|
},
|
|
"vendi": {
|
|
"type": "number"
|
|
},
|
|
"share": {
|
|
"type": "number",
|
|
"description": "The Vendi score over the number of programs."
|
|
},
|
|
"mean_distance": {
|
|
"type": "number"
|
|
},
|
|
"centroid": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"distance"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"distance": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"medoid": {
|
|
"type": "string"
|
|
},
|
|
"outlier": {
|
|
"type": "string"
|
|
},
|
|
"windows": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"from": {
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
},
|
|
"to": {
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
},
|
|
"programs": {
|
|
"type": "integer"
|
|
},
|
|
"vendi": {
|
|
"type": "number"
|
|
},
|
|
"share": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"narrowing": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"converge_history": {
|
|
"type": "object",
|
|
"description": "Whether the person's designs converge on a model's proposals along a program's history, and why; the versions made on their own set beside the rest.",
|
|
"required": [
|
|
"series",
|
|
"converging",
|
|
"why"
|
|
],
|
|
"properties": {
|
|
"series": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"version": {
|
|
"type": "string"
|
|
},
|
|
"at": {
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
},
|
|
"distance": {
|
|
"type": "number"
|
|
},
|
|
"share": {
|
|
"type": "number"
|
|
},
|
|
"organic": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"share": {
|
|
"type": [
|
|
"number",
|
|
"null"
|
|
]
|
|
},
|
|
"distance_trend": {
|
|
"type": [
|
|
"number",
|
|
"null"
|
|
]
|
|
},
|
|
"share_trend": {
|
|
"type": [
|
|
"number",
|
|
"null"
|
|
]
|
|
},
|
|
"converging": {
|
|
"type": "boolean"
|
|
},
|
|
"why": {
|
|
"type": "string"
|
|
},
|
|
"organic": {
|
|
"type": "object",
|
|
"properties": {
|
|
"versions": {
|
|
"type": "integer"
|
|
},
|
|
"distance": {
|
|
"type": [
|
|
"number",
|
|
"null"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"assisted": {
|
|
"type": "object",
|
|
"properties": {
|
|
"versions": {
|
|
"type": "integer"
|
|
},
|
|
"distance": {
|
|
"type": [
|
|
"number",
|
|
"null"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"study_measure": {
|
|
"type": "object",
|
|
"description": "The engine's measures of one participant's record: quality and its trend, diversity, novelty, authorship, convergence, selection skill, calibration of predictions, unassisted probe scores and ownership answers. A measure the record holds nothing for is left out or null.",
|
|
"required": [
|
|
"participant",
|
|
"condition"
|
|
],
|
|
"properties": {
|
|
"participant": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"condition": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"quality": {
|
|
"type": "object"
|
|
},
|
|
"diversity": {
|
|
"type": "object"
|
|
},
|
|
"novelty": {
|
|
"type": "object"
|
|
},
|
|
"authorship": {
|
|
"type": "number"
|
|
},
|
|
"convergence": {
|
|
"type": "object"
|
|
},
|
|
"selection": {
|
|
"type": "object"
|
|
},
|
|
"calibration": {
|
|
"type": "object"
|
|
},
|
|
"unassisted": {
|
|
"type": "object"
|
|
},
|
|
"ownership": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"study_cohort": {
|
|
"type": "object",
|
|
"description": "A study's report from its sealed protocol and the participants' sealed records: each record checked or refused with the reason, the measures per condition, each condition against the control on the primary measure with a bootstrap interval, and Cronbach's alpha of the ownership items.",
|
|
"required": [
|
|
"study",
|
|
"protocol",
|
|
"records",
|
|
"included",
|
|
"refused",
|
|
"conditions"
|
|
],
|
|
"properties": {
|
|
"study": {
|
|
"type": "string"
|
|
},
|
|
"protocol": {
|
|
"type": "string",
|
|
"description": "The sealed protocol's digest."
|
|
},
|
|
"hypotheses": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"primary": {
|
|
"type": "string"
|
|
},
|
|
"control": {
|
|
"type": "string"
|
|
},
|
|
"analysis": {
|
|
"type": "object"
|
|
},
|
|
"records": {
|
|
"type": "integer"
|
|
},
|
|
"included": {
|
|
"type": "integer"
|
|
},
|
|
"refused": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"record": {
|
|
"type": "integer"
|
|
},
|
|
"why": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"conditions": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"ownership_alpha": {
|
|
"type": [
|
|
"number",
|
|
"null"
|
|
]
|
|
},
|
|
"ownership_answers": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"convert": {
|
|
"type": "object",
|
|
"description": "A program carried from one format to another (OpenQASM 3, QIR as LLVM text, jeff as its Cap'n Proto message) and checked (engine::formats::convert_json): the program written, the program as read in OpenQASM 3, the readers' and writer's notes with their codes, what was read and written, and the check that holds the output to the input.",
|
|
"required": [
|
|
"ok",
|
|
"format",
|
|
"from",
|
|
"to",
|
|
"qasm",
|
|
"notes",
|
|
"read",
|
|
"written",
|
|
"check"
|
|
],
|
|
"properties": {
|
|
"ok": {
|
|
"const": true
|
|
},
|
|
"format": {
|
|
"const": "wai.quantum.convert/1"
|
|
},
|
|
"from": {
|
|
"enum": [
|
|
"qasm",
|
|
"qir",
|
|
"jeff"
|
|
]
|
|
},
|
|
"to": {
|
|
"enum": [
|
|
"qasm",
|
|
"qir",
|
|
"jeff"
|
|
]
|
|
},
|
|
"program": {
|
|
"type": "string",
|
|
"description": "The program written, for a text format (OpenQASM, QIR)."
|
|
},
|
|
"program_base64": {
|
|
"type": "string",
|
|
"description": "The program written, for a binary format (jeff), as standard base64."
|
|
},
|
|
"qasm": {
|
|
"type": "string",
|
|
"description": "The program as read, as OpenQASM 3: what every other tool takes."
|
|
},
|
|
"notes": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/$defs/diagnostic"
|
|
},
|
|
"description": "Each warning and note, with its code (Q7xx for the formats) and, for QIR, its line."
|
|
},
|
|
"read": {
|
|
"type": "object",
|
|
"required": [
|
|
"format"
|
|
],
|
|
"description": "What was read: the format, its version, a QIR module's profile, entry point, qubits, results and declared capabilities, a jeff module's tool, entry point, qubits and bits."
|
|
},
|
|
"written": {
|
|
"type": "object",
|
|
"required": [
|
|
"format"
|
|
],
|
|
"description": "What was written: the format, its version, and QIR's profile."
|
|
},
|
|
"check": {
|
|
"anyOf": [
|
|
{
|
|
"type": "null"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"what",
|
|
"verdict"
|
|
],
|
|
"properties": {
|
|
"what": {
|
|
"type": "string",
|
|
"description": "What was held to what."
|
|
},
|
|
"verdict": {
|
|
"type": "object",
|
|
"required": [
|
|
"verdict",
|
|
"how",
|
|
"why"
|
|
],
|
|
"properties": {
|
|
"verdict": {
|
|
"enum": [
|
|
"equivalent",
|
|
"different",
|
|
"unchecked"
|
|
]
|
|
},
|
|
"how": {
|
|
"enum": [
|
|
"tableau",
|
|
"exact",
|
|
"rewrites",
|
|
"random",
|
|
"state",
|
|
"shape",
|
|
"steps",
|
|
"distribution",
|
|
"identity",
|
|
"none"
|
|
],
|
|
"description": "The equivalence ladder's check (tableau, exact and rewrites are proofs; random is evidence); steps: the same steps one for one; distribution: every outcome's probability the same (evidence); identity: OpenQASM passed through; none: unchecked."
|
|
},
|
|
"why": {
|
|
"type": "string"
|
|
},
|
|
"global_phase": {
|
|
"type": [
|
|
"number",
|
|
"null"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"description": "The output read back and held to the program read (or, for a program read into OpenQASM, written back to its format and read again), or null when no check was asked."
|
|
},
|
|
"components": {
|
|
"type": "array",
|
|
"description": "The identities of the two formats, when a registered front end took part (engine::registry).",
|
|
"items": {
|
|
"$ref": "#/$defs/component"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"fabric_members": {
|
|
"type": "object",
|
|
"description": "The members of the fabric a statevector job can be placed on here: the CPU reference and each accelerator certified bit-exact in this process, each with the most qubits it holds; the devices found and not placed, with why; why each backend the build reaches found none; and the backends it reaches.",
|
|
"required": [
|
|
"kernel",
|
|
"members"
|
|
],
|
|
"properties": {
|
|
"kernel": {
|
|
"type": "string"
|
|
},
|
|
"auto": {
|
|
"type": "string",
|
|
"description": "Where auto places a state: on a member only where the committed measurements show it faster than this host's CPU for the job's size and fusion; everywhere else on the CPU."
|
|
},
|
|
"auto_rule": {
|
|
"type": "object",
|
|
"description": "The rule auto places by and what it rests on: this host (as the measurements name it), whether it was measured, where the rule places on it for the members found here, and every measured host with its rows (each with the spread of the CPU's and the member's times and whether the member was faster).",
|
|
"required": [
|
|
"rule",
|
|
"host",
|
|
"places",
|
|
"hosts"
|
|
],
|
|
"properties": {
|
|
"rule": {
|
|
"type": "string"
|
|
},
|
|
"host": {
|
|
"type": "string"
|
|
},
|
|
"measured_here": {
|
|
"type": "boolean"
|
|
},
|
|
"places": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"member",
|
|
"fusion",
|
|
"from_qubits",
|
|
"to_qubits"
|
|
],
|
|
"properties": {
|
|
"member": {
|
|
"type": "string"
|
|
},
|
|
"key": {
|
|
"type": "string"
|
|
},
|
|
"fusion": {
|
|
"type": "integer"
|
|
},
|
|
"from_qubits": {
|
|
"type": "integer"
|
|
},
|
|
"to_qubits": {
|
|
"type": "integer"
|
|
},
|
|
"min_launches": {
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"hosts": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"host",
|
|
"measured",
|
|
"rows"
|
|
],
|
|
"properties": {
|
|
"host": {
|
|
"type": "string"
|
|
},
|
|
"about": {
|
|
"type": "string"
|
|
},
|
|
"measured": {
|
|
"type": "string"
|
|
},
|
|
"load": {
|
|
"type": "string"
|
|
},
|
|
"discovery_ms": {
|
|
"type": "number"
|
|
},
|
|
"rows": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"member",
|
|
"fusion",
|
|
"qubits",
|
|
"cpu_ms",
|
|
"member_ms",
|
|
"faster"
|
|
],
|
|
"properties": {
|
|
"member": {
|
|
"type": "string"
|
|
},
|
|
"key": {
|
|
"type": "string"
|
|
},
|
|
"fusion": {
|
|
"type": "integer"
|
|
},
|
|
"qubits": {
|
|
"type": "integer"
|
|
},
|
|
"launches": {
|
|
"type": "integer"
|
|
},
|
|
"runs": {
|
|
"type": "integer"
|
|
},
|
|
"cpu_ms": {
|
|
"$ref": "job-result.v1.json#/$defs/fabric_spread"
|
|
},
|
|
"member_ms": {
|
|
"$ref": "job-result.v1.json#/$defs/fabric_spread"
|
|
},
|
|
"faster": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"pauli": {
|
|
"type": "object",
|
|
"description": "The members the pauli method's sum of terms can be placed on here (wai.quantum.spd/propagate): the CPU and each accelerator certified bit-exact against it on the pinned corpus, result and final table alike; the devices found and not placed, with why; and where auto places it (on the CPU: no member is measured faster for it).",
|
|
"required": [
|
|
"kernel",
|
|
"members"
|
|
],
|
|
"properties": {
|
|
"kernel": {
|
|
"type": "string"
|
|
},
|
|
"auto": {
|
|
"type": "string"
|
|
},
|
|
"members": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"member",
|
|
"implementation",
|
|
"parity"
|
|
],
|
|
"properties": {
|
|
"member": {
|
|
"type": "string"
|
|
},
|
|
"key": {
|
|
"type": "string"
|
|
},
|
|
"class": {
|
|
"type": "string"
|
|
},
|
|
"implementation": {
|
|
"type": "string"
|
|
},
|
|
"certificate": {
|
|
"type": "string"
|
|
},
|
|
"corpus": {
|
|
"type": "string"
|
|
},
|
|
"generator": {
|
|
"type": "string"
|
|
},
|
|
"parity": {
|
|
"$ref": "job-result.v1.json#/$defs/fabric_parity"
|
|
},
|
|
"cases": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"detail": {
|
|
"type": "object",
|
|
"properties": {
|
|
"backend": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"refused": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"backend": {
|
|
"type": "string"
|
|
},
|
|
"member": {
|
|
"type": "string"
|
|
},
|
|
"key": {
|
|
"type": "string"
|
|
},
|
|
"why": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"unavailable": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"backend": {
|
|
"type": "string"
|
|
},
|
|
"why": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"backends": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"members": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"member",
|
|
"implementation",
|
|
"parity"
|
|
],
|
|
"properties": {
|
|
"member": {
|
|
"type": "string"
|
|
},
|
|
"key": {
|
|
"type": "string"
|
|
},
|
|
"class": {
|
|
"type": "string"
|
|
},
|
|
"implementation": {
|
|
"type": "string"
|
|
},
|
|
"certificate": {
|
|
"type": "string"
|
|
},
|
|
"corpus": {
|
|
"type": "string"
|
|
},
|
|
"generator": {
|
|
"type": "string"
|
|
},
|
|
"parity": {
|
|
"$ref": "job-result.v1.json#/$defs/fabric_parity"
|
|
},
|
|
"cases": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"wide": {
|
|
"$ref": "job-result.v1.json#/$defs/fabric_wide"
|
|
},
|
|
"detail": {
|
|
"type": "object",
|
|
"description": "The most qubits it holds and what bounds it; for an accelerator, its backend and what discovery found.",
|
|
"properties": {
|
|
"max_qubits": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"memory": {
|
|
"type": "string"
|
|
},
|
|
"backend": {
|
|
"type": "string"
|
|
},
|
|
"device": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"refused": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"backend": {
|
|
"type": "string"
|
|
},
|
|
"member": {
|
|
"type": "string"
|
|
},
|
|
"key": {
|
|
"type": "string"
|
|
},
|
|
"why": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"unavailable": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"backend": {
|
|
"type": "string"
|
|
},
|
|
"why": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"backends": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"component": {
|
|
"type": "object",
|
|
"description": "One component that made the result (engine::registry): its kind, name and version, the BLAKE3 digest of its descriptor, and whether it is built in. A result carries these only when a registered component took part; one made by built-ins alone names them as it always has (its method, its compile's passes, its noise's channels and the engine's version), the digests of that version listed by the components list.",
|
|
"required": [
|
|
"kind",
|
|
"name",
|
|
"version",
|
|
"digest",
|
|
"origin"
|
|
],
|
|
"properties": {
|
|
"kind": {
|
|
"enum": [
|
|
"method",
|
|
"pass",
|
|
"channel",
|
|
"front_end"
|
|
]
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"version": {
|
|
"type": "string"
|
|
},
|
|
"digest": {
|
|
"type": "string",
|
|
"pattern": "^[0-9a-f]{64}$",
|
|
"description": "BLAKE3 of the component's descriptor in its canonical JSON (engine::registry::digest_of)."
|
|
},
|
|
"origin": {
|
|
"enum": [
|
|
"built-in",
|
|
"registered"
|
|
],
|
|
"description": "built-in: the engine's own; registered: a host's own, added in its process, not part of the engine."
|
|
},
|
|
"certified": {
|
|
"const": false,
|
|
"description": "Beside a registered component: the engine does not certify it."
|
|
}
|
|
}
|
|
},
|
|
"component_entry": {
|
|
"type": "object",
|
|
"required": [
|
|
"kind",
|
|
"name",
|
|
"version",
|
|
"digest",
|
|
"origin",
|
|
"descriptor"
|
|
],
|
|
"properties": {
|
|
"kind": {
|
|
"enum": [
|
|
"method",
|
|
"pass",
|
|
"channel",
|
|
"front_end"
|
|
]
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"version": {
|
|
"type": "string"
|
|
},
|
|
"digest": {
|
|
"type": "string",
|
|
"pattern": "^[0-9a-f]{64}$",
|
|
"description": "BLAKE3 of the component's descriptor in its canonical JSON (engine::registry::digest_of)."
|
|
},
|
|
"origin": {
|
|
"enum": [
|
|
"built-in",
|
|
"registered"
|
|
],
|
|
"description": "built-in: the engine's own; registered: a host's own, added in its process, not part of the engine."
|
|
},
|
|
"certified": {
|
|
"const": false,
|
|
"description": "Beside a registered component: the engine does not certify it."
|
|
},
|
|
"descriptor": {
|
|
"type": "object",
|
|
"description": "What the component declares of itself, as hashed into its digest: what it declares (declared) and what the engine reads of it (a method's accuracy classes, whether it models noise, where auto tries it; a pass's gates taken and given and its check; a channel's arity, placement and parameters; a format's title, extensions and profiles).",
|
|
"required": [
|
|
"declared"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"components": {
|
|
"type": "object",
|
|
"description": "Every component the engine plans, runs, compiles and converts through (engine::registry::Registry::components): the simulation methods, the compiler passes, the noise channels and the program formats, each in the registry's order with its identity and its descriptor. The command line, both MCP servers and the job service serve the built-ins alone.",
|
|
"required": [
|
|
"format",
|
|
"engine",
|
|
"methods",
|
|
"passes",
|
|
"channels",
|
|
"front_ends",
|
|
"registered"
|
|
],
|
|
"properties": {
|
|
"format": {
|
|
"const": "wai.quantum.components/1"
|
|
},
|
|
"engine": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"version"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"version": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"methods": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/$defs/component_entry"
|
|
}
|
|
},
|
|
"passes": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/$defs/component_entry"
|
|
}
|
|
},
|
|
"channels": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/$defs/component_entry"
|
|
}
|
|
},
|
|
"front_ends": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/$defs/component_entry"
|
|
}
|
|
},
|
|
"registered": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"description": "How many are registered (a host's own); 0 for the built-ins alone."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|