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 01tkit 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 reporttkit 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 meanpython -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 summarypython 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 spython -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.pypython 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-v1python -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-v1python -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-072python 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.csvpython -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.csvpython -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.csvpython -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.csvpython -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.csvpython 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 splitpython 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.csvpython 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.csvpython -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-v1python -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-v1python -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-v1python -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-v1python -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.csvpython 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.csvpython 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-098python 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.csvpython 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 splitpython 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.csvpython -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.csvpython -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.csvpython 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.jsonpython -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.jsonpython -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.jsonpython 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.jsonpython 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 sidecarpython -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.jsonpython -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 sidecarpython -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 sidecarpython -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 sidecarpython -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.jsonpython 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 sidecarpython 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 sidecarpython -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 sidecarpython -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 provenancepython 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 sidecarpython -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 digestload 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 digestinspect 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 digestinspect 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 sidecarrun 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.jsonpython 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_examplepytest 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.pypytest 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-v1sbatch 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.jsonpython -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-v1python -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.yamlpython -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.pypytest 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.pypytest 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.jsonpython 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.pypytest 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.pypytest 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 runpython 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 runpython 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.jsonpytest 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 sidecarspython 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 snapshotpython 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.pypython 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 manifestpython 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.jsonpython -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 accountingpython 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 reviewpython 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.jsonpython -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 logsRead 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 retainedRead 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 coefficientsRead 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 artifactsRun 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 accountingRun 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 historiesInspect the bound face-4 history and reconstruct the saved raw guard without calling TGLF |
8721f24 |