Drop a bar magnet through a coil and watch the voltmeter. Before 1831 the reasonable expectation — Faraday's own, through seven years of failed experiments — was that flux should MAKE current: a strong magnet sitting in a coil should read a steady voltage. Does the meter read the flux, or its rate of change? And can the pulse's time-integral WEIGH the magnet — returning its dipole moment no matter how fast it falls?
Units: A·m² — the dipole moment coded into the generator's field formulas (an input coefficient, like copper's n in hall); a stock NdFeB N42 disk ~15×8 mm has m ≈ 0.5–0.6 A·m²
▶ Run this simulationRead how it works
Faraday induction: validated → validated + honest-module — derisk gates L–P EXECUTE the shipped FaradayModule.ts (sha pin + 32 strip pairs, module-internal mulberry32 0xfa2a, zero Math.random — 11th RNG cert): the shown m̂ = 0.5498857355 proven a FROZEN init measurement consuming the entire 11290-draw stream (one draw per 2e-5 s step of the real fall; fixedUpdate/render draw nothing → can never drift), bit-for-bit vs replica AND vs gate J's pin; 1200-call lockstep holds full state + the 360-cap trace ring + both lobe accumulators + frozen pass stats bit-exact with 4 resets and a NEW accumulator class (3·fl(1/360) === fl(1/120) as a product, but the subtractive residue drops exactly one substep: 3599 = 3·1200 − 1); the −0.0208% display gap telescopes EXACTLY into release deficit −0.0140% (gate B') + first-order sampling −0.0044% (dt/10 shrinks ×9.7) + weighted noise draw −0.0024% via m̂ = m̂₀ + (2a/Nμ₀)·Σ|emf|ε dt (resid 6.7e-16, z = −0.22 of the module's own 24-seed ensemble); and the disclosed forward-model circularity is CLOSED at BIT level: the oracle's 8-segment Lorentz sum lands the same 11290-term area double as the module's closed form (per-step ≤ 8.9e-16 — on-axis the motional integrand is constant in φ). Prior climb (no-oracle → validated) — a magnet weighed on a voltmeter: with NOTHING coded but the dipole's magnetostatic fields B = (μ₀/4π)[3(m·r̂)r̂ − m]/r³, A = (μ₀/4π)(m×r̂)/r² and the Lorentz force on the falling coil's charges (raw ∮(u×B)·dl segment sum; no Φ(z) closed form, no dΦ/dz, no EMF = −N dΦ/dt anywhere in the recovery), the entry-lobe area of the induced pulse returns m̂ = 0.549924 ± 1.0e-4 A·m² vs the NdFeB magnet's 0.55 (rel 1.4e-4 under ±3% reading noise; noiseless 2.9e-8) — and Faraday's law itself EMERGES: the segment sum equals −N dΦ/dt (independent ∮A·dl path) to 4.5e-8 of peak, the voltage crosses zero at 6.8e-10·a from the flux maximum, the accelerating magnet makes the exit lobe taller ×1.02634 (= the velocity ratio to 4.5e-6) and narrower yet the areas balance to 2.3e-10, the lab-frame −∮(∂A/∂t)·dl returns the same voltage as the magnet-frame Lorentz integral to 4.5e-8 (Einstein's 1905 opening puzzle), ×20 in drop height moves m̂ by 6.9e-7 (the area weighs geometry, not speed), and the pre-1831 steady-flux rival V ∝ Φ — Faraday's own failed expectation — is rejected at z = 6.6e3; 21/21 gates 0.2 s, tamper ⇒ exit 1
The generator codes THREE things and nothing else: the point-dipole fields B = (μ₀/4π)[3(m·r̂)r̂ − m r²]/r⁵ and A = (μ₀/4π)(m×r̂)/r² (the magnet's identity, Jackson §5.6), and closed-form free fall v = gt. The coil's voltage is built as a raw MOTIONAL line integral in the magnet's rest frame: EMF = N Σ_segments (u×B)·dl — the Lorentz force per unit charge on the moving wire, summed segment by segment (8 on-axis, 64 off-axis; the periodic-trapezoid sum is spectrally accurate). NO flux closed form Φ(z) = μ₀ma²/2(a²+z²)^{3/2}, NO dΦ/dz, NO Faraday's law appears in the recovery path; the flux for the emergence gates is computed by the INDEPENDENT path ∮A·dl (and a third, ∬B_z dA by 48×64 Gauss–Legendre disk quadrature — Stokes emerges to 1.7e-14). The estimator is the bench meter law m̂ = 2a·(∫|V|dt)/(Nμ₀) over the entry lobe, ended at the MEASURED sign flip of the voltage (multiplicative noise preserves sign), corrected for the predicted release deficit f = Φ(s₀)/Φ(0) = 1.4004e-4 computed from the coded geometry itself. 12 seeds re-read the same fall through a 50 kHz meter at ±3% uniform per sample — the module's own noise model. Real bench numbers: NdFeB m = 0.55 A·m², 240 turns, a = 13 mm, 0.25 m drop, peak ≈ 0.9 V. 21 gates in scripts/faraday-derisk.mjs (0.2 s); tamper ⇒ exit 1. ?world=faraday.
0.000101
0.00148
Faraday's law of induction EMF = −N dΦ/dt (Faraday 1831; Griffiths §7.2 'the universal flux rule') and the falling-magnet dipole-moment measurement m = 2a·(∫|V|dt)/(Nμ₀) (standard instructional experiment, e.g. Nicklin Am. J. Phys. 54, 422 (1986)) — recovered to 1.4e-4 with the law itself emergent at 4.5e-8. Non-circular: m, N, a, s₀, g, μ₀ are inputs, but ONLY as coefficients of the coded magnetostatics (the dipole's B and A) and stage kinematics — that the segment-summed Lorentz voltage equals −N dΦ/dt, that it crosses zero at the flux maximum, that its lobes balance exactly while acceleration skews their shapes, that its time-integral is blind to fall speed, and that the lab-frame induced-E integral agrees with the magnet-frame motional one, are all read off the sum; the estimator is the operational bench inversion (what the instructional lab computes from its scope trace), and Faraday's law lives only in the gates that test its emergence. The decisive discriminator is RATE-vs-STATE: the steady-flux rival (Faraday's own pre-1831 expectation, given the lab's own peak for calibration) predicts a unipolar pulse peaking where the measurement reads zero and a permanent voltage from a resting magnet — rejected at z = 6.6e3 and by an exact structural zero.
CERTIFIED (gates L–P, run #94): the derisk executes the shipped module source (sha-pinned 4ae85fa1…, mechanically type-stripped with 32 pairs each asserted exactly once, RNG census: _rng only in _recover, Math.random ×0, M_TRUE never in dynamics). The shown m̂ is a frozen init-time measurement — _recover() consumes the ENTIRE 11290-draw mulberry32(0xfa2a) stream and nothing after init draws, so the display can never drift; executed (_mRec, _mErr) are bit-identical to an independent replica and to gate J's pinned emulation. Lockstep: 1200 engine calls bit-exact in full state, trace ring (wraps ×1799), lobe accumulators and frozen pass stats, with the substep census {3×1199, 2×1} = 3599 itself pinned (the accumulator's subtractive rounding residue costs exactly one substep despite 3·fl(1/360) === fl(1/120) as a product — a new accumulator class). Display: HUD/status/chart bit-equal to replica templates at all 200 %6 writes, all live; the 'first pass…' fallback is proven DEAD (entry crosses its 1e-9 guard inside call 1 — harmless); shown m̂ rounds onto the truth label '0.550' while the doubles differ. Priced: shown gap −0.0208% = deficit −0.0140% + sampling truncation −0.0044% (first-order, ×9.7 under dt/10) + noise ε_w −0.0024% (exact identity, resid 6.7e-16; pinned draw z = −0.22 of the module's own 24-seed ensemble, mean −0.006% sd 0.065%); instrument circularity closed bit-for-bit (closed-form ≡ 8-seg Lorentz sum, final gap exactly 0). Tampers surgical: sha → only L; post-strip 1-ulp M_TRUE → only doubles-pinned M (m̂ moves 1 ulp, every display string absorbs it); known_value → only the 5 scoring gates, recovery and cert unchanged. The module (?world=faraday, src/modules/FaradayModule.ts) is honest by construction and needed no edit. Its live view is an explicitly dimensionless forward model of the closed-form flux (disclosed in its header; the on-screen claims — bipolar pulse, zero at flux max, equal lobe areas with the exit taller — are exactly the properties gates C/D/E prove emergent from the Lorentz sum). Its real-units panel ('recovered m = 2aA/(Nμ₀) vs true 0.550') is a forward-model recovery at dt = 2e-5 with ±3% reading noise: the derisk replays its exact RNG stream (mulberry32(0xfa2a), one draw per step, |noisy|·dt rectangle sum while z > 0) and pins the displayed number to float-exact 0: on-screen m̂ = 0.5498857355 = −0.021% off, decomposed as the predicted −0.014% release deficit (gate B', the same f = 1.4004e-4 the oracle corrects for) plus this seed's noise draw, well inside its disclosed ±3% envelope. The microscopic recovery of the same number — Lorentz force only, no closed form — is the oracle's gates A/B, which land at 1.4e-4 (noisy) and 2.9e-8 (clean).
Run #94 rung climbed: validated → validated + honest-module, ZERO module edits (31st zero-edit; gates 16/16 in ~3.5 s; one cert-expectation fix during authoring: the status branch census expected 'first pass…' to appear, but execution proved it dead — the gate now certifies the measured reality). Prior rung climbed: no-oracle → validated (50 → 51 oracles). Tolerances justified from prototype-measured floors: 4 independent 12-seed batches (seed_base 1000/2000/3000/7777) gave |mean rel| 1.1e-4–3.8e-4, SE 1.8–2.6e-4, worst seed ≤ 1.6e-3 → gates 1e-3/4e-3/8e-4 (~2.6× headroom); noiseless floors 2.9e-8 → 5e-7 (17×); three-path agreement 4.7–9.0e-8 of peak → 1e-6 (11–21×; the deviation is the O(d²) central-difference truncation 1.5Φ_max·v·g·d²/a² ≈ 1.2e-9 absolute — measured = predicted at the s = 0 probe); Stokes 1.7e-14 → 1e-11; lobe-ratio dev 4.5e-6 → 1e-4. Hand tamper (known 0.55 → 0.58) ⇒ 5 gates FAIL, exit 1, recovered value unchanged at 0.549924; restored by hand; in-script scoring self-test (gate K, known×1.02) green. Zero fix attempts on the physics — all 21 gates passed on the first full run (one mechanical fix: spread-operator Math.max overflows the call stack on the 160k-sample fine grid; reduce-based max). Design-time win: normalizing the three-path voltage comparisons by the pulse PEAK instead of the local value — at the s = 0 probe all three voltages vanish (that is gate D's very point), so a local ratio divides the finite-difference floor by itself and screams; the peak-normalized deviation is the honest instrument resolution. Second win: the off-axis drop (0.4a) turns the decorative-looking segment sum into a demonstrably load-bearing one (contributions span ×12) at zero extra machinery.
npm run derisk -- faraday (scripts/faraday-derisk.mjs)scripts/oracles/faraday.reference.jsonM. Faraday, 'Experimental Researches in Electricity — First Series', Phil. Trans. R. Soc. 122, 125–162 (1832; read November 1831). D. J. Griffiths, Introduction to Electrodynamics (4th ed.), §7.1.3, §7.2. A. Einstein, 'Zur Elektrodynamik bewegter Körper', Ann. Phys. 17, 891 (1905), opening paragraph. J. D. Jackson, Classical Electrodynamics (3rd ed.), §5.6. R. C. Nicklin, 'Faraday's law — quantitative experiments', Am. J. Phys. 54, 422 (1986). Rival: Faraday's 1824–1828 failed steady-state attempts, L. Pearce Williams, Michael Faraday (1965), ch. 4.