Shine light on a metal and electrons come off. Classical wave theory says brighter light means more energetic electrons, any colour will do if bright enough, and dim light needs time to accumulate energy. Einstein's 1905 heresy says light arrives in lumps E = hν, so the stopping voltage is a straight line in frequency with a universal slope h/e, a sharp material threshold, and total blindness to intensity. Does the LAW — line, universal slope, threshold, intensity-independence — actually EMERGE from a microscopic model that never contains it?
Units: J·s (Planck's constant, exact in the 2019 SI; Millikan's 1916 slope measurement gave 6.57e-34)
▶ Run this simulationRead how it works
Einstein's light quantum, re-measured the way Millikan measured it: a three-step Monte Carlo photoemission model (photon absorbed by a √ε band electron, transported with losses, escaping over the barrier E_F + φ — Einstein's line NEVER coded) returns h = 6.625830e-34 ± 4.4e-38 J·s (0.55 SE, rel 3.6e-5) as the universal V_stop–ν slope × e across six metals spanning φ = 2.1→5.65 eV (spread 2.7e-4), with the threshold exact to 8e-5, intensity ×4 buying ×4.007 current but 0.03% stopping voltage, and classical wave accumulation falsified by 14 orders of magnitude in time lag
A Berglund–Spicer three-step Monte Carlo, with Einstein's line appearing nowhere: (1) a photon of energy hν (the light-quantum SUBSTRATE, exactly as the blackbody oracle codes E_n = nhν) is absorbed at depth z ~ Exp(d) by ONE band electron sampled ∝ √ε over the occupied band [0, E_F] (T = 0 Sommerfeld metal); (2) the electron heads outward with probability ½ and survives unscattered with probability exp(−z/ℓ), else loses a uniform 10–90% of the photon energy; (3) it escapes iff ε + hν − loss > E_F + φ, emerging with the remainder as kinetic energy. A retarding voltage collects only K > eV; the stopping voltage is located by LSQ-extrapolating the counted I(V) tail (top decile, anchored on the observed K̂) to zero; V_stop vs ν per metal is LSQ-fitted; h = mean slope × e. Thresholds are found by scanning the sim itself (no h used to place the grid). 12 seeds × 6 metals × 6 frequencies × 200k photons, ~6 s. All knowns loaded from scripts/oracles/photoelectric.reference.json only to score. ?world=photoelectric.
V_stop = (h/e)·ν − φ/e (Einstein 1905): a straight line in ν, slope h/e universal across materials, x-intercept the threshold ν₀ = φ/h; intensity sets the current, never the electron energy
4.3700e-38
0.55
12
15/15 in ~8 s (A–G oracle recovery + H–L module-honesty certificate); tamper self-tests: hand-editing known_value to 6.7e-34 flips A/A′/D/K to FAIL and exits 1 with the recovered value byte-unchanged (6.625830e-34); flipping the cert sha fails ONLY H; tampering the cert freq-grid base 1.05→1.06 fails I+K (execution gates not vacuous)
Einstein's photoelectric law (Ann. Phys. 17, 132 (1905)) as measured by Millikan (Phys. Rev. 7, 355 (1916)): K_max = hν − φ, i.e. V_stop = (h/e)ν − φ/e. It VALIDATES, not derives: the quantum hypothesis E_γ = hν is the substrate (h enters the generator once, as the photon's energy content — the same epistemic status as blackbody's E_n = nhν), and what emerges non-circularly from three-step counting is the LAW — the linearity of V_stop(ν), the slope's universality across six work functions (2.7e-4 spread), the intercept tracking −φ (0.001 eV), the exact threshold with zero sub-threshold emission at any intensity, and the stopping voltage's blindness to intensity — none of which is coded in generator or estimator; E_F, absorption depth, and mean free path all demonstrably cancel out of the endpoint (gate G). The classical wave rival is falsified three independent ways: energy-∝-intensity (10⁴ SE off), accumulation time lag (14 orders of magnitude, cf. Lawrence & Beams 1928), and the existence of a threshold. NOT modelled: the thermal tail of the Fermi edge (T = 0 here — the kT smearing Millikan actually fought), the momentum-normal escape cone and Fowler's near-threshold yield law, photon momentum (negligible at eV energies — that thread is ?world=compton), and real surface effects (oxide layers, patch fields — Millikan's machine shop in vacuo). The quantization thread continues: blackbody gave light's energy lumps statistically; this world makes ONE lump eject ONE electron; compton makes the lump carry momentum.
The module is a LAW-VISUALIZER and now says so in its own doc comment (the false 'This world does NOT assume the law' sentence was replaced this run — the only module edit): it synthesizes V_stop(ν) from Einstein's coded line for six real metals and least-squares fits it back, so the screen's h = 6.6261e-34 sits on the SI value by construction (measured gap 2.6e-16, within the DERIVED lsq float-roundoff ceiling ~1.2e-13 built from eps, κ = x̄/sd_x ≈ 3.8, and n = 9 — no fitted tolerance), while the ORACLE's three-step Monte Carlo earns the value with a 3.6e-5 estimator offset; screen vs oracle recovery = 0.55 SE (gate L, < 3 SE). CERTIFIED (module-honesty gates H–L): the derisk EXECUTES the shipped PhotoelectricModule.ts (sha256-pinned, 27 exact strip pairs + 3 imports + bulk 14/3, new Function with Babylon/DOM recorder stubs) — module constants === the oracle's own inputs (h substrate, e, all six metals' names and φ in order); the executed vstop/lsq === the derisk's independent replica at all 54 grid points (identical-text functions held to ===, micro-lesson #95); all 6 executed fits (slope/intercept/h/ν₀), _slopeMean/_slopeSpread/_hMean, and every Float32 thin-instance buffer (709 instances across 7 meshes) bit-exact vs statics-built replicas, combined buffer sha pinned; the display is honestly STATIC per the module's documented 'all numerics at init' contract — no fixedUpdate exists and 600 executed render() calls change nothing (HUD text + write count, chart SVG + write count, every buffer byte); HUD and chart SVG === replicas sha-pinned, the shown '6.6261e-34' is digit-exact vs the known SI value at 4 sig figs yet EARNED (_hMean !== the coded constant bit-wise — it went through the fit); the replica is built from cert-pinned frequency-grid constants so tampering the grid fires the execution gates. Tamper self-tests: known_value→6.7e-34 fails A/A′/D/K with the recovery byte-unchanged; cert sha flip fails ONLY H; grid base 1.05→1.06 fails I+K.
npm run derisk -- photoelectric (scripts/photoelectric-derisk.mjs)scripts/oracles/photoelectric.reference.jsonA. Einstein, 'Über einen die Erzeugung und Verwandlung des Lichtes betreffenden heuristischen Gesichtspunkt', Ann. Phys. 17, 132 (1905) — Nobel 1921 'for his discovery of the law of the photoelectric effect'. R. A. Millikan, 'A Direct Photoelectric Determination of Planck's h', Phys. Rev. 7, 355 (1916) — h = 6.57×10⁻³⁴ J·s from the V_stop–ν slope, by a sceptic who spent a decade trying to refute the light quantum. P. Lenard, Ann. Phys. 8, 149 (1902) — maximum energy independent of intensity. E. O. Lawrence & J. W. Beams, Phys. Rev. 32, 478 (1928) — emission lag < 3 ns. C. N. Berglund & W. E. Spicer, Phys. Rev. 136, A1030 (1964) — the three-step model of photoemission. CODATA/SI 2019: h = 6.62607015×10⁻³⁴ J·s, e = 1.602176634×10⁻¹⁹ C (both exact).