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 |
| C-195 | Saved negative heat coefficients imply inward flux without a converter denominator sign reversal inverse conversion only; not independent direct flux or mode evidence; physical/numerical origin unresolved; no reference remedy or temperature acceptance |
the final electron heat flux is inferred as -0.001689376033 gB; all 9 negative channel records at 8 accepted states have outward-decreasing temperature and no denominator-epsilon sign reversal, with maximum epsilon ratio 1.03e-11; all negative magnitudes are below 1 gB | measured | reviews/m4-mastu-heat-conversion-review.json and bound sidecar; reviews/m4-mastu-reference-physics-review.mdRun scripts/m4_mastu_heat_review.py with a new output path; reads saved trajectory and geometry and forbids TGLF execution |
1154e09 |
| C-196 | Signed heat review passes native conversion parity and focused synthetic isolation checks normal and Tier A modes; no physical solver execution; round trips check conversion algebra and units rather than independent physics |
33 focused checks pass in each mode, including 14 new sign/units/history tests; all 80 native heat-converter round trips meet the mixed 1e-12 parity criterion (maximum absolute difference 8.88e-16 m²/s), 32 numerical source files match the diagnostic bindings, and all 78 source modules pass typing | tested | reviews/m4-mastu-heat-review-validation.json and bound sidecar; retained JUnit records and array auditRun tests/unit/test_signed_heat.py, tests/unit/test_m4_reference.py and tests/unit/test_blog_export.py in both modes; run the saved-output review without TGLF |
1154e09 |
| C-197 | The richer signed heat diagnostic route passes synthetic preparation checks synthetic and input/schema validation only; no direct physical flux or mode evidence; no reference remedy or temperature acceptance |
55 focused checks pass in each mode, including 22 direct-output and settings checks; all 79 source modules pass typing; the compiled synthetic writer preserves signed species heat and passes total/low-k spectral parity without calling TGLF | tested | reviews/m4-mastu-rich-diagnostic-preparation.json and bound sidecar; retained JUnit records and compiled synthetic writer fixtureRun tests/unit/test_tglf_diagnostic.py, test_signed_heat.py, test_m4_reference.py and test_blog_export.py in both modes; prepare the native synthetic writer without physical execution |
be87dbd |
| C-198 | Diagnostic paired reporting is checked against the wrapper's actual exposed capabilities synthetic worker responses only; unavailable convergence/status evidence remains unavailable; consumed failed run and all original bindings retained |
25 diagnostic checks pass in each mode, including unavailable status, exposed failure status and nonfinite output; 33 unchanged focused checks are retained for 58 focused recorded passes per mode | tested | reviews/m4-mastu-rich-diagnostic-preparation-v6.json and bound sidecar; retained diagnostic JUnit recordsRun tests/unit/test_tglf_diagnostic.py in normal and Tier A modes; physical solver calls are replaced with synthetic responses |
6e60d64 |
| C-199 | The richer diagnostic retains signed local-state flux and backend discrepancies integrity and local numerical evidence only; no physical validity, complete reference coverage or formal temperature acceptance |
648 integrity checks pass on the complete 15-state collection; all affected signed states agree between backends, but four control states fail the existing parity criterion; original terminal tracking failure is preserved and archive recovery calls no solver | measured | reviews/m4-mastu-rich-diagnostic-result.json and bound sidecar; reviews/m4-mastu-rich-diagnostic-result.mdInspect bound saved outputs and archive checksum; do not repeat consumed submissions or recovery |
7fb6b47 |
| C-200 | Repeatability checks retain separate signed backend replicates and reject incomplete evidence synthetic fixtures only; no physical solver calls or reference admissibility from these tests |
31 synthetic diagnostic tests pass in each mode, including archive identity and repeatability completeness/discrepancy checks; 33 unchanged focused records are retained, giving 64 focused recorded passes per mode | tested | data/m4/validation/mastu-rich/repeat-v1-report-suites; reviews/m4-mastu-rich-repeat-preparation.jsonRun tests/unit/test_tglf_diagnostic.py in normal and Tier A modes |
0880d29 |
| C-201 | Both numerical reference backends reproduce their own signed outputs exactly local repeatability and artifact/accounting integrity only; no physical validity, numerical convergence, reference remedy or formal temperature acceptance |
521 saved-output checks pass; every within-backend fresh-process repeat is exactly equal and agrees with its consumed output, while all four cross-backend discrepancies persist; native accounting completes within the reviewed bound and the offline archive copy matches its checksum | measured | reviews/m4-mastu-rich-repeat-result.json and bound sidecar; reviews/m4-mastu-rich-repeat-result.mdInspect the bound saved-output repeatability report; the consumed diagnostic is not resubmitted |
7c6bc46 |
| C-202 | The bounded reference refinement protocol preserves signed evidence and validates its reporting synthetic tests only; no solver convergence, physical validity or temperature acceptance |
40 focused synthetic checks pass in each mode after the input-path correction, covering signed channels, refinement identities, baseline drift, incomplete evidence and existing diagnostic output handling | tested | reviews/m4-mastu-convergence-path-fix.json and bound sidecar; data/m4/validation/mastu-rich/convergence-v2-report-suitesRun tests/unit/test_tglf_convergence.py and tests/unit/test_tglf_diagnostic.py in normal and Tier A modes |
f3ceaa3 |
| C-203 | The bounded reference refinement completes but does not establish numerical convergence artifact integrity and observed numerical sensitivity only; no converged-reference uncertainty bound or temperature acceptance |
2076 integrity checks pass on the complete bounded study; baseline reproduction, signed species outputs, spectral accounting, native completion and the local archive copy are verified, while electron-flux signs change across refinement levels and finest-level backend differences remain | measured | reviews/m4-mastu-convergence-result.json and bound sidecar; reviews/m4-mastu-convergence-result.mdRun the saved-output convergence review to a new destination; do not resubmit the consumed diagnostic |
f929e2a |
| C-204 | Separated-basis reporting preserves fixed inputs, signed effects and consumed controls synthetic preparation only; no reference convergence or coupled-temperature acceptance |
54 focused synthetic checks pass in each mode, including separated basis effects, interactions, signed channels, incomplete evidence and consumed-control drift; 553 unchanged recorded checks are retained separately | tested | reviews/m4-mastu-basis-preparation.json and bound sidecar; data/m4/validation/mastu-rich/basis-report-suitesRun test_tglf_basis.py, test_tglf_convergence.py and test_tglf_diagnostic.py in normal and Tier A modes |
ec310a2 |
| C-205 | The separated-basis diagnostic completes; both basis roles change the flux and convergence is still not established artifact integrity and observed numerical sensitivity only; no converged-reference uncertainty bound, cause or temperature acceptance |
2139 integrity checks pass on the complete 54-pair basis grid and all 36 consumed-control comparisons reproduce the preceding study; electron flux changes sign at every state, steps reach 4.28 gB along the final basis and 4.11 gB along the search basis, and at the largest final basis the flux is a residual of order 1e-3 gB | measured | reviews/m4-mastu-basis-result.json, reviews/m4-mastu-basis-interpretation.json and bound sidecars; reviews/m4-mastu-basis-result.mdRun the saved-output convergence review and basis interpretation to new destinations; do not resubmit the consumed diagnostic |
118d8bd |
| C-206 | Extending the final basis and the width-search range does not converge the MAST-U reference flux artifact integrity and observed numerical sensitivity only; no converged-reference uncertainty bound, cause or temperature acceptance |
3029 integrity checks pass on the complete 78-pair extension and all 36 control comparisons reproduce job 2687308; NBASIS_MAX 16 still moves electron flux by up to 0.48 gB per step, and widening the width search from 1.65 to 3.3 changes it from about 1e-3 gB to as much as 181 gB | measured | reviews/m4-mastu-extension-result.json and bound sidecar; reviews/m4-mastu-extension-result.mdRun the saved-output convergence review to a new destination; do not resubmit the consumed diagnostic |
f2954ba |
| C-210 | JOREK 01a52be3 built from source with an own MUMPS 5.7.3 reproduces three of four upstream regression cases each case's own upstream tolerance on the stored solution values; build check only, no physics result |
3 of 4 upstream regression cases reproduce their public reference data: MAST-U grid and equilibrium (largest difference 2.0e-5, tolerance 1e-4), MAST equilibrium with coils (1.2e-10), and one implicit tearing-mode step (4.1e-13, tolerance 1e-12); the full-MHD kink case was not run because its upstream input is out of date for this code version | measured | spec/reviews/jorek-j1-build.jsonscripts/jorek/build_config.sh and scripts/jorek/run_regcase.sh for each case |
1de9a46 |
| C-211 | On the target CPU nodes the regression cases pass and one implicit step on the MAST-U X-point grid costs about 6 s at 32 cores three steps per layout, timing only; first step includes the matrix factorisation |
all three regression cases pass on a 256-core AMD node; one implicit step on the MAST-U X-point grid (8050 elements, toroidal modes n = 0 and 1) takes 5.8 s at 2 ranks x 16 threads, 6.7 s at 4 x 32 and 8.1 s at 2 x 64; the whole job used 22.4 core-hours | measured | spec/reviews/jorek-j2-cost.jsonscripts/jorek/j2_cost.sbatch (one CPU node, at most one hour) |
c05b9fc |
| C-212 | Threaded JOREK runs intermittently abort in grid set-up and are not bitwise repeatable; single-threaded runs repeat exactly small samples; cause inside JOREK not identified |
an assertion in the element search tree aborts 3 of 8 grid set-up runs at 8 OpenMP threads and 0 of 8 at 1 thread; two 4-thread runs of the same input differ at round-off, while 1-thread runs repeat bit for bit | measured | spec/reviews/jorek-j2-cost.json; spec/reviews/jorek-j3-adapter.jsonpart B of scripts/jorek/j2_cost.sbatch; repeat runs of the MAST-U grid case |
c05b9fc |
| C-213 | The toolkit's JOREK unit conversion reproduces the time and resistivity units JOREK stores uses the constants of the pinned JOREK version |
time and resistivity units computed by the toolkit match the values JOREK stored in three restart files to 1e-15 relative | tested | tests/unit/test_jorek_adapter.py::test_normalisation_matches_values_jorek_storedpytest tests/unit/test_jorek_adapter.py |
c05b9fc |
| C-214 | A JOREK input rewritten by the toolkit gives a restart file identical to the original input's exact (bitwise) at one OpenMP thread |
the MAST-U input (356 entries) parsed and rewritten by the toolkit gives, with one thread, a restart file identical in every dataset to a run of the original input | measured | spec/reviews/jorek-j3-adapter.jsonparse and rewrite the input with tkit.adapters.jorek, run jorek_model303 with OMP_NUM_THREADS=1, h5diff the restart files |
0a5553c |
| C-215 | JOREK adapter and runner tests pass in normal and Tier-A-only modes fake executables only for the runner; no JOREK needed |
26 tests pass in normal and Tier-A-only modes: unit conversion, profile files, namelists, the energy reader, and the runner with fake executables (snapshots, retry, timeout, provenance) | tested | tests/unit/test_jorek_adapter.py, tests/unit/test_jorek_run.py, tests/tier_apytest tests/unit/test_jorek_adapter.py tests/unit/test_jorek_run.py tests/tier_a (also with TKIT_TIER_A_ONLY=1) |
c05b9fc |
| C-217 | The approved projected MAST-U reference stopped at its unchanged heat-flux limit six significant figures in the exception; triggering face, state and channel unavailable |
the projected-reference job failed after 108 s when the log reported 3.93119 gB against the 1 gB stop limit; no completed reference was saved | measured | reviews/m4-mastu-code-review-20261024.jsonread the consumed job log and compare native terminal accounting; do not rerun the solver |
None |
| C-216 | JOREK reproduces the ITER hybrid EQDSK safety factor in the core but not yet at the edge one grid and boundary choice; no acceptance tolerance agreed yet (OQ-39) Superseded by C-221 |
JOREK solving the ITER hybrid equilibrium from the TORAX EQDSK matches its safety factor q to 0.4% (median) for normalised flux 0.1-0.5, but is 3.6% high for 0.5-0.9 and 5.8% high for 0.9-0.95 (q 5.12 vs 4.67 at 0.95); plasma current 12.06 vs 11.77 MA | superseded | spec/reviews/jorek-j3-eqdsk-iter.jsoneqdsk2jorek (smth 3e-5) on iterhybrid_cocos02.eqdsk, toolkit-written temperature file, jorek_model303 n_tor=1, nstep 0 |
c05b9fc |
| C-220 | JOREK ITER hybrid equilibrium on the EQDSK separatrix, 40 x 64 grid OQ-39 decision 2: q within 2% for psi_N 0.1-0.95, I_p within 1%; fixed boundary at the separatrix |
I_p −1.38%, largest q difference 1.1%: fails the current tolerance | measured | spec/reviews/jorek-j5-iter-equilibrium.jsonscripts/jorek/iter_lcfs_input.py, then JOREK model303 equilibrium only (nstep 0) on the EQDSK separatrix, n_flux 40, n_tht 64 |
2d48956 |
| C-221 | JOREK ITER hybrid equilibrium on the EQDSK separatrix, 80 x 128 grid (used for the n-scans) OQ-39 decision 2: q within 2% for psi_N 0.1-0.95, I_p within 1%; fixed boundary at the separatrix |
I_p −0.93%, largest q difference 1.1%, q 4.668 against 4.668 at psi_N 0.95: passes the tolerance of q within 2% and I_p within 1% | measured | spec/reviews/jorek-j5-iter-equilibrium.jsonscripts/jorek/iter_lcfs_input.py, then JOREK model303 equilibrium only (nstep 0) on the EQDSK separatrix, n_flux 80, n_tht 128 |
2d48956 |
| C-222 | JOREK ITER hybrid equilibrium on the EQDSK separatrix, 160 x 256 grid (grid check) OQ-39 decision 2: q within 2% for psi_N 0.1-0.95, I_p within 1%; fixed boundary at the separatrix |
I_p −0.20%, largest q difference 1.1%: passes | measured | spec/reviews/jorek-j5-iter-equilibrium.jsonscripts/jorek/iter_lcfs_input.py, then JOREK model303 equilibrium only (nstep 0) on the EQDSK separatrix, n_flux 160, n_tht 256 |
2d48956 |
| C-223 | JOREK case (a) n = 12 pedestal mode, linear growth rate at dt 1 on 80 x 128 converged in dt (C-227); grid check not run, so not quotable under OQ-39 decision 7: quoted only if halving dt and doubling the grid each change gamma by at most 5% |
γ√(μ₀ρ₀) 0.0440 (γ 8.3 × 104 s⁻¹), peak at psi_N 0.975, γ/ω* 0.23 | preliminary | spec/reviews/jorek-j5-iter-case-a-job2.jsonpython scripts/jorek/j5_growth.py <case dir> <runs> (energy band 1e-15..1e-7) |
1312c27 |
| C-224 | JOREK case (a) n = 16 pedestal mode, linear growth rate at dt 1 on 80 x 128 converged in dt (C-227); grid check not run, so not quotable under OQ-39 decision 7: quoted only if halving dt and doubling the grid each change gamma by at most 5% |
γ√(μ₀ρ₀) 0.0374 (γ 7.1 × 104 s⁻¹), peak at psi_N 0.975, γ/ω* 0.14 | preliminary | spec/reviews/jorek-j5-iter-case-a-job2.jsonpython scripts/jorek/j5_growth.py <case dir> <runs> (energy band 1e-15..1e-7) |
1312c27 |
| C-225 | JOREK case (a) core modes n = 1, 2, 3, 5 at the q minimum of the reversed-shear EQDSK q profile not convergence-checked (they do not bear on the pedestal question); case (a) core pressure is overstated (C-239) |
γ√(μ₀ρ₀) 0.012–0.028, peak at psi_N 0.12–0.18, where q has its minimum of about 1.11 | preliminary | spec/reviews/jorek-j5-iter-case-a-job2.jsonpython scripts/jorek/j5_growth.py <case dir> <runs> (energy band 1e-15..1e-7) |
1312c27 |
| C-226 | JOREK case (a) axis modes n = 8 and 20 fail the dt check (C-228); probably numerical |
γ√(μ₀ρ₀) 0.028 and 0.033, confined to psi_N below 0.02 | preliminary | spec/reviews/jorek-j5-iter-case-a-job2.jsonpython scripts/jorek/j5_growth.py <case dir> <runs> (energy band 1e-15..1e-7) |
1312c27 |
| C-227 | Halving the JOREK time step leaves the case (a) pedestal growth rates within 5% OQ-39 decision 7: quoted only if halving dt and doubling the grid each change gamma by at most 5%; location class unchanged; grid half of the check not run |
n = 12: 0.04397 → 0.04397 (−0.01%); n = 16: 0.03744 → 0.03633 (−2.94%); both within the 5% tolerance | measured | spec/reviews/jorek-j5-job3-result.jsonpython scripts/jorek/j5_convergence.py (job 2704714 against job 2688559) |
c93d5a2 |
| C-228 | Halving the JOREK time step moves the case (a) axis-mode growth rates by more than 5% OQ-39 decision 7: quoted only if halving dt and doubling the grid each change gamma by at most 5% |
n = 8: 0.02810 → 0.02967 (+5.56%); n = 20: 0.03300 → 0.03473 (+5.27%); both outside the 5% tolerance | measured | spec/reviews/jorek-j5-job3-result.jsonpython scripts/jorek/j5_convergence.py (job 2704714 against job 2688559) |
c93d5a2 |
| C-229 | Cost of the JOREK axisymmetric start on the doubled 160 x 256 grid one job; the linear-run cost on this grid is an estimate scaled from it, not measured |
about 126 s per step against 9.7 s on 80 x 128 (13x); timed out after 43 of 50 steps, so no doubled-grid linear run started | measured | spec/reviews/jorek-j5-job3-result.jsonbranch B of scripts/jorek/j5_iter_a_job3.sbatch |
c93d5a2 |
| C-230 | JOREK's GMRES abort exits with code 0; every case (a) linear run ended on it after its linear phase the abort follows the linear phase in every run |
8 of 8 case (a) runs ended on the GMRES abort with exit code 0; a test now checks that such a run is recorded as solver_aborted and not retried | tested | spec/reviews/jorek-j5-iter-case-a-job2.json; tests/unit/test_jorek_run.py::test_gmres_abort_with_exit_zero_is_not_completedpytest tests/unit/test_jorek_run.py |
1312c27 |
| C-231 | Consistency of the JOREK case (a) growth-rate fits energy band 1e-15..1e-7 chosen after inspecting the traces |
half-window and magnetic/kinetic fits agree within 1.1% (tolerance 2%) in all 8 runs; moving the energy band one decade either way changes γ by at most 0.6% | measured | spec/reviews/jorek-j5-iter-case-a-job2.jsonpython scripts/jorek/j5_growth.py <case dir> <runs> (energy band 1e-15..1e-7) |
1312c27 |
| C-232 | Idle core-hours in JOREK job 2704714 from a batch-script wait bug from scheduler accounting and the run end times |
about 290 of 1046 core-h: after the last run ended the script waited on its watchdog (an empty wait list became a bare wait); fixed in both job scripts | measured | spec/reviews/jorek-j5-job3-result.jsonsacct for job 2704714 |
c93d5a2 |
| C-233 | JOREK case (b) equilibrium from the TORAX state, FF' x 0.947 with under-relaxation 0.5 OQ-40 (a) acceptance: I_p within 1%, p(psi_N) as TORAX by construction |
I_p 10.501 MA against TORAX's 10.5 MA (+0.01%), converged in 43 iterations; on 160 x 256 −0.07% with q equal to about 1e-5 | measured | spec/reviews/jorek-j5-iter-case-b-ip.jsonpython scripts/jorek/j5_case_b_ip.py 0.947 <out> 0.5 |
a3713dd |
| C-234 | Without under-relaxation the JOREK case (b) Grad-Shafranov iteration does not converge case (a) converges to 7e-7 in 15 iterations with the same settings |
the iteration cycles between two states for all 200 iterations (axis moves about 5 mm, residual about 7e-3); I_p +3.7% at FF' x 1, −0.0002% at x 0.952, neither converged | measured | spec/reviews/jorek-j5-iter-case-b-ip.jsonpython scripts/jorek/j5_case_b_ip.py <k> <out> |
5c58ecb |
| C-235 | Safety factor of the accepted JOREK case (b) equilibrium against TORAX reported as a known inconsistency of the fixed-geometry TORAX state (OQ-40 (a)), not an acceptance test |
median q difference +10.7% (psi_N 0.1–0.5), +3.2% (0.5–0.9), −4.9% (0.9–0.95); q95 4.64 against 4.89, q_min 1.84 against 1.64 | measured | spec/reviews/jorek-j5-iter-case-b-ip.jsonpython scripts/jorek/j5_case_b_ip.py 0.947 <out> 0.5 |
5c58ecb |
| C-236 | JOREK case (b) n-scan, first job: how the runs ended dt 1, 80 x 128, 32 cores per n |
no GMRES abort: all 8 runs reached the job time limit at t ≈ 4790 (about 4770 steps); final energies 1e-24 to 1e-20, below the 1e-15..1e-7 fit band, so no γ is fitted | measured | spec/reviews/jorek-j5-case-b-job1.jsonscripts/jorek/j5_iter_b_job1.sbatch; python scripts/jorek/j5_growth.py |
acd794b |
| C-237 | JOREK case (b) n = 20: late local growth rate local rate from 0.5 ln E, not a band fit; no convergence check yet |
γ√(μ₀ρ₀) ≈ 0.0029, steady over t 4000–4771; flow perturbation peaks at psi_N 0.95–1 | preliminary | spec/reviews/jorek-j5-case-b-job1.jsonpython scripts/jorek/j5_growth.py <case dir> lin_n20 |
acd794b |
| C-238 | JOREK case (b) n <= 16: late local growth rates local rates over windows of 370 time units; still changing at the end of the job |
at t ≈ 4400: n = 1–8 −0.0003 to −0.0001 (decaying), n = 12 +0.00029, n = 16 +0.00173 (rising) | preliminary | spec/reviews/jorek-j5-case-b-job1.jsonpython scripts/jorek/j5_growth.py <case dir> <runs> |
acd794b |
| C-239 | Total axis temperature T_e + T_i of the two JOREK cases case (a) is a higher-pressure state than TORAX at 80 s |
66.6 keV in case (a) (EQDSK pressure split by TORAX density) against 14.4 keV in case (b) (TORAX at 80 s) | measured | spec/reviews/jorek-j5-iter-case-a.json; spec/reviews/jorek-j5-iter-case-b-equilibrium.jsonscripts/jorek/j5_iter_case.py a / b |
1312c27 |
| C-240 | Read-only screen of the OQ-38 projection rule over the 40 saved MAST-U reference states fluxes inferred by inverting TORAX's conversion, not direct TGLF outputs; a projected run diverges from the saved trajectory after its first served projection |
150 negative raw heat diffusivities at 19 faces; 46 would reach the 1 gB stop, at 31 of 40 states, the first at state 1 | measured | reviews/m4-mastu-projection-screen.jsonpython -m scripts.m4_mastu_projection_screen (saved outputs only, no solver) |
a25e88d |
| C-241 | Projections reaching the 1 gB stop on faces the projected reference would serve same limits as C-240 |
26 would be served, the first at state 4 (faces 11 and 12, ion, −8.0 and −33.8 gB); near the axis the projected magnitude reaches 6020 gB | measured | reviews/m4-mastu-projection-screen.jsonpython -m scripts.m4_mastu_projection_screen (saved outputs only, no solver) |
a25e88d |
| C-242 | Descriptive distance between the retrained MAST-U candidate and the guarded historical reference descriptive only: the reference is the guarded TGLF/fallback hybrid, so this is not an R6 gate result |
T_e 32.0%, T_i 41.5% on the 14 faces where both serve TGLF, against the 15% limit | measured | reviews/m4-mastu-projection-screen.jsonpython -m scripts.m4_mastu_projection_screen (saved outputs only, no solver) |
a25e88d |
| C-243 | Case (b) n-scan, second job (continuation to t ~ 9600); no growth below n = 12 "no measurable growth by t" is not a stability statement; pre-registered window rule (rule b) |
the continuation job ran all eight n to its time limit (t ≈ 9470–9670) with no solver abort; n = 1, 2, 3, 5 and 8 show no measurable growth by t ≈ 9671 (under 6 decades above their minimum energy) | measured | spec/reviews/jorek-j5-case-b-job2.jsonpython scripts/jorek/j5_growth.py --rule b <case_b_dir> <job_2705885>/lin_n* |
fda0aea |
| C-244 | Case (b) growth rates of the three pedestal modes at 80 x 128, dt = 1 not converged under decision 7: time-step check running (job 2706556), grid check open (OQ-43); fixed boundary at the separatrix Superseded by C-251 |
γ√(μ₀ρ₀) = 0.00218 (n = 12), 0.00192 (n = 16) and 0.00288 (n = 20), all with the flow perturbation peaked at ψ_N 0.925–0.975; fits over 2400–3400 points, half-window and magnetic/kinetic fits agreeing within 0.6%, and shifting the fit band by a decade changes γ by under 1e-4 | preliminary | spec/reviews/jorek-j5-case-b-job2.jsonpython scripts/jorek/j5_growth.py --rule b <case_b_dir> <job_2705885>/lin_n* |
fda0aea |
| C-245 | Case (b) pedestal modes are far below the EPED-like diamagnetic threshold same as C-244; ω*ᵢ from p_i = p/2 and a cylindrical formula |
γ/ω*ᵢ = 0.054 (n = 12), 0.036 (n = 16), 0.043 (n = 20), against the EPED-like threshold 0.25; ω*ᵢ is an estimate from the profiles, not a JOREK output | preliminary | spec/reviews/jorek-j5-case-b-job2.jsonas C-244 |
fda0aea |
| C-246 | Cost of a case (b) grid check from round-off on the doubled grid estimate: the 160 × 256 linear step cost is not yet measured (case (a) axisymmetric step 126 s) |
repeating the slow emergence (4 decades only by t ≈ 4700–6900) plus a fit window on 160 × 256 means about 7000–9000 steps per mode, about 60–190 h at an estimated 30–75 s per step, so 10–32 chained jobs for the three modes run together | preliminary | spec/OPEN_QUESTIONS.md OQ-43; spec/reviews/jorek-j5-case-b-job2.jsonarithmetic from the job-2705885 energy traces and the measured step costs |
c84b4cc |
| C-247 | V4 monotonicity proofs for the baseline ITER and MAST-U transport ensembles structural checks plus auto_LiRPA IBP on independent activation slopes in [0,1]; float64 real-network sign property, not physical validation or IEEE rounding verification |
all 20 members of each ensemble pass both heat-flux monotonicity properties, with derivative lower bound zero over the full training box | measured | reviews/m4-monotonicity-v1/audit.jsonPYTHONPATH=src python scripts/m4_transport_monotonicity.py --out-dir NEW_DIRECTORY |
7e5b550 plus V4 working-tree source hashes in the certificate provenance |
| C-248 | Time-step check of the three case (b) pedestal modes pre-registered comparison (fit windows of about 2100–2350 time units, from 100 after the snapshot); grid check open (OQ-43) |
restarting n = 12, 16 and 20 from the same saved state at Δt = 1 and Δt = 0.5 changes γ by 1.3e-5, 9.6e-5 and 7.9e-5, against the 5% tolerance of decision 7; the location stays at the pedestal in both runs | measured | spec/reviews/jorek-j5-case-b-job3-result.jsonpython scripts/jorek/j5_dt_check.py spec/reviews/jorek-j5-case-b-job3-inputs.json <job_2706556> |
2239696 |
| C-249 | Repeatability of a case (b) linear run restarted from a saved state control only; OpenMP runs are not bitwise repeatable |
the Δt = 1 restarts reproduce the original job's growth rate over the shared window to 9e-10–3e-8 | measured | spec/reviews/jorek-j5-case-b-job3-result.jsonas C-248 |
2239696 |
| C-250 | Axisymmetric start of case (b) on the doubled grid axisymmetric (n = 0) steps only; the linear step cost on this grid is not yet measured |
50 axisymmetric steps on the 160 × 256 grid in 40 min on 64 cores; the state passed its health check and is kept as the start for a grid check | measured | spec/reviews/jorek-j5-case-b-job3-result.jsonpart B of scripts/jorek/j5_iter_b_job3.sbatch |
aca9988 |
| C-251 | Case (b) growth rates of the three pedestal modes, converged in time step grid check open (OQ-43); 80 × 128 grid; fixed boundary at the separatrix stabilises peeling modes |
γ√(μ₀ρ₀) = 0.00218 (n = 12), 0.00192 (n = 16) and 0.00288 (n = 20), flow perturbation peaked at ψ_N 0.925–0.975; converged in time step (C-248) | preliminary | spec/reviews/jorek-j5-case-b-job2.json; spec/reviews/jorek-j5-case-b-job3-result.jsonas C-244 and C-248 |
2239696 |
| C-256 | V7 split-conformal coverage of the transport surrogates on test data drawn like the calibration split marginal coverage; absolute score in signed-log space, so coverage is lower where |flux| > 1 gB (0.86–0.90 on v1 test); points inside the training box only |
90% intervals calibrated on the v1 validation split cover 0.887–0.907 on the v1 test and v2-random splits (6 outputs, ITER and MAST-U); 9 of 12 lie in the 0.893–0.907 range expected for exchangeable data, the other three miss it by at most 0.006 | measured | reviews/m4-conformal-v1/transport-iter.json; reviews/m4-conformal-v1/transport-mastu.jsonPYTHONPATH=src python scripts/m4_conformal.py --out-dir NEW_DIRECTORY |
c19dc7d |
| C-257 | V7 transport intervals on held-out TORAX trajectory states (v3 test) valid but conservative on loop states; a loop-state calibration awaits OQ-44 |
the same intervals cover 0.996–1.000 of the v3 test states; there the half-width that would give 90% is 3.3–5.5 times smaller in signed-log units (ITER Q_e 0.48 against 2.21) | measured | reviews/m4-conformal-v1/transport-iter.json; reviews/m4-conformal-v1/transport-mastu.jsonas C-256 |
c19dc7d |
| C-258 | V7 split-conformal coverage of the EC surrogate on its eight held-out runs marginal coverage; states within a run are correlated, so the effective calibration sample is smaller than 190; per MW injected |
90% intervals calibrated on 190 guard-accepted validation states (4 runs) cover 0.876–0.978 of 548 served test states (8 runs); all six outputs lie within or above the 0.856–0.938 range expected for exchangeable data; per-run coverage 0.78–1.00 | measured | reviews/m4-conformal-v1/ec.jsonas C-256 |
c19dc7d |
| C-259 | OQ-44 (b) loop-state transport half-widths against the V7 box-wide ones signed-log training space; split rule fixed in 57f82c7 before any loop-state residual was computed |
calibrated on half of the held-out v3 trajectory runs, the 90% half-widths are 0.21–0.32 of the V7 values; the intervals span a factor 1.8–3.3 on 1 + abs(flux) instead of 9–60 | measured | reviews/m4-conformal-loop-v1/transport-iter.json; reviews/m4-conformal-loop-v1/transport-mastu.jsonPYTHONPATH=src python scripts/m4_conformal.py --out-dir NEW_DIRECTORY --loop-from reviews/m4-conformal-v1 |
57f82c7 |
| C-260 | MAST-U loop-state transport coverage, both directions marginal; states within a run are correlated, so the exchangeable range (0.890–0.910) understates the spread |
calibrated on 16 held-out runs and tested on the other 16, coverage is 0.870–0.894; the reverse direction gives 0.905–0.924; single runs 0.75–0.97 | measured | reviews/m4-conformal-loop-v1/transport-mastu.jsonas C-259 |
57f82c7 |
| C-261 | ITER loop-state transport coverage depends on which runs calibrate it 8 held-out ITER runs only; run-to-run differences break exchangeability |
calibrated on 4 held-out runs, the intervals cover 0.936–0.966 of the other 4; calibrated the other way they cover 0.711–0.818; not reliable for a new ITER run | measured | reviews/m4-conformal-loop-v1/transport-iter.jsonas C-259 |
57f82c7 |
| C-262 | V5 EC member output bounds over each full launcher-family input box four-leaf input budget; fresh JAX parity; physical clamps included; sampled extrema enclosed; float64, not directed rounding or physical validation |
all five EC members have finite CROWN bounds for both launcher families; current and width bounds remain very loose | measured | reviews/m4-output-bounds-v1/audit.jsonPYTHONPATH=src python scripts/m4_output_bounds.py ec --out NEW_FILE --max-leaves 4 --seconds 30 |
2f9a2a9; exact frozen proof source hashes in the certificate provenance |
| C-263 | V5 pedestal bounds over the widened ITER diagnostic trajectory box 48 saved output states; margin 1% of each upstream range, upper margins of a and m clipped; four-leaf budget; float64 real-network calculation, not physical validation |
all nine pedestal pressure and half-width pairs have finite bounds over the recorded ITER trajectory box, with the widening and domain clipping stated | measured | reviews/m4-output-bounds-v1/pedestal-iter.jsonPYTHONPATH=src python scripts/m4_output_bounds.py pedestal-iter --out NEW_FILE --max-leaves 4 --seconds 30 --trajectory reviews/m4-output-bounds-v1/trajectory/epednn.json |
2f9a2a9; exact frozen proof source hashes in the certificate provenance |
| C-264 | V5 transport physical bounds remain unresolved within the initial splitting budget full stored input boxes; four-leaf budget per member; original model and guard unchanged; numerical proof failure does not establish a physical counterexample |
all twenty members of each transport ensemble have finite training-space bounds that overflow the inverse signed-log transform; no finite physical guard domain is certified | measured | reviews/m4-output-bounds-v1/audit.jsonPYTHONPATH=src python scripts/m4_output_bounds.py transport-iter --out NEW_FILE --max-leaves 4 --seconds 30; repeat with transport-mastu |
2f9a2a9; exact frozen proof source hashes in the certificate provenance |
| C-265 | Optimized ITER transport training-space bound widths relative to the initial CROWN run same complete box and weights; alpha-CROWN with one leaf versus earlier CROWN with four; inverse signed-log still overflows; no isolated optimizer speed or accuracy claim |
median width 0.164 of the earlier bound, range 0.082–0.605 across member outputs; all twenty physical member results remain unknown | measured | reviews/m4-output-bounds-alpha-v1/audit.jsonPYTHONPATH=src python scripts/m4_output_bounds.py transport-iter --out NEW_FILE --method alpha-CROWN --iterations 3 --optimization-seconds 5 --max-leaves 1 --seconds 30 |
58cee24 base plus frozen experiment source; exact source hashes in request.json and certificate provenance |
| C-266 | Optimized MAST-U transport training-space bound widths relative to the initial CROWN run same complete box and weights; alpha-CROWN with one leaf versus earlier CROWN with four; inverse signed-log still overflows; no finite physical guard domain |
median width 0.114 of the earlier bound, range 0.060–0.220 across member outputs; all twenty physical member results remain unknown | measured | reviews/m4-output-bounds-alpha-v1/audit.jsonPYTHONPATH=src python scripts/m4_output_bounds.py transport-mastu --out NEW_FILE --method alpha-CROWN --iterations 3 --optimization-seconds 5 --max-leaves 1 --seconds 30 |
58cee24 base plus frozen experiment source; exact source hashes in request.json and certificate provenance |
| C-267 | Retained alpha-CROWN transport experiment budgets and completion optimizer and member budgets checked between operations; setup and an in-progress iteration can exceed the soft limits; completion is not a successful physical certificate |
three optimizer iterations, a five-second soft budget per bound side and one leaf per member; both twenty-member runs finished within the nine-minute hard process limit | measured | reviews/m4-output-bounds-alpha-v1/request.json; reviews/m4-output-bounds-alpha-v1/transport-iter-execution.json; reviews/m4-output-bounds-alpha-v1/transport-mastu-execution.jsonas C-265 and C-266, using the frozen source snapshot |
58cee24 base plus frozen experiment source; exact source hashes in request.json and certificate provenance |
| C-268 | Direct-ELU transport output-bound pilot remains unresolved same full boxes, model weights and property; one leaf; unoptimized direct-ELU CROWN intersect IBP versus earlier optimized alpha-CROWN; not a controlled graph comparison; other 38 members not attempted |
member 0 of each ensemble remains unknown; both processes complete in about 23 seconds, with physical inverse-transform overflow and looser intervals than the earlier optimized run | measured | reviews/m4-output-bounds-native-elu-v1/audit.jsonPYTHONPATH=src python scripts/m4_native_transport_bounds.py transport-iter --out NEW_FILE --members 0 --max-leaves 1 --seconds 30; repeat with transport-mastu using frozen source |
exact frozen source and model hashes in request.json and certificate provenance |
| C-269 | Focused direct-ELU relaxation, export parity and bound-helper validation twelve new analytic-relaxation/native-export checks plus twenty-eight bound-helper checks; no fresh full-suite execution claimed; parity rtol=atol=1e-12 |
40 focused checks pass in both normal and Tier A modes; lint, formatting and typing pass | measured | reviews/m4-output-bounds-native-elu-v1/validation.jsonpytest tests/unit/test_verify_native_elu.py tests/unit/test_verify_bounds.py; repeat with TKIT_TIER_A_ONLY=1 |
final implementation and validation hashes in validation.json |
| C-270 | Memory of one linear JOREK run on the doubled grid measured as the drop in the node's available memory until each run's first step completes; steady level about 222 GB |
one linear run on the 160 × 256 grid peaks at 234–238 GB during its first step (270 GB with 4 processes × 32 threads), about four times the 80 × 128 run; two runs fit on one node | measured | spec/reviews/jorek-j5-case-b-grid-cost.jsonlink.log of jobs 2711025 and 2711184 (scripts/jorek/j5_iter_b_grid.sbatch) |
1ff9d6a |
| C-271 | Step cost of a linear JOREK run on the doubled grid by process layout median of steps 20–200 per run; the first step, which factorises the preconditioner, takes 4–6 min; one node type |
a linear step on the 160 × 256 grid takes 6.1 s with 4 processes × 32 threads, 11.2 s with 2 × 64 and 16 s with 2 × 32 (two runs per node); on 80 × 128 it takes 4.2 s with 2 × 16 | measured | spec/reviews/jorek-j5-case-b-grid-cost.jsonper-step 'Elapsed time ITERATION' in each run's stdout.log, jobs 2711025, 2711184 and 2706556 |
47527df |
| C-272 | Optimized direct-ELU transport pilot tightens intervals but physical bounds remain unknown member 0 of each unchanged baseline ensemble; complete stored boxes; one leaf; twelve optimizer iterations with ten soft seconds per bound side; original parity rtol=atol=1e-12; other 38 members not attempted |
both selected members remain unknown despite interval-width reductions of about 30–275 times against the same-graph fixed-tangent baseline; physical inverse-transform overflow persists | measured | reviews/m4-output-bounds-native-elu-alpha-v1/audit.jsonuse archived source and request.json with scripts/m4_native_transport_bounds.py --method alpha-CROWN --members 0 --max-leaves 1 --seconds 60 --iterations 12 --optimization-seconds 10 and a new output path, for each transport ensemble |
exact frozen source and model hashes in request.json and output provenance |
| C-273 | Optimizable ELU relaxation and bound-helper validation analytic global tangents including zero slope, finite gradients, both objective signs, exact intervals, failure evidence retention, graph parity and bound helpers; focused execution, not a fresh full-suite run |
50 focused checks pass normally and with Tier B disabled; repository lint, formatting and typing of all 91 source modules pass | measured | reviews/m4-output-bounds-native-elu-alpha-v1/audit.jsonpytest tests/unit/test_verify_native_elu.py tests/unit/test_verify_bounds.py; repeat with TKIT_TIER_A_ONLY=1 |
frozen source and retained validation hashes in request.json and audit.json |
| C-274 | Intermediate propagation does not resolve the transport output pilot same member 0, full boxes, models and properties; one leaf; at most twelve iterations and ten soft seconds per side; different early stopping counts prevent a controlled final-optimizer comparison; no ensemble expansion |
both selected transport members remain physically unknown; largest baseline activation widths fall to 0.246 and 0.449 of the preceding pilot, but inverse signed-log overflow persists | measured | reviews/m4-next-steps-v2/audit.jsonuse frozen request and source; scripts/m4_native_transport_bounds.py with --tighten-intermediate --method alpha-CROWN --members 0 --max-leaves 1 --seconds 60 --iterations 12 --optimization-seconds 10 and fresh output paths |
source/model hashes in the v1 archive and corrected v2 request |
| C-275 | Exact EC loop-state features retained for robustness and reference preparation existing surrogate scenarios run once per launcher; independent feature reconstruction and inference parity at rtol=atol=1e-12; no GENRAY comparison or new transport acceptance result |
30 upper-launcher states (29 served) and 27 equatorial-launcher states (16 served) retain exact features, profiles, outputs, model identity, configurations and guard decisions | measured | reviews/m4-next-steps-v2/audit.jsonscripts/m4_ec_states.py for each launcher with new output paths using the frozen source and model; do not repeat consumed recordings for an audit |
frozen v1 request and trace provenance; independent v2 audit |
| C-276 | Every prescribed EC local robustness box leaves the training domain complete symmetric boxes with one-percent training-range half-width; launcher flag fixed; no clipping; unchanged 0.05 centre-change tolerance; Z_eff and launcher R/Z boundary crossings retained |
all 57 complete EC local boxes are out of domain, including all 45 served states; zero robustness proofs or model counterexamples are claimed | measured | reviews/m4-next-steps-v2/audit.jsonreconstruct local boxes from the recorded traces and stored verified/ec/v1/box.json using scripts/m4_ec_robustness.py; no TORAX rerun needed |
v2 frozen source, property and trace bindings; K-034 and OQ-45 |
| C-277 | Next-step verifier and EC robustness tooling checks intermediate activation enclosures, existing bound helpers, complete local boxes, trace binding, real counterexample semantics, raw ensemble averaging and collision refusal; not a fresh full-suite execution |
70 focused checks pass normally and with Tier B disabled; lint, formatting and typing of all 92 source modules pass | measured | reviews/m4-next-steps-v2/validation.jsonpytest tests/unit/test_verify_native_elu.py tests/unit/test_verify_bounds.py tests/unit/test_verify_local_robustness.py; repeat with TKIT_TIER_A_ONLY=1 |
frozen implementation and retained validation source hashes |
| C-278 | Deterministic EC closed-loop reference state selection prepared selection independent of errors and guard decisions; trace hashes, state indices, times and launch settings retained; complete solver input/resource package remains to be frozen |
twenty output states per launcher are selected at evenly spaced indices for the later GENRAY comparison; no reference solver execution or accuracy result | measured | reviews/m4-next-steps-v2/v9-state-manifest.jsonselect_states in tkit.verify.local_robustness on each retained trace state count; verify against the bound manifest |
v2 independent audit and manifest provenance |
| C-279 | Complete EC loop-state GENRAY reference package frozen unchanged 10% per-case absorbed-power and signed-current errors; all references required; served and rejected predictions reported separately; fixed-equilibrium K-028 limitation retained |
forty decks bound to the unchanged selection, exact model and traces, frozen source, equilibrium, executable and runtime; eight workers with a thirty-minute hard limit | measured | reviews/m4-ec-reference-v1/request.jsontkit.verify.ec_reference prepare on the retained V9 selection with a new package path; preflight using its frozen source before any solver execution |
exact executed source and input hashes in the immutable request and source snapshot |
| C-280 | EC reference packaging and comparison validation focused V9 and existing GENRAY plumbing tests; synthetic references and fake executables; not a fresh full-suite execution or physical accuracy result |
40 affected tests pass normally and with Tier B disabled; repository lint, formatting, typing of 93 modules and batch syntax pass | measured | reviews/m4-ec-reference-v1/normal.xml and tier-a.xmlpytest tests/unit/test_verify_ec_reference.py tests/unit/test_genray_ec.py; repeat with TKIT_TIER_A_ONLY=1 |
source snapshot plus final test/source hashes in the validation record |
| C-281 | EC loop-state power and current pass the fixed-equilibrium reference criterion twenty preselected states per launcher; all references complete; nine rejected predictions diagnostic only; existing fixed-equilibrium K-028 scope, not an equilibrium-matched reference trajectory, blind generalization test or certification |
40/40 cases pass the unchanged 10% power and signed-current limits, including 31/31 served states; maximum current error 9.606% EL and 7.393% UL, maximum power error 0.07483% EL and 0.02599% UL | measured | reviews/m4-ec-reference-v1/comparison.json and audit.jsonaudit the retained native outputs with reviews/m4-ec-reference-v1/audit.py using the frozen source; do not repeat consumed job 2717996 |
exact request, executed source and model hashes plus independent audit and terminal accounting |
| C-282 | ITER loop-state transport coverage with 24 new held-out runs (OQ-44 (c)) method and reading rule fixed in request.json before job 2719575 ran; pooled states are mostly L-mode (8554 of 9997) |
calibrated on 24 new held-out ITER runs, the 90% intervals cover 0.850, 0.900 and 0.877 of the v3 test states (GAMMA_e, Q_e, Q_i); the reverse direction gives 0.932, 0.899 and 0.919; the frozen bar of 0.85 is missed by 0.00005 on GAMMA_e | measured | reviews/m5-iter-loop-calibration-v1/result/transport-iter.jsonpython scripts/m5_iter_loop_calibration.py --out-dir NEW_DIRECTORY (after job 2719575's outputs in $WORK/vgopakum/m5_iter_loop_calibration_v1) |
32e6c44 |
| C-283 | ITER loop-state transport coverage on the hybrid flat-top family 1266 hybrid test states from four v3 runs; run-level spread is large |
on the hybrid flat-top states the pooled intervals cover 0.838, 0.799 and 0.788 (GAMMA_e, Q_e, Q_i); one v3 hybrid run reaches only 0.547 on Q_i; left out one at a time, the 11 new hybrid runs average 0.76–0.81, against 0.95–0.98 for L-mode | measured | reviews/m5-iter-loop-calibration-v1/result/transport-iter.jsonas C-282 |
32e6c44 |
| C-284 | Verified guard boxes and exact proof-domain audit no numerical guard margin extends a proof box; transport output bounds remain unresolved; unchanged ordinary EC decisions do not establish certification |
all four verified input boxes match the previous loaders; 48 of 48 retained pedestal states keep identical predictions and decisions; none of the 57 EC states is inside the exact proof boxes, so no EC certificate-based output check applies there | measured | reviews/m4-fallback-rates-v2/final/fallback-rates.jsonpython scripts/m4_fallback_rates.py --out-dir NEW_DIRECTORY |
retained source hashes in the audit provenance |
| C-285 | Hybrid-only ITER conformal coverage in both directions 3405 new calibration states, 1266 older report states; marginal state-weighted coverage only; some leave-one-run-out coverages remain below 0.85 |
hybrid calibration covers 0.914/0.915/0.904 of the older hybrid test states; the reverse audit covers 0.887/0.869/0.900; all exceed the fixed 0.85 pooled bar | measured | reviews/m5-hybrid-calibration-v1/transport-iter.json and audit/result.jsonfrozen family request and separately frozen reverse audit; do not overwrite existing records |
source and input digests in the two frozen requests |
| C-286 | Actual ITER hybrid Monte Carlo and sensitivity propagation completes declared independent sensitivity priors and coherent transport-discrepancy law; fixed geometry; these are prior distributions, not validated prediction-error bounds Superseded by C-292 |
256 of 256 Monte Carlo trajectories are finite and fine-converged; 2048 sensitivity evaluations drop no rows; fusion-power mean 165.8 MW with standard deviation 102.4 MW, thermal-energy mean 189.5 MJ with standard deviation 44.3 MJ | superseded | reviews/m5-iter-uq-v1/result/result.json and audit.jsonindependently recompute moments from result/samples.npz; frozen request identifies the executed source; do not repeat consumed job 2719682 |
frozen source snapshot and request digests |
| C-287 | ITER linearised uncertainty disagrees with Monte Carlo under the declared priors 256-sample Monte Carlo; member-averaged forward Jacobians with total variance; retain the nonlinear flags and use Monte Carlo |
all four outputs fail the fixed 10% standard-deviation cross-check; disagreements are 46.2%, 43.4%, 43.1% and 59.7% for fusion power, thermal energy, central electron temperature and central ion temperature | measured | reviews/m5-iter-uq-v1/result/result.jsoncrosscheck field in the frozen propagation result; driver derivative independently finite-difference checked |
frozen source snapshot and request digests |
| C-288 | Conditional reference-label Bayesian discrepancy calibration matches the exact posterior 11 hybrid run-mean TGLF residual vectors; empirical covariance treated as fixed; independent-run Gaussian working likelihood; no experimental inference or feedback into the prior study |
four Metropolis chains give transport-error factor mean -0.01978, standard deviation 0.01992 and split R-hat 1.00266; exact conditional moments are -0.02033 and 0.01984 | measured | reviews/m5-hybrid-calibration-v1/audit/result.jsonscripts/m5_hybrid_calibration_audit.py and its frozen request |
script and input digests in the frozen audit request |
| C-289 | Installed guards retain exact proof resources for external verified models exact existing certificate bytes and sidecars; no model, input box, tolerance or physical proof is changed; the integrated study still uses its tracked source-checkout model bundle |
installed-wheel EC and pedestal loaders retain their output certificates with externally copied verified directories; unresolved transport bounds remain explicitly K-033 | measured | reviews/pipeline-closeout/integration/contracts-normal.xml and contracts-tier-a.xmlpytest tests/unit/test_verified_guard_packaging.py |
pipeline close-out source and evidence bindings |
| C-290 | Two-direction interval gate preserves the completed ITER discrepancy widths missing or tampered evidence is an error; a scientific coverage failure selects unchanged V7 under OQ-48; no new trajectory result or calibration fit |
all three selected hybrid half-widths are unchanged; both-direction coverage and exact model/manifest/evidence bindings are rechecked before a future run | measured | reviews/pipeline-closeout/m5/interval-selection.jsontkit.uq.interval_selection.load_selection and the retained selector tests |
selector source hash recorded in the immutable selection artifact |
| C-291 | Independent replay retains incomplete fine-grid stability checks and invokes the existing resource projection stop unchanged rule b and frozen decade targets; recent energy slopes are cost diagnostics, not accepted growth rates or guaranteed completion bounds |
all three selected fine-grid checks remain incomplete; the measured-cost projection exceeds the existing compute envelope and further submissions stop | preliminary | reviews/autonomous-closeout/j5/audit-v2/audit.json and independent-review/j5-lead-review.jsonpython reviews/autonomous-closeout/j5/audit.py FRESH_AUDIT_DIRECTORY |
inherited source baseline plus auditor and native-input hashes in the canonical audit |
| C-292 | Retained ITER prior propagation has finite outputs and zero native linear-step error codes historical dt = 0.1 s prior propagation; the selected linear predictor-corrector assigns zero error unconditionally; all physical uncertainty and discretization limitations remain |
all 256 retained Monte Carlo outputs are finite with zero native linear-step error codes, and 2048 sensitivity evaluations drop no rows; those codes do not establish nonlinear-residual or temporal convergence | measured | reviews/m5-iter-uq-v1/result/result.json and reviews/autonomous-closeout/independent-review/solver-diagnostic-limitation.jsonindependently read retained raw quality arrays and inspect the source-bound scenario/solver selection; no trajectory rerun |
historical frozen inputs plus independent upstream solver-source hashes |
| C-293 | Complete input partitioning leaves both transport pilot physical enclosures unresolved unchanged full stored boxes, models and transforms; fresh export/JAX and held-out physical parity; sampling cannot prove finite bounds; no directed IEEE rounding guarantee |
both member-zero pilots retain overflowing physical enclosures despite complete input-box coverage; no sampled overflow witness was found, and all forty transport V5 results remain unresolved | preliminary | reviews/autonomous-closeout/independent-review/r1-result-v3/audit.jsonpython reviews/autonomous-closeout/independent-review/transport_result_audit.py reviews/autonomous-closeout/transport/partition-v2/request.json FRESH_DIRECTORY |
frozen partition-v2 source snapshot and independent audit manifest |
| C-294 | Full integrated test suites pass with independently checked source and native JUnit bindings all 127 test files represented in each mode; all 251 manifest entries unchanged at independent review; expensive V5/V6 proofs are excluded from quick verification |
1095 tests pass with two intentional heavy-proof skips in each full normal and Tier-A-only suite; lint, typing and quick verification also pass | measured | reviews/autonomous-closeout/integration/validation-v2/summary.json and reviews/autonomous-closeout/independent-review/source-binding-audit-v1.jsoninspect native per-file JUnit and source-manifest hashes; rerun make test and make test-tier-a only when source changes require it |
integrated validation-v2 source-manifest SHA-256 835b90762f28e34ceb162e169eabbd8cfc82971e53296395158455b594d5a4da |
| C-295 | Finer paired ITER time steps remain outside the unchanged temporal convergence criterion paired 0.025 to 0.0125 and 0.0125 to 0.00625 second steps; unchanged 33 cases, priors, members, physics and endpoint; native zero codes do not certify nonlinear residual convergence |
maximum paired changes remain 19.2654% and 1.9773% across the two refinements, exceeding the fixed 1% limit; all 99 retained rows are finite with zero native linear-step error codes and no exclusions | preliminary | reviews/autonomous-closeout/independent-review/r2-result-v1/audit.jsonpython reviews/autonomous-closeout/independent-review/temporal_result_audit.py reviews/autonomous-closeout/temporal/pilot-v1/request.json FRESH_DIRECTORY |
frozen temporal pilot-v1 source snapshot and independent raw-result manifest |
| C-296 | The additional finer ITER ladder still fails both fixed temporal comparisons paired 0.00625 to 0.003125 and 0.003125 to 0.0015625 second steps; one exact audited parent array reused and two new arrays; no excluded cases or altered physics |
the additional finer ladder has maximum paired changes of 1.7092% and 1.8560%, above the unchanged 1% criterion; all 99 assessed rows remain valid and no supported replacement step is established | preliminary | reviews/autonomous-closeout/independent-review/r2-refinement-result-v1/audit.jsonpython reviews/autonomous-closeout/independent-review/temporal_result_audit.py reviews/autonomous-closeout/temporal/refinement-v1/request.json FRESH_DIRECTORY |
frozen refinement-v1 request, ancestor bindings and independent raw-result manifest |
| C-297 | Reserving final LP objectives does not establish finite transport physical bounds finite-box stationarity corrections, exact signed objective identity and fresh original/JAX/export parity; no primal objective accepted as a bound, no directed IEEE rounding guarantee or claim of infinite real network outputs |
both full-box pilots retain nonfinite physical enclosures after all final objectives run; independent graph, constraint and corrected-dual replay passes, with no finite physical candidate | preliminary | reviews/autonomous-closeout/independent-review/r1-reserved-result-v1/audit.jsonpython reviews/autonomous-closeout/independent-review/reserved_lp_result_audit.py reviews/autonomous-closeout/transport/reserved-lp-v1/request.json FRESH_DIRECTORY |
frozen reserved-lp-v1 source snapshot and independent recursive raw-audit manifest |
| C-298 | A passing first pair does not support a replacement ITER step after the finer pair fails paired 0.0015625 to 0.00078125 and 0.00078125 to 0.000390625 second steps; both adjacent comparisons must pass for every retained case and quantity; no exclusions or changed physics |
the first pair stays below 1%, but the finer pair changes fusion power by up to 4.1372% and fails three quantities; all 99 assessed rows remain valid, so no replacement step is supported | preliminary | reviews/autonomous-closeout/independent-review/r2-refinement-result-v2/audit.jsonpython reviews/autonomous-closeout/independent-review/temporal_result_audit.py reviews/autonomous-closeout/temporal/refinement-v2/request.json FRESH_DIRECTORY |
frozen refinement-v2 request, exact ancestor bindings and independent raw-result manifest |
| C-299 | The three-case ITER diagnostic identifies sustained fallback occupancy and late global balance residuals unchanged three cases and two finest steps; all 57600 case-step observations retained; independent parent-parity and balance/domain reconstruction; global balance normalization is not a local nonlinear residual norm or causal error budget |
the failing case rejects face seven on 24.766% of coarse and 82.539% of fine accepted states over (3,5] seconds; its median normalized global electron balance residual rises from 0.031813% to 0.962581% | measured | reviews/m5-finest-diagnosis-v1/execution-v1/RESULT.md and reviews/m5-finest-diagnosis-v1/result-audit-v1/researcher-crosscheck.jsonreplay the independent raw audit and analyse_run.py using the RESULT.md commands and manifest-bound retained local arrays |
frozen diagnosis request-v1 and independently audited immutable executed sources |
| C-300 | Internal coefficient guesses and accepted ITER states select different transport branches despite trajectory parity unchanged cases 0, 20 and 29 at 0.00078125 and 0.000390625 seconds; exact cellwise canonical replay; all 57600 case-step observations retained; branch alternation does not prove persistent cycling or endpoint causation |
the failing case has different last-guess and accepted-state branches on 39.453% of coarse and 73.145% of fine steps over (3,5] seconds; during (3.5,4.5] seconds all fine accepted states fall back while 84.961% of last guesses select the surrogate | measured | reviews/m5-internal-diagnostic-v1/independent-review/audit.json and reviews/m5-internal-diagnostic-v1/independent-review/researcher-crosscheck.jsonindependently replay the retained-array audit and execution-v1/analyze.py; restore the manifest-bound local arrays first |
frozen internal diagnostic request-v1 plus immutable executed source copies and independent input hashes |
| C-301 | The fixed-state face-seven branch term is substantial locally but cancels in the signed global residual fixed-state identity over (3,5] seconds using guarded fallback shadows; norm ratios are not additive causal percentages; no alternate trajectory, established remedy or supported time step |
the fine failing case has branch-term norm ratios of 0.723 for electron temperature and 0.982 for ion temperature; the signed global branch term cancels and the remaining coefficient lag carries the net defect | measured | reviews/m5-internal-diagnostic-v1/execution-v1/attribution.json and independent-review/researcher-crosscheck.jsonpython reviews/m5-internal-diagnostic-v1/execution-v1/analyze.py --result reviews/m5-internal-diagnostic-v1/request-v1/result --out FRESH_JSON |
frozen internal diagnostic request-v1 and independently recomputed attribution groups |
| C-302 | A checkpoint-only physical-residual damping prototype passes focused numerical and short real-code integration controls three exact cases, two canonical steps at one finest step size, unchanged 1e-10 canonical trace and x0/x1/x2 parity; no full late-checkpoint or time-convergence claim |
focused numerical, data-separation and short TORAX checks pass; early-time full-step labels validate plumbing, not learned benefit or a numerical remedy | tested | reviews/m5-damping-controller-v1/validation/summary.jsonrun the focused baseline/controller/TORAX tests with TKIT_RUN_DAMPING_SMOKE=1 in normal and Tier-A-only modes |
implementation source snapshot bound by the focused validation manifest |
| C-303 | Half damping further reduces a compensated physical residual at a passing coarse cycling checkpoint case 20 at 3.75 seconds, dt 0.00078125 seconds, eight fixed-context updates; local physical three-term normalization; no trajectory or temporal-convergence claim; finer-stage original parity failure remains failed |
at the matched passing coarse cycling checkpoint, the electron residual is 9.148% originally, 6.885% after compensation and 2.228% with half damping; nominal states can converge more slowly with damping | preliminary | reviews/m5-rhs-defect-compensation-v1/result-evaluation-v1/FINDINGS.mdrun result-evaluation-v1/evaluate.py against retained request-v1 split arrays, then inspect the matched coarse case-20 checkpoint |
consumed request-v1 bytes plus artifact-bound offline evaluation and focused controls; formal report review pending |
| C-304 | The opt-in ITER research integration combines a continuous guarded transport closure, strict Newton acceptance and complete rejected-step rollback guard domain and model weights retained; coefficient blending and particle diffusion/convection switching change the old hard-switch closure; final cellwise acceptance is enforced by the frozen research adapters, not by unchanged production defaults |
the new research baseline uses a continuous guarded closure, Newton trials accepted only after residual decrease, and adaptive rollback of the complete state and auxiliary data | measured | reviews/m5-full-ensemble-v1/blog-review-v1.json and reviews/m5-full-ensemble-v1/request-v1/request.jsoninspect the bound native executed sources, request-v1/runner.py and request-v1/advance.py; compare the complete frozen configuration with the historical hard-switch requests |
full-ensemble frozen request and immutable executed-source hashes |
| C-305 | The complete original ITER ensemble passes its five-second numerical convergence protocol under the continuous closure nominal case and every original ensemble member retained; maximum steps 0.003125, 0.0015625 and 0.00078125 seconds; both adjacent pairs for fusion power, thermal energy and axis electron/ion temperature; 90 new trajectories plus 9 re-audited sentinels; no case exclusions |
all 33 original cases reach five seconds at all three maximum-step settings: 99 of 99 valid trajectories and 264 of 264 passing endpoint comparisons | measured | reviews/m5-full-ensemble-v1/execution-v2/terminal-audit.json and execution-v2/result-summary.jsonpython reviews/m5-full-ensemble-v1/execution-v2/audit.py FROZEN_REQUEST FRESH_AUDIT --runs SHARD_0 SHARD_1 --scheduler SCHEDULER_0 SCHEDULER_1 |
source-bound full-ensemble request, raw audit and final result hashes |
| C-306 | Both adjacent adaptive maximum-step comparisons stay below the declared one-percent threshold for every ensemble case and quantity abs(coarse-finer)/max(abs(finer), float64 tiny); maximum over every retained case and all four quantities; global worst is case 32 fusion power; adaptive maximum-step sensitivity, not fixed-step convergence order or an exact-solution error bound |
the largest changes are 0.219% for coarse-to-middle and 0.0423% for middle-to-fine, both below the 1% acceptance limit | measured | reviews/m5-full-ensemble-v1/execution-v2/terminal-audit.jsonreconstruct both adjacent comparison arrays from the raw-bound endpoint QoIs; regenerate blog/figures/make_m5_convergence.py |
hash-bound final full-ensemble audit and figure inputs |
| C-307 | Every accepted ensemble step passes the declared physical and native residual gates with finite profiles, positive temperatures and density and no crash event independent reconstruction of raw cell storage, transport and source terms, global balance gate 1e-6, exact native residual, finite profiles and positive temperatures and density and solver flags; a reset event ends this validation rather than receiving a PDE-balance exemption |
maximum accepted physical-channel L1 is 1.76 × 10−9 against a 10−8 gate, and native mean L1 is 1.01 × 10−14 against 10−10; no crash occurs | measured | reviews/m5-full-ensemble-v1/execution-v2/terminal-audit.jsonreplay the raw trajectory auditor and all reporting endpoints using the bound frozen kernels |
full-ensemble raw reconstruction and immutable kernel hashes |
| C-308 | The final ensemble audit retains accepted and rejected proposals and independently checks adaptive schedules and profile rollback complete auxiliary-state rollback is enforced by the source-bound retry kernel and synthetic controls; raw profiles independently verify cross-step continuity, with only the documented floating-point density representation allowance after accepted steps |
372,141 accepted proposals and 2,659 rejected proposals are retained in 23,100 raw chunks; rejected-step rollback and retry schedules pass reconstruction | measured | reviews/m5-full-ensemble-v1/execution-v2/terminal-audit.json and execution-v2/terminal-raw-manifest.jsonreplay per-trajectory raw audits; inspect the complete retained state/post checkpoints and retry-kernel controls |
full-ensemble raw audit, retained-file manifest and executed retry source |
| C-309 | The successful research baseline freezes strict native Newton parameters separately from scientific acceptance tolerances opt-in native TORAX integration; ghost boundary convection; the line search allows 100 steps and uses a minimum step norm of 1e-14, while 2^-40 limits continuation after an accepted step rather than imposing a line-search factor floor; scientific acceptance remains independently checked by the final frozen research adapters |
backward Euler starts from the old state, disables Pereverzev stabilization, allows 40 Newton iterations and uses an internal native stop of 10−14; Armijo decrease uses 10−4, step halving and an outer-iteration continuation threshold of 2−40 | measured | reviews/m5-full-ensemble-v1/request-v1/request.json and reviews/m5-native-repair-v1/request-v2/executed-sources/torax_strict_newton.py | full-ensemble bound solver configuration and exact executed native solver source |
| C-310 | The full ensemble holds the continuous transport transition parameters fixed across every maximum-step comparison identical declared transition family for all cases and caps; native radial coefficient smoothing remains fixed; no width sweep or direct particle-flux formulation is included in this result |
input and wrapper transitions span 10−4 of their stored ranges, the low heat-coefficient fade spans 0.01 m²/s, upper-cap fades use 1% of the cap, and the particle switch spans 10% of its existing threshold | measured | reviews/m5-full-ensemble-v1/request-v1/request.json and reviews/m5-native-repair-v1/request-v2/executed-sources/torax_repair.py | frozen full-ensemble transition configuration and continuous-closure source |
| C-311 | The successful full ensemble uses bounded adaptive retries and shared raw-bound reporting endpoints strict complete state/post rollback; stop on floor, attempt exhaustion or explicit crash; reporting summaries must exactly match retained raw endpoint quantities |
each macro step allows 64 proposals down to one 4096th of its maximum step, rejects by halving and recovers by at most doubling; common reporting times are 0.1, 0.4, 1, 3, 4.25 and 5 seconds | measured | reviews/m5-full-ensemble-v1/request-v1/request.json and request-v1/advance.py | frozen full-ensemble retry source and reporting contract |
| C-312 | Identical-state radial controls show a nonmonotone particle-flux departure across the tested nonzero smoothing widths original negative-side state at face 21; all six retained side states share the ordering; fixed transitions and admission/fallback, clipping, floors, patches and profiles; local operator differences, not trajectory errors or a selected physical width |
the selected particle rate is 0%, 6.76754%, 9.05578% and 5.76626% less inward than the raw target at radial HWHM 0, 0.025, 0.05 and 0.1 respectively | measured | reviews/m5-radial-smoothing-v1/audit-recovery-v2/particle-audit.jsonreplay corrected radial and original flux auditors on particle request-v1 |
frozen radial request and audited raw-state/width controls |
| C-313 | Radial smoothing reverses a selected particle density-direction derivative while the narrow nonzero control remains unresolved negative-side particle state at face 21; strict branch-preserving AD/FD checks pass at widths 0, 0.05 and 0.1; no full residual Jacobian, through-switch derivative or reliable sign-restoration claim at 0.025 |
the target derivative is +39.9009; native values are +39.9009, +0.4076, −43.8378 and −38.8539 across the same widths; the +0.4076 value lacks strict finite-difference corroboration | measured | reviews/m5-radial-smoothing-v1/audit-recovery-v2/particle-audit.jsoninspect selected direction and strict adjacent-stencil checks in particle-audit-flux.json |
frozen radial producer AD and independent finite-difference algebra |
| C-314 | The selected cap context already departs from its raw target before radial processing and cannot be repaired by simply removing smoothing same-state served closure retained; raw-target departure is not an independently validated physical error or solely radial-smoothing bias; all guards and deliberate regularization remain fixed |
the selected cap rate is already 96.87350% less inward than the raw target without radial smoothing, compared with 81.44208%, 63.19414% and 65.09036% at the three nonzero widths | measured | reviews/m5-radial-smoothing-v1/audit-recovery-v2/cap-audit.jsoncompare served and native rates on cap request-v2 with target magnitude as normalization |
cap-only recovery with identical numerical observer AST and unchanged hard limits |
| C-315 | Both radial-control contexts pass saved-array algebra and baseline parity with explicit incomplete strict derivative coverage twelve components remain unresolved, eight at particle width 0.025 and four at cap width 0.1; inherited off-target nonfinite derivative masks retained; no full-face certificate, new trajectory or physics sign-off |
696 observations pass algebra/invariant reconstruction and 174 baseline observations reproduce the parent evidence; 996 of 1008 derivative components and 45 of 48 complete direction sets meet the strict rule | measured | reviews/m5-radial-smoothing-v1/summary.jsonreplay both corrected radial auditors and the unchanged original strict flux auditor |
request-bound raw arrays, versioned audit correction and baseline preservation |
| C-316 | The first constrained pre-radial flux-preserving shadow improves a selected particle face while worsening complete-grid total-operator differences selected face divides by absolute local reference; complete-grid differences divide by corresponding full reference L1 floored at 1; all six particle side states show the same ordering; operator comparisons, not experimental or trajectory errors |
the selected particle-face difference falls from 5.76626% to 4.92144%, but complete-grid total rate L1 difference rises from 15.86765% to 16.23066% and divergence difference from 47.64620% to 49.04301% | measured | reviews/m5-flux-shadow-v1/particle-audit.jsonreconstruct native/reference/shadow face rates and matrix divergence from the request-v1 arrays |
frozen bounded shadow construction and separate NumPy full-operator reconstruction |
| C-317 | A binary remap-eligibility switch creates persistent paired cap-side rate differences after native smoothing three retained negative/positive cap pairs; only face 19 changes remap eligibility; pre-radial diffusion representation changes from near 0.366978 to 15.8269 m²/s with compensating velocity; finite-offset evidence, not a rigorous limit, global continuity proof or physical error bound |
the shadow paired total-rate difference stays near 5.10177% across a hundredfold reduction in cap offset, while the baseline difference shrinks by approximately the same hundredfold factor | measured | reviews/m5-flux-shadow-v1/paired-boundary-check.jsonreconstruct paired complete-rate L1 changes from the hash-bound cap arrays using the same negative-side reference denominator |
retained native shadow arrays and explicit paired-state algebra |
| C-318 | The bounded shadow passes local identity, constraints and new derivative checks while retaining inherited unresolved controls unchanged strict adjacent branch-preserving AD/FD rule; pre-radial flux identity below the 1e-10 algebra gate; branch-local derivative success does not establish continuity across the remap switch or useful postprocessed behavior |
174 observations pass bounds, algebra and baseline parity; all 48 new shadow derivative components pass strict corroboration; 368 of 372 combined components pass, with four inherited cap controls unresolved | measured | reviews/m5-flux-shadow-v1/summary.jsonreplay particle and cap auditors against the frozen request and retain all unresolved original components |
request-bound native arrays, NumPy invariant reconstruction and baseline-preservation check |
| C-319 | The OQ-51 baseline interval selector rederives the selected half-widths from the CP design 1 evidence and fails closed on any mismatch primary split S1 coverage 0.898, 0.893 and 0.893 against a minimum of 0.85; S2 hits 18, 16 and 18 of 19 against a minimum of 15; reverse split also passes; marginal state-level intervals on the adopted M5 baseline only |
selected half-widths 0.258, 0.401 and 0.464 for GAMMA_e, Q_e and Q_i, against 0.551, 1.041 and 1.013 for the conservative OQ-48 alternative | tested | tests/uq/test_baseline_selection.py (10 tests) and reviews/pipeline-closeout/m5/interval-selection-oq51.jsonpytest tests/uq/test_baseline_selection.py |
2f3f764 |
| C-320 | Round 1 of the OQ-46 (b) transport retraining (4 variants on each of 2 machines) has no candidate that passes both accuracy and operating-box verifiability pre-registered targets and frozen evaluator (reviews/m4-transport-retrain-v1/README.md); split budget 300 s per box and member |
none of 8 retrained candidates passes; with Jacobian penalty 1e-2 every in-domain V6 box is bounded, and without it the first V6 box fails | measured | cluster jobs 2769725 (training) and 2769975 (evaluation); reviews/m4-transport-retrain-v1/result/README.mdpython reviews/m4-transport-retrain-v1/evaluate.py MODEL_DIR MACHINE EVAL_MODE |
ed0f4b3 |
| C-321 | Round 2 (longer split budget; MAST-U penalties 2e-3 and 5e-3) has no candidate that passes every failing split stopped at the 4096-leaf limit; uniform splitting lowered failing bounds by about 1 percent |
12 of 20 ITER members bound every operating face; MAST-U Q_i error 0.345 and 0.370 against a 0.30 target | measured | cluster jobs 2770038 and 2770039; reviews/m4-transport-retrain-v1/round2/result/README.mdpython reviews/m4-transport-retrain-v1/round2/evaluate2.py MODEL_DIR MACHINE EVAL_MODE |
c22b45f |
| C-322 | On the failing round-2 boxes, sampled network outputs are about 100 times narrower than the CROWN bounds 100000 uniform points and 100000 random vertices; post-hoc diagnostic; samples are a lower bound on the true range and prove nothing |
sampled outputs from -4.2 to 8.1 against CROWN bounds from -665 to 733 | measured | reviews/m4-transport-retrain-v1/round2/diagnostic/python reviews/m4-transport-retrain-v1/round2/diagnostic/sample_range.py MODEL iter 7 16 |
c22b45f |
| C-323 | With alpha-CROWN and targeted splitting, the ITER candidate bounds every operating face for every member method declared before any failing pair was bounded (round3/README.md, afbdfa8); verdict job 2770386 |
all 20 members on all 38 operating faces: 727 bounded directly, 17 by alpha-CROWN, 16 by targeted splitting of 3 to 161 leaves | measured | cluster job 2770386; reviews/m4-transport-retrain-v1/round3/result/README.mdpython reviews/m4-transport-retrain-v1/round3/evaluate3.py MODEL_DIR iter operating K-K |
5ab5f44 |
| C-324 | The ITER candidate's operating-box bounds are finite but carry no useful physical range over 760 (face, member) results; targeted splits stop once every leaf is finite |
median largest bound 148 and maximum 709.6 in signed-log units, against an overflow limit of 709.78 | measured | as C-323 | 5ab5f44 |
| C-325 | The ITER candidate is less accurate than transport v1 on the v3 test split target 0.30; measured once (round 1) |
median error 0.178 and 0.169 for Q_e and Q_i, against 0.072 and 0.108 for v1 | measured | meta.json metrics test_v3-test of tglf-iter-tglfnn_symlog_relu_mono_w128_jac_v3-v1 and verified/transport-iter/v1 | ed0f4b3 |
| C-326 | Fresh ITER v2 package verification proves the actual local-robustness tolerance for only part of the selected state set at most 10 percent of the certified served-output range for 1 percent raw-input-range perturbations; no falsifying witness; finite bounds alone do not prove robustness |
12 states proved, three unknown and five outside domain under the actual local-robustness tolerance | measured | reviews/m4-iter-v2/fresh/local.json and fresh-summary.json; tests/verify/test_iter_v2_fresh.py | e2cc523 |
| C-327 | The current-baseline uncertainty pilot completes its selected trajectories but not its derivative comparison no completed central pair or AD/FD verdict; finite nominal Jacobian; selected rows do not establish sampling convergence |
three selected five-second trajectories pass the raw audit; only one of ten finite-difference controls survives the derivative timeout | measured | reviews/m5-baseline-uq-v1/pilot-v1/independent-pilot-audit.json and INDEPENDENT_REVIEW.md | e2cc523 |
| C-328 | The measured pilot layout makes the complete trajectory design expensive before derivative work and recovery conditional scenarios from three selected rows, not production bounds or an approved resource budget |
the 18,432-trajectory design projects roughly 1,710–1,877 node-hours in the measured worker layout, before derivatives and recovery | preliminary | reviews/m5-baseline-uq-v1/pilot-v1/FEASIBILITY.md and feasibility.json | e2cc523 |