Fault-Tolerant Gate Constructions
Encoding a logical qubit protects information that merely sits still; the moment you compute on it, the protection can turn into a liability. A logical gate is a circuit acting on the physical qubits of a code block, and a careless circuit lets a single physical fault spread — one broken component seeds errors on several qubits of the same block, blowing past the correction budget and flipping the encoded qubit for good. A fault-tolerant gate construction is a circuit that refuses to let this happen: any single component fault — a bad gate, a mismeasurement, a noisy idle location, a corrupted ancilla — produces at most one error per code block, so the residual damage stays inside the correction radius and the next round of syndrome extraction cleans it up. The cleanest way to buy this guarantee is transversality: apply operations qubit-by-qubit, pairing qubit of one block only with qubit of another, never two qubits inside the same block. A single faulty gate then damages a single qubit per block, automatically. For CSS codes the Clifford generators — Hadamard, phase, and CNOT — are transversal by the code's symmetry. But transversality alone can never finish the job: the Eastin–Knill theorem proves that the transversal logical gates of any code form a finite group, and a finite group cannot approximate the continuum of rotations universal computing needs. Something non-transversal must supply the missing angle — magic-state distillation, lattice surgery, or gauge fixing — each engineered to obey the same single-fault-single-error discipline. This article is the toolbox of the fault-tolerant processor.
- A logical gate is fault tolerant if any single fault in its circuit produces at most one error per code block, keeping the damage inside the correction radius rather than letting it cascade into a logical error.
- Transversal gates — single-qubit or pairwise-aligned operations applied physical-qubit-by-physical-qubit — are fault tolerant for free, because no gate ever couples two qubits within the same block.
- The Eastin–Knill theorem forbids any code from having a transversal universal gate set: the transversal logical gates always form a finite group, so at least one gate must come from another mechanism.
- Magic-state distillation supplies the non-Clifford gate by purifying noisy resource states and injecting them by teleportation; the 15-to-1 protocol drives the error as .
- Lattice surgery realizes logical Clifford operations on the surface code by merging and splitting patches to measure joint logical operators, using only local 2D interactions.
- Key idea: fault tolerance is a property of the circuit, not of the code — a gadget is fault tolerant when one fault makes at most one error per block; transversality guarantees this cheaply, and everything non-transversal (distillation, surgery, gauge fixing) is built to preserve the same invariant.
Fault tolerance is a circuit-level property, not a code property: a gadget is fault tolerant if any single fault produces at most one error per code block, so the error stays within the code's correction radius. Transversality is the simplest way to guarantee this; everything non-transversal — distillation, lattice surgery, gauge fixing — is engineered to preserve the same invariant.
Where this lives today
Fault-tolerant gate constructions are no longer theory — they are the instruction set of the machines now being built. Superconducting and neutral-atom surface-code processors run their logical Clifford operations almost entirely by lattice surgery: patches merge and split to enact CNOTs and joint measurements with only nearest-neighbor 2D coupling, and the recommended Pauli corrections are tracked in software as a Pauli frame rather than applied physically. The non-Clifford gate, forbidden transversally by Eastin–Knill on the surface code, is supplied by magic-state factories that distill and inject ; because each costs a distilled state while Cliffords are cheap, compilers for Shor's algorithm and quantum chemistry now optimize almost entirely for -count and -depth. In 2024 Google's surface-code experiment demonstrated the exponential error suppression these constructions promise, with the logical error rate falling by a factor of roughly for each increase of the code distance by two. The complementary, distillation-free route is alive too: gauge fixing between the 2D color code (transversal Clifford, including and ) and the 3D gauge color code (transversal ) yields a universal fault-tolerant set by measuring gauge operators to switch codes, and neutral-atom platforms have begun running transversal logical gates and code-switching primitives that make this concrete. Every one of these rests on the single invariant Shor imposed: one fault, at most one error per block.
The physical picture
Picture a code block as a sealed vault: the information is smeared across many qubits so that touching any one of them reveals nothing and ruins nothing. A transversal gate reaches into two vaults at once but only ever wires qubit of one vault to qubit of the other — never qubit to qubit of the same vault. So if a gate misfires, exactly one qubit per vault goes wrong, which is precisely the failure the code was designed to shrug off. The whole art of fault tolerance is preserving this discipline: keep every wire between blocks, none inside a block, and a lone fault can never grow.
The Eastin–Knill theorem says you cannot do everything this gently. The transversal gates form a finite group — a discrete set of symmetries — but universal computation needs a continuum of rotations. Something has to give: you import the missing angle from outside via a purified resource state (a magic state), or you temporarily morph the code into a sibling code (gauge fixing) whose easy gates are exactly the ones the first code found hard. The dominant modern route is the first: prepare noisy encoded states, distill many into one much cleaner copy, and inject it by teleportation to enact the non-Clifford gate. The second figure is the quantity an architect actually budgets — how fast distillation cleans a magic state.
Lattice surgery is the plumber's alternative to teleportation for the Clifford part. Rather than swimming two logical surface-code patches around each other to entangle them, you knock down the wall between two adjacent patches for a few rounds — measuring the joint logical operator along the seam — then rebuild the wall. The merge/split sequence enacts a logical measurement and, with an ancilla patch, a logical CNOT, all using the same local stabilizer measurements the idle code already runs. Gauge fixing, finally, treats a subsystem code's extra freedom as a dial: measuring a gauge operator fixes its value, promotes it to a stabilizer, and morphs one code into a sibling whose transversal gates are complementary — so alternating between the pair recovers universality with no distillation at all.
The core equations
Fault tolerance starts with a single inequality, the contract every gadget must sign. A gate is fault tolerant exactly when one fault cannot push the per-block error weight above what the code can correct.
where: — the code distance; — the number of arbitrary single-qubit errors the code corrects. Reading: the criterion is about propagation, not about the logical map — many circuits implement the right logical unitary yet violate this contract by letting one fault become a weight-2 error, which is then uncorrectable. The simplest way to satisfy the contract is a transversal gate: a tensor product of operations acting independently on corresponding physical qubits, with no coupling between two qubits of the same block.
where: — the logical operation induced on the encoded qubit(s); — a single-qubit gate on physical qubit ; — a gate coupling qubit of one block to qubit of another block only; — physical qubits per block. Reading: because every qubit meets at most one gate, and that gate reaches at most one partner in another block, a single fault lands on at most one qubit per block — equation (1) holds automatically. Which logical gate a transversal circuit produces is decided by how Cliffords conjugate Paulis. These four identities are the entire multiplication table needed to track a Clifford through a stabilizer code.
where: — Hadamard gate; — phase gate; — the Pauli operators. Reading: a bitwise swaps the code's -type and -type structure, so on a self-dual CSS code it implements logical ; bitwise likewise implements logical up to a Pauli — these are the transversal Clifford generators. The two-block generator is the transversal CNOT, whose fault tolerance and logical action both follow from how it copies Paulis between control and target.
where: — controlled-NOT with control on the first qubit. Reading: copies forward (control → target) and copies backward (target → control); applied qubit-wise between two CSS blocks this sends and , exactly the logical CNOT. Transversality can never finish the universal set, and the reason is a theorem. The logically nontrivial transversal gates of any code form a finite group.
where: — the group of transversal logical gates of a code with distance . Reading: a finite group is discrete, so it cannot be dense in — no transversal set approximates arbitrary rotations, and universality demands at least one non-transversal gate. This is the Eastin–Knill obstruction. Lattice surgery supplies the multi-qubit Cliffords non-transversally but still locally. Merging two surface-code patches for a few rounds measures a joint logical operator whose value is read off the new seam stabilizers.
where: — the logical operators of two adjacent patches; — the outcome of the joint measurement, equal to the product of the seam stabilizer outcomes. Reading: the merge measures without measuring either alone, so it entangles the logical qubits while leaving each one's superposition intact — the ingredient a measurement-based CNOT needs. The non-Clifford gate itself is injected by teleportation through a magic state, converting a purified resource into a logical .
where: — the magic state carrying the phase; — a measurement outcome; — a Clifford (phase-gate) correction applied only when . Reading: the hard, continuous rotation is precomputed into the offline state ; the online circuit is pure Clifford plus a classically conditioned Clifford correction, so all the non-transversal difficulty is quarantined in preparing — which distillation makes fault tolerant.
The goal is to prove that applying CNOT qubit-by-qubit between two blocks of the same CSS code does two things at once: it implements the logical CNOT, and it propagates any single fault to at most one error per block, so it satisfies the fault-tolerance contract of equation (1). We take a CSS code with -type stabilizer generators and -type generators, logical operators built from physical Paulis, and two identical blocks (control) and (target), then track both the code space and a lone fault through the bitwise gate .
Step 1. Check that -type stabilizers stay in the group. A generator on block propagates under the bitwise CNOT to , using copies forward from equation (4). Because both blocks are the same code, is itself a stabilizer of , so the image is the product of two stabilizers and remains in the joint stabilizer group. Why: preserving the stabilizer group is what guarantees the gate maps the code space to itself rather than leaking amplitude out of it.
Step 2. Check the -type generators the same way. A generator on block propagates to , since copies backward. Again the extra factor is a stabilizer of , so the image stays in the group. Why: CSS codes keep and checks separate, so the two Pauli-copy directions of CNOT act on the two check types independently and neither is spoiled.
Step 3. Read off the logical action. The same propagation applied to the logical Paulis gives and , while and are left unchanged. This is exactly the defining conjugation of the logical CNOT with the control and the target. Why: a stabilizer gate is fully specified by its action on logical Paulis, so matching all four generators of the logical Pauli algebra confirms the gadget really is the logical CNOT.
Step 4. Follow a single fault. A fault on the physical gate can leave a Pauli error on qubit of and qubit of — one qubit in each block. No physical gate ever couples qubit to qubit inside the same block, so the intra-block weight can never exceed 1. Why: this is the geometric heart of fault tolerance — the absence of intra-block wires caps the damage at weight 1, independent of what the fault actually is.
Step 5. Close the contract. A weight-1 error per block satisfies for any , so the next round of syndrome extraction and decoding removes it. The gadget therefore meets the single-fault-single-error criterion and is fault tolerant. Why: the correction radius is exactly the budget the propagation stays within, so no accumulation of one fault ever becomes a logical error.
Go deeper · Derivation B · 2 minEastin–Knill: no code has a transversal universal gate set
The goal is to show that the transversal logical gates of any code with distance form a finite (hence non-universal) group, which forces every universal fault-tolerant scheme to include at least one non-transversal gate. The engine of the proof is a collision between two facts: a continuous gate family must be generated by a Hermitian operator, while a transversal gate's generator is a sum of single-qubit terms — and a distance-2 code, by the Knill–Laflamme conditions, cannot let any single-qubit operator act nontrivially on the logical information. We suppose a continuum exists and derive a contradiction.
Step 1. Assume a one-parameter transversal family. Suppose is a continuous family of transversal logical gates connected to the identity. Because each is a tensor product , its generator is a sum of single-qubit terms, with each Hermitian and supported on one qubit. Why: transversality is exactly the statement that the gate factorizes qubit-by-qubit, and differentiating a product of single-qubit unitaries produces a sum of single-qubit generators.
Step 2. Project onto the code space. Let be the projector onto the code. The logical rotation the family induces is generated by . Why: only the action inside the code space carries logical meaning, so the relevant generator is the compression , not on the full Hilbert space.
Step 3. Kill the single-qubit pieces. For a code of distance that detects every weight-1 error, the Knill–Laflamme conditions give for scalars : any single-qubit operator acts on the code space as a multiple of the identity. Summing, . Why: error correction of weight-1 errors is precisely the demand that low-weight operators carry no logical information, and that is exactly what forbids a single-qubit generator from rotating the logical qubit.
Step 4. Conclude discreteness. The induced logical generator is proportional to the identity, so acts as a global phase on the code — no nontrivial continuous logical rotation exists. The transversal logical group therefore has no one-parameter subgroups: it is discrete, and modulo global phase it is finite. Why: a Lie group with trivial Lie algebra is discrete, so the transversal gates cannot fill out and cannot be universal — universality must come from elsewhere.
Go deeper · Derivation C · 2 minLogical CNOT by lattice surgery
The goal is to construct a fault-tolerant logical CNOT between two surface-code patches using only merge/split joint measurements and one logical ancilla, with nothing but nearest-neighbor 2D interactions — the operation that lets a planar chip compute without ever moving or braiding qubits. The tool is the measurement-based identity that a CNOT can be assembled from a joint measurement, a joint measurement, an ancilla prepared in , and Pauli corrections; lattice surgery realizes each joint measurement by merging patches along a boundary.
Step 1. Place an ancilla. Prepare a logical ancilla patch in sitting between the control patch and the target patch . Why: the ancilla is the intermediary that carries entanglement from control to target so the two data patches never need to touch directly.
Step 2. Merge for . Merge and along their rough boundary for about rounds; the new seam stabilizers multiply to , so the merge measures with outcome , and splitting restores two patches. Why: measuring the joint without measuring either alone entangles and while preserving each logical superposition — the first half of the CNOT.
Step 3. Merge for . Merge and along the complementary smooth boundary to measure with outcome , then split. Why: the two joint measurements are in complementary bases, which is exactly the pair the measurement-based CNOT identity requires.
Step 4. Read out the ancilla and correct. Measure the ancilla in the basis with outcome . The three outcomes determine a Pauli correction on and , which is not applied physically but tracked in the classical Pauli frame. Why: Pauli corrections commute cleanly through later Clifford operations, so bookkeeping them in software is free and avoids injecting fresh gate faults.
Step 5. Confirm fault tolerance. Each merge is rounds of the same local stabilizer measurement the idle code already performs, so a single fault flips one seam syndrome bit and is corrected by the standard decoder — no error spreads across the logical qubit. Why: reusing idle-storage error correction as the mechanism for the gate means the gate inherits the code's fault tolerance for free, with no new failure mode.
Limiting cases
Each construction occupies a regime defined by what it can do and what it costs; laid side by side they are the menu a fault-tolerant architect chooses from.
| Case | Result | Meaning |
|---|---|---|
| Transversal Clifford (CSS) | transversal | generates the whole Clifford group with zero qubit overhead beyond the blocks; fault tolerant by construction but not universal |
| Eastin–Knill obstruction | is a finite group | no code admits a transversal universal set — at least one gate must use distillation, surgery, or gauge fixing |
| Magic-state injection | via | supplies the non-Clifford gate; cost is many noisy states per distilled one, dominating the overhead |
| Lattice surgery (2D) | by merge/split | realizes Clifford operations with only nearest-neighbor 2D coupling and a strip of ancillas; time cost rounds per merge |
| Gauge fixing (subsystem) | switches between codes with complementary transversal sets (e.g. 3D color code) to recover universality; needs a larger or higher-dimensional code | |
| Perfect single fault () | weight-1 error, | one fault, one error per block, always inside the correction radius — the tightest nontrivial fault-tolerant regime |
Worked examples
1 · How fast 15-to-1 distillation cleans a magic state (fully worked)
The Bravyi–Kitaev 15-to-1 protocol uses the Reed–Muller code to distill 15 noisy states into one, with output error to leading order. Suppose your raw magic states have error . Find the crossover error below which distillation helps, the output after one round, and the output after two rounds.
Step 1. Find the crossover. Distillation improves a state when , i.e. , i.e. . Solving gives the crossover . Any raw error below gets cleaner; above it, distillation makes things worse, so this is effectively the distillation threshold for the gate. Our raw error sits comfortably below it.
Step 2. One round. Substitute : . A single round has improved the magic state by nearly three orders of magnitude, at a cost of 15 raw states (plus the Clifford circuit and its own error correction) per output.
Step 3. Two rounds. Feed the round-1 output back in as the new raw error: . The cubic map is doubly exponential in the number of rounds — each round roughly cubes the error — so two rounds reach , deep enough for a large algorithm, using raw states per final magic state.
Step 4. Read the cost. The overhead is set by the distance from raw error to target: because the map is , reaching error needs only rounds but a raw-state count that grows as a power of . Distillation converts a modest, above-hardware-threshold -gate error into an arbitrarily small one, and its state count — not the Clifford part — is what dominates fault-tolerant resource estimates. This is why compiling an algorithm reduces to counting its gates.
2 · The fault ledger of a transversal CNOT on the Steane code
The Steane code has , so . Run a transversal CNOT between two Steane blocks and audit whether one fault can ever become uncorrectable.
Step 1. Fix the budget. With , the correction radius is : the code corrects any single-qubit error on each block independently. A logical error requires a residual weight (a minimum-weight logical operator has weight 3) that survives decoding.
Step 2. Enumerate the fault locations. The gadget is 7 physical CNOTs, for . A single fault is one faulty CNOT. Its worst-case output is a two-qubit Pauli on that gate's control and target — qubit of and qubit of .
Step 3. Tally per-block weight. That worst-case fault deposits at most one Pauli on block (qubit ) and at most one on block (qubit ): weight in each block. No physical CNOT touches two qubits of the same block, so there is no wire along which the error could grow to weight 2 within a block.
Step 4. Compare to the budget. Weight in each block, so the single fault is correctable by one round of Steane syndrome extraction on each block. A single fault anywhere in the transversal CNOT is always correctable on the code — the gadget passes the ledger, which is the concrete meaning of fault tolerance. The same audit fails for a hypothetical circuit that entangled two qubits of one block: there a single fault could reach weight 2, exceed , and cause a logical error.
Physics of the portrait
Fault-tolerant gate constructions have a clear point of origin: before 1996 it was not even certain that computing on encoded qubits without amplifying errors was possible. One paper turned the question into an engineering discipline.
Origins · 1 minPeter Shor and how this was discovered
Peter Shor is best known for the 1994 factoring algorithm that made quantum computing a threat and a promise at once, but his contribution to fault tolerance is just as foundational. In 1995 he wrote down the first quantum error-correcting code, the nine-qubit code, proving that quantum information could be protected at all. The deeper problem remained: a stored qubit is useless if you cannot compute on it without the error correction itself spreading faults. In his 1996 paper "Fault-Tolerant Quantum Computation," Shor introduced the constructions this article is about — transversal gates, fault-tolerant syndrome extraction using verified ancillas ("Shor states"), and the discipline that a single fault must produce at most one error per block. That single-fault-single-error principle is the invariant every later scheme, from lattice surgery to gauge fixing, is built to preserve. Combined with the threshold theorem proved soon after by Aharonov and Ben-Or, Kitaev, and Knill, Laflamme and Zurek, Shor's constructions showed that arbitrarily long quantum computations are possible below a constant error rate. The Eastin–Knill no-go theorem (2009) later marked the exact boundary of the transversal approach, and magic-state distillation, lattice surgery, and gauge fixing grew up to cross it — but all of them still answer to the fault-propagation bookkeeping Shor first imposed.
Going further
Texts. Nielsen & Chuang, Quantum Computation and Quantum Information, Ch. 10.6 (fault-tolerant quantum computation) · Preskill, Lecture Notes on Quantum Computation, Ch. 7 · Gottesman, Stabilizer Codes and Quantum Error Correction (PhD thesis, Caltech, 1997) · Eastin & Knill, Restrictions on Transversal Encoded Quantum Gate Sets, PRL 102, 110502 (2009) · Bravyi & Kitaev, Universal quantum computation with ideal Clifford gates and noisy ancillas, PRA 71, 022316 (2005) · Horsman, Fowler, Devitt & Van Meter, Surface code quantum computing by lattice surgery, NJP 14, 123011 (2012) · Bombín, Gauge color codes, NJP 17, 083002 (2015) · Kitaev, Shen & Vyalyi, Classical and Quantum Computation. The key checkpoints in this article are: the Clifford–Pauli conjugations , , and the CNOT identities of equation (4); the fact that a transversal CNOT on a CSS code preserves the stabilizer group, implements the logical CNOT, and keeps one fault to weight ≤ 1 per block; the Eastin–Knill statement and its local-generator plus Knill–Laflamme proof skeleton; the lattice-surgery merge/split measurement of joint logical operators; and the 15-to-1 distillation map with crossover and the worked values . The magic state and the criterion are standard textbook values; no hardware threshold is quoted as a universal number, as thresholds are model-dependent.
Prerequisites. Stabilizer Formalism · Pauli Group and Clifford Group · CSS Codes · Code Distance and Logical Operators · Syndrome Measurement and Decoding. Leads to. Magic-State Distillation · Threshold Theorem · Surface Codes.
Ask the tutor: Want to walk through the fault ledger of a specific gadget, or see exactly how code switching between the Steane and Reed–Muller codes assembles a universal fault-tolerant set?
What exactly does "fault tolerant" mean — is it the same as "error correcting"?
No, they are different layers. Error correction is about the code: it says a stored logical qubit can survive up to physical errors between correction rounds. Fault tolerance is about the circuit: it says the operations you run — gates, preparations, measurements, and even the error-correction circuitry itself — do not amplify a single fault into more errors than the code can handle. A perfect code run with careless gadgets is not fault tolerant, because one broken gate can spread into a weight-2 error the code cannot fix. The formal contract is the single-fault-single-error rule: any one component failure leaves at most one error per block. Fault tolerance is what lets error correction actually be applied continuously during a computation rather than only to idle memory.
Why is a transversal gate automatically fault tolerant?
Because of its geometry. A transversal gate acts qubit-by-qubit: each physical qubit meets at most one elementary gate, and that gate reaches at most one partner qubit — always in a different block, never a second qubit of the same block. So if any one gate misfires, the damage lands on a single qubit of each block involved, which is a weight-1 error per block. Since no wire ever couples two qubits inside one block, there is simply no path along which a single fault could grow to weight 2 within a block. A weight-1 error is inside the correction radius of any distance-3-or-better code, so the next syndrome round removes it. Fault tolerance here is not something you check gate-by-gate; it follows structurally from the absence of intra-block coupling.
What does the Eastin–Knill theorem actually forbid, and how do people get around it?
It forbids a single code from having a transversal implementation of a universal gate set. Concretely, the transversal logical gates of any code form a finite group, and a finite group is discrete, so it can never approximate the continuous set of rotations a universal computer needs — there is always at least one gate you cannot do transversally. It is a no-go, not a dead end. The standard escapes all give up transversality for one gate while keeping the fault-tolerance contract by other means: magic-state distillation prepares the hard gate offline and injects it by teleportation; gauge fixing switches to a sibling code whose transversal set includes the missing gate; code concatenation and pieceable fault tolerance build the gate from carefully verified non-transversal pieces. The theorem is what tells architects where the expensive part of the machine has to be.
Why is the non-Clifford T gate so much more expensive than a CNOT?
Because the CNOT is transversal (or realizable by lattice surgery) at essentially the cost of the code blocks themselves, while the gate is forbidden transversally by Eastin–Knill and must be manufactured. The standard route prepares many noisy copies of the magic state and distills them into one clean copy — the 15-to-1 protocol turns 15 states of error into one of error — then teleports that state in to enact the gate. Each logical therefore consumes a whole distilled state produced by a magic-state factory, which can dominate the qubit and time budget of a fault-tolerant computer. This asymmetry is why resource estimates for algorithms count gates and -depth rather than total gate count: the Cliffords are nearly free, and the gates are where the cost lives.
How can lattice surgery do a CNOT without ever moving or braiding qubits?
It replaces motion with measurement. A CNOT can be built from a joint measurement, a joint measurement, an ancilla logical qubit in , and Pauli corrections — an identity that needs no qubit to physically travel. Lattice surgery realizes each joint measurement by temporarily merging two adjacent surface-code patches along a boundary for about rounds: the new seam stabilizers multiply to the joint logical operator, so measuring them measures or without measuring either logical operator alone. Splitting rebuilds the separate patches. Because every step is a local stabilizer measurement — the same ones the idle code already runs — the operation needs only nearest-neighbor 2D coupling and inherits the code's fault tolerance directly. The Pauli corrections are tracked in classical software, so nothing is braided and no qubit is relocated.
What is gauge fixing, and how does it reach universality without distillation?
A subsystem code has extra operators — gauge operators — that commute with the logical operators but are not stabilizers; their values are free. Gauge fixing measures a chosen gauge operator, which fixes its value and promotes it to a stabilizer, shrinking the gauge group and transforming the code into a different code with a different transversal gate set. The trick to universality is to pair two codes with complementary transversal sets: for example, the 2D color code has transversal Clifford gates including and , while the 3D gauge color code has a transversal but lacks transversal . By gauge-fixing back and forth between them, every gate in a universal set is transversal in whichever code you are currently in, so the whole computation is fault tolerant with no magic states at all. The price is a larger, higher-dimensional code and the machinery to switch between them.
Does fault tolerance also cover state preparation and measurement, or only gates?
It has to cover all of them, or the guarantee is empty. A logical computation is preparations, gates, measurements, and idle waiting, and a single fault in any of these must still produce at most one error per block. Fault-tolerant preparation of a logical or an ancilla cannot simply encode a physical state, because one fault during encoding could spread; instead one uses verified ancillas — Shor's original construction prepares a cat-state ancilla and checks it before use, discarding and retrying if a fault is detected. Fault-tolerant measurement likewise repeats or encodes the readout so a single mismeasurement does not force a wrong logical outcome. This is why fault-tolerant architecture is a systems discipline: the gates are only tolerant if the states they act on and the measurements that read them obey the same single-fault-single-error contract.