Vignesh Gopakumar
  • Home
  • Research
  • Talks
  • Blog
  • Tokamak Toolkit

Claims register

Every number quoted anywhere in this log has a row here, and pages show it from this register, so it cannot drift between pages. Claims are never deleted: a wrong one is marked retracted and kept, with a link to the erratum.

Status:

  • tested: asserted by a named test in the suite at the stated commit
  • measured: from a recorded run or study at the stated commit
  • preliminary: measured, with a caveat named in the row
  • reviewed: passed a human review gate
  • superseded: replaced by a newer claim
  • retracted: wrong; see the errata

tested claims are checked by the test suite, which is run in full, and again with every UKAEA-gated code disabled, before each publish. The code is in a private repository whose continuous-integration results are not part of this log, so a claim is tested at its stated commit, not re-checked automatically between publishes. reviewed claims passed the M1 physicist review (1 Oct 2026), which the owner did as reviewer of record; the gate and the tolerances it set are on the decisions page.

ID Claim Value Status Evidence Commit
C-001 Toy Tier A scenario runs 100 coupled steps under jit
exact; profiles finite and positive, edge condition respected
100 steps tested tests/regression/test_toy_loop.py::test_100_steps_under_jit 79285af
C-002 Final fixed-point residual per step, toy scenario, relaxed Picard iteration
order of magnitude; 6 iterations at relaxation 0.7
3 × 10-5 measured solver comparison, entry 01
tkit run configs/scenarios/toy.yaml with loop.solver=picard
91d4e55
C-003 Final fixed-point residual per step, toy scenario, Newton-Raphson with line search
order of magnitude; 4 iterations; test asserts < 1e-9
10-14 tested tests/regression/test_toy_loop.py::test_newton_converges_quadratically 91d4e55
C-004 Cost of Newton relative to Picard per run, toy scenario, 100 steps on CPU
8.8 s vs 0.04 s; dominated by the dense 150x150 Jacobian (ceiling K-002)
200× slower measured solver comparison, entry 01 91d4e55
C-005 Final residual on the stiff toy settings where Picard stalls (Picard 2e-2, Newton 3e-11)
Picard stalls at 2e-2 and is reported, not hidden
3 × 10-11 tested tests/regression/test_toy_loop.py::test_newton_converges_where_picard_stalls 91d4e55
C-006 Agreement between the fixed-step scan over the transport code's step function and that code's own driver, same configuration
test asserts < 1e-10
10-13 tested tests/regression/test_torax_loop.py::test_scan_matches_torax_driver 61aa774
C-007 Stored ITER hybrid ramp-up reference reproduced by the fixed-step loop at the reference's own 2 s step
test asserts < 1e-10
10-14 tested tests/regression/test_torax_loop.py::test_rampup_reference_steps_reproduced 61aa774
C-008 Reverse-mode gradient of stored energy through three coupled transport steps, checked against central finite differences
forward and reverse mode agree to 1e-9
10-6 tested tests/diff/test_torax_gradients.py::test_grad_through_torax_steps_fd_checked 61aa774
C-009 Stored thermal energy from the converted profiles versus the transport code's own value, ITER hybrid (impurity pressure included)
test asserts 1e-10 at every output time
10-16 tested tests/regression/test_torax_backend.py::test_stored_energy_identity 3ae5531
C-010 Total heating power from the converted sources versus the transport code's own value
test tolerance; agreement observed to 5 significant figures
better than 10−8 tested tests/regression/test_torax_backend.py::test_heating_power_identity 3ae5531
C-011 Effect on stored energy at t = 80 s of removing the non-converged steps in the ITER hybrid ramp-up by lowering the line-search floor (53.998 vs 53.999 MJ)
6 non-converged steps at dt = 0.5 s become 0; residual tolerance unchanged
2 × 10−5 relative measured line-search study, entry 05 ae294c9
C-012 Core electron temperature difference between 1 s and 0.25 s fixed steps at t = 2 s of the ITER hybrid ramp-up (initial transient; falls to 0.4% by t = 80 s)
first-order convergence in dt
18% measured time-convergence study, entry 03 61aa774
C-013 Departure of the published adaptive-step ITER hybrid flat-top reference from the dt -> 0 answer at t = 2 s
5% at t = 5 s; reference steps up to 0.42 s
Caveat: the benchmark tolerance and whether to compare at the published or a converged step are still open (decision pending)
34% preliminary time-convergence study, entry 03 61aa774
C-014 Guarded transport with an always-open guard reproduces the unwrapped neural transport model
bit-identical on T_e and n_e over 8 steps; fallback fraction 0
bit-identical tested tests/regression/test_torax_guard.py::test_open_guard_reproduces_plain_qlknn_exactly 26f89fb
C-015 Guarded transport with an always-closed guard reproduces the pure fallback model
fallback fraction 1
10-12 tested tests/regression/test_torax_guard.py::test_empty_guard_equals_pure_fallback 26f89fb
C-016 Error introduced by wrapping the neural transport model before the post-processing defaults were carried to the wrapper (a bug, since fixed)
cause: a radial smoothing width injected by the model's own configuration validator
5% measured identity check, entry 04 26f89fb
C-017 Absorbed power of the analytic Gaussian radio-frequency heating model versus the requested power
deposition and driven current peak within one grid cell of the requested radius
10-6 tested tests/physics/test_rf_deposition.py::test_absorbed_power_equals_request ae294c9
C-018 Plasma current of the MAST-U-like free-boundary equilibrium versus the requested 620 kA
magnetic axis at R = 0.99 m, Z = -0.05 m
10-3 tested tests/physics/test_freegsnke_mastu.py::test_solve_reproduces_requested_plasma 8dc8425
C-019 Free-boundary solver convergence for the MAST-U-like diverted plasma
26 of 100 allowed iterations; about 43 s on one CPU
4 × 10-10 measured MAST-U forward solve, entry 06 8dc8425
C-020 Integral of dV/drho over the MAST-U-like equilibrium recovers the enclosed volume
test asserts 2%; area reconstruction ceiling K-004
2% tested tests/physics/test_freegsnke_mastu.py::test_ids_is_complete_and_valid 8dc8425
C-021 Toroidal-flux radius versus geometric minor radius for the MAST-U-like equilibrium (0.83 m vs 0.55 m), which must not be conflated on a spherical tokamak
ordering asserted by test
a factor of 1.52 tested tests/physics/test_freegsnke_mastu.py::test_adapter_round_trip_and_resampling 8dc8425
C-022 Error in the outermost flux-surface area when reconstructed by counting grid cells inside the surface, for a diverted plasma (why the volume-based formula is used instead)
2% agreement at mid-radius
32% measured area reconstruction check, entry 06 8dc8425
C-023 Wall-clock time to simulate 80 s of the ITER hybrid ramp-up on one datacentre GPU, after compilation
90 s wall time in total, of which about 70 s is one-off compilation; reference run reproduces bit for bit
under 4 s measured reference generation, entry 02 3ae5531
C-024 IMAS round trip (data structure -> IDS -> data structure) preserves values and coordinates for the equilibrium, core_profiles, core_transport and core_sources records, including a netCDF file round trip
test asserts rtol 1e-14; each IDS also passes the Data Dictionary's validate()
10-14 tested tests/unit/test_adapters_roundtrip.py dfc01a7
C-025 Toy scenario, 100 coupled steps, wall time once compiled on one datacentre GPU (M0, relaxed Picard iteration)
2.5 s including compilation
0.4 s measured M0 report
tkit run configs/scenarios/toy.yaml
79285af
C-026 Single-step particle and energy balance of the implicit transport solve (change in content equals integrated source minus edge loss)
test tolerance
10-10 tested tests/conservation/test_balance.py::test_particle_balance_single_step, ::test_energy_balance_single_step dfc01a7
C-027 Per-step particle and energy balance reconstructed from the recorded trace of a full coupled run, whether or not the nonlinear iteration converged
test tolerance; holds because of the corrector solve
10-9 tested tests/conservation/test_balance.py::test_loop_balance_exact_from_trace dfc01a7
C-028 Reverse-mode gradient of stored energy with respect to heating power and transport stiffness through 20 coupled toy steps, checked against central finite differences
forward and reverse mode agree to 1e-9
2 × 10-5 tested tests/diff/test_gradients.py::test_grad_finite_and_fd_checked dfc01a7
C-029 Tests passing at the close of M0, run in full and again with every gated code disabled
same 42 in both modes; lint and type checks clean
42 tests measured M0 report 79285af
C-030 Toroidal-flux radius at the boundary versus geometric minor radius, ITER hybrid reference runs (2.747 m vs 2.000 m)
read from the stored reference runs
a factor of 1.37 measured ITER hybrid reference runs (rho_b and a_minor outputs) 3ae5531
C-031 ASCOT5 smoke test, analytic ITER field at R = 7 m versus the vacuum 1/R value from 5.3 T at 6.2 m
confirms the compiled library loads, builds inputs and evaluates fields
2% tested tests/unit/test_external_codes.py::test_ascot5_library ae294c9
C-032 Normalised electron temperature gradient R/L_Te at rho = 0.26 on the ITER hybrid ramp-up at t = 80 s, the Tokamak Toolkit's feature convention versus QLKNN's (6.80 vs 5.73); at rho = 0.90 the two are 16.89 vs 25.22 (-33%)
rho = 0.50: 7.76 vs 7.26; rho = 0.74: 9.03 vs 10.47
+19% measured feature-convention comparison on the stored ITER hybrid ramp-up reference, 2026-09-30 8dc8425
C-033 Exported boundary flux radius versus the source code's own value, for TORAX (ITER hybrid, 2.746910 m; minor radius 2.0 m) and FreeGSNKE (MAST-U-like, 0.83 m; minor radius 0.55 m), after the K-007 fix
test tolerance, both codes
10-12 tested tests/regression/test_torax_backend.py::test_equilibrium_export_matches_torax_flux_radius, tests/physics/test_freegsnke_mastu.py::test_equilibrium_export_matches_source_flux_radius 6b0845c
C-034 Shortfall in stored thermal energy computed from the converted profiles before the impurity ions' pressure was included, ITER hybrid
consistent across output times; falls to C-009 once impurity pressure is added
0.3% low measured conversion check, entry 2 3ae5531
C-035 Per-step global energy balance of TORAX's discrete equations, rebuilt from TORAX's own coefficients, ITER hybrid ramp-up benchmark at its reference settings (Newton, 2 s steps); relative residual = |residual| / (|storage| + |edge| + |sources| + |pinning|)
test bound on fine-tolerance steps (8 steps); measured over the full 80 s (40 steps): max 1.2e-7, median 2e-10; 8e-5 on the 3 steps where Newton reached only its coarse tolerance
better than 10-6 tested tests/conservation/test_torax_balance.py::test_rampup_benchmark_balance fb5a0b5
C-036 Per-step global particle (electron) balance, same reconstruction and runs as C-035
test bound; measured max 1.4e-11 over the 80 s ramp-up, 7e-12 on the flat-top
better than 10-10 tested tests/conservation/test_torax_balance.py::test_rampup_benchmark_balance, ::test_newton_step_conserves_energy_and_particles fb5a0b5
C-037 Share of the per-step energy balance left unaccounted for by the flat-top reference's solver (linear, one predictor-corrector step), ITER hybrid flat-top, 0.05 s steps, median of the first 6 steps; five corrector steps reduce it to 0.09%
per step 0.6-2.1%; test asserts 0.1-5% and a reduction by more than 5x with five corrector steps
about 0.8% tested tests/conservation/test_torax_balance.py::test_linear_predictor_corrector_energy_defect_is_coefficient_lag fb5a0b5
C-038 Share of the heating power removed by the pedestal model's adaptive pinning source, ITER hybrid ramp-up, every step from t = 4 s to 80 s (20.6 of 23.5 MW at t = 80 s); the power conducted through the last closed flux surface is 1.5-10% of the heating over the same steps
range over 39 steps; test asserts more than 50% on 7 steps
87–98% reviewed run_balance over the 80 s ramp-up (40 fixed 2 s steps), 2026-09-30; bound in tests/conservation/test_torax_balance.py::test_rampup_benchmark_balance fb5a0b5
C-039 Edge term of the rebuilt TORAX balance versus the flux through the last face computed separately from the face gradient, all four evolving channels
test tolerance; measured agreement about 1e-14
10-10 tested tests/conservation/test_torax_balance.py::test_edge_term_is_the_last_face_flux fb5a0b5
C-040 Per-step metric records received by the tracking server's client, toy scenario of 100 steps run end to end through the command line with the Simvue mirror in offline mode (no network); the local record holds the same 100, one per step, stamped with the simulation time
exact
100 of 100 steps tested tests/regression/test_cli_tracking.py::test_run_with_simvue_offline, ::test_run_logs_every_step e8e1d6f
C-041 Share of the heating power conducted out through the last closed flux surface (the balance's edge term), ITER hybrid ramp-up, every step from t = 4 s to 80 s (2.3 of 23.5 MW at t = 80 s); the rest of the C-038 balance is the change in stored energy (0.1-2.9%)
range over 39 steps
1.5–10% measured run_balance over the 80 s ramp-up (40 fixed 2 s steps), 2026-09-30 fb5a0b5
C-042 ASCOT5's D-T alpha birth rate (AFSI, thermal reactants) on TORAX's profiles over TORAX's own birth rate (P_alpha / 3.5 MeV), ITER hybrid flat-top at t = 5 s
AFSI Monte Carlo, 1600 samples per cell; the test asserts 2% with 400 samples
1.002 tested tests/physics/test_ascot_alpha.py::test_afsi_birth_rate_matches_torax; job 2257707 d81df2d
C-043 Share of alpha markers lost across the separatrix before slowing down, 640 markers, guiding-centre orbit tolerance (ADAPTIVE_TOL_ORBIT) 1e-5 versus 1e-6, same markers
113 and 4 of 640 markers
18% at 10-5, 0.6% at 10-6 measured cluster job 2257707, runs CHECK_TOL_PROD and CHECK_TOL_TIGHT d81df2d
C-044 Alpha heating of ions computed by ASCOT5 at orbit tolerance 1e-5 versus 1e-6, same 640 markers, ITER hybrid flat-top at t = 5 s
Monte Carlo, 640 markers
13.2 MW at 10-5, 25.0 MW at 10-6 (TORAX: 24.8 MW) measured cluster job 2257707, runs CHECK_TOL_PROD and CHECK_TOL_TIGHT d81df2d
C-045 Total alpha heating on TORAX's cells, ASCOT5 (640 markers, tolerance 1e-6) versus TORAX's local alpha model, ITER hybrid flat-top at t = 5 s; electron fraction 0.649 in both
+4.4%: +0.7% alpha energy (3.52 vs 3.5 MeV) and birth-rate noise, about +2% from the deposition moments over-closing the energy books, +1.6% from interpolation onto TORAX's cells; preliminary (640 markers, tolerance convergence not shown, OQ-11)
Superseded by C-059
73.6 MW vs 70.5 MW superseded job 2257707 run CHECK_TOL_TIGHT; tkit ascot-apply apply_summary.json ac911c3
C-046 Stored thermal energy after continuing TORAX from t = 5 s to 7 s with the ASCOT5 alpha profiles held fixed, relative to TORAX's own t = 5 s alpha profiles held fixed
T_e profile 0.3%, T_i 0.6% (relative L2); ASCOT5 profiles from 640 markers
-0.005% measured tkit ascot-apply on job 2257707 CHECK_TOL_TIGHT, duration 2 s ac911c3
C-047 Effect of holding the alpha heating fixed for 2 s (TORAX's own t = 5 s profiles) instead of evolving it with TORAX's local model, on stored thermal energy at t = 7 s; the local model's alpha power rises from 70.5 to 77.5 MW over those 2 s
single run
-0.3% (central T_e -1.0%) reviewed tkit ascot-apply, restart_frozen vs restart_local ac911c3
C-048 NRMSD between the paper's TORAX and RAPTOR curves, recomputed from the curves read out of the vector paths of Fig. 6 of the TORAX paper (arXiv:2406.06718v4), against the value printed in each panel (T_i, T_e, n_e, psi, q)
to the printed precision; axes calibrated from tick marks to 6e-5 of the axis range
all five printed values reproduced (1.102, 0.712, 0.026, 0.414, 0.701% vs 1.1, 0.71, 0.03, 0.41, 0.70%) tested tests/regression/test_raptor_benchmark.py::test_extracted_curves_reproduce_the_printed_nrmsd 1d64c0c
C-049 Agreement between the Tokamak Toolkit's fixed-step scan over TORAX's step function and TORAX's own driver on the RAPTOR L-mode benchmark (200 steps of 0.05 s; T_e, T_i, n_e, psi; relative L2, max over output times)
agreed tolerance 1e-10 (OQ-5); same at dt = 0.025, 0.0125, 0.00625 s
better than 10-13 measured tkit benchmark-raptor --dt 0.05 (runs/raptor/dt0.05.json)
python -m tkit.cli benchmark-raptor --dt 0.05 --balance
1d64c0c
C-050 NRMSD of the Tokamak Toolkit's run (TORAX 1.4.3, published settings) against RAPTOR at t = 10 s, ITER L-mode benchmark of the TORAX paper, for T_i, T_e, n_e, psi, q; the paper's own TORAX run against RAPTOR in brackets
M1 acceptance gate (physicist review, OQ-5, 1 Oct 2026): <= 2% for T_i, T_e, psi, q and <= 0.1% for n_e, n_i; extraction error below 0.01 percentage points (C-048)
T_i 1.23% (1.1%), T_e 0.28% (0.71%), n_e 0.03% (0.03%), psi 0.49% (0.41%), q 0.69% (0.70%) reviewed tests/regression/test_raptor_benchmark.py::test_published_settings_pass_the_m1_acceptance_gate 1d64c0c
C-051 NRMSD of the Tokamak Toolkit's run (TORAX 1.4.3) against the paper's own TORAX run at t = 10 s, same case and settings, i.e. the change between TORAX versions plus the config translation
regression test bound 0.6% on the six profiles
T_i 0.13%, T_e 0.50%, n_e 0.01%, psi 0.08%, q 0.16%; Ohmic power density 3.6% reviewed tests/regression/test_raptor_benchmark.py::test_published_settings_against_fig6 1d64c0c
C-052 Change in the t = 10 s NRMSD against RAPTOR (T_i, T_e, n_e, psi, q) between the published time step 0.05 s and 0.00625 s (three halvings, no non-converged steps)
first-order convergence; t = 10 s is close to stationary
at most 0.006 percentage points measured tkit benchmark-raptor --dt 0.05, 0.025, 0.0125, 0.00625 (runs/raptor/dt*.json) 1d64c0c
C-053 Largest relative deviation of the line-averaged ion temperature from RAPTOR's during the transient (at t = 0.2 s), at the published time step 0.05 s and at 0.00625 s; the paper reports a maximum transient deviation of about 2.5% for its TORAX run
M1 acceptance gate on the line-averaged traces: <= 5% (physicist review, OQ-5, 1 Oct 2026); the paper's TORAX run used dt = 0.05 s; the Tokamak Toolkit at 0.05 s follows it to 0.14%
2.4% at dt = 0.05 s, 2.9% at dt = 0.00625 s (1.0% at t = 10 s) reviewed tkit benchmark-raptor (runs/raptor/dt0.05.json, dt0.00625.json) df8ee7d
C-054 Per-step global energy and particle balance on the RAPTOR L-mode benchmark at its published settings (Newton, 5 corrector steps, dt = 0.05 s), every one of 200 steps converged
agreed 1e-6 per converged step (OQ-5); test covers 20 steps, run covers 200
energy 1.1 × 10-7, particles 3 × 10-13 tested tests/conservation/test_torax_balance.py::test_raptor_lmode_benchmark_balance 1d64c0c
C-055 Reverse-mode gradient of stored energy with respect to the initial electron temperature through three Newton-solved TORAX steps of the RAPTOR L-mode benchmark, against central finite differences
test asserts 1e-7; forward mode equals it since 8aa70ee (C-062, K-009 lifted)
6 × 10-9 tested tests/diff/test_torax_gradients.py::test_grad_through_newton_benchmark_steps_fd_checked df8ee7d
C-056 NRMSD of the ion density against the paper's TORAX run at t = 10 s with TORAX 1.4's temperature-dependent neon charge (8.1 at the edge) versus neon fixed at Z = 10 as in the paper's Table II
single runs
0.35% with the computed charge, 0.009% with Z = 10 measured TORAX driver on configs/benchmarks/raptor_lmode with and without impurity Z_override 1d64c0c
C-057 Alpha markers of the 6400-marker production run (orbit tolerance 1e-6, second cluster job) stopped by ASCOT5's per-marker time cap of 600 s while still energetic, and the share of the birth power left in them; ASCOT5 charges each marker the wall time of its whole vectorised batch, so the cap did not mean CPU time per marker
exact count; the run's profiles are discarded
2823 of 6400 markers, 18% of the birth power measured cluster job 2286956, run PROD, end condition CPUMAX d7318f7
C-058 Share of the alpha birth power deposited to ions, ASCOT5 orbit tolerance 1e-6 versus 1e-7 (two complete 640-marker runs from separate jobs, different marker samples), ITER hybrid flat-top at t = 5 s; the electron share is 0.660 versus 0.661, and deposited plus lost power exceeds the birth power by 2.2% versus 0.4%
640 markers per run; Monte Carlo noise not measured separately
0.348 at 10-6, 0.331 at 10-7 reviewed job 2257707 CHECK_TOL_TIGHT (1e-6) and job 2286956 CHECK_TOL_TIGHT (1e-7) c8eaf6e
C-059 Total alpha heating on TORAX's cells, ASCOT5 (640 markers, tolerance 1e-7, all markers finished) versus TORAX's local alpha model, ITER hybrid flat-top at t = 5 s; electron fraction 0.667 versus 0.649
+2.4%, equal to the markers' birth power excess over TORAX's alpha power, of which 1.0% is explained (AFSI rate +0.4%, 3.52 vs 3.5 MeV +0.6%) and 1.4% is not; radial shape not resolved by 640 markers (heating centroid 0.376 vs 0.355 at 1e-6, TORAX 0.362)
Superseded by C-064
72.2 MW vs 70.5 MW reviewed job 2286956 CHECK_TOL_TIGHT; tkit ascot-profiles + ascot-apply (apply_tol1e-7) c8eaf6e
C-060 Effect on TORAX of the ASCOT5 alpha heating (tolerance 1e-7, 640 markers) held fixed from t = 5 s to 7 s, against TORAX's own t = 5 s alpha profiles held fixed, ITER hybrid flat-top; stored thermal energy, with central T_e and the temperature profiles
single run
Superseded by C-067
+0.03% in stored energy (central T_e +0.5%, T_e and T_i profiles 0.6%) reviewed tkit ascot-apply on job 2286956 CHECK_TOL_TIGHT, duration 2 s c8eaf6e
C-061 M1 acceptance tolerance against RAPTOR on the published ITER L-mode case, set at the M1 physicist review; NRMSD of the t = 10 s profiles (T_i, T_e, psi, q; densities), and the maximum relative deviation of the line-averaged T_e, T_i, n_e traces over 0-10 s; fusion and Ohmic powers reported, not gated
a limit, not a measurement: owner as physicist reviewer, OQ-5, 1 Oct 2026
profiles ≤ 2% (densities ≤ 0.1%), traces ≤ 5% reviewed tkit.physics.raptor_benchmark.ACCEPTANCE; tests/regression/test_raptor_benchmark.py::test_published_settings_pass_the_m1_acceptance_gate 023d5db
C-062 Forward-mode (jacfwd) versus reverse-mode gradient of stored energy with respect to the initial electron temperature through three Newton-solved TORAX steps of the RAPTOR L-mode benchmark, with tkit's value-preserving patch to TORAX's trapped-particle fraction (before it, forward mode returned NaN); stored energy with and without the patch identical to the last bit
test asserts 1e-12
2 × 10-15 (NaN before the fix) tested tests/diff/test_torax_gradients.py::test_forward_mode_through_newton_matches_reverse 8aa70ee
C-063 Weighted mean birth energy of the ASCOT5 alpha markers (6400 markers, third cluster job), drawn from AFSI's birth distribution for the ITER hybrid flat-top at t = 5 s, against the 3.52 MeV used for the expected birth power; the marker weights sum to AFSI's birth rate exactly, so this ratio is the whole of the markers' birth-power excess (K-011)
±0.004 MeV (standard error of the mean over 6400 markers); the 640-marker samples give 3.565-3.586 MeV, which is why earlier jobs put the excess at 1.3-1.4%
3.573 MeV, 1.5% above 3.52 MeV measured cluster job 2287778, run PROD; tkit ascot-profiles prints the mean
python -m tkit.cli ascot-profiles alpha_t5.h5 data/reference/iterhybrid_predictor_corrector.nc --run PROD --out prod.npz
fcd8ce5
C-064 Total alpha heating on TORAX's cells, ASCOT5 production run (6400 markers, orbit tolerance 1e-7, all markers finished) versus TORAX's local alpha model, ITER hybrid flat-top at t = 5 s; electron fraction 0.664 versus 0.649
+1.8%. Birth power is 2.5% above TORAX's alpha power, fully accounted for: AFSI rate +0.4%, 3.52 vs 3.5 MeV +0.6%, mean birth energy above 3.52 MeV +1.5% (C-063). Then losses -0.7%, thermalised markers -0.8%, energy books +0.6%, interpolation onto TORAX's cells +0.2%
71.8 MW vs 70.5 MW measured job 2287778 PROD; tkit ascot-apply (apply_prod)
python -m tkit.cli ascot-apply alpha_t5.npz data/reference/iterhybrid_predictor_corrector.nc --duration 2 --out apply_prod
fcd8ce5
C-065 Radial position of the alpha heating on TORAX's cells, ASCOT5 production run versus TORAX's local model, ITER hybrid flat-top at t = 5 s; power-weighted mean radius and the radius inside which half the power is deposited (normalised toroidal flux radius)
the three 640-marker samples give centroids 0.371-0.376 and half-power radii 0.329-0.343, outside TORAX's in every sample; inside rho_tor_norm 0.3 the profile is not resolved cell by cell (K-012)
centroid 0.370 vs 0.362, half-power radius 0.331 vs 0.325 measured job 2287778 PROD and CHECK_TOL_*, job 2286956 CHECK_TOL_TIGHT; tkit ascot-apply heating summary
python blog/figures/make_ascot_alpha_profile.py JOBDIR PREVJOBDIR
fcd8ce5
C-066 Change in alpha heating from tightening the ASCOT5 orbit tolerance from 1e-7 to 1e-8, the same 640 markers, ITER hybrid flat-top at t = 5 s; electron and ion heating
single pair of runs; lost markers 5 vs 6. Energy books 1.0049 at 1e-7 and 1.0057 at 1e-8: the remaining 0.5% overshoot does not shrink with the tolerance
electrons -0.16%, ions +0.08% measured cluster job 2287778, runs CHECK_TOL_PROD (1e-7) and CHECK_TOL_TIGHT (1e-8) fcd8ce5
C-067 Effect on TORAX of the ASCOT5 production alpha heating (6400 markers, tolerance 1e-7) held fixed from t = 5 s to 7 s, against TORAX's own t = 5 s alpha profiles held fixed, ITER hybrid flat-top; stored thermal energy, with central T_e and the temperature profiles
single run
-0.009% in stored energy (central T_e +0.3%, T_e and T_i profiles 0.4% and 0.5%) measured tkit ascot-apply on job 2287778 PROD, duration 2 s
python -m tkit.cli ascot-apply alpha_t5.npz data/reference/iterhybrid_predictor_corrector.nc --duration 2 --out apply_prod
2138b3c
C-068 Cost of one TGLF case (SAT2, both magnetic-field perturbations, three species) on inputs drawn from the M2 MAST-U and ITER sampling spaces, one AMD EPYC core per case
512 cases, single job; the 256-worker dataset jobs measured 3.3 s per case (C-074)
2.2-2.5 s per case alone, 2.6 s median in a 64-worker pool; about 700 core-hours per 10^6 cases measured cluster job 2293936 (OQ-14), scripts/oq14_tglf_timing.py
python scripts/oq14_tglf_timing.py
3fb1fe2
C-069 Install checks of the GACODE build (commit f34a9dd) on the cluster's CPU nodes; TGLF and CGYRO regression suites, TORAX's in-process TGLF wrapper and TORAX's TGLF transport-model tests
each suite's own tolerances
TGLF 9/9 regression cases; tglf2py wrapper 11/11; TORAX TGLF transport-model tests 3/3; CGYRO 21/21 measured login-node builds 2026-10-02 and cluster job 2293936 (OQ-14) 3fb1fe2
C-070 TGLF as TORAX's transport model on TORAX's iterhybrid_predictor_corrector case, TORAX 1.4.3 with the upstream TGLF patch, legacy TGLF defaults, no transport radial domain
single run
fails at the first step: NaN fluxes on the axis face, about 10^6 gyro-Bohm units on the edge face (K-015) measured cluster job 2293936 (OQ-14), scripts/oq14_torax_tglf.py 3fb1fe2
C-071 TGLF dataset tglf-mastu-v1, 10^5 Latin-hypercube points of the approved MAST-U region (sampling space version 2) under the alpha_MHD cap; cases that TGLF completed with finite fluxes
exact count
100000 of 100000 cases completed, all six fluxes finite measured cluster job 2300218; dataset sha256 104e3015...; Simvue run tglf-dataset-mastu, tag dataset-m2-tglf-mastu-v1
python -m tkit.datasets.tglf_dataset mastu --n 100000 --workers 256
887245e
C-072 TGLF dataset tglf-iter-v1, 10^5 Latin-hypercube points of the approved ITER region (sampling space version 2) under the alpha_MHD cap; cases that TGLF completed with finite fluxes
exact count
100000 of 100000 cases completed, all six fluxes finite measured cluster job 2300314; dataset sha256 3f6ee151...; Simvue run tglf-dataset-iter, tag dataset-m2-tglf-iter-v1
python -m tkit.datasets.tglf_dataset iter --n 100000 --workers 256
887245e
C-073 Fraction of Latin-hypercube draws kept under the fixed alpha_MHD cap (MAST-U 4, ITER 2), and what the cap does to the kept q and beta_e
exact for these datasets
MAST-U 0.490 kept (220936 drawn), ITER 0.425 (258597 drawn); kept mean beta_e 23-25% below the box mean on both; kept median q 1.90 (MAST-U) and 1.73 (ITER, sampled log-uniform over 1.02-11.1) measured dataset metadata (sampling) and inputs of C-071, C-072 887245e
C-074 Cost of generating each 10^5-case TGLF dataset on one 256-core CPU node
two jobs
91.6 core-h (MAST-U) and 92.4 core-h (ITER); 3.3 s per case mean; 35 min wall per job measured per-case wall times stored in C-071, C-072; jobs 2300218, 2300314 887245e
C-075 Fraction of dataset cases whose total heat flux Q_e + Q_i exceeds 10^4 gyro-Bohm units (TGLF's normalisation)
exact for these datasets; not yet explained (K-019)
MAST-U 0.283 above 104 and 0.122 above 105; ITER 0.097 above 104 and 0.0065 above 105 preliminary outputs of C-071, C-072 887245e
C-076 Fraction of each dataset's points whose geometry input lies inside the 1st-99th percentile envelope of the same input measured on the equilibria's flux surfaces, per input
exact for these datasets; per-input table in tglf_domain.csv
MAST-U 0.72 (triangularity) to 0.94 (q); ITER 0.63 (q) to 0.94 (triangularity shear) measured blog/figures/make_tglf_domain.py on C-071, C-072
python blog/figures/make_tglf_domain.py
887245e
C-077 Held-out median relative error of Q_e and Q_i (cases with |Q| > 1 gyro-Bohm unit), baseline deep ensemble of 10 MLP members (4 hidden layers of 256, GELU), 17 sampled TGLF inputs to six fluxes in signed-log space, trained on 80000 cases of each M2 dataset and tested on 10000 held-out cases
single training run; the 95% bootstrap interval of such a median over the 10000 test cases is about ±0.015 (measured for C-079); spread over training seeds not measured
MAST-U 0.77 (Q_e) and 0.80 (Q_i); ITER 0.61 and 0.62 measured GPU job 2318567; meta.json of tglf-mastu-ens-v1 and tglf-iter-ens-v1 (provenance records commit 50d9e38 with a dirty tree); blog/figures/m3_metrics.csv
python -m tkit.surrogates.train mastu; python -m tkit.surrogates.train iter
50d9e38
C-078 Held-out median relative error of Q_e and Q_i, the recreated TGLF-NN member network (GA, TurbulentTransport.jl) with GA's linear standardisation of the outputs, same data and split as C-077; and the coefficient of determination of Q_e in signed-log space
single training run
MAST-U 9.1 (Q_e) and 17.7 (Q_i); ITER 6.8 and 7.0; R² of Q_e in signed-log space -0.30 (MAST-U) and -0.35 (ITER) measured GPU job 2319237; meta.json of tglf-<machine>-tglfnn-v1; blog/figures/m3_metrics.csv
python -m tkit.surrogates.train mastu --variant tglfnn
f4da0c0
C-079 Held-out median relative error of Q_e and Q_i, the recreated TGLF-NN member network (20 members) trained on the signed-log targets, same data and split as C-077
single training run; 95% paired-bootstrap interval over the 10000 test cases (1000 resamples): Q_e 0.73-0.76 (MAST-U) and 0.59-0.62 (ITER)
MAST-U 0.75 (Q_e) and 0.77 (Q_i); ITER 0.60 and 0.58 measured GPU job 2319237; meta.json of tglf-<machine>-tglfnn_symlog-v1; bootstrap in blog/figures/m3_metrics.csv
python -m tkit.surrogates.train mastu --variant tglfnn_symlog; python blog/figures/make_m3_surrogates.py
f4da0c0
C-080 Trainable parameters per ensemble member; the TGLF-NN network with 18 inputs and 3 outputs (20 members), and the baseline MLP with 17 inputs and 6 outputs (10 members)
exact, counted on the saved models
21 827 per member (TGLF-NN network) against 203 526 (MLP) measured array leaves of model.eqx in tglf-mastu-tglfnn_symlog-v1 and tglf-mastu-ens-v1; layer sizes in configs/surrogates/m3_tglf.yaml f4da0c0
C-081 Fraction of held-out cases whose TGLF Q_e lies within the ensemble mean ± 2 member standard deviations, in signed-log space (Q_i in the tolerance)
single runs; Q_i 0.66 and 0.72 (TGLF-NN), 0.58 and 0.63 (MLP). A calibrated Gaussian spread would give 0.95; no calibration is applied yet (M4)
TGLF-NN network 0.63 (MAST-U) and 0.66 (ITER); MLP ensemble 0.54 and 0.57 measured jobs 2318567 and 2319237; coverage_2std in blog/figures/m3_metrics.csv f4da0c0
C-082 Fraction of held-out cases on which the ensemble and TGLF agree whether a case is stable, defined as Q_e + Q_i < 1 gyro-Bohm unit (15% of MAST-U and 17% of ITER test cases are stable)
single runs
TGLF-NN, signed-log 0.91 (MAST-U) and 0.92 (ITER); MLP 0.91 and 0.92; TGLF-NN, linear outputs 0.79 and 0.77 measured jobs 2318567 and 2319237; stable_agreement in blog/figures/m3_metrics.csv f4da0c0
C-083 Slope of the learning curve, log of the held-out median relative error of Q_e against log of the number of training cases, least-squares fit over 20000, 40000 and 80000 cases (fractions of the same training split; validation and test splits fixed)
three points over a factor 4 in training-set size, one run each
-0.10 (MAST-U) and -0.19 (ITER) for the TGLF-NN network; -0.07 and -0.14 for the MLP measured job 2319237 (fractions 0.25 and 0.5) and the full models; blog/figures/m3_learning_curves.csv
python -m tkit.surrogates.train iter --variant tglfnn_symlog --train-frac 0.25; python blog/figures/make_m3_surrogates.py
f4da0c0
C-084 Training-set size at which the fitted learning curves of C-083 (TGLF-NN network) reach a median relative error of 0.30 on Q_e, with points drawn as in the M2 datasets
an extrapolation of a power law fitted over a factor 4 in N to a factor 40 (ITER) and 10^4 (MAST-U) beyond its range; it gives the scale, not a prediction
about 3 × 106 cases (ITER) and about 109 (MAST-U) preliminary n_for_target_extrapolated in blog/figures/m3_learning_curves.csv
python blog/figures/make_m3_surrogates.py
f4da0c0
C-085 Standard deviation of Q_e over each machine's training split, the scale a linear output standardisation divides by, and the median |Q_e| expressed in that scale
exact for these training splits
2.5 × 105 gB (MAST-U) and 1.1 × 104 gB (ITER); the median |Q_e|, 473 and 29 gB, is 0.0019 and 0.0027 standard deviations measured train_Qe_std, train_Qe_median_abs in blog/figures/m3_datasets.csv, from tglf-<machine>-v1 and the saved split
python blog/figures/make_m3_surrogates.py
f4da0c0
C-086 Range of Q_e in the training data of GA's MAST-U TGLF-NN model, as recorded in its model file, against the range in the tglf-mastu-v1 dataset
GA's range as read from the model file for the M3 report; dataset range exact
GA's MAST-U model -1.5 × 104 to 5.2 × 104 gB; tglf-mastu-v1 -2.4 × 106 to 2.8 × 107 gB measured model file sat2_em_mastu_azf+-1, github.com/ProjectTorreyPines/TurbulentTransport.jl at 212a9a7 (M3 report, commit 2cbbe9f); Qe_min, Qe_max in blog/figures/m3_datasets.csv 2cbbe9f
C-087 Epoch at which the members' mean validation loss is lowest (counted from 0); training stops when no member has improved for 60 epochs, and each member keeps its own best-validation parameters
80000-case models, one run each; the validation loss rises afterwards while the training loss falls
epochs 16-25 for the MLP and the TGLF-NN network with linear outputs; 161-224 for the TGLF-NN network on signed-log targets measured training histories in meta.json (jobs 2318567, 2319237); best_mean_val_epoch in blog/figures/m3_metrics.csv f4da0c0
C-088 Training time of one ensemble on one NVIDIA H100 GPU, as recorded by the training loop
one run each; job wall times 1 min 21 s (two ensembles, job 2318567), 3 min 33 s (12 runs on 4 GPUs, job 2319237), 3 min 44 s (4 runs, job 2321323)
13 s (MLP, 10 members, 80000 cases); 39-53 s (TGLF-NN, 20 members, 80000 cases); 70-109 s (TGLF-NN, 170000 cases) measured train_seconds in meta.json; job logs 2318567, 2319237, 2321323 352f879
C-089 Rank correlation (Spearman) between the members' standard deviation and the absolute error of the ensemble mean, both in signed-log space, on the 10000-case v1 test split, over Q_e and Q_i and both machines
Pearson correlation 0.42-0.49 (MLP) and 0.50-0.57 (TGLF-NN)
0.39-0.51 for the MLP ensemble and 0.53-0.62 for the TGLF-NN network measured re-evaluation of the saved v1 models; spearman_std_vs_abs_err in blog/figures/m3_metrics.csv
python blog/figures/make_m3_surrogates.py
f4da0c0
C-090 TGLF labelling of active-learning round 1, a selected batch and a uniform batch of 10^5 points each per machine, one 256-core CPU node per machine
exact count
4 × 105 cases, all completed with finite fluxes; 1 h 16 min (MAST-U) and 1 h 15 min (ITER) measured cluster jobs 2319519 (MAST-U) and 2319520 (ITER); datasets tglf-<machine>-v2-al and -v2-random, sha256 in blog/figures/m3_datasets.csv
python -m tkit.datasets.tglf_active mastu --workers 256
352f879
C-091 Fraction of cases by TGLF's Q_e + Q_i, below 1 gB / 1-100 gB / above 10^4 gB, in dataset v1 and in the batch selected by active learning (v2-al)
exact for these datasets. The uniform batch is drawn from the pool minus the selected batch, so it has fewer low-flux cases than v1: 13% (MAST-U) and 16% (ITER) below 1 gB
MAST-U 16% / 18% / 28% in v1 against 45% / 31% / 5% in the selected batch; ITER 17% / 39% / 10% against 35% / 47% / 2% measured tglf_frac_* in blog/figures/m3_datasets.csv (datasets of C-071, C-072, C-090)
python blog/figures/make_m3_surrogates.py
352f879
C-092 For the selected batch, the share the selecting ensemble predicted below 1 gB in Q_e + Q_i at selection time, and the batch's mean member disagreement against the pool's (signed- log space, mean over Q_e and Q_i)
exact for these selections
predicted below 1 gB: 24% (MAST-U) and 19% (ITER), against 45% and 35% from TGLF; mean disagreement 0.58 against 0.69 for the pool (MAST-U), 0.46 against 0.51 (ITER) measured selection-<machine>-v2.npz (q_tot, std); predicted_frac_*, mean_member_std_* in blog/figures/m3_datasets.csv 352f879
C-093 Median relative error of Q_e (|Q_e| > 1 gB), TGLF-NN ensemble trained on v1 only (80000 cases), MAST-U, on the v1 test split / the selected batch's holdout / the uniform batch's holdout (10000 cases each)
95% bootstrap intervals about ±0.015 (m3_metrics.csv)
0.75 / 0.85 / 0.76 measured tglf-mastu-tglfnn_symlog-v1 (job 2319237), scored on the v2 holdouts by tkit.surrogates.evaluate (evals/tglf-mastu-tglfnn_symlog-v1.json)
python -m tkit.surrogates.evaluate data/m3/surrogates/tglf-mastu-tglfnn_symlog-v1
352f879
C-094 As C-093, TGLF-NN ensemble trained on v1 plus the selected batch (170000 cases), MAST-U
95% bootstrap intervals about ±0.015 (m3_metrics.csv)
0.72 / 0.81 / 0.73 measured GPU job 2321323; meta.json of tglf-mastu-tglfnn_symlog_al-v1
python -m tkit.surrogates.train mastu --variant tglfnn_symlog_al
352f879
C-095 As C-093, TGLF-NN ensemble trained on v1 plus the uniform batch (170000 cases), MAST-U
95% bootstrap intervals about ±0.015 (m3_metrics.csv)
0.69 / 0.81 / 0.70 measured GPU job 2321323; meta.json of tglf-mastu-tglfnn_symlog_random-v1
python -m tkit.surrogates.train mastu --variant tglfnn_symlog_random
352f879
C-096 As C-093, TGLF-NN ensemble trained on v1 only (80000 cases), ITER
95% bootstrap intervals about ±0.02 (m3_metrics.csv)
0.60 / 0.69 / 0.59 measured tglf-iter-tglfnn_symlog-v1 (job 2319237), scored on the v2 holdouts by tkit.surrogates.evaluate (evals/tglf-iter-tglfnn_symlog-v1.json)
python -m tkit.surrogates.evaluate data/m3/surrogates/tglf-iter-tglfnn_symlog-v1
352f879
C-097 As C-093, TGLF-NN ensemble trained on v1 plus the selected batch (170000 cases), ITER
95% bootstrap intervals about ±0.02 (m3_metrics.csv)
0.57 / 0.64 / 0.55 measured GPU job 2321323; meta.json of tglf-iter-tglfnn_symlog_al-v1
python -m tkit.surrogates.train iter --variant tglfnn_symlog_al
352f879
C-098 As C-093, TGLF-NN ensemble trained on v1 plus the uniform batch (170000 cases), ITER
95% bootstrap intervals about ±0.02 (m3_metrics.csv)
0.55 / 0.62 / 0.52 measured GPU job 2321323; meta.json of tglf-iter-tglfnn_symlog_random-v1
python -m tkit.surrogates.train iter --variant tglfnn_symlog_random
352f879
C-099 Difference in the median relative error of Q_e, model trained with the uniform batch minus model trained with the selected batch, with its 95% paired-bootstrap interval over the test cases (1000 resamples); negative means the uniform batch did better
the interval covers test-set sampling only; one training run per model
on the selected batch's holdout 0.000 (-0.013 to 0.009) for MAST-U and -0.015 (-0.028 to -0.003) for ITER; on the v1 test split -0.023 (-0.033 to -0.014) and -0.027 (-0.040 to -0.015) measured re-evaluation of the round-1 models; rows 'rel_err_median_all_bootstrap' in blog/figures/m3_metrics.csv
python blog/figures/make_m3_surrogates.py
352f879
C-100 Median relative error near threshold (cases with 1 < |Q| <= 100 gB) on the selected batch's holdout, model trained with the selected batch against model trained with the uniform batch
paired-bootstrap 95% intervals of the difference (uniform minus selected): Q_e -0.009 to 0.029 (MAST-U) and -0.021 to 0.006 (ITER), so no difference resolved; Q_i -0.037 to -0.001 and -0.036 to -0.009, in favour of the uniform batch
MAST-U Q_e 0.77 against 0.78, Q_i 0.74 against 0.73; ITER Q_e 0.58 against 0.57, Q_i 0.54 against 0.52 measured job 2321323; rel_err_median_near and the bootstrap rows in blog/figures/m3_metrics.csv
python blog/figures/make_m3_surrogates.py
352f879
C-101 Median relative error of Q_e on the v1 test split that the fitted learning curve of the TGLF-NN network (C-083) gives at 170000 training cases, against the two round-1 models
the fit is an extrapolation by a factor 2.1 beyond its largest point
fit 0.70 (MAST-U) and 0.52 (ITER); measured 0.72 and 0.57 with the selected batch, 0.69 and 0.55 with the uniform batch measured fit_at_170000 in blog/figures/m3_learning_curves.csv; C-094, C-095, C-097, C-098
python blog/figures/make_m3_surrogates.py
352f879
C-102 Fraction of cases with a negative TGLF flux, over the six M2/M3 TGLF datasets (v1, v2-al and v2-random for MAST-U and ITER)
exact for these datasets
Q_e < 0 in 2.0-6.5% of cases (below -1 gB in 0.5-1.5%; median of the negative values -0.03 to -0.09 gB); Q_i < 0 in 9.4-14.1% (below -1 gB in 2.2-5.1%); particle fluxes negative in 33-54% measured frac_* and median_negative_Qe in blog/figures/m3_datasets.csv
python blog/figures/make_m3_surrogates.py
352f879
C-103 TGLF cases with Q_i < -1 gB in the v1 datasets; share with Q_e > 0, median ratio Q_e / |Q_i|, and the lowest Q_i
exact for these datasets
Q_e > 0 in 97% (MAST-U) and 95% (ITER) of them, with median Q_e / |Q_i| of 69 and 34; lowest Q_i -6.9 × 106 gB (MAST-U) and -6.5 × 104 gB (ITER) measured blog/figures/m3_datasets.csv (v1 rows)
python blog/figures/make_m3_surrogates.py
887245e
C-104 What clipping Q_e and Q_i at zero costs on the v1 test splits (10000 cases per machine), whatever the model; TGLF's share of cases with Q <= 0, the share of cases with |Q| > 1 gB that have Q < -1 gB (a clipped prediction has relative error >= 1 there), and the change of Q_e + Q_i where it is at least 1 gB
exact for these splits. The negative part is 0.14% and 0.04% of the summed |Q_e|, 0.86% and 0.77% of the summed |Q_i| (MAST-U, ITER)
Q <= 0 in 4.6% (MAST-U) and 5.2% (ITER) of cases for Q_e, 11.8% and 13.2% for Q_i; Q < -1 gB in 0.8% and 0.7% (Q_e) and 6.5% and 4.3% (Q_i) of cases with |Q| > 1 gB; Q_e + Q_i changes by more than 10% in 0.9% and 1.0% of cases measured blog/figures/m3_clip_cost.csv, from tglf-<machine>-v1 and the saved test split
python blog/figures/make_m3_structure.py
887245e
C-105 Share of the test cases with TGLF's Q <= 0 that the surrogate predicts as exactly zero, TGLF-NN network trained with linear outputs and clipped at zero afterwards; CPU smoke run (16000 training cases, 5 members, 150 epochs), v1 test split
smoke runs, one each, smaller than the production models; the comparison between rows is the point, not the values
Q_e 0.13 (MAST-U) and 0.17 (ITER); Q_i 0.16 and 0.20 preliminary smoke models tglf-<machine>-smk_linear-v1-f0.2 (session scratch storage, commit 1010da1 with the ReLU code uncommitted, later 9a036a6); blog/figures/m3_relu_variants.csv
python -m tkit.surrogates.train <machine> --variant tglfnn_symlog --train-frac 0.2 (5 members, 150 epochs); python blog/figures/make_m3_structure.py SMOKE_DIR
9a036a6
C-106 As C-105, network trained on max(Q, 0) for Q_e and Q_i and clipped in use
smoke runs, as C-105
Q_e 0.10 (MAST-U) and 0.15 (ITER); Q_i 0.06 and 0.06 preliminary smoke models tglf-<machine>-smk_relu_ct-v1-f0.2; blog/figures/m3_relu_variants.csv 9a036a6
C-107 As C-105, network trained with QLKNN's stability penalty (where TGLF's Q <= 0 only a prediction above -margin costs), margin 0, weight 1, clipped in use
smoke runs, as C-105
Q_e 0.18 (MAST-U) and 0.21 (ITER); Q_i 0.13 and 0.17 preliminary smoke models tglf-<machine>-smk_relu_sp-v1-f0.2; blog/figures/m3_relu_variants.csv 9a036a6
C-108 As C-105, stability penalty with margin 1 in signed-log units (Q = -1.7 gB), weight 1, clipped in use; the setting adopted for the variant tglfnn_symlog_relu
smoke runs, as C-105
Q_e 0.28 (MAST-U) and 0.40 (ITER); Q_i 0.25 and 0.43 preliminary smoke models tglf-<machine>-smk_relu_sp_m1-v1-f0.2; blog/figures/m3_relu_variants.csv 9a036a6
C-109 As C-105, stability penalty with margin 0.5 and weight 10, clipped in use
smoke runs, as C-105
Q_e 0.45 (MAST-U) and 0.62 (ITER); Q_i 0.48 and 0.63 preliminary smoke models tglf-<machine>-smk_relu_sp_w10-v1-f0.2; blog/figures/m3_relu_variants.csv 9a036a6
C-110 What the adopted stability penalty (margin 1, weight 1; C-108) changes against the linear network clipped afterwards (C-105), smoke runs on the v1 test split; and the share of cases with TGLF's Q > 1 gB that it predicts as exactly zero
smoke runs, one each; differences between variants trained on the same data and seeds
Q_i median relative error +0.005 (MAST-U) and +0.009 (ITER), Q_e within ±0.004; stable/unstable agreement +0.009 and +0.016; Q > 1 gB predicted zero in 0.1% (Q_e) and 0.3% (Q_i) of such cases preliminary blog/figures/m3_relu_variants.csv (rows smk_linear+clip and smk_relu_sp_m1)
python blog/figures/make_m3_structure.py SMOKE_DIR
9a036a6
C-111 The cost of the weight-10 penalty (C-109) against the linear network clipped afterwards, smoke runs on the v1 test split
smoke runs, as C-110
Q_i median relative error +0.03 (MAST-U) and +0.05 (ITER); 1.0% and 1.3% of cases with Q_i > 1 gB predicted as zero preliminary blog/figures/m3_relu_variants.csv (rows smk_linear+clip and smk_relu_sp_w10) 9a036a6
C-112 TGLF gradient scans for monotonicity, per machine 35 base points from the v1 test split with Q_e and Q_i above 1 gB, each scanned over a/L_Te and over a/L_Ti at 8 values (base value ± a third of the approved range, cut at the range and the alpha_MHD cap); re-runs of the base points against the dataset's flux
exact; 3 (MAST-U) and 6 (ITER) scans are shortened by the alpha_MHD cap
560 cases per machine, all completed; the 70 re-run base cases per machine reproduce the dataset's fluxes bit for bit measured data/m3/scans/tglf-mono-v1 (summary.json; provenance records commit 476875d with a dirty tree); blog/figures/m3_monotonicity.csv
python -m tkit.surrogates.monotonicity plan; ... run-chunk N; ... finish
476875d
C-113 Share of TGLF scans (C-112) along which the heat flux falls below its running maximum as its own gradient rises (Q_e in a/L_Te, Q_i in a/L_Ti), at all and by more than half
35 scans per entry. The largest drops exceed 100% where Q_i turns negative
falls somewhere in 77% (Q_e) and 80% (Q_i) of MAST-U scans, 51% and 74% of ITER scans; by more than half in 40% and 57% (MAST-U), 34% and 57% (ITER) measured fraction_decreasing_above_noise, fraction_drop_above_50pct in data/m3/scans/tglf-mono-v1/summary.json; blog/figures/m3_monotonicity.csv
python blog/figures/make_m3_structure.py
476875d
C-114 As C-113, for the v1 TGLF-NN ensemble (signed-log targets) evaluated on the same scans
35 scans per entry
falls somewhere in 20% (Q_e) and 49% (Q_i) of MAST-U scans, 23% and 37% of ITER scans; by more than half in 3% and 23% (MAST-U), 9% and 17% (ITER) measured ensemble.scans in data/m3/scans/tglf-mono-v1/summary.json; blog/figures/m3_monotonicity.csv 476875d
C-115 Share of v1 test points (heat flux above 1 gB) at which the v1 TGLF-NN ensemble mean has a negative slope of the heat flux in its own gradient, total derivative with P_PRIME_LOC moving with the gradient
6800-8200 test points per entry; per member 13-14% (Q_e) and 24-27% (Q_i)
Q_e 8% (MAST-U) and 11% (ITER); Q_i 25% and 22% measured ensemble.test_slopes in data/m3/scans/tglf-mono-v1/summary.json; blog/figures/m3_monotonicity.csv 476875d
C-116 Derivatives through the TGLF surrogate inside TORAX, M1 benchmark case (RAPTOR L-mode) with the guarded surrogate; reverse mode against central differences (step 1e-4) and against forward mode, for the summed guarded chi_e + chi_i on the initial state and for core T_e after 3 Newton steps, with respect to a T_e perturbation
the guard's per-face decision is asserted unchanged across the difference stencil
reverse mode within 10−6 (coefficients) and 10−7 (after 3 Newton steps) of central differences, and within 10−9 and 10−12 of forward mode tested tests/diff/test_torax_surrogate_gradients.py::test_guarded_coefficients_gradient_fd_checked, ::test_grad_through_newton_steps_with_the_surrogate_fd_checked 7ec2569
C-117 Cost of one call of the TGLF surrogate (20-member TGLF-NN ensemble, ITER, signed-log) on the 51 faces of a TORAX state, one CPU core, after compilation
mean over repeated calls; 0.31 s for 5100 faces; compilation and first call 0.52 s
3.1 ms measured scripts/m3_surrogate_loop.py percall, login-node run 2026-10-03 (percall.json)
python scripts/m3_surrogate_loop.py percall raptor_surrogate.npz --tglf-cases 20
7ec2569
C-118 Cost of TGLF on the same 51 faces (M2 dataset settings, one CPU core), from 20 faces timed and scaled to 51
20 faces, 1.94-2.57 s each; 3.3 × 10^4^ times the surrogate's call (C-117)
about 103 s (2.0 s per face) measured as C-117 (tglf_wall_s in percall.json) 7ec2569
C-119 The surrogate against TGLF on the same inputs, the final state of the RAPTOR L-mode run with the guarded surrogate, on the first 20 faces inside the surrogate's domain; median absolute relative difference where TGLF's flux exceeds 1 gB
one state, one case; not a held-out statistic
Q_e 0.28 (11 faces) and Q_i 0.44 (12 faces); the surrogate is below TGLF on 10 of the 11 and on all 12 preliminary surrogate_gb and tglf_gb in percall.json (as C-117) 7ec2569
C-120 Wall time of the RAPTOR L-mode case (M1 benchmark, Newton solver, 200 steps of 0.05 s) with the guarded TGLF surrogate as TORAX's transport model, one CPU core, compilation excluded; and the solver's step record
two runs on a shared login node
374 s and 405 s (two runs); no stalled step, 57 steps accepted at the coarse tolerance measured scripts/m3_surrogate_loop.py run --case raptor --transport surrogate, two login-node runs 2026-10-03 (raptor_surrogate.npz meta)
python scripts/m3_surrogate_loop.py run --case raptor --transport surrogate --out s.npz
7ec2569
C-121 As C-120, with TORAX's QLKNN (TORAX's defaults on this case) as the transport model
two runs; QLKNN is not this case's own transport model and its solver record shows it
29 s and 30 s (two runs); 179 of 200 steps stalled, 6 at the coarse tolerance measured scripts/m3_surrogate_loop.py run --case raptor --transport qlknn (raptor_qlknn.npz meta) 7ec2569
C-122 Further wall times, one CPU core, compilation excluded; RAPTOR L-mode with the linear solver, and TORAX's ITER hybrid predictor-corrector case (50 steps of 0.1 s)
one run each
RAPTOR L-mode, linear solver: surrogate 5.2 s, QLKNN 0.57 s; Newton with the published constant transport 0.35 s, with Bohm/gyro-Bohm 1.6 s. ITER hybrid: surrogate 0.56 s, QLKNN 0.066 s, Bohm/gyro-Bohm 0.030 s measured scripts/m3_surrogate_loop.py run outputs (login-node runs 2026-10-03) 7ec2569
C-123 Fraction of (face, step) points at which the guard rejected the surrogate and served Bohm/gyro-Bohm
one run each; the domain is the box of the v1 training inputs (K-023)
0.51 on the RAPTOR L-mode case and 0.27 on the ITER hybrid case measured rejected_fraction in the run outputs of C-120 and C-122 7ec2569
C-124 TORAX runs of the dataset v3 scenario families; MAST-U, 8 FreeGSNKE MAST-U-like equilibria x 2 Bohm/gyro-Bohm multipliers x 2 heating powers x 2 densities x with and without a pedestal; ITER, TORAX's RAPTOR L-mode, ITER hybrid flat-top and ITER current ramp-up examples with scaled heating power and density
exact. The MAST-U test runs are all runs on 2 of the 8 equilibria, shapes not seen in training
128 MAST-U runs and 39 ITER runs, all completed; 32 and 8 of them held out for the test split measured record of data/m3/v3/<machine>/points.npz (provenance: commit dfdf677 MAST-U, 648bab0 ITER, clean trees)
python -m tkit.datasets.tglf_trajectory trajectories <machine>; python -m tkit.datasets.tglf_trajectory assemble <machine>
648bab0
C-125 Faces of the dataset v3 TORAX states inside the radial window r/a 0.1-0.9, and the share inside the approved M2 region (kinetic ranges with the ITER collisionality widened by OQ-20, alpha_MHD cap), which become v3 states
exact
MAST-U 115722 of 124032 faces (93%); ITER 68978 of 79344 (87%) measured faces_in_window, states_in_region in the record of data/m3/v3/<machine>/points.npz 648bab0
C-126 Share of the v3 faces in the radial window whose input lies outside the M2 range of that input; geometry inputs counted against the measured M2 ranges but not excluded, kinetic inputs excluded
exact; per-input table in the record
MAST-U: triangularity shear 41%, triangularity 12.5%, q 6.5%, magnetic shear 5.6%, collisionality 5%, beta_e 2%; ITER: a/L_Te 11%, a/L_Ti 10%, triangularity shear 5%, magnetic shear 3%, T_i/T_e 2%, collisionality 1%; every other input below 2% measured fraction_outside in the record of data/m3/v3/<machine>/points.npz 648bab0
C-127 Dataset v3 points per machine; training points are unperturbed states and copies of states with their kinetic inputs perturbed (copies outside the region redrawn); test points are unperturbed states of the held-out runs
exact
90000 training points (22500 unperturbed) and 10000 test points per machine; more than 99.99% of perturbed copies fell inside the region at the first draw measured n_train, n_test, n_train_unperturbed, perturbed_acceptance in the record of data/m3/v3/<machine>/points.npz 648bab0
C-128 Finished TGLF v3 labels, per machine; input rows match the trajectory points and artifact digests validate
exact; trajectory assembly replayed from recorded plans and saved run files
90000 training cases and 10000 held-out test cases per machine, all completed with finite fluxes measured spec/reviews/m3-v3-validation.json (audit 2026-10-07, working tree at 522f028; artifact hashes in the sidecar)
python scripts/m3_validate_v3.py <machine> --out data/m3/validation/<machine>-mono.json
522f028
C-129 Final monotone v3 ensembles: median absolute relative heat-flux error on the entire v3-test dataset, where |Q| > 1 gB
10000 test cases per machine; scores reproduced within relative tolerance 1e-8; test runs withheld from training
MAST-U: Q_e 17.8%, Q_i 25.2%; ITER: Q_e 7.2%, Q_i 10.8%; all meet the 30% target measured spec/reviews/m3-v3-validation.json (audit 2026-10-07, working tree at 522f028; artifact hashes in the sidecar)
python scripts/m3_validate_v3.py <machine> --out data/m3/validation/<machine>-mono.json
522f028
C-130 Empirical monotonicity of the final v3 ensembles, every member: heat flux in its own temperature gradient
sampled points only, not a formal proof over the input domain; each scan-grid pair has 4900 member neighbour comparisons
no negative member slopes on the tested v1/v3 points or scan grids, and no negative neighbour differences on the scan grids tested spec/reviews/m3-v3-validation.json (audit 2026-10-07, working tree at 522f028; artifact hashes in the sidecar)
python -m tkit.surrogates.monotonicity check data/m3/surrogates/tglf-<machine>-tglfnn_symlog_relu_mono_v3-v1
522f028
C-131 Departure of the final monotone v3 ensembles from TGLF on broad v1 scan families where TGLF decreases: median of maximum per-scan signed-log difference
signed-log scale 1 gB; this includes approximation error as well as the imposed monotonicity; broad scans differ from the v3 acceptance distribution
MAST-U: Q_e 3.14, Q_i 3.36; ITER: Q_e 2.51, Q_i 2.11 signed-log units preliminary spec/reviews/m3-v3-validation.json (audit 2026-10-07, working tree at 522f028; artifact hashes in the sidecar)
python -m tkit.surrogates.monotonicity check data/m3/surrogates/tglf-<machine>-tglfnn_symlog_relu_mono_v3-v1
522f028
C-132 Historical matched end-to-end TGLF/v1-surrogate timing on RAPTOR L-mode: linear solver, host driver, 40 fixed steps of 0.05 s
job 2354632, one CPU node, compilation excluded; zero stalled or coarse-tolerance steps; surrogate and QLKNN each use one core, TGLF uses 51 workers; this is v1 evidence, not v3 speed-up
TGLF 540.38 s, v1 surrogate 0.780 s, QLKNN 0.126 s; v1 is about 693 times faster than TGLF measured spec/reviews/m3-v3-validation.json (audit 2026-10-07, working tree at 522f028; artifact hashes in the sidecar)
python scripts/m3_surrogate_loop.py run --case raptor --solver linear --driver host --steps 40 --transport surrogate --surrogate-variant tglfnn_symlog --out v1.npz
522f028
C-133 Final v1-surrogate profiles against TGLF in the historical matched comparison (job 2354632), at 2 s
one scenario, linear solver; TORAX-paper NRMSD (eq. 41); no M4 closed-loop tolerance or certification is implied
T_e 18.52%, T_i 22.09%, n_e 10.25%, psi 0.44% preliminary spec/reviews/m3-v3-validation.json (audit 2026-10-07, working tree at 522f028; artifact hashes in the sidecar)
python scripts/m3_surrogate_loop.py compare tglf.npz surrogate.npz
522f028
C-134 Final monotone v3 profiles from the local scan-driver run against the saved TGLF reference (job 2354632), at 2 s
same RAPTOR case, grid, linear solver, dt and 40 steps; local scan driver vs historical host driver; profile comparison only, no matched v3 timing claim
T_e 7.72%, T_i 9.23%, n_e 11.36%, psi 0.32% preliminary spec/reviews/m3-v3-validation.json (audit 2026-10-07, working tree at 522f028; artifact hashes in the sidecar)
python scripts/m3_surrogate_loop.py compare tglf.npz data/m3/validation/loop/raptor-v3-scan.npz --out comparison.json
522f028
C-135 Local monotone v3 RAPTOR run: finite profiles and accepted-state guard diagnostics on 40 linear-solver steps
one local CPU run; guard re-evaluated at each accepted end-of-step state, not the actual per-iterate usage; runtime cannot be divided into historical TGLF timing to claim matched speed-up
all profiles finite; no stalled or coarse-tolerance step; post-step guard rejection 33.1%; execution 1.62 s after compilation measured spec/reviews/m3-v3-validation.json (audit 2026-10-07, working tree at 522f028; artifact hashes in the sidecar)
python scripts/m3_surrogate_loop.py run --case raptor --transport surrogate --solver linear --driver scan --steps 40 --out data/m3/validation/loop/raptor-v3-scan.npz
522f028
C-136 Sum of recorded wall time over TGLF v3 cases, not elapsed cluster job time
sum of per-case wall_s stored in the validated datasets; parallel workers mean these are not elapsed job durations
MAST-U: 58.03 case-hours (train), 5.45 (test); ITER: 63.43 (train), 5.62 (test) measured spec/reviews/m3-v3-validation.json (audit 2026-10-07, working tree at 522f028; artifact hashes in the sidecar) 522f028
C-137 Final monotone v3 models: uncalibrated ensemble spread coverage and exact-zero behavior on v3-test
coverage is measured in signed-log space, uncalibrated; nonnegative outputs do not identify every TGLF-stable point; M4 calibration remains required
mean ±2 standard deviations covers Q_e/Q_i at 75.3%/74.4% (MAST-U), 85.6%/80.8% (ITER); exact-zero predictions where TGLF is nonpositive: 44.0%/47.0% (MAST-U), 52.3%/21.1% (ITER) measured spec/reviews/m3-v3-validation.json (audit 2026-10-07, working tree at 522f028; artifact hashes in the sidecar) 522f028
C-140 At TORAX default Newton residual tolerance, implicit derivatives and discrete balance do not attain the stricter validation limits for guarded transport surrogates
three RAPTOR Newton steps at residual_tol=1e-5; guard masks unchanged over the difference sweep, forward and reverse agree; the v3 difference persists from h=1e-4 to h=1e-8
v3 derivative discrepancy about 1.8e-5 relative; peak discrete energy residual 1.11e-5 (v1) and 1.36e-6 (v3) tested spec/reviews/m3-v3-validation.json numerical_convergence; default-gradient diagnostic and initial conservation test reports 522f028
C-138 Guarded ITER v1 and final monotone v3 transport derivatives pass the strict finite-difference and forward/reverse checks in the RAPTOR loop
three RAPTOR Newton steps with residual_tol=1e-10; initial guarded-coefficient checks also pass; four tests executed, none skipped
v1 and v3 pass: three-step derivative FD tolerance 1e-7, forward/reverse tolerance 1e-12; guard masks unchanged over the stencil tested data/m3/validation/suites/full/tests/diff/test_torax_surrogate_gradients.xml; bound in spec/reviews/m3-v3-validation.json.provenance.json
python -m pytest tests/diff/test_torax_surrogate_gradients.py tests/diff/test_torax_surrogate_v3_gradients.py; run one file per process on CPU-limited hosts
0522ee6
C-139 Guarded ITER v1 and final monotone v3 surrogates pass the existing discrete energy and particle balance limits in the RAPTOR loop
three RAPTOR Newton steps at residual_tol=1e-10; six loop, fallback and conservation tests executed, none skipped; this is local validation, not M4 certification
v1 and v3 pass: energy residual below 1e-6 and particle residual below 1e-10, with fine solver convergence tested data/m3/validation/suites/full/tests/physics/test_torax_surrogate_loop.xml; bound in spec/reviews/m3-v3-validation.json.provenance.json
python -m pytest tests/physics/test_torax_surrogate_loop.py
0522ee6
C-141 Local final monotone ITER v3 Newton loop execution and isolated ensemble inference cost on one CPU core
RAPTOR case, residual_tol=1e-10, all four profiles finite, no stalled or coarse-tolerance steps; isolated inference is not a full transport/Jacobian call; local timings are not matched TGLF speed-up evidence
40 Newton steps in 60.58 s, median 1.47 s per step; isolated prediction on 51 faces takes 4.36 ms per call measured data/m3/validation/loop/v3-performance.json; inputs bound in spec/reviews/m3-v3-validation.json.provenance.json
python scripts/m3_surrogate_loop.py run --case raptor --transport surrogate --driver host --steps 40 --out newton.npz
522f028
C-142 The final monotone v3 surrogate completes the ITER hybrid predictor-corrector scenario with finite profiles
local CPU scan driver, case linear solver, fixed dt 0.1 s; guard checked on accepted states; no TGLF profile-error or speed-up bound
50 steps to 5 s, all four profiles finite, no stalled or coarse-tolerance steps; accepted-state guard rejection 26.9% measured data/m3/validation/loop/iterhybrid-v3-scan.npz; bound in spec/reviews/m3-v3-validation.json.provenance.json
python scripts/m3_surrogate_loop.py run --case iterhybrid --transport surrogate --driver scan --out iterhybrid-v3.npz
0522ee6
C-143 Synthetic RF source and boundary-vector guard contracts and grouped reference dataset contracts pass in both test modes
no failures or skips; JIT/vmap, rejected singular gradients, source control derivatives, whole-profile fallback and power rejection, core-loop finite-difference gradient at rtol 1e-6, hash tampering and group splits; no RF/pedestal prediction accuracy established
25 synthetic contract tests pass in full and Tier-A-only modes tested spec/reviews/m3-rf-pedestal-validation.json; response_guards and response_datasets JUnit reports bound in its sidecar
python -m pytest tests/unit/test_response_guards.py tests/unit/test_response_datasets.py
599c12a
C-144 Gaussian RF construction rejects NaN and positive or negative infinity in each of its four parameters
ValueError before source evaluation; finite-parameter deposition behaviour remains covered by the existing RF tests
12 nonfinite-parameter cases pass in each mode tested tests/physics/test_rf_deposition.py::test_nonfinite_source_parameters_are_rejected; JUnit reports bound in spec/reviews/m3-rf-pedestal-validation.json.provenance.json
python -m pytest tests/physics/test_rf_deposition.py
599c12a
C-145 Model-independent case/profile response baseline training, saved inference and guard compatibility pass on synthetic numerical fixtures in both modes
no failures or skips; saved group splits, failed-case filtering, training-only normalisation and bounds, per-member validation checkpoint selection, unit-preserving metrics, seed replay, hash tampering, CLI, reference-independent reload, guard selection and gradients (FD rtol 1e-6, forward/reverse rtol 1e-10); synthetic fits improve over a constant baseline, not a physics accuracy target
26 synthetic baseline-pipeline tests pass in full and Tier-A-only modes tested spec/reviews/m3-response-training-validation.json; response_training JUnit reports bound in its sidecar
python -m pytest tests/unit/test_response_training.py
deb866b
C-146 Local guarded ITER transport-surrogate validation covers RAPTOR L-mode with v1 and final monotone v3, and ITER hybrid with final monotone v3 and a Newton override
no failures or skips; three steps at dt 0.05 s; residual_tol=1e-10 for loop derivatives and balance; coefficient FD rtol 1e-6, loop FD rtol 1e-7, forward/reverse rtol 1e-9 and 1e-12 respectively; unchanged stencil masks; energy below 1e-6 and particles below 1e-10 relative; local short checks, not matched timing or M4 certification
15 gradient, JIT, fallback and discrete-balance checks pass across RAPTOR and ITER hybrid in each mode tested spec/reviews/m3-extended-loop-validation.json; full and Tier-A JUnit reports and tested source snapshots bound in its provenance sidecar
python -m pytest tests/diff/test_torax_surrogate_gradients.py tests/diff/test_torax_surrogate_v3_gradients.py tests/diff/test_torax_surrogate_iterhybrid_gradients.py tests/physics/test_torax_surrogate_loop.py; run one file per process on CPU-limited hosts, then repeat with TKIT_TIER_A_ONLY=1
7971903
C-147 Performance evidence rejects unsuccessful solves and handles overlapping trace events in both test modes
no failures or skips; stalled, coarse-tolerance and nonfinite rejection, nested and concurrent interval unions, gaps, invalid durations, unlabelled events and effective CPU/job records; no new matched timing or physics certificate
11 performance-tool checks pass in full and Tier-A-only modes tested spec/reviews/m3-performance-continuation.json; final focused JUnit reports and tested source hashes bound in its sidecar
python -m pytest tests/unit/test_m3_performance_tools.py; repeat with TKIT_TIER_A_ONLY=1
762fcd5
C-148 The saved three-step Newton trace has fused runtime labels; an interval-union audit does not recover physics component attribution
interval union 5.368648273 s versus inclusive sum 5.398356896 s; all HLO events use one fused module and one runtime source, across two threads; trace overhead included, no component percentage or unprofiled runtime inferred
72059 complete HLO events with about 5.369 s of covered trace time preliminary data/m3/validation/continuation/newton-trace-summary.json; trace digest observed at analysis time and bound in spec/reviews/m3-performance-continuation.json.provenance.json
python scripts/m3_profile_trace.py TRACE.json.gz --out REPORT.json
762fcd5
C-149 The selected EPEDNN pressure/width checkpoint's JAX port reproduces pinned upstream regression values
ITER and two other upstream numerical fixtures; relative maximum difference about 1.6e-15; 54 finite JIT outputs; raw AD/FD checks with unchanged masks; no fresh Julia, full-EPED, experimental or coupled validation
12 upstream scalar regression values agree within relative tolerance 1e-12 measured spec/reviews/m3-epednn-port-validation.json; numeric artifact, upstream model/source/tests and working-tree source hashes bound in its sidecar
python scripts/m3_validate_epednn.py data/references/EPEDNN.jl --out NEW_REPORT.json
working tree at parent 3d28f9f; source hashes bound in evidence; evidence retained at 66cc594
C-150 EPEDNN port contracts and Tier A import/label checks pass in both modes
10 new port checks and 2 existing import/label checks; zero failures or skips; raw FD rtol 1e-6 and atol 1e-9; no new full-suite aggregate or coupled acceptance
12 focused tests pass in full and Tier-A-only modes tested spec/reviews/m3-epednn-port-validation.json; full and Tier-A final JUnit reports and working-tree source hashes bound in its sidecar
python -m pytest tests/unit/test_epednn.py tests/tier_a/test_tier_labels.py tests/tier_a/test_tier_isolation.py; repeat with TKIT_TIER_A_ONLY=1
working tree at parent 3d28f9f; source hashes bound in evidence; evidence retained at 66cc594
C-151 GENRAY native-output reader contracts and Tier A import/label checks pass in both modes
22 reader checks on synthetic classic NetCDF and 2 Tier A import/label checks; zero failures or skips; SI conversions, signs, separate channels, integrals, malformed/missing outputs and optional SciPy isolation; no solver execution or new full-suite aggregate
24 focused tests pass in full and Tier-A-only modes tested spec/reviews/m3-genray-adapter-validation.json; source, tests, metadata, upstream schema and final JUnit reports bound in its sidecar
python -m pytest tests/unit/test_genray.py tests/tier_a/test_tier_labels.py tests/tier_a/test_tier_isolation.py; repeat with TKIT_TIER_A_ONLY=1
working tree at parent 3d28f9f; source hashes bound in evidence; evidence retained at 66cc594
C-152 The GENRAY reader checks the pinned upstream saved ITER EC output's channels and numerical accounting
saved genray_v10.13_200117 file; SI channels preserved; integral rtol 1e-12 and atol 1e-9; maximum absolute power residual about 1.05e-9 W and toroidal-current residual about 3.64e-12 A; no fresh solver run, project baseline selection, new labels or coupled physical acceptance
200 native bins in the saved upstream ITER EC output pass reader and accounting checks measured spec/reviews/m3-genray-pilot-validation.json; saved-output report, raw fixture and paired inputs, script and reader bound by provenance
python scripts/m3_validate_genray.py data/references/genray --out NEW_REPORT.json
working tree at parent 3d28f9f; source hashes bound in evidence; evidence retained at 66cc594
C-153 The bounded GENRAY pilot lifecycle, reader and Tier A contracts pass in both modes
16 new pilot tests with fake executables, 22 reader tests and 2 Tier A checks; zero failures or skips; retained failures and partial outputs, process-group timeout cleanup, input snapshots, provenance, lineage rejection and CLI failure reporting; no new full-suite aggregate
40 focused pilot, reader and Tier A checks pass in full and Tier-A-only modes tested spec/reviews/m3-genray-pilot-validation.json; source, tests, metadata and final executed JUnit reports bound in its sidecar
python -m pytest tests/unit/test_genray_pilot.py tests/unit/test_genray.py tests/tier_a/test_tier_labels.py tests/tier_a/test_tier_isolation.py; repeat with TKIT_TIER_A_ONLY=1
working tree at parent 3d28f9f; source hashes bound in evidence; evidence retained at 66cc594
C-154 The pinned external GENRAY reference builds with Giza's plotting interface and passes artifact/linkage checks
final build uses one CPU and takes 65.94 s within a 300 s deadline; 61 regular artifacts and acyclic snapshot lineage checked; 18 required PG symbols exported and 41 runtime library paths resolved; legacy compiler warnings retained; no solver run or plotting/scientific parity established
one external reference executable builds with verified artifacts and resolved runtime libraries measured spec/reviews/m3-genray-build-validation.json; exact executed builder, source archives, binary, logs, libraries, artifact sidecars and proposed pilot manifest bound by digest
load the documented compiler/NetCDF/Python environment; run scripts/m3_build_genray.py with one-CPU affinity, pinned sources, new output/work directories and --timeout-s 300; inspect recorded build commands; verify proposed manifest with scripts/m3_run_genray_pilot.py --check-only
working tree at parent 3d28f9f; source hashes bound in evidence; evidence retained at 66cc594
C-155 The first EC reference attempt retains a plotting-device failure, and an isolated alias correction passes plotting-only ABI probes
original and patched libraries each check VPS, VCPS, CPS and an invalid device; original VCPS fails and patched VCPS produces portrait colour PostScript; successful plots contain a red line and expected page dimensions; 78 immutable pilot/build artifacts verified; the first solver attempt stopped after 0.316 s with no NetCDF despite returning zero; corrected build takes 88.12 s within a 300 s one-CPU bound; no corrected GENRAY execution or scientific parity claimed
all eight plotting-device checks match their expected outcomes measured spec/reviews/m3-genray-first-execution.json; accounting, retained failure, corrected build, patch, plotting probe commands/outputs and checked retry manifest bound by digest
inspect the retained report and plotting-only probe commands; build using scripts/m3_build_genray.py with the explicit spec/patches/giza/vcps-device.patch; rerunning GENRAY needs a separately approved compute request
working tree; exact source and executed helper hashes bound in evidence; evidence retained at 66cc594
C-156 The corrected original ITER EC numerical pilot completes and produces readable native heating and signed-current profiles
single unchanged upstream numerical case; one CPU and 4 GiB allocation; 90 s job elapsed and 975280 KiB peak batch RSS; 200 native bins and 37 immutable artifacts verified; largest native power/current accounting residuals 5.82e-10 W and 3.64e-12 A; absorbed power 999904.760150 W and toroidal current +25814.194282 A; saved-reference total differences +0.126330 W and -0.320392 A; power weighted-L1 difference 6.386e-5 and current shape differences 6.309e-5 to 6.744e-5; ray stop code 2 is the remaining-power cutoff; PostScript renders to one blank page; no physical acceptance, labels or plotted-content parity claimed
the corrected EC reference completes in 83.16 s with readable native profiles measured spec/reviews/m3-genray-corrected-pilot.json and spec/reviews/m3-genray-corrected-pilot-observations.json; accounting, manifests, unchanged snapshots, raw output, exact audit helpers, render logs and profile comparison figures bound by digest
inspect the retained numerical and observations reports and their sidecars; native output can be reread without executing GENRAY; each fresh solver run requires its own approved compute request
working tree; exact reader, launcher, audit helper and artifact hashes bound in evidence; evidence retained at 66cc594
C-157 Final pedestal, GENRAY, packaging, Tier A and blog-export focused checks pass in both modes
zero failures, errors or skips; 7 files rerun per mode; combined 411 passes per mode include 53 retained unchanged-file reports and are not a fresh full-suite execution; no additional solver runs or physical acceptance
56 focused checks pass in full and Tier-A-only modes tested spec/reviews/m3-blog-commit-validation.json; final source, metadata, fresh and retained JUnit reports bound in its sidecar
run the seven listed test files individually with pytest --junitxml in normal mode and TKIT_TIER_A_ONLY=1; aggregate the complete report tree using blog/tools/stats.py --from-junit
66cc594; fresh execution at parent 3d28f9f with exact final source hashes bound
C-158 Matched end-to-end timing of the final monotone v3 surrogate on RAPTOR L-mode: linear solver, host driver, 40 fixed steps of 0.05 s, compilation and one warm-up step excluded
job 2650336, one CPU node, same host for all three; surrogate and QLKNN each use one core, TGLF uses 51 worker processes; zero stalled or coarse-tolerance steps; single run, no repeat timing
TGLF 539.1 s, final v3 surrogate 1.249 s, QLKNN 0.117 s; the v3 surrogate is about 432 times faster than TGLF and 10.7 times slower than QLKNN measured data/m3/validation/loop/job_2650336/ (tglf.npz, surrogate.npz, qlknn.npz metadata; provenance sidecars bind the runner, script, commit 6fb189c and source diff)
sbatch scripts/m3_surrogate_loop.sbatch (needs an approved compute request)
6fb189c
C-159 Closed-loop profiles at t = 2 s against TGLF, RAPTOR L-mode, job 2650336, normalised root-mean-square deviation
one trajectory, one case; the guarded surrogate uses the Bohm/gyro-Bohm fallback on faces outside its training domain (C-160), so the deviation describes the guarded model
final v3 surrogate: T_e 7.7%, T_i 9.2%, n_e 11.4%, psi 0.32%; QLKNN: T_e 155%, T_i 128%, n_e 86%, psi 2.4% measured data/m3/validation/loop/job_2650336/comparison.json
python scripts/m3_surrogate_loop.py compare tglf.npz surrogate.npz qlknn.npz --out comparison.json
6fb189c
C-160 Faces of the final accepted state outside the guard's domain, final v3 surrogate, RAPTOR L-mode, job 2650336
final accepted state only, not a trajectory average; every rejected face is outside the training input box
17 of 51 faces (rho_tor_norm up to 0.08 and from 0.78) are outside the guard's domain and use the fallback measured data/m3/validation/loop/job_2650336/surrogate.npz (ok_transport_final, final_in_domain)
read the two masks from the saved run file
6fb189c
C-161 Cause of the immediate cancellation of comparison job 2611883
inferred from accounting records (same state, zero elapsed time, two nodes repeat); no statement from the scheduler operators
seven full-node jobs since 2 Oct were cancelled by root at start with no reason; each resubmission landed on another node and ran preliminary sacct records of the project's jobs 2026-10-02 to 2026-10-07; spec/reports/M3.md (2026-10-10)
sacct -X --format=JobID,State,Elapsed,NodeList over the project's jobs
7f0f1b7
C-162 ITER pedestal from the EPEDNN port under the OQ-21 contract (GH solution 0, T_i = T_e, top at psi_norm = 1 - 2 x half-width), upstream ITER example input, Z_eff 1.5 with carbon
one input point; the selected single network has no ensemble spread; not coupled to TORAX yet
pedestal pressure 0.0772 MPa, T_ped 3.59 keV at n_e,ped 7e19 m^-3, top at psi_norm 0.935 measured tests/unit/test_pedestal_contract.py::test_selected_model_on_the_upstream_iter_example
pytest tests/unit/test_pedestal_contract.py
5ec80f4
C-163 Focused checks of the EC dataset pipeline and the pedestal contract pass in both modes
synthetic NetCDF files and fake executables for the pipeline; real EPEDNN weights in one pedestal test; zero failures or skips
19 focused checks (13 EC pipeline, 6 pedestal contract) pass in full and Tier-A-only modes tested tests/unit/test_genray_ec.py, tests/unit/test_pedestal_contract.py
pytest tests/unit/test_genray_ec.py tests/unit/test_pedestal_contract.py (and with TKIT_TIER_A_ONLY=1)
5ec80f4
C-164 GENRAY EC dataset v1 on ITER states (39 TORAX runs x 8 states x 10 launches), job 2650369
one equilibrium for all states (K-028); one central ray per case; labels per MW injected; no physical acceptance threshold
3120 of 3120 cases produce readable output (20 of 20 check cases); median 84.8 s of GENRAY time per case measured data/m3/genray_ec/v1/summary.json and the two response datasets with provenance sidecars; Simvue run genray-ec-dataset-iter-v1
sbatch scripts/m3_genray_ec.sbatch (needs an approved compute request)
7f0f1b7
C-165 Driven current from the momentum-conservation deck (ieffic=4) against the main ieffic=6 labels, 20 check cases
two cases with |I_cd| below 0.3 kA differ in sign or by a factor two
median 4.1% difference in driven current (range -14% to +16%), identical absorbed power measured data/m3/genray_ec/v1/summary.json (check)
python -m tkit.datasets.genray_ec assemble
7f0f1b7
C-166 First held-out baseline on EC dataset v1 (unconstrained 5-member ensemble, 64x2, 640 test cases from 8 held-out TORAX runs)
draft dataset; no accuracy target set (B3); uncalibrated spread covers 0.60-0.90 of errors at two spreads
driven current RMSE 3.30 kA/MW against 13.5 kA/MW for the training mean; pointwise profile model: current-density RMSE 2.20e4 A/m2 against 2.09e4 A/m2 for the mean measured data/m3/genray_ec/v1/baseline-case/meta.json and baseline-profile/meta.json
python -m tkit.surrogates.responses <dataset> <out> --config configs/surrogates/m3_ec_genray_v1_<case|profile>.json --allow-draft
86ea238
C-167 EC states kept under K-028 option (b), prescribed I_p at least 10 MA (two thirds of the equilibrium's 15 MA)
I_p from the TORAX configuration, piecewise linear in time; kept states at 10.5-11.5 MA still use the 15 MA equilibrium
2910 of 3120 cases kept (210 early ramp-up cases dropped); largest driven current 61 kA/MW, was 279 kA/MW measured data/m3/genray_ec/v1/structured-filter.json and ec-genray-iter-v1-structured.npz with provenance; Simvue run genray-ec-structured-iter-v1
python -m tkit.datasets.genray_ec structured
e0f1a09
C-168 Structured EC ensemble (5 members, width 128, depth 3, selected on validation) on the test split of the structured EC dataset: 640 cases from 8 held-out TORAX runs, per MW injected
scored once on test; one equilibrium (K-028); one central ray; absorbed power is near complete in almost every case; ensemble spread not calibrated
all three targets pass: absorbed power 0.01% and driven current 2.7% median relative error (targets 10%), heating centre 0.0036 median absolute error in rho (target 0.05) measured data/m3/genray_ec/v1/structured-w128d3/ (model, metadata, provenance) and structured-w128d3-test.json; targets configs/surrogates/m3_ec_targets.yaml
python -m tkit.surrogates.responses ec-genray-iter-v1-structured.npz out --config configs/surrogates/m3_ec_structured_w128d3.json --allow-draft; python -m tkit.surrogates.ec_structured out --split test
e0f1a09
C-169 Profiles rebuilt from the structured EC ensemble's outputs (cell-integrated Gaussians normalised to the predicted totals) against GENRAY's remapped profiles, test split
diagnostic, not a target; the Gaussian of the true parameters is the shape's floor
heating RMSE 8.6e3 W/m3 (training mean 1.34e4, Gaussian of the true parameters 5.4e3); current RMSE 1.35e4 A/m2 (training mean 2.09e4, Gaussian of the true parameters 5.0e3) measured data/m3/genray_ec/v1/structured-w128d3-test.json (profiles)
python -m tkit.surrogates.ec_structured out --split test --profile-dataset ec-genray-iter-v1-profile.npz --genray-nc <any case>/genray.nc --rho-scale 0.99887
e0f1a09
C-170 Focused checks of the EC pipeline, structured labels and structured evaluation pass in both modes
synthetic NetCDF files and fake executables; zero failures or skips
19 focused checks (15 EC pipeline and structured labels, 4 structured evaluation) pass in full and Tier-A-only modes tested tests/unit/test_genray_ec.py, tests/unit/test_ec_structured.py
pytest tests/unit/test_genray_ec.py tests/unit/test_ec_structured.py (and with TKIT_TIER_A_ONLY=1)
e0f1a09
C-171 EC surrogate as TORAX's ecrh source on ITER hybrid (10 MW of generic heating moved to EC, Newton, 3 steps of 0.05 s): jit for both launchers, heating integral, discrete balance and derivatives through Newton
residual_tol 1e-10 for balance and derivatives; guard decision unchanged over the stencil; three steps only
runs under jit for both launchers with the surrogate serving the source; energy balance within 1e-6 and particles within 1e-10; derivatives through Newton match finite differences to 1e-7 tested tests/physics/test_torax_ec_loop.py, tests/diff/test_torax_ec_gradients.py, tests/unit/test_torax_ec.py
pytest tests/physics/test_torax_ec_loop.py tests/diff/test_torax_ec_gradients.py tests/unit/test_torax_ec.py
433bf5b
C-172 EC surrogate source over the full ITER hybrid trajectory (TORAX's shipped settings, 5 s) against its Gaussian fallback alone, and per-call cost against GENRAY
single timings, four runs side by side on separate cores; GENRAY cannot run inside TORAX's step
surrogate serves 29 of 30 states (upper launcher) and 16 of 27 (equatorial; core T_e leaves the training range); run time 1.6-1.7 times the analytic source; one call 39 microseconds against 85 s for GENRAY measured data/m3/validation/ec_coupled/ (run files and summary); data/m3/genray_ec/v1/summary.json
python scripts/m3_ec_coupled.py run <UL|EL> <surrogate|fallback>; python scripts/m3_ec_coupled.py summarise
433bf5b
C-173 EPEDNN pedestal as a TORAX pedestal model on ITER hybrid (Newton, 3 steps of 0.05 s): jit, fallback on the amu mass, discrete balance and derivatives through Newton
residual_tol 1e-10 for balance and derivatives; EPEDNN decision unchanged over the stencil
runs under jit with EPEDNN setting the pedestal; energy balance within 1e-6 and particles within 1e-10; derivatives through Newton match finite differences to 1e-7 tested tests/physics/test_torax_pedestal_loop.py, tests/diff/test_torax_pedestal_gradients.py, tests/unit/test_pedestal_contract.py
pytest tests/physics/test_torax_pedestal_loop.py tests/diff/test_torax_pedestal_gradients.py
f250ce8
C-174 EPEDNN pedestal over the full ITER hybrid trajectory (TORAX's shipped settings, 5 s) against the scenario's prescribed pedestal (T_ped 4.5 keV, top 0.90)
one scenario; n_e,ped and composition prescribed; single timing
EPEDNN sets the pedestal on 48 of 48 states: T_ped 2.62-2.69 keV, top 0.90-0.92; final stored thermal energy 220 MJ against 303 MJ, beta_N 1.57 against 2.16; about 1.5 times the prescribed model per step measured data/m3/validation/pedestal_coupled/ (run files and summary)
python scripts/m3_pedestal_coupled.py run <epednn|prescribed>; python scripts/m3_pedestal_coupled.py summarise
f250ce8
C-175 Final monotone v3 MAST-U transport surrogate behind the guard on MAST-U states of dataset v3
three steps; density not evolved in these runs; MAST-U end-to-end timing against TGLF not measured
linear solver: every step converges on two equilibria with the fallback serving 31-35% of faces; on a converging Newton case energy balance within 1e-6 and derivatives match finite differences to 1e-7; Newton does not converge at the runs' 5 ms steps from these initial states (K-029) tested tests/physics/test_torax_surrogate_mastu_loop.py, tests/diff/test_torax_surrogate_mastu_gradients.py
pytest tests/physics/test_torax_surrogate_mastu_loop.py tests/diff/test_torax_surrogate_mastu_gradients.py
f250ce8
C-176 Matched end-to-end timing of the final monotone v3 MAST-U surrogate: dataset-v3 MAST-U run (FreeGSNKE equilibrium), linear solver, host driver, 40 fixed steps of 5 ms, compilation and one warm-up step excluded
job 2650876, one node; TGLF on 26 worker processes, the others on one core; one case, single timing; faces with meaningless TGLF inputs (axis) go to the fallback in the TGLF run
TGLF 364.1 s, surrogate 0.492 s, Bohm/gyro-Bohm 0.043 s: the surrogate is about 740 times faster than TGLF; profile deviation from TGLF at 0.2 s, T_e 41.5% and T_i 62.4% (Bohm/gyro-Bohm 47.9% and 84.6%), with half the faces outside the training window and on the fallback measured data/m3/validation/loop_mastu/job_2650876/ (run files, comparison, runner and script as executed, commit da7b7e8)
sbatch scripts/m3_surrogate_loop_mastu.sbatch (needs an approved compute request)
da7b7e8
C-177 M4 owner-selected property contracts and strict schema validation
contracts preserve OQ-20 and OQ-22; no formal proof is claimed by a parsing test
six property contracts load; 14 property-validation tests pass in each mode, including malformed-domain, tolerance and output-schema rejection tested tests/unit/test_verify_properties.py; configs/properties/
pytest tests/unit/test_verify_properties.py; TKIT_TIER_A_ONLY=1 pytest tests/unit/test_verify_properties.py
ca488f2
C-178 M4 V8 final monotone v3 ITER transport compared with TGLF at the final accepted state of the saved matched run
paper eq. 41 normalized by surrogate mean; both cell profiles interpolated onto the guard faces; final-state mask only
served-face T_e 7.42%, T_i 8.18%, both passing the 15% limit; whole profile 7.72/9.23%; 34 of 51 final-state faces served measured reviews/m4-transport-closed-loop.json; saved matched ITER run
python scripts/m4_transport_closed_loop.py
ca488f2
C-179 M4 V8 final monotone v3 MAST-U transport misses the unchanged closed-loop accuracy limit against TGLF
paper eq. 41 normalized by surrogate mean; both cell profiles interpolated onto guard faces; K-030; final mask is not trajectory fallback accounting
served-face T_e 35.33%, T_i 49.15%, both failing 15%; whole profile 41.51/62.39%; cells with both adjacent faces served give 11.86/23.24%, still failing T_i; 13 of 26 final-state faces served measured reviews/m4-transport-closed-loop.json; saved matched MAST-U run
python scripts/m4_transport_closed_loop.py
ca488f2
C-180 Float64 PyTorch exports preserve the selected JAX networks and prediction transforms under owner-approved mixed parity
mixed numerical parity approved in OQ-26; no labelled pedestal holdout exists, so its additional checks use domain boundaries and centre; no formal proof follows from parity
13 export checks pass in each mode: all selected members, random box points, local holdouts, physical transforms and served means, with rtol=1e-12 and atol=1e-12 in each declared output unit tested tests/unit/test_verify_export.py; reviews/m4-export-parity.json
pytest tests/unit/test_verify_export.py; TKIT_TIER_A_ONLY=1 pytest tests/unit/test_verify_export.py
ca488f2
C-181 Matched TGLF probes expose large MAST-U heat-flux errors on the failed surrogate feedback states
one failed trajectory, not a population or closed-loop estimate; full solver inputs, existing SAT2 settings; held-out diagnostic labels never enter training
all 17 in-domain final-state probes succeed; on 12 served faces with reference flux above 1 gB, median relative errors are 41.17% Q_e and 74.27% Q_i; an unconstrained v3 control gives 38.05/71.88% measured reviews/m4-mastu-flux-probe.json; reviews/m4-mastu-assessment.json and bound sidecars
python scripts/m4_mastu_probe.py; python scripts/m4_mastu_assess.py
bc1d0a9
C-182 MAST-U accepted-state diagnostic replay exactly reproduces the failed saved profiles and identifies coefficient-guard rejections
40 accepted states, not solver-intermediate transport-call accounting; no guard settings changed
all saved temperature, density and psi values are reproduced exactly; four final inner faces exceed the existing ion-diffusivity guard bound; 44.81% of accepted-state face diagnostics reject the surrogate measured reviews/m4-mastu-assessment.json; data/m4/validation/mastu-remediation/history.npz and executed runner snapshot
python scripts/m3_surrogate_loop.py run --case mastu --transport surrogate --solver linear --driver host --steps 40 --warmup-step --diagnostic-history --out history.npz
bc1d0a9
C-183 Completed MAST-U feedback label collection passes local artifact integrity checks
collection integrity only; no retraining, held-out accuracy or improved closed-loop result is claimed; remote tracking synchronization is recorded separately in C-184
eight local checks pass for approved allocation/time, hashes and lineage, full-input alignment, case budget, unique coordinates, training-only equilibria, source model and finite successful labels measured reviews/m4-mastu-refresh-result.json and bound sidecar; scripts/m4_mastu_refresh_review.py
python scripts/m4_mastu_refresh_review.py --job 2656846
24fc139
C-184 Approved MAST-U refresh upload retains private visibility and matches downloaded artifact checksums
synchronization integrity only; duplicate provenance sidecars remain separate records; no model training or improved physics accuracy is claimed
all 26 uploaded artifact records covering 18 distinct files match both remote SHA-256 metadata and downloaded bytes; the folder and private visibility match the approved request, and the offline payload queue is empty measured reviews/m4-mastu-simvue-upload-result.json and bound sidecar; approved upload manifest
python data/m4/remediation/mastu/job_2656846/verify_simvue_upload.py (read-only remote downloads; requires the configured private account)
9854782
C-185 MAST-U feedback retraining preparation passes focused regression checks and a bounded training-only smoke
tooling and split isolation only; smoke results are not acceptance metrics; unchanged-file execution reports are retained for aggregate statistics
55 focused checks pass in both normal and Tier A modes; the bounded training-only smoke produces finite predictions and reloads exactly tested reviews/m4-mastu-training-preparation.json and bound sidecar; data/m4/preparation/mastu/suites; smoke-v3/result.json
python -m pytest tests/unit/test_m4_feedback.py tests/unit/test_surrogate_train.py tests/unit/test_surrogate_predict.py tests/unit/test_surrogate_monotone.py tests/unit/test_surrogate_monotonicity.py tests/unit/test_surrogate_positivity.py tests/unit/test_provenance_integrity.py
6e9ef9f
C-186 The approved MAST-U candidate completes within budget and passes its completion integrity audit
completion integrity only; no coupled accuracy, formal certificate, synchronization or replacement is claimed
164 completion checks pass, binding the saved candidate to the reviewed snapshot and frozen data/splits, with finite parameters/history and tested member/served predictions measured reviews/m4-mastu-training-result.json and bound sidecar; native final accounting
python data/m4/preparation/mastu/verify-completion-as-executed.py (preserve and move the existing output report before rerunning; never overwrite the candidate)
655c7cf
C-187 The MAST-U feedback candidate passes all-member and served numerical export parity
rtol=1e-12 and atol=1e-12 in each declared output unit (OQ-26); numerical parity and sampled derivatives do not replace formal M4 proofs
all 168 export comparison records pass the unchanged mixed tolerance, covering all 20 members in training/physical units, the served ensemble and JAX JIT/eager arithmetic measured reviews/m4-mastu-offline-result.json and bound sidecar; source-bound offline review
python data/m4/preparation/mastu/offline-review-as-executed.py (preserve and move the existing output report before rerunning; never overwrite the candidate)
655c7cf
C-188 MAST-U candidate replay preparation passes focused checks and a bounded training-only integration smoke
replay tooling only; the held-out candidate replay has not run, no temperature accuracy or formal certificate is claimed, and original model/guard selection is retained
40 focused checks pass in normal and Tier A modes; the two-step training-only candidate smoke is finite and reconstructs the raw accepted-state guard predicate exactly tested reviews/m4-mastu-replay-preparation.json and bound sidecar; replay-suites; replay-smoke-v3/result.json
python -m pytest tests/unit/test_m4_replay.py tests/unit/test_verify_closed_loop.py tests/unit/test_m3_performance_tools.py tests/unit/test_m4_mastu_refresh.py
0dd614a
C-189 The approved candidate replay completes its solver trajectory but fails saved-reference coverage
formal temperature gate is not evaluable; saved TGLF reference uses fallback at the uncovered candidate face; no face removal or automatic retry
the single approved replay finishes in 65 seconds within its 240-second bound, with 40 finite converged steps and 146 passing integrity checks; comparison exits with a reference-coverage failure at candidate-served face 4, normalized radius 0.16 measured reviews/m4-mastu-replay-result.json and bound sidecar; consumed replay trajectory and logs
Read the bound saved-output audit; do not rerun the consumed OQ-30 solver command
793e61c
C-190 Supplementary candidate temperature diagnostics retain the fixed-mask electron regression and reference-coverage limitation
supplementary diagnostics only, not acceptance metrics; the uncovered reference face invalidates the formal comparison; every actual candidate face is retained
candidate/baseline serve 15/13 faces with 11 overlapping; fixed-baseline-mask candidate T_e/T_i errors are 42.1252%/48.1182%, versus baseline 35.3331%/49.1458%; candidate whole-profile errors are 29.7365%/41.8856%, and own-mask descriptive distances to the hybrid reference are 29.8865%/40.0063% preliminary reviews/m4-mastu-replay-result.json and bound sidecar; actual and fixed-baseline masks retained
Read the bound saved-output audit without invoking any solver
793e61c
C-191 Candidate accepted-state guard diagnostics reproduce the saved raw predicate and retain rejection accounting
accepted-state face diagnostics only, not intermediate solver-call accounting or a fallback acceptance gate; nonexclusive convection count is 25 and overlaps another reason once
candidate rejects 415/1040 accepted-state face records (39.9038%), versus baseline 466/1040 (44.8077%); exclusive candidate reasons are 341 model-box exits, 50 excessive diffusivities and 24 excessive convection values, with exact raw guard reconstruction measured reviews/m4-mastu-replay-result.json and bound sidecar; accepted-state raw features and coefficients
Read the bound saved-output audit and its guard-accounting records
793e61c
C-192 Reference diagnostic preparation checks raw guard evidence without running physical TGLF
synthetic worker responses only; physical TGLF forbidden; no physics labels, formal acceptance metric or new reference job; historical missing dependency evidence remains explicit
32 focused checks pass in each mode; a two-step synthetic training-equilibrium smoke is finite and reconstructs the raw guard exactly; all 77 source modules pass typing, and lint/format plus batch syntax pass measured reviews/m4-mastu-reference-preparation.json and bound sidecar; frozen package and retained synthetic smoke artifacts
Run tests/unit/test_m4_reference.py and tests/unit/test_m4_replay.py in normal and Tier A modes; check the frozen package without running its compute command
f3e08bb
C-193 The single approved reference diagnostic completes and reproduces the saved reference exactly
diagnosis only; historical external dependency bytes remain missing; no retry or formal temperature acceptance
the diagnostic completes in 517 seconds within its 30-minute bound, with 40 finite converged steps, exact historical temperature/density/poloidal-flux-profile and final-mask equality, and 171 passing saved-output integrity checks measured reviews/m4-mastu-reference-result.json and bound sidecar; trajectory, executed package and final native accounting
Run the bound read-only saved-output audit; do not rerun the consumed OQ-31 compute command
8721f24
C-194 Valid-input negative raw heat diffusivity explains the uncovered final reference face
raw guard reconstructed exactly; physical/numerical origin of signed coefficients remains unproven; the reference still cannot establish the formal candidate temperature comparison
final face 4 at normalized radius 0.16 has valid inputs but raw electron heat diffusivity -0.02792124888 m²/s; negative heat diffusivity rejects that face at 8 of 40 accepted states; reference rejection is 323/1040 accepted-state face records (31.0577%) measured reviews/m4-mastu-reference-result.json and bound sidecar; full input/raw coefficient/guard histories
Inspect the bound face-4 history and reconstruct the saved raw guard without calling TGLF
8721f24

© Copyright 2026 Vignesh Gopakumar

 
 
Code and first draft by Claude (Anthropic) and Codex, working to a brief by Vignesh Gopakumar, who reviewed and approved this page. How this is built · Tokamak Toolkit home