Spin a loop of wire steadily in a fixed magnetic field — the machine that makes essentially all of the world's electricity (Pixii 1832, one year after Faraday). Does the never-ending sinusoidal EMF — its amplitude NBAω, its frequency locked to the crank, its 90° lag behind the flux — emerge from nothing but the Lorentz force on the charges of the moving wires? And is the naive intuition 'motion through a field generates, whatever the motion' false?
Units: V — the peak EMF ε₀ = N B A ω = 50π V of the real bench (100 turns · 0.25 T · 0.02 m² · 2π·50 Hz), the textbook dynamo prediction (Griffiths §7.1.3)
▶ Run this simulationRead how it works
AC generator: no-oracle → validated — the dynamo run from the Lorentz force alone: with NOTHING coded but four straight wire segments, a rigid rotation θ = ωt, and the motional line integral EMF = N Σ (v×B)·dl (numeric cross products; no sinusoid, no cos ωt flux form, no ε₀ = NBAω, no Faraday's law anywhere in the recovery), the bench lock-in returns ε̂₀ = 157.099 ± 0.011 V vs the known peak NBAω = 157.0796 V (rel 1.2e-4 under 3 V meter noise; noiseless 7.4e-15) — and the whole dynamo EMERGES: the segment sum is a pure sinusoid (residual 5e-15) at exactly the crank rate (crossing-counted f = 50.000000 Hz), equals −N dΦ/dt with the flux from two independent paths (Faraday 1.7e-10 of peak, Stokes 5.6e-16), crosses zero AT the flux extremum (1.1e-11 rad), spins 2× → frequency ×2 AND amplitude ×2 (both exact — why a dynamo brightens, not just flickers), ε̂₀ ∝ ω, B, A to slope-1 exactly, only the two slicing conductors contribute (connectors an exact structural zero), and the rival 'rotation itself generates' — the same loop at the same ω spun about the axis PARALLEL to B — reads 0 to 2.3e-16 of ε₀ against its predicted 157 V, rejected at z = 2340; 25/25 gates 0.05 s, tamper ⇒ exit 1; module made honest: its circular ε₀ = NBAω recovery replaced by the same segment sum, on-screen 160.0 V / 0.2547 T pinned by the oracle to 0
The generator codes THREE things and nothing else: four straight wire segments (a 0.2 × 0.1 m rectangle, N = 100 turns), a rigid rotation matrix at θ = ωt (stage machinery — a body turning), and the Lorentz force per unit charge on each moving segment midpoint, EMF = N Σ (v×B)·dl with v = Ω×r — raw numeric cross products, 8 segments per side. NO sinusoid, NO cos ωt flux closed form, NO ε₀ = NBAω, NO EMF = −dΦ/dt appears in the recovery path; the flux for the emergence gates is computed by two INDEPENDENT paths (surface tessellation Φ = N ΣΣ B·(e₁×e₂) and line sum ∮(½B×r)·dl — Stokes emerges to 5.6e-16). The estimator is the bench lock-in: project the sampled voltage onto quadratures at the crank rate (we built the crank — ω is an input), ε̂₀ = √(b²+c²), 20 kHz over 10 periods. 24 seeds re-read the same spin with 3 V additive Gaussian meter noise (≈2% of full scale, the module's reading-noise class; additive because a real meter's floor does not vanish at the signal's zeros). Real bench: N = 100, A = 0.02 m², B = 0.25 T, f = 50 Hz → 111 V RMS, a mains-style line. 25 gates in scripts/generator-derisk.mjs (0.05 s); tamper ⇒ exit 1. ?world=generator.
0.011
0.00085
The alternating-current generator ε(t) = NBAω sin ωt (Faraday 1831 → Pixii's alternator 1832; Griffiths, Introduction to Electrodynamics 4th ed. §7.1.3; Feynman Lectures II ch. 16) — the peak recovered to 1.2e-4 under meter noise and 7.4e-15 clean, with the law itself emergent. Non-circular: N, B, h, w, ω are inputs, but ONLY as the bench's parts list (how many turns, how strong the poles, how big the loop, how fast the crank) — the recovery path contains no sinusoid, no flux closed form, and no NBAω; that the raw per-segment Lorentz sum is a pure sine at the crank frequency with amplitude NBAω and a 90° lag behind a flux it never computes, that it obeys Faraday's law against two independently-built flux paths, and that only the field-slicing wires contribute, are all read off the sum. The estimator is the operational bench lock-in (what any AC metrology rig computes). The decisive discriminator is AXIS-vs-MOTION: the rival 'rotation generates regardless of axis' is fed the identical loop, field, speed, and machinery, and the closed-loop sum returns an exact structural zero against its predicted 157 V (z = 2340) — the dynamo works only because its geometry makes the flux CHANGE.
The module's real-units panel was the one dishonest piece: its _recover() computed ε₀ = N·B·A·ω from the closed form — the very law under test — added ±2% noise, and inverted. THE CREATION RUN REPLACED IT: the module now runs the same first-principles Lorentz segment sum (four sides × 8 segments, numeric cross products, 4096-sample lock-in over one crank period) and the oracle's gate K replays that method verbatim with the module's RNG stream (mulberry32(0x9e2a), one draw), pinning the on-screen numbers to float-exact 0: the screen shows ε₀ = 160.0 V and B̂ = 0.2547 T = +1.88% off true — exactly this seed's noise draw, near the edge of but inside the disclosed ±2% envelope (shown on screen as '+1.88%'), verified live headless (vite preview + playwright). The dimensionless live view (Φ = cos θ, EMF = sin θ traces driving the spin, lamp, and chart) remains an explicitly disclosed forward model — the on-screen claims it animates (90° lag, zero at face-on, peak at edge-on, 2× overlay) are exactly the properties gates E/F/G/H₂ prove emergent. CERTIFICATION RUN #96 upgraded emulation-trust to EXECUTION-trust (result.module_certificate) and caught two honesty defects by execution: (1) the chart legend read 'faint = spin 2× → 2× freq AND 2× peak (ε₀ ∝ ω)' while the overlay is deliberately drawn at ½ scale (0.5·sin 2θ) so the viewer sees two EQUAL-height curves under a '2× peak' label — the 14th overclaim in the cert series, fixed on-screen with zero numeric change ('… · drawn ½-scale to fit'); (2) the reference's pinned_b_rec was a 1-ulp transcription typo (…129 vs the executed …124) — gate K' had been reading 2.18e-16 instead of 0; repaired, now bit-exact.
Run #96 (refiner): rung validated → validated + honest-module CERTIFIED — gates M–Q added (25 → 33), the derisk now EXECUTES the shipped GeneratorModule.ts (sha pin + 33 strip pairs); 13th RNG cert (module-internal mulberry32, zero Math.random); frozen ONE-draw init measurement proven immutable over a 1920-call bit-exact lockstep (exact-zero accumulator class, 3rd sighting after foucault/kdv); display reconciled at all 320 writes and priced with identity residual exactly 0 (shipped draw z = +1.54 own-ensemble); 14th overclaim (chart legend ½-scale disclosure) + a 1-ulp reference-pin typo caught and fixed; tampers sha/ulp/known all surgical, exit codes checked against node. Creation-run notes follow. Rung climbed: no-oracle → validated + honest module (52 → 53 oracles). Tolerances justified from prototype-measured floors: 5 independent 24-seed batches (seed_base 1000/2000/3000/7777/42) gave |mean rel| 4.4e-5–1.8e-4, SE 7.0–9.7e-5, worst seed ≤ 1.4e-3 → gates 5e-4/3e-3/2e-4 (≥2.1× headroom); noiseless floors 7.4e-15 → 1e-12 (135×); Faraday emergence 1.7e-10 of peak (= the central-difference truncation at dθ = 1e-6) → 1e-9 (6×, deterministic); structural zeros observed exactly 0.0 → 1e-14/1e-18. Hand tamper (known 157.0796 → 163.4) ⇒ 3 gates FAIL, exit 1, recovered value unchanged at 157.0989; restored by hand; in-script scoring self-test (gate L, known×1.02) green. Two mechanical fixes on the first run (fluxSurface's tessellation count K missing from the params object → NaN in 5 gates; the zero-crossing counter missed the boundary crossing at t = 0 where sin is exactly 0 → f = 47.5 Hz), zero fix attempts on the physics — every physics gate passed as soon as the plumbing did. Design-time win: the midpoint segment sum is EXACT here ((v×B)·dl is linear along a straight segment in a uniform field), so the whole noiseless chain sits at the float floor and the perturbation slopes come out exactly 1.0 — the cheapest 25-gate oracle so far (0.05 s). Second win: the parallel-axis rival needs zero extra machinery (one changed rotation axis) yet is maximally decisive — per-segment terms stay O(ε₀) while the loop sum cancels to 2.3e-16, so the segment sum is demonstrably load-bearing AND the rival demonstrably wrong.
npm run derisk -- generator (scripts/generator-derisk.mjs)scripts/oracles/generator.reference.jsonM. Faraday, 'Experimental Researches in Electricity — First Series', Phil. Trans. R. Soc. 122, 125–162 (1832). H. Pixii's alternator (Paris, 1832); S. P. Thompson, Dynamo-Electric Machinery (1888), ch. I. D. J. Griffiths, Introduction to Electrodynamics (4th ed.), §7.1.3. R. P. Feynman, The Feynman Lectures on Physics, Vol. II, ch. 16 ('Induced Currents').