#[non_exhaustive]pub enum ExecError {
Show 23 variants
IdOverflow(&'static str),
BoundaryBindingExpansionLimit {
limit: usize,
},
UnflattenedRepeat,
UnknownCoord(IVec2),
InvalidCircuit(NodeTemplateInstanceMergeError),
InvalidProgram(BloqValidationError),
DetectorBundle(DetectorBundleError),
LogicalSignatureTooLarge {
outputs: usize,
},
InvalidInjectionPatch {
port: IVec3,
},
UnknownPreparationInput {
port: IVec3,
},
InvalidCczPreparation,
MissingRecord(u32),
MissingRecordRemap(u32),
EmptyMppProduct,
UnresolvedLoopState(u32),
BloqFlatten(FlattenError),
CoordinateOverflow(CoordinateOverflowError),
Cycle(CycleDetected),
MalformedGraph(&'static str),
DecodeObservableNotClosed {
decode: u32,
observable: u32,
instance: u32,
later: u32,
},
IncompatibleEarlyOutputReads {
first: u32,
second: u32,
before: u32,
},
EarlyOutputGateUnavailable {
observable: u32,
before: u32,
},
Engine(SimError),
}Expand description
Failures on the noiseless physical-verification path.
That path is the run_bloq family, CircuitExecutor, and the shared
program-preparation and output-closure analysis in front of them — which
lower() also runs, and reports as LowerError::Analysis.
The dynamic causal runtime is the other execution engine in this crate and
reports RuntimeError instead. Neither type is a superset of the other:
this one covers exact execution and the static analysis in front of it,
RuntimeError covers timing, retries, and mock decoding.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
IdOverflow(&'static str)
Dense physical-verification identifiers exhausted u32.
BoundaryBindingExpansionLimit
Expanding a complete physical readout’s binding DAG exceeded the verifier’s budget.
UnflattenedRepeat
The circuit still contains an Op::Repeat; call
CoordCircuit::flatten first.
UnknownCoord(IVec2)
A coordinate referenced by an op is absent from the coordinate layout.
InvalidCircuit(NodeTemplateInstanceMergeError)
A raw CoordCircuit failed the same
structural preflight used for template emission.
InvalidProgram(BloqValidationError)
A required Bloq IR emission plan could not be materialized.
DetectorBundle(DetectorBundleError)
A shared detector use has an invalid bundle or owner binding.
LogicalSignatureTooLarge
The full logical Pauli signature does not fit the platform’s index width.
InvalidInjectionPatch
Compact surface code injection requires one physical seed at the unique intersection of the input patch’s logical X and Z axes.
Fields
port: IVec3Input port with invalid injection geometry.
UnknownPreparationInput
A deferred resource preparation named a port not present in the compiled program’s logical-input table.
Fields
port: IVec3Unknown input port.
InvalidCczPreparation
A CCZ resource must bind three different logical input ports.
MissingRecord(u32)
A conditional Pauli / detector referenced a measurement id that has not been produced yet in this shot.
MissingRecordRemap(u32)
A merged circuit record has no local-to-global identity in the prepared program.
EmptyMppProduct
An MPP product was empty (no Paulis).
UnresolvedLoopState(u32)
A detector referenced a loop-carried state term that the flattened circuit did not resolve to concrete measurement records.
BloqFlatten(FlattenError)
Flattening Bloq IR failed.
CoordinateOverflow(CoordinateOverflowError)
An instance offset moves a template qubit outside the global i32
coordinate lattice.
Cycle(CycleDetected)
The bloq node graph has a cycle, so no deterministic emit order exists.
MalformedGraph(&'static str)
The bloq graph is structurally invalid for execution.
DecodeObservableNotClosed
A Decode’s named observable folds an Output-face boundary operator
whose support a quantum node scheduled AFTER the decode’s cut touches: the
operator has no unresolved-but-modeled frontier, so the decoder estimate
computed at the cut would refer to a face the later node reopens/consumes
— a wrong-time boundary. Unlike the terminal read, which
closure::plan_early_output_reads moves in front of the consuming node,
a decode cut has no fixture and stays rejected up front by
guard_decode_observable_closure. observable is the Observable node
id, decode/later are node ids, instance the boundary operator’s
instance.
Fields
IncompatibleEarlyOutputReads
Incompatible partial observable reads cannot be split across output cuts without destroying their joint correlations.
Fields
An exported boundary’s condition is unavailable before its output is consumed.
Engine(SimError)
The engine raised an error mid-shot.
Trait Implementations§
Source§impl Error for ExecError
impl Error for ExecError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()