A production quantum simulator shipped a gate with an inverted sign. Its test suite passed. Every benchmark scored on measurement counts reported perfect agreement, and would have kept reporting it forever, because that class of fault does not live in probability space at all.Two gates are enough to show it. Apply H, then Rz(π/2), to a single qubit. A correct backend and the broken one land on states that are orthogonal - as far apart as two quantum states can be - and every measurement probability comes out identical to the last bit.This book builds, from nothing and in Rust, the tooling that can see that difference.What you will build: A statevector simulator to 25 qubits, with every standard gateAn OpenQASM 2 and 3 parser that handles circuits exported from real hardwareGrover and QAOA, verified rather than assumedA differential fuzzer: generator, oracle, shrinker, triagePython bindings with PyO3, and a CI pipeline that runs the checks on every commitWhat makes this book different is the chapter on finding real faults in real compilers. Not exercises - public issue numbers you can open and read. A rotation silently dropped by Qiskit's transpiler, traced to a line where Rust's % keeps the sign of the dividend and an empty range swallows the gate. A controlled-swap in NVIDIA's CUDA-Q whose export path reads the targets and never reads the control.The two campaigns that found nothing are in here too, with the mutation testing that proves they could have found something. A tool that only ever reports findings is not a tool anyone should trust.Running through all of it is one question, and it is not really about quantum computing: what change to the code would make this assertion fail? If you cannot answer quickly and concretely, the assertion is decoration, and the code it covers is untested.You should already know Rust - ownership, borrowing, traits. You need no physics and no prior quantum computing. Complex numbers and matrix multiplication are enough; everything else is derived as it is used.The author reported Qiskit issue #16594, fixed in Qiskit 2.5.1.