diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index a6344aac8c09253b3b630fb776ae94478aa0275b..0000000000000000000000000000000000000000 --- a/.gitattributes +++ /dev/null @@ -1,35 +0,0 @@ -*.7z filter=lfs diff=lfs merge=lfs -text -*.arrow filter=lfs diff=lfs merge=lfs -text -*.bin filter=lfs diff=lfs merge=lfs -text -*.bz2 filter=lfs diff=lfs merge=lfs -text -*.ckpt filter=lfs diff=lfs merge=lfs -text -*.ftz filter=lfs diff=lfs merge=lfs -text -*.gz filter=lfs diff=lfs merge=lfs -text -*.h5 filter=lfs diff=lfs merge=lfs -text -*.joblib filter=lfs diff=lfs merge=lfs -text -*.lfs.* filter=lfs diff=lfs merge=lfs -text -*.mlmodel filter=lfs diff=lfs merge=lfs -text -*.model filter=lfs diff=lfs merge=lfs -text -*.msgpack filter=lfs diff=lfs merge=lfs -text -*.npy filter=lfs diff=lfs merge=lfs -text -*.npz filter=lfs diff=lfs merge=lfs -text -*.onnx filter=lfs diff=lfs merge=lfs -text -*.ot filter=lfs diff=lfs merge=lfs -text -*.parquet filter=lfs diff=lfs merge=lfs -text -*.pb filter=lfs diff=lfs merge=lfs -text -*.pickle filter=lfs diff=lfs merge=lfs -text -*.pkl filter=lfs diff=lfs merge=lfs -text -*.pt filter=lfs diff=lfs merge=lfs -text -*.pth filter=lfs diff=lfs merge=lfs -text -*.rar filter=lfs diff=lfs merge=lfs -text -*.safetensors filter=lfs diff=lfs merge=lfs -text -saved_model/**/* filter=lfs diff=lfs merge=lfs -text -*.tar.* filter=lfs diff=lfs merge=lfs -text -*.tar filter=lfs diff=lfs merge=lfs -text -*.tflite filter=lfs diff=lfs merge=lfs -text -*.tgz filter=lfs diff=lfs merge=lfs -text -*.wasm filter=lfs diff=lfs merge=lfs -text -*.xz filter=lfs diff=lfs merge=lfs -text -*.zip filter=lfs diff=lfs merge=lfs -text -*.zst filter=lfs diff=lfs merge=lfs -text -*tfevents* filter=lfs diff=lfs merge=lfs -text diff --git a/.pytest_cache/.gitignore b/.pytest_cache/.gitignore deleted file mode 100644 index bc1a1f6167d09c909aad37280b760bb715d0f1da..0000000000000000000000000000000000000000 --- a/.pytest_cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -# Created by pytest automatically. -* diff --git a/.pytest_cache/CACHEDIR.TAG b/.pytest_cache/CACHEDIR.TAG deleted file mode 100644 index fce15ad7eaa74e5682b644c84efb75334c112f95..0000000000000000000000000000000000000000 --- a/.pytest_cache/CACHEDIR.TAG +++ /dev/null @@ -1,4 +0,0 @@ -Signature: 8a477f597d28d172789f06886806bc55 -# This file is a cache directory tag created by pytest. -# For information about cache directory tags, see: -# https://bford.info/cachedir/spec.html diff --git a/.pytest_cache/README.md b/.pytest_cache/README.md deleted file mode 100644 index b89018ced91c0a8af7f3f23ce8901870da89f3a0..0000000000000000000000000000000000000000 --- a/.pytest_cache/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# pytest cache directory # - -This directory contains data from the pytest's cache plugin, -which provides the `--lf` and `--ff` options, as well as the `cache` fixture. - -**Do not** commit this to version control. - -See [the docs](https://docs.pytest.org/en/stable/how-to/cache.html) for more information. diff --git a/.pytest_cache/v/cache/lastfailed b/.pytest_cache/v/cache/lastfailed deleted file mode 100644 index c222f36ed871ffdfb429235933ea7769e356add3..0000000000000000000000000000000000000000 --- a/.pytest_cache/v/cache/lastfailed +++ /dev/null @@ -1,3 +0,0 @@ -{ - "tests/test_contract.py::test_registry_has_thirty": true -} \ No newline at end of file diff --git a/.pytest_cache/v/cache/nodeids b/.pytest_cache/v/cache/nodeids deleted file mode 100644 index 3d986d6c992994a744f8365ed3c411f0a7314dd8..0000000000000000000000000000000000000000 --- a/.pytest_cache/v/cache/nodeids +++ /dev/null @@ -1,12 +0,0 @@ -[ - "tests/test_contract.py::test_contract_returns_prediction", - "tests/test_contract.py::test_every_code_has_provenance_and_status", - "tests/test_contract.py::test_kecon_financial_firewall", - "tests/test_contract.py::test_kgate_clamps_and_fails_closed", - "tests/test_contract.py::test_kyro_reproduces_training_point", - "tests/test_contract.py::test_metrics_calibration", - "tests/test_contract.py::test_registry", - "tests/test_contract.py::test_registry_has_thirty", - "tests/test_contract.py::test_roadmap_codes_raise", - "tests/test_contract.py::test_tagged_provenance_requires_retired_by" -] \ No newline at end of file diff --git a/.zenodo.json b/.zenodo.json index ca58c7b81c84c8c39afe52951c0c2b8ddb5c2771..53bd8c570e508d2e3fb1683e1d602aa2c984562c 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -1,9 +1,9 @@ { - "title": "KODEX: the Kronos Family of Codes (AI/ML fusion surrogate suite) v0.1.0", + "title": "KODEX: the Kronos Family of Codes (AI/ML fusion surrogate suite) v0.3.0", "upload_type": "software", "language": "eng", - "version": "0.1.0", - "publication_date": "2026-09-10", + "version": "0.3.0", + "publication_date": "2026-09-29", "creators": [ { "name": "Ford, P. I.", @@ -193,5 +193,5 @@ } ], "notes": "Draft-first deposit. Provenance chain: code -> benchmark -> on-disk data -> CGYRO/register/AI+Quantum DOI. See PROVENANCE.md and MANIFEST.sha256.", - "description": "

KODEX — the Kronos Family of Codes. A benchmarked suite of AI/ML surrogate models that stand in for expensive fusion physics (CGYRO-class gyrokinetics, neutronics, equilibrium, control) with calibrated uncertainty and an abstention gate. One contract across the fleet: predict(x) → (y, uncertainty, in_domain). Built on and tracing to the Kronos research corpus.

This release publishes the 26 BUILT codes (package + real benchmark + docs). 4 further codes ship as honest ROADMAP: KEDGE, KHEAT, KRAD, KTENSOR.

Honest cards are kept intact: CGYRO-anchored surrogates use the mu=400 representative-mass turbulence map; the quantum members (KQUBIT/KQROSS/KSENSE) report validated null/negative results (no quantum advantage claimed); KWARD's disruption labels are heuristic (Ip current-quench, not physicist-verified) and its headline independent-precursor AUC (0.975) uses only n=1 Mirnov + P_rad; KECON is a generic-LCOE financial firewall carrying no Kronos economic numbers.

Documentation: https://kronosfusionenergy.com/kodex · source: https://github.com/KronosFE/kronos-ml.

" + "description": "

KODEX — the Kronos Family of Codes. A benchmarked suite of AI/ML surrogate models that stand in for expensive fusion physics (CGYRO-class gyrokinetics, neutronics, equilibrium, control) with calibrated uncertainty and an abstention gate. One contract across the fleet: predict(x) → (y, uncertainty, in_domain). Built on and tracing to the Kronos research corpus.

This release publishes the full 39 BUILT codes (package + real benchmark + docs), including the v0.3.0 additions KMIND (whole-device foundation surrogate), KSCOUT (multi-fidelity campaign manager), and the quantum members KMIT (error mitigation) and KLINQ (linear solver).

Honest cards are kept intact: CGYRO-anchored surrogates use the mu=400 representative-mass turbulence map; the quantum members (KQUBIT/KQROSS/KSENSE) report validated null/negative results (no quantum advantage claimed); KWARD's disruption labels are heuristic (Ip current-quench, not physicist-verified) and its headline independent-precursor AUC (0.975) uses only n=1 Mirnov + P_rad; KECON is a generic-LCOE financial firewall carrying no Kronos economic numbers; the newer quantum members (KMIT, KLINQ) are real NISQ-era tools with no claimed advantage — quantum's meaningful role in fusion is post-~2036.

Documentation: https://kronosfusionenergy.com/kodex · source: https://github.com/KronosFE/kronos-ml.

" } diff --git a/BENCHMARKS.md b/BENCHMARKS.md index 76ba6fe66b6b97fc47e25351dda0e37109fa1735..84b31d3970e0a1a92641d0311e9b4a6bf21dd475 100644 --- a/BENCHMARKS.md +++ b/BENCHMARKS.md @@ -6,16 +6,16 @@ are kept, not hidden. Nothing here is published until go-live. | # | Code | Status | Headline benchmark | |--|--|--|--| -| 01 | **KAIROS** | BUILT | MPC tracking 0.0461 (<5%); Exp-B **0 escapes / 150,000**; 155.4 µs/step | +| 01 | **KAIROS** | BUILT | MPC tracking 0.0461 (<5%); Exp-B **0 escapes / 150,000**; 77.8 µs/step | | 02 | **KFLOW** | BUILT | GNN RMSE@k8 0.0844 vs naive 0.1721 (beats naive; AC-18 0.05 bar **MISSED**, kept) | | 03 | **KGATE** | BUILT | model-free clamp: **0 escapes / 150,000 steps** | | 04 | **KHALO** | BUILT | sourced ECE 0.0327 +/- 0.0136 / cov90 0.888 +/- 0.034; live GP ECE 0.0771 | | 05 | **KMAT** | BUILT | DFT-validated CHGNet screen, 8 candidates | | 06 | **KOIL** | BUILT | live strain surrogate rel-L2 0.0038; sourced 0.24% @0.15 ms, quench AUC 0.9998 | -| 07 | **KORE** | BUILT | learned NN equilibrium: rel-L2 0.0035 vs analytic, 2.337 ms/field; sourced FNO 2.5% vs 1% bar | +| 07 | **KORE** | BUILT | learned NN equilibrium: rel-L2 0.0035 vs analytic, 0.318 ms/field; sourced FNO 2.5% vs 1% bar | | 08 | **KQUBIT** | BUILT | **REAL VQE** (PennyLane): recovers H2 ground state to 0.0002 mHa on default; runs on real QC hardware — no advantage yet | | 09 | **KWARD** | BUILT | real-device AUC 0.98 (591 MAST shots), ECE 0.0349; **independent-precursor AUC 0.975** (n=1 Mirnov + P_rad ONLY, label-independent); labels heuristic (Ip-quench) | -| 10 | **KYRO** | BUILT | complete 16/16 map (12 turbulent / 4 quiet (16/16 complete)); turbulent/quiet **16/16 correct**, R²=0.858 / cov90=0.875; **0.329 ms vs 2.89 GPU-h/pt** (μ=400) | +| 10 | **KYRO** | BUILT | complete 16/16 map (12 turbulent / 4 quiet (16/16 complete)); turbulent/quiet **16/16 correct**, R²=0.858 / cov90=0.875; **0.257 ms vs 2.89 GPU-h/pt** (μ=400) | | 11 | **KBREED** | BUILT | TBR surrogate R²=1.0 vs neutronics engine; nominal net TBR 0.742; OpenMC = auto fidelity upgrade | | 12 | **KBURN** | BUILT | dispatch surrogate R²=1.0 (fuel mix → captured power); +22% dynamic | | 13 | **KEYE** | BUILT | virtual-sensor fault detection 0.767 at FAR 0.0 | @@ -23,23 +23,27 @@ are kept, not hidden. Nothing here is published until go-live. | 15 | **KFUSE** | BUILT | multi-fidelity: RMSE 1.481→1.05 (R²=0.787); 3rd fidelity = real-mass gold (deferred) | | 16 | **KHEAT** | BUILT | heating/current-drive surrogate: driven-current I_cd **R²=0.949** over 3888 configs (reduced CD; RF/NBI ray-tracing = upgrade) | | 17 | **KISO** | BUILT | servo R²=0.723 + **medical-isotope yield** from real FENDL-3.2 σ(E) (6 isotopes, Mo-99/Tc-99m flagship) | -| 18 | **KPATH** | BUILT | MPC-imitation controller R²=0.879 over 6 axes | -| 19 | **KQERN** | BUILT | **REAL quantum kernel**: MAST-disruption AUC 0.919 vs classical 0.929 (ties — honest null); runnable on real QC hardware | -| 20 | **KQROSS** | BUILT | **REAL FT resource estimator**: classical↔quantum crossover ~N=50 needs ~6e+04 physical qubits, roadmap ~2032 — no FT advantage this decade | -| 21 | **KSENSE** | BUILT | **REAL quantum metrology** (GHZ, PennyLane): ideal Heisenberg 4.0× vs dephased 2.05× ≈ SQL 2.01× — dephasing erases the advantage (honest null) | -| 22 | **KTENSOR** | BUILT | SVD/MPS ROM of the real CGYRO flux DB: **effective rank ~2.93 of 4 — modestly compressible, NOT strongly low-rank** (honest characterization; classical, no quantum advantage) | -| 23 | **KBENCH** | BUILT | open fusion-ML benchmark suite: **3 citable tasks** (CGYRO turbulence, MAST disruption, flux ROM) with real data + KODEX baselines | -| 24 | **KDRIVE** | BUILT | RL policy (cross-entropy): tracking **0.0551** vs naive 0.1225, twin-in-the-loop | -| 25 | **KDYN** | BUILT | **REAL Trotter quantum dynamics**: 1st-order error 1.34637→0.03381 over steps (~1/n); runs on real QC hardware — honest cost curve, no advantage yet | -| 26 | **KECON** | BUILT | generic LCOE calculator + breakdown — **FINANCIAL FIREWALL (no Kronos numbers)** | -| 27 | **KEDGE** | BUILT | divertor edge surrogate: heat-flux→target-temp **R²=1.0**, CuCrZr limit q~13.5 MW/m² (reduced 0-D; SOLPS/EIRENE = upgrade) | -| 28 | **KFORGE** | BUILT | inverse-design chained KYRO+KORE → **found a quiet operating point** (a/L_T=2.228, shear=1.511, Q_tot≈0.0) | -| 29 | **KFUEL** | BUILT | fuel-cycle balance: self-sufficient=True, doubling 5.17 yr (illustrative TBR) | -| 30 | **KGEN** | BUILT | generative (PCA latent, dim 8); samples plausible equilibrium fields (diffusion = roadmap) | -| 31 | **KLAW** | BUILT | equation discovery: 7 terms, R²=0.903 — **rediscovered the critical-gradient onset** from the CGYRO map | -| 32 | **KPILOT** | BUILT | fleet router: plain-language query → the right code (LLM agent = roadmap upgrade) | -| 33 | **KQOPT** | BUILT | **REAL QAOA optimizer**: 1.0 of optimum on a design QUBO (6 qubits); plug in your QUBO, run on real QC hardware — no speedup yet | -| 34 | **KRAD** | BUILT | impurity-seeding radiation evaluator: 3 impurities (Ar, N, Ne); least core dilution = Ar | -| 35 | **KSEEK** | BUILT | active-learning: proposes next CGYRO run (a/L_T=2.225, shear=0.58); LOO std-vs-error corr -0.283 (honest: weak on 16 pts) | +| 18 | **KMIT** | BUILT | **REAL error mitigation**: ZNE cuts H2 energy error 44.38→5.029 mHa (0.887 removed); readout TV 0.1472→0.0 — real NISQ tool today, role post-~2036 | +| 19 | **KPATH** | BUILT | MPC-imitation controller R²=0.879 over 6 axes | +| 20 | **KQERN** | BUILT | **REAL quantum kernel**: MAST-disruption AUC 0.919 vs classical 0.929 (ties — honest null); runnable on real QC hardware | +| 21 | **KQROSS** | BUILT | **REAL FT resource estimator**: classical↔quantum crossover ~N=50 needs ~6e+04 physical qubits, roadmap ~2032 — no FT advantage this decade | +| 22 | **KSENSE** | BUILT | **REAL quantum metrology** (GHZ, PennyLane): ideal Heisenberg 4.0× vs dephased 2.05× ≈ SQL 2.01× — dephasing erases the advantage (honest null) | +| 23 | **KTENSOR** | BUILT | SVD/MPS ROM of the real CGYRO flux DB: **effective rank ~2.93 of 4 — modestly compressible, NOT strongly low-rank** (honest characterization; classical, no quantum advantage) | +| 24 | **KBENCH** | BUILT | open fusion-ML benchmark suite: **3 citable tasks** (CGYRO turbulence, MAST disruption, flux ROM) with real data + KODEX baselines | +| 25 | **KDRIVE** | BUILT | RL policy (cross-entropy): tracking **0.0551** vs naive 0.1225, twin-in-the-loop | +| 26 | **KDYN** | BUILT | **REAL Trotter quantum dynamics**: 1st-order error 1.34637→0.03381 over steps (~1/n); runs on real QC hardware — honest cost curve, no advantage yet | +| 27 | **KECON** | BUILT | generic LCOE calculator + breakdown — **FINANCIAL FIREWALL (no Kronos numbers)** | +| 28 | **KEDGE** | BUILT | divertor edge surrogate: heat-flux→target-temp **R²=1.0**, CuCrZr limit q~13.5 MW/m² (reduced 0-D; SOLPS/EIRENE = upgrade) | +| 29 | **KFORGE** | BUILT | inverse-design chained KYRO+KORE → **found a quiet operating point** (a/L_T=2.228, shear=1.511, Q_tot≈0.0) | +| 30 | **KFUEL** | BUILT | fuel-cycle balance: self-sufficient=True, doubling 5.17 yr (illustrative TBR) | +| 31 | **KGEN** | BUILT | generative (PCA latent, dim 8); samples plausible equilibrium fields (diffusion = roadmap) | +| 32 | **KLAW** | BUILT | equation discovery: 7 terms, R²=0.903 — **rediscovered the critical-gradient onset** from the CGYRO map | +| 33 | **KLINQ** | BUILT | **REAL quantum linear solver** (VQLS): 4×4 reduced-MHD solve fidelity 1.0 vs classical (rel-resid 0.0); FT-HHL ~4e+04 phys qubits — no advantage, role post-~2036 | +| 34 | **KMIND** | BUILT | **foundation model**: one shared trunk across 4 domains (66958 params); transfer vs matched single-task — pos ['equil'], neg none, neutral ['state', 'disrupt'] (transport data-starved) — honest multi-task result | +| 35 | **KPILOT** | BUILT | fleet router: plain-language query → the right code (LLM agent = roadmap upgrade) | +| 36 | **KQOPT** | BUILT | **REAL QAOA optimizer**: 1.0 of optimum on a design QUBO (6 qubits); plug in your QUBO, run on real QC hardware — no speedup yet | +| 37 | **KRAD** | BUILT | impurity-seeding radiation evaluator: 3 impurities (Ar, N, Ne); least core dilution = Ar | +| 38 | **KSCOUT** | BUILT | **multi-fidelity campaign**: tight 15.0 GPU-h over 16 hotspots → mean confidence ρ 0.638 vs 0.281 all-μ=400 (2.27×); triage-then-escalate | +| 39 | **KSEEK** | BUILT | active-learning: proposes next CGYRO run (a/L_T=2.225, shear=0.58); LOO std-vs-error corr -0.283 (honest: weak on 16 pts) | _Regenerate: `PYTHONPATH=: python benchmarks/run_all.py`._ diff --git a/CITATION.cff b/CITATION.cff index 07189fa47ff7d3acfaaf71480847ba67d4d68068..7de29b5fa185899b4f638ea5295fa3bae8d67448 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -1,8 +1,8 @@ cff-version: 1.2.0 message: "If you use KODEX, please cite it as below." title: "KODEX: the Kronos Family of Codes (AI/ML fusion surrogate suite)" -version: "0.1.0" -date-released: "2026-09-10" +version: "0.3.0" +date-released: "2026-09-29" license: Apache-2.0 repository-code: "https://github.com/KronosFE/kronos-ml" url: "https://kronosfusionenergy.com/kodex" diff --git a/CODES.md b/CODES.md index e66f0b73fe7863eb71ef303ae68eb2cfa1fe4c70..777e0b6c19f13327a834ae590b0915815b3489e1 100644 --- a/CODES.md +++ b/CODES.md @@ -94,6 +94,10 @@ tensor-network / low-rank (MPS-style SVD) ROM of the real CGYRO A1e flux databas **REAL quantum kernel** (PennyLane) — embeds real MAST disruption features into a quantum feature map and classifies on the fidelity kernel; runs on a simulator now, real QC hardware pluggable. MAST-disruption AUC **0.919** vs classical RBF 0.929 (ties — a validated null); a real, runnable quantum-ML pipeline on real fusion data. *provenance SIM · retired_by **fault-tolerant quantum hardware (not available this decade)** · gates KX-L3.* +### KMIT — QMITIGATION `[BUILT]` ✦v0.3 +**REAL quantum error mitigation** — zero-noise extrapolation (ZNE, global unitary folding) + inverse-confusion readout-error mitigation applied to the real KQUBIT H₂ VQE circuit (PennyLane default.mixed; sim now, real hardware pluggable). ZNE removes ~89% of the noise-induced energy error (44.4 → 5.0 mHa); readout mitigation cuts the measurement TV distance to ~0. Mitigation is the genuine NISQ tool TODAY — it recovers signal from noise, not a speedup. Honest: quantum's meaningful role in fusion is post-~2036. +*provenance SIM · retired_by **fault-tolerant quantum hardware (not available this decade)** · gates KX-L3.* + ## Phase 3 — cutting-edge + capstones ### KDRIVE — RL-control `[BUILT]` @@ -148,3 +152,15 @@ active-learning acquisition — proposes the next most-informative CGYRO run fro open, citable fusion-ML benchmark suite — 3 tasks (CGYRO turbulence, MAST disruption, flux ROM) with real on-disk data, fixed reproducible splits, metrics, and KODEX baselines to beat. A community leaderboard starting point, not a private result; honest that it's small by mainstream-ML standards (pilot fusion-ML benchmarks). *provenance n/a · retired_by **community-standard fusion-ML benchmarks**.* +### KMIND — FOUNDATION `[BUILT]` ✦v0.3 +**whole-device foundation surrogate** — ONE shared-trunk multi-task neural net (per-domain input adapters → a shared plasma-state trunk → per-domain heads, ~67k params) trained JOINTLY across transport (KYRO), equilibrium (KORE), state (KFLOW) and disruption (KWARD) on the data those specialists use. Benchmarked head-by-head against a MATCHED single-task baseline on the same split: on the well-populated domains the shared representation shows **no negative transfer** (equilibrium slight positive, state/disruption neutral); transport is **data-starved (16 pts) and reported, not hidden**. MC-dropout uncertainty; per-domain trust gate (physical box for transport/equil, Mahalanobis for state/disrupt). The honest question a foundation model must answer — does one shared representation help or hurt each task? — answered with matched baselines. +*provenance SIM · retired_by **a device-scale multi-task foundation model on real multi-diagnostic data** · gates BR-L2-A1e, AC-16, AC-18, AC-20.* + +### KLINQ — QLINSOLVE `[BUILT]` ✦v0.3 +**REAL quantum linear solver** — a variational quantum linear solver (VQLS) prepares the solution of a 4×4 reduced-MHD (discrete-Laplacian, SPD) linear system with a real quantum circuit (PennyLane; sim now, hardware pluggable), recovering the classical solution at fidelity ~1.0. Bundled with an honest fault-tolerant HHL resource estimate: a fusion-scale (N~1e6) sparse solve needs ~4e4 physical qubits — no advantage at real scale. Honest: quantum's meaningful role in fusion is post-~2036. +*provenance SIM · retired_by **fault-tolerant quantum hardware (not available this decade)** · gates KX-L3.* + +### KSCOUT — MF-CAMPAIGN `[BUILT]` ✦v0.3 +**multi-fidelity Bayesian-optimization campaign manager** — extends KSEEK from a single next-point to a budget-constrained campaign that chooses which operating point AND which fidelity (reduced twin / μ=400 CGYRO / real-mass gold) to run next. Triage-then-escalate: cheap twin on every uncertain hotspot, escalate the most-uncertain to μ=400, reserve real-mass gold. Under a tight GPU-hour budget it reaches ~2.3× the mean truth-confidence of a naive all-μ=400 plan (which exhausts the budget and leaves most hotspots unexamined). Honest: fidelity correlations are assumptions (gold not yet run); GPU-hours only, no cost figures. +*provenance SIM · retired_by **the full multi-fidelity CGYRO campaign (twin + μ=400 + real-mass gold)** · gates BR-L2-A1e.* + diff --git a/benchmarks/benchmarks.json b/benchmarks/benchmarks.json index e30ecfa997856d2294a06dcfbb0a4e7a33670d98..5494ee6b1dc5678d1ddcd86a2bf5b8b03d28e583 100644 --- a/benchmarks/benchmarks.json +++ b/benchmarks/benchmarks.json @@ -27,7 +27,7 @@ "escapes": 0, "catch_rate": 1.0 }, - "live_mpc_step_us": 155.4, + "live_mpc_step_us": 77.8, "sourced": { "file": "track5_control/clamp_activation_stats.csv", "headline": "0 escapes / 150k steps / 3000 injected (AC-25); tracking <5%" @@ -178,7 +178,7 @@ "gates": [ "KX-L3" ], - "note": "REAL quantum dynamics \u2014 Trotterized time-evolution of a transverse-field Ising 'kinetic' Hamiltonian (PennyLane); the honest 1/n_steps cost curve for simulating plasma-like dynamics on a quantum computer. Runs on a simulator now, hardware pluggable", + "note": "REAL quantum dynamics \u2014 Trotterized time-evolution of a transverse-field Ising 'kinetic' Hamiltonian (PennyLane); the honest 1/n_steps cost curve for simulating plasma-like dynamics on a quantum computer. Runs on a simulator now, hardware pluggable; quantum's role in fusion is post-~2036", "available": true }, "benchmark": { @@ -200,7 +200,7 @@ "active_backend": "default", "ran_on_real_hardware": false, "how_to_use_real_qc": "set KODEX_QC_BACKEND=ibm and KODEX_QC_TOKEN= to run this exact circuit on real quantum hardware", - "honest_timeline": "fault-tolerant quantum ADVANTAGE for fusion kernels is ~8-10 yr out; this tooling makes the TESTING real and runnable TODAY, same code path" + "honest_timeline": "fault-tolerant quantum ADVANTAGE for fusion kernels is ~8-10 yr out \u2014 a meaningful role in fusion only after ~2036; this tooling makes the TESTING real and runnable TODAY, same code path" }, "verdict": "REAL Trotterized quantum dynamics: 1st-order error falls 1.34637 -> 0.03381 from 1 to 32 steps (~1/n) \u2014 the honest cost curve for simulating plasma-like Hamiltonian dynamics on a quantum computer. Runs on real hardware with KODEX_QC_BACKEND=ibm. No advantage at this size; a real, testable pipeline." }, @@ -613,6 +613,70 @@ "note": "compact closure discovered from the 16/16 CGYRO map" } }, + "KLINQ": { + "card": { + "name": "KLINQ", + "function": "QLINSOLVE", + "status": "BUILT", + "phase": 3, + "provenance": "SIM", + "retired_by": "fault-tolerant quantum hardware (not available this decade)", + "gates": [ + "KX-L3" + ], + "note": "REAL quantum linear solver \u2014 a variational quantum linear solver (VQLS) prepares the solution of a small reduced-MHD linear system with a real quantum circuit (sim now, hardware pluggable), plus an honest fault-tolerant HHL resource estimate. No advantage at real scale; quantum's role in fusion is post-~2036", + "available": true + }, + "benchmark": { + "member": "KLINQ", + "live_quantum_linear_solver": { + "problem": "solve A x = b for a 4x4 reduced-MHD Laplacian (SPD) with a real quantum circuit", + "method": "variational quantum linear solver (VQLS), global overlap cost, Powell optimization", + "framework": "PennyLane (sim now; Hadamard-test cost on real hardware, pluggable)", + "N": 4, + "n_qubits": 2, + "cost_final": 0.0, + "solution_fidelity_vs_classical": 1.0, + "residual_rel": 0.0, + "x_quantum": [ + 0.8, + 0.6, + 0.4, + 0.2 + ], + "x_classical": [ + 0.8, + 0.6, + 0.4, + 0.2 + ], + "ft_hhl_resource_estimate": { + "assumed_system": "N~1e+06 sparse SPD (reduced-MHD grid), kappa~1e+03", + "logical_qubits_needed": 31, + "physical_qubits_needed": "~4e+04", + "surface_code_phys_per_logical": 1250, + "roadmap_year_reach_logical": 2031, + "hardware_today": "~1e2-1e3 physical qubits, no error-corrected logical qubits", + "caveats": [ + "HHL needs fault tolerance + sparse, well-conditioned A + efficient state prep, and returns |x> (aggregate readout), not the full vector", + "no fusion HHL advantage this decade \u2014 meaningful role post-~2036" + ] + }, + "backend": { + "active_backend": "default", + "ran_on_real_hardware": false, + "how_to_use_real_qc": "set KODEX_QC_BACKEND=ibm and KODEX_QC_TOKEN= to run this exact circuit on real quantum hardware", + "honest_timeline": "fault-tolerant quantum ADVANTAGE for fusion kernels is ~8-10 yr out \u2014 a meaningful role in fusion only after ~2036; this tooling makes the TESTING real and runnable TODAY, same code path" + }, + "verdict": "REAL variational quantum linear solver recovers the 4x4 reduced-MHD solve at solution fidelity 1.0 vs classical (rel-residual 0.0) \u2014 a runnable quantum linear solver TODAY. The fault-tolerant HHL route for a fusion-scale (N~1e6) solve needs ~31 logical -> ~4e+04 physical qubits (roadmap ~2031). HONEST: no advantage at real scale; quantum's meaningful role in fusion is post-~2036. Runs on hardware with KODEX_QC_BACKEND=ibm." + }, + "caveats": [ + "no quantum advantage \u2014 quantum's role in fusion is post-~2036", + "VQLS residual is read from the simulator here; on hardware it needs Hadamard tests and its cost landscape can have barren plateaus at scale", + "the 4x4 system is a toy; classical solves it instantly \u2014 the point is a real, honest, hardware-ready quantum pipeline, not a speedup" + ] + } + }, "KMAT": { "card": { "name": "KMAT", @@ -649,6 +713,161 @@ "note": "alloy screen BUILT; dpa/lifetime roadmap inside KMAT" } }, + "KMIND": { + "card": { + "name": "KMIND", + "function": "FOUNDATION", + "status": "BUILT", + "phase": 3, + "provenance": "SIM", + "retired_by": "a device-scale multi-task foundation model on real multi-diagnostic data", + "gates": [ + "BR-L2-A1e", + "AC-16", + "AC-18", + "AC-20" + ], + "note": "whole-device foundation surrogate \u2014 one shared-trunk multi-task net across transport / equilibrium / state / disruption, trained jointly; reports shared-representation transfer honestly (incl. negative transfer)", + "available": true + }, + "benchmark": { + "member": "KMIND", + "live_foundation": { + "architecture": "per-domain adapter (->32) + shared trunk (2x128, dropout 0.1) + per-domain head; 4 domains, joint training 300 steps", + "domains": [ + "transport", + "equil", + "state", + "disrupt" + ], + "params": 66958, + "transfer_vs_single_task": { + "transport": { + "metric": "r2_log_Qtot", + "multitask": 0.577, + "single_task_baseline": 0.571, + "delta": 0.006, + "transfer": "data_starved", + "n_train": 12, + "n_test": 4 + }, + "equil": { + "metric": "rel_l2_field", + "multitask": 0.009, + "single_task_baseline": 0.0117, + "delta": -0.0027, + "transfer": "positive", + "n_train": 600, + "n_test": 200 + }, + "state": { + "metric": "norm_rmse", + "multitask": 0.0239, + "single_task_baseline": 0.0224, + "delta": 0.0015, + "transfer": "neutral", + "n_train": 1500, + "n_test": 500 + }, + "disrupt": { + "metric": "roc_auc", + "multitask": 0.99, + "single_task_baseline": 0.993, + "delta": -0.003, + "transfer": "neutral", + "n_train": 443, + "n_test": 148 + } + }, + "positive_transfer_domains": [ + "equil" + ], + "negative_transfer_domains": [], + "neutral_transfer_domains": [ + "state", + "disrupt" + ], + "data_starved_domains": [ + "transport" + ], + "mc_dropout_predict_ms": 4.05, + "backend": "CPU, torch, MC-dropout UQ", + "verdict": "One shared trunk across 4 fusion domains, benchmarked head-by-head against a MATCHED single-task baseline on the same split. On the well-populated domains the shared representation is positive ['equil'], negative none, neutral ['state', 'disrupt'] \u2014 no negative transfer. ['transport'] is data-starved (16 pts) and not judged held-out. Trained on real on-disk data (CGYRO map / analytic equilibria / twin sensor snapshots / MAST shots) \u2014 an honest multi-task result, not a blanket win." + }, + "caveats": [ + "transport has only ~16 points, so its head is data-starved and high-variance (a real limit, reported not hidden)", + "uncertainty is an MC-dropout epistemic proxy, not a calibrated conformal interval", + "equilibrium targets are the analytic Solov'ev family (as in KORE); state targets are the analytic-twin sensor snapshots (as in KFLOW)" + ] + } + }, + "KMIT": { + "card": { + "name": "KMIT", + "function": "QMITIGATION", + "status": "BUILT", + "phase": 2, + "provenance": "SIM", + "retired_by": "fault-tolerant quantum hardware (not available this decade)", + "gates": [ + "KX-L3" + ], + "note": "REAL quantum error mitigation \u2014 zero-noise extrapolation (ZNE, unitary folding) + readout-error mitigation on a real fusion quantum circuit (the KQUBIT H2 VQE state). Mitigation is the genuine NISQ tool TODAY; it recovers signal from noise, not a speedup. Quantum's role in fusion is post-~2036", + "available": true + }, + "benchmark": { + "member": "KMIT", + "live_error_mitigation": { + "problem": "mitigate a noisy H2 VQE expectation (the real KQUBIT circuit)", + "framework": "PennyLane default.mixed; ZNE via global unitary folding + linear extrapolation", + "zne": { + "exact_energy_Ha": -1.857275, + "ideal_noiseless_Ha": -1.857275, + "noisy_Ha": -1.812895, + "zne_mitigated_Ha": -1.852246, + "noise_scales_lambda": [ + 1.0, + 3.0, + 5.0 + ], + "energies_vs_lambda": [ + -1.812895, + -1.725694, + -1.648692 + ], + "error_noisy_mHa": 44.38, + "error_zne_mHa": 5.029, + "error_reduction_frac": 0.887, + "depolarizing_p": 0.04, + "backend": { + "active_backend": "default", + "ran_on_real_hardware": false, + "how_to_use_real_qc": "set KODEX_QC_BACKEND=ibm and KODEX_QC_TOKEN= to run this exact circuit on real quantum hardware", + "honest_timeline": "fault-tolerant quantum ADVANTAGE for fusion kernels is ~8-10 yr out \u2014 a meaningful role in fusion only after ~2036; this tooling makes the TESTING real and runnable TODAY, same code path" + } + }, + "readout_mitigation": { + "readout_bitflip_p": 0.08, + "tv_distance_noisy": 0.1472, + "tv_distance_mitigated": 0.0, + "tv_reduction_frac": 1.0, + "method": "inverse confusion-matrix (linear) readout correction" + }, + "backend": { + "active_backend": "default", + "ran_on_real_hardware": false, + "how_to_use_real_qc": "set KODEX_QC_BACKEND=ibm and KODEX_QC_TOKEN= to run this exact circuit on real quantum hardware", + "honest_timeline": "fault-tolerant quantum ADVANTAGE for fusion kernels is ~8-10 yr out \u2014 a meaningful role in fusion only after ~2036; this tooling makes the TESTING real and runnable TODAY, same code path" + }, + "verdict": "REAL error mitigation on a fusion quantum circuit: ZNE cuts the noisy-energy error 44.38 -> 5.029 mHa (89% of the error removed) and inverse-confusion readout correction cuts the measurement TV distance 0.1472 -> 0.0 (100%). Mitigation is the REAL NISQ tool today \u2014 it recovers signal from noise. HONEST: it is NOT a speedup; quantum's meaningful role in fusion is post-~2036, and mitigation cost grows with noise. Runs on real hardware with KODEX_QC_BACKEND=ibm." + }, + "caveats": [ + "no quantum advantage \u2014 quantum's role in fusion is post-~2036", + "ZNE assumes a smooth noise->observable relation; it extrapolates, it does not eliminate noise, and its overhead grows as noise grows", + "readout mitigation uses a known confusion matrix; on hardware you must calibrate it" + ] + } + }, "KOIL": { "card": { "name": "KOIL", @@ -701,7 +920,7 @@ "live_learned_surrogate": { "rel_l2_vs_analytic": 0.0035, "ensemble_cov90": 0.778, - "infer_ms": 2.337, + "infer_ms": 0.318, "grid": "16x16", "n_heldout": 120 }, @@ -768,7 +987,7 @@ "gates": [ "KX-L3" ], - "note": "REAL quantum-kernel classifier \u2014 embeds real MAST disruption features into a quantum feature map and classifies on the fidelity kernel (PennyLane); runs on a simulator now, real hardware pluggable. Honest: ties the classical kernel \u2014 a validated no-advantage result, but a real, runnable quantum-ML pipeline", + "note": "REAL quantum-kernel classifier \u2014 embeds real MAST disruption features into a quantum feature map and classifies on the fidelity kernel (PennyLane); runs on a simulator now, real hardware pluggable. Honest: ties the classical kernel \u2014 a validated no-advantage result, but a real, runnable quantum-ML pipeline; role in fusion post-~2036", "available": true }, "benchmark": { @@ -792,7 +1011,7 @@ "active_backend": "default", "ran_on_real_hardware": false, "how_to_use_real_qc": "set KODEX_QC_BACKEND=ibm and KODEX_QC_TOKEN= to run this exact circuit on real quantum hardware", - "honest_timeline": "fault-tolerant quantum ADVANTAGE for fusion kernels is ~8-10 yr out; this tooling makes the TESTING real and runnable TODAY, same code path" + "honest_timeline": "fault-tolerant quantum ADVANTAGE for fusion kernels is ~8-10 yr out \u2014 a meaningful role in fusion only after ~2036; this tooling makes the TESTING real and runnable TODAY, same code path" }, "verdict": "REAL quantum kernel classifies MAST disruptions at AUC 0.919 vs classical RBF 0.929 (Delta -0.010) \u2014 no advantage: a validated null, but a REAL runnable quantum-ML pipeline on real fusion data. Runs on hardware with KODEX_QC_BACKEND=ibm.", "caveats": [ @@ -817,7 +1036,7 @@ "gates": [ "KX-L3" ], - "note": "REAL QAOA quantum optimizer \u2014 solves a combinatorial design QUBO on an actual quantum circuit (PennyLane); runs on a simulator now, real hardware pluggable, and you can plug in your own QUBO. Honest: standard ~0.7-1.0 approx ratio, no speedup at this size (~8-10 yr to advantage)", + "note": "REAL QAOA quantum optimizer \u2014 solves a combinatorial design QUBO on an actual quantum circuit (PennyLane); runs on a simulator now, real hardware pluggable, and you can plug in your own QUBO. Honest: standard ~0.7-1.0 approx ratio, no speedup at this size (advantage post-~2036)", "available": true }, "benchmark": { @@ -842,7 +1061,7 @@ "active_backend": "default", "ran_on_real_hardware": false, "how_to_use_real_qc": "set KODEX_QC_BACKEND=ibm and KODEX_QC_TOKEN= to run this exact circuit on real quantum hardware", - "honest_timeline": "fault-tolerant quantum ADVANTAGE for fusion kernels is ~8-10 yr out; this tooling makes the TESTING real and runnable TODAY, same code path" + "honest_timeline": "fault-tolerant quantum ADVANTAGE for fusion kernels is ~8-10 yr out \u2014 a meaningful role in fusion only after ~2036; this tooling makes the TESTING real and runnable TODAY, same code path" }, "verdict": "REAL QAOA reaches 100% of the brute-force optimum (cut 6/6, p=2, 6 qubits) on the default backend \u2014 a working quantum optimizer, runnable on hardware with KODEX_QC_BACKEND=ibm. HONEST: no speedup vs classical at this size; advantage is ~8-10 yr out." }, @@ -864,7 +1083,7 @@ "AC-43", "BR-SX-08" ], - "note": "REAL fault-tolerant resource estimator \u2014 computes the classical<->quantum crossover N, the surface-code physical-qubit overhead, and the logical-qubit roadmap year for a fusion electronic-structure kernel (order-of-magnitude, literature-scaled). Verdict: no FT advantage this decade \u2014 the machine does not exist yet", + "note": "REAL fault-tolerant resource estimator \u2014 computes the classical<->quantum crossover N, the surface-code physical-qubit overhead, and the logical-qubit roadmap year for a fusion electronic-structure kernel (order-of-magnitude, literature-scaled). Verdict: no FT advantage this decade \u2014 the machine does not exist yet; meaningful role post-~2036", "available": true }, "benchmark": { @@ -899,7 +1118,7 @@ "AC-44", "KX-L3-A4" ], - "note": "REAL variational quantum eigensolver (VQE) for a molecular Hamiltonian \u2014 a runnable quantum program (PennyLane): executes on a simulator now and on real quantum hardware when you plug in a backend. Honest: no quantum advantage yet (~8-10 yr out); the tooling + testing are real TODAY", + "note": "REAL variational quantum eigensolver (VQE) for a molecular Hamiltonian \u2014 a runnable quantum program (PennyLane): executes on a simulator now and on real quantum hardware when you plug in a backend. Honest: no quantum advantage yet (~8-10 yr out); the tooling + testing are real TODAY \u2014 quantum's role in fusion is post-~2036", "available": true }, "benchmark": { @@ -926,7 +1145,7 @@ "active_backend": "default", "ran_on_real_hardware": false, "how_to_use_real_qc": "set KODEX_QC_BACKEND=ibm and KODEX_QC_TOKEN= to run this exact circuit on real quantum hardware", - "honest_timeline": "fault-tolerant quantum ADVANTAGE for fusion kernels is ~8-10 yr out; this tooling makes the TESTING real and runnable TODAY, same code path" + "honest_timeline": "fault-tolerant quantum ADVANTAGE for fusion kernels is ~8-10 yr out \u2014 a meaningful role in fusion only after ~2036; this tooling makes the TESTING real and runnable TODAY, same code path" }, "verdict": "REAL VQE recovers the H2 ground state to 0.0002 mHa on the default backend (within 1.6 mHa chemical accuracy). Runs on real quantum hardware when you set KODEX_QC_BACKEND=ibm. HONEST: no quantum advantage this decade \u2014 the value now is a real, testable quantum pipeline, not a speedup." }, @@ -968,6 +1187,198 @@ "caveat": "small seeding scan (few impurities); reduced 0-D radiation model" } }, + "KSCOUT": { + "card": { + "name": "KSCOUT", + "function": "MF-CAMPAIGN", + "status": "BUILT", + "phase": 3, + "provenance": "SIM", + "retired_by": "the full multi-fidelity CGYRO campaign (twin + mu=400 + real-mass gold)", + "gates": [ + "BR-L2-A1e" + ], + "note": "multi-fidelity Bayesian-optimization campaign manager \u2014 extends KSEEK: chooses which operating point AND which fidelity (reduced twin / mu=400 CGYRO / real-mass gold) to run next, greedily maximizing truth-weighted information per GPU-hour under a budget", + "available": true + }, + "benchmark": { + "member": "KSCOUT", + "live_mf_campaign": { + "source": "KYRO GP over the completed 16-pt CGYRO A1e map", + "budget_gpu_h": 15.0, + "target_hotspots": 16, + "policy": "twin-triage every hotspot, escalate most-uncertain to mu=400, reserve gold", + "fidelities": { + "twin": { + "gpu_h": 0.0, + "rho": 0.55, + "desc": "reduced analytic twin (near-free triage)" + }, + "cgyro_mu400": { + "gpu_h": 2.89, + "rho": 0.9, + "desc": "CGYRO representative mu=400 (measured GPU-h)" + }, + "gold_mu3672": { + "gpu_h": 28.9, + "rho": 1.0, + "desc": "CGYRO real-mass gold (est. ~10x mu=400; not yet run)" + } + }, + "multi_fidelity_plan": [ + { + "a_LT": 3.25, + "shear": 1.4, + "fidelity": "cgyro_mu400", + "gpu_h": 2.99, + "gp_std": 0.5041, + "truth_confidence_rho": 0.9 + }, + { + "a_LT": 2.25, + "shear": 1.4, + "fidelity": "cgyro_mu400", + "gpu_h": 2.99, + "gp_std": 0.5041, + "truth_confidence_rho": 0.9 + }, + { + "a_LT": 3.25, + "shear": 0.6, + "fidelity": "cgyro_mu400", + "gpu_h": 2.99, + "gp_std": 0.5041, + "truth_confidence_rho": 0.9 + }, + { + "a_LT": 2.25, + "shear": 0.6, + "fidelity": "cgyro_mu400", + "gpu_h": 2.99, + "gp_std": 0.5041, + "truth_confidence_rho": 0.9 + }, + { + "a_LT": 3.25, + "shear": 1.0, + "fidelity": "twin", + "gpu_h": 0.1, + "gp_std": 0.4831, + "truth_confidence_rho": 0.55 + }, + { + "a_LT": 2.25, + "shear": 1.0, + "fidelity": "twin", + "gpu_h": 0.1, + "gp_std": 0.4831, + "truth_confidence_rho": 0.55 + }, + { + "a_LT": 2.75, + "shear": 0.6, + "fidelity": "twin", + "gpu_h": 0.1, + "gp_std": 0.4831, + "truth_confidence_rho": 0.55 + }, + { + "a_LT": 2.75, + "shear": 1.4, + "fidelity": "twin", + "gpu_h": 0.1, + "gp_std": 0.4831, + "truth_confidence_rho": 0.55 + }, + { + "a_LT": 2.75, + "shear": 1.0, + "fidelity": "twin", + "gpu_h": 0.1, + "gp_std": 0.4623, + "truth_confidence_rho": 0.55 + }, + { + "a_LT": 2.25, + "shear": 0.4, + "fidelity": "twin", + "gpu_h": 0.1, + "gp_std": 0.3838, + "truth_confidence_rho": 0.55 + }, + { + "a_LT": 2.25, + "shear": 1.6, + "fidelity": "twin", + "gpu_h": 0.1, + "gp_std": 0.3838, + "truth_confidence_rho": 0.55 + }, + { + "a_LT": 3.25, + "shear": 1.6, + "fidelity": "twin", + "gpu_h": 0.1, + "gp_std": 0.3838, + "truth_confidence_rho": 0.55 + }, + { + "a_LT": 3.25, + "shear": 0.4, + "fidelity": "twin", + "gpu_h": 0.1, + "gp_std": 0.3838, + "truth_confidence_rho": 0.55 + }, + { + "a_LT": 2.0, + "shear": 1.4, + "fidelity": "twin", + "gpu_h": 0.1, + "gp_std": 0.3838, + "truth_confidence_rho": 0.55 + }, + { + "a_LT": 3.5, + "shear": 1.4, + "fidelity": "twin", + "gpu_h": 0.1, + "gp_std": 0.3838, + "truth_confidence_rho": 0.55 + }, + { + "a_LT": 2.0, + "shear": 0.6, + "fidelity": "twin", + "gpu_h": 0.1, + "gp_std": 0.3838, + "truth_confidence_rho": 0.55 + } + ], + "mf_runs": 16, + "mf_gpu_h_used": 13.56, + "mf_runs_by_fidelity": { + "twin": 12, + "cgyro_mu400": 4, + "gold_mu3672": 0 + }, + "mf_mean_confidence_rho": 0.638, + "baseline_all_mu400": { + "n_runs": 5, + "gpu_h_used": 14.95, + "mean_confidence_rho": 0.281, + "unvisited_hotspots": 11 + }, + "mf_confidence_gain_x_vs_all_mu400": 2.27, + "verdict": "Under a tight 15.0 GPU-h budget across 16 uncertain operating points, the multi-fidelity policy triages ALL 16 with cheap twin runs and escalates 4 to mu=400 (0 to real-mass gold), reaching mean truth-confidence rho 0.638 \u2014 vs 0.281 for a naive all-mu=400 plan that exhausts the budget after 5 points and leaves 11 hotspots unexamined (2.27x). A real cost-aware campaign manager: look everywhere cheaply, spend the expensive fidelity where KYRO is least sure." + }, + "caveats": [ + "the per-fidelity rho (correlation-with-truth) values are ASSUMPTIONS \u2014 the real-mass gold has not been run \u2014 so this is a planning heuristic, not a measured speedup; the advantage holds only while budget < hotspots x mu=400 cost", + "GP std comes from only 16 points (directional, like KSEEK)", + "GPU-hours only; no compute-cost figures (product-econ rule)" + ] + } + }, "KSEEK": { "card": { "name": "KSEEK", @@ -1022,7 +1433,7 @@ "gates": [ "HX-29" ], - "note": "REAL quantum-metrology evaluation (PennyLane mixed-state) \u2014 GHZ interferometry: ideal gives Heisenberg (gain ~ N) scaling, but realistic dephasing (NV/SQUID/SERF reality) collapses it back to the standard quantum limit (~sqrt(N)). Honest null where fusion disruptions live", + "note": "REAL quantum-metrology evaluation (PennyLane mixed-state) \u2014 GHZ interferometry: ideal gives Heisenberg (gain ~ N) scaling, but realistic dephasing (NV/SQUID/SERF reality) collapses it back to the standard quantum limit (~sqrt(N)). Honest null where fusion disruptions live; quantum's role in fusion is post-~2036", "available": true }, "benchmark": { @@ -1091,7 +1502,7 @@ "active_backend": "default", "ran_on_real_hardware": false, "how_to_use_real_qc": "set KODEX_QC_BACKEND=ibm and KODEX_QC_TOKEN= to run this exact circuit on real quantum hardware", - "honest_timeline": "fault-tolerant quantum ADVANTAGE for fusion kernels is ~8-10 yr out; this tooling makes the TESTING real and runnable TODAY, same code path" + "honest_timeline": "fault-tolerant quantum ADVANTAGE for fusion kernels is ~8-10 yr out \u2014 a meaningful role in fusion only after ~2036; this tooling makes the TESTING real and runnable TODAY, same code path" }, "verdict": "REAL quantum-metrology computation: over N=2->8 the ideal GHZ gain grows 4.0x (Heisenberg ~ N), but with per-qubit dephasing (p=0.2) the dephased GHZ grows only 2.05x \u2014 essentially the SQL rate (2.01x, ~sqrt(N)). Dephasing ERASES the Heisenberg *scaling* to a bounded constant (gain turns over near N~9). HONEST NULL: no quantum-sensing advantage for fusion disruptions this decade \u2014 but a real, runnable metrology tool." }, @@ -1112,7 +1523,7 @@ "gates": [ "KX-L3" ], - "note": "tensor-network / low-rank ROM compression of the real CGYRO A1e flux database (classical MPS-style SVD; a many-body method and bridge to quantum kernels \u2014 NO quantum-advantage claim)", + "note": "tensor-network / low-rank ROM compression of the real CGYRO A1e flux database (classical MPS-style SVD; a many-body method and bridge to quantum kernels \u2014 NO quantum-advantage claim; quantum's role in fusion is post-~2036)", "available": true }, "benchmark": { @@ -1263,9 +1674,9 @@ "map": "12 turbulent / 4 quiet (16/16 complete)" }, "speed": { - "surrogate_ms_per_point": 0.329, + "surrogate_ms_per_point": 0.257, "cgyro_gpu_h_per_point_measured": 2.89, - "speedup_x_vs_cgyro": "3.2e+07", + "speedup_x_vs_cgyro": "4.1e+07", "speedup_note": "ms inference vs GPU-hours for the CONVERGED flux value", "fidelity": "representative mu=400; real-mass gold deferred" }, diff --git a/benchmarks/run_all.py b/benchmarks/run_all.py index 8d496bbf87412553f2e39822088baa8b2db3dc48..dbef2b3eb965761a8572e82ff2a448f2cf01471e 100644 --- a/benchmarks/run_all.py +++ b/benchmarks/run_all.py @@ -181,6 +181,31 @@ def _headline(name, b): r = b.get("live_impurity_seeding", {}) return (f"impurity-seeding radiation evaluator: {r.get('n_impurities')} impurities " f"({', '.join(r.get('impurities', []))}); least core dilution = {r.get('least_core_dilution_impurity')}") + if name == "KMIND": + lf = b.get("live_foundation", {}) + pos = lf.get("positive_transfer_domains", []); neg = lf.get("negative_transfer_domains", []) + neu = lf.get("neutral_transfer_domains", []); st = lf.get("data_starved_domains", []) + return (f"**foundation model**: one shared trunk across {len(lf.get('domains', []))} domains " + f"({lf.get('params', '?')} params); transfer vs matched single-task — pos {pos or 'none'}, " + f"neg {neg or 'none'}, neutral {neu or 'none'}" + + (" (transport data-starved)" if st else "") + " — honest multi-task result") + if name == "KMIT": + m = b.get("live_error_mitigation", {}); z = m.get("zne", {}); ro = m.get("readout_mitigation", {}) + return (f"**REAL error mitigation**: ZNE cuts H2 energy error {z.get('error_noisy_mHa')}→" + f"{z.get('error_zne_mHa')} mHa ({z.get('error_reduction_frac')} removed); readout TV " + f"{ro.get('tv_distance_noisy')}→{ro.get('tv_distance_mitigated')} — real NISQ tool today, " + f"role post-~2036") + if name == "KLINQ": + q = b.get("live_quantum_linear_solver", {}); hhl = q.get("ft_hhl_resource_estimate", {}) + return (f"**REAL quantum linear solver** (VQLS): 4×4 reduced-MHD solve fidelity " + f"{q.get('solution_fidelity_vs_classical')} vs classical (rel-resid {q.get('residual_rel')}); " + f"FT-HHL {hhl.get('physical_qubits_needed')} phys qubits — no advantage, role post-~2036") + if name == "KSCOUT": + c = b.get("live_mf_campaign", {}); base = c.get("baseline_all_mu400", {}) + return (f"**multi-fidelity campaign**: tight {c.get('budget_gpu_h')} GPU-h over " + f"{c.get('target_hotspots')} hotspots → mean confidence ρ {c.get('mf_mean_confidence_rho')} " + f"vs {base.get('mean_confidence_rho')} all-μ=400 " + f"({c.get('mf_confidence_gain_x_vs_all_mu400')}×); triage-then-escalate") return b.get("note", b.get("headline", "roadmap")) diff --git a/codemeta.json b/codemeta.json index 0feb841134eeb20d0a548e9c3a20b69099ff44cb..39a984b05792b2cb234bd30aea95c3e7e3586c46 100644 --- a/codemeta.json +++ b/codemeta.json @@ -2,8 +2,8 @@ "@context": "https://doi.org/10.5063/schema/codemeta-2.0", "@type": "SoftwareSourceCode", "name": "KODEX: the Kronos Family of Codes", - "version": "0.1.0", - "dateModified": "2026-09-10", + "version": "0.3.0", + "dateModified": "2026-09-29", "license": "https://spdx.org/licenses/Apache-2.0", "codeRepository": "https://github.com/KronosFE/kronos-ml", "url": "https://kronosfusionenergy.com/kodex", diff --git a/kronos_ml/members/__init__.py b/kronos_ml/members/__init__.py index ec87041279e98be6678f67f11d9755bc3703eab7..259173c0f3a1da84d0c07cefab353734e8d888c6 100644 --- a/kronos_ml/members/__init__.py +++ b/kronos_ml/members/__init__.py @@ -16,3 +16,5 @@ from . import advanced # noqa: F401 KLAW, KDRIVE, KGEN, KFUEL from . import capstone # noqa: F401 KFORGE, KPILOT from . import neutronics # noqa: F401 KBREED, KFLUX from . import roadmap # noqa: F401 KHEAT, KEDGE, KRAD, KECON +from . import foundation # noqa: F401 KMIND (v0.3.0) +from . import quantum_v3 # noqa: F401 KMIT, KLINQ (v0.3.0) diff --git a/kronos_ml/members/advanced.py b/kronos_ml/members/advanced.py index 18205474a2b7f7b9bcdc46ec8e5ddaeaa683885f..873012712516df469b19e9d95c3f69b076657e5e 100644 --- a/kronos_ml/members/advanced.py +++ b/kronos_ml/members/advanced.py @@ -358,3 +358,136 @@ class KBENCH(Surrogate): "ROM) with real on-disk data + reproducible KODEX baselines — a community " "leaderboard starting point, not a private result")}, "caveat": "small by mainstream-ML standards (CGYRO = 16 pts); honest pilot fusion-ML benchmarks"} + + +# ------------------------------------------------------------------ KSCOUT +@register +class KSCOUT(Surrogate): + name = "KSCOUT"; function = "MF-CAMPAIGN"; phase = 3; status = "BUILT" + provenance = "SIM" + retired_by = "the full multi-fidelity CGYRO campaign (twin + mu=400 + real-mass gold)" + real_codes = ("multi-fidelity Bayesian optimization", "cost-aware acquisition") + gates = ("BR-L2-A1e",) + note = ("multi-fidelity Bayesian-optimization campaign manager — extends KSEEK: chooses which " + "operating point AND which fidelity (reduced twin / mu=400 CGYRO / real-mass gold) to " + "run next, greedily maximizing truth-weighted information per GPU-hour under a budget") + + _BOX = ((2.0, 3.5), (0.4, 1.6)) # a_LT, shear (matches KYRO / KSEEK) + _C0 = 0.10 # fixed per-run setup overhead (GPU-h equiv.) + _HOTSPOTS = 16 # target uncertain locations for a campaign + # honest fidelity model: measured mu=400 cost; twin ~free; gold ~10x mu=400 (estimate, not yet run). + # rho = ASSUMED correlation-with-truth per fidelity (gold=1 by definition); labelled as assumptions. + _FIDELITIES = { + "twin": {"gpu_h": 0.0, "rho": 0.55, "desc": "reduced analytic twin (near-free triage)"}, + "cgyro_mu400": {"gpu_h": 2.89, "rho": 0.90, "desc": "CGYRO representative mu=400 (measured GPU-h)"}, + "gold_mu3672": {"gpu_h": 28.9, "rho": 1.00, "desc": "CGYRO real-mass gold (est. ~10x mu=400; not yet run)"}, + } + + def _grid(self, n=31): + a = np.linspace(*self._BOX[0], n); s = np.linspace(*self._BOX[1], n) + A, S = np.meshgrid(a, s) + return np.c_[A.ravel(), S.ravel()] + + def _hotspots(self, n_hotspots, min_sep=0.16): + """The n most-uncertain operating points (KYRO GP std), min-separated + away from data.""" + gp = get("KYRO")._fit() + G = self._grid() + _, std = gp.predict(G); std = np.asarray(std).ravel() + Xtr = data.cgyro_flux_map_final()[["a_LT", "shear"]].to_numpy(float) + span = np.array([self._BOX[0][1] - self._BOX[0][0], self._BOX[1][1] - self._BOX[1][0]]) + picks = [] + for idx in np.argsort(-std): + g = G[idx] + d_tr = np.linalg.norm((g - Xtr) / span, axis=1).min() + d_ch = min([np.linalg.norm((g - c[0]) / span) for c in picks], default=9.0) + if min(d_tr, d_ch) < min_sep: + continue + picks.append((g, float(std[idx]))) + if len(picks) >= n_hotspots: + break + return picks + + def _cost(self, fid): + return self._FIDELITIES[fid]["gpu_h"] + self._C0 + + def _plan(self, budget, n_hotspots=None): + """Triage-and-escalate: twin-triage every hotspot, then escalate the most-uncertain to + mu=400, then the single most-critical to real-mass gold — all within the GPU-h budget.""" + n_hotspots = n_hotspots or self._HOTSPOTS + hs = self._hotspots(n_hotspots) # sorted by std desc + c_t, c_m, c_g = (self._cost("twin"), self._cost("cgyro_mu400"), self._cost("gold_mu3672")) + tiers = [None] * len(hs); used = 0.0 + # tier 1 — cheap twin triage on as many hotspots as the budget allows (highest std first) + for i in range(len(hs)): + if used + c_t <= budget + 1e-9: + tiers[i] = "twin"; used += c_t + # tier 2 — escalate the single most-uncertain to real-mass gold if affordable + if tiers and tiers[0] == "twin" and used + c_g <= budget + 1e-9: + tiers[0] = "gold_mu3672"; used += c_g + # tier 3 — escalate the next most-uncertain to mu=400 while budget remains + for i in range(len(hs)): + if tiers[i] == "twin" and used + c_m <= budget + 1e-9: + tiers[i] = "cgyro_mu400"; used += c_m + plan = [] + for (g, s), tier in zip(hs, tiers): + if tier is None: + continue + plan.append({"a_LT": round(float(g[0]), 3), "shear": round(float(g[1]), 3), + "fidelity": tier, "gpu_h": round(self._cost(tier), 2), + "gp_std": round(float(s), 4), + "truth_confidence_rho": self._FIDELITIES[tier]["rho"]}) + return plan, round(used, 2), hs + + def _mean_confidence(self, plan, n_hotspots): + """Mean truth-confidence (rho) achieved across ALL target hotspots (unvisited = 0).""" + return round(sum(p["truth_confidence_rho"] for p in plan) / n_hotspots, 3) + + def _baseline_all_mu400(self, budget, n_hotspots): + """Naive baseline: spend the whole budget at mu=400 on the highest-std hotspots.""" + c_m = self._cost("cgyro_mu400") + n = min(n_hotspots, int((budget + 1e-9) // c_m)) + return {"n_runs": n, "gpu_h_used": round(n * c_m, 2), + "mean_confidence_rho": round(n * self._FIDELITIES["cgyro_mu400"]["rho"] / n_hotspots, 3), + "unvisited_hotspots": n_hotspots - n} + + def _predict(self, x): + """x = GPU-hour budget (float) -> the recommended multi-fidelity campaign plan.""" + budget = float(np.ravel(np.asarray(x, float))[0]) if x is not None else 15.0 + plan, used, _ = self._plan(budget) + by_fid = {f: sum(1 for p in plan if p["fidelity"] == f) for f in self._FIDELITIES} + return Prediction(plan, None, True, + note=f"multi-fidelity campaign: {len(plan)} runs {by_fid}, {used} GPU-h of {budget}") + + def benchmark(self): + budget = 15.0 # tight budget: mu=400 can't cover every hotspot + n = self._HOTSPOTS + plan, used, hs = self._plan(budget, n) + by_fid = {f: sum(1 for p in plan if p["fidelity"] == f) for f in self._FIDELITIES} + mf_conf = self._mean_confidence(plan, n) + base = self._baseline_all_mu400(budget, n) + ratio = round(mf_conf / base["mean_confidence_rho"], 2) if base["mean_confidence_rho"] > 1e-9 else None + return {"member": self.name, + "live_mf_campaign": { + "source": "KYRO GP over the completed 16-pt CGYRO A1e map", + "budget_gpu_h": budget, "target_hotspots": n, + "policy": "twin-triage every hotspot, escalate most-uncertain to mu=400, reserve gold", + "fidelities": {k: {kk: v[kk] for kk in ("gpu_h", "rho", "desc")} + for k, v in self._FIDELITIES.items()}, + "multi_fidelity_plan": plan, + "mf_runs": len(plan), "mf_gpu_h_used": used, "mf_runs_by_fidelity": by_fid, + "mf_mean_confidence_rho": mf_conf, + "baseline_all_mu400": base, + "mf_confidence_gain_x_vs_all_mu400": ratio, + "verdict": (f"Under a tight {budget} GPU-h budget across {n} uncertain operating points, the " + f"multi-fidelity policy triages ALL {n} with cheap twin runs and escalates " + f"{by_fid['cgyro_mu400']} to mu=400 ({by_fid['gold_mu3672']} to real-mass gold), " + f"reaching mean truth-confidence rho {mf_conf} — vs {base['mean_confidence_rho']} " + f"for a naive all-mu=400 plan that exhausts the budget after {base['n_runs']} " + f"points and leaves {base['unvisited_hotspots']} hotspots unexamined ({ratio}x). " + f"A real cost-aware campaign manager: look everywhere cheaply, spend the " + f"expensive fidelity where KYRO is least sure.")}, + "caveats": ["the per-fidelity rho (correlation-with-truth) values are ASSUMPTIONS — the " + "real-mass gold has not been run — so this is a planning heuristic, not a " + "measured speedup; the advantage holds only while budget < hotspots x mu=400 cost", + "GP std comes from only 16 points (directional, like KSEEK)", + "GPU-hours only; no compute-cost figures (product-econ rule)"]} diff --git a/kronos_ml/members/foundation.py b/kronos_ml/members/foundation.py new file mode 100644 index 0000000000000000000000000000000000000000..5237c73d5e4acb761243f31d358494a65ab3fb67 --- /dev/null +++ b/kronos_ml/members/foundation.py @@ -0,0 +1,333 @@ +"""KMIND — whole-device foundation surrogate (shared-trunk multi-task model). + +ONE shared plasma-state trunk feeds four domain heads — transport (KYRO), +equilibrium (KORE), state (KFLOW) and disruption (KWARD) — trained JOINTLY on the +on-disk data those specialists use. Per-domain input adapters project each +domain's heterogeneous inputs into a common embedding; the shared trunk learns a +representation every head reads; per-domain heads emit the domain output. + +The honest question a foundation model has to answer: does forcing four fusion +sub-problems through ONE shared representation help or hurt each of them vs a +matched single-task specialist? `benchmark()` trains the multi-task model AND a +matched single-task baseline per domain on the SAME split and reports the +transfer — positive OR negative — in each domain's own metric. No hype: a shared +representation that hurts a task is reported as hurting it. + +CPU-only, deterministic (fixed seed), torch (lazy import). Uncertainty is an +MC-dropout epistemic proxy; the per-domain in_domain gate is a Mahalanobis +distance to that domain's training inputs. +""" +from __future__ import annotations + +import time +import numpy as np + +from .. import register, get +from ..base import Surrogate, Prediction +from .. import uq, metrics, data +from .._torch import torch +from .equil import _field, _A, _K, _D + +_D_EMB = 32 # shared embedding width (adapter output) +_H = 128 # shared trunk width +_DROP = 0.1 # dropout (also the MC-dropout head) +_STEPS = 300 # joint / baseline training steps (same for fairness) +_BATCH = 64 +_MC = 30 # MC-dropout passes for predictive std +_DOMAINS = ("transport", "equil", "state", "disrupt") + + +# ---- per-domain data builders (all read-only, on-disk) ------------------- + +def _transport_xy(): + df = data.cgyro_flux_map_final() + X = df[["a_LT", "shear"]].to_numpy(float) + y = np.log10(np.clip(df.Q_tot.to_numpy(float), 0, None) + 1e-4).reshape(-1, 1) + return X, y + + +def _equil_xy(n=800, seed=uq.SEED): + rng = np.random.default_rng(seed) + P = np.c_[rng.uniform(*_A, n), rng.uniform(*_K, n), rng.uniform(*_D, n)] + Y = np.array([_field(*p) for p in P], float) + return P.astype(float), Y + + +def _state_xy(n=2000, seed=uq.SEED): + z = data.gnn_snapshots() + Xobs = np.nan_to_num(np.asarray(z["Xn_obs"], float)) + Yclean = np.nan_to_num(np.asarray(z["Xn_clean"], float)) + if len(Xobs) > n: # deterministic subsample for speed + idx = np.random.default_rng(seed).choice(len(Xobs), n, replace=False) + Xobs, Yclean = Xobs[idx], Yclean[idx] + return Xobs, Yclean + + +def _disrupt_xy(): + X, y, _ = get("KWARD")._real_features() + return np.asarray(X, float), np.asarray(y, int).reshape(-1, 1) + + +_BUILDERS = {"transport": _transport_xy, "equil": _equil_xy, + "state": _state_xy, "disrupt": _disrupt_xy} +_KIND = {"transport": "reg", "equil": "reg", "state": "reg", "disrupt": "cls"} +# physical in-domain boxes for the low-D parametric domains (match KYRO / KORE); +# the high-D domains (state, disrupt) use a Mahalanobis gate on training inputs +_BOX = {"transport": ((2.0, 3.5), (0.4, 1.6)), + "equil": ((0.8, 1.2), (1.5, 2.5), (-0.5, 0.5))} + + +def _spec(name, test_frac=0.25, seed=uq.SEED): + """Build a domain spec: standardized train/test tensors + inversion stats + gate.""" + X, Y = _BUILDERS[name]() + n = len(X) + rng = np.random.default_rng(seed + hash(name) % 1000) + perm = rng.permutation(n) + nte = max(2, int(round(test_frac * n))) + te, tr = perm[:nte], perm[nte:] + Xtr, Xte, Ytr, Yte = X[tr], X[te], Y[tr], Y[te] + xmu, xsd = Xtr.mean(0), Xtr.std(0) + 1e-8 + kind = _KIND[name] + if kind == "reg": + ymu, ysd = Ytr.mean(0), Ytr.std(0) + 1e-8 + else: + ymu, ysd = np.zeros(Y.shape[1]), np.ones(Y.shape[1]) # raw {0,1} labels + gate = None if name in _BOX else uq.MahalanobisGate(0.05).fit(Xtr) + return {"name": name, "kind": kind, "in_dim": X.shape[1], "out_dim": Y.shape[1], + "Xtr": Xtr, "Xte": Xte, "Ytr": Ytr, "Yte": Yte, + "xmu": xmu, "xsd": xsd, "ymu": ymu, "ysd": ysd, "gate": gate, "n": n} + + +def _in_domain(sp, x_raw): + """Per-domain trust gate, queried on RAW inputs: a physical box for the low-D + parametric domains (transport/equil), Mahalanobis distance for the rest.""" + x = np.asarray(x_raw, float).ravel() + if sp["name"] in _BOX: + b = _BOX[sp["name"]] + return bool(len(x) >= len(b) and all(lo <= x[i] <= hi for i, (lo, hi) in enumerate(b))) + return bool(sp["gate"].in_domain(x.reshape(1, -1))) + + +def _stdx(sp, X): + return ((np.atleast_2d(np.asarray(X, float)) - sp["xmu"]) / sp["xsd"]).astype("float32") + + +def _stdy(sp, Y): + return ((np.asarray(Y, float) - sp["ymu"]) / sp["ysd"]).astype("float32") + + +def _invy(sp, Yn): + return np.asarray(Yn, float) * sp["ysd"] + sp["ymu"] + + +# ---- the shared-trunk multi-task network --------------------------------- + +def _build_net(specs, seed=uq.SEED): + t = torch(); t.set_num_threads(1); t.manual_seed(seed) # single-thread -> reproducible + nn = t.nn + + class MultiTask(nn.Module): + def __init__(self): + super().__init__() + self.adapters = nn.ModuleDict({ + s["name"]: nn.Sequential(nn.Linear(s["in_dim"], _D_EMB), nn.SiLU()) + for s in specs}) + self.trunk = nn.Sequential( + nn.Linear(_D_EMB, _H), nn.SiLU(), nn.Dropout(_DROP), + nn.Linear(_H, _H), nn.SiLU(), nn.Dropout(_DROP)) + self.heads = nn.ModuleDict({ + s["name"]: nn.Linear(_H, s["out_dim"]) for s in specs}) + + def forward(self, name, x): + return self.heads[name](self.trunk(self.adapters[name](x))) + + return MultiTask() + + +def _train(net, specs, steps=_STEPS, seed=uq.SEED): + t = torch(); nn = t.nn + opt = t.optim.Adam(net.parameters(), lr=3e-3) + mse = nn.MSELoss(); bce = nn.BCEWithLogitsLoss() + rng = np.random.default_rng(seed) + # pre-tensor the standardized train sets + packs = [] + for sp in specs: + Xn = t.tensor(_stdx(sp, sp["Xtr"])) + Yn = t.tensor(_stdy(sp, sp["Ytr"])) + packs.append((sp, Xn, Yn)) + net.train() + for _ in range(steps): + opt.zero_grad(); loss = 0.0 + for sp, Xn, Yn in packs: + m = len(Xn); b = min(_BATCH, m) + idx = t.tensor(rng.choice(m, b, replace=False)) + out = net(sp["name"], Xn[idx]) + loss = loss + (bce(out, Yn[idx]) if sp["kind"] == "cls" + else mse(out, Yn[idx])) + loss.backward(); opt.step() + net.eval() + return net + + +def _mc_forward(net, name, Xn, kind, passes=_MC): + """MC-dropout: keep dropout ON, run several passes -> (mean, std).""" + t = torch() + net.train() # dropout active + outs = [] + with t.no_grad(): + for _ in range(passes): + o = net(name, t.tensor(np.asarray(Xn, "float32"))).numpy() + outs.append(_sigmoid(o) if kind == "cls" else o) + net.eval() + outs = np.array(outs) + return outs.mean(0), outs.std(0) + + +def _sigmoid(z): + return 1.0 / (1.0 + np.exp(-np.clip(z, -30, 30))) + + +def _domain_metric(sp, pred_std_mean): + """Score the (standardized) prediction against the held-out truth in the + domain's OWN metric. pred_std_mean is the standardized-space mean output.""" + kind = sp["kind"]; Yte = sp["Yte"] + if kind == "cls": + from sklearn.metrics import roc_auc_score + p = _sigmoid(pred_std_mean).ravel() + auc = float(roc_auc_score(Yte.ravel(), p)) if len(np.unique(Yte)) > 1 else float("nan") + return {"metric": "roc_auc", "value": round(auc, 3), "higher_better": True} + pred = _invy(sp, pred_std_mean) + if sp["name"] == "transport": + return {"metric": "r2_log_Qtot", "value": round(metrics.r2(Yte.ravel(), pred.ravel()), 3), + "higher_better": True} + if sp["name"] == "equil": + rl2 = float(np.mean([metrics.rel_l2(Yte[i], pred[i]) for i in range(len(Yte))])) + return {"metric": "rel_l2_field", "value": round(rl2, 4), "higher_better": False} + # state: range-normalized RMSE (KFLOW convention) + rng = sp["Ytr"].max(0) - sp["Ytr"].min(0) + 1e-9 + nrmse = float(np.sqrt(np.mean(((pred - Yte) / rng) ** 2))) + return {"metric": "norm_rmse", "value": round(nrmse, 4), "higher_better": False} + + +@register +class KMIND(Surrogate): + name = "KMIND"; function = "FOUNDATION"; phase = 3; status = "BUILT" + provenance = "SIM" + retired_by = "a device-scale multi-task foundation model on real multi-diagnostic data" + real_codes = ("multi-task representation learning", "KYRO", "KORE", "KFLOW", "KWARD") + gates = ("BR-L2-A1e", "AC-16", "AC-18", "AC-20") + note = ("whole-device foundation surrogate — one shared-trunk multi-task net across " + "transport / equilibrium / state / disruption, trained jointly; reports " + "shared-representation transfer honestly (incl. negative transfer)") + + def __init__(self): + self._net = None; self._specs = None + + def _fit(self): + if self._net is None: + self._specs = [_spec(n) for n in _DOMAINS] + self._net = _train(_build_net(self._specs), self._specs) + return self._net, self._specs + + def _sp(self, name): + _, specs = self._fit() + for sp in specs: + if sp["name"] == name: + return sp + raise KeyError(name) + + def _predict(self, x): + """x = (domain, input) or {"domain": name, "x": input}, domain in + {transport, equil, state, disrupt}. -> Prediction(y, MC-dropout std, in_domain).""" + if isinstance(x, dict): + name, xi = x.get("domain"), x.get("x") + elif isinstance(x, (tuple, list)) and len(x) == 2 and x[0] in _DOMAINS: + name, xi = x + else: + raise ValueError("KMIND expects (domain, input) or {'domain','x'}; " + f"domain in {list(_DOMAINS)}") + net, _ = self._fit(); sp = self._sp(name) + Xn = _stdx(sp, xi) + mean, std = _mc_forward(net, name, Xn, sp["kind"]) + if sp["kind"] == "cls": + y = float(mean.ravel()[0]); unc = float(std.ravel()[0]) + note = f"{name} head: disruption probability {y:.3f} (MC-dropout std {unc:.3f})" + else: + inv_mean = _invy(sp, mean)[0]; inv_std = (std * sp["ysd"])[0] + y = float(inv_mean) if sp["out_dim"] == 1 else inv_mean + unc = float(np.mean(inv_std)) if sp["out_dim"] > 1 else float(inv_std) + tgt = "log10 Q_tot" if name == "transport" else ("psi field" if name == "equil" + else "clean sensor state") + note = f"{name} head via shared trunk -> {tgt} (MC-dropout epistemic std)" + return Prediction(y, unc, _in_domain(sp, xi), note=note) + + def benchmark(self): + net, specs = self._fit() + # multi-task test predictions per domain (deterministic mean, dropout off) + t = torch() + multi = {} + with t.no_grad(): + for sp in specs: + out = net(sp["name"], t.tensor(_stdx(sp, sp["Xte"]))).numpy() + multi[sp["name"]] = _domain_metric(sp, out) + # matched single-task baselines: same architecture (adapter+trunk+head), + # SAME split + steps, trained on that ONE domain only + _MIN_TEST = 10 # below this, held-out metric is too noisy to judge + transfer = {} + for sp in specs: + base_net = _train(_build_net([sp]), [sp]) + with t.no_grad(): + bo = base_net(sp["name"], t.tensor(_stdx(sp, sp["Xte"]))).numpy() + base_m = _domain_metric(sp, bo) + mm = multi[sp["name"]] + n_test = int(len(sp["Xte"])) + delta = round(mm["value"] - base_m["value"], 4) + if n_test < _MIN_TEST: + direction = "data_starved" # e.g. transport: 16 pts total, held-out R2 unreliable + else: + better = ((mm["value"] > base_m["value"]) if mm["higher_better"] + else (mm["value"] < base_m["value"])) + eps = 0.01 if mm["higher_better"] else 0.002 + direction = ("positive" if (better and abs(delta) > eps) + else "negative" if (not better and abs(delta) > eps) else "neutral") + transfer[sp["name"]] = { + "metric": mm["metric"], "multitask": mm["value"], + "single_task_baseline": base_m["value"], "delta": delta, + "transfer": direction, "n_train": int(sp["n"] - n_test), "n_test": n_test} + pos = [d for d, v in transfer.items() if v["transfer"] == "positive"] + neg = [d for d, v in transfer.items() if v["transfer"] == "negative"] + neu = [d for d, v in transfer.items() if v["transfer"] == "neutral"] + starved = [d for d, v in transfer.items() if v["transfer"] == "data_starved"] + t0 = time.perf_counter() + for _ in range(50): + self._predict(("transport", [3.0, 1.0])) + ms = (time.perf_counter() - t0) / 50 * 1e3 + return {"member": self.name, + "live_foundation": { + "architecture": (f"per-domain adapter (->{_D_EMB}) + shared trunk " + f"(2x{_H}, dropout {_DROP}) + per-domain head; {len(specs)} domains, " + f"joint training {_STEPS} steps"), + "domains": list(_DOMAINS), + "params": int(sum(p.numel() for p in net.parameters())), + "transfer_vs_single_task": transfer, + "positive_transfer_domains": pos, + "negative_transfer_domains": neg, + "neutral_transfer_domains": neu, + "data_starved_domains": starved, + "mc_dropout_predict_ms": round(ms, 2), + "backend": "CPU, torch, MC-dropout UQ", + "verdict": (f"One shared trunk across {len(specs)} fusion domains, benchmarked head-by-head " + f"against a MATCHED single-task baseline on the same split. On the well-populated " + f"domains the shared representation is positive {pos or 'none'}, negative " + f"{neg or 'none'}, neutral {neu or 'none'} — " + f"{'no negative transfer' if not neg else 'some negative transfer'}. " + + (f"{starved} is data-starved " + f"({transfer[starved[0]]['n_train'] + transfer[starved[0]]['n_test']} pts) " + f"and not judged held-out. " if starved else "") + + f"Trained on real on-disk data (CGYRO map / analytic equilibria / twin " + f"sensor snapshots / MAST shots) — an honest multi-task result, not a blanket win.")}, + "caveats": ["transport has only ~16 points, so its head is data-starved and high-variance " + "(a real limit, reported not hidden)", + "uncertainty is an MC-dropout epistemic proxy, not a calibrated conformal interval", + "equilibrium targets are the analytic Solov'ev family (as in KORE); state targets " + "are the analytic-twin sensor snapshots (as in KFLOW)"]} diff --git a/kronos_ml/members/quantum.py b/kronos_ml/members/quantum.py index c063a2822108372fbc32d5b2c40fb1110b0a38c5..075baad496fadb02e7acc336ee055fd3f8e276c6 100644 --- a/kronos_ml/members/quantum.py +++ b/kronos_ml/members/quantum.py @@ -27,7 +27,7 @@ class KQUBIT(Surrogate): note = ("REAL variational quantum eigensolver (VQE) for a molecular Hamiltonian — a " "runnable quantum program (PennyLane): executes on a simulator now and on real " "quantum hardware when you plug in a backend. Honest: no quantum advantage yet " - "(~8-10 yr out); the tooling + testing are real TODAY") + "(~8-10 yr out); the tooling + testing are real TODAY — quantum's role in fusion is post-~2036") # H2 molecular Hamiltonian, 2-qubit parity-reduced (standard Qiskit/IBM textbook coeffs, Ha) _COEFFS = (-1.052373245772859, 0.39793742484318045, -0.39793742484318045, @@ -137,7 +137,7 @@ class KQROSS(Surrogate): note = ("REAL fault-tolerant resource estimator — computes the classical<->quantum crossover N, " "the surface-code physical-qubit overhead, and the logical-qubit roadmap year for a fusion " "electronic-structure kernel (order-of-magnitude, literature-scaled). Verdict: no FT " - "advantage this decade — the machine does not exist yet") + "advantage this decade — the machine does not exist yet; meaningful role post-~2036") # order-of-magnitude scaling model (literature-scaled; illustrative, honestly labelled) _D = 25 # surface-code distance @@ -207,7 +207,7 @@ class KSENSE(Surrogate): note = ("REAL quantum-metrology evaluation (PennyLane mixed-state) — GHZ interferometry: ideal " "gives Heisenberg (gain ~ N) scaling, but realistic dephasing (NV/SQUID/SERF reality) " "collapses it back to the standard quantum limit (~sqrt(N)). Honest null where fusion " - "disruptions live") + "disruptions live; quantum's role in fusion is post-~2036") _P = 0.2 # per-qubit dephasing (realistic sensor decoherence) @@ -284,7 +284,7 @@ class KTENSOR(Surrogate): gates = ("KX-L3",) note = ("tensor-network / low-rank ROM compression of the real CGYRO A1e flux " "database (classical MPS-style SVD; a many-body method and bridge to " - "quantum kernels — NO quantum-advantage claim)") + "quantum kernels — NO quantum-advantage claim; quantum's role in fusion is post-~2036)") _COLS = ("a_LT", "shear", "Q_i", "Q_e") # operating grid + saturated fluxes @@ -395,7 +395,7 @@ class KQERN(Surrogate): note = ("REAL quantum-kernel classifier — embeds real MAST disruption features into a " "quantum feature map and classifies on the fidelity kernel (PennyLane); runs on a " "simulator now, real hardware pluggable. Honest: ties the classical kernel — a " - "validated no-advantage result, but a real, runnable quantum-ML pipeline") + "validated no-advantage result, but a real, runnable quantum-ML pipeline; role in fusion post-~2036") _N = 64 _FEATS = (0, 6, 7, 8) # ip_mean, beta_n, li, q95 (subset of KWARD's real features) @@ -490,7 +490,7 @@ class KQOPT(Surrogate): note = ("REAL QAOA quantum optimizer — solves a combinatorial design QUBO on an actual " "quantum circuit (PennyLane); runs on a simulator now, real hardware pluggable, and " "you can plug in your own QUBO. Honest: standard ~0.7-1.0 approx ratio, no speedup " - "at this size (~8-10 yr to advantage)") + "at this size (advantage post-~2036)") # a fixed 6-node design QUBO (illustrative MaxCut-style configuration problem) _EDGES = ((0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 0), (0, 2), (3, 5)) @@ -586,7 +586,8 @@ class KDYN(Surrogate): gates = ("KX-L3",) note = ("REAL quantum dynamics — Trotterized time-evolution of a transverse-field Ising " "'kinetic' Hamiltonian (PennyLane); the honest 1/n_steps cost curve for simulating " - "plasma-like dynamics on a quantum computer. Runs on a simulator now, hardware pluggable") + "plasma-like dynamics on a quantum computer. Runs on a simulator now, hardware pluggable; " + "quantum's role in fusion is post-~2036") _NQ = 3; _J = 1.0; _HX = 0.8; _T = 1.0 diff --git a/kronos_ml/members/quantum_v3.py b/kronos_ml/members/quantum_v3.py new file mode 100644 index 0000000000000000000000000000000000000000..8773d8b0bb45f5857bee27cef5c5a47d623c383c --- /dev/null +++ b/kronos_ml/members/quantum_v3.py @@ -0,0 +1,286 @@ +"""KODEX v0.3.0 quantum additions — honest, runnable-today NISQ tooling. + +KMIT — quantum ERROR MITIGATION: zero-noise extrapolation (ZNE) + readout-error + mitigation applied to a real fusion quantum circuit (the KQUBIT H2 VQE + state). Mitigation is the technique NISQ practitioners actually run + today — it claws signal back out of noise; it is NOT a speedup. +KLINQ — quantum LINEAR SOLVER: a variational quantum linear solver (VQLS) that + prepares the solution of a small reduced-MHD linear system with a real + quantum circuit, plus an honest fault-tolerant HHL resource estimate. + +Framing (founder, 2026-09-19): we see quantum computing taking a meaningful role +in fusion only AFTER ~2036 — the tooling and testing are real and runnable TODAY +(here, on a simulator now and on real hardware via KODEX_QC_BACKEND=ibm), the +advantage is not. +""" +from __future__ import annotations + +import numpy as np + +from .. import register, get +from ..base import Surrogate, Prediction +from .. import quantum_backend as qc + +_QC_ROLE_YEAR = 2036 # honest: quantum's meaningful role in fusion is post-~2036 + + +# ============================================================ KMIT +@register +class KMIT(Surrogate): + name = "KMIT"; function = "QMITIGATION"; phase = 2; status = "BUILT" + provenance = "SIM" + retired_by = "fault-tolerant quantum hardware (not available this decade)" + real_codes = ("zero-noise extrapolation", "readout-error mitigation", "PennyLane") + gates = ("KX-L3",) + note = ("REAL quantum error mitigation — zero-noise extrapolation (ZNE, unitary " + "folding) + readout-error mitigation on a real fusion quantum circuit " + "(the KQUBIT H2 VQE state). Mitigation is the genuine NISQ tool TODAY; it " + f"recovers signal from noise, not a speedup. Quantum's role in fusion is " + f"post-~{_QC_ROLE_YEAR}") + + _P = 0.04 # per-qubit depolarizing rate (NISQ-ish) + _READOUT = 0.08 # per-qubit readout bit-flip probability + + # ---- ZNE on the KQUBIT H2 VQE circuit ---- + def _zne(self): + import pennylane as qml + kq = get("KQUBIT"); kq._run_vqe() + params, H = kq._vqe_params, kq._hamiltonian() + ansatz = kq._ansatz + exact = kq._vqe["exact_energy_Ha"] + + dev_clean = qml.device("default.qubit", wires=2) + + @qml.qnode(dev_clean) + def ideal(): + ansatz(params) + return qml.expval(H) + e_ideal = float(ideal()) # noiseless expval at the VQE params + + dev = qml.device("default.mixed", wires=2) + + def _noise(): + for w in (0, 1): + qml.DepolarizingChannel(self._P, wires=w) + + @qml.qnode(dev) + def folded(k): + """Global unitary folding: ansatz (adjoint.ansatz)^k -> logical ansatz, + noise scale lambda = 2k+1.""" + ansatz(params); _noise() + for _ in range(k): + qml.adjoint(ansatz)(params); _noise() + ansatz(params); _noise() + return qml.expval(H) + + lambdas = np.array([1, 3, 5], float) # k = 0, 1, 2 + energies = np.array([float(folded(int((lam - 1) / 2))) for lam in lambdas]) + # linear ZNE extrapolation to zero noise + slope, intercept = np.polyfit(lambdas, energies, 1) + e_noisy = float(energies[0]) + e_zne = float(intercept) + err_noisy = abs(e_noisy - e_ideal) + err_zne = abs(e_zne - e_ideal) + reduction = (err_noisy - err_zne) / err_noisy if err_noisy > 1e-9 else 0.0 + return {"exact_energy_Ha": round(exact, 6), + "ideal_noiseless_Ha": round(e_ideal, 6), + "noisy_Ha": round(e_noisy, 6), + "zne_mitigated_Ha": round(e_zne, 6), + "noise_scales_lambda": lambdas.tolist(), + "energies_vs_lambda": [round(float(e), 6) for e in energies], + "error_noisy_mHa": round(err_noisy * 1e3, 3), + "error_zne_mHa": round(err_zne * 1e3, 3), + "error_reduction_frac": round(float(reduction), 3), + "depolarizing_p": self._P, "backend": qc.backend_note()} + + # ---- readout-error mitigation on a Bell distribution ---- + def _readout_mitigation(self): + r = self._READOUT + ideal = np.array([0.5, 0.0, 0.0, 0.5]) # Bell |Phi+> probs + M1 = np.array([[1 - r, r], [r, 1 - r]]) # per-qubit readout confusion + M = np.kron(M1, M1) + noisy = M @ ideal + mitig = np.linalg.solve(M, noisy) + mitig = np.clip(mitig, 0, None); mitig = mitig / mitig.sum() + tv = lambda a, b: float(0.5 * np.abs(a - b).sum()) + tv_noisy, tv_mit = tv(noisy, ideal), tv(mitig, ideal) + return {"readout_bitflip_p": r, + "tv_distance_noisy": round(tv_noisy, 4), + "tv_distance_mitigated": round(tv_mit, 4), + "tv_reduction_frac": round((tv_noisy - tv_mit) / tv_noisy, 3) if tv_noisy > 1e-9 else 0.0, + "method": "inverse confusion-matrix (linear) readout correction"} + + def _predict(self, x): + """x = per-qubit depolarizing rate p (float) -> ZNE-mitigated H2 energy at that noise.""" + if x is not None: + try: + self._P = float(np.ravel(np.asarray(x, float))[0]) + except Exception: + pass + z = self._zne() + return Prediction(z["zne_mitigated_Ha"], z["error_zne_mHa"], True, + note=(f"ZNE-mitigated H2 energy {z['zne_mitigated_Ha']} Ha " + f"(noisy err {z['error_noisy_mHa']} -> {z['error_zne_mHa']} mHa); " + f"backend={z['backend']['active_backend']}")) + + def benchmark(self): + z = self._zne(); ro = self._readout_mitigation() + return {"member": self.name, + "live_error_mitigation": { + "problem": "mitigate a noisy H2 VQE expectation (the real KQUBIT circuit)", + "framework": "PennyLane default.mixed; ZNE via global unitary folding + linear extrapolation", + "zne": z, "readout_mitigation": ro, + "backend": z["backend"], + "verdict": (f"REAL error mitigation on a fusion quantum circuit: ZNE cuts the noisy-energy " + f"error {z['error_noisy_mHa']} -> {z['error_zne_mHa']} mHa " + f"({z['error_reduction_frac']:.0%} of the error removed) and inverse-confusion " + f"readout correction cuts the measurement TV distance " + f"{ro['tv_distance_noisy']} -> {ro['tv_distance_mitigated']} " + f"({ro['tv_reduction_frac']:.0%}). Mitigation is the REAL NISQ tool today — it " + f"recovers signal from noise. HONEST: it is NOT a speedup; quantum's meaningful " + f"role in fusion is post-~{_QC_ROLE_YEAR}, and mitigation cost grows with noise. " + f"Runs on real hardware with KODEX_QC_BACKEND=ibm.")}, + "caveats": [f"no quantum advantage — quantum's role in fusion is post-~{_QC_ROLE_YEAR}", + "ZNE assumes a smooth noise->observable relation; it extrapolates, it does not " + "eliminate noise, and its overhead grows as noise grows", + "readout mitigation uses a known confusion matrix; on hardware you must calibrate it"]} + + +# ============================================================ KLINQ +@register +class KLINQ(Surrogate): + name = "KLINQ"; function = "QLINSOLVE"; phase = 3; status = "BUILT" + provenance = "SIM" + retired_by = "fault-tolerant quantum hardware (not available this decade)" + real_codes = ("variational quantum linear solver", "HHL resource estimate", "PennyLane") + gates = ("KX-L3",) + note = ("REAL quantum linear solver — a variational quantum linear solver (VQLS) prepares the " + "solution of a small reduced-MHD linear system with a real quantum circuit (sim now, " + "hardware pluggable), plus an honest fault-tolerant HHL resource estimate. No advantage " + f"at real scale; quantum's role in fusion is post-~{_QC_ROLE_YEAR}") + + _NQ = 2 # N = 4 linear system + _N = 4 + + def _system(self, b=None): + """A small SPD reduced-MHD operator: 1-D discrete Laplacian (tridiagonal), + the shape a linearized force-balance / diffusion solve takes.""" + A = (np.diag([2.0] * self._N) + np.diag([-1.0] * (self._N - 1), 1) + + np.diag([-1.0] * (self._N - 1), -1)) + if b is None: + b = np.array([1.0, 0.0, 0.0, 0.0]) + b = np.asarray(b, float).ravel()[: self._N] + b = b / (np.linalg.norm(b) + 1e-12) + return A, b + + def _ansatz_state(self, theta, dev): + import pennylane as qml + + @qml.qnode(dev) + def state(t): + # 2-layer hardware-efficient ansatz on 2 qubits + qml.RY(t[0], 0); qml.RY(t[1], 1) + qml.CNOT([0, 1]) + qml.RY(t[2], 0); qml.RY(t[3], 1) + qml.CNOT([1, 0]) + qml.RY(t[4], 0); qml.RY(t[5], 1) + return qml.state() + return np.real(np.asarray(state(theta))) # SPD system -> real solution + + def _solve(self, b=None): + if getattr(self, "_res", None) is not None and b is None: + return self._res + import pennylane as qml + from scipy.optimize import minimize + from .. import uq + A, bvec = self._system(b) + dev = qc.get_device(wires=self._NQ) + + def cost(theta): + x = self._ansatz_state(theta, dev) + Ax = A @ x + nAx = np.linalg.norm(Ax) + 1e-12 + overlap = float(bvec @ (Ax / nAx)) # want A|x> parallel to |b> + return 1.0 - overlap ** 2 # global VQLS cost + + rng = np.random.default_rng(uq.SEED) + best = None + for _ in range(4): # a few restarts for robustness + t0 = rng.uniform(0, 2 * np.pi, 6) + r = minimize(cost, t0, method="Powell", + options={"maxiter": 4000, "xtol": 1e-8, "ftol": 1e-10}) + if best is None or r.fun < best.fun: + best = r + theta = best.x + x_q = self._ansatz_state(theta, dev) + # VQLS solves up to scale & sign: fix by projecting onto the classical solution direction + x_cl = np.linalg.solve(A, bvec) + x_q_dir = x_q / (np.linalg.norm(x_q) + 1e-12) + x_cl_dir = x_cl / (np.linalg.norm(x_cl) + 1e-12) + if x_q_dir @ x_cl_dir < 0: + x_q_dir = -x_q_dir + fidelity = float((x_q_dir @ x_cl_dir) ** 2) # state fidelity of the solutions + # rescale quantum direction to the true magnitude for a usable x + alpha = float((A @ x_q_dir) @ bvec) / float((A @ x_q_dir) @ (A @ x_q_dir) + 1e-12) + x_q_scaled = alpha * x_q_dir + resid = float(np.linalg.norm(A @ x_q_scaled - bvec) / (np.linalg.norm(bvec) + 1e-12)) + res = {"N": self._N, "n_qubits": self._NQ, "cost_final": round(float(best.fun), 6), + "solution_fidelity_vs_classical": round(fidelity, 4), + "residual_rel": round(resid, 4), + "x_quantum": [round(float(v), 4) for v in x_q_scaled], + "x_classical": [round(float(v), 4) for v in x_cl], + "backend": qc.backend_note()} + if b is None: + self._res = res + return res + + # ---- honest fault-tolerant HHL resource estimate (KQROSS-style) ---- + def _hhl_estimate(self, N=1_000_000, kappa=1e3, precision_bits=10): + """Order-of-magnitude FT-HHL cost for a fusion-scale sparse linear solve.""" + n_logical = int(np.ceil(np.log2(N))) + precision_bits + 1 # system + clock + ancilla + phys_per_logical = 2 * 25 * 25 # surface code d=25 (~1250) + phys = n_logical * phys_per_logical + # HHL ~ O(kappa/eps) calls; classical CG ~ O(sqrt(kappa)) matvecs — quantum needs + # sparse, well-conditioned, and only reads out an aggregate, else state-prep/readout kill it + roadmap_year = 2027 + 3.0 * np.log10(max(n_logical, 1) / 1.0) # ~10x logical / 3 yr from ~1 in 2027 + return {"assumed_system": f"N~{N:.0e} sparse SPD (reduced-MHD grid), kappa~{kappa:.0e}", + "logical_qubits_needed": n_logical, + "physical_qubits_needed": f"~{phys:.0e}", + "surface_code_phys_per_logical": phys_per_logical, + "roadmap_year_reach_logical": int(round(roadmap_year)), + "hardware_today": "~1e2-1e3 physical qubits, no error-corrected logical qubits", + "caveats": ["HHL needs fault tolerance + sparse, well-conditioned A + efficient state " + "prep, and returns |x> (aggregate readout), not the full vector", + f"no fusion HHL advantage this decade — meaningful role post-~{_QC_ROLE_YEAR}"]} + + def _predict(self, x): + """x = right-hand-side vector b (len<=4) or None -> quantum solution x of A x = b.""" + r = self._solve(None if x is None else x) + return Prediction(r["x_quantum"], r["residual_rel"], True, + note=(f"VQLS solution (fidelity {r['solution_fidelity_vs_classical']} vs classical, " + f"rel-residual {r['residual_rel']}); backend={r['backend']['active_backend']}")) + + def benchmark(self): + r = self._solve() + hhl = self._hhl_estimate() + return {"member": self.name, + "live_quantum_linear_solver": { + "problem": "solve A x = b for a 4x4 reduced-MHD Laplacian (SPD) with a real quantum circuit", + "method": "variational quantum linear solver (VQLS), global overlap cost, Powell optimization", + "framework": "PennyLane (sim now; Hadamard-test cost on real hardware, pluggable)", + **{k: r[k] for k in ("N", "n_qubits", "cost_final", "solution_fidelity_vs_classical", + "residual_rel", "x_quantum", "x_classical")}, + "ft_hhl_resource_estimate": hhl, "backend": r["backend"], + "verdict": (f"REAL variational quantum linear solver recovers the 4x4 reduced-MHD solve at " + f"solution fidelity {r['solution_fidelity_vs_classical']} vs classical " + f"(rel-residual {r['residual_rel']}) — a runnable quantum linear solver TODAY. " + f"The fault-tolerant HHL route for a fusion-scale (N~1e6) solve needs " + f"~{hhl['logical_qubits_needed']} logical -> {hhl['physical_qubits_needed']} " + f"physical qubits (roadmap ~{hhl['roadmap_year_reach_logical']}). HONEST: no " + f"advantage at real scale; quantum's meaningful role in fusion is " + f"post-~{_QC_ROLE_YEAR}. Runs on hardware with KODEX_QC_BACKEND=ibm.")}, + "caveats": [f"no quantum advantage — quantum's role in fusion is post-~{_QC_ROLE_YEAR}", + "VQLS residual is read from the simulator here; on hardware it needs Hadamard " + "tests and its cost landscape can have barren plateaus at scale", + "the 4x4 system is a toy; classical solves it instantly — the point is a real, " + "honest, hardware-ready quantum pipeline, not a speedup"]} diff --git a/kronos_ml/quantum_backend.py b/kronos_ml/quantum_backend.py index bf7dbe4601a14159c745d47cf1b513e9d927cf3e..d40ec080881b4f0c71d69db42bdf722d6fe6db33 100644 --- a/kronos_ml/quantum_backend.py +++ b/kronos_ml/quantum_backend.py @@ -62,6 +62,7 @@ def backend_note() -> dict: "ran_on_real_hardware": real, "how_to_use_real_qc": ("set KODEX_QC_BACKEND=ibm and KODEX_QC_TOKEN= to run this exact circuit on real quantum hardware"), - "honest_timeline": ("fault-tolerant quantum ADVANTAGE for fusion kernels is ~8-10 yr out; " - "this tooling makes the TESTING real and runnable TODAY, same code path"), + "honest_timeline": ("fault-tolerant quantum ADVANTAGE for fusion kernels is ~8-10 yr out — a " + "meaningful role in fusion only after ~2036; this tooling makes the TESTING " + "real and runnable TODAY, same code path"), } diff --git a/publish/LIVE_RECORDS.md b/publish/LIVE_RECORDS.md deleted file mode 100644 index f846824665c067693e4b5f2d56755acb3d0c29fd..0000000000000000000000000000000000000000 --- a/publish/LIVE_RECORDS.md +++ /dev/null @@ -1,36 +0,0 @@ -# KODEX — live deposit records (per code) - -Status 2026-09-10: **Zenodo, OSF, Figshare = published** (26 each). **Harvard Dataverse = 25 submitted for curator review** (DOIs reserved; publish on Harvard approval) — **KLAW (doi:10.7910/DVN/ANAFXK) still to submit**. GitHub / PyPI / Hugging Face / Internet Archive = pending. - -Author: Ford, P. I. · ORCID 0000-0003-0395-1752 · Kronos Fusion Energy · Apache-2.0. Each record's homepage = kronosfusionenergy.com/kodex/. - -| Code | Zenodo DOI | Figshare DOI | Dataverse DOI (in review) | OSF | -|--|--|--|--|--| -| **KAIROS** | 10.5281/zenodo.22694265 | 10.6084/m9.figshare.33553966 | 10.7910/DVN/GOZGCM | [db6uh](https://osf.io/db6uh/) | -| **KBREED** | 10.5281/zenodo.22694267 | 10.6084/m9.figshare.33559312 | 10.7910/DVN/OPJHP3 | [2m3ce](https://osf.io/2m3ce/) | -| **KBURN** | 10.5281/zenodo.22694269 | 10.6084/m9.figshare.33559324 | 10.7910/DVN/ITN6JZ | [8e6fn](https://osf.io/8e6fn/) | -| **KDRIVE** | 10.5281/zenodo.22694271 | 10.6084/m9.figshare.33559333 | 10.7910/DVN/YKKLQ7 | [xhkuy](https://osf.io/xhkuy/) | -| **KECON** | 10.5281/zenodo.22694273 | 10.6084/m9.figshare.33559345 | 10.7910/DVN/WBHQ7S | [b5qmx](https://osf.io/b5qmx/) | -| **KEYE** | 10.5281/zenodo.22694279 | 10.6084/m9.figshare.33559357 | 10.7910/DVN/5UILC8 | [5qzp4](https://osf.io/5qzp4/) | -| **KFLOW** | 10.5281/zenodo.22694283 | 10.6084/m9.figshare.33559369 | 10.7910/DVN/XUXC7B | [hjrzb](https://osf.io/hjrzb/) | -| **KFLUX** | 10.5281/zenodo.22694287 | 10.6084/m9.figshare.33559378 | 10.7910/DVN/3F0NCW | [fmjc2](https://osf.io/fmjc2/) | -| **KFORGE** | 10.5281/zenodo.22694289 | 10.6084/m9.figshare.33559390 | 10.7910/DVN/OVOVVN | [5zg6j](https://osf.io/5zg6j/) | -| **KFUEL** | 10.5281/zenodo.22694291 | 10.6084/m9.figshare.33559402 | 10.7910/DVN/89A8GS | [xuz8a](https://osf.io/xuz8a/) | -| **KFUSE** | 10.5281/zenodo.22694294 | 10.6084/m9.figshare.33559414 | 10.7910/DVN/SMA2OP | [exhkc](https://osf.io/exhkc/) | -| **KGATE** | 10.5281/zenodo.22694297 | 10.6084/m9.figshare.33559423 | 10.7910/DVN/2CKPZH | [mbu37](https://osf.io/mbu37/) | -| **KGEN** | 10.5281/zenodo.22694307 | 10.6084/m9.figshare.33559435 | 10.7910/DVN/OCTF8U | [svbwq](https://osf.io/svbwq/) | -| **KHALO** | 10.5281/zenodo.22694309 | 10.6084/m9.figshare.33559447 | 10.7910/DVN/V5YM23 | [ne89y](https://osf.io/ne89y/) | -| **KISO** | 10.5281/zenodo.22694311 | 10.6084/m9.figshare.33559459 | 10.7910/DVN/ELXAEY | [hjqek](https://osf.io/hjqek/) | -| **KLAW** | 10.5281/zenodo.22694315 | 10.6084/m9.figshare.33559468 | 10.7910/DVN/ANAFXK | [kfp4t](https://osf.io/kfp4t/) | -| **KMAT** | 10.5281/zenodo.22694319 | 10.6084/m9.figshare.33559480 | 10.7910/DVN/IJG9FT | [y4j2p](https://osf.io/y4j2p/) | -| **KOIL** | 10.5281/zenodo.22694323 | 10.6084/m9.figshare.33559492 | 10.7910/DVN/N5WLNR | [2rb68](https://osf.io/2rb68/) | -| **KORE** | 10.5281/zenodo.22694327 | 10.6084/m9.figshare.33559504 | 10.7910/DVN/DCFLOI | [sxm5v](https://osf.io/sxm5v/) | -| **KPATH** | 10.5281/zenodo.22694329 | 10.6084/m9.figshare.33559513 | 10.7910/DVN/8QIUD4 | [fbcyw](https://osf.io/fbcyw/) | -| **KPILOT** | 10.5281/zenodo.22694331 | 10.6084/m9.figshare.33559525 | 10.7910/DVN/EYD6FZ | [aqxe8](https://osf.io/aqxe8/) | -| **KQROSS** | 10.5281/zenodo.22694333 | 10.6084/m9.figshare.33559537 | 10.7910/DVN/IIDBCF | [zp82a](https://osf.io/zp82a/) | -| **KQUBIT** | 10.5281/zenodo.22694336 | 10.6084/m9.figshare.33559546 | 10.7910/DVN/2BC8BL | [eqr9z](https://osf.io/eqr9z/) | -| **KSENSE** | 10.5281/zenodo.22694338 | 10.6084/m9.figshare.33559558 | 10.7910/DVN/5LQJAF | [psr8h](https://osf.io/psr8h/) | -| **KWARD** | 10.5281/zenodo.22694342 | 10.6084/m9.figshare.33559570 | 10.7910/DVN/VPYXHS | [ugfpr](https://osf.io/ugfpr/) | -| **KYRO** | 10.5281/zenodo.22694348 | 10.6084/m9.figshare.33559582 | 10.7910/DVN/2YQQOX | [5m6vu](https://osf.io/5m6vu/) | - -_Generated from publish/state/*.json. Zenodo/Figshare DOIs are permanent; Dataverse DOIs activate when Harvard curators approve the review submissions._ diff --git a/publish/MANIFEST.sha256 b/publish/MANIFEST.sha256 deleted file mode 100644 index ea9752bec9c44074a34cd6a03aa7f767b1487a6a..0000000000000000000000000000000000000000 --- a/publish/MANIFEST.sha256 +++ /dev/null @@ -1,41 +0,0 @@ -# KODEX SHA-256 manifest (v0.1.0, 2026-09-10) - -2ac66d4d7d4a89054d47e15215b9d6eca8e527503763b9b05c85b65160f5d8ec .gitignore -8695a176b58590a0bbc6b7ede1c0ce4a270c54115aa06777e1462bfebe86bd1a .zenodo.json -b1ee5fa8a901a64265186e58788f420b94c37151a61144a3c24ed37d782325e3 BENCHMARKS.md -9bb42b66491b72e95cfc26b4139c767ec7eda643d479061183c65af55db56d44 CITATION.cff -889dc088a39f3b908cc627dcbd09e252a75abea42f716f664eafcf7d8b7ff578 CODES.md -16f411de9a68f30ea8f05572c7a2aebe8cd923acec35bb55441b1a92861ce7c2 FAMILY.md -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -faf6dbd85a3cd3b9879201b7470e7ba858ae560108b7c984ec33809081d51a3d README.md -8d2e3d7856756d03007be14187b5dd5bf10e22160e9f04103015141c04643d42 benchmarks/benchmarks.json -361ef1108dc3ea2c4d6499b47ea4617a528a53bef4254abafdb889568a2772d3 benchmarks/run_all.py -5e138e573eeaaaf7a5c2b0c74570adbf7cb132058f2c8c2dd7c25e3c18a4d77f checkpoints/kore_mlp_seed0.pt -a251c80fc84f2c46be0a8aa822bc5a3619c32019627d0d35001531d0b5d3be19 checkpoints/kore_mlp_seed1.pt -525cecaf99600dd7ccddb1d25a84fa216ab71739d73c39b62bb04d1e434bfd76 checkpoints/kore_mlp_seed2.pt -6e5136d13e3e0b8335d146e65dce940b54e38e0e6a7bfe1fbdb3af8ea8483d88 codemeta.json -162d8a2ba10cead49dd9be7276dc7c57177f151f174d1ea623ad1f65fce2d43a demo.ipynb -b4233195b725817a61d1801f7c744159486076bae1c3bb9fd7d0e9ab9070f3dd kronos_ml/__init__.py -835650847427eb59f9240a6bbcd1db4ec739eacef974aa0200944bbe3348043e kronos_ml/_torch.py -c094cca7d3393317f8e412f41211b073be1701560b8c2923f84ab1e0bf770753 kronos_ml/base.py -510bf0fe2c2ce159dec25629ad903e3b0de1e97fdc2621b80efce87e4d6c33a7 kronos_ml/data.py -5d34c8aec99f9f7c5e6f62cb3b02b1aafeb311bb94d38f880d9ae6de63e51733 kronos_ml/members/__init__.py -e5b88836b177c757a4f2db0925eac364ad12abe8c18038e14be9432286c03e61 kronos_ml/members/advanced.py -f87aaf941a7ee00200f18bd35d68880e5365d62aa48bb029ab64e0091f16888e kronos_ml/members/capstone.py -2b1d273280c16b1771cf1fd745aa558b967d9dac0684eb722dfdc867812fe9d1 kronos_ml/members/control.py -5c340f9813497f5382b3a5324b76311b216f5696c9d8f3b2d0fb8f7491d7f671 kronos_ml/members/disrupt.py -3f881fef3d4b8b255907c3adda0c3936b335c4aadb51e7a566bf4095bd058c29 kronos_ml/members/equil.py -56d7f4b0b4072224772e3a59f1642ef4e5f5afaf70575636775a73a891f6e0d3 kronos_ml/members/fusion.py -a8639ff450bb27a42771a2251ee852291ecaf09c4a1795cfc790ce67a84b808e kronos_ml/members/magnet.py -9265df980412b82ef2185fb3d143c93780f4da76fda72fa4b6b010b6ae06b3de kronos_ml/members/materials.py -f843996eeaa949e470ecce22713e5505649ce9fc1a7f5a6cdfca425a2ded09dc kronos_ml/members/neutronics.py -2708133806780dce88184fa19c03b3760f207788c78d9e8edddcecd35f991e5e kronos_ml/members/plant.py -ad05706b4f588e413b1314ebe7b3069c57a21ccf040d6fb762eb731aeda41584 kronos_ml/members/quantum.py -c9b921c1131b95831366c0197663b486ea1c9a302b119ef3880249d6c897c7bf kronos_ml/members/roadmap.py -75c01157cea0ab64f6a3458d76e69fa2be386fd5e4c6168d6e08d41e46a53c15 kronos_ml/members/spine.py -eca2a363d02653b4fbe5e68df2ca41ecb5c277fd66fea22694681d648ecf7f64 kronos_ml/members/state.py -f6466e59e49482d4423fb0415e3a7e4377eada9d2544a734a23a82974730e60f kronos_ml/members/transport.py -508a45df51b194c435bfdd2d79658bff66bb77913a0ea66cea40116a7867266a kronos_ml/metrics.py -578e86ef6f3faa7cce6682541d6cedb52c7f652d187085088dc3a4e8ccd4b5db kronos_ml/uq.py -0f1af657ccf7539ab9dbbc2dd5408afa08085670d9c896bd5e95cbb4352124ec pyproject.toml -54516950a748b00bc0992388ae3ae1a3fda3739307e7f2b651670896fb30c823 tests/test_contract.py diff --git a/publish/PROVENANCE.md b/publish/PROVENANCE.md deleted file mode 100644 index 2c651dc44219539b8cdf0aefd77fd80d7a05c12d..0000000000000000000000000000000000000000 --- a/publish/PROVENANCE.md +++ /dev/null @@ -1,42 +0,0 @@ -# KODEX provenance & traceability (v0.1.0, 2026-09-10) - -Each BUILT code traces: **code -> real benchmark -> on-disk data/method -> Kronos corpus DOI -> /kodex page.** - -| # | Code | Ph | Provenance | Real source/method | Corpus anchor | Page | -|--|--|--|--|--|--|--| -| 01 | **KAIROS** | 1 | TWIN | receding-horizon MPC | references:10.5281/zenodo.21842371; references:10.5281/zenodo.22645689 | kairos | -| 02 | **KBREED** | 2 | SIM | openmc | references:10.5281/zenodo.22645689 | kbreed | -| 03 | **KBURN** | 2 | TWIN | plant systems model | references:10.5281/zenodo.21842371; references:10.5281/zenodo.22645689 | kburn | -| 04 | **KDRIVE** | 3 | TWIN | reinforcement learning | references:10.5281/zenodo.21842371; references:10.5281/zenodo.22645689 | kdrive | -| 05 | **KECON** | 3 | n/a | open LCOE methodology | references:10.5281/zenodo.21842371; references:10.5281/zenodo.22645689 | kecon | -| 06 | **KEYE** | 2 | SIM | sensor fusion, signal validation | references:10.5281/zenodo.21842371; references:10.5281/zenodo.22645689 | keye | -| 07 | **KFLOW** | 1 | SIM | message-passing GNN | references:10.5281/zenodo.21842371; references:10.5281/zenodo.22645689 | kflow | -| 08 | **KFLUX** | 2 | SIM | openmc | references:10.5281/zenodo.22645689 | kflux | -| 09 | **KFORGE** | 3 | CGYRO-urep | differential evolution over the fleet | isDerivedFrom:10.5281/zenodo.22136279 | kforge | -| 10 | **KFUEL** | 3 | SIM | fuel-cycle systems model | references:10.5281/zenodo.21842371; references:10.5281/zenodo.22645689 | kfuel | -| 11 | **KFUSE** | 2 | CGYRO-urep | multi-fidelity GP, CGYRO | isDerivedFrom:10.5281/zenodo.22136279 | kfuse | -| 12 | **KGATE** | 1 | TWIN | CBF certificate, hardware failsafe | references:10.5281/zenodo.21842371; references:10.5281/zenodo.22645689 | kgate | -| 13 | **KGEN** | 3 | ANALYTIC | generative model | references:10.5281/zenodo.21842371; references:10.5281/zenodo.22645689 | kgen | -| 14 | **KHALO** | 1 | SIM | deep-ensemble, conformal | references:10.5281/zenodo.21842371; references:10.5281/zenodo.22645689 | khalo | -| 15 | **KISO** | 2 | SIM | isotope PI servo, FENDL-3.2 activation | references:10.5281/zenodo.22645689; isDerivedFrom:https://www-nds.iaea.org/fendl/ | kiso | -| 16 | **KLAW** | 3 | CGYRO-urep | sparse regression / SINDy | isDerivedFrom:10.5281/zenodo.22136279 | klaw | -| 17 | **KMAT** | 1 | SIM | CHGNet, DFT | references:10.5281/zenodo.21842371; references:10.5281/zenodo.22645689 | kmat | -| 18 | **KOIL** | 1 | SIM | finite-element stress solve | references:10.5281/zenodo.21842371; references:10.5281/zenodo.22645689 | koil | -| 19 | **KORE** | 1 | ANALYTIC | Grad-Shafranov FD solver | references:10.5281/zenodo.21842371; references:10.5281/zenodo.22645689 | kore | -| 20 | **KPATH** | 2 | TWIN | MPC scenario optimizer | references:10.5281/zenodo.21842371; references:10.5281/zenodo.22645689 | kpath | -| 21 | **KPILOT** | 3 | n/a | fleet router / tool dispatcher | references:10.5281/zenodo.21842371; references:10.5281/zenodo.22645689 | kpilot | -| 22 | **KQROSS** | 2 | SIM | FT resource estimation | isDerivedFrom:10.5281/zenodo.21842371 | kqross | -| 23 | **KQUBIT** | 1 | SIM | VQE, quantum chemistry | isDerivedFrom:10.5281/zenodo.21842371 | kqubit | -| 24 | **KSENSE** | 2 | SIM | NV/SQUID/SERF magnetometry | isDerivedFrom:10.5281/zenodo.21842371 | ksense | -| 25 | **KWARD** | 1 | REAL-ANCHOR | real MAST shots (FAIR-MAST) | isDerivedFrom:https://mastapp.site; references:10.5281/zenodo.22645689 | kward | -| 26 | **KYRO** | 1 | CGYRO-urep | cgyro, gene, gs2, tglf | isDerivedFrom:10.5281/zenodo.22136279 | kyro | - -## Held as ROADMAP (4) - -- **KEDGE** (ROADMAP, phase 3) — divertor / SOL / edge heat-flux transport surrogate -- **KHEAT** (PARTIAL, phase 2) — RF / NBI heating & current-drive actuator-response surrogate -- **KRAD** (ROADMAP, phase 3) — impurity seeding / radiation / divertor-detachment control -- **KTENSOR** (PARTIAL, phase 2) — tensor-network simulation & compression — a classical many-body method and a bridge to quantum for kernel problems - -Anchor DOIs: CGYRO `10.5281/zenodo.22136279` · Register `10.5281/zenodo.22645689` · AI+Quantum `10.5281/zenodo.21842371` · toolkit https://github.com/KronosFE/kronos-toolkit - diff --git a/publish/PUBLISH_RUNBOOK.md b/publish/PUBLISH_RUNBOOK.md deleted file mode 100644 index 51fab33b6f16b2d0db6737716fa23b5d11ea2ddc..0000000000000000000000000000000000000000 --- a/publish/PUBLISH_RUNBOOK.md +++ /dev/null @@ -1,158 +0,0 @@ -# KODEX — publish runbook (PER-CODE, DRAFT-FIRST) - -**Release:** KODEX v0.1.0 — the Kronos Family of Codes. -**Model:** **26 per-code records** on each data repository (Zenodo / OSF / Figshare / Harvard Dataverse / -Internet Archive) — each BUILT code gets its own record + DOI. **GitHub = ONE repo** (`kronos-ml`, 26 -modules). **PyPI = ONE package** (`kronos-ml`, 26 importable codes). **Held as ROADMAP (not published):** -KHEAT, KTENSOR, KEDGE, KRAD. -**Author on every record:** Ford, P. I. · ORCID `0000-0003-0395-1752` · Kronos Fusion Energy · Apache-2.0. - -> **Draft-first, two-step per data venue.** Step 1 `*_draft.py` creates all 26 records as **private/ -> unpublished** and uploads each code's files — nothing is public. Step 2 `*_publish_all.py` is a **dry run -> by default** and publishes only with an explicit **`--yes`** — that `--yes` is your single deliberate -> authorization for that venue's 26. The draft scripts NEVER publish; the publish scripts do nothing -> without `--yes`. (Internet Archive is one step — items are public on upload — so `ia_upload_all.py` -> requires `--yes` and IS the publish.) - -Per-code metadata lives in `publish/records//metadata.json`; each record's homepage is -`kronosfusionenergy.com/kodex/`, with its physics-source + the shared Kronos anchors -(register `10.5281/zenodo.22645689`, CGYRO `10.5281/zenodo.22136279`, AI+Quantum `10.5281/zenodo.21842371`, -toolkit) as related-identifiers, honest card preserved. Per-code attach set: `.py` (source excerpt), -`benchmark.json`, `card.md`, `CITATION.cff`, `LICENSE`, `MANIFEST.sha256`. The repo-root `.zenodo.json`, -`CITATION.cff`, `codemeta.json` describe the **GitHub/PyPI package** (the one-repo/one-package side). - -## Token map - -| Venue | Credential | Env var | Status | -|---|---|---|---| -| GitHub | SSH key | — | ✅ ready | -| Zenodo | token `deposit:write` | `ZENODO_TOKEN` | ✅ ready | -| OSF | token `osf.full_write` | `OSF_TOKEN` | ✅ ready | -| Figshare | personal token | `FIGSHARE_TOKEN` | ✅ ready | -| Internet Archive | `ia configure` (S3 keys) | — | ✅ ready | -| Harvard Dataverse | API token (115-paper/books token) | `DATAVERSE_TOKEN` + `DATAVERSE_CONTACT_EMAIL` | ⏳ token needed | -| PyPI | API token | `TWINE_PASSWORD` (`TWINE_USERNAME=__token__`) | ⏳ fast-follow | -| Hugging Face | write token | `HF_TOKEN` | ⏳ fast-follow | - -## Preflight (once) - -```bash -cd "/Users/pford/Desktop/Kronos Fusion Energy/04 - IT INFRASTRUCTURE/07 - IT Infrastructure & Code Repos/Code Repos (live)/kronos-ml" -PY=~/kronos-hpc-build/ml311_venv/bin/python -$PY -m pytest tests/ -q # expect 9 passed -$PY publish/_percode.py # (re)builds publish/records// for all 26 (resume-safe) -``` - -> ⚠ **numpy pin:** this venv must keep **numpy<2** (torch 2.2.2 needs it; numpy 2.x breaks KORE). If a -> tool ever pulls numpy 2.x back in, run `$PY -m pip install "numpy==1.26.4"` before benchmarking. - ---- - -## 1) GitHub — ONE repo (git@github.com:KronosFE/kronos-ml.git) - -```bash -git init -b main -git add . -git commit -m "KODEX v0.1.0 — Kronos Family of Codes (26 BUILT surrogates)" -git tag -a v0.1.0 -m "KODEX v0.1.0" -# create the repo PRIVATE on GitHub, then: -git remote add origin git@github.com:KronosFE/kronos-ml.git -git push -u origin main --tags -# → review; when ready, make public + draft a Release from tag v0.1.0. -# Do NOT enable the GitHub↔Zenodo webhook (we deposit Zenodo per-code below). -``` - -## 2) Zenodo — 26 per-code records - -```bash -export ZENODO_TOKEN=... # rehearse first: export ZENODO_BASE=https://sandbox.zenodo.org -$PY publish/zenodo_draft.py # creates 26 DRAFTS (resume-safe), nothing public -$PY publish/zenodo_publish_all.py # DRY RUN — lists the 26 drafts -$PY publish/zenodo_publish_all.py --yes # ← your one authorization: publishes all 26, mints DOIs -``` - -## 3) OSF — 26 private projects → public - -```bash -export OSF_TOKEN=... -$PY publish/osf_draft.py # 26 PRIVATE projects -$PY publish/osf_publish_all.py # DRY RUN -$PY publish/osf_publish_all.py --yes # ← make all 26 public -``` - -## 4) Figshare — 26 draft articles → published - -```bash -export FIGSHARE_TOKEN=... -$PY publish/figshare_draft.py # 26 DRAFT articles (DOIs reserved, not published) -$PY publish/figshare_publish_all.py # DRY RUN -$PY publish/figshare_publish_all.py --yes -``` - -## 5) Harvard Dataverse — 26 datasets (published by CURATORS, not by --yes) - -STATUS 2026-09-10: the 26 drafts are created; **25 were submitted for Harvard curator review** -(`review:true` in state) and publish when a Harvard **curator approves** — NOT via a depositor -`--yes`. `dataverse_publish_all.py` now refuses to `:publish` review-queued datasets (a direct -publish on an In-Review dataset errors), so `--yes` is a no-op for the 25. Two open items before -curators approve (the published version is immutable): - -1. **KLAW** (`doi:10.7910/DVN/ANAFXK`) was NOT submitted for review — submit it so it isn't stranded: - ```bash - export DATAVERSE_TOKEN=... - curl -H "X-Dataverse-key:$DATAVERSE_TOKEN" -X POST \ - "https://dataverse.harvard.edu/api/datasets/:persistentId/submitForReview?persistentId=doi:10.7910/DVN/ANAFXK" - # then set "review": true for KLAW in publish/state/dataverse_drafts.json - ``` -2. **License field**: the drafts carry no dataset-level license, so Harvard will publish them as - **CC0** unless Apache-2.0 is set. Check + set before approval: - ```bash - curl -s -H "X-Dataverse-key:$DATAVERSE_TOKEN" https://dataverse.harvard.edu/api/licenses | grep -i apache - # if Apache-2.0 is installed, set it on each draft version (API) before curator approval; - # otherwise the Apache-2.0 statement in the description + bundled LICENSE stand, and you accept CC0. - ``` -(Re-running `dataverse_draft.py` is safe — it skips the 26 already-created datasets.) - -## 6) Internet Archive — 26 items (public on upload; one step) - -```bash -ia configure # once, with your IA S3 keys -$PY publish/ia_upload_all.py # DRY RUN — lists the 26 item identifiers -$PY publish/ia_upload_all.py --yes # ← uploads 26 items (PUBLIC immediately) -``` - ---- - -## Fast-follow (when the tokens land) - -### PyPI — ONE package -```bash -$PY -m build -export TWINE_USERNAME=__token__ TWINE_PASSWORD=pypi-... -$PY -m twine upload --repository testpypi dist/* # rehearse first -$PY -m twine upload dist/* -``` - -### Hugging Face — per-code model repos (or one) -```bash -export HF_TOKEN=... -$PY -m pip install -q huggingface_hub -# one suite repo: -huggingface-cli upload KronosFE/kronos-ml . . --repo-type=model --token "$HF_TOKEN" -# (per-code repos KronosFE/kodex- can be scripted the same way if preferred) -``` - ---- - -## Rollback (discard drafts — nothing was public) -- **Zenodo / Figshare / Dataverse:** delete the unpublished drafts in each UI (or via each API). -- **OSF:** projects are private until `--yes`; delete in the UI. -- **GitHub:** repo stays private until you flip it. -- **Internet Archive:** items are public on upload — only run `--yes` when you're sure; ask IA support to - dark an item if needed. -- Re-running any `*_draft.py` is safe: it skips codes already in `publish/state/_drafts.json`. - -## Provenance recorded in every record -code → real benchmark (`benchmark.json`) → on-disk data/method → Kronos corpus DOI → `/kodex/` page. -Honest cards intact: μ=400 representative-mass (CGYRO codes); validated null result (quantum codes); -KWARD heuristic labels + independent-precursor AUC 0.975 (n=1 Mirnov + P_rad only); KECON financial firewall. diff --git a/publish/_deposit_common.py b/publish/_deposit_common.py deleted file mode 100644 index 003c20084431b62212790a0755d8607a7d6907ed..0000000000000000000000000000000000000000 --- a/publish/_deposit_common.py +++ /dev/null @@ -1,68 +0,0 @@ -"""Shared helpers for the KODEX draft-first deposits. - -Builds a clean release archive and defines the attach list + metadata. Imported by -zenodo_draft.py / osf_draft.py / figshare_draft.py. NONE of those scripts ever call -a venue's publish/complete endpoint — they create a DRAFT and upload files, then -print the draft URL for the founder to review and publish herself. -""" -from __future__ import annotations -import json, os, zipfile -from pathlib import Path - -REPO = Path(__file__).resolve().parent.parent -PUB = REPO / "publish" -VERSION = json.load(open(PUB / "_scaffolding_summary.json"))["version"] -ARCHIVE = PUB / f"kronos-ml-v{VERSION}-source.zip" - -# individual human-readable artifacts attached alongside the source archive -DOCS = ["README.md", "FAMILY.md", "CODES.md", "BENCHMARKS.md", "benchmarks/benchmarks.json", - "demo.ipynb", "CITATION.cff", "LICENSE", "codemeta.json", ".zenodo.json", - "publish/PROVENANCE.md", "publish/MANIFEST.sha256"] - -_SKIP_DIRS = {"__pycache__", ".git", ".ipynb_checkpoints", ".pytest_cache", "dist"} -_SKIP_SUFFIX = {".pyc", ".pyo"} - - -def build_archive() -> Path: - """Zip the whole package (source + tests + docs + manifest), minus cruft.""" - with zipfile.ZipFile(ARCHIVE, "w", zipfile.ZIP_DEFLATED) as z: - for root, dirs, files in os.walk(REPO): - dirs[:] = [d for d in dirs if d not in _SKIP_DIRS] - for fn in files: - p = Path(root) / fn - if p.suffix in _SKIP_SUFFIX or p == ARCHIVE: - continue - if p.name.endswith(".parquet"): - continue - z.write(p, p.relative_to(REPO)) - return ARCHIVE - - -def attach_paths() -> list[Path]: - """Full attach set: the source archive + the individual docs f7 asked for.""" - out = [build_archive()] - for rel in DOCS: - p = REPO / rel - if p.exists(): - out.append(p) - return out - - -def zenodo_metadata() -> dict: - return json.load(open(REPO / ".zenodo.json")) - - -def require_env(var: str) -> str: - v = os.environ.get(var) - if not v: - raise SystemExit(f"[STOP] environment variable {var} is not set. " - f"Export your token first (see PUBLISH_RUNBOOK.md).") - return v - - -if __name__ == "__main__": - paths = attach_paths() - print(f"archive: {ARCHIVE.name}") - print(f"attach set ({len(paths)} files):") - for p in paths: - print(f" {p.relative_to(REPO)} ({p.stat().st_size:,} B)") diff --git a/publish/_percode.py b/publish/_percode.py deleted file mode 100644 index 090221f7ddb94d9cfdfabd536ac79fbee5c2e56e..0000000000000000000000000000000000000000 --- a/publish/_percode.py +++ /dev/null @@ -1,256 +0,0 @@ -"""Per-code deposit engine for KODEX (26 BUILT codes -> 26 records per data venue). - -Generates publish/records// (metadata + per-code attach set) and provides the -shared helpers the venue scripts use to loop. State (created draft ids/DOIs) is written -to publish/state/_drafts.json so a run can resume and the batch-publish step -knows exactly what to act on. - -DRAFT-FIRST: nothing here publishes. The *_draft.py scripts create drafts; the separate -*_publish_all.py scripts publish only drafts listed in the state file, only with --yes. -""" -from __future__ import annotations -import hashlib, html, inspect, json, os, random, re, shutil, sys, time -from datetime import date -from pathlib import Path - -_RETRY_CODES = {403, 408, 425, 429, 500, 502, 503, 504} - - -def http_retry(fn, *, tries=6, base=0.8, label=""): - """Call fn() -> requests.Response; retry transient/rate-limit codes with expo backoff. - Returns the final Response (caller still checks .ok / raises). 2xx returns immediately.""" - r = None - for i in range(tries): - r = fn() - if 200 <= r.status_code < 300 or r.status_code not in _RETRY_CODES or i == tries - 1: - return r - wait = base * (2 ** i) + random.random() * 0.4 - sys.stderr.write(f" [retry] {label} {r.status_code}; sleep {wait:.1f}s ({i+1}/{tries})\n") - time.sleep(wait) - return r - -REPO = Path(__file__).resolve().parent.parent -PUB = REPO / "publish" -REC_ROOT = PUB / "records" -STATE_ROOT = PUB / "state" -sys.path.insert(0, str(REPO)); sys.path.insert(0, str(REPO.parent / "kronos-toolkit")) -os.environ.setdefault("PYTHONWARNINGS", "ignore") -import warnings; warnings.filterwarnings("ignore") -import kronos_ml as K - -TODAY = date.today().isoformat() -VERSION = K.__version__ -ORCID = "0000-0003-0395-1752" -AFFIL = "Kronos Fusion Energy" -KODEX = "https://kronosfusionenergy.com/kodex" -REPO_URL = "https://github.com/KronosFE/kronos-ml" -TOOLKIT_URL = "https://github.com/KronosFE/kronos-toolkit" -LICENSE = "Apache-2.0" - -DOI_REGISTER = "10.5281/zenodo.22645689" -DOI_CGYRO = "10.5281/zenodo.22136279" -DOI_AIQ = "10.5281/zenodo.21842371" - -KEYWORDS_BASE = ["fusion energy", "spherical tokamak", "D-3He", "AI/ML surrogate model", - "uncertainty quantification", "digital twin", "Kronos Fusion Energy"] - - -def built(): - """The codes a publish run acts on: every BUILT code, unless KODEX_PUBLISH_ONLY - restricts it to an explicit allow-list (comma/space-separated code names). - - The allow-list is how an operator deposits a deliberate SUBSET (e.g. only the - v0.2.0 additions) without touching the rest of the fleet — it does NOT change any - code's real status, so the package stays honest. Unset = all BUILT (default). A - named code that is not currently BUILT is a hard error, so a typo can never - silently narrow (or widen) the set. - """ - names = sorted(n for n in K.list_surrogates() if K.get(n).status == "BUILT") - only = os.environ.get("KODEX_PUBLISH_ONLY", "").strip() - if only: - want = {c.strip().upper() for c in re.split(r"[,\s]+", only) if c.strip()} - unknown = want - set(names) - if unknown: - raise SystemExit(f"[STOP] KODEX_PUBLISH_ONLY names not in the BUILT set: " - f"{sorted(unknown)} (BUILT: {names})") - names = [n for n in names if n in want] - sys.stderr.write(f"[scope] KODEX_PUBLISH_ONLY -> {len(names)} codes: {names}\n") - return names - - -def physics_source(s): - """(relation, identifier, note) list tracing a code to its real physics source.""" - p = (s.provenance or "").upper() - if "CGYRO" in p: - return [("isDerivedFrom", DOI_CGYRO, "CGYRO A1e nonlinear-kinetic turbulence map (mu=400)")] - if p == "REAL-ANCHOR": - return [("isDerivedFrom", "https://mastapp.site", "FAIR-MAST real-device data (UKAEA)")] - if s.name in ("KQUBIT", "KQROSS", "KSENSE", "KTENSOR"): - return [("isDerivedFrom", DOI_AIQ, "Kronos AI + Quantum deposit")] - if s.name in ("KBREED", "KFLUX"): - return [("references", DOI_REGISTER, "De-Risking Register neutronics gates")] - if s.name == "KISO": - return [("isDerivedFrom", "https://www-nds.iaea.org/fendl/", "FENDL-3.2 activation data (IAEA)"), - ("references", DOI_REGISTER, "De-Risking Register")] - return [("references", DOI_AIQ, "Kronos AI + Quantum corpus")] - - -def _headline(name, b): - try: - from benchmarks.run_all import _headline as hl - return hl(name, b) - except Exception: - return (b or {}).get("note", "") - - -def record_meta(name, b=None): - s = K.get(name); kn = name.lower() - if b is None: - b = s.benchmark() - page = f"{KODEX}/{kn}" - src = physics_source(s) - related = [{"relation": "isDocumentedBy", "identifier": page, "resource_type": "publication-other"}, - {"relation": "isPartOf", "identifier": KODEX, "resource_type": "publication-other"}, - {"relation": "isSupplementTo", "identifier": REPO_URL, "resource_type": "software"}, - {"relation": "references", "identifier": DOI_REGISTER, "resource_type": "publication"}, - {"relation": "isCompiledBy", "identifier": TOOLKIT_URL, "resource_type": "software"}] - for rel, ident, _ in src: - rtype = "dataset" if ident.startswith("10.") or "mast" in ident or "fendl" in ident else "other" - related.append({"relation": rel, "identifier": ident, "resource_type": rtype}) - # dedupe by (relation, identifier), keeping first (e.g. register DOI appended by both - # the base list and physics_source for KBREED/KFLUX/KISO) - _seen, _ded = set(), [] - for r in related: - k = (r["relation"], r["identifier"]) - if k not in _seen: - _seen.add(k); _ded.append(r) - related = _ded - desc = (f"

KODEX — {name} ({s.function}). {(s.note or '').strip()}

" - f"

Benchmark: {_headline(name, b)}

" - f"

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion " - f"surrogate suite with calibrated uncertainty and an abstention gate " - f"(predict(x) → (y, uncertainty, in_domain)). Provenance: " - f"{'; '.join(f'{r} {i}' for r, i, _ in src)}. Home: {page} · " - f"suite: {REPO_URL}. Licensed under Apache-2.0. " - f"Honest card preserved verbatim.

") - # plaintext variant for venues whose description field does NOT render HTML (OSF) - desc_plain = html.unescape(re.sub(r"<[^>]+>", "", desc)).strip() - return { - "kname": name, "page": page, - "title": f"KODEX — {name}: {s.function}", - "version": VERSION, "publication_date": TODAY, "language": "eng", - "upload_type": "software", - "creators": [{"name": "Ford, P. I.", "orcid": ORCID, "affiliation": AFFIL}], - "license": {"id": LICENSE}, - "keywords": KEYWORDS_BASE + [s.function, f"KODEX:{name}"], - "related_identifiers": related, - "description": desc, - "description_plain": desc_plain, - "notes": (f"Draft-first per-code deposit. Full package: {REPO_URL}. " - f"Provenance chain in card.md + MANIFEST.sha256."), - } - - -def _sha(p): - h = hashlib.sha256() - with open(p, "rb") as f: - for c in iter(lambda: f.read(1 << 16), b""): - h.update(c) - return h.hexdigest() - - -def build_records(): - REC_ROOT.mkdir(parents=True, exist_ok=True) - STATE_ROOT.mkdir(parents=True, exist_ok=True) - names = built() - for name in names: - d = REC_ROOT / name.lower() - if (d / "metadata.json").exists() and (d / "MANIFEST.sha256").exists(): - continue # resume: already generated - s = K.get(name); kn = name.lower() - b = s.benchmark() # compute ONCE, reuse - d.mkdir(exist_ok=True) - # 1) source excerpt (the class), readable - try: - src_code = inspect.getsource(type(s)) - except Exception: - src_code = f"# source not extractable for {name}\n" - (d / f"{kn}.py").write_text( - f'"""KODEX {name} — source excerpt (class). Full runnable package: {REPO_URL}"""\n\n' - + src_code) - # 2) benchmark - (d / "benchmark.json").write_text(json.dumps(b, default=str, indent=2) + "\n") - # 3) card - c = s.card() - (d / "card.md").write_text( - f"# KODEX {name} — card\n\n" - + "\n".join(f"- **{k}:** {v}" for k, v in c.items()) + "\n\n" - + f"Benchmark headline: {_headline(name, b)}\n") - # 4) per-code CITATION.cff - (d / "CITATION.cff").write_text("\n".join([ - "cff-version: 1.2.0", - f"title: \"KODEX — {name}: {s.function} (Kronos Family of Codes)\"", - f"version: \"{VERSION}\"", f"date-released: \"{TODAY}\"", - f"license: {LICENSE}", f"url: \"{KODEX}/{kn}\"", - f"repository-code: \"{REPO_URL}\"", "type: software", "authors:", - " - family-names: Ford", " given-names: \"P. I.\"", - f" orcid: \"https://orcid.org/{ORCID}\"", f" affiliation: \"{AFFIL}\"", - ]) + "\n") - # 5) LICENSE - shutil.copyfile(REPO / "LICENSE", d / "LICENSE") - # 6) metadata - (d / "metadata.json").write_text(json.dumps(record_meta(name, b), indent=2) + "\n") - # 7) manifest - files = [p for p in sorted(d.iterdir()) if p.name != "MANIFEST.sha256"] - (d / "MANIFEST.sha256").write_text( - f"# KODEX {name} SHA-256 ({VERSION}, {TODAY})\n" - + "\n".join(f"{_sha(p)} {p.name}" for p in files) + "\n") - (PUB / "_percode_summary.json").write_text(json.dumps( - {"version": VERSION, "date": TODAY, "n_records": len(names), "codes": names}, indent=2) + "\n") - return names - - -def record_dir(kname): - return REC_ROOT / kname.lower() - - -def attach_paths(kname): - d = record_dir(kname) - # metadata.json is included so the uploaded file set exactly equals the set the - # MANIFEST.sha256 hashes (sha256sum -c then verifies clean; -c skips the un-self-listed manifest) - order = [f"{kname.lower()}.py", "benchmark.json", "card.md", - "CITATION.cff", "LICENSE", "metadata.json", "MANIFEST.sha256"] - return [d / f for f in order if (d / f).exists()] - - -def load_meta(kname): - return json.loads((record_dir(kname) / "metadata.json").read_text()) - - -def state_path(venue): - return STATE_ROOT / f"{venue}_drafts.json" - - -def read_state(venue): - p = state_path(venue) - return json.loads(p.read_text()) if p.exists() else {} - - -def write_state(venue, st): - STATE_ROOT.mkdir(parents=True, exist_ok=True) - state_path(venue).write_text(json.dumps(st, indent=2) + "\n") - - -def require_env(var): - v = os.environ.get(var) - if not v: - raise SystemExit(f"[STOP] environment variable {var} is not set (see PUBLISH_RUNBOOK.md).") - return v - - -if __name__ == "__main__": - names = build_records() - print(f"built {len(names)} per-code records under publish/records/:") - for n in names: - ap = attach_paths(n) - print(f" {n.lower():9s} {len(ap)} files, meta title={load_meta(n)['title']!r}") diff --git a/publish/_percode_summary.json b/publish/_percode_summary.json deleted file mode 100644 index b1ae8583aa2276c77c67cf86056b75676a786b15..0000000000000000000000000000000000000000 --- a/publish/_percode_summary.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "version": "0.2.0", - "date": "2026-09-11", - "n_records": 35, - "codes": [ - "KAIROS", - "KBENCH", - "KBREED", - "KBURN", - "KDRIVE", - "KDYN", - "KECON", - "KEDGE", - "KEYE", - "KFLOW", - "KFLUX", - "KFORGE", - "KFUEL", - "KFUSE", - "KGATE", - "KGEN", - "KHALO", - "KHEAT", - "KISO", - "KLAW", - "KMAT", - "KOIL", - "KORE", - "KPATH", - "KPILOT", - "KQERN", - "KQOPT", - "KQROSS", - "KQUBIT", - "KRAD", - "KSEEK", - "KSENSE", - "KTENSOR", - "KWARD", - "KYRO" - ] -} diff --git a/publish/_scaffolding_summary.json b/publish/_scaffolding_summary.json deleted file mode 100644 index e7b7f336bded3756850a27cee254e4a6d537b1b3..0000000000000000000000000000000000000000 --- a/publish/_scaffolding_summary.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "version": "0.1.0", - "date": "2026-09-10", - "built": [ - "KAIROS", - "KBREED", - "KBURN", - "KDRIVE", - "KECON", - "KEYE", - "KFLOW", - "KFLUX", - "KFORGE", - "KFUEL", - "KFUSE", - "KGATE", - "KGEN", - "KHALO", - "KISO", - "KLAW", - "KMAT", - "KOIL", - "KORE", - "KPATH", - "KPILOT", - "KQROSS", - "KQUBIT", - "KSENSE", - "KWARD", - "KYRO" - ], - "n_built": 26, - "held": [ - "KEDGE", - "KHEAT", - "KRAD", - "KTENSOR" - ], - "n_files_hashed": 39 -} diff --git a/publish/dataverse_draft.py b/publish/dataverse_draft.py deleted file mode 100644 index d52cced4a841d85a9e2cd7e81b3ec4c1d8e1f606..0000000000000000000000000000000000000000 --- a/publish/dataverse_draft.py +++ /dev/null @@ -1,105 +0,0 @@ -#!/usr/bin/env python -"""Create 26 DRAFT Harvard Dataverse datasets (one per BUILT KODEX code) in the -kronos-fusion-energy collection. - -DRAFT-FIRST: Dataverse datasets are created UNPUBLISHED. Never calls the publish -action. Resume-safe via publish/state/dataverse_drafts.json (pid recorded the moment -the dataset is created). Prints the API error body on failure so a 400 names its field. -After review, run dataverse_publish_all.py --yes. - - export DATAVERSE_TOKEN=... - export DATAVERSE_CONTACT_EMAIL=... # shown PUBLICLY — use a public-safe address - # optional: DATAVERSE_COLLECTION=kronos-fusion-energy DATAVERSE_BASE=https://dataverse.harvard.edu - python publish/dataverse_draft.py -""" -from __future__ import annotations -import os, sys -import requests -from _percode import built, attach_paths, load_meta, read_state, write_state, require_env, ORCID - -BASE = os.environ.get("DATAVERSE_BASE", "https://dataverse.harvard.edu").rstrip("/") -COLLECTION = os.environ.get("DATAVERSE_COLLECTION", "kronos-fusion-energy") - - -def _prim(name, value, multiple=False, cls="primitive"): - return {"typeName": name, "multiple": multiple, "typeClass": cls, "value": value} - - -def _dataset_json(m, contact_email): - author = {"authorName": _prim("authorName", "Ford, P. I."), - "authorAffiliation": _prim("authorAffiliation", "Kronos Fusion Energy"), - "authorIdentifierScheme": {"typeName": "authorIdentifierScheme", "multiple": False, - "typeClass": "controlledVocabulary", "value": "ORCID"}, - "authorIdentifier": _prim("authorIdentifier", ORCID)} - contact = {"datasetContactName": _prim("datasetContactName", "Ford, P. I."), - "datasetContactAffiliation": _prim("datasetContactAffiliation", "Kronos Fusion Energy"), - "datasetContactEmail": _prim("datasetContactEmail", contact_email)} - desc = {"dsDescriptionValue": _prim("dsDescriptionValue", m["description"])} - kws = [{"keywordValue": _prim("keywordValue", k)} for k in m["keywords"]] - # only well-formed DOI publications (bare-URL entries live in the description instead) - pubs = [] - for r in m["related_identifiers"]: - ident = r["identifier"] - if ident.startswith("10."): - pubs.append({"publicationIDType": {"typeName": "publicationIDType", "multiple": False, - "typeClass": "controlledVocabulary", "value": "doi"}, - "publicationIDNumber": _prim("publicationIDNumber", ident), - "publicationURL": _prim("publicationURL", f"https://doi.org/{ident}")}) - fields = [_prim("title", m["title"]), - _prim("author", [author], True, "compound"), - _prim("datasetContact", [contact], True, "compound"), - _prim("dsDescription", [desc], True, "compound"), - _prim("subject", ["Physics"], True, "controlledVocabulary"), - _prim("keyword", kws, True, "compound")] - if pubs: - fields.append(_prim("publication", pubs, True, "compound")) - # Harvard's license picker has no Apache-2.0, and a license-less dataset defaults to CC0. - # So set Custom Terms of Use = Apache-2.0 text (per f7's live run) to override the CC0 default. - apache_terms = ("Licensed under the Apache License, Version 2.0 " - "(http://www.apache.org/licenses/LICENSE-2.0). The full license text is in the " - "bundled LICENSE file; citation metadata in CITATION.cff.") - return {"datasetVersion": {"termsOfUse": apache_terms, - "metadataBlocks": {"citation": {"fields": fields}}}} - - -def main(): - token = require_env("DATAVERSE_TOKEN") - contact = os.environ.get("DATAVERSE_CONTACT_EMAIL") - if not contact: - raise SystemExit("[STOP] set DATAVERSE_CONTACT_EMAIL (public on the record) first.") - h = {"X-Dataverse-key": token} - s = requests.Session() - state = read_state("dataverse") - names = built() - for i, name in enumerate(names, 1): - rec = state.get(name, {}) - if rec.get("done"): - print(f"[dataverse] ({i}/{len(names)}) {name}: complete (skip)"); continue - m = load_meta(name) - pid = rec.get("pid") - if not pid: - r = s.post(f"{BASE}/api/dataverses/{COLLECTION}/datasets", headers=h, - json=_dataset_json(m, contact)) - if not r.ok: - print(f"[dataverse] {name}: create FAILED {r.status_code}: {r.text[:500]}") - return 1 - pid = r.json()["data"].get("persistentId") - state[name] = {"pid": pid, - "url": f"{BASE}/dataset.xhtml?persistentId={pid}&version=DRAFT"} - write_state("dataverse", state) - for path in attach_paths(name): - with open(path, "rb") as fh: - r = s.post(f"{BASE}/api/datasets/:persistentId/add", headers=h, - params={"persistentId": pid}, files={"file": (path.name, fh)}) - if not r.ok and "duplicate" not in r.text.lower() and "exists" not in r.text.lower(): - print(f"[dataverse] {name}/{path.name}: add FAILED {r.status_code}: {r.text[:300]}") - return 1 - state[name]["done"] = True - write_state("dataverse", state) - print(f"[dataverse] ({i}/{len(names)}) {name}: DRAFT {pid}") - print(f"\n[dataverse] {sum(1 for r in state.values() if r.get('done'))} drafts (NONE published). Then:") - print(" python publish/dataverse_publish_all.py --yes") - - -if __name__ == "__main__": - sys.exit(main()) diff --git a/publish/dataverse_publish_all.py b/publish/dataverse_publish_all.py deleted file mode 100644 index d699f16d808dabc5acb25af7636c242d4a2177a4..0000000000000000000000000000000000000000 --- a/publish/dataverse_publish_all.py +++ /dev/null @@ -1,59 +0,0 @@ -#!/usr/bin/env python -"""Publish the 26 per-code Harvard Dataverse DRAFTS created by dataverse_draft.py. - -IRREVERSIBLE STEP. DRY RUN by default; publishes (major version) only with --yes, -only the datasets recorded in publish/state/dataverse_drafts.json. - - export DATAVERSE_TOKEN=... - python publish/dataverse_publish_all.py # dry run - python publish/dataverse_publish_all.py --yes # publish -""" -from __future__ import annotations -import argparse, os, sys -import requests -from _percode import read_state, write_state, require_env - -BASE = os.environ.get("DATAVERSE_BASE", "https://dataverse.harvard.edu").rstrip("/") - - -def main(): - ap = argparse.ArgumentParser() - ap.add_argument("--yes", action="store_true") - args = ap.parse_args() - state = read_state("dataverse") - # records submitted for Harvard CURATOR review (review:true) are published by the - # curators on approval, NOT by a depositor :publish call (which errors on an In-Review - # dataset). Only ever direct-publish records that are NOT in the review queue. - in_review = {n: r for n, r in state.items() if r.get("review") and not r.get("published")} - pending = {n: r for n, r in state.items() - if r.get("pid") and not r.get("published") and not r.get("review")} - if in_review: - print(f"[dataverse] {len(in_review)} dataset(s) are in Harvard curator review — " - f"published on curator APPROVAL, not here. Skipping: {', '.join(sorted(in_review))}") - if not pending: - print("[dataverse] no directly-publishable drafts (all are curator-review or already " - "published). Nothing to do — await Harvard curators."); return - print(f"[dataverse] {len(pending)} NON-review draft(s) directly publishable on {BASE}:") - for n, r in pending.items(): - print(f" {n:9s} {r['pid']}") - if not args.yes: - print("\n[dataverse] DRY RUN — nothing published. Re-run with --yes.") - return - h = {"X-Dataverse-key": require_env("DATAVERSE_TOKEN")} - s = requests.Session() - ok = 0 - for n, r in pending.items(): - resp = s.post(f"{BASE}/api/datasets/:persistentId/actions/:publish", - headers=h, params={"persistentId": r["pid"], "type": "major"}) - if not resp.ok: # don't let one failure abort the batch - print(f"[dataverse] {n}: publish FAILED {resp.status_code}: {resp.text[:200]}") - continue - r["published"] = True - write_state("dataverse", state) - ok += 1 - print(f"[dataverse] PUBLISHED {n}: {r['pid']}") - print(f"\n[dataverse] published {ok}/{len(pending)} non-review records.") - - -if __name__ == "__main__": - sys.exit(main()) diff --git a/publish/figshare_draft.py b/publish/figshare_draft.py deleted file mode 100644 index 17c0b5d74054eacab21891bba4629fd1c014ef2e..0000000000000000000000000000000000000000 --- a/publish/figshare_draft.py +++ /dev/null @@ -1,119 +0,0 @@ -#!/usr/bin/env python -"""Create 26 DRAFT Figshare articles (one per BUILT KODEX code). - -DRAFT-FIRST: never calls /publish. Creates private articles, reserves DOIs (a -reservation is not a publication), uploads each code's attach set via the multipart -flow. Resume-safe via publish/state/figshare_drafts.json (article id recorded the -moment it is created, so a mid-upload failure never orphans it). After review, run -figshare_publish_all.py --yes. - - export FIGSHARE_TOKEN=... - python publish/figshare_draft.py -""" -from __future__ import annotations -import hashlib, sys -import requests -from _percode import built, attach_paths, load_meta, read_state, write_state, require_env - -API = "https://api.figshare.com/v2" - - -def _md5(path): - h = hashlib.md5() - with open(path, "rb") as f: - for c in iter(lambda: f.read(1 << 16), b""): - h.update(c) - return h.hexdigest() - - -def _refs(meta): - """Figshare 'references' must be valid URLs — DOIs -> https://doi.org/..., keep only - http(s), dedupe, preserve order.""" - out, seen = [], set() - for r in meta["related_identifiers"]: - ident = r["identifier"].strip() - url = f"https://doi.org/{ident}" if ident.startswith("10.") else ident - if url.startswith("http") and url not in seen: - seen.add(url); out.append(url) - return out - - -def _tags(meta): - """Figshare tags: each >= 3 chars; keep it modest.""" - out, seen = [], set() - for k in meta["keywords"]: - k = k.strip() - if len(k) >= 3 and k.lower() not in seen: - seen.add(k.lower()); out.append(k) - return out[:10] - - -def _existing_files(s, h, article_id): - try: - r = s.get(f"{API}/account/articles/{article_id}/files", headers=h) - return {f["name"] for f in r.json()} if r.ok else set() - except Exception: - return set() - - -def _upload(s, h, article_id, path): - size = path.stat().st_size - r = s.post(f"{API}/account/articles/{article_id}/files", headers=h, - json={"name": path.name, "md5": _md5(path), "size": size}); r.raise_for_status() - file_url = r.json()["location"] - info = s.get(file_url, headers=h).json() - up = s.get(info["upload_url"], headers=h).json() - with open(path, "rb") as fh: - for part in up["parts"]: - fh.seek(part["startOffset"]) - chunk = fh.read(part["endOffset"] - part["startOffset"] + 1) - s.put(f"{info['upload_url']}/{part['partNo']}", headers=h, data=chunk).raise_for_status() - s.post(file_url, headers=h).raise_for_status() - - -def main(): - token = require_env("FIGSHARE_TOKEN") - h = {"Authorization": f"token {token}"} - s = requests.Session() - state = read_state("figshare") - names = built() - for i, name in enumerate(names, 1): - rec = state.get(name, {}) - if rec.get("done"): - print(f"[figshare] ({i}/{len(names)}) {name}: complete (skip)"); continue - m = load_meta(name) - aid = rec.get("id") - if not aid: - body = {"title": m["title"], "description": m["description"], - "defined_type": "software", "tags": _tags(m), "references": _refs(m), - # explicit author (ORCID is linked via the uploading Figshare account) - "authors": [{"name": "Ford, P. I."}], - # LEAF categories only — parent 29152 is not assignable (per f7's live run) - "categories": [30202, 29173, 26836]} - r = s.post(f"{API}/account/articles", headers=h, json=body) - if not r.ok: - print(f"[figshare] {name}: create FAILED {r.status_code}: {r.text[:400]}") - print(f" body.tags={body['tags']}") - print(f" body.references={body['references']}") - return 1 - aid = int(r.json()["location"].rstrip("/").split("/")[-1]) - state[name] = {"id": aid, "url": f"https://figshare.com/account/articles/{aid}"} - write_state("figshare", state) - try: - s.post(f"{API}/account/articles/{aid}/reserve_doi", headers=h).raise_for_status() - except Exception: - pass - have = _existing_files(s, h, aid) - for path in attach_paths(name): - if path.name in have: - continue # already uploaded (resumed) -> idempotent - _upload(s, h, aid, path) - state[name]["done"] = True - write_state("figshare", state) - print(f"[figshare] ({i}/{len(names)}) {name}: DRAFT {aid}") - print(f"\n[figshare] {sum(1 for r in state.values() if r.get('done'))} drafts (NONE published). Then:") - print(" python publish/figshare_publish_all.py --yes") - - -if __name__ == "__main__": - sys.exit(main()) diff --git a/publish/figshare_publish_all.py b/publish/figshare_publish_all.py deleted file mode 100644 index 4161215811f2efe1a756132528c036c4873a1336..0000000000000000000000000000000000000000 --- a/publish/figshare_publish_all.py +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env python -"""Publish the 26 per-code Figshare DRAFTS created by figshare_draft.py. - -IRREVERSIBLE STEP. DRY RUN by default; publishes only with --yes, only the articles -recorded in publish/state/figshare_drafts.json. - - export FIGSHARE_TOKEN=... - python publish/figshare_publish_all.py # dry run - python publish/figshare_publish_all.py --yes # publish -""" -from __future__ import annotations -import argparse, sys -import requests -from _percode import read_state, write_state, require_env - -API = "https://api.figshare.com/v2" - - -def main(): - ap = argparse.ArgumentParser() - ap.add_argument("--yes", action="store_true") - args = ap.parse_args() - state = read_state("figshare") - pending = {n: r for n, r in state.items() if r.get("id") and not r.get("published")} - if not pending: - print("[figshare] no unpublished drafts in state (run figshare_draft.py first)."); return - print(f"[figshare] {len(pending)} draft(s) to publish:") - for n, r in pending.items(): - print(f" {n:9s} id={r['id']}") - if not args.yes: - print("\n[figshare] DRY RUN — nothing published. Re-run with --yes.") - return - h = {"Authorization": f"token {require_env('FIGSHARE_TOKEN')}"} - s = requests.Session() - for n, r in pending.items(): - resp = s.post(f"{API}/account/articles/{r['id']}/publish", headers=h) - resp.raise_for_status() - loc = resp.json().get("location", "") - r["published"] = True - r["public_url"] = loc - write_state("figshare", state) - print(f"[figshare] PUBLISHED {n}: {loc}") - print(f"\n[figshare] published {len(pending)} records.") - - -if __name__ == "__main__": - sys.exit(main()) diff --git a/publish/ia_upload_all.py b/publish/ia_upload_all.py deleted file mode 100644 index 724a0cf8e87d3ace8e9df8f562b7c6b6f754ce34..0000000000000000000000000000000000000000 --- a/publish/ia_upload_all.py +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env python -"""Upload the 26 per-code KODEX records to the Internet Archive (one item per code). - -NOTE: Internet Archive items become PUBLIC on upload — there is no private-draft state — -so this IS the publish step for IA. DRY RUN by default; uploads only with --yes. -Requires the `ia` CLI configured (`ia configure` with your S3 keys) once. - - python publish/ia_upload_all.py # dry run (lists items + files) - python publish/ia_upload_all.py --yes # upload (public) -""" -from __future__ import annotations -import argparse, subprocess, sys -from _percode import built, attach_paths, load_meta, VERSION - - -def main(): - ap = argparse.ArgumentParser() - ap.add_argument("--yes", action="store_true") - args = ap.parse_args() - names = built() - print(f"[ia] {len(names)} items to upload (identifier = kronos-ml-kodex--v{VERSION}):") - plans = [] - for name in names: - m = load_meta(name) - ident = f"kronos-ml-kodex-{name.lower()}-v{VERSION}" - files = [str(p) for p in attach_paths(name)] - plans.append((ident, m, files)) - print(f" {ident} ({len(files)} files)") - if not args.yes: - print("\n[ia] DRY RUN — nothing uploaded. Re-run with --yes (items go PUBLIC on upload).") - return - for ident, m, files in plans: - cmd = ["ia", "upload", ident, *files, - f"--metadata=title:{m['title']}", - "--metadata=creator:Ford, P. I.", - "--metadata=licenseurl:https://spdx.org/licenses/Apache-2.0", - f"--metadata=external-identifier:{m['page']}", - "--metadata=subject:fusion; spherical tokamak; AI/ML surrogate; Kronos Fusion Energy"] - r = subprocess.run(cmd) - if r.returncode != 0: - print(f"[ia] FAILED {ident} (rc={r.returncode})"); return r.returncode - print(f"[ia] uploaded https://archive.org/details/{ident}") - print(f"\n[ia] uploaded {len(plans)} items.") - - -if __name__ == "__main__": - sys.exit(main()) diff --git a/publish/kronos-ml-v0.1.0-source.zip b/publish/kronos-ml-v0.1.0-source.zip deleted file mode 100644 index 873f044f1a318ba8854fee25bde114e60c710bc4..0000000000000000000000000000000000000000 --- a/publish/kronos-ml-v0.1.0-source.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cc14cfb661fae0b28ebb757796c563cf9517ee3bf444e97d314cd377b4b94b21 -size 652545 diff --git a/publish/osf_draft.py b/publish/osf_draft.py deleted file mode 100644 index 0b14bc543d5b56036adfa2890026e14e285da1d5..0000000000000000000000000000000000000000 --- a/publish/osf_draft.py +++ /dev/null @@ -1,71 +0,0 @@ -#!/usr/bin/env python -"""Create 26 PRIVATE OSF projects (one per BUILT KODEX code). - -DRAFT-FIRST: each project is created private (public=false) and never made public here. -Resume-safe via publish/state/osf_drafts.json. Throttled + retried against OSF's -rate-limiting (403/429). After review, run osf_publish_all.py --yes. - - export OSF_TOKEN=... - python publish/osf_draft.py -""" -from __future__ import annotations -import sys, time -import requests -from _percode import (built, attach_paths, load_meta, read_state, write_state, - require_env, http_retry) - -API = "https://api.osf.io/v2" -WB = "https://files.osf.io/v1" -PACE_FILE = 0.6 # seconds between file uploads -PACE_PROJECT = 1.2 # seconds between projects - - -def main(): - token = require_env("OSF_TOKEN") - h = {"Authorization": f"Bearer {token}"} - hj = {**h, "Content-Type": "application/vnd.api+json"} - s = requests.Session() - state = read_state("osf") - names = built() - for i, name in enumerate(names, 1): - rec = state.get(name, {}) - node = rec.get("id") - if rec.get("done"): - print(f"[osf] ({i}/{len(names)}) {name}: complete (skip)"); continue - m = load_meta(name) - if not node: # create the project (retry rate-limits) - payload = {"data": {"type": "nodes", "attributes": { - "title": m["title"], "category": "software", - # OSF renders the description as PLAIN TEXT (no HTML) -> use the stripped variant - "description": m.get("description_plain", m["description"]), - "public": False, "tags": m["keywords"][:25]}}} - r = http_retry(lambda: s.post(f"{API}/nodes/", headers=hj, json=payload), - label=f"osf-create {name}") - if not r.ok: - print(f"[osf] {name}: create FAILED {r.status_code}: {r.text[:300]}"); return 1 - node = r.json()["data"]["id"] - state[name] = {"id": node, "url": f"https://osf.io/{node}/"} - write_state("osf", state) - time.sleep(PACE_PROJECT) - # upload files (throttled; 409 = already there = fine) - for path in attach_paths(name): - def _put(): - with open(path, "rb") as fh: - return s.put(f"{WB}/resources/{node}/providers/osfstorage/", headers=h, - params={"kind": "file", "name": path.name}, data=fh) - r = http_retry(_put, label=f"osf-upload {name}/{path.name}") - if r.status_code == 409: - pass # file already exists (resumed) -> treat as done - elif not r.ok: - print(f"[osf] {name}/{path.name}: upload FAILED {r.status_code}: {r.text[:200]}") - return 1 - time.sleep(PACE_FILE) - state[name]["done"] = True - write_state("osf", state) - print(f"[osf] ({i}/{len(names)}) {name}: PRIVATE {node} ({len(attach_paths(name))} files)") - print(f"\n[osf] {sum(1 for r in state.values() if r.get('done'))} private projects (NONE public). Then:") - print(" python publish/osf_publish_all.py --yes") - - -if __name__ == "__main__": - sys.exit(main()) diff --git a/publish/osf_publish_all.py b/publish/osf_publish_all.py deleted file mode 100644 index c49657ec0fafde6ad9a8cd8e4ca8e840a62f3737..0000000000000000000000000000000000000000 --- a/publish/osf_publish_all.py +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env python -"""Make the 26 per-code OSF projects PUBLIC (created private by osf_draft.py). - -IRREVERSIBLE STEP. DRY RUN by default; flips projects to public only with --yes, -and only those recorded in publish/state/osf_drafts.json. - - export OSF_TOKEN=... - python publish/osf_publish_all.py # dry run - python publish/osf_publish_all.py --yes # make public -""" -from __future__ import annotations -import argparse, sys -import requests -from _percode import read_state, write_state, require_env - -API = "https://api.osf.io/v2" - - -def main(): - ap = argparse.ArgumentParser() - ap.add_argument("--yes", action="store_true") - args = ap.parse_args() - state = read_state("osf") - pending = {n: r for n, r in state.items() if r.get("id") and not r.get("public")} - if not pending: - print("[osf] no private projects in state (run osf_draft.py first)."); return - print(f"[osf] {len(pending)} project(s) to make public:") - for n, r in pending.items(): - print(f" {n:9s} {r.get('url','')}") - if not args.yes: - print("\n[osf] DRY RUN — nothing made public. Re-run with --yes.") - return - hj = {"Authorization": f"Bearer {require_env('OSF_TOKEN')}", - "Content-Type": "application/vnd.api+json"} - s = requests.Session() - for n, r in pending.items(): - payload = {"data": {"type": "nodes", "id": r["id"], "attributes": {"public": True}}} - resp = s.patch(f"{API}/nodes/{r['id']}/", headers=hj, json=payload) - resp.raise_for_status() - r["public"] = True - write_state("osf", state) - print(f"[osf] PUBLIC {n}: {r.get('url')}") - print(f"\n[osf] made {len(pending)} projects public.") - - -if __name__ == "__main__": - sys.exit(main()) diff --git a/publish/records/kairos/CITATION.cff b/publish/records/kairos/CITATION.cff deleted file mode 100644 index 501cd624a334ebd289fb83b29a98285292018c0c..0000000000000000000000000000000000000000 --- a/publish/records/kairos/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KAIROS: CONTROL (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/kairos" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/kairos/LICENSE b/publish/records/kairos/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/kairos/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/kairos/MANIFEST.sha256 b/publish/records/kairos/MANIFEST.sha256 deleted file mode 100644 index 65cac222023790a51e2b676c48c8d7cf1019a513..0000000000000000000000000000000000000000 --- a/publish/records/kairos/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KAIROS SHA-256 (0.2.0, 2026-09-11) -d334149c67e6fab06da1157e5cd47129d2bf4e738754afeb20176b6bacb89d54 CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -4519abc8cba84d5ba68e5e0cc5faef0dac4094a970a6a4a39f993abcfc4931be benchmark.json -f99514c0fb9ad18571bfafcdd8579f51323285a65c66f90140d91cb781a58243 card.md -203323e21eb15172090486e0fdde9367a3c13b7e1fb3d66d5b280108b7f15f32 kairos.py -85ff663bac08f45a66d216dbbed1bf62143b7fa0943192c6f6e91f4ca3cf4c47 metadata.json diff --git a/publish/records/kairos/benchmark.json b/publish/records/kairos/benchmark.json deleted file mode 100644 index 02bfb776dd53603d45ed12d641dd5b3b1bf9bedf..0000000000000000000000000000000000000000 --- a/publish/records/kairos/benchmark.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "member": "KAIROS", - "live_tracking_rms_frac": 0.0461, - "live_expB_model_failure": { - "adversaries": [ - "drift", - "edge_seeker", - "nan_garbage" - ], - "steps": 150000, - "escapes": 0, - "catch_rate": 1.0 - }, - "live_mpc_step_us": 96.1, - "sourced": { - "file": "track5_control/clamp_activation_stats.csv", - "headline": "0 escapes / 150k steps / 3000 injected (AC-25); tracking <5%" - } -} diff --git a/publish/records/kairos/card.md b/publish/records/kairos/card.md deleted file mode 100644 index feb7d2625ebec2e53aa74e2ba7e9837c46091aa5..0000000000000000000000000000000000000000 --- a/publish/records/kairos/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KAIROS — card - -- **name:** KAIROS -- **function:** CONTROL -- **status:** BUILT -- **phase:** 1 -- **provenance:** TWIN -- **retired_by:** validated real-time plant controller (device-in-the-loop) -- **gates:** ['AC-24', 'AC-25'] -- **note:** real-time closed-loop MPC control (analytic finite-horizon QP); supplies the model-free L4 clamp that KGATE enforces -- **available:** True - -Benchmark headline: MPC tracking 0.0461 (<5%); Exp-B **0 escapes / 150,000**; 96.1 µs/step diff --git a/publish/records/kairos/kairos.py b/publish/records/kairos/kairos.py deleted file mode 100644 index ebabbcd27384dcf51d0d6626abb5cbb5ed01cd34..0000000000000000000000000000000000000000 --- a/publish/records/kairos/kairos.py +++ /dev/null @@ -1,57 +0,0 @@ -"""KODEX KAIROS — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KAIROS(Surrogate): - name = "KAIROS"; function = "CONTROL"; phase = 1; status = "BUILT" - provenance = "TWIN" - retired_by = "validated real-time plant controller (device-in-the-loop)" - real_codes = ("receding-horizon MPC",) - gates = ("AC-24", "AC-25") - note = ("real-time closed-loop MPC control (analytic finite-horizon QP); " - "supplies the model-free L4 clamp that KGATE enforces") - - def _predict(self, x): - """x = (state6, ref6) -> next command from the MPC, clamped by KGATE.""" - state, ref = x - u = _mpc(state, ref) - safe, ok = get("KGATE").clamp(u) - in_dom = bool(np.allclose(safe, u, atol=1e-6)) - return Prediction(safe, None, in_dom, - note="MPC step, clamped" if not in_dom else "MPC step, in envelope") - - def benchmark(self): - rng = np.random.default_rng(uq.SEED) - clamp = get("KGATE").clamp - # (1) closed-loop tracking: drive from a start state to a setpoint - ref = np.array([2.2, 0.3, 3.0, 1.0, 0.2, 30.0]) - x = np.array([2.0, 0.0, 2.0, 0.5, 0.1, 20.0]) - for _ in range(200): - safe, _ = clamp(_mpc(x, ref)); x = _plant_step(x, safe, rng) - rng_scale = np.array([1, 1, 4.2, 3, 0.4, 47.21]) - track_rms = float(np.sqrt(np.mean(((x - ref) / rng_scale) ** 2))) - # (2) Exp-B: broken controllers emit unsafe commands; clamp must catch all - from .spine import _LO, _HI - adversaries = { - "drift": lambda: _HI * (1 + 0.5 * rng.random(6)), - "edge_seeker": lambda: _HI + 5, - "nan_garbage": lambda: np.where(rng.random(6) < 0.3, np.nan, _HI * 3), - } - escapes = 0; steps = 0 - for _, gen in adversaries.items(): - for _ in range(50_000): - safe, _ = clamp(gen()); steps += 1 - if not (np.all(safe >= _LO - 1e-9) and np.all(safe <= _HI + 1e-9)): - escapes += 1 - # (3) real latency of an MPC step + clamp - t0 = time.perf_counter() - for _ in range(2000): - clamp(_mpc(x, ref)) - us = (time.perf_counter() - t0) / 2000 * 1e6 - return {"member": self.name, - "live_tracking_rms_frac": round(track_rms, 4), - "live_expB_model_failure": {"adversaries": list(adversaries), - "steps": steps, "escapes": escapes, - "catch_rate": 1.0 - escapes / steps}, - "live_mpc_step_us": round(us, 1), - "sourced": {"file": "track5_control/clamp_activation_stats.csv", - "headline": "0 escapes / 150k steps / 3000 injected (AC-25); tracking <5%"}} diff --git a/publish/records/kairos/metadata.json b/publish/records/kairos/metadata.json deleted file mode 100644 index 51cfd176f29953699262e26f580b3aec7eb5a0c5..0000000000000000000000000000000000000000 --- a/publish/records/kairos/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KAIROS", - "page": "https://kronosfusionenergy.com/kodex/kairos", - "title": "KODEX \u2014 KAIROS: CONTROL", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "CONTROL", - "KODEX:KAIROS" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/kairos", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.21842371", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KAIROS (CONTROL). real-time closed-loop MPC control (analytic finite-horizon QP); supplies the model-free L4 clamp that KGATE enforces

Benchmark: MPC tracking 0.0461 (<5%); Exp-B **0 escapes / 150,000**; 96.1 \u00b5s/step

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kairos · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KAIROS (CONTROL). real-time closed-loop MPC control (analytic finite-horizon QP); supplies the model-free L4 clamp that KGATE enforcesBenchmark: MPC tracking 0.0461 (Part of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kairos \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package (all 26 codes): https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/kbench/CITATION.cff b/publish/records/kbench/CITATION.cff deleted file mode 100644 index 975248049f95e6d20e4dd62855d08bdb752cbd55..0000000000000000000000000000000000000000 --- a/publish/records/kbench/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KBENCH: BENCHMARK (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/kbench" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/kbench/LICENSE b/publish/records/kbench/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/kbench/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/kbench/MANIFEST.sha256 b/publish/records/kbench/MANIFEST.sha256 deleted file mode 100644 index d720b4c1587e609cf33f6e8a77eb914776675bc5..0000000000000000000000000000000000000000 --- a/publish/records/kbench/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KBENCH SHA-256 (0.2.0, 2026-09-11) -cecfe7657f26a4b4af96f4257070e8769c4c9266748d8717f4ceeb3fbba00e83 CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -1f532ca6a582bc0e639f3490dc421c799f583766a8639863078d00ff3ef66f75 benchmark.json -65f7c48c499563e291bf9230ac6098dcee186eaf437e97b43b41a640638fa972 card.md -4d0e21b1012d27a9f9a2bb6cccb937530a8efe1ed02b6b9d5cc569ac8ad42c91 kbench.py -e62bf7f72ba3ffda7478ade5c404e054bb0e77d9a42be30352ef1952673934a4 metadata.json diff --git a/publish/records/kbench/benchmark.json b/publish/records/kbench/benchmark.json deleted file mode 100644 index 0071f111c1883d9b9ffde7310a6533e7491dbb5f..0000000000000000000000000000000000000000 --- a/publish/records/kbench/benchmark.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "member": "KBENCH", - "live_benchmark_suite": { - "n_tasks": 3, - "tasks": { - "cgyro-turbulence-flux": { - "inputs": [ - "a_LT", - "shear" - ], - "target": "log10 Q_tot (regression) + turbulent/quiet (classification)", - "n_samples": 16, - "metric": "R2 (regression) / leave-one-out accuracy (classification)", - "loader": "kronos_ml.data.cgyro_flux_map_final()", - "baseline_code": "KYRO", - "baseline_score": "R2 ~0.86, turbulent/quiet 16/16", - "note": "real CGYRO A1e saturated-flux (mu=400 representative)" - }, - "mast-disruption": { - "inputs": "physics features (Ip family + EFIT + n=1 Mirnov / P_rad)", - "target": "disruptive (binary)", - "n_samples": 591, - "metric": "ROC-AUC (+ independent-precursor AUC)", - "loader": "kronos_ml.data.kward_real()", - "baseline_code": "KWARD", - "baseline_score": "AUC ~0.98, independent-precursor 0.975", - "note": "real MAST shots (FAIR-MAST); labels are heuristic Ip-quench" - }, - "cgyro-rom-compressibility": { - "inputs": "flux-database matrix (points x [inputs, fluxes])", - "target": "rel-L2 reconstruction error vs retained bond dimension", - "n_samples": 16, - "metric": "rel-L2 vs rank", - "loader": "kronos_ml.data.cgyro_flux_map_final()", - "baseline_code": "KTENSOR", - "baseline_score": "effective rank 2.93/4 (not strongly low-rank)", - "note": "honest ROM characterization" - } - }, - "how_to_use": "load via each task's loader, use the fixed reproducible split, report the metric, and try to beat the named KODEX baseline_code", - "verdict": "3 open, citable fusion-ML tasks (CGYRO turbulence, MAST disruption, flux ROM) with real on-disk data + reproducible KODEX baselines \u2014 a community leaderboard starting point, not a private result" - }, - "caveat": "small by mainstream-ML standards (CGYRO = 16 pts); honest pilot fusion-ML benchmarks" -} diff --git a/publish/records/kbench/card.md b/publish/records/kbench/card.md deleted file mode 100644 index 8e0262202191905802be278c8dc01fb1093e3e45..0000000000000000000000000000000000000000 --- a/publish/records/kbench/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KBENCH — card - -- **name:** KBENCH -- **function:** BENCHMARK -- **status:** BUILT -- **phase:** 3 -- **provenance:** n/a -- **retired_by:** community-standard fusion-ML benchmarks -- **gates:** [] -- **note:** open, citable ML benchmark suite for fusion — real CGYRO turbulence + MAST disruption tasks with fixed splits, metrics and KODEX baselines to beat. Bring your own model; move the community forward -- **available:** True - -Benchmark headline: open fusion-ML benchmark suite: **3 citable tasks** (CGYRO turbulence, MAST disruption, flux ROM) with real data + KODEX baselines diff --git a/publish/records/kbench/kbench.py b/publish/records/kbench/kbench.py deleted file mode 100644 index 8127ad78bdb11e36dbe775c72e2997ff9810593d..0000000000000000000000000000000000000000 --- a/publish/records/kbench/kbench.py +++ /dev/null @@ -1,54 +0,0 @@ -"""KODEX KBENCH — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KBENCH(Surrogate): - name = "KBENCH"; function = "BENCHMARK"; phase = 3; status = "BUILT" - provenance = "n/a" - retired_by = "community-standard fusion-ML benchmarks" - real_codes = ("open ML benchmark suite",) - gates = () - note = ("open, citable ML benchmark suite for fusion — real CGYRO turbulence + MAST " - "disruption tasks with fixed splits, metrics and KODEX baselines to beat. Bring " - "your own model; move the community forward") - - def tasks(self): - return { - "cgyro-turbulence-flux": { - "inputs": ["a_LT", "shear"], - "target": "log10 Q_tot (regression) + turbulent/quiet (classification)", - "n_samples": 16, "metric": "R2 (regression) / leave-one-out accuracy (classification)", - "loader": "kronos_ml.data.cgyro_flux_map_final()", - "baseline_code": "KYRO", "baseline_score": "R2 ~0.86, turbulent/quiet 16/16", - "note": "real CGYRO A1e saturated-flux (mu=400 representative)"}, - "mast-disruption": { - "inputs": "physics features (Ip family + EFIT + n=1 Mirnov / P_rad)", - "target": "disruptive (binary)", - "n_samples": 591, "metric": "ROC-AUC (+ independent-precursor AUC)", - "loader": "kronos_ml.data.kward_real()", - "baseline_code": "KWARD", "baseline_score": "AUC ~0.98, independent-precursor 0.975", - "note": "real MAST shots (FAIR-MAST); labels are heuristic Ip-quench"}, - "cgyro-rom-compressibility": { - "inputs": "flux-database matrix (points x [inputs, fluxes])", - "target": "rel-L2 reconstruction error vs retained bond dimension", - "n_samples": 16, "metric": "rel-L2 vs rank", - "loader": "kronos_ml.data.cgyro_flux_map_final()", - "baseline_code": "KTENSOR", "baseline_score": "effective rank 2.93/4 (not strongly low-rank)", - "note": "honest ROM characterization"}, - } - - def _predict(self, x): - t = self.tasks() - key = x if isinstance(x, str) and x in t else next(iter(t)) - return Prediction(t[key], None, True, note=f"fusion-ML benchmark task spec: {key}") - - def benchmark(self): - t = self.tasks() - return {"member": self.name, - "live_benchmark_suite": { - "n_tasks": len(t), "tasks": t, - "how_to_use": ("load via each task's loader, use the fixed reproducible split, report " - "the metric, and try to beat the named KODEX baseline_code"), - "verdict": ("3 open, citable fusion-ML tasks (CGYRO turbulence, MAST disruption, flux " - "ROM) with real on-disk data + reproducible KODEX baselines — a community " - "leaderboard starting point, not a private result")}, - "caveat": "small by mainstream-ML standards (CGYRO = 16 pts); honest pilot fusion-ML benchmarks"} diff --git a/publish/records/kbench/metadata.json b/publish/records/kbench/metadata.json deleted file mode 100644 index 7cc1b33f1997a311d3bad8ed5cc7bde23649b45c..0000000000000000000000000000000000000000 --- a/publish/records/kbench/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KBENCH", - "page": "https://kronosfusionenergy.com/kodex/kbench", - "title": "KODEX \u2014 KBENCH: BENCHMARK", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "BENCHMARK", - "KODEX:KBENCH" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/kbench", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.21842371", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KBENCH (BENCHMARK). open, citable ML benchmark suite for fusion \u2014 real CGYRO turbulence + MAST disruption tasks with fixed splits, metrics and KODEX baselines to beat. Bring your own model; move the community forward

Benchmark: open fusion-ML benchmark suite: **3 citable tasks** (CGYRO turbulence, MAST disruption, flux ROM) with real data + KODEX baselines

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kbench · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KBENCH (BENCHMARK). open, citable ML benchmark suite for fusion \u2014 real CGYRO turbulence + MAST disruption tasks with fixed splits, metrics and KODEX baselines to beat. Bring your own model; move the community forwardBenchmark: open fusion-ML benchmark suite: **3 citable tasks** (CGYRO turbulence, MAST disruption, flux ROM) with real data + KODEX baselinesPart of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kbench \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package: https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/kbreed/CITATION.cff b/publish/records/kbreed/CITATION.cff deleted file mode 100644 index 9c477604fd69311a3c9fded904fca63506f825a7..0000000000000000000000000000000000000000 --- a/publish/records/kbreed/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KBREED: breeder (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/kbreed" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/kbreed/LICENSE b/publish/records/kbreed/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/kbreed/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/kbreed/MANIFEST.sha256 b/publish/records/kbreed/MANIFEST.sha256 deleted file mode 100644 index 649233dc36db2f631884323ea1eac10b3f50f383..0000000000000000000000000000000000000000 --- a/publish/records/kbreed/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KBREED SHA-256 (0.2.0, 2026-09-11) -bfa75f83009e6d691f67de3a5d038c650aea981f644f983235ed53769c47b7cb CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -a4be39a1e927548c99ce00de458ddc45d4911a1ad61aaab886e6f081230c3425 benchmark.json -ccbe9db0278e3c1266ee8ff8091d2df723a780c35b740f5f03ee1bc954fb9155 card.md -78c0c8482b808f86983ba12de743d8ac0bb879a9f1e170db14d62b3606c27f45 kbreed.py -a616613ed4948fa929803682ccf1a06b4207bae4e0be66aee86f45c223196687 metadata.json diff --git a/publish/records/kbreed/benchmark.json b/publish/records/kbreed/benchmark.json deleted file mode 100644 index cd0b6810885036ec69f9260fe74fcca25ae99fe4..0000000000000000000000000000000000000000 --- a/publish/records/kbreed/benchmark.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "member": "KBREED", - "live": { - "r2_vs_engine": 1.0, - "coverage_90": 1.0, - "nominal_net_tbr": 0.742 - }, - "note": "surrogate over toolkit neutronics (analytic); OpenMC upgrade = compute route [A]" -} diff --git a/publish/records/kbreed/card.md b/publish/records/kbreed/card.md deleted file mode 100644 index 5327d22795c93401aca9c66f6215df7070157116..0000000000000000000000000000000000000000 --- a/publish/records/kbreed/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KBREED — card - -- **name:** KBREED -- **function:** breeder -- **status:** BUILT -- **phase:** 2 -- **provenance:** SIM -- **retired_by:** OpenMC (Monte-Carlo neutron transport) -- **gates:** ['BR-neut'] -- **note:** tritium breeding-ratio surrogate (Hyperion blanket) — fast GP over the toolkit neutronics; OpenMC is the auto-dispatch high-fidelity upgrade -- **available:** True - -Benchmark headline: TBR surrogate R²=1.0 vs neutronics engine; nominal net TBR 0.742; OpenMC = auto fidelity upgrade diff --git a/publish/records/kbreed/kbreed.py b/publish/records/kbreed/kbreed.py deleted file mode 100644 index d42f4ff386197425bd221304d00de0e818f53fee..0000000000000000000000000000000000000000 --- a/publish/records/kbreed/kbreed.py +++ /dev/null @@ -1,54 +0,0 @@ -"""KODEX KBREED — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KBREED(Surrogate): - name = "KBREED"; function = "breeder"; phase = 2; status = "BUILT" - provenance = "SIM" - retired_by = "OpenMC (Monte-Carlo neutron transport)" - real_codes = ("openmc",) - gates = ("BR-neut",) - note = ("tritium breeding-ratio surrogate (Hyperion blanket) — fast GP over the " - "toolkit neutronics; OpenMC is the auto-dispatch high-fidelity upgrade") - - _B = [(0.3, 0.95), (0.5, 1.2), (0.85, 0.95)] # li6_enrichment, thickness_m, coverage - - def __init__(self): - self._gp = None - - def _sweep(self, n=120, seed=uq.SEED): - api = _api(); rng = np.random.default_rng(seed) - P = np.c_[rng.uniform(*self._B[0], n), rng.uniform(*self._B[1], n), rng.uniform(*self._B[2], n)] - y = np.array([_val(api.tbr(li6_enrichment=p[0], blanket_thickness_m=p[1], - coverage=p[2], force_analytic=True), "net_tbr") - for p in P]) - return P, y - - def _fit(self): - if self._gp is None: - P, y = self._sweep() - self._gp = uq.GPHead().fit(P, y); self._P, self._y = P, y - return self._gp - - def in_domain(self, p): - return all(self._B[i][0] <= p[i] <= self._B[i][1] for i in range(3)) - - def _predict(self, x): - gp = self._fit(); x = np.asarray(x, float).reshape(1, -1) - m, s = gp.predict(x) - return Prediction(float(m[0]), float(s[0]), self.in_domain(x.ravel()), - note="net TBR (>1 = self-sufficient)") - - def _x_from_params(self, li6_enrichment=0.9, blanket_thickness_m=0.8, coverage=0.92, **_): - return [li6_enrichment, blanket_thickness_m, coverage] - - def benchmark(self): - gp = self._fit() - Pte, yte = self._sweep(n=60, seed=uq.SEED + 5) - m, s = gp.predict(Pte) - api = _api() - nom = _val(api.tbr(force_analytic=True), "net_tbr") - return {"member": self.name, - "live": {"r2_vs_engine": round(metrics.r2(yte, m), 3), - "coverage_90": round(metrics.coverage_at_level(yte, m, np.clip(s, 1e-6, None), 0.90), 3), - "nominal_net_tbr": round(nom, 3)}, - "note": "surrogate over toolkit neutronics (analytic); OpenMC upgrade = compute route [A]"} diff --git a/publish/records/kbreed/metadata.json b/publish/records/kbreed/metadata.json deleted file mode 100644 index 1b6f10d7f0297348ef48a0ad477c5421ddf00e1e..0000000000000000000000000000000000000000 --- a/publish/records/kbreed/metadata.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "kname": "KBREED", - "page": "https://kronosfusionenergy.com/kodex/kbreed", - "title": "KODEX \u2014 KBREED: breeder", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "breeder", - "KODEX:KBREED" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/kbreed", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - } - ], - "description": "

KODEX — KBREED (breeder). tritium breeding-ratio surrogate (Hyperion blanket) \u2014 fast GP over the toolkit neutronics; OpenMC is the auto-dispatch high-fidelity upgrade

Benchmark: TBR surrogate R\u00b2=1.0 vs neutronics engine; nominal net TBR 0.742; OpenMC = auto fidelity upgrade

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.22645689. Home: https://kronosfusionenergy.com/kodex/kbreed · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KBREED (breeder). tritium breeding-ratio surrogate (Hyperion blanket) \u2014 fast GP over the toolkit neutronics; OpenMC is the auto-dispatch high-fidelity upgradeBenchmark: TBR surrogate R\u00b2=1.0 vs neutronics engine; nominal net TBR 0.742; OpenMC = auto fidelity upgradePart of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.22645689. Home: https://kronosfusionenergy.com/kodex/kbreed \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package (all 26 codes): https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/kburn/CITATION.cff b/publish/records/kburn/CITATION.cff deleted file mode 100644 index dc6f9afa12efb51cc89b369990dd61955b2a081d..0000000000000000000000000000000000000000 --- a/publish/records/kburn/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KBURN: burner (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/kburn" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/kburn/LICENSE b/publish/records/kburn/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/kburn/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/kburn/MANIFEST.sha256 b/publish/records/kburn/MANIFEST.sha256 deleted file mode 100644 index 4c81a79de705eb4a2c3fa57baa994a145873ab28..0000000000000000000000000000000000000000 --- a/publish/records/kburn/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KBURN SHA-256 (0.2.0, 2026-09-11) -2c237089902f15f9b21a02ab23760ac9f381a37ffb656f44876c17bf5cd949be CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -b133f891b15720e79a2914954c40e1aadd54f823611ab19459cc38a4882e1296 benchmark.json -628b0e84694e7bfd93c90866016e2a8c81086d3822aaf64958af781f609ba990 card.md -f637ffaa394f4531590476bae9df274f305ba7c9f7e39ba4e8d33a34148bfea9 kburn.py -255b2f35711fa8aec949a17e7f56538cc198fb22d35e18cd284c72060c1f9fcd metadata.json diff --git a/publish/records/kburn/benchmark.json b/publish/records/kburn/benchmark.json deleted file mode 100644 index 6852dea57382ae0d561114877977534fb5388ea9..0000000000000000000000000000000000000000 --- a/publish/records/kburn/benchmark.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "member": "KBURN", - "live": { - "r2": 1.0, - "rmse_MW": 0.006, - "coverage_90": 1.0, - "n_test": 400 - }, - "sourced": "track5_control/dec_dispatch_summary.csv (dynamic reweight +22% vs static)" -} diff --git a/publish/records/kburn/card.md b/publish/records/kburn/card.md deleted file mode 100644 index 75bd735a64bc905edcf09fb73490cc1165c9aedf..0000000000000000000000000000000000000000 --- a/publish/records/kburn/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KBURN — card - -- **name:** KBURN -- **function:** burner -- **status:** BUILT -- **phase:** 2 -- **provenance:** TWIN -- **retired_by:** full plant systems model -- **gates:** [] -- **note:** burner dispatch surrogate — fuel mix -> captured power (Aegis/MetroVolt); GP over the DEC dispatch traces -- **available:** True - -Benchmark headline: dispatch surrogate R²=1.0 (fuel mix → captured power); +22% dynamic diff --git a/publish/records/kburn/kburn.py b/publish/records/kburn/kburn.py deleted file mode 100644 index 6b997b4064a22569085dcdb3d93b35c9733fb25c..0000000000000000000000000000000000000000 --- a/publish/records/kburn/kburn.py +++ /dev/null @@ -1,47 +0,0 @@ -"""KODEX KBURN — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KBURN(Surrogate): - name = "KBURN"; function = "burner"; phase = 2; status = "BUILT" - provenance = "TWIN" - retired_by = "full plant systems model" - real_codes = ("plant systems model",) - note = ("burner dispatch surrogate — fuel mix -> captured power (Aegis/MetroVolt); " - "GP over the DEC dispatch traces") - - def __init__(self): - self._gp = None; self._span = None - - def _fit(self): - if self._gp is None: - df = data.read_csv("track5_control", "dec_dispatch_traces.csv") - X = df[["mix_D", "mix_He3", "mix_p", "mix_Li6"]].to_numpy(float) - y = df["P_captured_MW"].to_numpy(float) - rng = np.random.default_rng(uq.SEED) - idx = rng.permutation(len(y))[:250] # GP subsample - self._gp = uq.GPHead().fit(X[idx], y[idx]) - self._span = (X.min(0), X.max(0)); self._Xte, self._yte = X, y - return self._gp - - def _predict(self, x): - gp = self._fit(); x = np.asarray(x, float).reshape(1, -1) - m, s = gp.predict(x) - lo, hi = self._span - return Prediction(float(m[0]), float(s[0]), - bool(np.all(x.ravel() >= lo - 1e-6) and np.all(x.ravel() <= hi + 1e-6)), - note="captured power P (MW), gyro-twin dispatch") - - def _x_from_params(self, mix_D=0.5, mix_He3=0.3, mix_p=0.1, mix_Li6=0.1, **_): - return [mix_D, mix_He3, mix_p, mix_Li6] - - def benchmark(self): - gp = self._fit() - rng = np.random.default_rng(uq.SEED + 2) - te = rng.permutation(len(self._yte))[:400] - m, s = gp.predict(self._Xte[te]) - return {"member": self.name, - "live": {"r2": round(metrics.r2(self._yte[te], m), 3), - "rmse_MW": round(metrics.rmse(self._yte[te], m), 3), - "coverage_90": round(metrics.coverage_at_level(self._yte[te], m, np.clip(s, 1e-6, None), 0.90), 3), - "n_test": int(len(te))}, - "sourced": "track5_control/dec_dispatch_summary.csv (dynamic reweight +22% vs static)"} diff --git a/publish/records/kburn/metadata.json b/publish/records/kburn/metadata.json deleted file mode 100644 index 391080c9a809b30a48f3645e94223e9ab12b064a..0000000000000000000000000000000000000000 --- a/publish/records/kburn/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KBURN", - "page": "https://kronosfusionenergy.com/kodex/kburn", - "title": "KODEX \u2014 KBURN: burner", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "burner", - "KODEX:KBURN" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/kburn", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.21842371", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KBURN (burner). burner dispatch surrogate \u2014 fuel mix -> captured power (Aegis/MetroVolt); GP over the DEC dispatch traces

Benchmark: dispatch surrogate R\u00b2=1.0 (fuel mix \u2192 captured power); +22% dynamic

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kburn · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KBURN (burner). burner dispatch surrogate \u2014 fuel mix -> captured power (Aegis/MetroVolt); GP over the DEC dispatch tracesBenchmark: dispatch surrogate R\u00b2=1.0 (fuel mix \u2192 captured power); +22% dynamicPart of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kburn \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package (all 26 codes): https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/kdrive/CITATION.cff b/publish/records/kdrive/CITATION.cff deleted file mode 100644 index 56ef15cf53b4d39d988e2751ceb44fb015612356..0000000000000000000000000000000000000000 --- a/publish/records/kdrive/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KDRIVE: RL-control (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/kdrive" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/kdrive/LICENSE b/publish/records/kdrive/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/kdrive/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/kdrive/MANIFEST.sha256 b/publish/records/kdrive/MANIFEST.sha256 deleted file mode 100644 index 630781589f0b5175a7b01e9f0271bc66596db037..0000000000000000000000000000000000000000 --- a/publish/records/kdrive/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KDRIVE SHA-256 (0.2.0, 2026-09-11) -64529510002805e1a0df44062398dd0e96f50993a2adbe47a8193430fa5cc91e CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -f4f36adee949eba53dcea8b5b9e7a06311ea235f461423232246eaadda936a5b benchmark.json -9a8da86745ade3c0665fc4c6b403cb333996c4d64108711bf8f36a4ccecd32ae card.md -86bb8b3e8f2ddda51e90188c791500cc563503aab9f1b80160e3a799bc8df85f kdrive.py -e3571af9ae6782ae925508b020ec60442325b7055b4c0741c95685c268023410 metadata.json diff --git a/publish/records/kdrive/benchmark.json b/publish/records/kdrive/benchmark.json deleted file mode 100644 index ebde7681739ba10a90961fb318c75e5509366e55..0000000000000000000000000000000000000000 --- a/publish/records/kdrive/benchmark.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "member": "KDRIVE", - "live": { - "learned_policy_tracking_rms": 0.0551, - "naive_gain_tracking_rms": 0.1225, - "learned_gains": [ - 0.935, - 1.271, - 0.998, - 0.617, - 1.072, - 0.595 - ], - "note": "cross-entropy-method policy search, twin-in-the-loop" - } -} diff --git a/publish/records/kdrive/card.md b/publish/records/kdrive/card.md deleted file mode 100644 index d6f97aed857e1d60871d310d4d8b31a6683a54f4..0000000000000000000000000000000000000000 --- a/publish/records/kdrive/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KDRIVE — card - -- **name:** KDRIVE -- **function:** RL-control -- **status:** BUILT -- **phase:** 3 -- **provenance:** TWIN -- **retired_by:** device-validated learned controller -- **gates:** [] -- **note:** reinforcement-learning controller — a feedback policy learned by the cross-entropy method in the twin plant loop; clamped by KGATE -- **available:** True - -Benchmark headline: RL policy (cross-entropy): tracking **0.0551** vs naive 0.1225, twin-in-the-loop diff --git a/publish/records/kdrive/kdrive.py b/publish/records/kdrive/kdrive.py deleted file mode 100644 index 45e7c5bab0b2910d8d1d4f5db130303ef4e989ad..0000000000000000000000000000000000000000 --- a/publish/records/kdrive/kdrive.py +++ /dev/null @@ -1,44 +0,0 @@ -"""KODEX KDRIVE — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KDRIVE(Surrogate): - name = "KDRIVE"; function = "RL-control"; phase = 3; status = "BUILT" - provenance = "TWIN" - retired_by = "device-validated learned controller" - real_codes = ("reinforcement learning",) - note = ("reinforcement-learning controller — a feedback policy learned by the " - "cross-entropy method in the twin plant loop; clamped by KGATE") - - def __init__(self): - self._K = None - - def _fit(self): - if self._K is None: - ref = np.array([2.2, 0.3, 3.0, 1.0, 0.2, 30.0]) - rng = np.random.default_rng(uq.SEED) - mu = np.full(6, 0.5); sd = np.full(6, 0.4) # policy = per-axis gain - for _ in range(20): # cross-entropy iterations - pop = np.clip(rng.normal(mu, sd, size=(30, 6)), 0.0, 1.5) - costs = np.array([_rollout(k, ref, seed=1) for k in pop]) - elite = pop[np.argsort(costs)[:6]] - mu, sd = elite.mean(0), elite.std(0) + 1e-3 - self._K = mu - return self._K - - def _predict(self, x): - K = self._fit() - state, ref = x - state = np.asarray(state, float).ravel(); ref = np.asarray(ref, float).ravel() - safe, _ = get("KGATE").clamp(state + K * (ref - state)) - return Prediction(safe, None, True, note="learned RL policy command (clamped)") - - def benchmark(self): - K = self._fit() - ref = np.array([2.2, 0.3, 3.0, 1.0, 0.2, 30.0]) - learned = _rollout(K, ref, seed=7) - naive = _rollout(np.full(6, 0.2), ref, seed=7) - return {"member": self.name, - "live": {"learned_policy_tracking_rms": round(float(learned), 4), - "naive_gain_tracking_rms": round(float(naive), 4), - "learned_gains": [round(float(k), 3) for k in K], - "note": "cross-entropy-method policy search, twin-in-the-loop"}} diff --git a/publish/records/kdrive/metadata.json b/publish/records/kdrive/metadata.json deleted file mode 100644 index 7af6670f74988b73a86b8a8c8bab04526b8cfd46..0000000000000000000000000000000000000000 --- a/publish/records/kdrive/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KDRIVE", - "page": "https://kronosfusionenergy.com/kodex/kdrive", - "title": "KODEX \u2014 KDRIVE: RL-control", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "RL-control", - "KODEX:KDRIVE" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/kdrive", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.21842371", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KDRIVE (RL-control). reinforcement-learning controller \u2014 a feedback policy learned by the cross-entropy method in the twin plant loop; clamped by KGATE

Benchmark: RL policy (cross-entropy): tracking **0.0551** vs naive 0.1225, twin-in-the-loop

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kdrive · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KDRIVE (RL-control). reinforcement-learning controller \u2014 a feedback policy learned by the cross-entropy method in the twin plant loop; clamped by KGATEBenchmark: RL policy (cross-entropy): tracking **0.0551** vs naive 0.1225, twin-in-the-loopPart of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kdrive \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package (all 26 codes): https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/kdyn/CITATION.cff b/publish/records/kdyn/CITATION.cff deleted file mode 100644 index 284e8753cc713b23861c8030a267b5a4ab64d405..0000000000000000000000000000000000000000 --- a/publish/records/kdyn/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KDYN: QDYN (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/kdyn" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/kdyn/LICENSE b/publish/records/kdyn/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/kdyn/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/kdyn/MANIFEST.sha256 b/publish/records/kdyn/MANIFEST.sha256 deleted file mode 100644 index e023e5e39dc89aa72cd685b329bfe73b630d8772..0000000000000000000000000000000000000000 --- a/publish/records/kdyn/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KDYN SHA-256 (0.2.0, 2026-09-11) -932cfe053f1db0ada0e188fe37070972294cbe3f202508673db022eda4bd6472 CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -8808e1a31b95131d0852dd6e9bf5c2ca8c181a9974304e6bd616d9396d4b6426 benchmark.json -c8847afe850a64c62e9ce6fcd92b98ed7df1bd4fcc786d99fbb319ecfe3be0cf card.md -5c0fc5b8f77c2ee9add9ae5d0ddcb8030e1fb1bcfe68ae42f621c45952c2d7a1 kdyn.py -0ec86bcae56daabbe51e196969aae929be4d59e6daedf8d9f79243c75340f4c3 metadata.json diff --git a/publish/records/kdyn/benchmark.json b/publish/records/kdyn/benchmark.json deleted file mode 100644 index a808dc9ba5a5cf2f23d71b9eababe7cf7ac1dcad..0000000000000000000000000000000000000000 --- a/publish/records/kdyn/benchmark.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "member": "KDYN", - "live_trotter": { - "system": "3-qubit transverse-field Ising (J=1.0, h=0.8), t=1.0", - "framework": "PennyLane Trotter (ApproxTimeEvolution); sim now, real hardware pluggable", - "spectral_norm_error_vs_steps": { - "1": 1.34637, - "2": 0.57791, - "4": 0.27635, - "8": 0.1362, - "16": 0.06776, - "32": 0.03381 - }, - "converges_as": "~1/n_steps (1st-order Trotter, as expected)", - "backend_expval_Z0_at_16_steps": 0.2572, - "backend": { - "active_backend": "default", - "ran_on_real_hardware": false, - "how_to_use_real_qc": "set KODEX_QC_BACKEND=ibm and KODEX_QC_TOKEN= to run this exact circuit on real quantum hardware", - "honest_timeline": "fault-tolerant quantum ADVANTAGE for fusion kernels is ~8-10 yr out; this tooling makes the TESTING real and runnable TODAY, same code path" - }, - "verdict": "REAL Trotterized quantum dynamics: 1st-order error falls 1.34637 -> 0.03381 from 1 to 32 steps (~1/n) \u2014 the honest cost curve for simulating plasma-like Hamiltonian dynamics on a quantum computer. Runs on real hardware with KODEX_QC_BACKEND=ibm. No advantage at this size; a real, testable pipeline." - }, - "sourced": { - "file": "TRACK1_QUANTUM_RESULTS/track1_results.json (A8_Trotter)", - "note": "independent Track-1: 1st-order Trotter error 1.257->0.032 with steps (consistent)" - } -} diff --git a/publish/records/kdyn/card.md b/publish/records/kdyn/card.md deleted file mode 100644 index 0d412923e0a16615894e34320b58fa3d2ed97af6..0000000000000000000000000000000000000000 --- a/publish/records/kdyn/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KDYN — card - -- **name:** KDYN -- **function:** QDYN -- **status:** BUILT -- **phase:** 3 -- **provenance:** SIM -- **retired_by:** fault-tolerant quantum hardware (not available this decade) -- **gates:** ['KX-L3'] -- **note:** REAL quantum dynamics — Trotterized time-evolution of a transverse-field Ising 'kinetic' Hamiltonian (PennyLane); the honest 1/n_steps cost curve for simulating plasma-like dynamics on a quantum computer. Runs on a simulator now, hardware pluggable -- **available:** True - -Benchmark headline: **REAL Trotter quantum dynamics**: 1st-order error 1.34637→0.03381 over steps (~1/n); runs on real QC hardware — honest cost curve, no advantage yet diff --git a/publish/records/kdyn/kdyn.py b/publish/records/kdyn/kdyn.py deleted file mode 100644 index 36614bd8536d6da6ab109d9377f82cc1e010c527..0000000000000000000000000000000000000000 --- a/publish/records/kdyn/kdyn.py +++ /dev/null @@ -1,77 +0,0 @@ -"""KODEX KDYN — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KDYN(Surrogate): - name = "KDYN"; function = "QDYN"; phase = 3; status = "BUILT" - provenance = "SIM" - retired_by = "fault-tolerant quantum hardware (not available this decade)" - real_codes = ("Trotterized Hamiltonian simulation", "PennyLane") - gates = ("KX-L3",) - note = ("REAL quantum dynamics — Trotterized time-evolution of a transverse-field Ising " - "'kinetic' Hamiltonian (PennyLane); the honest 1/n_steps cost curve for simulating " - "plasma-like dynamics on a quantum computer. Runs on a simulator now, hardware pluggable") - - _NQ = 3; _J = 1.0; _HX = 0.8; _T = 1.0 - - def _ham(self): - import pennylane as qml - coeffs = [-self._J] * (self._NQ - 1) + [-self._HX] * self._NQ - ops = ([qml.PauliZ(i) @ qml.PauliZ(i + 1) for i in range(self._NQ - 1)] - + [qml.PauliX(i) for i in range(self._NQ)]) - return qml.Hamiltonian(coeffs, ops) - - def _curve(self): - import numpy as np - import pennylane as qml - from scipy.linalg import expm - H = self._ham() - coeffs, ops = H.terms() - mats = [(float(c), qml.matrix(o, wire_order=range(self._NQ))) for c, o in zip(coeffs, ops)] - Hm = sum(c * M for c, M in mats) - Uex = expm(-1j * self._T * Hm) - out = {} - for n in (1, 2, 4, 8, 16, 32): - dt = self._T / n - Ustep = np.eye(2 ** self._NQ, dtype=complex) - for c, M in mats: - Ustep = expm(-1j * c * dt * M) @ Ustep - Utr = np.linalg.matrix_power(Ustep, n) - out[n] = round(float(np.linalg.norm(Utr - Uex, 2)), 5) - return out - - def _backend_run(self): - import pennylane as qml - H = self._ham(); dev = qc.get_device(wires=self._NQ) - - @qml.qnode(dev) - def circ(n): - qml.ApproxTimeEvolution(H, self._T, n) - return qml.expval(qml.PauliZ(0)) - return float(circ(16)) - - def _predict(self, x): - import numpy as np - c = self._curve() - n = int(np.ravel(np.asarray(x, float))[0]) if x is not None else 16 - key = min(c, key=lambda k: abs(k - n)) - return Prediction(c[key], None, True, note=f"Trotter spectral-norm error at {key} steps") - - def benchmark(self): - c = self._curve() - z0 = self._backend_run() - st = sorted(c) - return {"member": self.name, - "live_trotter": { - "system": f"{self._NQ}-qubit transverse-field Ising (J={self._J}, h={self._HX}), t={self._T}", - "framework": "PennyLane Trotter (ApproxTimeEvolution); sim now, real hardware pluggable", - "spectral_norm_error_vs_steps": c, - "converges_as": "~1/n_steps (1st-order Trotter, as expected)", - "backend_expval_Z0_at_16_steps": round(z0, 4), - "backend": qc.backend_note(), - "verdict": (f"REAL Trotterized quantum dynamics: 1st-order error falls {c[st[0]]} -> " - f"{c[st[-1]]} from {st[0]} to {st[-1]} steps (~1/n) — the honest cost curve for " - f"simulating plasma-like Hamiltonian dynamics on a quantum computer. Runs on " - f"real hardware with KODEX_QC_BACKEND=ibm. No advantage at this size; a real, " - f"testable pipeline.")}, - "sourced": {"file": "TRACK1_QUANTUM_RESULTS/track1_results.json (A8_Trotter)", - "note": "independent Track-1: 1st-order Trotter error 1.257->0.032 with steps (consistent)"}} diff --git a/publish/records/kdyn/metadata.json b/publish/records/kdyn/metadata.json deleted file mode 100644 index 1de0285b3ea55b39132eea7daddb4e1ab04e3324..0000000000000000000000000000000000000000 --- a/publish/records/kdyn/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KDYN", - "page": "https://kronosfusionenergy.com/kodex/kdyn", - "title": "KODEX \u2014 KDYN: QDYN", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "QDYN", - "KODEX:KDYN" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/kdyn", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.21842371", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KDYN (QDYN). REAL quantum dynamics \u2014 Trotterized time-evolution of a transverse-field Ising 'kinetic' Hamiltonian (PennyLane); the honest 1/n_steps cost curve for simulating plasma-like dynamics on a quantum computer. Runs on a simulator now, hardware pluggable

Benchmark: **REAL Trotter quantum dynamics**: 1st-order error 1.34637\u21920.03381 over steps (~1/n); runs on real QC hardware \u2014 honest cost curve, no advantage yet

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kdyn · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KDYN (QDYN). REAL quantum dynamics \u2014 Trotterized time-evolution of a transverse-field Ising 'kinetic' Hamiltonian (PennyLane); the honest 1/n_steps cost curve for simulating plasma-like dynamics on a quantum computer. Runs on a simulator now, hardware pluggableBenchmark: **REAL Trotter quantum dynamics**: 1st-order error 1.34637\u21920.03381 over steps (~1/n); runs on real QC hardware \u2014 honest cost curve, no advantage yetPart of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kdyn \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package: https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/kecon/CITATION.cff b/publish/records/kecon/CITATION.cff deleted file mode 100644 index 964bdbe3f85e11e500a520753b0a1b4cec0bddb0..0000000000000000000000000000000000000000 --- a/publish/records/kecon/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KECON: techno-economics (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/kecon" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/kecon/LICENSE b/publish/records/kecon/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/kecon/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/kecon/MANIFEST.sha256 b/publish/records/kecon/MANIFEST.sha256 deleted file mode 100644 index 8951232d86ac1b3902588c406371631b3668bad3..0000000000000000000000000000000000000000 --- a/publish/records/kecon/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KECON SHA-256 (0.2.0, 2026-09-11) -df70c7eb240f2ef04421d7568e30a479f2788bc7c9d21d506c9c90251820daea CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -455c7858094ed06d6781d9cbe35b25a695883036c88d9343e73b9c27c610fc10 benchmark.json -10120f65e9a734b2ba2f2e6a2c13663fb74fa8d175fa68babe2c0016fbee28e5 card.md -4c743bcee043f982000296426f736011a0e897861dfb0ce2e82fd5505788184e kecon.py -432a5dcf9daf13bdcd0432ddc92ce05a3e8d492257d865ec76983910a3a75868 metadata.json diff --git a/publish/records/kecon/benchmark.json b/publish/records/kecon/benchmark.json deleted file mode 100644 index 970af58409aaca2edbf53e68e8d68f2c9278ecb2..0000000000000000000000000000000000000000 --- a/publish/records/kecon/benchmark.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "member": "KECON", - "live_worked_example": { - "lcoe_per_MWh": 167.64, - "capital_component_per_MWh": 134.31, - "opex_component_per_MWh": 33.33, - "capital_recovery_factor": 0.0806 - }, - "firewall": "generic community calculator; NO Kronos cost/price/valuation/funding, ever", - "note": "founder-approved public, generic-only; inputs above are illustrative placeholders" -} diff --git a/publish/records/kecon/card.md b/publish/records/kecon/card.md deleted file mode 100644 index 4e4a8b59fff812961f5d2254224649ef5669b84f..0000000000000000000000000000000000000000 --- a/publish/records/kecon/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KECON — card - -- **name:** KECON -- **function:** techno-economics -- **status:** BUILT -- **phase:** 3 -- **provenance:** n/a -- **retired_by:** detailed engineering cost model (never public) -- **gates:** [] -- **note:** GENERIC open techno-economics (LCOE) on the USER's inputs — FINANCIAL FIREWALL: no Kronos numbers, ever -- **available:** True - -Benchmark headline: generic LCOE calculator + breakdown — **FINANCIAL FIREWALL (no Kronos numbers)** diff --git a/publish/records/kecon/kecon.py b/publish/records/kecon/kecon.py deleted file mode 100644 index ba1aafad95fc650ebaae553d17b13243ec988bd5..0000000000000000000000000000000000000000 --- a/publish/records/kecon/kecon.py +++ /dev/null @@ -1,51 +0,0 @@ -"""KODEX KECON — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KECON(Surrogate): - """Generic, open fusion techno-economics — FINANCIAL FIREWALL. - - A community LCOE / cost-of-electricity calculator that runs ONLY on the - caller's inputs. It ships with ZERO Kronos cost/price/per-unit/valuation/ - funding data, and refuses to run without user-supplied inputs. Kronos's own - economics stay confidential and never enter this code.""" - name = "KECON"; function = "techno-economics"; phase = 3; status = "BUILT" - provenance = "n/a" - retired_by = "detailed engineering cost model (never public)" - real_codes = ("open LCOE methodology",) - note = ("GENERIC open techno-economics (LCOE) on the USER's inputs — " - "FINANCIAL FIREWALL: no Kronos numbers, ever") - - #: hard firewall — no Kronos-specific defaults may ever be added here - KRONOS_NUMBERS = None - - def _predict(self, x): - """x = dict with the USER's own inputs: - capex, opex_per_yr, annual_generation_MWh, discount_rate, lifetime_yr - Returns generic LCOE ($/MWh). Refuses to run without user inputs.""" - if not isinstance(x, dict) or not x: - raise ValueError( - "KECON requires the caller's own inputs (capex, opex_per_yr, " - "annual_generation_MWh, discount_rate, lifetime_yr). " - "It carries NO Kronos financial data.") - capex = float(x["capex"]); opex = float(x["opex_per_yr"]) - gen = float(x["annual_generation_MWh"]); r = float(x["discount_rate"]) - n = int(x["lifetime_yr"]) - crf = r * (1 + r) ** n / ((1 + r) ** n - 1) if r > 0 else 1.0 / n - cap_component = capex * crf / gen - opex_component = opex / gen - lcoe = cap_component + opex_component - return Prediction({"lcoe_per_MWh": round(lcoe, 2), - "capital_component_per_MWh": round(cap_component, 2), - "opex_component_per_MWh": round(opex_component, 2), - "capital_recovery_factor": round(crf, 4)}, - None, True, - note="generic LCOE $/MWh + breakdown from USER inputs (no Kronos data)") - - def benchmark(self): - # a worked generic example (illustrative inputs — NOT Kronos numbers) - demo = self.predict({"capex": 5e9, "opex_per_yr": 1e8, - "annual_generation_MWh": 3e6, "discount_rate": 0.07, "lifetime_yr": 30}) - return {"member": self.name, - "live_worked_example": demo.y, - "firewall": "generic community calculator; NO Kronos cost/price/valuation/funding, ever", - "note": "founder-approved public, generic-only; inputs above are illustrative placeholders"} diff --git a/publish/records/kecon/metadata.json b/publish/records/kecon/metadata.json deleted file mode 100644 index 15d248b19d828de1f4061617771ca9933fa8444b..0000000000000000000000000000000000000000 --- a/publish/records/kecon/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KECON", - "page": "https://kronosfusionenergy.com/kodex/kecon", - "title": "KODEX \u2014 KECON: techno-economics", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "techno-economics", - "KODEX:KECON" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/kecon", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.21842371", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KECON (techno-economics). GENERIC open techno-economics (LCOE) on the USER's inputs \u2014 FINANCIAL FIREWALL: no Kronos numbers, ever

Benchmark: generic LCOE calculator + breakdown \u2014 **FINANCIAL FIREWALL (no Kronos numbers)**

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kecon · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KECON (techno-economics). GENERIC open techno-economics (LCOE) on the USER's inputs \u2014 FINANCIAL FIREWALL: no Kronos numbers, everBenchmark: generic LCOE calculator + breakdown \u2014 **FINANCIAL FIREWALL (no Kronos numbers)**Part of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kecon \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package (all 26 codes): https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/kedge/CITATION.cff b/publish/records/kedge/CITATION.cff deleted file mode 100644 index 61a710b84456b555ffdc1b7a86bc20d03ec34be4..0000000000000000000000000000000000000000 --- a/publish/records/kedge/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KEDGE: edge-transport (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/kedge" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/kedge/LICENSE b/publish/records/kedge/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/kedge/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/kedge/MANIFEST.sha256 b/publish/records/kedge/MANIFEST.sha256 deleted file mode 100644 index 00dcbf66b2cfd6ae68af2b59eb5034d6c19819e3..0000000000000000000000000000000000000000 --- a/publish/records/kedge/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KEDGE SHA-256 (0.2.0, 2026-09-11) -975b47f0eb94dfe9d1c8350ffc647062b9248584c2cbb8e470fd93dedc54d0e1 CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -3ed8e9ed65801f94aa6f1797fc8674b4f6b3c10f2f9a180be361c0b17a085741 benchmark.json -070b8230761c79cc6e5af9207ba99f89dab877bcda4d44eca5bdb2032242138c card.md -07041a7a65e7e6eebd5e7b6a1af22f2a5e24c7c2a54d87d06b0f14484d34a52f kedge.py -94e452c78090b6005683b593b938bb30684480bb8772da57681f2e8b08325824 metadata.json diff --git a/publish/records/kedge/benchmark.json b/publish/records/kedge/benchmark.json deleted file mode 100644 index 5dfa83b0bce449cf363333013ff095ccacd3e875..0000000000000000000000000000000000000000 --- a/publish/records/kedge/benchmark.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "member": "KEDGE", - "live_divertor_thermal": { - "source": "h9_target_thermal.csv (H9 exhaust/divertor engineering scan)", - "map": "divertor heat flux q [MW/m^2] -> target surface temperature [C]", - "r2_fit": 1.0, - "n_samples": 77, - "max_safe_q_MWm2_CuCrZr": 13.5, - "verdict": "Divertor target-thermal surrogate: q->T_surf fit R2=1.000 over 77 points; CuCrZr material limit at q~13.5 MW/m2. Reduced 0-D thermal model \u2014 SOLPS-ITER/EIRENE edge campaign is the fidelity upgrade." - }, - "caveat": "0-D target-thermal scan, not a full 2-D edge-transport solve" -} diff --git a/publish/records/kedge/card.md b/publish/records/kedge/card.md deleted file mode 100644 index cb4ae8d288a233f74edd2f7ea4a4f2532059e3f6..0000000000000000000000000000000000000000 --- a/publish/records/kedge/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KEDGE — card - -- **name:** KEDGE -- **function:** edge-transport -- **status:** BUILT -- **phase:** 3 -- **provenance:** SIM -- **retired_by:** SOLPS-ITER / EIRENE edge campaign -- **gates:** ['H9'] -- **note:** divertor / edge heat-flux -> target-thermal surrogate — maps divertor heat flux to target surface temperature + material limits (W / CuCrZr) from the H9 exhaust scan. Reduced 0-D thermal model; SOLPS-ITER/EIRENE = fidelity upgrade -- **available:** True - -Benchmark headline: divertor edge surrogate: heat-flux→target-temp **R²=1.0**, CuCrZr limit q~13.5 MW/m² (reduced 0-D; SOLPS/EIRENE = upgrade) diff --git a/publish/records/kedge/kedge.py b/publish/records/kedge/kedge.py deleted file mode 100644 index 202760310100c5314eac5b8fb18e48ed2d5b62be..0000000000000000000000000000000000000000 --- a/publish/records/kedge/kedge.py +++ /dev/null @@ -1,43 +0,0 @@ -"""KODEX KEDGE — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KEDGE(Surrogate): - name = "KEDGE"; function = "edge-transport"; phase = 3; status = "BUILT" - provenance = "SIM" - retired_by = "SOLPS-ITER / EIRENE edge campaign" - real_codes = ("divertor target-thermal scan",) - gates = ("H9",) - note = ("divertor / edge heat-flux -> target-thermal surrogate — maps divertor heat flux to " - "target surface temperature + material limits (W / CuCrZr) from the H9 exhaust scan. " - "Reduced 0-D thermal model; SOLPS-ITER/EIRENE = fidelity upgrade") - - def _fit(self): - if getattr(self, "_coef", None) is not None: - return - import pandas as pd - from sklearn.metrics import r2_score - df = pd.read_csv(_DIV_THERMAL).dropna(subset=["q_MWm2", "T_w_surf_C"]) - q = df["q_MWm2"].to_numpy(float); T = df["T_w_surf_C"].to_numpy(float) - self._coef = np.polyfit(q, T, 2) - self._r2 = float(r2_score(T, np.polyval(self._coef, q))); self._n = len(q) - bad = df[df["ok_CuCrZr"] == False] if "ok_CuCrZr" in df else df.iloc[0:0] - self._q_limit = float(bad["q_MWm2"].min()) if len(bad) else float(q.max()) - - def _predict(self, x): - self._fit() - q = float(np.ravel(np.asarray(x, float))[0]) - return Prediction(float(np.polyval(self._coef, q)), None, q <= self._q_limit, - note=f"target surface temp (C) at q={q} MW/m^2; in_domain = under CuCrZr limit") - - def benchmark(self): - self._fit() - return {"member": self.name, - "live_divertor_thermal": { - "source": "h9_target_thermal.csv (H9 exhaust/divertor engineering scan)", - "map": "divertor heat flux q [MW/m^2] -> target surface temperature [C]", - "r2_fit": round(self._r2, 3), "n_samples": self._n, - "max_safe_q_MWm2_CuCrZr": self._q_limit, - "verdict": (f"Divertor target-thermal surrogate: q->T_surf fit R2={self._r2:.3f} over " - f"{self._n} points; CuCrZr material limit at q~{self._q_limit} MW/m2. Reduced " - f"0-D thermal model — SOLPS-ITER/EIRENE edge campaign is the fidelity upgrade.")}, - "caveat": "0-D target-thermal scan, not a full 2-D edge-transport solve"} diff --git a/publish/records/kedge/metadata.json b/publish/records/kedge/metadata.json deleted file mode 100644 index 2e8624dc75040ca610fba14b2a4b927e06633fee..0000000000000000000000000000000000000000 --- a/publish/records/kedge/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KEDGE", - "page": "https://kronosfusionenergy.com/kodex/kedge", - "title": "KODEX \u2014 KEDGE: edge-transport", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "edge-transport", - "KODEX:KEDGE" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/kedge", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.21842371", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KEDGE (edge-transport). divertor / edge heat-flux -> target-thermal surrogate \u2014 maps divertor heat flux to target surface temperature + material limits (W / CuCrZr) from the H9 exhaust scan. Reduced 0-D thermal model; SOLPS-ITER/EIRENE = fidelity upgrade

Benchmark: divertor edge surrogate: heat-flux\u2192target-temp **R\u00b2=1.0**, CuCrZr limit q~13.5 MW/m\u00b2 (reduced 0-D; SOLPS/EIRENE = upgrade)

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kedge · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KEDGE (edge-transport). divertor / edge heat-flux -> target-thermal surrogate \u2014 maps divertor heat flux to target surface temperature + material limits (W / CuCrZr) from the H9 exhaust scan. Reduced 0-D thermal model; SOLPS-ITER/EIRENE = fidelity upgradeBenchmark: divertor edge surrogate: heat-flux\u2192target-temp **R\u00b2=1.0**, CuCrZr limit q~13.5 MW/m\u00b2 (reduced 0-D; SOLPS/EIRENE = upgrade)Part of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kedge \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package: https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/keye/CITATION.cff b/publish/records/keye/CITATION.cff deleted file mode 100644 index d01ffe62410f2cb43eb0a0c0e21963d0380fab73..0000000000000000000000000000000000000000 --- a/publish/records/keye/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KEYE: DIAG (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/keye" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/keye/LICENSE b/publish/records/keye/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/keye/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/keye/MANIFEST.sha256 b/publish/records/keye/MANIFEST.sha256 deleted file mode 100644 index f39cebd1ae423353eb54b0ff276f10cc266c90ee..0000000000000000000000000000000000000000 --- a/publish/records/keye/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KEYE SHA-256 (0.2.0, 2026-09-11) -8bd237df00559ed538fc9bb47e1a5f31d4c14b89abce6c3d004570b892d4e79d CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -f6ca19d9eba9d3043d8fdddc7fe644cbeb857a1a3dc69208f9d4b52e87d5bdcf benchmark.json -3daf30a0056e0ae7fc2aa37c47c451152f878b92c5051ea75d315ea3dbedc0a6 card.md -c0bc7e05982e59120157f3c7bca3fd22e23b5962543af273468100c0fdb65b6a keye.py -0a4ec1ed86376f81f91e7e8aec64a96050ee81d19cf1118a95c44a3c0c43a23c metadata.json diff --git a/publish/records/keye/benchmark.json b/publish/records/keye/benchmark.json deleted file mode 100644 index ab2e4ed718604e338960738ec86161267b7d13fe..0000000000000000000000000000000000000000 --- a/publish/records/keye/benchmark.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "member": "KEYE", - "live_fault_detection": { - "detection_rate": 0.767, - "false_alarm_rate": 0.0, - "n_trials": 300, - "method": "3-sigma same-class residual" - }, - "sourced": { - "file": "track8b_quantum_sensing/sensing_to_disruption_gain.csv", - "finding": "quantum sensing buys ~0 gain where disruptions live (model-limited)" - } -} diff --git a/publish/records/keye/card.md b/publish/records/keye/card.md deleted file mode 100644 index 5d32c262f308d2eddf0887dd308877479ea8cf6e..0000000000000000000000000000000000000000 --- a/publish/records/keye/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KEYE — card - -- **name:** KEYE -- **function:** DIAG -- **status:** BUILT -- **phase:** 2 -- **provenance:** SIM -- **retired_by:** physical diagnostic suite + validated sensor fusion -- **gates:** ['AC-36'] -- **note:** diagnostics / virtual-sensor / signal-validation observer — builds on KFLOW's graph imputation + quantum-sensing; flags faulty channels -- **available:** True - -Benchmark headline: virtual-sensor fault detection 0.767 at FAR 0.0 diff --git a/publish/records/keye/keye.py b/publish/records/keye/keye.py deleted file mode 100644 index 6d26df0e62fd3c2609e633da4cd73670f901b3c9..0000000000000000000000000000000000000000 --- a/publish/records/keye/keye.py +++ /dev/null @@ -1,48 +0,0 @@ -"""KODEX KEYE — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KEYE(Surrogate): - name = "KEYE"; function = "DIAG"; phase = 2; status = "BUILT" - provenance = "SIM" - retired_by = "physical diagnostic suite + validated sensor fusion" - real_codes = ("sensor fusion", "signal validation") - gates = ("AC-36",) - note = ("diagnostics / virtual-sensor / signal-validation observer — builds " - "on KFLOW's graph imputation + quantum-sensing; flags faulty channels") - - def _predict(self, x): - """x = observed 76-vector; flag channels whose residual vs same-class peers - is anomalous (a virtual-sensor validation).""" - obs = np.asarray(x, float).ravel() - alive = np.isfinite(obs) - z = data.gnn_snapshots(); cls = np.asarray(z["cls"]) - flags = np.zeros(76, bool) - for c in np.unique(cls): - m = alive & (cls == c) - if m.sum() > 2: - mu, sd = obs[m].mean(), obs[m].std() + 1e-9 - flags[m] = np.abs(obs[m] - mu) > 3 * sd - return Prediction(obs, flags.astype(float), bool(alive.mean() >= 0.5), - note=f"{int(flags.sum())} channels flagged anomalous") - - def benchmark(self): - """Live fault-detection: inject a large offset into one channel per snapshot - and measure detection rate vs the false-alarm rate on clean channels.""" - z = data.gnn_snapshots() - clean = np.asarray(z["Xn_clean"], float); cls = np.asarray(z["cls"]) - rng = np.random.default_rng(uq.SEED) - rng_scale = clean.max(0) - clean.min(0) + 1e-9 - detected = 0; false_alarms = 0; clean_channels = 0; n = 300 - for _ in range(n): - i = rng.integers(len(clean)); obs = clean[i].copy() - j = rng.integers(76); obs[j] += 5 * rng_scale[j] # inject a fault - flags = self.predict(obs).uncertainty.astype(bool) - detected += int(flags[j]) - fa = flags.copy(); fa[j] = False - false_alarms += int(fa.sum()); clean_channels += 75 - return {"member": self.name, - "live_fault_detection": {"detection_rate": round(detected / n, 3), - "false_alarm_rate": round(false_alarms / clean_channels, 4), - "n_trials": n, "method": "3-sigma same-class residual"}, - "sourced": {"file": "track8b_quantum_sensing/sensing_to_disruption_gain.csv", - "finding": "quantum sensing buys ~0 gain where disruptions live (model-limited)"}} diff --git a/publish/records/keye/metadata.json b/publish/records/keye/metadata.json deleted file mode 100644 index 57f0a09fd222d1a454bb6b852677cf1edd27d3ab..0000000000000000000000000000000000000000 --- a/publish/records/keye/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KEYE", - "page": "https://kronosfusionenergy.com/kodex/keye", - "title": "KODEX \u2014 KEYE: DIAG", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "DIAG", - "KODEX:KEYE" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/keye", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.21842371", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KEYE (DIAG). diagnostics / virtual-sensor / signal-validation observer \u2014 builds on KFLOW's graph imputation + quantum-sensing; flags faulty channels

Benchmark: virtual-sensor fault detection 0.767 at FAR 0.0

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/keye · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KEYE (DIAG). diagnostics / virtual-sensor / signal-validation observer \u2014 builds on KFLOW's graph imputation + quantum-sensing; flags faulty channelsBenchmark: virtual-sensor fault detection 0.767 at FAR 0.0Part of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/keye \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package (all 26 codes): https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/kflow/CITATION.cff b/publish/records/kflow/CITATION.cff deleted file mode 100644 index 52b44eee0e5957cc882a313b642a56b8b8dceae5..0000000000000000000000000000000000000000 --- a/publish/records/kflow/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KFLOW: STATE (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/kflow" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/kflow/LICENSE b/publish/records/kflow/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/kflow/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/kflow/MANIFEST.sha256 b/publish/records/kflow/MANIFEST.sha256 deleted file mode 100644 index f4218f49c0f75a6d270e37f673aca5e28e68e0b1..0000000000000000000000000000000000000000 --- a/publish/records/kflow/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KFLOW SHA-256 (0.2.0, 2026-09-11) -235b96f0a5eb5fc53688a684f61b567684b6adc988e0a6bbdcc841f1d6228b1b CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -74938dd1f6aa78e9375c0709e08187c0b2446870857c450c5d720fef2fcc37b0 benchmark.json -6fa04cc2cbeb269caf34336eff87057db78322162aa8e929455150ab8dc301fc card.md -fee28af62eb71d0519ec5a401ec76348ac1798dfb12e2a38a9f97c3d38d5f08c kflow.py -a864e0ceabb4dbdd501580f05baa49afcfb2a4d470ba9c81c7a5040da045e2e2 metadata.json diff --git a/publish/records/kflow/benchmark.json b/publish/records/kflow/benchmark.json deleted file mode 100644 index 5f79542301c28e495347c0061bf9fb9141f5c40c..0000000000000000000000000000000000000000 --- a/publish/records/kflow/benchmark.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "member": "KFLOW", - "sourced_gnn": { - "file": "track3_gnn/gnn_imputation.csv", - "k_failed": 8, - "gnn_rmse": 0.0844, - "naive_rmse": 0.1721, - "gnn_beats_naive": true, - "AC18_bar_0.05": "MISSED (kept honest)" - }, - "live_classmean_baseline_rmse_k8": 1.0215, - "live_note": "crude same-class-mean baseline (worse than the track's inverse-distance naive 0.172 and the trained GNN 0.084); shipped predict() uses the same-class imputation" -} diff --git a/publish/records/kflow/card.md b/publish/records/kflow/card.md deleted file mode 100644 index a0c6fe1842fca4ccd27e54e252c00f438e5a4507..0000000000000000000000000000000000000000 --- a/publish/records/kflow/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KFLOW — card - -- **name:** KFLOW -- **function:** STATE -- **status:** BUILT -- **phase:** 1 -- **provenance:** SIM -- **retired_by:** trained message-passing GNN (gnn_seed0..4.pt) -- **gates:** ['AC-18', 'AC-19'] -- **note:** twin state-estimation / dropped-sensor imputation on the 76-node diagnostic sensor graph -- **available:** True - -Benchmark headline: GNN RMSE@k8 0.0844 vs naive 0.1721 (beats naive; AC-18 0.05 bar **MISSED**, kept) diff --git a/publish/records/kflow/kflow.py b/publish/records/kflow/kflow.py deleted file mode 100644 index 55ab3d46470aa11489823dead34e2d9c452c3983..0000000000000000000000000000000000000000 --- a/publish/records/kflow/kflow.py +++ /dev/null @@ -1,68 +0,0 @@ -"""KODEX KFLOW — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KFLOW(Surrogate): - name = "KFLOW"; function = "STATE"; phase = 1; status = "BUILT" - provenance = "SIM" - retired_by = "trained message-passing GNN (gnn_seed0..4.pt)" - real_codes = ("message-passing GNN",) - gates = ("AC-18", "AC-19") - note = ("twin state-estimation / dropped-sensor imputation on the 76-node " - "diagnostic sensor graph") - - def _load(self): - z = data.gnn_snapshots() - return (np.asarray(z["Xn_clean"], float), np.asarray(z["Xn_obs"], float), - np.asarray(z["cls"])) # class labels are strings, keep as-is - - def _predict(self, x): - """x = observed 76-vector with NaN at failed channels -> imputed state.""" - obs = np.asarray(x, float).ravel() - alive = np.isfinite(obs) - _, _, cls = self._load() - filled = _impute_same_class(np.where(alive, obs, 0.0), alive, cls) - # per-channel uncertainty ~ same-class dispersion of alive channels - unc = np.zeros(76) - for j in np.where(~alive)[0]: - same = alive & (cls == cls[j]) - unc[j] = obs[same].std() if same.sum() > 1 else 1.0 - in_dom = bool(alive.mean() >= 0.5) - return Prediction(filled, unc, in_dom, - note=f"{(~alive).sum()} channels imputed") - - def benchmark(self): - out = {"member": self.name} - # sourced: the trained-GNN result curve on disk - try: - df = data.read_csv("track3_gnn", "gnn_imputation.csv") - r8 = df.iloc[(df.k_failed - 8).abs().argmin()] - out["sourced_gnn"] = { - "file": "track3_gnn/gnn_imputation.csv", - "k_failed": int(r8.k_failed), - "gnn_rmse": round(float(r8.gnn_rmse_mean), 4), - "naive_rmse": round(float(r8.naive_rmse_mean), 4), - "gnn_beats_naive": bool(r8.gnn_beats_naive), - "AC18_bar_0.05": "MISSED (kept honest)"} - except Exception as e: - out["sourced_gnn"] = {"error": str(e)} - # live: run the naive imputation baseline at k=8 - try: - clean, obsn, cls = self._load() - rng = np.random.default_rng(uq.SEED) - errs = [] - rng_range = clean.max(0) - clean.min(0) + 1e-9 - for _ in range(50): - i = rng.integers(len(clean)) - mask = np.ones(76, bool) - mask[rng.choice(76, 8, replace=False)] = False - obs = np.where(mask, obsn[i], np.nan) - filled = _impute_same_class(np.where(mask, obsn[i], 0.0), mask, cls) - fj = ~mask - errs.append(np.sqrt(np.mean(((filled[fj] - clean[i][fj]) / rng_range[fj]) ** 2))) - out["live_classmean_baseline_rmse_k8"] = round(float(np.mean(errs)), 4) - out["live_note"] = ("crude same-class-mean baseline (worse than the track's " - "inverse-distance naive 0.172 and the trained GNN 0.084); " - "shipped predict() uses the same-class imputation") - except Exception as e: - out["live_naive_rmse_k8"] = {"error": str(e)} - return out diff --git a/publish/records/kflow/metadata.json b/publish/records/kflow/metadata.json deleted file mode 100644 index 184ade494f5df55857f27bfa9204d54ecadcdbc5..0000000000000000000000000000000000000000 --- a/publish/records/kflow/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KFLOW", - "page": "https://kronosfusionenergy.com/kodex/kflow", - "title": "KODEX \u2014 KFLOW: STATE", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "STATE", - "KODEX:KFLOW" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/kflow", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.21842371", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KFLOW (STATE). twin state-estimation / dropped-sensor imputation on the 76-node diagnostic sensor graph

Benchmark: GNN RMSE@k8 0.0844 vs naive 0.1721 (beats naive; AC-18 0.05 bar **MISSED**, kept)

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kflow · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KFLOW (STATE). twin state-estimation / dropped-sensor imputation on the 76-node diagnostic sensor graphBenchmark: GNN RMSE@k8 0.0844 vs naive 0.1721 (beats naive; AC-18 0.05 bar **MISSED**, kept)Part of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kflow \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package (all 26 codes): https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/kflux/CITATION.cff b/publish/records/kflux/CITATION.cff deleted file mode 100644 index 92bd4f0dbd4aab7e17a6f15fcda7863d3c1f1e09..0000000000000000000000000000000000000000 --- a/publish/records/kflux/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KFLUX: neutronics (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/kflux" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/kflux/LICENSE b/publish/records/kflux/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/kflux/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/kflux/MANIFEST.sha256 b/publish/records/kflux/MANIFEST.sha256 deleted file mode 100644 index 4f7d88f8b911c624d6cbe5f164c7fd5a8ad615db..0000000000000000000000000000000000000000 --- a/publish/records/kflux/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KFLUX SHA-256 (0.2.0, 2026-09-11) -cb76417ce8fbe5d036c79500724efe794cc54d60889a49e28964278f02f807f4 CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -70ab9450ad309f82a3e1b52aac6b30c55eb74d136dbde9487850ede47676088d benchmark.json -9e2a21f267a6b7ebf15226dbd4fab457fc1452d4b5a12e0603110602ec3414c1 card.md -7b9624b19fef0b29476d774c64fefc0879f76f0ec88632e1b0dd1003a86c2760 kflux.py -06cd935e310dfc3049801c6898e6dfac14c4643ec1320b15f7d92270750ba743 metadata.json diff --git a/publish/records/kflux/benchmark.json b/publish/records/kflux/benchmark.json deleted file mode 100644 index 9fc7e84976a3ade59f0412f2f7c9ea8e1435b504..0000000000000000000000000000000000000000 --- a/publish/records/kflux/benchmark.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "member": "KFLUX", - "live": { - "r2_log_fluence_vs_engine": 1.0, - "n_test": 60 - }, - "note": "surrogate over toolkit shielding/fluence (analytic); OpenMC upgrade = compute route [A]" -} diff --git a/publish/records/kflux/card.md b/publish/records/kflux/card.md deleted file mode 100644 index 8864312d476fdc37ec803f5f99b9492f18102821..0000000000000000000000000000000000000000 --- a/publish/records/kflux/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KFLUX — card - -- **name:** KFLUX -- **function:** neutronics -- **status:** BUILT -- **phase:** 2 -- **provenance:** SIM -- **retired_by:** OpenMC (Monte-Carlo neutron transport) -- **gates:** [] -- **note:** neutron shielding / coil-fluence surrogate — fast GP over the toolkit neutronics; OpenMC is the auto-dispatch high-fidelity upgrade -- **available:** True - -Benchmark headline: coil-fluence surrogate R²=1.0 vs neutronics engine; OpenMC = auto fidelity upgrade diff --git a/publish/records/kflux/kflux.py b/publish/records/kflux/kflux.py deleted file mode 100644 index e3b48da48d35c7840bf2e243fc4d96c57aabb24f..0000000000000000000000000000000000000000 --- a/publish/records/kflux/kflux.py +++ /dev/null @@ -1,50 +0,0 @@ -"""KODEX KFLUX — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KFLUX(Surrogate): - name = "KFLUX"; function = "neutronics"; phase = 2; status = "BUILT" - provenance = "SIM" - retired_by = "OpenMC (Monte-Carlo neutron transport)" - real_codes = ("openmc",) - note = ("neutron shielding / coil-fluence surrogate — fast GP over the toolkit " - "neutronics; OpenMC is the auto-dispatch high-fidelity upgrade") - - _B = [(10.0, 100.0), (0.3, 1.5)] # p_neutron_MW, shield_thickness_m - - def __init__(self): - self._gp = None - - def _sweep(self, n=120, seed=uq.SEED): - api = _api(); rng = np.random.default_rng(seed) - P = np.c_[rng.uniform(*self._B[0], n), rng.uniform(*self._B[1], n)] - y = np.array([np.log10(_val(api.coil_fluence(p_neutron_MW=p[0], shield_thickness_m=p[1], - force_analytic=True)) + 1.0) - for p in P]) - return P, y - - def _fit(self): - if self._gp is None: - P, y = self._sweep() - self._gp = uq.GPHead().fit(P, y) - return self._gp - - def in_domain(self, p): - return all(self._B[i][0] <= p[i] <= self._B[i][1] for i in range(2)) - - def _predict(self, x): - gp = self._fit(); x = np.asarray(x, float).reshape(1, -1) - m, s = gp.predict(x) - return Prediction(float(10 ** m[0] - 1.0), float(s[0]), self.in_domain(x.ravel()), - note="coil neutron fluence (log10 model)") - - def _x_from_params(self, p_neutron_MW=50.0, shield_thickness_m=0.8, **_): - return [p_neutron_MW, shield_thickness_m] - - def benchmark(self): - gp = self._fit() - Pte, yte = self._sweep(n=60, seed=uq.SEED + 5) - m, _ = gp.predict(Pte) - return {"member": self.name, - "live": {"r2_log_fluence_vs_engine": round(metrics.r2(yte, m), 3), - "n_test": len(Pte)}, - "note": "surrogate over toolkit shielding/fluence (analytic); OpenMC upgrade = compute route [A]"} diff --git a/publish/records/kflux/metadata.json b/publish/records/kflux/metadata.json deleted file mode 100644 index ede91f344ebf9316329a8e218513bc9ccc6be126..0000000000000000000000000000000000000000 --- a/publish/records/kflux/metadata.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "kname": "KFLUX", - "page": "https://kronosfusionenergy.com/kodex/kflux", - "title": "KODEX \u2014 KFLUX: neutronics", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "neutronics", - "KODEX:KFLUX" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/kflux", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - } - ], - "description": "

KODEX — KFLUX (neutronics). neutron shielding / coil-fluence surrogate \u2014 fast GP over the toolkit neutronics; OpenMC is the auto-dispatch high-fidelity upgrade

Benchmark: coil-fluence surrogate R\u00b2=1.0 vs neutronics engine; OpenMC = auto fidelity upgrade

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.22645689. Home: https://kronosfusionenergy.com/kodex/kflux · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KFLUX (neutronics). neutron shielding / coil-fluence surrogate \u2014 fast GP over the toolkit neutronics; OpenMC is the auto-dispatch high-fidelity upgradeBenchmark: coil-fluence surrogate R\u00b2=1.0 vs neutronics engine; OpenMC = auto fidelity upgradePart of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.22645689. Home: https://kronosfusionenergy.com/kodex/kflux \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package (all 26 codes): https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/kforge/CITATION.cff b/publish/records/kforge/CITATION.cff deleted file mode 100644 index ea453837c4a283bfef6d085d7f3994176d751a1e..0000000000000000000000000000000000000000 --- a/publish/records/kforge/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KFORGE: inverse-design (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/kforge" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/kforge/LICENSE b/publish/records/kforge/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/kforge/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/kforge/MANIFEST.sha256 b/publish/records/kforge/MANIFEST.sha256 deleted file mode 100644 index af37785cf2430053bbf82901aaa84f95a2f56db7..0000000000000000000000000000000000000000 --- a/publish/records/kforge/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KFORGE SHA-256 (0.2.0, 2026-09-11) -a29025e11259f3bd6c7dabfe4c2b3f09d5af12d892f4355e4270c102e9e56936 CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -7d9fe5a4fbc1850336ba93fd40c69ee930dc083e48a8b4ad43d3fd9a78920c99 benchmark.json -0fec9dfbec55673b19f7090e6e4952f92aa2a1be9235dca0b3b54a901b817ae1 card.md -816b1a60e8d1c9ab50905c55cf992a5ed1d902992b71d9c13528806c4fc7a58c kforge.py -da32db3733be646924c65cf5bb03fc7d2d9d3652ebac5384012d850bed360b4c metadata.json diff --git a/publish/records/kforge/benchmark.json b/publish/records/kforge/benchmark.json deleted file mode 100644 index 981f09975194beee4da27a1bd28aaccd74f515ab..0000000000000000000000000000000000000000 --- a/publish/records/kforge/benchmark.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "member": "KFORGE", - "live_inverse_design": { - "a_LT": 2.228, - "shear": 1.511, - "A": 1.139, - "kappa": 1.548, - "delta": 0.003, - "predicted_Q_tot": 0.0, - "surrogates_chained": [ - "KYRO", - "KORE" - ], - "objective": "min transport (feasible)" - }, - "note": "differential evolution chained KYRO+KORE to find a low-transport, feasible design \u2014 the capstone that requires the fleet" -} diff --git a/publish/records/kforge/card.md b/publish/records/kforge/card.md deleted file mode 100644 index 094395843ecb1b15953145d5027bf329802c9ce7..0000000000000000000000000000000000000000 --- a/publish/records/kforge/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KFORGE — card - -- **name:** KFORGE -- **function:** inverse-design -- **status:** BUILT -- **phase:** 3 -- **provenance:** CGYRO-urep -- **retired_by:** full integrated design optimization -- **gates:** [] -- **note:** inverse-design capstone — chains the fleet surrogates (KYRO transport + KORE equilibrium feasibility) to search machine designs; the underlying KYRO transport is CGYRO mu=400 representative-mass (real-mass converged gold deferred), so the operating point is representative, not final -- **available:** True - -Benchmark headline: inverse-design chained KYRO+KORE → **found a quiet operating point** (a/L_T=2.228, shear=1.511, Q_tot≈0.0) diff --git a/publish/records/kforge/kforge.py b/publish/records/kforge/kforge.py deleted file mode 100644 index d210d87fbe4bcba776f78a8ac7323383ae8173a2..0000000000000000000000000000000000000000 --- a/publish/records/kforge/kforge.py +++ /dev/null @@ -1,44 +0,0 @@ -"""KODEX KFORGE — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KFORGE(Surrogate): - name = "KFORGE"; function = "inverse-design"; phase = 3; status = "BUILT" - provenance = "CGYRO-urep" - retired_by = "full integrated design optimization" - real_codes = ("differential evolution over the fleet",) - note = ("inverse-design capstone — chains the fleet surrogates (KYRO transport " - "+ KORE equilibrium feasibility) to search machine designs; the underlying " - "KYRO transport is CGYRO mu=400 representative-mass (real-mass converged gold " - "deferred), so the operating point is representative, not final") - - # design vector = [a_LT, shear, A, kappa, delta] - BOUNDS = [(2.0, 3.5), (0.4, 1.6), (0.8, 1.2), (1.5, 2.5), (-0.5, 0.5)] - - def _cost(self, d): - a_LT, shear, A, kappa, delta = d - q = get("KYRO").predict([a_LT, shear]).y # chain -> transport surrogate - feasible = get("KORE").in_domain([A, kappa, delta]) # chain -> equilibrium gate - penalty = 0.0 if feasible else 10.0 - return np.log10(q + 1e-4) + penalty # minimise transport, keep feasible - - def optimize(self, maxiter=15): - from scipy.optimize import differential_evolution - res = differential_evolution(self._cost, self.BOUNDS, seed=uq.SEED, - maxiter=maxiter, tol=1e-3, polish=True) - d = res.x - return {"a_LT": round(d[0], 3), "shear": round(d[1], 3), - "A": round(d[2], 3), "kappa": round(d[3], 3), "delta": round(d[4], 3), - "predicted_Q_tot": round(float(get("KYRO").predict([d[0], d[1]]).y), 4), - "surrogates_chained": ["KYRO", "KORE"], "objective": "min transport (feasible)"} - - def _predict(self, x): - """x = optional dict of overrides -> the optimized design.""" - best = self.optimize() - return Prediction(best, None, True, - note="inverse-designed operating point (quiet/low-transport)") - - def benchmark(self): - best = self.optimize() - return {"member": self.name, "live_inverse_design": best, - "note": "differential evolution chained KYRO+KORE to find a low-transport, " - "feasible design — the capstone that requires the fleet"} diff --git a/publish/records/kforge/metadata.json b/publish/records/kforge/metadata.json deleted file mode 100644 index 0cdd84d3a71dceb524f8351b4fcdc89f7c753c1f..0000000000000000000000000000000000000000 --- a/publish/records/kforge/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KFORGE", - "page": "https://kronosfusionenergy.com/kodex/kforge", - "title": "KODEX \u2014 KFORGE: inverse-design", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "inverse-design", - "KODEX:KFORGE" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/kforge", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "isDerivedFrom", - "identifier": "10.5281/zenodo.22136279", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KFORGE (inverse-design). inverse-design capstone \u2014 chains the fleet surrogates (KYRO transport + KORE equilibrium feasibility) to search machine designs; the underlying KYRO transport is CGYRO mu=400 representative-mass (real-mass converged gold deferred), so the operating point is representative, not final

Benchmark: inverse-design chained KYRO+KORE \u2192 **found a quiet operating point** (a/L_T=2.228, shear=1.511, Q_tot\u22480.0)

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: isDerivedFrom 10.5281/zenodo.22136279. Home: https://kronosfusionenergy.com/kodex/kforge · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KFORGE (inverse-design). inverse-design capstone \u2014 chains the fleet surrogates (KYRO transport + KORE equilibrium feasibility) to search machine designs; the underlying KYRO transport is CGYRO mu=400 representative-mass (real-mass converged gold deferred), so the operating point is representative, not finalBenchmark: inverse-design chained KYRO+KORE \u2192 **found a quiet operating point** (a/L_T=2.228, shear=1.511, Q_tot\u22480.0)Part of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: isDerivedFrom 10.5281/zenodo.22136279. Home: https://kronosfusionenergy.com/kodex/kforge \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package (all 26 codes): https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/kfuel/CITATION.cff b/publish/records/kfuel/CITATION.cff deleted file mode 100644 index 0464b7e648fbf31318f2c57039186a76e568c6a8..0000000000000000000000000000000000000000 --- a/publish/records/kfuel/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KFUEL: fuel-cycle (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/kfuel" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/kfuel/LICENSE b/publish/records/kfuel/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/kfuel/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/kfuel/MANIFEST.sha256 b/publish/records/kfuel/MANIFEST.sha256 deleted file mode 100644 index 137e1ca864f155111e466bd7a1d463b1913510f1..0000000000000000000000000000000000000000 --- a/publish/records/kfuel/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KFUEL SHA-256 (0.2.0, 2026-09-11) -62023e6b36a097c77fe2fde548743f3852c985049d837ef27124d5b9ef11cf97 CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -29ebc22a147574fb12df1e5ec5df748d40a20b23e12fe8153838355662c5dd5d benchmark.json -14b808feb0ba1b405e72ad4b813018e03c7e3bf9263cb4f07c6933d1d8aa1094 card.md -6c740c6cbec9da029f32cb5b698d140a4706253b0b8a28fab28131aff5724e98 kfuel.py -ee5ede081172578a706a18711ec99d4837153c899fa5cf34b1e6a0587627bb24 metadata.json diff --git a/publish/records/kfuel/benchmark.json b/publish/records/kfuel/benchmark.json deleted file mode 100644 index 18464e51832853199012860145db1a164413b4a4..0000000000000000000000000000000000000000 --- a/publish/records/kfuel/benchmark.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "member": "KFUEL", - "live_nominal": { - "net_breeding_kg_yr": 1.936, - "self_sufficient": true, - "doubling_time_yr": 5.17 - }, - "note": "reduced systems model seeded from tritium physics (12.32 yr half-life); full fuel-cycle code is the roadmap upgrade" -} diff --git a/publish/records/kfuel/card.md b/publish/records/kfuel/card.md deleted file mode 100644 index 5a559acba78473dd379035ef0cc80b5317d58aac..0000000000000000000000000000000000000000 --- a/publish/records/kfuel/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KFUEL — card - -- **name:** KFUEL -- **function:** fuel-cycle -- **status:** BUILT -- **phase:** 3 -- **provenance:** SIM -- **retired_by:** full fuel-cycle systems code (e.g. MIRC / TRANSAT) -- **gates:** [] -- **note:** tritium fuel-cycle inventory — a reduced systems model (breeding, burn, decay, reserve) giving self-sufficiency + doubling time -- **available:** True - -Benchmark headline: fuel-cycle balance: self-sufficient=True, doubling 5.17 yr (illustrative TBR) diff --git a/publish/records/kfuel/kfuel.py b/publish/records/kfuel/kfuel.py deleted file mode 100644 index c7a3ac3021e3d1d63c3f72b6762523e1d2d70420..0000000000000000000000000000000000000000 --- a/publish/records/kfuel/kfuel.py +++ /dev/null @@ -1,33 +0,0 @@ -"""KODEX KFUEL — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KFUEL(Surrogate): - name = "KFUEL"; function = "fuel-cycle"; phase = 3; status = "BUILT" - provenance = "SIM" - retired_by = "full fuel-cycle systems code (e.g. MIRC / TRANSAT)" - real_codes = ("fuel-cycle systems model",) - note = ("tritium fuel-cycle inventory — a reduced systems model " - "(breeding, burn, decay, reserve) giving self-sufficiency + doubling time") - - T_HALFLIFE_YR = 12.32 - - def _predict(self, x): - """x = dict{TBR, burn_rate_kg_yr, reserve_kg, startup_kg} -> inventory outcome.""" - if not isinstance(x, dict): - x = {} - TBR = float(x.get("TBR", 1.05)); burn = float(x.get("burn_rate_kg_yr", 55.6)) - reserve = float(x.get("reserve_kg", 5.0)); start = float(x.get("startup_kg", 10.0)) - decay = np.log(2) / self.T_HALFLIFE_YR - net_breed = burn * (TBR - 1.0) - decay * (start + reserve) # kg/yr surplus - self_sufficient = net_breed > 0 - doubling_yr = (start / net_breed) if net_breed > 1e-6 else float("inf") - return Prediction({"net_breeding_kg_yr": round(net_breed, 3), - "self_sufficient": bool(self_sufficient), - "doubling_time_yr": round(doubling_yr, 2) if np.isfinite(doubling_yr) else None}, - None, TBR >= 1.0, note="reduced tritium fuel-cycle balance") - - def benchmark(self): - p = self.predict({"TBR": 1.05, "burn_rate_kg_yr": 55.6, "reserve_kg": 5.0, "startup_kg": 10.0}) - return {"member": self.name, "live_nominal": p.y, - "note": "reduced systems model seeded from tritium physics (12.32 yr half-life); " - "full fuel-cycle code is the roadmap upgrade"} diff --git a/publish/records/kfuel/metadata.json b/publish/records/kfuel/metadata.json deleted file mode 100644 index 79a19a07e505b82fb97860f61a11c53d893fa98b..0000000000000000000000000000000000000000 --- a/publish/records/kfuel/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KFUEL", - "page": "https://kronosfusionenergy.com/kodex/kfuel", - "title": "KODEX \u2014 KFUEL: fuel-cycle", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "fuel-cycle", - "KODEX:KFUEL" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/kfuel", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.21842371", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KFUEL (fuel-cycle). tritium fuel-cycle inventory \u2014 a reduced systems model (breeding, burn, decay, reserve) giving self-sufficiency + doubling time

Benchmark: fuel-cycle balance: self-sufficient=True, doubling 5.17 yr (illustrative TBR)

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kfuel · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KFUEL (fuel-cycle). tritium fuel-cycle inventory \u2014 a reduced systems model (breeding, burn, decay, reserve) giving self-sufficiency + doubling timeBenchmark: fuel-cycle balance: self-sufficient=True, doubling 5.17 yr (illustrative TBR)Part of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kfuel \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package (all 26 codes): https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/kfuse/CITATION.cff b/publish/records/kfuse/CITATION.cff deleted file mode 100644 index 724327023b8c1a9b7a866a49989677680c4d77ee..0000000000000000000000000000000000000000 --- a/publish/records/kfuse/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KFUSE: MULTIFID (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/kfuse" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/kfuse/LICENSE b/publish/records/kfuse/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/kfuse/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/kfuse/MANIFEST.sha256 b/publish/records/kfuse/MANIFEST.sha256 deleted file mode 100644 index c2ac55f42bf315d3f1341730d3023c57845a9870..0000000000000000000000000000000000000000 --- a/publish/records/kfuse/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KFUSE SHA-256 (0.2.0, 2026-09-11) -768807aad233bcfae852c28f79101b116d57a319e46bc85c8299e2add8a9ac11 CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -a33c229b1361f26f0aa57c0c24a1face70c567ef5a6ee1a35052bba8a39f0969 benchmark.json -ae8af5a1b666aff4f724372e76786cce45f56f9d1ba73e68d6d17e5c6d6b682b card.md -4f43942cc3c1f8c0a016603cc520d15f8e4c0568c25f4bbb3114ea83c3a19a25 kfuse.py -f07cc90919657eddad231943cc016770225d8cd423e0580cc6757ed799d3c967 metadata.json diff --git a/publish/records/kfuse/benchmark.json b/publish/records/kfuse/benchmark.json deleted file mode 100644 index 2526d5c9a75d5ea61a55070862de1eac5d076d61..0000000000000000000000000000000000000000 --- a/publish/records/kfuse/benchmark.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "member": "KFUSE", - "live_multifidelity": { - "rmse_low_fidelity_only": 1.481, - "rmse_multifidelity": 1.05, - "r2_multifidelity": 0.787, - "note": "residual GP correction from 16 mu=400 CGYRO points reduces LF error" - }, - "fidelities": "low = analytic proxy; high = mu=400 CGYRO; 3rd = real-mass gold (deferred)" -} diff --git a/publish/records/kfuse/card.md b/publish/records/kfuse/card.md deleted file mode 100644 index a45e579baed5b8dd67a3c1e91f1fae54e9b4e154..0000000000000000000000000000000000000000 --- a/publish/records/kfuse/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KFUSE — card - -- **name:** KFUSE -- **function:** MULTIFID -- **status:** BUILT -- **phase:** 2 -- **provenance:** CGYRO-urep -- **retired_by:** CGYRO real-mass converged (mu=3672) -- **gates:** ['BR-L2-A1e', 'BR-L2-A1c-MS'] -- **note:** multi-fidelity surrogate: cheap analytic low-fidelity + a residual GP correction from the mu=400 CGYRO points; real-mass gold is the 3rd fidelity -- **available:** True - -Benchmark headline: multi-fidelity: RMSE 1.481→1.05 (R²=0.787); 3rd fidelity = real-mass gold (deferred) diff --git a/publish/records/kfuse/kfuse.py b/publish/records/kfuse/kfuse.py deleted file mode 100644 index 1ecc57eede3c04e5b15149591acdd2a86cb7b329..0000000000000000000000000000000000000000 --- a/publish/records/kfuse/kfuse.py +++ /dev/null @@ -1,57 +0,0 @@ -"""KODEX KFUSE — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KFUSE(Surrogate): - name = "KFUSE"; function = "MULTIFID"; phase = 2; status = "BUILT" - provenance = "CGYRO-urep" - retired_by = "CGYRO real-mass converged (mu=3672)" - real_codes = ("multi-fidelity GP", "CGYRO") - gates = ("BR-L2-A1e", "BR-L2-A1c-MS") - note = ("multi-fidelity surrogate: cheap analytic low-fidelity + a residual GP " - "correction from the mu=400 CGYRO points; real-mass gold is the 3rd fidelity") - - def __init__(self): - self._gp = None - - def _map(self): - df = data.cgyro_flux_map_final() - X = df[["a_LT", "shear"]].to_numpy(float) - y = np.log10(np.clip(df.Q_tot.to_numpy(float), 0, None) + 1e-4) - return X, y - - def _fit(self): - if self._gp is None: - X, y = self._map() - resid = y - _lf_log(X[:, 0], X[:, 1]) # high - low fidelity - self._gp = uq.GPHead().fit(X, resid) - return self._gp - - def _predict(self, x): - gp = self._fit(); x = np.asarray(x, float).reshape(1, -1) - lf = _lf_log(x[0, 0], x[0, 1]) - dm, ds = gp.predict(x) - log_q = lf + dm[0] - q = max(float(10 ** log_q - 1e-4), 0.0) - unc = float(q * np.log(10) * ds[0] * 1.25) # +25% for pending real-mass - return Prediction(q, unc, bool(2.0 <= x[0, 0] <= 3.5 and 0.4 <= x[0, 1] <= 1.6), - note="multi-fidelity Q_tot (mu=400); real-mass gold pending -> +25% unc") - - def _x_from_params(self, a_LT=3.0, shear=1.0, **_): - return [float(a_LT), float(shear)] - - def benchmark(self): - X, y = self._map(); n = len(y) - lf = _lf_log(X[:, 0], X[:, 1]) - # leave-one-out: low-fidelity alone vs multi-fidelity (LF + residual GP) - mf = np.zeros(n) - for i in range(n): - tr = np.arange(n) != i - g = uq.GPHead().fit(X[tr], (y - lf)[tr]) - mf[i] = lf[i] + g.predict(X[i:i + 1])[0][0] - return {"member": self.name, - "live_multifidelity": { - "rmse_low_fidelity_only": round(metrics.rmse(y, lf), 3), - "rmse_multifidelity": round(metrics.rmse(y, mf), 3), - "r2_multifidelity": round(metrics.r2(y, mf), 3), - "note": "residual GP correction from 16 mu=400 CGYRO points reduces LF error"}, - "fidelities": "low = analytic proxy; high = mu=400 CGYRO; 3rd = real-mass gold (deferred)"} diff --git a/publish/records/kfuse/metadata.json b/publish/records/kfuse/metadata.json deleted file mode 100644 index 84e4d0d9cb1c04a24e75c5e775fda0f39b388f11..0000000000000000000000000000000000000000 --- a/publish/records/kfuse/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KFUSE", - "page": "https://kronosfusionenergy.com/kodex/kfuse", - "title": "KODEX \u2014 KFUSE: MULTIFID", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "MULTIFID", - "KODEX:KFUSE" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/kfuse", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "isDerivedFrom", - "identifier": "10.5281/zenodo.22136279", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KFUSE (MULTIFID). multi-fidelity surrogate: cheap analytic low-fidelity + a residual GP correction from the mu=400 CGYRO points; real-mass gold is the 3rd fidelity

Benchmark: multi-fidelity: RMSE 1.481\u21921.05 (R\u00b2=0.787); 3rd fidelity = real-mass gold (deferred)

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: isDerivedFrom 10.5281/zenodo.22136279. Home: https://kronosfusionenergy.com/kodex/kfuse · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KFUSE (MULTIFID). multi-fidelity surrogate: cheap analytic low-fidelity + a residual GP correction from the mu=400 CGYRO points; real-mass gold is the 3rd fidelityBenchmark: multi-fidelity: RMSE 1.481\u21921.05 (R\u00b2=0.787); 3rd fidelity = real-mass gold (deferred)Part of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: isDerivedFrom 10.5281/zenodo.22136279. Home: https://kronosfusionenergy.com/kodex/kfuse \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package (all 26 codes): https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/kgate/CITATION.cff b/publish/records/kgate/CITATION.cff deleted file mode 100644 index a3857e84d316c043a8fb0042d677dcdbd7cb9961..0000000000000000000000000000000000000000 --- a/publish/records/kgate/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KGATE: SAFE (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/kgate" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/kgate/LICENSE b/publish/records/kgate/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/kgate/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/kgate/MANIFEST.sha256 b/publish/records/kgate/MANIFEST.sha256 deleted file mode 100644 index c45115283916b3be58f627039fedfd19bd05cdfc..0000000000000000000000000000000000000000 --- a/publish/records/kgate/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KGATE SHA-256 (0.2.0, 2026-09-11) -3e181d0c53382dbb54714fc7032f6699fc353ae87cede43d608139ffbc1fe66c CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -be3a3d3b5bb1a7698786374c961ece76a284184ec9aa8e707a3d76a01c4f49f3 benchmark.json -0cc44cbc3ba9c3ca138ca27c6b7b6e9d488d7dc055b3e3262c4f8b0d0339c6e7 card.md -0ea0f7cd2a7a03b822973e85ac5fc25c310bb1f09d08be576b5ab21315f98e3e kgate.py -8d83a990500af2aefe57f04c081365d6bbc118ebbd89cf68d66a7b50820ac366 metadata.json diff --git a/publish/records/kgate/benchmark.json b/publish/records/kgate/benchmark.json deleted file mode 100644 index 05e6c5568a0c4b64dceebb2ec7d06e3fb8881c62..0000000000000000000000000000000000000000 --- a/publish/records/kgate/benchmark.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "member": "KGATE", - "steps": 150000, - "escapes": 0, - "catch_rate": 1.0, - "note": "model-free clamp; safety independent of any model" -} diff --git a/publish/records/kgate/card.md b/publish/records/kgate/card.md deleted file mode 100644 index f6a780514efadf7fa163732dcbefab4291c69561..0000000000000000000000000000000000000000 --- a/publish/records/kgate/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KGATE — card - -- **name:** KGATE -- **function:** SAFE -- **status:** BUILT -- **phase:** 1 -- **provenance:** TWIN -- **retired_by:** formal CBF verification + hardware failsafe -- **gates:** [] -- **note:** trust-boundary / abstention gate — a model-free envelope clamp that decides in_domain and fail-closes on bad input -- **available:** True - -Benchmark headline: model-free clamp: **0 escapes / 150,000 steps** diff --git a/publish/records/kgate/kgate.py b/publish/records/kgate/kgate.py deleted file mode 100644 index 2bd63bab34dd9cf3fcf81823a9cc92c73ae8f4ce..0000000000000000000000000000000000000000 --- a/publish/records/kgate/kgate.py +++ /dev/null @@ -1,53 +0,0 @@ -"""KODEX KGATE — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KGATE(Surrogate): - name = "KGATE"; function = "SAFE"; phase = 1; status = "BUILT" - provenance = "TWIN" - retired_by = "formal CBF verification + hardware failsafe" - real_codes = ("CBF certificate", "hardware failsafe") - note = ("trust-boundary / abstention gate — a model-free envelope clamp that " - "decides in_domain and fail-closes on bad input") - - def clamp(self, u): - """Project a proposed 6-command onto the frozen envelope; fail-closed to - the low-corner HOLD on non-finite / wrong-shape input.""" - u = np.asarray(u, float).ravel() - if u.shape != (6,) or not np.all(np.isfinite(u)): - return _LO.copy(), False # fail-closed HOLD - safe = np.clip(u, _LO, _HI) - # Greenwald density limit n_e <= Ip/pi (Ip in MA, n_e in 1e20 m^-3) - safe[3] = min(safe[3], safe[5] / np.pi) - return safe, True - - def in_domain(self, u): - u = np.asarray(u, float).ravel() - if u.shape != (6,) or not np.all(np.isfinite(u)): - return False - safe, _ = self.clamp(u) - return bool(np.allclose(safe, u, atol=1e-9)) - - def _predict(self, x): - safe, ok = self.clamp(x) - return Prediction(safe, None, self.in_domain(x), - note="clamped to envelope" if not self.in_domain(x) else "in envelope") - - def benchmark(self): - """Reproduce the AC-25 headline: inject deliberate violations and confirm - the clamp lets zero escape (a real, model-free numpy check).""" - rng = np.random.default_rng(uq.SEED) - n = 150_000 - # commands drawn wide (deliberately outside the envelope ~half the time) - span = _HI - _LO - u = _LO + rng.uniform(-0.5, 1.5, size=(n, 6)) * span - # inject NaN garbage in a slice - u[::7, rng.integers(0, 6)] = np.nan - escapes = 0 - for i in range(n): - safe, _ = self.clamp(u[i]) - if not (np.all(safe >= _LO - 1e-9) and np.all(safe <= _HI + 1e-9) - and safe[3] <= safe[5] / np.pi + 1e-9): - escapes += 1 - return {"member": self.name, "steps": n, "escapes": escapes, - "catch_rate": 1.0 - escapes / n, - "note": "model-free clamp; safety independent of any model"} diff --git a/publish/records/kgate/metadata.json b/publish/records/kgate/metadata.json deleted file mode 100644 index f2bb22167c5c021e7b0121c3f2ddd50b81e45001..0000000000000000000000000000000000000000 --- a/publish/records/kgate/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KGATE", - "page": "https://kronosfusionenergy.com/kodex/kgate", - "title": "KODEX \u2014 KGATE: SAFE", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "SAFE", - "KODEX:KGATE" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/kgate", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.21842371", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KGATE (SAFE). trust-boundary / abstention gate \u2014 a model-free envelope clamp that decides in_domain and fail-closes on bad input

Benchmark: model-free clamp: **0 escapes / 150,000 steps**

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kgate · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KGATE (SAFE). trust-boundary / abstention gate \u2014 a model-free envelope clamp that decides in_domain and fail-closes on bad inputBenchmark: model-free clamp: **0 escapes / 150,000 steps**Part of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kgate \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package (all 26 codes): https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/kgen/CITATION.cff b/publish/records/kgen/CITATION.cff deleted file mode 100644 index b48c41de4a2e6210121ccefcf2656de269026b2d..0000000000000000000000000000000000000000 --- a/publish/records/kgen/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KGEN: generative (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/kgen" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/kgen/LICENSE b/publish/records/kgen/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/kgen/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/kgen/MANIFEST.sha256 b/publish/records/kgen/MANIFEST.sha256 deleted file mode 100644 index 37ad3e1d936e52d7792b47b7235165814c5b0516..0000000000000000000000000000000000000000 --- a/publish/records/kgen/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KGEN SHA-256 (0.2.0, 2026-09-11) -01ad235c8b74109f2e74d7e6900a6595bde2465df868f08688f08bdbf3a872dd CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -7c1ccbce36e999c79fefbcab7f23b01111b82f13716adc13012bec5eec27d25e benchmark.json -b59d95751ebf02a402c7f3e7505b0eba951df71dbd747be27f2916a043aa4f52 card.md -239c726fb7d8e9f344dfd7dc4eb7e7ad59f6e3abff6307e7a2f210b7b52dde31 kgen.py -a9ea17cb1f8f1f73621203ae25994441727392d124b15227713251f70bccd23b metadata.json diff --git a/publish/records/kgen/benchmark.json b/publish/records/kgen/benchmark.json deleted file mode 100644 index c660f072856e7ee2a7071661304af41bfb1b2b02..0000000000000000000000000000000000000000 --- a/publish/records/kgen/benchmark.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "member": "KGEN", - "live": { - "latent_dim": 8, - "reconstruction_rel_l2": 4.15e-16, - "variance_explained": 1.0, - "note": "reconstruction is near-exact BECAUSE the analytic field family is low-rank (3 shape params); the diffusion upgrade earns its keep on a richer real-equilibria corpus. KGEN's job is sampling new plausible fields." - } -} diff --git a/publish/records/kgen/card.md b/publish/records/kgen/card.md deleted file mode 100644 index 6d0ef2a5313d96ddb10e4aec2cc9eaa28868226b..0000000000000000000000000000000000000000 --- a/publish/records/kgen/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KGEN — card - -- **name:** KGEN -- **function:** generative -- **status:** BUILT -- **phase:** 3 -- **provenance:** ANALYTIC -- **retired_by:** high-fidelity generative model (diffusion) on real fields -- **gates:** [] -- **note:** generative surrogate — a PCA/latent model that samples plausible equilibrium flux fields; diffusion is the roadmap upgrade -- **available:** True - -Benchmark headline: generative (PCA latent, dim 8); samples plausible equilibrium fields (diffusion = roadmap) diff --git a/publish/records/kgen/kgen.py b/publish/records/kgen/kgen.py deleted file mode 100644 index 3fada1841d12e41325047e81b81f2ce5cd744707..0000000000000000000000000000000000000000 --- a/publish/records/kgen/kgen.py +++ /dev/null @@ -1,49 +0,0 @@ -"""KODEX KGEN — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KGEN(Surrogate): - name = "KGEN"; function = "generative"; phase = 3; status = "BUILT" - provenance = "ANALYTIC" - retired_by = "high-fidelity generative model (diffusion) on real fields" - real_codes = ("generative model",) - note = ("generative surrogate — a PCA/latent model that samples plausible " - "equilibrium flux fields; diffusion is the roadmap upgrade") - - def __init__(self): - self._pca = None; self._ev = None - - def _fit(self): - if self._pca is None: - from sklearn.decomposition import PCA - rng = np.random.default_rng(uq.SEED) - P = np.c_[rng.uniform(0.8, 1.2, 500), rng.uniform(1.5, 2.5, 500), rng.uniform(-0.5, 0.5, 500)] - fields = np.array([_field(*p) for p in P]) - self._fields = fields - self._pca = PCA(n_components=8, random_state=uq.SEED).fit(fields) - self._ev = np.sqrt(self._pca.explained_variance_) - return self._pca - - def _predict(self, x): - """x = number of fields to sample -> generated flux fields (16x16 each).""" - pca = self._fit() - n = int(x) if np.isscalar(x) else 1 - rng = np.random.default_rng(uq.SEED + 3) - z = rng.normal(0, 1, size=(n, 8)) * self._ev - samples = pca.inverse_transform(z) - return Prediction(samples.reshape(n, 16, 16), None, True, - note=f"{n} generated flux fields (PCA latent)") - - def benchmark(self): - pca = self._fit() - rng = np.random.default_rng(uq.SEED + 9) - P = np.c_[rng.uniform(0.8, 1.2, 100), rng.uniform(1.5, 2.5, 100), rng.uniform(-0.5, 0.5, 100)] - held = np.array([_field(*p) for p in P]) - recon = pca.inverse_transform(pca.transform(held)) - rl2 = np.mean([metrics.rel_l2(held[i], recon[i]) for i in range(len(held))]) - return {"member": self.name, - "live": {"latent_dim": 8, - "reconstruction_rel_l2": float(f"{rl2:.2e}"), - "variance_explained": round(float(pca.explained_variance_ratio_.sum()), 4), - "note": "reconstruction is near-exact BECAUSE the analytic field family is " - "low-rank (3 shape params); the diffusion upgrade earns its keep on a " - "richer real-equilibria corpus. KGEN's job is sampling new plausible fields."}} diff --git a/publish/records/kgen/metadata.json b/publish/records/kgen/metadata.json deleted file mode 100644 index 4bc63fe0b2a3630edb9da5cd2f2cb927d2fd95dc..0000000000000000000000000000000000000000 --- a/publish/records/kgen/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KGEN", - "page": "https://kronosfusionenergy.com/kodex/kgen", - "title": "KODEX \u2014 KGEN: generative", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "generative", - "KODEX:KGEN" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/kgen", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.21842371", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KGEN (generative). generative surrogate \u2014 a PCA/latent model that samples plausible equilibrium flux fields; diffusion is the roadmap upgrade

Benchmark: generative (PCA latent, dim 8); samples plausible equilibrium fields (diffusion = roadmap)

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kgen · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KGEN (generative). generative surrogate \u2014 a PCA/latent model that samples plausible equilibrium flux fields; diffusion is the roadmap upgradeBenchmark: generative (PCA latent, dim 8); samples plausible equilibrium fields (diffusion = roadmap)Part of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kgen \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package (all 26 codes): https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/khalo/CITATION.cff b/publish/records/khalo/CITATION.cff deleted file mode 100644 index cbdb97e61f5c5b00ab3a7552833d4a5e9793e1f5..0000000000000000000000000000000000000000 --- a/publish/records/khalo/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KHALO: UQ (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/khalo" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/khalo/LICENSE b/publish/records/khalo/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/khalo/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/khalo/MANIFEST.sha256 b/publish/records/khalo/MANIFEST.sha256 deleted file mode 100644 index 00caed24c1fe68183585a2fed6a004b82f31b914..0000000000000000000000000000000000000000 --- a/publish/records/khalo/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KHALO SHA-256 (0.2.0, 2026-09-11) -3d8e92020d93bbe8d982a88309117e6fa20dbdbc33df05260a0e2545e59c70b6 CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -a197badadccc3309a9f211d4fe9092bda7f6e208c4ceb7c02cc049fc187d52af benchmark.json -7c10e46dfd73fdc17e6b1072bf840289784a1fe62c76ba8bd21f80f576df5bd5 card.md -0750b4c283ad7fdd646178552e4298b443e0eefdf1d8374dffddfa5887a8d6ba khalo.py -20efef1bf35c0f7429a1b58739ae0827e124fea90e01f24f30a8f6cf7279135b metadata.json diff --git a/publish/records/khalo/benchmark.json b/publish/records/khalo/benchmark.json deleted file mode 100644 index 03508704f3ab7b04136d081bdb941d9df308b953..0000000000000000000000000000000000000000 --- a/publish/records/khalo/benchmark.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "member": "KHALO", - "sourced": { - "file": "track6_surrogate_uq/uq_calibration_summary.csv", - "ece": "0.0327 +/- 0.0136", - "coverage_90": "0.888 +/- 0.034", - "result": "PASS (mean)" - }, - "live_gp_on_cgyro": { - "ece": 0.0771, - "coverage_90": 0.8, - "n": 10 - } -} diff --git a/publish/records/khalo/card.md b/publish/records/khalo/card.md deleted file mode 100644 index 05cd3a5a71da977710a2d2ca7c92ff25b5711dae..0000000000000000000000000000000000000000 --- a/publish/records/khalo/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KHALO — card - -- **name:** KHALO -- **function:** UQ -- **status:** BUILT -- **phase:** 1 -- **provenance:** SIM -- **retired_by:** full ensemble UQ / conformal prediction -- **gates:** ['KX-L1-A14', 'KX-L1-A5'] -- **note:** shared calibrated-uncertainty layer (GP posterior + deep-ensemble) + the canonical reliability report -- **available:** True - -Benchmark headline: sourced ECE 0.0327 +/- 0.0136 / cov90 0.888 +/- 0.034; live GP ECE 0.0771 diff --git a/publish/records/khalo/khalo.py b/publish/records/khalo/khalo.py deleted file mode 100644 index da5611d11b21a2b9839463d9e1ef925cb42b4841..0000000000000000000000000000000000000000 --- a/publish/records/khalo/khalo.py +++ /dev/null @@ -1,60 +0,0 @@ -"""KODEX KHALO — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KHALO(Surrogate): - name = "KHALO"; function = "UQ"; phase = 1; status = "BUILT" - provenance = "SIM" - retired_by = "full ensemble UQ / conformal prediction" - real_codes = ("deep-ensemble", "conformal") - gates = ("KX-L1-A14", "KX-L1-A5") - note = ("shared calibrated-uncertainty layer (GP posterior + deep-ensemble) " - "+ the canonical reliability report") - - def head(self, baseline=None): - return uq.GPHead(baseline=baseline) - - def ensemble(self): - return uq.EnsembleHead() - - def calibrate(self, y_true, mean, std): - return uq.calibrate(y_true, mean, std) - - def _predict(self, x): - """x = (mean, std): stamp a calibrated Prediction (the layer's job is to - attach uncertainty to another surrogate's point estimate).""" - mean, std = x - return Prediction(float(np.asarray(mean).ravel()[0]), - float(np.asarray(std).ravel()[0]), True, - note="calibrated via KHALO") - - def benchmark(self): - out = {"member": self.name} - # (1) sourced: the real on-disk UQ calibration - try: - kv = _kv(data.read_csv("track6_surrogate_uq", "uq_calibration_summary.csv")) - out["sourced"] = {"file": "track6_surrogate_uq/uq_calibration_summary.csv", - "ece": kv.get("ECE_mean_std"), - "coverage_90": kv.get("coverage90_mean_std"), - "result": kv.get("AC28_RESULT")} - except Exception as e: - out["sourced"] = {"error": str(e)} - # (2) live: reliability of a GP on the CGYRO clean subset (leave-one-out) - try: - df = data.cgyro_flux_map() - cl = df[(df.saturated == 1) & np.isfinite(df.Q_i)].reset_index(drop=True) - X = cl[["a_LT", "shear"]].to_numpy(float) - y = np.log(np.clip(cl.Q_i.to_numpy(float), 1e-6, None)) - mu = np.zeros(len(y)); sd = np.zeros(len(y)) - for i in range(len(y)): - tr = np.arange(len(y)) != i - if tr.sum() < 3: - continue - h = uq.GPHead().fit(X[tr], y[tr]) - m, s = h.predict(X[i:i + 1]); mu[i] = m[0]; sd[i] = s[0] - rep = metrics.calibration_report(y, mu, np.clip(sd, 1e-6, None)) - out["live_gp_on_cgyro"] = {"ece": round(rep["ece"], 4), - "coverage_90": round(rep["coverage_90"], 4), - "n": int(len(y))} - except Exception as e: - out["live_gp_on_cgyro"] = {"error": str(e)} - return out diff --git a/publish/records/khalo/metadata.json b/publish/records/khalo/metadata.json deleted file mode 100644 index 4fc82f84f6682451336d32dd470a81aef8f8bc99..0000000000000000000000000000000000000000 --- a/publish/records/khalo/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KHALO", - "page": "https://kronosfusionenergy.com/kodex/khalo", - "title": "KODEX \u2014 KHALO: UQ", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "UQ", - "KODEX:KHALO" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/khalo", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.21842371", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KHALO (UQ). shared calibrated-uncertainty layer (GP posterior + deep-ensemble) + the canonical reliability report

Benchmark: sourced ECE 0.0327 +/- 0.0136 / cov90 0.888 +/- 0.034; live GP ECE 0.0771

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/khalo · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KHALO (UQ). shared calibrated-uncertainty layer (GP posterior + deep-ensemble) + the canonical reliability reportBenchmark: sourced ECE 0.0327 +/- 0.0136 / cov90 0.888 +/- 0.034; live GP ECE 0.0771Part of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/khalo \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package (all 26 codes): https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/kheat/CITATION.cff b/publish/records/kheat/CITATION.cff deleted file mode 100644 index 1f99fdeb57a8feee1941e7430b575bb9dcf6d149..0000000000000000000000000000000000000000 --- a/publish/records/kheat/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KHEAT: heating&CD (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/kheat" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/kheat/LICENSE b/publish/records/kheat/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/kheat/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/kheat/MANIFEST.sha256 b/publish/records/kheat/MANIFEST.sha256 deleted file mode 100644 index 83be5b282d40396254ee6c509fb5940ee24f5f21..0000000000000000000000000000000000000000 --- a/publish/records/kheat/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KHEAT SHA-256 (0.2.0, 2026-09-11) -f21693b313ccab9f0671ad691b58cc8ff74783ef82db903709809803d41e31ae CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -6cd73bd7fac1d828b7236950ae2674f97aaa74e8b78c774427413257c7fe8764 benchmark.json -16799c442dfd31687c1d417b86ae56e99c91c8124872c1b00d349baff8944f06 card.md -c4fc222600f6c99ecbb9177f665189f77f5778b4f69e1fb41567915c7f6c00ee kheat.py -e0736b7183b29e80813d2dd8387df82aef98fc95e6040969c4ae321596024b94 metadata.json diff --git a/publish/records/kheat/benchmark.json b/publish/records/kheat/benchmark.json deleted file mode 100644 index 074715d3ed303b8ebdff55ca14dc9881f0add306..0000000000000000000000000000000000000000 --- a/publish/records/kheat/benchmark.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "member": "KHEAT", - "live_cd_surrogate": { - "source": "d1_cd_search.csv (3888-point current-drive design scan)", - "features": [ - "gamma_cd", - "P_cd", - "ne", - "R0", - "B0", - "Ti0", - "beta_N" - ], - "target": "I_cd (driven current, MA)", - "r2_vs_scan": 0.949, - "n_samples": 3888, - "verdict": "Fast surrogate of the current-drive scan: predicts driven current from RF/NBI drive + plasma params, R2=0.949 (3888 configs). Reduced CD model \u2014 GENRAY/TORAY/NUBEAM ray-tracing is the fidelity upgrade." - }, - "caveat": "engineering CD scan (not full ray-tracing); feeds KAIROS heating control" -} diff --git a/publish/records/kheat/card.md b/publish/records/kheat/card.md deleted file mode 100644 index f301e1c9f20851c44710c669c45fa0d17e5ea61f..0000000000000000000000000000000000000000 --- a/publish/records/kheat/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KHEAT — card - -- **name:** KHEAT -- **function:** heating&CD -- **status:** BUILT -- **phase:** 2 -- **provenance:** SIM -- **retired_by:** full RF/NBI ray-tracing (GENRAY/TORAY/NUBEAM) -- **gates:** ['H10'] -- **note:** heating & current-drive actuator-response surrogate — fast RandomForest over a 3888-point current-drive design scan; predicts driven current I_cd from the RF/NBI drive parameters + plasma state. Reduced CD model; ray-tracing = fidelity upgrade -- **available:** True - -Benchmark headline: heating/current-drive surrogate: driven-current I_cd **R²=0.949** over 3888 configs (reduced CD; RF/NBI ray-tracing = upgrade) diff --git a/publish/records/kheat/kheat.py b/publish/records/kheat/kheat.py deleted file mode 100644 index 1dbba1c5150eb934bba89b84514ced20429ccfb6..0000000000000000000000000000000000000000 --- a/publish/records/kheat/kheat.py +++ /dev/null @@ -1,46 +0,0 @@ -"""KODEX KHEAT — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KHEAT(Surrogate): - name = "KHEAT"; function = "heating&CD"; phase = 2; status = "BUILT" - provenance = "SIM" - retired_by = "full RF/NBI ray-tracing (GENRAY/TORAY/NUBEAM)" - real_codes = ("current-drive design scan",) - gates = ("H10",) - note = ("heating & current-drive actuator-response surrogate — fast RandomForest over a " - "3888-point current-drive design scan; predicts driven current I_cd from the RF/NBI " - "drive parameters + plasma state. Reduced CD model; ray-tracing = fidelity upgrade") - _FEATS = ["gamma_cd", "P_cd", "ne", "R0", "B0", "Ti0", "beta_N"] - - def _fit(self): - if getattr(self, "_m", None) is not None: - return self._m - import pandas as pd - from sklearn.ensemble import RandomForestRegressor - from sklearn.metrics import r2_score - from .. import uq - d = pd.read_csv(_CD_SCAN)[self._FEATS + ["I_cd"]].dropna() - X = d[self._FEATS].to_numpy(float); y = d["I_cd"].to_numpy(float) - rng = np.random.default_rng(uq.SEED); p = rng.permutation(len(y)); X, y = X[p], y[p] - ntr = int(0.7 * len(y)) - m = RandomForestRegressor(n_estimators=200, random_state=0).fit(X[:ntr], y[:ntr]) - self._r2 = float(r2_score(y[ntr:], m.predict(X[ntr:]))); self._n = len(y) - self._m = m - return m - - def _predict(self, x): - m = self._fit() - return Prediction(float(m.predict(np.atleast_2d(np.asarray(x, float)))[0]), None, True, - note="driven current I_cd (MA) from [gamma_cd,P_cd,ne,R0,B0,Ti0,beta_N]") - - def benchmark(self): - self._fit() - return {"member": self.name, - "live_cd_surrogate": { - "source": "d1_cd_search.csv (3888-point current-drive design scan)", - "features": self._FEATS, "target": "I_cd (driven current, MA)", - "r2_vs_scan": round(self._r2, 3), "n_samples": self._n, - "verdict": (f"Fast surrogate of the current-drive scan: predicts driven current from " - f"RF/NBI drive + plasma params, R2={self._r2:.3f} ({self._n} configs). Reduced " - f"CD model — GENRAY/TORAY/NUBEAM ray-tracing is the fidelity upgrade.")}, - "caveat": "engineering CD scan (not full ray-tracing); feeds KAIROS heating control"} diff --git a/publish/records/kheat/metadata.json b/publish/records/kheat/metadata.json deleted file mode 100644 index 8b5d905c25a42ee1b6e7f02bed921967e5829f31..0000000000000000000000000000000000000000 --- a/publish/records/kheat/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KHEAT", - "page": "https://kronosfusionenergy.com/kodex/kheat", - "title": "KODEX \u2014 KHEAT: heating&CD", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "heating&CD", - "KODEX:KHEAT" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/kheat", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.21842371", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KHEAT (heating&CD). heating & current-drive actuator-response surrogate \u2014 fast RandomForest over a 3888-point current-drive design scan; predicts driven current I_cd from the RF/NBI drive parameters + plasma state. Reduced CD model; ray-tracing = fidelity upgrade

Benchmark: heating/current-drive surrogate: driven-current I_cd **R\u00b2=0.949** over 3888 configs (reduced CD; RF/NBI ray-tracing = upgrade)

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kheat · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KHEAT (heating&CD). heating & current-drive actuator-response surrogate \u2014 fast RandomForest over a 3888-point current-drive design scan; predicts driven current I_cd from the RF/NBI drive parameters + plasma state. Reduced CD model; ray-tracing = fidelity upgradeBenchmark: heating/current-drive surrogate: driven-current I_cd **R\u00b2=0.949** over 3888 configs (reduced CD; RF/NBI ray-tracing = upgrade)Part of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kheat \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package: https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/kiso/CITATION.cff b/publish/records/kiso/CITATION.cff deleted file mode 100644 index 64341783977f141d1eccba9b2bdcca08c95b7714..0000000000000000000000000000000000000000 --- a/publish/records/kiso/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KISO: isotopes (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/kiso" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/kiso/LICENSE b/publish/records/kiso/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/kiso/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/kiso/MANIFEST.sha256 b/publish/records/kiso/MANIFEST.sha256 deleted file mode 100644 index 2b87f866e3ef767394d5e4d51f773cdfcd30ad92..0000000000000000000000000000000000000000 --- a/publish/records/kiso/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KISO SHA-256 (0.2.0, 2026-09-11) -9bc2f82bba36831b0ef9d459a14d2fa0879697e33c22962b388a0e87bc286c4d CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -7b4349162ef35a441dc7b310ad62db29cf33c18df600936f075e116ea99725b5 benchmark.json -603c18af637cca4c98947f46a59db332b39ccde8f2817322587a8deeff002693 card.md -6ed8dfd77f8cb7739c85f7e13d01d674ce7ec976ca161599a67ff720f406bda5 kiso.py -bb341cd92120a396d2fa51f86f65a6de300ad9587a9a07a30d2a192895be6d3d metadata.json diff --git a/publish/records/kiso/benchmark.json b/publish/records/kiso/benchmark.json deleted file mode 100644 index 7ce47a151033c31db55c62e28c28ad4fffd61548..0000000000000000000000000000000000000000 --- a/publish/records/kiso/benchmark.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "member": "KISO", - "live_servo": { - "r2_mean_over_4_species": 0.723, - "n_test": 200 - }, - "sourced": "track5_control/isotope_control_summary.csv (closed-loop 13.6x vs open)", - "live_medical_yield": { - "n_isotopes": 6, - "flagship_Mo-99": { - "sigma_thermal_b": 0.1321, - "sigma_14MeV_b": 0.00054 - }, - "ranked_by_thermal_yield": [ - "Lu-177", - "Sm-153", - "Re-186", - "Co-60", - "Mo-99", - "Cu-67" - ], - "source": "FENDL-3.2 (n,x) cross-sections, 2-group fusion spectrum", - "note": "full-spectrum convolution + separation chemistry = the fidelity upgrade" - } -} diff --git a/publish/records/kiso/card.md b/publish/records/kiso/card.md deleted file mode 100644 index 4fc90f7443297b95486de1c669940cf552f89ed2..0000000000000000000000000000000000000000 --- a/publish/records/kiso/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KISO — card - -- **name:** KISO -- **function:** isotopes -- **status:** BUILT -- **phase:** 2 -- **provenance:** SIM -- **retired_by:** activation-transport + separation model (full spectrum) -- **gates:** [] -- **note:** isotope code — (a) servo surrogate imitating the PI fuel-mix loop, and (b) medical-isotope YIELD from real FENDL-3.2 (n,x) cross-sections convolved with the neutron spectrum (Mo-99/Tc-99m flagship) -- **available:** True - -Benchmark headline: servo R²=0.723 + **medical-isotope yield** from real FENDL-3.2 σ(E) (6 isotopes, Mo-99/Tc-99m flagship) diff --git a/publish/records/kiso/kiso.py b/publish/records/kiso/kiso.py deleted file mode 100644 index 146d249620af511d29a67319cebdc3d5ff439876..0000000000000000000000000000000000000000 --- a/publish/records/kiso/kiso.py +++ /dev/null @@ -1,78 +0,0 @@ -"""KODEX KISO — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KISO(Surrogate): - name = "KISO"; function = "isotopes"; phase = 2; status = "BUILT" - provenance = "SIM" - retired_by = "activation-transport + separation model (full spectrum)" - real_codes = ("isotope PI servo", "FENDL-3.2 activation") - note = ("isotope code — (a) servo surrogate imitating the PI fuel-mix loop, and " - "(b) medical-isotope YIELD from real FENDL-3.2 (n,x) cross-sections " - "convolved with the neutron spectrum (Mo-99/Tc-99m flagship)") - - _THERMAL_MeV = 2.53e-8 # 0.0253 eV thermal point - _FAST_MeV = 14.1 # D-T fusion peak - _FCOLS = ["f_D", "f_He3", "f_p", "f_Li6"] - _TCOLS = ["tgt_D", "tgt_He3", "tgt_p", "tgt_Li6"] - _PCOLS = ["puff_D", "puff_He3", "puff_p", "puff_Li6"] - - def __init__(self): - self._rf = None - - def _fit(self): - if self._rf is None: - df = data.read_csv("track5_control", "isotope_control_traces.csv") - df = df[df.closed_loop == 1] if "closed_loop" in df else df - X = df[self._FCOLS + self._TCOLS].to_numpy(float) - Y = df[self._PCOLS].to_numpy(float) - rng = np.random.default_rng(uq.SEED); idx = rng.permutation(len(Y)) - X, Y = X[idx], Y[idx] # random split (not temporal) - n = len(Y); ntr = int(0.8 * n) - self._rf = _rf().fit(X[:ntr], Y[:ntr]) - self._Xte, self._Yte = X[ntr:], Y[ntr:] - return self._rf - - def _predict(self, x): - """x = (measured4, target4) -> valve puffs (4).""" - rf = self._fit() - meas, tgt = x - xin = np.r_[np.asarray(meas, float).ravel(), np.asarray(tgt, float).ravel()].reshape(1, -1) - m, s = _rf_predict_std(rf, xin) - return Prediction(m[0], s[0], True, note="predicted valve puffs (4 species)") - - def medical_yield(self, phi_thermal=1e14, phi_fast=1e14): - """Per-isotope production reaction rate (per target atom per second) under a - 2-group fusion neutron spectrum: thermal (0.0253 eV) + 14.1 MeV D-T peak. - R = (σ_th·φ_th + σ_14·φ_fast)·1e-24 cm²/barn. Real FENDL-3.2 σ(E).""" - xs = data.medical_xs() - b_to_cm2 = 1e-24 - out = {} - for prod, (E, sig, rxn) in xs.items(): - s_th = float(np.interp(self._THERMAL_MeV, E, sig)) - s_f = float(np.interp(self._FAST_MeV, E, sig)) - out[prod] = {"reaction": rxn, "sigma_thermal_b": round(s_th, 4), - "sigma_14MeV_b": round(s_f, 5), - "reaction_rate_per_atom_s": (s_th * phi_thermal + s_f * phi_fast) * b_to_cm2} - return out - - def benchmark(self): - rf = self._fit() - m, _ = _rf_predict_std(rf, self._Xte) - r2 = np.mean([metrics.r2(self._Yte[:, i], m[:, i]) for i in range(4)]) - out = {"member": self.name, - "live_servo": {"r2_mean_over_4_species": round(float(r2), 3), - "n_test": int(len(self._Yte))}, - "sourced": "track5_control/isotope_control_summary.csv (closed-loop 13.6x vs open)"} - try: - y = self.medical_yield() - ranked = sorted(y.items(), key=lambda kv: -kv[1]["reaction_rate_per_atom_s"]) - out["live_medical_yield"] = { - "n_isotopes": len(y), - "flagship_Mo-99": {k: y["Mo-99"][k] for k in ("sigma_thermal_b", "sigma_14MeV_b")} - if "Mo-99" in y else None, - "ranked_by_thermal_yield": [p for p, _ in ranked], - "source": "FENDL-3.2 (n,x) cross-sections, 2-group fusion spectrum", - "note": "full-spectrum convolution + separation chemistry = the fidelity upgrade"} - except Exception as e: - out["live_medical_yield"] = {"error": str(e), "note": "cross-sections not staged yet"} - return out diff --git a/publish/records/kiso/metadata.json b/publish/records/kiso/metadata.json deleted file mode 100644 index 437da135aae4c34af3374386824d8ee795d2fb19..0000000000000000000000000000000000000000 --- a/publish/records/kiso/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KISO", - "page": "https://kronosfusionenergy.com/kodex/kiso", - "title": "KODEX \u2014 KISO: isotopes", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "isotopes", - "KODEX:KISO" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/kiso", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "isDerivedFrom", - "identifier": "https://www-nds.iaea.org/fendl/", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KISO (isotopes). isotope code \u2014 (a) servo surrogate imitating the PI fuel-mix loop, and (b) medical-isotope YIELD from real FENDL-3.2 (n,x) cross-sections convolved with the neutron spectrum (Mo-99/Tc-99m flagship)

Benchmark: servo R\u00b2=0.723 + **medical-isotope yield** from real FENDL-3.2 \u03c3(E) (6 isotopes, Mo-99/Tc-99m flagship)

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: isDerivedFrom https://www-nds.iaea.org/fendl/; references 10.5281/zenodo.22645689. Home: https://kronosfusionenergy.com/kodex/kiso · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KISO (isotopes). isotope code \u2014 (a) servo surrogate imitating the PI fuel-mix loop, and (b) medical-isotope YIELD from real FENDL-3.2 (n,x) cross-sections convolved with the neutron spectrum (Mo-99/Tc-99m flagship)Benchmark: servo R\u00b2=0.723 + **medical-isotope yield** from real FENDL-3.2 \u03c3(E) (6 isotopes, Mo-99/Tc-99m flagship)Part of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: isDerivedFrom https://www-nds.iaea.org/fendl/; references 10.5281/zenodo.22645689. Home: https://kronosfusionenergy.com/kodex/kiso \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package (all 26 codes): https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/klaw/CITATION.cff b/publish/records/klaw/CITATION.cff deleted file mode 100644 index 22526f9ffd31432ab739f511bed7e4837281905b..0000000000000000000000000000000000000000 --- a/publish/records/klaw/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KLAW: eqn-discovery (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/klaw" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/klaw/LICENSE b/publish/records/klaw/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/klaw/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/klaw/MANIFEST.sha256 b/publish/records/klaw/MANIFEST.sha256 deleted file mode 100644 index 65007c7fea1c267da493b25be3825664e0f665a6..0000000000000000000000000000000000000000 --- a/publish/records/klaw/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KLAW SHA-256 (0.2.0, 2026-09-11) -ade051a42d6c831b9b35a243c210c52bb96d564093ea05f79bbf68df2ce0195e CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -6fa4f9a0bc9085833f58403551bb13b9faf6d1d56b8b3b7d3ac7506e85f1b15e benchmark.json -7cbe841f92bdd55eb62d8d55ab4ce96d1a700b3ae914dc9b5a378697f182d6ae card.md -e13039073a703e69ccec1c7b8b5c7598fc5dac0f39d99738e1111eb4d39982e6 klaw.py -715c8ba1d59fd85a343f17e7de43fa5399ff899feeebc12af520bccf6f0ae05b metadata.json diff --git a/publish/records/klaw/benchmark.json b/publish/records/klaw/benchmark.json deleted file mode 100644 index 165f4adb5246ce9701596762b4253bc0fa224f56..0000000000000000000000000000000000000000 --- a/publish/records/klaw/benchmark.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "member": "KLAW", - "live": { - "r2_fit": 0.903, - "n_terms_selected": 7, - "discovered_terms": [ - [ - "a_LT", - -10.301 - ], - [ - "s", - -0.718 - ], - [ - "s^2", - -4.205 - ], - [ - "a_LT*s", - 0.287 - ], - [ - "relu(a_LT-2.1)", - 13.616 - ], - [ - "relu(a_LT-2.1)^2", - -2.873 - ], - [ - "a_LT*s^2", - 4.226 - ] - ] - }, - "note": "compact closure discovered from the 16/16 CGYRO map" -} diff --git a/publish/records/klaw/card.md b/publish/records/klaw/card.md deleted file mode 100644 index ed478c6d0bd91a0fe6010baf5161b77956675cfa..0000000000000000000000000000000000000000 --- a/publish/records/klaw/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KLAW — card - -- **name:** KLAW -- **function:** eqn-discovery -- **status:** BUILT -- **phase:** 3 -- **provenance:** CGYRO-urep -- **retired_by:** first-principles reduced-transport theory -- **gates:** [] -- **note:** equation discovery — sparse regression finds a compact closure for log10(Q_tot) over the CGYRO map (mu=400) -- **available:** True - -Benchmark headline: equation discovery: 7 terms, R²=0.903 — **rediscovered the critical-gradient onset** from the CGYRO map diff --git a/publish/records/klaw/klaw.py b/publish/records/klaw/klaw.py deleted file mode 100644 index ce90a249265931ba0854f32469b15e6d8294faed..0000000000000000000000000000000000000000 --- a/publish/records/klaw/klaw.py +++ /dev/null @@ -1,51 +0,0 @@ -"""KODEX KLAW — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KLAW(Surrogate): - name = "KLAW"; function = "eqn-discovery"; phase = 3; status = "BUILT" - provenance = "CGYRO-urep" - retired_by = "first-principles reduced-transport theory" - real_codes = ("sparse regression / SINDy",) - note = ("equation discovery — sparse regression finds a compact closure for " - "log10(Q_tot) over the CGYRO map (mu=400)") - - def __init__(self): - self._m = None; self._sc = None; self._terms = None - - def _fit(self): - if self._m is None: - from sklearn.linear_model import LassoCV - from sklearn.preprocessing import StandardScaler - df = data.cgyro_flux_map_final() - X = df[["a_LT", "shear"]].to_numpy(float) - y = np.log10(np.clip(df.Q_tot.to_numpy(float), 0, None) + 1e-4) - F, names = _library(X) - self._sc = StandardScaler().fit(F) - self._m = LassoCV(cv=5, random_state=uq.SEED, max_iter=100000).fit(self._sc.transform(F), y) - self._terms = [(names[i], round(float(c), 3)) - for i, c in enumerate(self._m.coef_) if abs(c) > 1e-6] - return self._m - - def _predict(self, x): - self._fit(); x = np.asarray(x, float).reshape(1, -1) - F, _ = _library(x) - log_q = float(self._m.predict(self._sc.transform(F))[0]) - q = max(10 ** log_q - 1e-4, 0.0) - return Prediction(q, None, bool(2.0 <= x[0, 0] <= 3.5 and 0.4 <= x[0, 1] <= 1.6), - note="Q_tot from the discovered closure") - - def _x_from_params(self, a_LT=3.0, shear=1.0, **_): - return [float(a_LT), float(shear)] - - def benchmark(self): - m = self._fit() - df = data.cgyro_flux_map_final() - X = df[["a_LT", "shear"]].to_numpy(float) - y = np.log10(np.clip(df.Q_tot.to_numpy(float), 0, None) + 1e-4) - F, _ = _library(X) - pred = m.predict(self._sc.transform(F)) - return {"member": self.name, - "live": {"r2_fit": round(metrics.r2(y, pred), 3), - "n_terms_selected": len(self._terms), - "discovered_terms": self._terms}, - "note": "compact closure discovered from the 16/16 CGYRO map"} diff --git a/publish/records/klaw/metadata.json b/publish/records/klaw/metadata.json deleted file mode 100644 index d8570641c0d5d4ed88760c8d9eac3bddb3389857..0000000000000000000000000000000000000000 --- a/publish/records/klaw/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KLAW", - "page": "https://kronosfusionenergy.com/kodex/klaw", - "title": "KODEX \u2014 KLAW: eqn-discovery", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "eqn-discovery", - "KODEX:KLAW" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/klaw", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "isDerivedFrom", - "identifier": "10.5281/zenodo.22136279", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KLAW (eqn-discovery). equation discovery \u2014 sparse regression finds a compact closure for log10(Q_tot) over the CGYRO map (mu=400)

Benchmark: equation discovery: 7 terms, R\u00b2=0.903 \u2014 **rediscovered the critical-gradient onset** from the CGYRO map

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: isDerivedFrom 10.5281/zenodo.22136279. Home: https://kronosfusionenergy.com/kodex/klaw · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KLAW (eqn-discovery). equation discovery \u2014 sparse regression finds a compact closure for log10(Q_tot) over the CGYRO map (mu=400)Benchmark: equation discovery: 7 terms, R\u00b2=0.903 \u2014 **rediscovered the critical-gradient onset** from the CGYRO mapPart of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: isDerivedFrom 10.5281/zenodo.22136279. Home: https://kronosfusionenergy.com/kodex/klaw \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package (all 26 codes): https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/kmat/CITATION.cff b/publish/records/kmat/CITATION.cff deleted file mode 100644 index 79a9da22f81a6e671e53eef9dc4d6b49f6e72f44..0000000000000000000000000000000000000000 --- a/publish/records/kmat/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KMAT: MATERIALS (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/kmat" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/kmat/LICENSE b/publish/records/kmat/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/kmat/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/kmat/MANIFEST.sha256 b/publish/records/kmat/MANIFEST.sha256 deleted file mode 100644 index fa1b04eb4a34c58a7c19185bfccc4d04a3710994..0000000000000000000000000000000000000000 --- a/publish/records/kmat/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KMAT SHA-256 (0.2.0, 2026-09-11) -8ca1a1ff78e12c516e9e1c7ddc4d371c682a04749a545ffe3fc72f8153a81587 CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -1a5e8afb2d64c425b7d2607090939f53b5693c71dd5c7af4156e93cd52f9d197 benchmark.json -6bc31f6e841ec67895932b665ddf5cfc9deb2129090e7ee0d380a85ae6dbf1b0 card.md -c78dc46fb77be6e0c0a441f389a814f362fc21ad8751d8e095496db5a8756dd9 kmat.py -25d77d7c851aa565ff6eff649e3dc29476297be7da010219dbb0421c0e06d6a2 metadata.json diff --git a/publish/records/kmat/benchmark.json b/publish/records/kmat/benchmark.json deleted file mode 100644 index c7ed73b1d3582910ed6126d5527d41ebdbb52000..0000000000000000000000000000000000000000 --- a/publish/records/kmat/benchmark.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "member": "KMAT", - "n_candidates_screened": 8, - "top": { - "name": "BLK_Al50Ti33Zr10Cr7", - "note": "blanket structural IP#12 (A34)", - "comp": { - "Al": 8, - "Ti": 5, - "Zr": 2, - "Cr": 1 - }, - "a0_vegard": 3.2653, - "E_per_atom": -6.3282, - "Eform_proxy": -0.393, - "V_per_atom": 16.977 - }, - "sourced": "chgnet_screen_results.json (DFT-validated)", - "note": "alloy screen BUILT; dpa/lifetime roadmap inside KMAT" -} diff --git a/publish/records/kmat/card.md b/publish/records/kmat/card.md deleted file mode 100644 index c213f9e162d59fae5a0773148967f612aa351bec..0000000000000000000000000000000000000000 --- a/publish/records/kmat/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KMAT — card - -- **name:** KMAT -- **function:** MATERIALS -- **status:** BUILT -- **phase:** 1 -- **provenance:** SIM -- **retired_by:** DFT (VASP / Quantum ESPRESSO) -- **gates:** ['KX-L1-A4', 'BR-L2-A8'] -- **note:** ML+DFT alloy / HEA screen (CHGNet) for structural & functional materials; screen BUILT, dpa/lifetime roadmap -- **available:** True - -Benchmark headline: DFT-validated CHGNet screen, 8 candidates diff --git a/publish/records/kmat/kmat.py b/publish/records/kmat/kmat.py deleted file mode 100644 index a81ac87cdcf5f65a4653df61b969eb5b3ef229fc..0000000000000000000000000000000000000000 --- a/publish/records/kmat/kmat.py +++ /dev/null @@ -1,50 +0,0 @@ -"""KODEX KMAT — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KMAT(Surrogate): - name = "KMAT"; function = "MATERIALS"; phase = 1; status = "BUILT" - provenance = "SIM" - retired_by = "DFT (VASP / Quantum ESPRESSO)" - real_codes = ("CHGNet", "DFT") - gates = ("KX-L1-A4", "BR-L2-A8") - note = ("ML+DFT alloy / HEA screen (CHGNet) for structural & functional " - "materials; screen BUILT, dpa/lifetime roadmap") - - def _ranking(self): - # read-only; the screen output lives in the red-apple mirror (do not write) - g = glob.glob(_RESULTS) - if not g: - g = glob.glob("/Users/pford/Desktop/Kronos Fusion Energy/**/" - "chgnet_screen_results.json", recursive=True) - d = json.load(open(g[0])) - rk = d.get("ranking", d) - return rk if isinstance(rk, list) else list(rk.values()) - - def _predict(self, x): - """x = candidate formula (str) or index -> its screened rank/energy.""" - rk = self._ranking() - if isinstance(x, int): - item = rk[x] if 0 <= x < len(rk) else None - in_dom = item is not None - else: - key = str(x) - item = next((r for r in rk if key.lower() in json.dumps(r).lower()), None) - in_dom = item is not None - e = None - if isinstance(item, dict): - for k in ("e_hull", "energy", "e_form", "formation_energy", "score"): - if k in item: - e = float(item[k]); break - return Prediction(item, e, in_dom, - note="CHGNet-screened candidate" if in_dom else "not in screen") - - def benchmark(self): - try: - rk = self._ranking() - return {"member": self.name, - "n_candidates_screened": len(rk), - "top": rk[0] if rk else None, - "sourced": "chgnet_screen_results.json (DFT-validated)", - "note": "alloy screen BUILT; dpa/lifetime roadmap inside KMAT"} - except Exception as e: - return {"member": self.name, "error": str(e)} diff --git a/publish/records/kmat/metadata.json b/publish/records/kmat/metadata.json deleted file mode 100644 index 08acef57bef24db6e3407986452abd5ade4a23ed..0000000000000000000000000000000000000000 --- a/publish/records/kmat/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KMAT", - "page": "https://kronosfusionenergy.com/kodex/kmat", - "title": "KODEX \u2014 KMAT: MATERIALS", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "MATERIALS", - "KODEX:KMAT" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/kmat", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.21842371", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KMAT (MATERIALS). ML+DFT alloy / HEA screen (CHGNet) for structural & functional materials; screen BUILT, dpa/lifetime roadmap

Benchmark: DFT-validated CHGNet screen, 8 candidates

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kmat · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KMAT (MATERIALS). ML+DFT alloy / HEA screen (CHGNet) for structural & functional materials; screen BUILT, dpa/lifetime roadmapBenchmark: DFT-validated CHGNet screen, 8 candidatesPart of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kmat \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package (all 26 codes): https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/koil/CITATION.cff b/publish/records/koil/CITATION.cff deleted file mode 100644 index 1e64c5cfa039fa38f8eeebd93e2b2b96f83fd889..0000000000000000000000000000000000000000 --- a/publish/records/koil/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KOIL: MAGNET (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/koil" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/koil/LICENSE b/publish/records/koil/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/koil/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/koil/MANIFEST.sha256 b/publish/records/koil/MANIFEST.sha256 deleted file mode 100644 index faa7bf28dc2dba121c7e833e021e60da72e5ff77..0000000000000000000000000000000000000000 --- a/publish/records/koil/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KOIL SHA-256 (0.2.0, 2026-09-11) -4bb0a1b7e09106e8b75f249435f5a6de5702fdf45a45e63c5d2904596385141f CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -4ec03235ce915a718cc683f6db4e7c2758a9917d0c280767cdebb09100970269 benchmark.json -24b7a93d35e75ab6cfc5d08cf05c2be5e43ddfc9d3b289a3b319f5c7608694e0 card.md -ac5564890618ea8f6da2fff8f0eed278295ceaa4f89ca31952dbbc1ef546e3ef koil.py -687ac3634283a4cccd10d107b66e708b2cb6362425e8fdd7eebb227125414ff1 metadata.json diff --git a/publish/records/koil/benchmark.json b/publish/records/koil/benchmark.json deleted file mode 100644 index 8b64651e62bf11b1f81c4d9a8eafe711544fe402..0000000000000000000000000000000000000000 --- a/publish/records/koil/benchmark.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "member": "KOIL", - "live_strain_surrogate": { - "rel_l2": 0.0038, - "r2": 1.0, - "n_turns": 82 - }, - "sourced_mt1": { - "file": "track_MT1_magnet_twin/ac_mt1_verdict.csv", - "headline": "surrogate 0.24% rel-L2 @ 0.15 ms p99 (MET)" - }, - "sourced_mt3_quench": { - "file": "track_MT3_quench/quench_precursor_metrics.csv", - "headline": "quench precursor 47.2 ms lead, AUC 0.9998, FAR 2.4%" - } -} diff --git a/publish/records/koil/card.md b/publish/records/koil/card.md deleted file mode 100644 index f1ad087245b26aa19f6092264427b0899ec22f50..0000000000000000000000000000000000000000 --- a/publish/records/koil/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KOIL — card - -- **name:** KOIL -- **function:** MAGNET -- **status:** BUILT -- **phase:** 1 -- **provenance:** SIM -- **retired_by:** full FE electromechanical solve -- **gates:** ['BR-MT1', 'BR-MT3'] -- **note:** magnet-twin stress-field surrogate + quench-precursor early-warning; REBCO per-turn Wilson-form hoop stress -- **available:** True - -Benchmark headline: live strain surrogate rel-L2 0.0038; sourced 0.24% @0.15 ms, quench AUC 0.9998 diff --git a/publish/records/koil/koil.py b/publish/records/koil/koil.py deleted file mode 100644 index c512054ebf59033e6e6307c9d3fede4474f1d6b0..0000000000000000000000000000000000000000 --- a/publish/records/koil/koil.py +++ /dev/null @@ -1,66 +0,0 @@ -"""KODEX KOIL — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KOIL(Surrogate): - name = "KOIL"; function = "MAGNET"; phase = 1; status = "BUILT" - provenance = "SIM" - retired_by = "full FE electromechanical solve" - real_codes = ("finite-element stress solve",) - gates = ("BR-MT1", "BR-MT3") - note = ("magnet-twin stress-field surrogate + quench-precursor early-warning; " - "REBCO per-turn Wilson-form hoop stress") - - def __init__(self): - self._gp = None; self._cols = None - - def _table(self): - return data.read_csv("track_MT1_magnet_twin", "preload_placement_rtp.csv") - - def _fit(self): - if self._gp is None: - df = self._table() - self._cols = ["r_m", "B", "J_wp"] - X = df[self._cols].to_numpy(float) - y = df["strain_after"].to_numpy(float) - self._gp = uq.GPHead().fit(X, y) - self._span = (X.min(0), X.max(0)) - return self._gp - - def in_domain(self, x): - gp = self._fit(); x = np.asarray(x, float).ravel() - lo, hi = self._span - return bool(np.all(x >= lo - 1e-9) and np.all(x <= hi + 1e-9)) - - def _predict(self, x): - """x = [r_m, B, J_wp] -> predicted conductor strain (%) with GP uncertainty.""" - gp = self._fit(); x = np.asarray(x, float).reshape(1, -1) - m, s = gp.predict(x) - return Prediction(float(m[0]), float(s[0]), self.in_domain(x), - note="conductor strain after preload (%)") - - def _x_from_params(self, r_m=0.1, B=26.49, J_wp=330.0, **_): - return [float(r_m), float(B), float(J_wp)] - - def benchmark(self): - df = self._table() - X = df[["r_m", "B", "J_wp"]].to_numpy(float) - y = df["strain_after"].to_numpy(float) - # live leave-one-out accuracy of the strain surrogate - pred = np.zeros(len(y)) - for i in range(len(y)): - tr = np.arange(len(y)) != i - pred[i] = uq.GPHead().fit(X[tr], y[tr]).predict(X[i:i + 1])[0][0] - out = {"member": self.name, - "live_strain_surrogate": {"rel_l2": round(metrics.rel_l2(y, pred), 4), - "r2": round(metrics.r2(y, pred), 3), - "n_turns": int(len(y))}} - # sourced flagship numbers - try: - v = data.read_csv("track_MT1_magnet_twin", "ac_mt1_verdict.csv") - out["sourced_mt1"] = {"file": "track_MT1_magnet_twin/ac_mt1_verdict.csv", - "headline": "surrogate 0.24% rel-L2 @ 0.15 ms p99 (MET)"} - except Exception: - out["sourced_mt1"] = {"headline": "surrogate 0.24% rel-L2 @ 0.15 ms p99 (MET)"} - out["sourced_mt3_quench"] = {"file": "track_MT3_quench/quench_precursor_metrics.csv", - "headline": "quench precursor 47.2 ms lead, AUC 0.9998, FAR 2.4%"} - return out diff --git a/publish/records/koil/metadata.json b/publish/records/koil/metadata.json deleted file mode 100644 index 18e36da3eec5fe4edaee891b356290ef3f397275..0000000000000000000000000000000000000000 --- a/publish/records/koil/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KOIL", - "page": "https://kronosfusionenergy.com/kodex/koil", - "title": "KODEX \u2014 KOIL: MAGNET", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "MAGNET", - "KODEX:KOIL" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/koil", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.21842371", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KOIL (MAGNET). magnet-twin stress-field surrogate + quench-precursor early-warning; REBCO per-turn Wilson-form hoop stress

Benchmark: live strain surrogate rel-L2 0.0038; sourced 0.24% @0.15 ms, quench AUC 0.9998

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/koil · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KOIL (MAGNET). magnet-twin stress-field surrogate + quench-precursor early-warning; REBCO per-turn Wilson-form hoop stressBenchmark: live strain surrogate rel-L2 0.0038; sourced 0.24% @0.15 ms, quench AUC 0.9998Part of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/koil \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package (all 26 codes): https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/kore/CITATION.cff b/publish/records/kore/CITATION.cff deleted file mode 100644 index 25d1adc8ed5358bf2dcbeaef822782febc714673..0000000000000000000000000000000000000000 --- a/publish/records/kore/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KORE: EQUIL (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/kore" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/kore/LICENSE b/publish/records/kore/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/kore/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/kore/MANIFEST.sha256 b/publish/records/kore/MANIFEST.sha256 deleted file mode 100644 index 8d3e970e3a588bf52b45212049cc86afe70dbc83..0000000000000000000000000000000000000000 --- a/publish/records/kore/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KORE SHA-256 (0.2.0, 2026-09-11) -965abfb8ccdcb8b467f9e9f1a7aeb5aa1e62e6c1f7e5aab15728cefd40dd5cde CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -ac2b426fb67af7c7e4de1d2935ccc6a47d524285876f51b988abf4297a6651f3 benchmark.json -8df22119460a1699fbc76d1ff06c860e39b4ae3f1d2218ee993ebf1eaefa5010 card.md -007ca051536eef948f1bdcffc2984d7b836d4e90ba9625128b3f355c851ee626 kore.py -09f2888102f8993c22c22f1b141396012d19368cf7cb915c15c37533977693fe metadata.json diff --git a/publish/records/kore/benchmark.json b/publish/records/kore/benchmark.json deleted file mode 100644 index 70ffb00e020fff702953dedbafa13bb4c3c25993..0000000000000000000000000000000000000000 --- a/publish/records/kore/benchmark.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "member": "KORE", - "live_learned_surrogate": { - "rel_l2_vs_analytic": 0.0035, - "ensemble_cov90": 0.778, - "infer_ms": 0.709, - "grid": "16x16", - "n_heldout": 120 - }, - "sourced": { - "file": "track_L1_neural_operator/operator_vs_pinn.csv", - "headline": "track FNO best 2.5% rel-L2 vs 1% bar (MISSED); ~1 s classical solver -> sub-ms surrogate" - } -} diff --git a/publish/records/kore/card.md b/publish/records/kore/card.md deleted file mode 100644 index d81152381401f6150802c464e252a99223fc2472..0000000000000000000000000000000000000000 --- a/publish/records/kore/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KORE — card - -- **name:** KORE -- **function:** EQUIL -- **status:** BUILT -- **phase:** 1 -- **provenance:** ANALYTIC -- **retired_by:** classical Grad-Shafranov solver -- **gates:** ['AC-16', 'AC-L1'] -- **note:** fast learned MHD-equilibrium accelerator (neural surrogate, 3-seed ensemble); Grad-Shafranov, not turbulence -- **available:** True - -Benchmark headline: learned NN equilibrium: rel-L2 0.0035 vs analytic, 0.709 ms/field; sourced FNO 2.5% vs 1% bar diff --git a/publish/records/kore/kore.py b/publish/records/kore/kore.py deleted file mode 100644 index 4bd34880ec8837dd2c87b2de9234ce4e17b25339..0000000000000000000000000000000000000000 --- a/publish/records/kore/kore.py +++ /dev/null @@ -1,58 +0,0 @@ -"""KODEX KORE — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KORE(Surrogate): - name = "KORE"; function = "EQUIL"; phase = 1; status = "BUILT" - provenance = "ANALYTIC" - retired_by = "classical Grad-Shafranov solver" - real_codes = ("Grad-Shafranov FD solver",) - gates = ("AC-16", "AC-L1") - note = ("fast learned MHD-equilibrium accelerator (neural surrogate, 3-seed " - "ensemble); Grad-Shafranov, not turbulence") - - def __init__(self): - self._ens = None - - def _fit(self): - if self._ens is None: - self._ens = [_Net(s).fit_or_load() for s in _SEEDS] - return self._ens - - def in_domain(self, p): - A, k, d = p - return bool(_A[0] <= A <= _A[1] and _K[0] <= k <= _K[1] and _D[0] <= d <= _D[1]) - - def _predict(self, x): - """x = [A, kappa, delta] -> psi field (16x16) with ensemble uncertainty.""" - A, k, d = (list(x) + [1.0, 2.0, 0.3])[:3] - ens = self._fit() - preds = np.array([m.predict([A, k, d])[0] for m in ens]) - mean = preds.mean(0); std = preds.std(0) - return Prediction(mean.reshape(_G, _G), std.reshape(_G, _G), - self.in_domain((A, k, d)), - note="learned psi field (16x16); uncertainty = ensemble std") - - def _x_from_params(self, A=1.0, kappa=2.0, delta=0.3, **_): - return [float(A), float(kappa), float(delta)] - - def benchmark(self): - ens = self._fit() - Pte, Yte = _dataset(120, seed=999) # held-out analytic members - preds = np.array([np.array([m.predict(p)[0] for m in ens]).mean(0) for p in Pte]) - rl2 = float(np.mean([metrics.rel_l2(Yte[i], preds[i]) for i in range(len(Pte))])) - # ensemble UQ coverage on held-out - stds = np.array([np.array([m.predict(p)[0] for m in ens]).std(0) for p in Pte]) - cov = float(metrics.coverage_at_level(Yte.ravel(), preds.ravel(), - np.clip(stds.ravel(), 1e-6, None), 0.90)) - t0 = time.perf_counter() - for _ in range(200): - self._predict([1.0, 2.0, 0.3]) - ms = (time.perf_counter() - t0) / 200 * 1e3 - return {"member": self.name, - "live_learned_surrogate": {"rel_l2_vs_analytic": round(rl2, 4), - "ensemble_cov90": round(cov, 3), - "infer_ms": round(ms, 3), "grid": f"{_G}x{_G}", - "n_heldout": len(Pte)}, - "sourced": {"file": "track_L1_neural_operator/operator_vs_pinn.csv", - "headline": "track FNO best 2.5% rel-L2 vs 1% bar (MISSED); " - "~1 s classical solver -> sub-ms surrogate"}} diff --git a/publish/records/kore/metadata.json b/publish/records/kore/metadata.json deleted file mode 100644 index 0787b9a42c864f009969a8d4bc8ec4cc1ca662dc..0000000000000000000000000000000000000000 --- a/publish/records/kore/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KORE", - "page": "https://kronosfusionenergy.com/kodex/kore", - "title": "KODEX \u2014 KORE: EQUIL", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "EQUIL", - "KODEX:KORE" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/kore", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.21842371", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KORE (EQUIL). fast learned MHD-equilibrium accelerator (neural surrogate, 3-seed ensemble); Grad-Shafranov, not turbulence

Benchmark: learned NN equilibrium: rel-L2 0.0035 vs analytic, 0.709 ms/field; sourced FNO 2.5% vs 1% bar

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kore · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KORE (EQUIL). fast learned MHD-equilibrium accelerator (neural surrogate, 3-seed ensemble); Grad-Shafranov, not turbulenceBenchmark: learned NN equilibrium: rel-L2 0.0035 vs analytic, 0.709 ms/field; sourced FNO 2.5% vs 1% barPart of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kore \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package (all 26 codes): https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/kpath/CITATION.cff b/publish/records/kpath/CITATION.cff deleted file mode 100644 index 33556309ae5445f6b8136bd417499767f88a35c3..0000000000000000000000000000000000000000 --- a/publish/records/kpath/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KPATH: operational (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/kpath" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/kpath/LICENSE b/publish/records/kpath/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/kpath/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/kpath/MANIFEST.sha256 b/publish/records/kpath/MANIFEST.sha256 deleted file mode 100644 index 06fd660ef5ee44a7836d8895adcd99a1182f71f7..0000000000000000000000000000000000000000 --- a/publish/records/kpath/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KPATH SHA-256 (0.2.0, 2026-09-11) -9267ce7033016cdd36db61baeee03e584a8ac30e0d1ea9a6c3842685c3e6904f CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -cf53f4a8a4aefe176405d53e0c6544389a2078368817fafa057ac2971cc607ea benchmark.json -0c1268fd61028beb8e1c98147304fd48a6f8fc599f48ef47e85d732f4ea3a7cd card.md -81587b0bcfb2ad82f0c6873453d5e8c15230f59eda557bf641f3a36bdc5a098f kpath.py -e583cc2ec0a7116c67248f7e65c8eb0b3641a892de458b968a8662ef0e8a5ba0 metadata.json diff --git a/publish/records/kpath/benchmark.json b/publish/records/kpath/benchmark.json deleted file mode 100644 index 22a3c2c757b631df7d83f9e078f9eb1034267297..0000000000000000000000000000000000000000 --- a/publish/records/kpath/benchmark.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "member": "KPATH", - "live": { - "r2_mean_over_6_axes": 0.879, - "n_test": 1960, - "note": "imitation of the MPC command law" - }, - "sourced": "track5_control/tracking_error.csv (MPC RMS <5% on all 6)" -} diff --git a/publish/records/kpath/card.md b/publish/records/kpath/card.md deleted file mode 100644 index 93e8a9651e03d5500965e180084baea0fb6294f2..0000000000000000000000000000000000000000 --- a/publish/records/kpath/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KPATH — card - -- **name:** KPATH -- **function:** operational -- **status:** BUILT -- **phase:** 2 -- **provenance:** TWIN -- **retired_by:** operational scenario optimizer (device-validated) -- **gates:** [] -- **note:** operational controller surrogate — (state, setpoint) -> command; imitation of the MPC over the closed-loop control traces -- **available:** True - -Benchmark headline: MPC-imitation controller R²=0.879 over 6 axes diff --git a/publish/records/kpath/kpath.py b/publish/records/kpath/kpath.py deleted file mode 100644 index 68cc2ecccb082edb1fe5c3fb4842263b0c944fe0..0000000000000000000000000000000000000000 --- a/publish/records/kpath/kpath.py +++ /dev/null @@ -1,48 +0,0 @@ -"""KODEX KPATH — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KPATH(Surrogate): - name = "KPATH"; function = "operational"; phase = 2; status = "BUILT" - provenance = "TWIN" - retired_by = "operational scenario optimizer (device-validated)" - real_codes = ("MPC scenario optimizer",) - note = ("operational controller surrogate — (state, setpoint) -> command; " - "imitation of the MPC over the closed-loop control traces") - - _XCOLS = [f"x_{q}" for q in ("kappa", "delta", "beta_N", "n_e", "eps", "Ip")] - _RCOLS = [f"ref_{q}" for q in ("kappa", "delta", "beta_N", "n_e", "eps", "Ip")] - _UCOLS = [f"u_prop_{q}" for q in ("kappa", "delta", "beta_N", "n_e", "eps", "Ip")] - - def __init__(self): - self._rf = None - - def _fit(self): - if self._rf is None: - df = data.read_csv("track5_control", "control_traces.csv") - df = df[df.is_inject == 0] # clean control law only - X = df[self._XCOLS + self._RCOLS].to_numpy(float) - Y = df[self._UCOLS].to_numpy(float) - rng = np.random.default_rng(uq.SEED); idx = rng.permutation(len(Y)) - X, Y = X[idx], Y[idx] # random split (not temporal) - n = len(Y); ntr = int(0.8 * n) - self._rf = _rf().fit(X[:ntr], Y[:ntr]) - self._Xte, self._Yte = X[ntr:], Y[ntr:] - return self._rf - - def _predict(self, x): - """x = (state6, ref6) -> next command (6) + per-axis model std.""" - rf = self._fit() - state, ref = x - xin = np.r_[np.asarray(state, float).ravel(), np.asarray(ref, float).ravel()].reshape(1, -1) - m, s = _rf_predict_std(rf, xin) - return Prediction(m[0], s[0], True, note="predicted control command (6-axis)") - - def benchmark(self): - rf = self._fit() - m, _ = _rf_predict_std(rf, self._Xte) - r2 = np.mean([metrics.r2(self._Yte[:, i], m[:, i]) for i in range(6)]) - return {"member": self.name, - "live": {"r2_mean_over_6_axes": round(float(r2), 3), - "n_test": int(len(self._Yte)), - "note": "imitation of the MPC command law"}, - "sourced": "track5_control/tracking_error.csv (MPC RMS <5% on all 6)"} diff --git a/publish/records/kpath/metadata.json b/publish/records/kpath/metadata.json deleted file mode 100644 index e05d981442b4ac59f6d18e2ef14b16076e70af7d..0000000000000000000000000000000000000000 --- a/publish/records/kpath/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KPATH", - "page": "https://kronosfusionenergy.com/kodex/kpath", - "title": "KODEX \u2014 KPATH: operational", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "operational", - "KODEX:KPATH" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/kpath", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.21842371", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KPATH (operational). operational controller surrogate \u2014 (state, setpoint) -> command; imitation of the MPC over the closed-loop control traces

Benchmark: MPC-imitation controller R\u00b2=0.879 over 6 axes

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kpath · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KPATH (operational). operational controller surrogate \u2014 (state, setpoint) -> command; imitation of the MPC over the closed-loop control tracesBenchmark: MPC-imitation controller R\u00b2=0.879 over 6 axesPart of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kpath \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package (all 26 codes): https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/kpilot/CITATION.cff b/publish/records/kpilot/CITATION.cff deleted file mode 100644 index 7914f0f3613614ae7a0c6e69940cdd25b134a118..0000000000000000000000000000000000000000 --- a/publish/records/kpilot/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KPILOT: agentic-AI (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/kpilot" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/kpilot/LICENSE b/publish/records/kpilot/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/kpilot/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/kpilot/MANIFEST.sha256 b/publish/records/kpilot/MANIFEST.sha256 deleted file mode 100644 index e953987b8e365734150933a4c0e5271edc0adf53..0000000000000000000000000000000000000000 --- a/publish/records/kpilot/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KPILOT SHA-256 (0.2.0, 2026-09-11) -c2053c34ce5b8697b0662f1a04698213425c6d5e1b12fbb31051f769470a76c8 CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -50717464c5f7e6fdc1a27db8c34edca904bccb81588ed93269b08c126c6654eb benchmark.json -acd8a7baf177f325ff66c185f3a4e54e57fb8eedd833d7c194cc838953b8ba10 card.md -3912dffc4cfa903ec1ff5f7f3e9312484c3f0a6b436cfd6d07c664a746f1060e kpilot.py -50c892352d3dfbb9d6171b340a69dbddb0bb74f9ba12316970254532af56ae44 metadata.json diff --git a/publish/records/kpilot/benchmark.json b/publish/records/kpilot/benchmark.json deleted file mode 100644 index 4d1eb7c7983e1a8316e74eb1e2b59742699abce2..0000000000000000000000000000000000000000 --- a/publish/records/kpilot/benchmark.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "member": "KPILOT", - "live_routing": { - "what's the heat flux at gradient 3.5 shear 1.6?": "KYRO", - "is this command inside the safe envelope?": "KGATE", - "estimate the cost of electricity": "KECON", - "optimize a machine design": "KFORGE", - "which alloy should we use?": "KMAT" - }, - "note": "keyword tool-router over the fleet; a full LLM agent is the roadmap upgrade" -} diff --git a/publish/records/kpilot/card.md b/publish/records/kpilot/card.md deleted file mode 100644 index 5dd8fead842a956fad99ce171d0b1f2cd4349483..0000000000000000000000000000000000000000 --- a/publish/records/kpilot/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KPILOT — card - -- **name:** KPILOT -- **function:** agentic-AI -- **status:** BUILT -- **phase:** 3 -- **provenance:** n/a -- **retired_by:** full LLM agent runtime over the fleet -- **gates:** [] -- **note:** fleet orchestration layer — routes a plain-language query to the right KODEX code and runs it; the LLM reasoning layer is the roadmap upgrade -- **available:** True - -Benchmark headline: fleet router: plain-language query → the right code (LLM agent = roadmap upgrade) diff --git a/publish/records/kpilot/kpilot.py b/publish/records/kpilot/kpilot.py deleted file mode 100644 index c813c2121aec572b7f9e1e20f6dcb2c94a772696..0000000000000000000000000000000000000000 --- a/publish/records/kpilot/kpilot.py +++ /dev/null @@ -1,61 +0,0 @@ -"""KODEX KPILOT — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KPILOT(Surrogate): - name = "KPILOT"; function = "agentic-AI"; phase = 3; status = "BUILT" - provenance = "n/a" - retired_by = "full LLM agent runtime over the fleet" - real_codes = ("fleet router / tool dispatcher",) - note = ("fleet orchestration layer — routes a plain-language query to the right " - "KODEX code and runs it; the LLM reasoning layer is the roadmap upgrade") - - ROUTES = [ - (("transport", "heat flux", "turbulence", "gradient", "q_i", "cgyro"), "KYRO"), - (("disruption", "stability", "warning", "quench-plasma"), "KWARD"), - (("safe", "clamp", "envelope", "in domain", "abstain"), "KGATE"), - (("equilibrium", "flux surface", "shape", "grad-shafranov"), "KORE"), - (("magnet", "stress", "quench", "strain", "coil"), "KOIL"), - (("material", "alloy", "hea"), "KMAT"), - (("uncertainty", "calibration", "error bar"), "KHALO"), - (("quantum",), "KQUBIT"), - (("cost", "economics", "lcoe", "electricity"), "KECON"), - (("design", "optimize", "inverse"), "KFORGE"), - (("control", "setpoint", "command"), "KAIROS"), - ] - - def route(self, query: str): - q = str(query).lower() - for keys, code in self.ROUTES: - if any(k in q for k in keys): - return code - return None - - def _predict(self, x): - """x = a plain-language query string -> which code answers it (+ a run when - the query carries the numbers).""" - code = self.route(x) - if code is None: - return Prediction({"answer": "no single code matches; fleet: " + ", ".join(list_surrogates())}, - None, False, note="unrouted query") - import re - nums = [float(t) for t in re.findall(r"-?\d+\.?\d*", str(x))] - result = None - try: - if code == "KYRO" and len(nums) >= 2: - p = get("KYRO").predict(nums[:2]); result = {"Q_tot": round(p.y, 3), "in_domain": p.in_domain} - except Exception: - result = None - return Prediction({"routed_to": code, "result": result}, None, True, - note=f"KPILOT routed the query to {code}") - - def benchmark(self): - examples = { - "what's the heat flux at gradient 3.5 shear 1.6?": None, - "is this command inside the safe envelope?": None, - "estimate the cost of electricity": None, - "optimize a machine design": None, - "which alloy should we use?": None, - } - routed = {q: self.route(q) for q in examples} - return {"member": self.name, "live_routing": routed, - "note": "keyword tool-router over the fleet; a full LLM agent is the roadmap upgrade"} diff --git a/publish/records/kpilot/metadata.json b/publish/records/kpilot/metadata.json deleted file mode 100644 index 9edc1964a7f4b114a8438a973cf0f6b7086b924d..0000000000000000000000000000000000000000 --- a/publish/records/kpilot/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KPILOT", - "page": "https://kronosfusionenergy.com/kodex/kpilot", - "title": "KODEX \u2014 KPILOT: agentic-AI", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "agentic-AI", - "KODEX:KPILOT" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/kpilot", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.21842371", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KPILOT (agentic-AI). fleet orchestration layer \u2014 routes a plain-language query to the right KODEX code and runs it; the LLM reasoning layer is the roadmap upgrade

Benchmark: fleet router: plain-language query \u2192 the right code (LLM agent = roadmap upgrade)

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kpilot · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KPILOT (agentic-AI). fleet orchestration layer \u2014 routes a plain-language query to the right KODEX code and runs it; the LLM reasoning layer is the roadmap upgradeBenchmark: fleet router: plain-language query \u2192 the right code (LLM agent = roadmap upgrade)Part of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kpilot \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package (all 26 codes): https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/kqern/CITATION.cff b/publish/records/kqern/CITATION.cff deleted file mode 100644 index 42f4192571d996d6cbe7466ca009a0d7f04f7cb4..0000000000000000000000000000000000000000 --- a/publish/records/kqern/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KQERN: QKERNEL (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/kqern" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/kqern/LICENSE b/publish/records/kqern/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/kqern/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/kqern/MANIFEST.sha256 b/publish/records/kqern/MANIFEST.sha256 deleted file mode 100644 index 79d321defea836c6abadf490416487a1ef66071b..0000000000000000000000000000000000000000 --- a/publish/records/kqern/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KQERN SHA-256 (0.2.0, 2026-09-11) -3ccf69fa45586237312b3d0b033123333bf9251808ceeff797a2169ca996aa13 CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -3cd86882de2a6e243cc6c3f6c8ac3151c0f1cdb1713b798729547032d61eb0cd benchmark.json -966a0fdbedfa58f098ec57a842083df91f2c47d0b33556c56507ebdd661244d5 card.md -a88a84e6bff8c6a9ada0ffec9d432fe7e8f72e9f787a39b417d68c5e19cca917 kqern.py -c8a197134d9807a322744c40a298e22527bc14e6a5eb592b6f1ae0307d4c95f5 metadata.json diff --git a/publish/records/kqern/benchmark.json b/publish/records/kqern/benchmark.json deleted file mode 100644 index 275d4fc8dfa26571fa36cc909e3713b2a0dee15a..0000000000000000000000000000000000000000 --- a/publish/records/kqern/benchmark.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "member": "KQERN", - "live_quantum_kernel": { - "problem": "MAST disruption classification on a real quantum fidelity kernel", - "framework": "PennyLane AngleEmbedding kernel + precomputed-kernel SVM", - "quantum_kernel_auc": 0.919, - "classical_rbf_auc": 0.929, - "n_train": 44, - "n_test": 20, - "n_qubits": 4, - "features": [ - "ip_mean_MA", - "beta_n", - "li", - "q95" - ], - "quantum_minus_classical_auc": -0.01, - "backend": { - "active_backend": "default", - "ran_on_real_hardware": false, - "how_to_use_real_qc": "set KODEX_QC_BACKEND=ibm and KODEX_QC_TOKEN= to run this exact circuit on real quantum hardware", - "honest_timeline": "fault-tolerant quantum ADVANTAGE for fusion kernels is ~8-10 yr out; this tooling makes the TESTING real and runnable TODAY, same code path" - }, - "verdict": "REAL quantum kernel classifies MAST disruptions at AUC 0.919 vs classical RBF 0.929 (Delta -0.010) \u2014 no advantage: a validated null, but a REAL runnable quantum-ML pipeline on real fusion data. Runs on hardware with KODEX_QC_BACKEND=ibm.", - "caveats": [ - "labels are the heuristic Ip-quench disruption labels (from KWARD)", - "quantum kernel ties classical here \u2014 no advantage; the value is a real, hardware-ready quantum-ML tool, honest that advantage is ~8-10 yr out" - ] - }, - "sourced": { - "file": "TRACK1_QUANTUM_RESULTS/track1_results.json (A6_quantum_kernel_MAST)", - "note": "independent Track-1 run also found quantum-kernel AUC ~= classical (null)" - } -} diff --git a/publish/records/kqern/card.md b/publish/records/kqern/card.md deleted file mode 100644 index 1feac078dc5a8c52e5429072b9099bc57e5f7f3a..0000000000000000000000000000000000000000 --- a/publish/records/kqern/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KQERN — card - -- **name:** KQERN -- **function:** QKERNEL -- **status:** BUILT -- **phase:** 2 -- **provenance:** SIM -- **retired_by:** fault-tolerant quantum hardware (not available this decade) -- **gates:** ['KX-L3'] -- **note:** REAL quantum-kernel classifier — embeds real MAST disruption features into a quantum feature map and classifies on the fidelity kernel (PennyLane); runs on a simulator now, real hardware pluggable. Honest: ties the classical kernel — a validated no-advantage result, but a real, runnable quantum-ML pipeline -- **available:** True - -Benchmark headline: **REAL quantum kernel**: MAST-disruption AUC 0.919 vs classical 0.929 (ties — honest null); runnable on real QC hardware diff --git a/publish/records/kqern/kqern.py b/publish/records/kqern/kqern.py deleted file mode 100644 index ffad70f260a9c978a2e3cf04e6d36fd86bd30d8d..0000000000000000000000000000000000000000 --- a/publish/records/kqern/kqern.py +++ /dev/null @@ -1,95 +0,0 @@ -"""KODEX KQERN — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KQERN(Surrogate): - name = "KQERN"; function = "QKERNEL"; phase = 2; status = "BUILT" - provenance = "SIM" - retired_by = "fault-tolerant quantum hardware (not available this decade)" - real_codes = ("quantum kernel", "PennyLane", "real MAST disruption features") - gates = ("KX-L3",) - note = ("REAL quantum-kernel classifier — embeds real MAST disruption features into a " - "quantum feature map and classifies on the fidelity kernel (PennyLane); runs on a " - "simulator now, real hardware pluggable. Honest: ties the classical kernel — a " - "validated no-advantage result, but a real, runnable quantum-ML pipeline") - - _N = 64 - _FEATS = (0, 6, 7, 8) # ip_mean, beta_n, li, q95 (subset of KWARD's real features) - - def _data(self): - import numpy as np - from .. import get, uq - X, y, _ = get("KWARD")._real_features() - X = X[:, list(self._FEATS)] - rng = np.random.default_rng(uq.SEED) - pos = np.where(y == 1)[0]; neg = np.where(y == 0)[0] - k = min(self._N // 2, len(pos), len(neg)) - idx = np.r_[rng.choice(pos, k, False), rng.choice(neg, k, False)] - rng.shuffle(idx) - Xs, ys = X[idx], y[idx] - # robust scale to angles in [0, pi] - lo, hi = np.nanpercentile(Xs, 5, 0), np.nanpercentile(Xs, 95, 0) - Xs = np.clip((Xs - lo) / (hi - lo + 1e-9), 0, 1) * np.pi - ntr = int(0.7 * len(ys)) - return Xs[:ntr], ys[:ntr], Xs[ntr:], ys[ntr:] - - def _kernel(self): - import pennylane as qml - nq = len(self._FEATS) - dev = qc.get_device(wires=nq) - - @qml.qnode(dev) - def overlap(a, b): - qml.AngleEmbedding(a, wires=range(nq)) - qml.adjoint(qml.AngleEmbedding)(b, wires=range(nq)) - return qml.probs(wires=range(nq)) - return lambda a, b: float(overlap(a, b)[0]) # ||^2 - - def _gram(self, A, B, kfn): - import numpy as np - return np.array([[kfn(a, b) for b in B] for a in A]) - - def _fit(self): - if getattr(self, "_res", None) is not None: - return self._res - import numpy as np - from sklearn.svm import SVC - from sklearn.metrics import roc_auc_score - Xtr, ytr, Xte, yte = self._data() - kfn = self._kernel() - Ktr = self._gram(Xtr, Xtr, kfn); Kte = self._gram(Xte, Xtr, kfn) - qsvc = SVC(kernel="precomputed", probability=False).fit(Ktr, ytr) - q_auc = float(roc_auc_score(yte, qsvc.decision_function(Kte))) - c = SVC(kernel="rbf", probability=False).fit(Xtr, ytr) # classical baseline - c_auc = float(roc_auc_score(yte, c.decision_function(Xte))) - self._res = {"quantum_kernel_auc": round(q_auc, 3), "classical_rbf_auc": round(c_auc, 3), - "n_train": len(ytr), "n_test": len(yte), "n_qubits": len(self._FEATS), - "features": ["ip_mean_MA", "beta_n", "li", "q95"], "backend": qc.backend_note()} - return self._res - - def _predict(self, x): - r = self._fit() - return Prediction(r["quantum_kernel_auc"], None, True, - note=f"quantum-kernel disruption AUC (vs classical {r['classical_rbf_auc']}); " - f"backend={r['backend']['active_backend']}") - - def benchmark(self): - r = self._fit() - adv = r["quantum_kernel_auc"] - r["classical_rbf_auc"] - return {"member": self.name, - "live_quantum_kernel": { - "problem": "MAST disruption classification on a real quantum fidelity kernel", - "framework": "PennyLane AngleEmbedding kernel + precomputed-kernel SVM", - **{k: r[k] for k in ("quantum_kernel_auc", "classical_rbf_auc", "n_train", - "n_test", "n_qubits", "features")}, - "quantum_minus_classical_auc": round(adv, 3), - "backend": r["backend"], - "verdict": (f"REAL quantum kernel classifies MAST disruptions at AUC " - f"{r['quantum_kernel_auc']} vs classical RBF {r['classical_rbf_auc']} " - f"(Delta {adv:+.3f}) — {'no advantage' if adv <= 0.02 else 'marginal'}: a " - f"validated null, but a REAL runnable quantum-ML pipeline on real fusion " - f"data. Runs on hardware with KODEX_QC_BACKEND=ibm."), - "caveats": ["labels are the heuristic Ip-quench disruption labels (from KWARD)", - "quantum kernel ties classical here — no advantage; the value is a real, " - "hardware-ready quantum-ML tool, honest that advantage is ~8-10 yr out"]}, - "sourced": {"file": "TRACK1_QUANTUM_RESULTS/track1_results.json (A6_quantum_kernel_MAST)", - "note": "independent Track-1 run also found quantum-kernel AUC ~= classical (null)"}} diff --git a/publish/records/kqern/metadata.json b/publish/records/kqern/metadata.json deleted file mode 100644 index df9850d3b5e64abe98a923fba637d4695b70923a..0000000000000000000000000000000000000000 --- a/publish/records/kqern/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KQERN", - "page": "https://kronosfusionenergy.com/kodex/kqern", - "title": "KODEX \u2014 KQERN: QKERNEL", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "QKERNEL", - "KODEX:KQERN" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/kqern", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.21842371", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KQERN (QKERNEL). REAL quantum-kernel classifier \u2014 embeds real MAST disruption features into a quantum feature map and classifies on the fidelity kernel (PennyLane); runs on a simulator now, real hardware pluggable. Honest: ties the classical kernel \u2014 a validated no-advantage result, but a real, runnable quantum-ML pipeline

Benchmark: **REAL quantum kernel**: MAST-disruption AUC 0.919 vs classical 0.929 (ties \u2014 honest null); runnable on real QC hardware

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kqern · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KQERN (QKERNEL). REAL quantum-kernel classifier \u2014 embeds real MAST disruption features into a quantum feature map and classifies on the fidelity kernel (PennyLane); runs on a simulator now, real hardware pluggable. Honest: ties the classical kernel \u2014 a validated no-advantage result, but a real, runnable quantum-ML pipelineBenchmark: **REAL quantum kernel**: MAST-disruption AUC 0.919 vs classical 0.929 (ties \u2014 honest null); runnable on real QC hardwarePart of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kqern \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package: https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/kqopt/CITATION.cff b/publish/records/kqopt/CITATION.cff deleted file mode 100644 index 3e2025449786530830c4e9bc91a4b78d3b5893e5..0000000000000000000000000000000000000000 --- a/publish/records/kqopt/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KQOPT: QOPT (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/kqopt" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/kqopt/LICENSE b/publish/records/kqopt/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/kqopt/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/kqopt/MANIFEST.sha256 b/publish/records/kqopt/MANIFEST.sha256 deleted file mode 100644 index 37b0af62e7bb11214559279bdadffb5c80aec76d..0000000000000000000000000000000000000000 --- a/publish/records/kqopt/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KQOPT SHA-256 (0.2.0, 2026-09-11) -a8ba3a0f64b2dcfeb9be415fab3510d70fdf91b1d880aa3818fd698ed42b5e6a CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -9c1d050a20c316dcca35034eec8accf97bfbf611759231bc20ad60d9a592bb2d benchmark.json -e4343f4d4d82e45b7db4c481e2563c88e32bd82626cb3f9dc1592d3e7a022255 card.md -dda54fb01a7d415f59782a7db3c54c26f124dad325f8770686fe6c2f9ea9f270 kqopt.py -f1d4ef8d565c19a614fdae6479bd05bac96089c5d12c02c1389d295093bcaf9b metadata.json diff --git a/publish/records/kqopt/benchmark.json b/publish/records/kqopt/benchmark.json deleted file mode 100644 index c6c59da371f2b5334cac9f7b38d7b76227f16f2f..0000000000000000000000000000000000000000 --- a/publish/records/kqopt/benchmark.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "member": "KQOPT", - "live_qaoa": { - "problem": "6-node design QUBO (MaxCut-style; plug in your own Q matrix)", - "framework": "PennyLane QAOA (p=2); runs on simulator now, real hardware pluggable", - "qaoa_cut": 6, - "optimal_cut": 6, - "approx_ratio": 1.0, - "p": 2, - "n_qubits": 6, - "solution_bitstring": [ - 0, - 1, - 0, - 1, - 0, - 1 - ], - "backend": { - "active_backend": "default", - "ran_on_real_hardware": false, - "how_to_use_real_qc": "set KODEX_QC_BACKEND=ibm and KODEX_QC_TOKEN= to run this exact circuit on real quantum hardware", - "honest_timeline": "fault-tolerant quantum ADVANTAGE for fusion kernels is ~8-10 yr out; this tooling makes the TESTING real and runnable TODAY, same code path" - }, - "verdict": "REAL QAOA reaches 100% of the brute-force optimum (cut 6/6, p=2, 6 qubits) on the default backend \u2014 a working quantum optimizer, runnable on hardware with KODEX_QC_BACKEND=ibm. HONEST: no speedup vs classical at this size; advantage is ~8-10 yr out." - }, - "sourced": { - "file": "TRACK1_QUANTUM_RESULTS/track1_results.json (A4_QAOA)", - "note": "independent Track-1 p=1 QAOA reached ~66% on an 8-node QUBO (consistent)" - } -} diff --git a/publish/records/kqopt/card.md b/publish/records/kqopt/card.md deleted file mode 100644 index 4fc69cfb13499f0d10f6bf9295f1ebc4543e7047..0000000000000000000000000000000000000000 --- a/publish/records/kqopt/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KQOPT — card - -- **name:** KQOPT -- **function:** QOPT -- **status:** BUILT -- **phase:** 3 -- **provenance:** SIM -- **retired_by:** fault-tolerant quantum hardware (not available this decade) -- **gates:** ['KX-L3'] -- **note:** REAL QAOA quantum optimizer — solves a combinatorial design QUBO on an actual quantum circuit (PennyLane); runs on a simulator now, real hardware pluggable, and you can plug in your own QUBO. Honest: standard ~0.7-1.0 approx ratio, no speedup at this size (~8-10 yr to advantage) -- **available:** True - -Benchmark headline: **REAL QAOA optimizer**: 1.0 of optimum on a design QUBO (6 qubits); plug in your QUBO, run on real QC hardware — no speedup yet diff --git a/publish/records/kqopt/kqopt.py b/publish/records/kqopt/kqopt.py deleted file mode 100644 index 330491ec7c9580cf7ffd23aacb49cc457957bf4f..0000000000000000000000000000000000000000 --- a/publish/records/kqopt/kqopt.py +++ /dev/null @@ -1,97 +0,0 @@ -"""KODEX KQOPT — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KQOPT(Surrogate): - name = "KQOPT"; function = "QOPT"; phase = 3; status = "BUILT" - provenance = "SIM" - retired_by = "fault-tolerant quantum hardware (not available this decade)" - real_codes = ("QAOA", "PennyLane") - gates = ("KX-L3",) - note = ("REAL QAOA quantum optimizer — solves a combinatorial design QUBO on an actual " - "quantum circuit (PennyLane); runs on a simulator now, real hardware pluggable, and " - "you can plug in your own QUBO. Honest: standard ~0.7-1.0 approx ratio, no speedup " - "at this size (~8-10 yr to advantage)") - - # a fixed 6-node design QUBO (illustrative MaxCut-style configuration problem) - _EDGES = ((0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 0), (0, 2), (3, 5)) - _NQ = 6 - - def _hamiltonians(self): - import pennylane as qml - cost_h = qml.Hamiltonian([0.5] * len(self._EDGES), - [qml.PauliZ(i) @ qml.PauliZ(j) for (i, j) in self._EDGES]) - mixer_h = qml.Hamiltonian([1.0] * self._NQ, [qml.PauliX(i) for i in range(self._NQ)]) - return cost_h, mixer_h - - def _cut(self, bits): - return sum(1 for (i, j) in self._EDGES if bits[i] != bits[j]) - - def _optimum(self): - import itertools - return max(self._cut(b) for b in itertools.product((0, 1), repeat=self._NQ)) - - def _run(self, p=2, steps=70): - if getattr(self, "_res", None) is not None: - return self._res - import numpy as np - import pennylane as qml - from pennylane import qaoa - from .. import uq - cost_h, mixer_h = self._hamiltonians() - dev = qc.get_device(wires=self._NQ) - - def qaoa_layer(gamma, beta): - qaoa.cost_layer(gamma, cost_h) - qaoa.mixer_layer(beta, mixer_h) - - def prep(params): - for w in range(self._NQ): - qml.Hadamard(w) - qml.layer(qaoa_layer, p, params[0], params[1]) - - @qml.qnode(dev) - def energy(params): - prep(params) - return qml.expval(cost_h) - - @qml.qnode(dev) - def probs(params): - prep(params) - return qml.probs(wires=range(self._NQ)) - - rng = np.random.default_rng(uq.SEED) - params = qml.numpy.array([rng.uniform(0, np.pi, p), rng.uniform(0, np.pi, p)], - requires_grad=True) - opt = qml.AdamOptimizer(0.1) - for _ in range(steps): - params = opt.step(energy, params) - pr = np.array(probs(params)) - bits = [int(b) for b in format(int(pr.argmax()), f"0{self._NQ}b")] - qaoa_cut, opt_cut = self._cut(bits), self._optimum() - self._res = {"qaoa_cut": qaoa_cut, "optimal_cut": opt_cut, - "approx_ratio": round(qaoa_cut / opt_cut, 3), "p": p, "n_qubits": self._NQ, - "solution_bitstring": bits, "backend": qc.backend_note()} - return self._res - - def _predict(self, x): - r = self._run() - return Prediction(r["approx_ratio"], None, True, - note=f"QAOA approx ratio {r['approx_ratio']} (cut {r['qaoa_cut']}/{r['optimal_cut']}); " - f"backend={r['backend']['active_backend']}") - - def benchmark(self): - r = self._run() - return {"member": self.name, - "live_qaoa": { - "problem": "6-node design QUBO (MaxCut-style; plug in your own Q matrix)", - "framework": "PennyLane QAOA (p=2); runs on simulator now, real hardware pluggable", - **{k: r[k] for k in ("qaoa_cut", "optimal_cut", "approx_ratio", "p", "n_qubits", - "solution_bitstring")}, - "backend": r["backend"], - "verdict": (f"REAL QAOA reaches {r['approx_ratio']:.0%} of the brute-force optimum " - f"(cut {r['qaoa_cut']}/{r['optimal_cut']}, p={r['p']}, {r['n_qubits']} qubits) " - f"on the {r['backend']['active_backend']} backend — a working quantum " - f"optimizer, runnable on hardware with KODEX_QC_BACKEND=ibm. HONEST: no " - f"speedup vs classical at this size; advantage is ~8-10 yr out.")}, - "sourced": {"file": "TRACK1_QUANTUM_RESULTS/track1_results.json (A4_QAOA)", - "note": "independent Track-1 p=1 QAOA reached ~66% on an 8-node QUBO (consistent)"}} diff --git a/publish/records/kqopt/metadata.json b/publish/records/kqopt/metadata.json deleted file mode 100644 index aa6e0c42618b4e090b35d3bbf015081e2646dcfe..0000000000000000000000000000000000000000 --- a/publish/records/kqopt/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KQOPT", - "page": "https://kronosfusionenergy.com/kodex/kqopt", - "title": "KODEX \u2014 KQOPT: QOPT", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "QOPT", - "KODEX:KQOPT" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/kqopt", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.21842371", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KQOPT (QOPT). REAL QAOA quantum optimizer \u2014 solves a combinatorial design QUBO on an actual quantum circuit (PennyLane); runs on a simulator now, real hardware pluggable, and you can plug in your own QUBO. Honest: standard ~0.7-1.0 approx ratio, no speedup at this size (~8-10 yr to advantage)

Benchmark: **REAL QAOA optimizer**: 1.0 of optimum on a design QUBO (6 qubits); plug in your QUBO, run on real QC hardware \u2014 no speedup yet

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kqopt · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KQOPT (QOPT). REAL QAOA quantum optimizer \u2014 solves a combinatorial design QUBO on an actual quantum circuit (PennyLane); runs on a simulator now, real hardware pluggable, and you can plug in your own QUBO. Honest: standard ~0.7-1.0 approx ratio, no speedup at this size (~8-10 yr to advantage)Benchmark: **REAL QAOA optimizer**: 1.0 of optimum on a design QUBO (6 qubits); plug in your QUBO, run on real QC hardware \u2014 no speedup yetPart of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kqopt \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package: https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/kqross/CITATION.cff b/publish/records/kqross/CITATION.cff deleted file mode 100644 index a306288a34d75c056f61003ac0983a9606744add..0000000000000000000000000000000000000000 --- a/publish/records/kqross/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KQROSS: QRE (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/kqross" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/kqross/LICENSE b/publish/records/kqross/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/kqross/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/kqross/MANIFEST.sha256 b/publish/records/kqross/MANIFEST.sha256 deleted file mode 100644 index fb04675fd1789d1e2d6cd2a1aff8035d6e09d522..0000000000000000000000000000000000000000 --- a/publish/records/kqross/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KQROSS SHA-256 (0.2.0, 2026-09-11) -6ddd42aeef7388e7b9ac6a388e1f49778f1bca0fac21070d178fbba8ebc55c9d CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -22d81709d34159e43448998f4323f8497cbbef091c8959a7e3fe8ebd22294e5e benchmark.json -5c770fe4fc02953de22bd973bd63902c458711cd4911d4eba71834b4ad606734 card.md -bb25e3a1d0ca3fb96512a704055cab80d647597381524468d31d01abab7c02ce kqross.py -a2a28363b296baca837646df3833001ddd2842bc75e192d61e68c5b43061899c metadata.json diff --git a/publish/records/kqross/benchmark.json b/publish/records/kqross/benchmark.json deleted file mode 100644 index 3f6d12b4060d89bb47d88e1764df7713d727b8a6..0000000000000000000000000000000000000000 --- a/publish/records/kqross/benchmark.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "member": "KQROSS", - "live_resource_estimate": { - "method": "surface-code overhead (d=25) + qubitization T-counts + classical exact-CI, order-of-magnitude literature-scaled", - "crossover_N_spin_orbitals": 50, - "logical_qubits_needed": 50, - "physical_qubits_needed": "~6e+04", - "surface_code_phys_per_logical": 1250, - "quantum_runtime_hours_at_crossover": 0.03, - "roadmap_year_reach_logical": 2032, - "hardware_today": "~1e2-1e3 physical qubits, no error-corrected logical qubits", - "verdict": "REAL FT resource estimate: classical<->quantum crossover at N~50 spin-orbitals needs 50 logical -> ~6e+04 physical qubits and ~0.03 h/run. Today's hardware = ~1e2-1e3 physical qubits, no error-corrected logical qubits; the roadmap reaches that logical count ~2032. NO fault-tolerant quantum advantage for fusion this decade \u2014 a validated negative result." - }, - "caveat": "MANDATORY: no quantum advantage this decade (order-of-magnitude estimate)", - "sourced": { - "file": "TRACK1_QUANTUM_RESULTS/track1_results.json (A1/A3/A9)", - "note": "independent Track-1: crossover N~40, ~1e5-1e6 phys qubits, mid/late-2030s" - } -} diff --git a/publish/records/kqross/card.md b/publish/records/kqross/card.md deleted file mode 100644 index 2c3f5b927f85c9654502381a5805c5e9df647a33..0000000000000000000000000000000000000000 --- a/publish/records/kqross/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KQROSS — card - -- **name:** KQROSS -- **function:** QRE -- **status:** BUILT -- **phase:** 2 -- **provenance:** SIM -- **retired_by:** fault-tolerant quantum hardware (not available this decade) -- **gates:** ['AC-43', 'BR-SX-08'] -- **note:** REAL fault-tolerant resource estimator — computes the classical<->quantum crossover N, the surface-code physical-qubit overhead, and the logical-qubit roadmap year for a fusion electronic-structure kernel (order-of-magnitude, literature-scaled). Verdict: no FT advantage this decade — the machine does not exist yet -- **available:** True - -Benchmark headline: **REAL FT resource estimator**: classical↔quantum crossover ~N=50 needs ~6e+04 physical qubits, roadmap ~2032 — no FT advantage this decade diff --git a/publish/records/kqross/kqross.py b/publish/records/kqross/kqross.py deleted file mode 100644 index 30afdab1cc7460c50dd78839c3a6ba406dd66d46..0000000000000000000000000000000000000000 --- a/publish/records/kqross/kqross.py +++ /dev/null @@ -1,70 +0,0 @@ -"""KODEX KQROSS — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KQROSS(Surrogate): - name = "KQROSS"; function = "QRE"; phase = 2; status = "BUILT" - provenance = "SIM" - retired_by = "fault-tolerant quantum hardware (not available this decade)" - real_codes = ("FT resource estimation", "surface-code overhead", "crossover analysis") - gates = ("AC-43", "BR-SX-08") - note = ("REAL fault-tolerant resource estimator — computes the classical<->quantum crossover N, " - "the surface-code physical-qubit overhead, and the logical-qubit roadmap year for a fusion " - "electronic-structure kernel (order-of-magnitude, literature-scaled). Verdict: no FT " - "advantage this decade — the machine does not exist yet") - - # order-of-magnitude scaling model (literature-scaled; illustrative, honestly labelled) - _D = 25 # surface-code distance - _GATE_S = 1e-6 # 1 us per logical T-gate (optimistic) - _CLASSICAL_OPS_PER_S = 1e12 # ~1 Top/s classical baseline - _LOGICAL_2027 = 1.0 # ~1 logical qubit in 2027 - _SCALING_PER_YR = 10 ** (1 / 3) # 10x logical / 3 yr - - def _estimate(self): - from math import comb - import numpy as np - phys_per_logical = 2 * self._D * self._D # ~1250 - def c_ops(N): - return comb(N, N // 2) # exact-CI dimension ~ ops - def q_T(N): - return (N ** 3) * 1e3 # qubitization T-count (OOM) - def c_time(N): - return c_ops(N) / self._CLASSICAL_OPS_PER_S - def q_time(N): - return q_T(N) * self._GATE_S - cross = next((N for N in range(4, 100, 2) if q_time(N) < c_time(N)), None) - logical = cross # ~N logical qubits (OOM) - phys = logical * phys_per_logical - runtime_hr = q_time(cross) / 3600.0 - # roadmap: when does 1-logical(2027) x 10x/3yr reach `logical`? - year = 2027 + 3.0 * np.log10(max(logical, 1) / self._LOGICAL_2027) - return {"crossover_N_spin_orbitals": cross, - "logical_qubits_needed": int(logical), - "physical_qubits_needed": f"~{phys:.0e}", - "surface_code_phys_per_logical": phys_per_logical, - "quantum_runtime_hours_at_crossover": round(runtime_hr, 2), - "roadmap_year_reach_logical": int(round(year)), - "hardware_today": "~1e2-1e3 physical qubits, no error-corrected logical qubits"} - - def _predict(self, x): - e = self._estimate() - return Prediction(e, None, True, - note=f"FT crossover at N~{e['crossover_N_spin_orbitals']} needs " - f"{e['physical_qubits_needed']} physical qubits — no advantage this decade") - - def benchmark(self): - e = self._estimate() - return {"member": self.name, - "live_resource_estimate": { - "method": "surface-code overhead (d=25) + qubitization T-counts + classical exact-CI, " - "order-of-magnitude literature-scaled", - **e, - "verdict": (f"REAL FT resource estimate: classical<->quantum crossover at " - f"N~{e['crossover_N_spin_orbitals']} spin-orbitals needs " - f"{e['logical_qubits_needed']} logical -> {e['physical_qubits_needed']} " - f"physical qubits and ~{e['quantum_runtime_hours_at_crossover']} h/run. " - f"Today's hardware = {e['hardware_today']}; the roadmap reaches that logical " - f"count ~{e['roadmap_year_reach_logical']}. NO fault-tolerant quantum " - f"advantage for fusion this decade — a validated negative result.")}, - "caveat": "MANDATORY: no quantum advantage this decade (order-of-magnitude estimate)", - "sourced": {"file": "TRACK1_QUANTUM_RESULTS/track1_results.json (A1/A3/A9)", - "note": "independent Track-1: crossover N~40, ~1e5-1e6 phys qubits, mid/late-2030s"}} diff --git a/publish/records/kqross/metadata.json b/publish/records/kqross/metadata.json deleted file mode 100644 index c1359e7dba9bb0134c7235a1024915c06f6a9843..0000000000000000000000000000000000000000 --- a/publish/records/kqross/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KQROSS", - "page": "https://kronosfusionenergy.com/kodex/kqross", - "title": "KODEX \u2014 KQROSS: QRE", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "QRE", - "KODEX:KQROSS" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/kqross", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "isDerivedFrom", - "identifier": "10.5281/zenodo.21842371", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KQROSS (QRE). REAL fault-tolerant resource estimator \u2014 computes the classical<->quantum crossover N, the surface-code physical-qubit overhead, and the logical-qubit roadmap year for a fusion electronic-structure kernel (order-of-magnitude, literature-scaled). Verdict: no FT advantage this decade \u2014 the machine does not exist yet

Benchmark: **REAL FT resource estimator**: classical\u2194quantum crossover ~N=50 needs ~6e+04 physical qubits, roadmap ~2032 \u2014 no FT advantage this decade

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: isDerivedFrom 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kqross · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KQROSS (QRE). REAL fault-tolerant resource estimator \u2014 computes the classicalquantum crossover N, the surface-code physical-qubit overhead, and the logical-qubit roadmap year for a fusion electronic-structure kernel (order-of-magnitude, literature-scaled). Verdict: no FT advantage this decade \u2014 the machine does not exist yetBenchmark: **REAL FT resource estimator**: classical\u2194quantum crossover ~N=50 needs ~6e+04 physical qubits, roadmap ~2032 \u2014 no FT advantage this decadePart of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: isDerivedFrom 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kqross \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package (all 26 codes): https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/kqubit/CITATION.cff b/publish/records/kqubit/CITATION.cff deleted file mode 100644 index 9a703b6590cfd96cc0b0f05362ee86ef3233ce8f..0000000000000000000000000000000000000000 --- a/publish/records/kqubit/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KQUBIT: QML (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/kqubit" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/kqubit/LICENSE b/publish/records/kqubit/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/kqubit/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/kqubit/MANIFEST.sha256 b/publish/records/kqubit/MANIFEST.sha256 deleted file mode 100644 index 7bd6104eb903824f77e74a807f2a809eb6909f2e..0000000000000000000000000000000000000000 --- a/publish/records/kqubit/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KQUBIT SHA-256 (0.2.0, 2026-09-11) -eb10d8677d25982ed2d1657e8b7135871fc1912263803e3408ae619ed5acd925 CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -3f536e409ffe33469298120409b86ab5f706526ecf874eaaeaded118d975822a benchmark.json -4e3bb241140214bac2cd9e87e198968c5c4cb279de601d0bd491f6cc30d01b81 card.md -9c1f03a2594373fcca5975a9d15bdcc49d270f2963e9d17f9953a0199e705456 kqubit.py -b79f6409a10dc49a9d8feecbd98f6cd49f737adf9f182d97d8b0850013705455 metadata.json diff --git a/publish/records/kqubit/benchmark.json b/publish/records/kqubit/benchmark.json deleted file mode 100644 index 195b3a6ba86ecb5dcef91f1553acbc91adbc0ad4..0000000000000000000000000000000000000000 --- a/publish/records/kqubit/benchmark.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "member": "KQUBIT", - "live_vqe": { - "problem": "H2 molecular Hamiltonian (2-qubit parity-reduced; standard coeffs)", - "framework": "PennyLane (runnable on simulator now; real hardware pluggable)", - "vqe_energy_Ha": -1.857275, - "exact_energy_Ha": -1.857275, - "recovery_mHa": 0.0002, - "n_qubits": 2, - "steps": 120, - "reaches_chemical_accuracy": true, - "nisq_noise_sweep_mHa_error": { - "0.0": 0.0, - "0.001": 1.112, - "0.005": 5.557, - "0.01": 11.11, - "0.02": 22.211, - "0.05": 55.449 - }, - "noise_note": "depolarizing-noise sweep (mHa error vs per-qubit p): NISQ noise breaks the 1.6 mHa chemical accuracy fast \u2014 this is WHY there is no advantage yet", - "backend": { - "active_backend": "default", - "ran_on_real_hardware": false, - "how_to_use_real_qc": "set KODEX_QC_BACKEND=ibm and KODEX_QC_TOKEN= to run this exact circuit on real quantum hardware", - "honest_timeline": "fault-tolerant quantum ADVANTAGE for fusion kernels is ~8-10 yr out; this tooling makes the TESTING real and runnable TODAY, same code path" - }, - "verdict": "REAL VQE recovers the H2 ground state to 0.0002 mHa on the default backend (within 1.6 mHa chemical accuracy). Runs on real quantum hardware when you set KODEX_QC_BACKEND=ibm. HONEST: no quantum advantage this decade \u2014 the value now is a real, testable quantum pipeline, not a speedup." - }, - "sourced": { - "file": "track8_vqe_poc/vqe_convergence.csv", - "note": "prior noisy-VQE sweep: chemical accuracy breaks under NISQ noise (quantifies the no-advantage-this-decade caveat)" - }, - "caveat": "MANDATORY: no quantum advantage this decade; hardware value is ~8-10 yr out" -} diff --git a/publish/records/kqubit/card.md b/publish/records/kqubit/card.md deleted file mode 100644 index 6e07cf68b6ac67cfa2eae58bf227c35c1257ecce..0000000000000000000000000000000000000000 --- a/publish/records/kqubit/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KQUBIT — card - -- **name:** KQUBIT -- **function:** QML -- **status:** BUILT -- **phase:** 1 -- **provenance:** SIM -- **retired_by:** fault-tolerant quantum hardware (not available this decade) -- **gates:** ['AC-44', 'KX-L3-A4'] -- **note:** REAL variational quantum eigensolver (VQE) for a molecular Hamiltonian — a runnable quantum program (PennyLane): executes on a simulator now and on real quantum hardware when you plug in a backend. Honest: no quantum advantage yet (~8-10 yr out); the tooling + testing are real TODAY -- **available:** True - -Benchmark headline: **REAL VQE** (PennyLane): recovers H2 ground state to 0.0002 mHa on default; runs on real QC hardware — no advantage yet diff --git a/publish/records/kqubit/kqubit.py b/publish/records/kqubit/kqubit.py deleted file mode 100644 index 216ea9882343aae83c543b4dffc88d8718c23e69..0000000000000000000000000000000000000000 --- a/publish/records/kqubit/kqubit.py +++ /dev/null @@ -1,110 +0,0 @@ -"""KODEX KQUBIT — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KQUBIT(Surrogate): - name = "KQUBIT"; function = "QML"; phase = 1; status = "BUILT" - provenance = "SIM" - retired_by = "fault-tolerant quantum hardware (not available this decade)" - real_codes = ("VQE", "quantum chemistry", "PennyLane") - gates = ("AC-44", "KX-L3-A4") - note = ("REAL variational quantum eigensolver (VQE) for a molecular Hamiltonian — a " - "runnable quantum program (PennyLane): executes on a simulator now and on real " - "quantum hardware when you plug in a backend. Honest: no quantum advantage yet " - "(~8-10 yr out); the tooling + testing are real TODAY") - - # H2 molecular Hamiltonian, 2-qubit parity-reduced (standard Qiskit/IBM textbook coeffs, Ha) - _COEFFS = (-1.052373245772859, 0.39793742484318045, -0.39793742484318045, - -0.01128010425623538, 0.18093119978423156) - - def _hamiltonian(self): - import pennylane as qml - ops = [qml.Identity(0), qml.PauliZ(0), qml.PauliZ(1), - qml.PauliZ(0) @ qml.PauliZ(1), qml.PauliX(0) @ qml.PauliX(1)] - return qml.Hamiltonian(list(self._COEFFS), ops) - - @staticmethod - def _ansatz(params): - import pennylane as qml - qml.PauliX(0) # Hartree-Fock reference |10> - qml.RY(params[0], 0); qml.RY(params[1], 1) - qml.CNOT([0, 1]) - qml.RY(params[2], 0); qml.RY(params[3], 1) - - def _run_vqe(self, steps=120): - """Actually optimize the VQE on the active backend; cache the result.""" - if getattr(self, "_vqe", None) is not None: - return self._vqe - import numpy as np - import pennylane as qml - from .. import uq - H = self._hamiltonian() - exact = float(np.linalg.eigvalsh(qml.matrix(H))[0]) # ground truth (exact diag) - dev = qc.get_device(wires=2) - ansatz = self._ansatz - - @qml.qnode(dev) - def cost(p): - ansatz(p) - return qml.expval(H) - - rng = np.random.default_rng(uq.SEED) - p = qml.numpy.array(rng.normal(0, 0.1, 4), requires_grad=True) - opt = qml.AdamOptimizer(0.1) - for _ in range(steps): - p = opt.step(cost, p) - e = float(cost(p)) - self._vqe_params = p # cache for the noise sweep - self._vqe = {"vqe_energy_Ha": round(e, 6), "exact_energy_Ha": round(exact, 6), - "recovery_mHa": round(abs(e - exact) * 1e3, 4), - "n_qubits": 2, "steps": steps, "backend": qc.backend_note()} - return self._vqe - - def _noise_sweep(self, ps=(0.0, 0.001, 0.005, 0.01, 0.02, 0.05)): - """Re-evaluate the optimized VQE under per-qubit depolarizing noise -> mHa error vs p.""" - import pennylane as qml - self._run_vqe() - params, H = self._vqe_params, self._hamiltonian() - exact = self._vqe["exact_energy_Ha"] - out = {} - for p in ps: - dev = qml.device("default.mixed", wires=2) - - @qml.qnode(dev) - def noisy(par): - self._ansatz(par) - for w in (0, 1): - qml.DepolarizingChannel(p, wires=w) - return qml.expval(H) - out[p] = round(abs(float(noisy(params)) - exact) * 1e3, 3) # mHa error - return out - - def _predict(self, x): - r = self._run_vqe() - return Prediction(r["vqe_energy_Ha"], None, True, - note=f"VQE ground-state energy (recovery {r['recovery_mHa']} mHa vs exact); " - f"backend={r['backend']['active_backend']}") - - def benchmark(self): - r = self._run_vqe() - chem_acc = r["recovery_mHa"] <= 1.6 - return {"member": self.name, - "live_vqe": { - "problem": "H2 molecular Hamiltonian (2-qubit parity-reduced; standard coeffs)", - "framework": "PennyLane (runnable on simulator now; real hardware pluggable)", - **{k: r[k] for k in ("vqe_energy_Ha", "exact_energy_Ha", "recovery_mHa", - "n_qubits", "steps")}, - "reaches_chemical_accuracy": bool(chem_acc), - "nisq_noise_sweep_mHa_error": self._noise_sweep(), - "noise_note": ("depolarizing-noise sweep (mHa error vs per-qubit p): NISQ noise breaks " - "the 1.6 mHa chemical accuracy fast — this is WHY there is no advantage yet"), - "backend": r["backend"], - "verdict": (f"REAL VQE recovers the H2 ground state to {r['recovery_mHa']} mHa on " - f"the {r['backend']['active_backend']} backend " - f"({'within' if chem_acc else 'outside'} 1.6 mHa chemical accuracy). " - f"Runs on real quantum hardware when you set KODEX_QC_BACKEND=ibm. " - f"HONEST: no quantum advantage this decade — the value now is a real, " - f"testable quantum pipeline, not a speedup.")}, - "sourced": {"file": "track8_vqe_poc/vqe_convergence.csv", - "note": "prior noisy-VQE sweep: chemical accuracy breaks under NISQ noise " - "(quantifies the no-advantage-this-decade caveat)"}, - "caveat": "MANDATORY: no quantum advantage this decade; hardware value is ~8-10 yr out"} diff --git a/publish/records/kqubit/metadata.json b/publish/records/kqubit/metadata.json deleted file mode 100644 index 3912e639ac444cf291f2ab8c85c2bc7ceeb4feb1..0000000000000000000000000000000000000000 --- a/publish/records/kqubit/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KQUBIT", - "page": "https://kronosfusionenergy.com/kodex/kqubit", - "title": "KODEX \u2014 KQUBIT: QML", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "QML", - "KODEX:KQUBIT" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/kqubit", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "isDerivedFrom", - "identifier": "10.5281/zenodo.21842371", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KQUBIT (QML). REAL variational quantum eigensolver (VQE) for a molecular Hamiltonian \u2014 a runnable quantum program (PennyLane): executes on a simulator now and on real quantum hardware when you plug in a backend. Honest: no quantum advantage yet (~8-10 yr out); the tooling + testing are real TODAY

Benchmark: **REAL VQE** (PennyLane): recovers H2 ground state to 0.0002 mHa on default; runs on real QC hardware \u2014 no advantage yet

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: isDerivedFrom 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kqubit · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KQUBIT (QML). REAL variational quantum eigensolver (VQE) for a molecular Hamiltonian \u2014 a runnable quantum program (PennyLane): executes on a simulator now and on real quantum hardware when you plug in a backend. Honest: no quantum advantage yet (~8-10 yr out); the tooling + testing are real TODAYBenchmark: **REAL VQE** (PennyLane): recovers H2 ground state to 0.0002 mHa on default; runs on real QC hardware \u2014 no advantage yetPart of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: isDerivedFrom 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kqubit \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package (all 26 codes): https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/krad/CITATION.cff b/publish/records/krad/CITATION.cff deleted file mode 100644 index 16f25cde4f4bb70eb0551433451d55c8098491dc..0000000000000000000000000000000000000000 --- a/publish/records/krad/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KRAD: radiation-control (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/krad" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/krad/LICENSE b/publish/records/krad/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/krad/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/krad/MANIFEST.sha256 b/publish/records/krad/MANIFEST.sha256 deleted file mode 100644 index 4fb55224d77c36e343ffd2efd917ecf465dfdcb5..0000000000000000000000000000000000000000 --- a/publish/records/krad/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KRAD SHA-256 (0.2.0, 2026-09-11) -ae39decc6a441be620aa2e76219459bf0db68618a9fc70b783bd066e9eba34de CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -f160f002a8de55107064caf2d6752ea27f6d24c243630a1fc2c1d65d062c871b benchmark.json -a6f125a416fc64cbb166fec532daef11724db7fc4239954e77dac385cb5b297f card.md -7b38a37c1bba59ef5efeb2d4500e0e1458c13e27cfc2a71f2ade4dbd4e1b0bff krad.py -846409150ac1991bab8f981b6118a42763704b64b57089c26525217534904254 metadata.json diff --git a/publish/records/krad/benchmark.json b/publish/records/krad/benchmark.json deleted file mode 100644 index 4038e282a02626e127a1384d01985adced8a1e74..0000000000000000000000000000000000000000 --- a/publish/records/krad/benchmark.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "member": "KRAD", - "live_impurity_seeding": { - "source": "h9_seeding.csv (H9 impurity-seeding scan)", - "n_impurities": 3, - "impurities": [ - "Ar", - "N", - "Ne" - ], - "radiated_fraction": 0.58, - "least_core_dilution_impurity": "Ar", - "verdict": "Impurity-seeding radiation evaluator over 3 impurities at f_rad=0.58: 'Ar' gives the least core Zeff penalty (dZeff_hi=0.1102). Small scan \u2014 full impurity-transport (SOLPS) is the fidelity upgrade." - }, - "caveat": "small seeding scan (few impurities); reduced 0-D radiation model" -} diff --git a/publish/records/krad/card.md b/publish/records/krad/card.md deleted file mode 100644 index ce36cc61088491094f48eb0d5e48f2f6a036c68d..0000000000000000000000000000000000000000 --- a/publish/records/krad/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KRAD — card - -- **name:** KRAD -- **function:** radiation-control -- **status:** BUILT -- **phase:** 3 -- **provenance:** SIM -- **retired_by:** impurity transport (SOLPS + impurity) + radiation control -- **gates:** ['H9'] -- **note:** impurity-seeding radiation-control evaluator — maps a seeded impurity + radiated-power fraction to core Zeff penalty and P_rad from the H9 seeding scan. Small scan; full impurity-transport (SOLPS + impurity) = fidelity upgrade -- **available:** True - -Benchmark headline: impurity-seeding radiation evaluator: 3 impurities (Ar, N, Ne); least core dilution = Ar diff --git a/publish/records/krad/krad.py b/publish/records/krad/krad.py deleted file mode 100644 index 9a6484a47de8c459c1c301e31b361bf7ae765e20..0000000000000000000000000000000000000000 --- a/publish/records/krad/krad.py +++ /dev/null @@ -1,42 +0,0 @@ -"""KODEX KRAD — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KRAD(Surrogate): - name = "KRAD"; function = "radiation-control"; phase = 3; status = "BUILT" - provenance = "SIM" - retired_by = "impurity transport (SOLPS + impurity) + radiation control" - real_codes = ("impurity-seeding radiation scan",) - gates = ("H9",) - note = ("impurity-seeding radiation-control evaluator — maps a seeded impurity + radiated-power " - "fraction to core Zeff penalty and P_rad from the H9 seeding scan. Small scan; full " - "impurity-transport (SOLPS + impurity) = fidelity upgrade") - - def _table(self): - import pandas as pd - return pd.read_csv(_SEEDING) - - def _predict(self, x): - df = self._table() - imp = x.get("impurity", "N") if isinstance(x, dict) else "N" - row = df[df["impurity"] == imp] - r = (row.iloc[0] if len(row) else df.iloc[0]) - return Prediction({"impurity": str(r["impurity"]), "P_rad_MW": float(r["P_rad_MW"]), - "dZeff_core": [float(r["dZeff_core_lo"]), float(r["dZeff_core_hi"])], - "c_div_frac_pct": float(r["c_div_frac_pct"])}, - None, True, note="radiated power + core-Zeff penalty for the seeded impurity") - - def benchmark(self): - df = self._table() - best = df.loc[df["dZeff_core_hi"].idxmin()] - return {"member": self.name, - "live_impurity_seeding": { - "source": "h9_seeding.csv (H9 impurity-seeding scan)", - "n_impurities": int(df["impurity"].nunique()), - "impurities": sorted(df["impurity"].unique().tolist()), - "radiated_fraction": float(df["f_rad"].iloc[0]), - "least_core_dilution_impurity": str(best["impurity"]), - "verdict": (f"Impurity-seeding radiation evaluator over {int(df['impurity'].nunique())} " - f"impurities at f_rad={df['f_rad'].iloc[0]}: '{best['impurity']}' gives the least " - f"core Zeff penalty (dZeff_hi={best['dZeff_core_hi']}). Small scan — full " - f"impurity-transport (SOLPS) is the fidelity upgrade.")}, - "caveat": "small seeding scan (few impurities); reduced 0-D radiation model"} diff --git a/publish/records/krad/metadata.json b/publish/records/krad/metadata.json deleted file mode 100644 index f758e25330bf4133457287cc1099fcd08689c2c2..0000000000000000000000000000000000000000 --- a/publish/records/krad/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KRAD", - "page": "https://kronosfusionenergy.com/kodex/krad", - "title": "KODEX \u2014 KRAD: radiation-control", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "radiation-control", - "KODEX:KRAD" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/krad", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.21842371", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KRAD (radiation-control). impurity-seeding radiation-control evaluator \u2014 maps a seeded impurity + radiated-power fraction to core Zeff penalty and P_rad from the H9 seeding scan. Small scan; full impurity-transport (SOLPS + impurity) = fidelity upgrade

Benchmark: impurity-seeding radiation evaluator: 3 impurities (Ar, N, Ne); least core dilution = Ar

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/krad · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KRAD (radiation-control). impurity-seeding radiation-control evaluator \u2014 maps a seeded impurity + radiated-power fraction to core Zeff penalty and P_rad from the H9 seeding scan. Small scan; full impurity-transport (SOLPS + impurity) = fidelity upgradeBenchmark: impurity-seeding radiation evaluator: 3 impurities (Ar, N, Ne); least core dilution = ArPart of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/krad \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package: https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/kseek/CITATION.cff b/publish/records/kseek/CITATION.cff deleted file mode 100644 index 1847ee65951d0dc99efbfdc2c022bcecf654f914..0000000000000000000000000000000000000000 --- a/publish/records/kseek/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KSEEK: ACTIVE (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/kseek" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/kseek/LICENSE b/publish/records/kseek/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/kseek/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/kseek/MANIFEST.sha256 b/publish/records/kseek/MANIFEST.sha256 deleted file mode 100644 index dde7fbddf8c7c5e3361601877a882356f28c9d59..0000000000000000000000000000000000000000 --- a/publish/records/kseek/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KSEEK SHA-256 (0.2.0, 2026-09-11) -badc272b1ad6f35a3954fb230c0cdb20ada48a27b62aeaf9d199882b2761f93b CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -4cbc4eeb14520f63686140e1d26994e1f3a0db45124450e11c1e0d0c7c08cd6d benchmark.json -cfbe4b19489c4f91b636bdf78df9703646fac5c85d8b9e4bdb79367cdbb4dc73 card.md -48fa935cef1b9443cc51ac880b3e67d65eaa99bdd74af8f0bb1854bf694d8e61 kseek.py -52ac70499feaf483a56e7a642e66a7ee3f200f07ff3cc7c70a6592ede5712d15 metadata.json diff --git a/publish/records/kseek/benchmark.json b/publish/records/kseek/benchmark.json deleted file mode 100644 index f6750abe7530ab0cf508711228f8f3b0a01939ef..0000000000000000000000000000000000000000 --- a/publish/records/kseek/benchmark.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "member": "KSEEK", - "live_active_learning": { - "source": "KYRO GP over the completed 16-pt CGYRO A1e map", - "acquisition": "max GP posterior std (uncertainty sampling), min-separation filtered", - "next_runs": [ - { - "a_LT": 2.225, - "shear": 1.42, - "gp_std": 0.5046 - }, - { - "a_LT": 3.275, - "shear": 1.42, - "gp_std": 0.5046 - }, - { - "a_LT": 3.275, - "shear": 0.58, - "gp_std": 0.5046 - } - ], - "loo_std_vs_error_corr": -0.283, - "cgyro_gpu_h_per_point": 2.89, - "verdict": "Proposes the next CGYRO run at a/L_T=2.225, shear=1.42 (highest GP uncertainty). Leave-one-out: GP posterior-std vs actual error correlation = -0.283 \u2014 weak on this small map. A real experimental-design tool: spend ~2.9 GPU-h/point where it matters." - }, - "caveat": "16 training points is small \u2014 acquisition is directional guidance, not a guarantee" -} diff --git a/publish/records/kseek/card.md b/publish/records/kseek/card.md deleted file mode 100644 index 45539cb1f2b7ee530990aa97ca61eefd41d9b921..0000000000000000000000000000000000000000 --- a/publish/records/kseek/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KSEEK — card - -- **name:** KSEEK -- **function:** ACTIVE -- **status:** BUILT -- **phase:** 3 -- **provenance:** SIM -- **retired_by:** the full CGYRO parameter scan (once every point is simulated) -- **gates:** ['BR-L2-A1e'] -- **note:** active-learning acquisition — proposes the NEXT most-informative CGYRO run from KYRO's GP posterior (max-variance / uncertainty sampling), so expensive GPU-hours go where the surrogate is least sure. A real experimental-design tool -- **available:** True - -Benchmark headline: active-learning: proposes next CGYRO run (a/L_T=2.225, shear=1.42); LOO std-vs-error corr -0.283 (honest: weak on 16 pts) diff --git a/publish/records/kseek/kseek.py b/publish/records/kseek/kseek.py deleted file mode 100644 index 30dee3256f6a6039063b34ea8171e0c14c872a53..0000000000000000000000000000000000000000 --- a/publish/records/kseek/kseek.py +++ /dev/null @@ -1,83 +0,0 @@ -"""KODEX KSEEK — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KSEEK(Surrogate): - name = "KSEEK"; function = "ACTIVE"; phase = 3; status = "BUILT" - provenance = "SIM" - retired_by = "the full CGYRO parameter scan (once every point is simulated)" - real_codes = ("Gaussian-process active learning", "max-variance acquisition") - gates = ("BR-L2-A1e",) - note = ("active-learning acquisition — proposes the NEXT most-informative CGYRO run from " - "KYRO's GP posterior (max-variance / uncertainty sampling), so expensive GPU-hours " - "go where the surrogate is least sure. A real experimental-design tool") - - _BOX = ((2.0, 3.5), (0.4, 1.6)) # a_LT, shear in-domain box (matches KYRO) - - def _grid(self, n=41): - a = np.linspace(*self._BOX[0], n); s = np.linspace(*self._BOX[1], n) - A, S = np.meshgrid(a, s) - return np.c_[A.ravel(), S.ravel()] - - def _model(self): - import kronos_ml.data as data - gp = get("KYRO")._fit() # reuse the exact GP the fleet queries - df = data.cgyro_flux_map_final() - return gp, df[["a_LT", "shear"]].to_numpy(float), \ - np.log10(np.clip(df.Q_tot.to_numpy(float), 0, None) + 1e-4) - - def _acquire(self, k=3, min_sep=0.16): - gp, Xtr, _ = self._model() - G = self._grid() - _, std = gp.predict(G) - std = np.asarray(std).ravel() - span = np.array([self._BOX[0][1] - self._BOX[0][0], self._BOX[1][1] - self._BOX[1][0]]) - picks, chosen = [], [] - for idx in np.argsort(-std): - g = G[idx] - d_tr = np.linalg.norm((g - Xtr) / span, axis=1).min() - d_ch = min([np.linalg.norm((g - c) / span) for c in chosen], default=9.0) - if min(d_tr, d_ch) < min_sep: - continue - chosen.append(g); picks.append({"a_LT": round(float(g[0]), 3), - "shear": round(float(g[1]), 3), - "gp_std": round(float(std[idx]), 4)}) - if len(picks) >= k: - break - return picks - - def _loo(self): - """Leave-one-out: does GP posterior std actually predict where the model is wrong?""" - from .. import uq - _, X, y = self._model() - errs, stds = [], [] - for i in range(len(y)): - m = np.ones(len(y), bool); m[i] = False - g = uq.GPHead().fit(X[m], y[m]) - mu, sd = g.predict(X[i:i + 1]) - errs.append(abs(float(np.ravel(mu)[0]) - y[i])); stds.append(float(np.ravel(sd)[0])) - errs, stds = np.array(errs), np.array(stds) - if errs.std() < 1e-9 or stds.std() < 1e-9: - return None - return float(np.corrcoef(stds, errs)[0, 1]) - - def _predict(self, x): - p = self._acquire(k=1)[0] - return Prediction(p, None, True, note="next most-informative CGYRO operating point (max GP variance)") - - def benchmark(self): - picks = self._acquire(k=3) - corr = self._loo() - return {"member": self.name, - "live_active_learning": { - "source": "KYRO GP over the completed 16-pt CGYRO A1e map", - "acquisition": "max GP posterior std (uncertainty sampling), min-separation filtered", - "next_runs": picks, - "loo_std_vs_error_corr": None if corr is None else round(corr, 3), - "cgyro_gpu_h_per_point": 2.89, - "verdict": (f"Proposes the next CGYRO run at a/L_T={picks[0]['a_LT']}, " - f"shear={picks[0]['shear']} (highest GP uncertainty). Leave-one-out: GP " - f"posterior-std vs actual error correlation = " - f"{'n/a' if corr is None else round(corr, 3)} — " - f"{'the acquisition targets real model error' if (corr or 0) > 0.2 else 'weak on this small map'}. " - f"A real experimental-design tool: spend ~2.9 GPU-h/point where it matters.")}, - "caveat": "16 training points is small — acquisition is directional guidance, not a guarantee"} diff --git a/publish/records/kseek/metadata.json b/publish/records/kseek/metadata.json deleted file mode 100644 index 88de34fbb4e40cf67babf6cb2f23b96243dce3e5..0000000000000000000000000000000000000000 --- a/publish/records/kseek/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KSEEK", - "page": "https://kronosfusionenergy.com/kodex/kseek", - "title": "KODEX \u2014 KSEEK: ACTIVE", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "ACTIVE", - "KODEX:KSEEK" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/kseek", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.21842371", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KSEEK (ACTIVE). active-learning acquisition \u2014 proposes the NEXT most-informative CGYRO run from KYRO's GP posterior (max-variance / uncertainty sampling), so expensive GPU-hours go where the surrogate is least sure. A real experimental-design tool

Benchmark: active-learning: proposes next CGYRO run (a/L_T=2.225, shear=1.42); LOO std-vs-error corr -0.283 (honest: weak on 16 pts)

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kseek · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KSEEK (ACTIVE). active-learning acquisition \u2014 proposes the NEXT most-informative CGYRO run from KYRO's GP posterior (max-variance / uncertainty sampling), so expensive GPU-hours go where the surrogate is least sure. A real experimental-design toolBenchmark: active-learning: proposes next CGYRO run (a/L_T=2.225, shear=1.42); LOO std-vs-error corr -0.283 (honest: weak on 16 pts)Part of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: references 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/kseek \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package: https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/ksense/CITATION.cff b/publish/records/ksense/CITATION.cff deleted file mode 100644 index 975c01576227cb307712c7244da15629f74b30de..0000000000000000000000000000000000000000 --- a/publish/records/ksense/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KSENSE: QSENSE (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/ksense" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/ksense/LICENSE b/publish/records/ksense/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/ksense/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/ksense/MANIFEST.sha256 b/publish/records/ksense/MANIFEST.sha256 deleted file mode 100644 index 5eaacadb1caaa80f810d208d8a61294f136fc199..0000000000000000000000000000000000000000 --- a/publish/records/ksense/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KSENSE SHA-256 (0.2.0, 2026-09-11) -e2a9cefeeace5905458c2bf7d89d3a1549b74d6400dbb836eea287b10701d3bc CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -30ec032cda6eec0f48b811b1d0b8e69cb273d51a7f2bf41371b1a06fd1d4f675 benchmark.json -0144bbd9c13052ceb12f159cfe1999b72747f15a5c5edb966bdb5f96e7324067 card.md -31248b47d0fb93b5b79210624734e27dbdfcdc641837293c9bf4e765f5f681de ksense.py -cbc5c67507f7ca27c18b623e7e26dae6852bce89e66019a6df91f902d094aab7 metadata.json diff --git a/publish/records/ksense/benchmark.json b/publish/records/ksense/benchmark.json deleted file mode 100644 index 4cf332fa5d58a69271a381bdf9fd379d68db623c..0000000000000000000000000000000000000000 --- a/publish/records/ksense/benchmark.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "member": "KSENSE", - "live_quantum_metrology": { - "method": "PennyLane mixed-state GHZ interferometry; Heisenberg vs SQL vs dephasing", - "dephasing_per_qubit": 0.2, - "scaling": [ - { - "N": 2, - "visibility_dephased": 0.8, - "GHZ_ideal_gain": 2.0, - "GHZ_dephased_gain": 1.6, - "SQL_gain": 1.41 - }, - { - "N": 3, - "visibility_dephased": 0.716, - "GHZ_ideal_gain": 3.0, - "GHZ_dephased_gain": 2.15, - "SQL_gain": 1.73 - }, - { - "N": 4, - "visibility_dephased": 0.64, - "GHZ_ideal_gain": 4.0, - "GHZ_dephased_gain": 2.56, - "SQL_gain": 2.0 - }, - { - "N": 5, - "visibility_dephased": 0.572, - "GHZ_ideal_gain": 5.0, - "GHZ_dephased_gain": 2.86, - "SQL_gain": 2.24 - }, - { - "N": 6, - "visibility_dephased": 0.512, - "GHZ_ideal_gain": 6.0, - "GHZ_dephased_gain": 3.07, - "SQL_gain": 2.45 - }, - { - "N": 7, - "visibility_dephased": 0.458, - "GHZ_ideal_gain": 7.0, - "GHZ_dephased_gain": 3.21, - "SQL_gain": 2.65 - }, - { - "N": 8, - "visibility_dephased": 0.41, - "GHZ_ideal_gain": 8.0, - "GHZ_dephased_gain": 3.28, - "SQL_gain": 2.83 - } - ], - "gain_growth_N2_to_N8": { - "GHZ_ideal": 4.0, - "GHZ_dephased": 2.05, - "SQL": 2.01 - }, - "analytic_turnover_N": 8, - "backend": { - "active_backend": "default", - "ran_on_real_hardware": false, - "how_to_use_real_qc": "set KODEX_QC_BACKEND=ibm and KODEX_QC_TOKEN= to run this exact circuit on real quantum hardware", - "honest_timeline": "fault-tolerant quantum ADVANTAGE for fusion kernels is ~8-10 yr out; this tooling makes the TESTING real and runnable TODAY, same code path" - }, - "verdict": "REAL quantum-metrology computation: over N=2->8 the ideal GHZ gain grows 4.0x (Heisenberg ~ N), but with per-qubit dephasing (p=0.2) the dephased GHZ grows only 2.05x \u2014 essentially the SQL rate (2.01x, ~sqrt(N)). Dephasing ERASES the Heisenberg *scaling* to a bounded constant (gain turns over near N~9). HONEST NULL: no quantum-sensing advantage for fusion disruptions this decade \u2014 but a real, runnable metrology tool." - }, - "sourced": { - "file": "TRACK1_QUANTUM_RESULTS/track1_results.json (A7_metrology)", - "note": "independent Track-1: correlated dephasing erases GHZ Heisenberg back to SQL" - } -} diff --git a/publish/records/ksense/card.md b/publish/records/ksense/card.md deleted file mode 100644 index ee53955684ece86415646467c415f50442a76161..0000000000000000000000000000000000000000 --- a/publish/records/ksense/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KSENSE — card - -- **name:** KSENSE -- **function:** QSENSE -- **status:** BUILT -- **phase:** 2 -- **provenance:** SIM -- **retired_by:** deployed physical diagnostic hardware -- **gates:** ['HX-29'] -- **note:** REAL quantum-metrology evaluation (PennyLane mixed-state) — GHZ interferometry: ideal gives Heisenberg (gain ~ N) scaling, but realistic dephasing (NV/SQUID/SERF reality) collapses it back to the standard quantum limit (~sqrt(N)). Honest null where fusion disruptions live -- **available:** True - -Benchmark headline: **REAL quantum metrology** (GHZ, PennyLane): ideal Heisenberg 4.0× vs dephased 2.05× ≈ SQL 2.01× — dephasing erases the advantage (honest null) diff --git a/publish/records/ksense/ksense.py b/publish/records/ksense/ksense.py deleted file mode 100644 index d63a3b3f77d5020890456d80462533a6a8afcbb8..0000000000000000000000000000000000000000 --- a/publish/records/ksense/ksense.py +++ /dev/null @@ -1,78 +0,0 @@ -"""KODEX KSENSE — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KSENSE(Surrogate): - name = "KSENSE"; function = "QSENSE"; phase = 2; status = "BUILT" - provenance = "SIM" - retired_by = "deployed physical diagnostic hardware" - real_codes = ("quantum Fisher information", "GHZ metrology", "PennyLane") - gates = ("HX-29",) - note = ("REAL quantum-metrology evaluation (PennyLane mixed-state) — GHZ interferometry: ideal " - "gives Heisenberg (gain ~ N) scaling, but realistic dephasing (NV/SQUID/SERF reality) " - "collapses it back to the standard quantum limit (~sqrt(N)). Honest null where fusion " - "disruptions live") - - _P = 0.2 # per-qubit dephasing (realistic sensor decoherence) - - def _visibility(self, N, p): - """GHZ interferometric visibility (X-parity contrast) under per-qubit dephasing.""" - import pennylane as qml - dev = qml.device("default.mixed", wires=N) - obs = qml.PauliX(0) - for i in range(1, N): - obs = obs @ qml.PauliX(i) - - @qml.qnode(dev) - def sig(): - qml.Hadamard(0) - for i in range(N - 1): - qml.CNOT([0, i + 1]) # GHZ_N - for i in range(N): - qml.PhaseDamping(p, wires=i) # dephasing channel - return qml.expval(obs) - return abs(float(sig())) - - def _scaling(self, Ns=(2, 3, 4, 5, 6, 7, 8)): - import numpy as np - rows, peak_N, peak_gain = [], None, -1.0 - for N in Ns: - Vd = self._visibility(N, self._P) - gain_ideal, gain_deph, gain_sql = float(N), N * Vd, float(np.sqrt(N)) - if gain_deph > peak_gain: - peak_gain, peak_N = gain_deph, N - rows.append({"N": N, "visibility_dephased": round(Vd, 3), - "GHZ_ideal_gain": round(gain_ideal, 2), - "GHZ_dephased_gain": round(gain_deph, 2), - "SQL_gain": round(gain_sql, 2)}) - return rows, peak_N - - def _predict(self, x): - import numpy as np - N = int(np.ravel(np.asarray(x, float))[0]) if x is not None else 4 - Vd = self._visibility(max(2, N), self._P) - return Prediction(round(max(2, N) * Vd, 3), None, True, - note=f"GHZ dephased metrological gain at N={max(2,N)} (SQL={np.sqrt(N):.2f})") - - def benchmark(self): - rows, peak_N = self._scaling() - a, b = rows[0], rows[-1] - g_ideal = round(b["GHZ_ideal_gain"] / a["GHZ_ideal_gain"], 2) # ~ N growth (Heisenberg) - g_deph = round(b["GHZ_dephased_gain"] / a["GHZ_dephased_gain"], 2) - g_sql = round(b["SQL_gain"] / a["SQL_gain"], 2) # ~ sqrt(N) - return {"member": self.name, - "live_quantum_metrology": { - "method": "PennyLane mixed-state GHZ interferometry; Heisenberg vs SQL vs dephasing", - "dephasing_per_qubit": self._P, - "scaling": rows, - "gain_growth_N2_to_N8": {"GHZ_ideal": g_ideal, "GHZ_dephased": g_deph, "SQL": g_sql}, - "analytic_turnover_N": peak_N, - "backend": qc.backend_note(), - "verdict": (f"REAL quantum-metrology computation: over N=2->8 the ideal GHZ gain grows " - f"{g_ideal}x (Heisenberg ~ N), but with per-qubit dephasing (p={self._P}) the " - f"dephased GHZ grows only {g_deph}x — essentially the SQL rate ({g_sql}x, " - f"~sqrt(N)). Dephasing ERASES the Heisenberg *scaling* to a bounded constant " - f"(gain turns over near N~{peak_N + 1}). HONEST NULL: no quantum-sensing " - f"advantage for fusion disruptions this decade — but a real, runnable " - f"metrology tool.")}, - "sourced": {"file": "TRACK1_QUANTUM_RESULTS/track1_results.json (A7_metrology)", - "note": "independent Track-1: correlated dephasing erases GHZ Heisenberg back to SQL"}} diff --git a/publish/records/ksense/metadata.json b/publish/records/ksense/metadata.json deleted file mode 100644 index 55c9240dbcad9c7b9b103875112377bbfaf9091e..0000000000000000000000000000000000000000 --- a/publish/records/ksense/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KSENSE", - "page": "https://kronosfusionenergy.com/kodex/ksense", - "title": "KODEX \u2014 KSENSE: QSENSE", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "QSENSE", - "KODEX:KSENSE" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/ksense", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "isDerivedFrom", - "identifier": "10.5281/zenodo.21842371", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KSENSE (QSENSE). REAL quantum-metrology evaluation (PennyLane mixed-state) \u2014 GHZ interferometry: ideal gives Heisenberg (gain ~ N) scaling, but realistic dephasing (NV/SQUID/SERF reality) collapses it back to the standard quantum limit (~sqrt(N)). Honest null where fusion disruptions live

Benchmark: **REAL quantum metrology** (GHZ, PennyLane): ideal Heisenberg 4.0\u00d7 vs dephased 2.05\u00d7 \u2248 SQL 2.01\u00d7 \u2014 dephasing erases the advantage (honest null)

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: isDerivedFrom 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/ksense · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KSENSE (QSENSE). REAL quantum-metrology evaluation (PennyLane mixed-state) \u2014 GHZ interferometry: ideal gives Heisenberg (gain ~ N) scaling, but realistic dephasing (NV/SQUID/SERF reality) collapses it back to the standard quantum limit (~sqrt(N)). Honest null where fusion disruptions liveBenchmark: **REAL quantum metrology** (GHZ, PennyLane): ideal Heisenberg 4.0\u00d7 vs dephased 2.05\u00d7 \u2248 SQL 2.01\u00d7 \u2014 dephasing erases the advantage (honest null)Part of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: isDerivedFrom 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/ksense \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package (all 26 codes): https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/ktensor/CITATION.cff b/publish/records/ktensor/CITATION.cff deleted file mode 100644 index f22ccdc7c70742912a7a19f86ec85eeb021e54e5..0000000000000000000000000000000000000000 --- a/publish/records/ktensor/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KTENSOR: TN (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/ktensor" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/ktensor/LICENSE b/publish/records/ktensor/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/ktensor/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/ktensor/MANIFEST.sha256 b/publish/records/ktensor/MANIFEST.sha256 deleted file mode 100644 index 4c09ed1cafc6b5a450e3c203079db90af6668946..0000000000000000000000000000000000000000 --- a/publish/records/ktensor/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KTENSOR SHA-256 (0.2.0, 2026-09-11) -b90aa795b4f56bcfda80cb3d97cf3f277f1c2f48470548ec6764164e5fe6804b CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -b19fdb1269ffc82ba70203b24ed5e3b049acb0a3c3aa9cf0213d3d3d646dc9d3 benchmark.json -26ac18f3970f88e8e6650a846ea103c307510e08cb8d4cb3defe65dd75a9bc00 card.md -4f1461cb343c9877bb5b84f997d10b707daf326c5c5be05d2d876765dbf78f56 ktensor.py -13c4678351a6290fda33a6c73cf5b4c54e22007d88889e99b2f35c26cc31a3f7 metadata.json diff --git a/publish/records/ktensor/benchmark.json b/publish/records/ktensor/benchmark.json deleted file mode 100644 index 2e7332f45fd88847c2a4e9cbb651ccc88e94bfda..0000000000000000000000000000000000000000 --- a/publish/records/ktensor/benchmark.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "member": "KTENSOR", - "live_low_rank_rom": { - "source": "real CGYRO A1e flux database (data.cgyro_flux_map_final)", - "columns": [ - "a_LT", - "shear", - "Q_i", - "Q_e" - ], - "full_16pt_map": { - "shape": [ - 16, - 4 - ], - "rel_error_vs_bond_dim": { - "1": 0.5903, - "2": 0.3009, - "3": 0.1214, - "4": 0.0 - }, - "cumulative_variance": { - "1": 0.6515, - "2": 0.9094, - "3": 0.9853, - "4": 1.0 - }, - "effective_rank": 2.93 - }, - "turbulent_branch": { - "shape": [ - 12, - 4 - ], - "rel_error_vs_bond_dim": { - "1": 0.4964, - "2": 0.2879, - "3": 0.1304, - "4": 0.0 - }, - "cumulative_variance": { - "1": 0.7535, - "2": 0.9171, - "3": 0.983, - "4": 1.0 - }, - "effective_rank": 2.75 - }, - "verdict": "MEASURED ROM characterization: the CGYRO flux database is only MODESTLY compressible \u2014 effective rank ~2.93 of 4; a bond-dim-2 MPS keeps 91% of the variance but 30% rel-L2 error (bond-dim 3 -> 12%). The turbulent flux spans 3+ orders of magnitude with a sharp turbulent<->quiet transition, so it RESISTS dramatic low-rank compression. An honest counter to the naive 'flux is trivially low-rank' expectation. Classical SVD/MPS; NO quantum-advantage claim.", - "caveats": [ - "NOT a dramatic low-rank collapse: bond-dim-2 keeps ~91% variance but ~30% rel-L2 error", - "classical SVD/MPS ROM of real CGYRO data \u2014 a many-body / quantum-bridge method, NOT a quantum-advantage claim", - "the 9-pt regen flux DB is mostly NaN (a sparse linear scan); the completed 16-pt map is the honest dataset used here" - ] - }, - "method": "SVD low-rank / MPS bond-dimension compression (deterministic, CPU)", - "sourced": { - "file": "TRACK1_QUANTUM_RESULTS/track1_results.json (A5_MPS_flux)", - "note": "the Track-1 'rank-2 ~1%' figure was on the sparse 9x4 regen table; on the complete map the flux is not strongly low-rank (this card)" - } -} diff --git a/publish/records/ktensor/card.md b/publish/records/ktensor/card.md deleted file mode 100644 index 9847b190c765ce7b80bb9889a213ae78832a8685..0000000000000000000000000000000000000000 --- a/publish/records/ktensor/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KTENSOR — card - -- **name:** KTENSOR -- **function:** TN -- **status:** BUILT -- **phase:** 2 -- **provenance:** SIM -- **retired_by:** exact many-body / quantum simulation -- **gates:** ['KX-L3'] -- **note:** tensor-network / low-rank ROM compression of the real CGYRO A1e flux database (classical MPS-style SVD; a many-body method and bridge to quantum kernels — NO quantum-advantage claim) -- **available:** True - -Benchmark headline: SVD/MPS ROM of the real CGYRO flux DB: **effective rank ~2.93 of 4 — modestly compressible, NOT strongly low-rank** (honest characterization; classical, no quantum advantage) diff --git a/publish/records/ktensor/ktensor.py b/publish/records/ktensor/ktensor.py deleted file mode 100644 index bc5f68529c693340050cdd0fd5d4fdb8b05bfc15..0000000000000000000000000000000000000000 --- a/publish/records/ktensor/ktensor.py +++ /dev/null @@ -1,110 +0,0 @@ -"""KODEX KTENSOR — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KTENSOR(Surrogate): - name = "KTENSOR"; function = "TN"; phase = 2; status = "BUILT" - provenance = "SIM" - retired_by = "exact many-body / quantum simulation" - real_codes = ("tensor-network / low-rank SVD (MPS-style) ROM",) - gates = ("KX-L3",) - note = ("tensor-network / low-rank ROM compression of the real CGYRO A1e flux " - "database (classical MPS-style SVD; a many-body method and bridge to " - "quantum kernels — NO quantum-advantage claim)") - - _COLS = ("a_LT", "shear", "Q_i", "Q_e") # operating grid + saturated fluxes - - def _load(self, turbulent_only=False): - """Real CGYRO A1e flux database (the COMPLETE 16-pt map; NaN-free) as a - (points x cols) matrix. The regen 9-pt DB is mostly NaN (a sparse linear scan), - so we use the completed map, which is the honest, physically-complete dataset.""" - import numpy as np - df = data.cgyro_flux_map_final() - if turbulent_only: - df = df[df["verdict"] == "turbulent"] - A = df[list(self._COLS)].to_numpy(float) - A = A[np.isfinite(A).all(1)] # drop any non-finite row (safety) - src = "cgyro_flux_map_final" + (" (turbulent rows)" if turbulent_only else " (16 pts)") - return A, list(self._COLS), src - - def _matrix(self, turbulent_only=False): - """Per-column z-scored flux matrix so mixed-scale columns are comparable.""" - import numpy as np - A, _, _ = self._load(turbulent_only) - mu, sd = A.mean(0), A.std(0) - sd = np.where(sd == 0, 1.0, sd) - return (A - mu) / sd - - @staticmethod - def _eff_rank(A): - """Participation ratio of the singular-value spectrum (effective rank).""" - import numpy as np - s = np.linalg.svd(A, compute_uv=False) - return float((s.sum() ** 2) / ((s ** 2).sum() + 1e-30)) - - def _svd(self): - import numpy as np - A = self._matrix() - U, s, Vt = np.linalg.svd(A, full_matrices=False) - return A, U, s, Vt - - def _rel_error(self, rank): - """rel-L2 (Frobenius) reconstruction error keeping `rank` singular values - (= MPS bond dimension).""" - import numpy as np - A, U, s, Vt = self._svd() - r = int(max(1, min(int(rank), len(s)))) - Ar = (U[:, :r] * s[:r]) @ Vt[:r] - return float(np.linalg.norm(A - Ar) / (np.linalg.norm(A) + 1e-12)) - - def _predict(self, x): - """x = target bond dimension (retained rank) -> achievable reconstruction rel-error.""" - import numpy as np - rank = int(np.ravel(np.asarray(x, dtype=float))[0]) - rmax = len(self._svd()[2]) - return Prediction(self._rel_error(rank), None, 1 <= rank <= rmax, - note=f"rel-L2 reconstruction of the CGYRO flux DB at bond-dim " - f"{rank} (of {rmax})") - - def benchmark(self): - import numpy as np - - def curve_for(turb): - A = self._matrix(turb) - U, s, Vt = np.linalg.svd(A, full_matrices=False) - - def rel(r): - r = int(max(1, min(r, len(s)))) - return float(np.linalg.norm(A - (U[:, :r] * s[:r]) @ Vt[:r]) / np.linalg.norm(A)) - var = (s ** 2) / (s ** 2).sum() - return {"shape": list(A.shape), - "rel_error_vs_bond_dim": {r: round(rel(r), 4) for r in range(1, len(s) + 1)}, - "cumulative_variance": {r: round(float(var[:r].sum()), 4) - for r in range(1, len(s) + 1)}, - "effective_rank": round(self._eff_rank(A), 2)} - - full = curve_for(False) - turb = curve_for(True) - v2 = full["cumulative_variance"][2] - e2, e3 = full["rel_error_vs_bond_dim"][2], full["rel_error_vs_bond_dim"][3] - return {"member": self.name, - "live_low_rank_rom": { - "source": "real CGYRO A1e flux database (data.cgyro_flux_map_final)", - "columns": list(self._COLS), - "full_16pt_map": full, "turbulent_branch": turb, - "verdict": (f"MEASURED ROM characterization: the CGYRO flux database is only MODESTLY " - f"compressible — effective rank ~{full['effective_rank']} of 4; a bond-dim-2 " - f"MPS keeps {v2:.0%} of the variance but {e2:.0%} rel-L2 error (bond-dim 3 -> " - f"{e3:.0%}). The turbulent flux spans 3+ orders of magnitude with a sharp " - f"turbulent<->quiet transition, so it RESISTS dramatic low-rank compression. " - f"An honest counter to the naive 'flux is trivially low-rank' expectation. " - f"Classical SVD/MPS; NO quantum-advantage claim."), - "caveats": ["NOT a dramatic low-rank collapse: bond-dim-2 keeps ~91% variance but " - "~30% rel-L2 error", - "classical SVD/MPS ROM of real CGYRO data — a many-body / quantum-bridge " - "method, NOT a quantum-advantage claim", - "the 9-pt regen flux DB is mostly NaN (a sparse linear scan); the completed " - "16-pt map is the honest dataset used here"]}, - "method": "SVD low-rank / MPS bond-dimension compression (deterministic, CPU)", - "sourced": {"file": "TRACK1_QUANTUM_RESULTS/track1_results.json (A5_MPS_flux)", - "note": "the Track-1 'rank-2 ~1%' figure was on the sparse 9x4 regen table; on " - "the complete map the flux is not strongly low-rank (this card)"}} diff --git a/publish/records/ktensor/metadata.json b/publish/records/ktensor/metadata.json deleted file mode 100644 index 2dfb306502470bd4478f7ec4bbbfe4f695c5b4b8..0000000000000000000000000000000000000000 --- a/publish/records/ktensor/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KTENSOR", - "page": "https://kronosfusionenergy.com/kodex/ktensor", - "title": "KODEX \u2014 KTENSOR: TN", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "TN", - "KODEX:KTENSOR" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/ktensor", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "isDerivedFrom", - "identifier": "10.5281/zenodo.21842371", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KTENSOR (TN). tensor-network / low-rank ROM compression of the real CGYRO A1e flux database (classical MPS-style SVD; a many-body method and bridge to quantum kernels \u2014 NO quantum-advantage claim)

Benchmark: SVD/MPS ROM of the real CGYRO flux DB: **effective rank ~2.93 of 4 \u2014 modestly compressible, NOT strongly low-rank** (honest characterization; classical, no quantum advantage)

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: isDerivedFrom 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/ktensor · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KTENSOR (TN). tensor-network / low-rank ROM compression of the real CGYRO A1e flux database (classical MPS-style SVD; a many-body method and bridge to quantum kernels \u2014 NO quantum-advantage claim)Benchmark: SVD/MPS ROM of the real CGYRO flux DB: **effective rank ~2.93 of 4 \u2014 modestly compressible, NOT strongly low-rank** (honest characterization; classical, no quantum advantage)Part of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: isDerivedFrom 10.5281/zenodo.21842371. Home: https://kronosfusionenergy.com/kodex/ktensor \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package: https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/kward/CITATION.cff b/publish/records/kward/CITATION.cff deleted file mode 100644 index f1467777aa4d91d694e585ec6d5002146b3914ba..0000000000000000000000000000000000000000 --- a/publish/records/kward/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KWARD: DISRUPT (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/kward" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/kward/LICENSE b/publish/records/kward/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/kward/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/kward/MANIFEST.sha256 b/publish/records/kward/MANIFEST.sha256 deleted file mode 100644 index fd4973963a9a5c44f160e5b33a9f7cf709d902eb..0000000000000000000000000000000000000000 --- a/publish/records/kward/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KWARD SHA-256 (0.2.0, 2026-09-11) -ea7eaf5d498132c6d913f161e0a52ec41d4d81e1f0165901da79e22530a19dcf CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -990f99052c6705b956f2e9c73e8cf1f18305d3b82f502c39cecaa966af5b5ef5 benchmark.json -41bde0fc5234ded342503905745beeaef66506ed4792a88a0931cc1c9274635a card.md -9f90607739a0b632bf94e82381173a4531a3784af7946829fa8e19d869bb9256 kward.py -481557cb3ec5ad099bf00413de6ac5db58378b5c4eef08a883b794f6d095be78 metadata.json diff --git a/publish/records/kward/benchmark.json b/publish/records/kward/benchmark.json deleted file mode 100644 index 04b574cf19bbf00a1a2414a0758c7e9679bfacb0..0000000000000000000000000000000000000000 --- a/publish/records/kward/benchmark.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "member": "KWARD", - "live_real_device": { - "source": "592 real MAST shots (FAIR-MAST), fixed 50 ms window", - "auc": 0.98, - "auc_precursor_only_no_Ip_variability": 0.984, - "ece": 0.0349, - "n_shots": 591, - "n_disruptive": 276, - "n_test_shots": 178, - "features": [ - "ip_mean_MA", - "ip_std", - "ip_slope", - "ip_range", - "ne_mean", - "greenwald_proxy", - "beta_n", - "li", - "q95", - "n1_rms_mean", - "n1_rms_slope", - "prad_mean", - "prad_slope" - ], - "caveats": [ - "labels DERIVED from Ip current-quench (heuristic, not physicist-verified)", - "fixed-window physics features only (no duration leakage)", - "Ip-variability features SHARE information with the Ip-derived label; the independent_precursor_only_auc below (n=1 Mirnov + P_rad ONLY) is the label-independent number and is the one to cite", - "'n1_rms' is a broadband Mirnov fluctuation RMS (low-n MHD-activity proxy), NOT a toroidal-n=1 Fourier decomposition (array geometry on disk lacks toroidal-angle metadata)", - "EFIT kinetics sparse (~16%); n=1 Mirnov ~99% / P_rad ~78% shot coverage (FAIR-MAST, pulled 2026-09-10)" - ], - "independent_precursors_present": true, - "independent_precursor_only_auc": 0.975, - "note_independent": "n=1 Mirnov + P_rad present -> this AUC uses ONLY diagnostics independent of Ip and the Ip-derived label" - }, - "machinery_check_synth": { - "auc": 0.916 - }, - "sourced_twin": { - "file": "track4_disruption/disruption_metrics.csv", - "note": "prior twin-synthetic result AUC 0.990 (superseded by real-device above)" - } -} diff --git a/publish/records/kward/card.md b/publish/records/kward/card.md deleted file mode 100644 index 00bed28f2ed25408568507f0cf441e80860af5da..0000000000000000000000000000000000000000 --- a/publish/records/kward/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KWARD — card - -- **name:** KWARD -- **function:** DISRUPT -- **status:** BUILT -- **phase:** 1 -- **provenance:** REAL-ANCHOR -- **retired_by:** physicist-verified disruption labels + full precursor diagnostics -- **gates:** ['AC-20', 'AC-21'] -- **note:** disruption early-warning — real-device (592 MAST shots), calibrated ensemble + per-shot OOD gate; advisory, downstream of the KGATE clamp -- **available:** True - -Benchmark headline: real-device AUC 0.98 (591 MAST shots), ECE 0.0349; **independent-precursor AUC 0.975** (n=1 Mirnov + P_rad ONLY, label-independent); labels heuristic (Ip-quench) diff --git a/publish/records/kward/kward.py b/publish/records/kward/kward.py deleted file mode 100644 index 424943e6df564a3c3028c8f73a2e1291fb5810c6..0000000000000000000000000000000000000000 --- a/publish/records/kward/kward.py +++ /dev/null @@ -1,150 +0,0 @@ -"""KODEX KWARD — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KWARD(Surrogate): - name = "KWARD"; function = "DISRUPT"; phase = 1; status = "BUILT" - provenance = "REAL-ANCHOR" - retired_by = "physicist-verified disruption labels + full precursor diagnostics" - real_codes = ("real MAST shots (FAIR-MAST)",) - gates = ("AC-20", "AC-21") - note = ("disruption early-warning — real-device (592 MAST shots), calibrated " - "ensemble + per-shot OOD gate; advisory, downstream of the KGATE clamp") - - def __init__(self): - self._clf = None; self._gate = None; self._auc = None; self._n = None - - # -- feature extraction (physics only; no duration) ------------------ - @staticmethod - def _mean_slope(a, t): - """NaN-safe mean + linear slope of a channel over the window.""" - g = np.isfinite(a) - if g.sum() < 3: - return (np.nan, np.nan) - return (float(np.mean(a[g])), - float(np.polyfit(t[g] - t[g][0], a[g], 1)[0])) - - def _winfeat(self, w): - ip = w["Ip"].to_numpy(float) / 1e6 # MA - t = w["time_s"].to_numpy(float) - good = np.isfinite(ip) - if good.sum() < 3: - return None - ipg, tg = np.abs(ip[good]), t[good] - slope = np.polyfit(tg - tg[0], ipg, 1)[0] if len(tg) > 2 else 0.0 - ne = float(np.nanmean(w["ne"].to_numpy(float))) - gw = ne / (np.mean(ipg) + 1e-6) if np.isfinite(ne) else np.nan - base = [float(np.mean(ipg)), float(np.std(ipg)), float(slope), float(np.ptp(ipg)), - ne, gw, float(np.nanmean(w["beta_n"])), float(np.nanmean(w["li"])), - float(np.nanmean(w["q95"]))] - # INDEPENDENT precursors — used automatically once f7 stages these columns - def _col(c): - return w[c].to_numpy(float) if c in w.columns else np.full(len(w), np.nan) - n1m, n1s = self._mean_slope(_col("n1_rms"), t) - prm, prs = self._mean_slope(_col("prad"), t) - return base + [n1m, n1s, prm, prs] - - def _real_features(self): - sh, lab = data.kward_real() - labmap = {int(r.shot_id): (int(r.disruptive), r.t_disr_s) for r in lab.itertuples()} - X, y, ids = [], [], [] - for sid, g in sh.groupby("shot_id"): - if int(sid) not in labmap: - continue - disr, tdis = labmap[int(sid)] - g = g.sort_values("time_s"); t = g["time_s"].to_numpy(float) - ip = g["Ip"].to_numpy(float) - if np.isfinite(ip).sum() < 10: - continue - if disr == 1 and np.isfinite(tdis): - mask = (t >= tdis - _WINDOW_S) & (t < tdis) # pre-quench precursor - else: - tc = t[np.nanargmax(np.where(np.isfinite(ip), np.abs(ip), -np.inf))] - mask = (t >= tc - _WINDOW_S / 2) & (t < tc + _WINDOW_S / 2) # flat-top - if mask.sum() < 5: - continue - f = self._winfeat(g[mask]) - if f is None: - continue - X.append(f); y.append(disr); ids.append(int(sid)) - X = np.array(X, float); y = np.array(y, int) - med = np.nanmedian(X, axis=0) - bad = np.where(~np.isfinite(X)); X[bad] = np.take(med, bad[1]) - X[~np.isfinite(X)] = 0.0 # all-NaN optional columns (channels not staged yet) - return X, y, np.array(ids) - - def _fit(self): - if self._clf is None: - X, y, ids = self._real_features() - rng = np.random.default_rng(uq.SEED) - perm = rng.permutation(len(y)); X, y = X[perm], y[perm] # shot-level shuffle - ntr = int(0.7 * len(y)) - self._clf = uq.CalibratedClassifier().fit(X[:ntr], y[:ntr]) - self._gate = uq.MahalanobisGate(0.05).fit(X[:ntr]) - from sklearn.metrics import roc_auc_score - p = self._clf.predict_proba(X[ntr:]) - self._auc = float(roc_auc_score(y[ntr:], p)) - self._ece = metrics.ece_classification(y[ntr:], p) - self._n = {"total": len(y), "disruptive": int(y.sum()), "test": len(y) - ntr} - self._Xall, self._yall = X, y - # honesty check: AUC WITHOUT the Ip-variability features (ip_std, ip_range), - # which share information with the Ip-derived labels - keep = [i for i in range(len(_FEATURES)) if i not in (1, 3)] - c2 = uq.CalibratedClassifier().fit(X[:ntr][:, keep], y[:ntr]) - self._auc_precursor = float(roc_auc_score(y[ntr:], c2.predict_proba(X[ntr:][:, keep]))) - return self._clf - - def _predict(self, x): - """x = 9-feature vector (see _FEATURES) -> calibrated disruption probability.""" - self._fit() - x = np.asarray(x, float).reshape(1, -1) - p = float(self._clf.predict_proba(x)[0]) - return Prediction(p, None, self._gate.in_domain(x), - note="calibrated disruption probability (real-device); " - "abstains -> hardware failsafe when out-of-domain") - - def benchmark(self): - self._fit() - out = {"member": self.name, - "live_real_device": { - "source": "592 real MAST shots (FAIR-MAST), fixed 50 ms window", - "auc": round(self._auc, 3), - "auc_precursor_only_no_Ip_variability": round(self._auc_precursor, 3), - "ece": round(self._ece, 4), - "n_shots": self._n["total"], "n_disruptive": self._n["disruptive"], - "n_test_shots": self._n["test"], - "features": _FEATURES, - "caveats": ["labels DERIVED from Ip current-quench (heuristic, not " - "physicist-verified)", - "fixed-window physics features only (no duration leakage)", - "Ip-variability features SHARE information with the Ip-derived " - "label; the independent_precursor_only_auc below (n=1 Mirnov + " - "P_rad ONLY) is the label-independent number and is the one to cite", - "'n1_rms' is a broadband Mirnov fluctuation RMS (low-n MHD-activity " - "proxy), NOT a toroidal-n=1 Fourier decomposition (array geometry " - "on disk lacks toroidal-angle metadata)", - "EFIT kinetics sparse (~16%); n=1 Mirnov ~99% / P_rad ~78% shot " - "coverage (FAIR-MAST, pulled 2026-09-10)"]}} - # independent-precursor validation: activates automatically once f7 stages the - # n=1 Mirnov + P_rad channels (different diagnostics from Ip -> fully label-independent) - from sklearn.metrics import roc_auc_score - indep_present = bool(np.isfinite(self._Xall[:, _INDEP_IDX]).any() - and np.ptp(self._Xall[:, _INDEP_IDX]) > 0) - out["live_real_device"]["independent_precursors_present"] = indep_present - if indep_present: - Xi = self._Xall[:, _INDEP_IDX]; ntr = int(0.7 * len(self._yall)) - ci = uq.CalibratedClassifier().fit(Xi[:ntr], self._yall[:ntr]) - out["live_real_device"]["independent_precursor_only_auc"] = round( - float(roc_auc_score(self._yall[ntr:], ci.predict_proba(Xi[ntr:]))), 3) - out["live_real_device"]["note_independent"] = ("n=1 Mirnov + P_rad present -> " - "this AUC uses ONLY diagnostics independent of Ip and the Ip-derived label") - else: - out["live_real_device"]["note_independent"] = ("n=1 Mirnov + P_rad not staged yet; " - "extractor is wired to use them automatically once present") - # secondary: the calibration+OOD machinery on the self-contained synthetic set - Xs, ys = _synth(600, seed=uq.SEED + 7) - clf = uq.CalibratedClassifier().fit(*_synth(1200)) - from sklearn.metrics import roc_auc_score - out["machinery_check_synth"] = {"auc": round(float(roc_auc_score(ys, clf.predict_proba(Xs))), 3)} - out["sourced_twin"] = {"file": "track4_disruption/disruption_metrics.csv", - "note": "prior twin-synthetic result AUC 0.990 (superseded by real-device above)"} - return out diff --git a/publish/records/kward/metadata.json b/publish/records/kward/metadata.json deleted file mode 100644 index c2b048f1d5d207b2eef20a5efc19c53a5f59b798..0000000000000000000000000000000000000000 --- a/publish/records/kward/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KWARD", - "page": "https://kronosfusionenergy.com/kodex/kward", - "title": "KODEX \u2014 KWARD: DISRUPT", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "DISRUPT", - "KODEX:KWARD" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/kward", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "isDerivedFrom", - "identifier": "https://mastapp.site", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KWARD (DISRUPT). disruption early-warning \u2014 real-device (592 MAST shots), calibrated ensemble + per-shot OOD gate; advisory, downstream of the KGATE clamp

Benchmark: real-device AUC 0.98 (591 MAST shots), ECE 0.0349; **independent-precursor AUC 0.975** (n=1 Mirnov + P_rad ONLY, label-independent); labels heuristic (Ip-quench)

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: isDerivedFrom https://mastapp.site. Home: https://kronosfusionenergy.com/kodex/kward · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KWARD (DISRUPT). disruption early-warning \u2014 real-device (592 MAST shots), calibrated ensemble + per-shot OOD gate; advisory, downstream of the KGATE clampBenchmark: real-device AUC 0.98 (591 MAST shots), ECE 0.0349; **independent-precursor AUC 0.975** (n=1 Mirnov + P_rad ONLY, label-independent); labels heuristic (Ip-quench)Part of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: isDerivedFrom https://mastapp.site. Home: https://kronosfusionenergy.com/kodex/kward \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package (all 26 codes): https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/records/kyro/CITATION.cff b/publish/records/kyro/CITATION.cff deleted file mode 100644 index 9a935f12cc31f53e889dae69213ab11255e46bc0..0000000000000000000000000000000000000000 --- a/publish/records/kyro/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -title: "KODEX — KYRO: TRANSPORT (Kronos Family of Codes)" -version: "0.2.0" -date-released: "2026-09-11" -license: Apache-2.0 -url: "https://kronosfusionenergy.com/kodex/kyro" -repository-code: "https://github.com/KronosFE/kronos-ml" -type: software -authors: - - family-names: Ford - given-names: "P. I." - orcid: "https://orcid.org/0000-0003-0395-1752" - affiliation: "Kronos Fusion Energy" diff --git a/publish/records/kyro/LICENSE b/publish/records/kyro/LICENSE deleted file mode 100644 index 55cfd0dceda56d691bf4d43655d847a9be9f4b7d..0000000000000000000000000000000000000000 --- a/publish/records/kyro/LICENSE +++ /dev/null @@ -1,189 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not - limited to compiled object code, generated documentation, and - conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work. - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the - original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative - Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2026 Kronos Fusion Energy - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/publish/records/kyro/MANIFEST.sha256 b/publish/records/kyro/MANIFEST.sha256 deleted file mode 100644 index d78d26077884a72d248620e85b80b89bb3b47937..0000000000000000000000000000000000000000 --- a/publish/records/kyro/MANIFEST.sha256 +++ /dev/null @@ -1,7 +0,0 @@ -# KODEX KYRO SHA-256 (0.2.0, 2026-09-11) -285a2d883fed385680c50a86f798fa285b153ce1c95a23de8c4f0f67765dbca6 CITATION.cff -ae87ebecd1f321a19799e21f6fe25e4a74261f16c91e6cb6cc248e6197dcf838 LICENSE -a6a7ab230b48169c0540cfdddba0e895c781490b488f83ccf7b52164bc6ab85c benchmark.json -2b64dcb6289ba82e360e6f76ab548cfdeba3de188daf0bbbafd06083015fc8fb card.md -76f5aeac91ca7d1c06c5373e7b888ff09c8ec3a35af087ecdd9e51d0b9549dc2 kyro.py -70617e1b3b12c27b9572cef5bd15350805b4806bacecaeec85e11c097bb2abee metadata.json diff --git a/publish/records/kyro/benchmark.json b/publish/records/kyro/benchmark.json deleted file mode 100644 index 32747ce23b3df692892cd4565ada9d2f050ea450..0000000000000000000000000000000000000000 --- a/publish/records/kyro/benchmark.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "member": "KYRO", - "accuracy": { - "r2_log_Qtot": 0.858, - "rmse_log_Qtot": 0.857, - "coverage_90": 0.875, - "turbulent_quiet_LOO": "16/16 correct", - "map": "12 turbulent / 4 quiet (16/16 complete)" - }, - "speed": { - "surrogate_ms_per_point": 0.329, - "cgyro_gpu_h_per_point_measured": 2.89, - "speedup_x_vs_cgyro": "3.2e+07", - "speedup_note": "ms inference vs GPU-hours for the CONVERGED flux value", - "fidelity": "representative mu=400; real-mass gold deferred" - }, - "provenance": "COMPLETE 16/16 CGYRO A1e map (mu=400); operating point subcritical" -} diff --git a/publish/records/kyro/card.md b/publish/records/kyro/card.md deleted file mode 100644 index 7cd1cf750ac0bebd460883603c6f372517942c77..0000000000000000000000000000000000000000 --- a/publish/records/kyro/card.md +++ /dev/null @@ -1,13 +0,0 @@ -# KODEX KYRO — card - -- **name:** KYRO -- **function:** TRANSPORT -- **status:** BUILT -- **phase:** 1 -- **provenance:** CGYRO-urep -- **retired_by:** CGYRO (nonlinear gyrokinetic) -- **gates:** ['BR-L2-A12', 'BR-L2-A1e', 'BR-L2-A1c'] -- **note:** CGYRO turbulence-transport surrogate over the complete 16/16 A1e map (total heat flux Q_tot + turbulent/quiet); mu=400 rep, real-mass gold deferred -- **available:** True - -Benchmark headline: complete 16/16 map (12 turbulent / 4 quiet (16/16 complete)); turbulent/quiet **16/16 correct**, R²=0.858 / cov90=0.875; **0.329 ms vs 2.89 GPU-h/pt** (μ=400) diff --git a/publish/records/kyro/kyro.py b/publish/records/kyro/kyro.py deleted file mode 100644 index c8007eded32a18aa2067b573e40ffbc3840fa3ef..0000000000000000000000000000000000000000 --- a/publish/records/kyro/kyro.py +++ /dev/null @@ -1,77 +0,0 @@ -"""KODEX KYRO — source excerpt (class). Full runnable package: https://github.com/KronosFE/kronos-ml""" - -@register -class KYRO(Surrogate): - name = "KYRO"; function = "TRANSPORT"; phase = 1; status = "BUILT" - provenance = "CGYRO-urep" - retired_by = "CGYRO (nonlinear gyrokinetic)" - real_codes = ("cgyro", "gene", "gs2", "tglf") - gates = ("BR-L2-A12", "BR-L2-A1e", "BR-L2-A1c") - note = ("CGYRO turbulence-transport surrogate over the complete 16/16 A1e map " - "(total heat flux Q_tot + turbulent/quiet); mu=400 rep, real-mass gold deferred") - - def __init__(self): - self._gp = None - - def _map(self): - df = data.cgyro_flux_map_final() - X = df[["a_LT", "shear"]].to_numpy(float) - y = np.log10(np.clip(df.Q_tot.to_numpy(float), 0, None) + 1e-4) - return X, y, df - - def _fit(self): - if self._gp is None: - X, y, _ = self._map() - self._gp = uq.GPHead().fit(X, y) - return self._gp - - def in_domain(self, x): - x = np.asarray(x, float).ravel() - return bool(_ALT[0] <= x[0] <= _ALT[1] and _SHEAR[0] <= x[1] <= _SHEAR[1]) - - def _predict(self, x): - """x = [a_LT, shear] -> total gyro-Bohm heat flux Q_tot, with GP band and - a turbulent/quiet verdict.""" - gp = self._fit() - x = np.asarray(x, float).reshape(1, -1) - m, s = gp.predict(x) - qtot = max(float(10 ** m[0] - 1e-4), 0.0) - unc = float(qtot * np.log(10) * s[0]) # propagate log10 std - verdict = "turbulent" if qtot > _QUIET_THRESHOLD else "quiet" - return Prediction(qtot, unc, self.in_domain(x), - note=f"Q_tot={qtot:.3g} gyroBohm ({verdict})") - - def _x_from_params(self, a_LT=3.0, shear=1.0, **_): - return [float(a_LT), float(shear)] - - def benchmark(self): - X, y, df = self._map() - n = len(y) - mu = np.zeros(n); sd = np.zeros(n) - for i in range(n): - tr = np.arange(n) != i - h = uq.GPHead().fit(X[tr], y[tr]) - m, s = h.predict(X[i:i + 1]); mu[i], sd[i] = m[0], s[0] - # turbulent/quiet classification from the leave-one-out prediction - pred_qtot = np.clip(10 ** mu - 1e-4, 0, None) - pred_verd = np.where(pred_qtot > _QUIET_THRESHOLD, "turbulent", "quiet") - class_ok = int(np.sum(pred_verd == df.verdict.to_numpy())) - acc = {"r2_log_Qtot": round(metrics.r2(y, mu), 3), - "rmse_log_Qtot": round(metrics.rmse(y, mu), 3), - "coverage_90": round(metrics.coverage_at_level(y, mu, np.clip(sd, 1e-6, None), 0.90), 3), - "turbulent_quiet_LOO": f"{class_ok}/{n} correct", - "map": f"{int((df.verdict=='turbulent').sum())} turbulent / " - f"{int((df.verdict=='quiet').sum())} quiet (16/16 complete)"} - gp = self._fit() - t0 = time.perf_counter() - for _ in range(200): - gp.predict(np.array([[3.0, 1.0]])) - ms = (time.perf_counter() - t0) / 200 * 1e3 - speedup = _CGYRO_GPU_H_PER_POINT * 3600.0 / (ms / 1e3) - speed = {"surrogate_ms_per_point": round(ms, 3), - "cgyro_gpu_h_per_point_measured": _CGYRO_GPU_H_PER_POINT, - "speedup_x_vs_cgyro": f"{speedup:.1e}", - "speedup_note": "ms inference vs GPU-hours for the CONVERGED flux value", - "fidelity": "representative mu=400; real-mass gold deferred"} - return {"member": self.name, "accuracy": acc, "speed": speed, - "provenance": "COMPLETE 16/16 CGYRO A1e map (mu=400); operating point subcritical"} diff --git a/publish/records/kyro/metadata.json b/publish/records/kyro/metadata.json deleted file mode 100644 index dca2fe138cbaaf9a0215b7f3641f8cdd1be3da0b..0000000000000000000000000000000000000000 --- a/publish/records/kyro/metadata.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "kname": "KYRO", - "page": "https://kronosfusionenergy.com/kodex/kyro", - "title": "KODEX \u2014 KYRO: TRANSPORT", - "version": "0.2.0", - "publication_date": "2026-09-11", - "language": "eng", - "upload_type": "software", - "creators": [ - { - "name": "Ford, P. I.", - "orcid": "0000-0003-0395-1752", - "affiliation": "Kronos Fusion Energy" - } - ], - "license": { - "id": "Apache-2.0" - }, - "keywords": [ - "fusion energy", - "spherical tokamak", - "D-3He", - "AI/ML surrogate model", - "uncertainty quantification", - "digital twin", - "Kronos Fusion Energy", - "TRANSPORT", - "KODEX:KYRO" - ], - "related_identifiers": [ - { - "relation": "isDocumentedBy", - "identifier": "https://kronosfusionenergy.com/kodex/kyro", - "resource_type": "publication-other" - }, - { - "relation": "isPartOf", - "identifier": "https://kronosfusionenergy.com/kodex", - "resource_type": "publication-other" - }, - { - "relation": "isSupplementTo", - "identifier": "https://github.com/KronosFE/kronos-ml", - "resource_type": "software" - }, - { - "relation": "references", - "identifier": "10.5281/zenodo.22645689", - "resource_type": "publication" - }, - { - "relation": "isCompiledBy", - "identifier": "https://github.com/KronosFE/kronos-toolkit", - "resource_type": "software" - }, - { - "relation": "isDerivedFrom", - "identifier": "10.5281/zenodo.22136279", - "resource_type": "dataset" - } - ], - "description": "

KODEX — KYRO (TRANSPORT). CGYRO turbulence-transport surrogate over the complete 16/16 A1e map (total heat flux Q_tot + turbulent/quiet); mu=400 rep, real-mass gold deferred

Benchmark: complete 16/16 map (12 turbulent / 4 quiet (16/16 complete)); turbulent/quiet **16/16 correct**, R\u00b2=0.858 / cov90=0.875; **0.329 ms vs 2.89 GPU-h/pt** (\u03bc=400)

Part of KODEX, the Kronos Family of Codes — a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) → (y, uncertainty, in_domain)). Provenance: isDerivedFrom 10.5281/zenodo.22136279. Home: https://kronosfusionenergy.com/kodex/kyro · suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.

", - "description_plain": "KODEX \u2014 KYRO (TRANSPORT). CGYRO turbulence-transport surrogate over the complete 16/16 A1e map (total heat flux Q_tot + turbulent/quiet); mu=400 rep, real-mass gold deferredBenchmark: complete 16/16 map (12 turbulent / 4 quiet (16/16 complete)); turbulent/quiet **16/16 correct**, R\u00b2=0.858 / cov90=0.875; **0.329 ms vs 2.89 GPU-h/pt** (\u03bc=400)Part of KODEX, the Kronos Family of Codes \u2014 a benchmarked AI/ML fusion surrogate suite with calibrated uncertainty and an abstention gate (predict(x) \u2192 (y, uncertainty, in_domain)). Provenance: isDerivedFrom 10.5281/zenodo.22136279. Home: https://kronosfusionenergy.com/kodex/kyro \u00b7 suite: https://github.com/KronosFE/kronos-ml. Licensed under Apache-2.0. Honest card preserved verbatim.", - "notes": "Draft-first per-code deposit. Full package (all 26 codes): https://github.com/KronosFE/kronos-ml. Provenance chain in card.md + MANIFEST.sha256." -} diff --git a/publish/state/dataverse_drafts.json b/publish/state/dataverse_drafts.json deleted file mode 100644 index c7867d50797747222b993056421c4914869a24ea..0000000000000000000000000000000000000000 --- a/publish/state/dataverse_drafts.json +++ /dev/null @@ -1,157 +0,0 @@ -{ - "KAIROS": { - "pid": "doi:10.7910/DVN/GOZGCM", - "url": "https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/GOZGCM&version=DRAFT", - "done": true, - "review": true - }, - "KBREED": { - "pid": "doi:10.7910/DVN/OPJHP3", - "url": "https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/OPJHP3&version=DRAFT", - "done": true, - "review": true - }, - "KBURN": { - "pid": "doi:10.7910/DVN/ITN6JZ", - "url": "https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/ITN6JZ&version=DRAFT", - "done": true, - "review": true - }, - "KDRIVE": { - "pid": "doi:10.7910/DVN/YKKLQ7", - "url": "https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/YKKLQ7&version=DRAFT", - "done": true, - "review": true - }, - "KECON": { - "pid": "doi:10.7910/DVN/WBHQ7S", - "url": "https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/WBHQ7S&version=DRAFT", - "done": true, - "review": true - }, - "KEYE": { - "pid": "doi:10.7910/DVN/5UILC8", - "url": "https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/5UILC8&version=DRAFT", - "done": true, - "review": true - }, - "KFLOW": { - "pid": "doi:10.7910/DVN/XUXC7B", - "url": "https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/XUXC7B&version=DRAFT", - "done": true, - "review": true - }, - "KFLUX": { - "pid": "doi:10.7910/DVN/3F0NCW", - "url": "https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/3F0NCW&version=DRAFT", - "done": true, - "review": true - }, - "KFORGE": { - "pid": "doi:10.7910/DVN/OVOVVN", - "url": "https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/OVOVVN&version=DRAFT", - "done": true, - "review": true - }, - "KFUEL": { - "pid": "doi:10.7910/DVN/89A8GS", - "url": "https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/89A8GS&version=DRAFT", - "done": true, - "review": true - }, - "KFUSE": { - "pid": "doi:10.7910/DVN/SMA2OP", - "url": "https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/SMA2OP&version=DRAFT", - "done": true, - "review": true - }, - "KGATE": { - "pid": "doi:10.7910/DVN/2CKPZH", - "url": "https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/2CKPZH&version=DRAFT", - "done": true, - "review": true - }, - "KGEN": { - "pid": "doi:10.7910/DVN/OCTF8U", - "url": "https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/OCTF8U&version=DRAFT", - "done": true, - "review": true - }, - "KHALO": { - "pid": "doi:10.7910/DVN/V5YM23", - "url": "https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/V5YM23&version=DRAFT", - "done": true, - "review": true - }, - "KISO": { - "pid": "doi:10.7910/DVN/ELXAEY", - "url": "https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/ELXAEY&version=DRAFT", - "done": true, - "review": true - }, - "KLAW": { - "pid": "doi:10.7910/DVN/ANAFXK", - "url": "https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/ANAFXK&version=DRAFT", - "done": true - }, - "KMAT": { - "pid": "doi:10.7910/DVN/IJG9FT", - "url": "https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/IJG9FT&version=DRAFT", - "done": true, - "review": true - }, - "KOIL": { - "pid": "doi:10.7910/DVN/N5WLNR", - "url": "https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/N5WLNR&version=DRAFT", - "done": true, - "review": true - }, - "KORE": { - "pid": "doi:10.7910/DVN/DCFLOI", - "url": "https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/DCFLOI&version=DRAFT", - "done": true, - "review": true - }, - "KPATH": { - "pid": "doi:10.7910/DVN/8QIUD4", - "url": "https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/8QIUD4&version=DRAFT", - "done": true, - "review": true - }, - "KPILOT": { - "pid": "doi:10.7910/DVN/EYD6FZ", - "url": "https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/EYD6FZ&version=DRAFT", - "done": true, - "review": true - }, - "KQROSS": { - "pid": "doi:10.7910/DVN/IIDBCF", - "url": "https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/IIDBCF&version=DRAFT", - "done": true, - "review": true - }, - "KQUBIT": { - "pid": "doi:10.7910/DVN/2BC8BL", - "url": "https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/2BC8BL&version=DRAFT", - "done": true, - "review": true - }, - "KSENSE": { - "pid": "doi:10.7910/DVN/5LQJAF", - "url": "https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/5LQJAF&version=DRAFT", - "done": true, - "review": true - }, - "KWARD": { - "pid": "doi:10.7910/DVN/VPYXHS", - "url": "https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/VPYXHS&version=DRAFT", - "done": true, - "review": true - }, - "KYRO": { - "pid": "doi:10.7910/DVN/2YQQOX", - "url": "https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/2YQQOX&version=DRAFT", - "done": true, - "review": true - } -} \ No newline at end of file diff --git a/publish/state/figshare_drafts.json b/publish/state/figshare_drafts.json deleted file mode 100644 index c0814d80e859d510db352b395ad21823fde765a9..0000000000000000000000000000000000000000 --- a/publish/state/figshare_drafts.json +++ /dev/null @@ -1,247 +0,0 @@ -{ - "KAIROS": { - "id": 33553966, - "url": "https://figshare.com/account/articles/33553966", - "done": true, - "published": true, - "public_url": "https://doi.org/10.6084/m9.figshare.33553966" - }, - "KBREED": { - "id": 33559312, - "url": "https://figshare.com/account/articles/33559312", - "done": true, - "published": true, - "public_url": "https://doi.org/10.6084/m9.figshare.33559312" - }, - "KBURN": { - "id": 33559324, - "url": "https://figshare.com/account/articles/33559324", - "done": true, - "published": true, - "public_url": "https://doi.org/10.6084/m9.figshare.33559324" - }, - "KDRIVE": { - "id": 33559333, - "url": "https://figshare.com/account/articles/33559333", - "done": true, - "published": true, - "public_url": "https://doi.org/10.6084/m9.figshare.33559333" - }, - "KECON": { - "id": 33559345, - "url": "https://figshare.com/account/articles/33559345", - "done": true, - "published": true, - "public_url": "https://doi.org/10.6084/m9.figshare.33559345" - }, - "KEYE": { - "id": 33559357, - "url": "https://figshare.com/account/articles/33559357", - "done": true, - "published": true, - "public_url": "https://doi.org/10.6084/m9.figshare.33559357" - }, - "KFLOW": { - "id": 33559369, - "url": "https://figshare.com/account/articles/33559369", - "done": true, - "published": true, - "public_url": "https://doi.org/10.6084/m9.figshare.33559369" - }, - "KFLUX": { - "id": 33559378, - "url": "https://figshare.com/account/articles/33559378", - "done": true, - "published": true, - "public_url": "https://doi.org/10.6084/m9.figshare.33559378" - }, - "KFORGE": { - "id": 33559390, - "url": "https://figshare.com/account/articles/33559390", - "done": true, - "published": true, - "public_url": "https://doi.org/10.6084/m9.figshare.33559390" - }, - "KFUEL": { - "id": 33559402, - "url": "https://figshare.com/account/articles/33559402", - "done": true, - "published": true, - "public_url": "https://doi.org/10.6084/m9.figshare.33559402" - }, - "KFUSE": { - "id": 33559414, - "url": "https://figshare.com/account/articles/33559414", - "done": true, - "published": true, - "public_url": "https://doi.org/10.6084/m9.figshare.33559414" - }, - "KGATE": { - "id": 33559423, - "url": "https://figshare.com/account/articles/33559423", - "done": true, - "published": true, - "public_url": "https://doi.org/10.6084/m9.figshare.33559423" - }, - "KGEN": { - "id": 33559435, - "url": "https://figshare.com/account/articles/33559435", - "done": true, - "published": true, - "public_url": "https://doi.org/10.6084/m9.figshare.33559435" - }, - "KHALO": { - "id": 33559447, - "url": "https://figshare.com/account/articles/33559447", - "done": true, - "published": true, - "public_url": "https://doi.org/10.6084/m9.figshare.33559447" - }, - "KISO": { - "id": 33559459, - "url": "https://figshare.com/account/articles/33559459", - "done": true, - "published": true, - "public_url": "https://doi.org/10.6084/m9.figshare.33559459" - }, - "KLAW": { - "id": 33559468, - "url": "https://figshare.com/account/articles/33559468", - "done": true, - "published": true, - "public_url": "https://doi.org/10.6084/m9.figshare.33559468" - }, - "KMAT": { - "id": 33559480, - "url": "https://figshare.com/account/articles/33559480", - "done": true, - "published": true, - "public_url": "https://doi.org/10.6084/m9.figshare.33559480" - }, - "KOIL": { - "id": 33559492, - "url": "https://figshare.com/account/articles/33559492", - "done": true, - "published": true, - "public_url": "https://doi.org/10.6084/m9.figshare.33559492" - }, - "KORE": { - "id": 33559504, - "url": "https://figshare.com/account/articles/33559504", - "done": true, - "published": true, - "public_url": "https://doi.org/10.6084/m9.figshare.33559504" - }, - "KPATH": { - "id": 33559513, - "url": "https://figshare.com/account/articles/33559513", - "done": true, - "published": true, - "public_url": "https://doi.org/10.6084/m9.figshare.33559513" - }, - "KPILOT": { - "id": 33559525, - "url": "https://figshare.com/account/articles/33559525", - "done": true, - "published": true, - "public_url": "https://doi.org/10.6084/m9.figshare.33559525" - }, - "KQROSS": { - "id": 33559537, - "url": "https://figshare.com/account/articles/33559537", - "done": true, - "published": true, - "public_url": "https://doi.org/10.6084/m9.figshare.33559537" - }, - "KQUBIT": { - "id": 33559546, - "url": "https://figshare.com/account/articles/33559546", - "done": true, - "published": true, - "public_url": "https://doi.org/10.6084/m9.figshare.33559546" - }, - "KSENSE": { - "id": 33559558, - "url": "https://figshare.com/account/articles/33559558", - "done": true, - "published": true, - "public_url": "https://doi.org/10.6084/m9.figshare.33559558" - }, - "KWARD": { - "id": 33559570, - "url": "https://figshare.com/account/articles/33559570", - "done": true, - "published": true, - "public_url": "https://doi.org/10.6084/m9.figshare.33559570" - }, - "KYRO": { - "id": 33559582, - "url": "https://figshare.com/account/articles/33559582", - "done": true, - "published": true, - "public_url": "https://doi.org/10.6084/m9.figshare.33559582" - }, - "KBENCH": { - "id": 33634261, - "url": "https://figshare.com/account/articles/33634261", - "done": true, - "published": true, - "public_url": "https://api.figshare.com/v2/articles/33634261" - }, - "KDYN": { - "id": 33634270, - "url": "https://figshare.com/account/articles/33634270", - "done": true, - "published": true, - "public_url": "https://api.figshare.com/v2/articles/33634270" - }, - "KEDGE": { - "id": 33634282, - "url": "https://figshare.com/account/articles/33634282", - "done": true, - "published": true, - "public_url": "https://api.figshare.com/v2/articles/33634282" - }, - "KHEAT": { - "id": 33634294, - "url": "https://figshare.com/account/articles/33634294", - "done": true, - "published": true, - "public_url": "https://api.figshare.com/v2/articles/33634294" - }, - "KQERN": { - "id": 33634306, - "url": "https://figshare.com/account/articles/33634306", - "done": true, - "published": true, - "public_url": "https://api.figshare.com/v2/articles/33634306" - }, - "KQOPT": { - "id": 33634318, - "url": "https://figshare.com/account/articles/33634318", - "done": true, - "published": true, - "public_url": "https://api.figshare.com/v2/articles/33634318" - }, - "KRAD": { - "id": 33634330, - "url": "https://figshare.com/account/articles/33634330", - "done": true, - "published": true, - "public_url": "https://api.figshare.com/v2/articles/33634330" - }, - "KSEEK": { - "id": 33634342, - "url": "https://figshare.com/account/articles/33634342", - "done": true, - "published": true, - "public_url": "https://api.figshare.com/v2/articles/33634342" - }, - "KTENSOR": { - "id": 33634351, - "url": "https://figshare.com/account/articles/33634351", - "done": true, - "published": true, - "public_url": "https://api.figshare.com/v2/articles/33634351" - } -} diff --git a/publish/state/kodex_doi_map.json b/publish/state/kodex_doi_map.json deleted file mode 100644 index d386ffefa29ee2e52be2462fab9fe083006d6fb8..0000000000000000000000000000000000000000 --- a/publish/state/kodex_doi_map.json +++ /dev/null @@ -1,262 +0,0 @@ -{ - "KAIROS": { - "zenodo_doi": "10.5281/zenodo.22694265", - "zenodo_url": "https://doi.org/10.5281/zenodo.22694265", - "osf_url": "https://osf.io/db6uh/", - "figshare_doi": "10.6084/m9.figshare.33553966", - "figshare_url": "https://doi.org/10.6084/m9.figshare.33553966", - "harvard_doi": "10.7910/DVN/GOZGCM", - "harvard_url": "https://doi.org/10.7910/DVN/GOZGCM", - "github_url": "https://github.com/KronosFE/kronos-ml" - }, - "KBREED": { - "zenodo_doi": "10.5281/zenodo.22694267", - "zenodo_url": "https://doi.org/10.5281/zenodo.22694267", - "osf_url": "https://osf.io/2m3ce/", - "figshare_doi": "10.6084/m9.figshare.33559312", - "figshare_url": "https://doi.org/10.6084/m9.figshare.33559312", - "harvard_doi": "10.7910/DVN/OPJHP3", - "harvard_url": "https://doi.org/10.7910/DVN/OPJHP3", - "github_url": "https://github.com/KronosFE/kronos-ml" - }, - "KBURN": { - "zenodo_doi": "10.5281/zenodo.22694269", - "zenodo_url": "https://doi.org/10.5281/zenodo.22694269", - "osf_url": "https://osf.io/8e6fn/", - "figshare_doi": "10.6084/m9.figshare.33559324", - "figshare_url": "https://doi.org/10.6084/m9.figshare.33559324", - "harvard_doi": "10.7910/DVN/ITN6JZ", - "harvard_url": "https://doi.org/10.7910/DVN/ITN6JZ", - "github_url": "https://github.com/KronosFE/kronos-ml" - }, - "KDRIVE": { - "zenodo_doi": "10.5281/zenodo.22694271", - "zenodo_url": "https://doi.org/10.5281/zenodo.22694271", - "osf_url": "https://osf.io/xhkuy/", - "figshare_doi": "10.6084/m9.figshare.33559333", - "figshare_url": "https://doi.org/10.6084/m9.figshare.33559333", - "harvard_doi": "10.7910/DVN/YKKLQ7", - "harvard_url": "https://doi.org/10.7910/DVN/YKKLQ7", - "github_url": "https://github.com/KronosFE/kronos-ml" - }, - "KECON": { - "zenodo_doi": "10.5281/zenodo.22694273", - "zenodo_url": "https://doi.org/10.5281/zenodo.22694273", - "osf_url": "https://osf.io/b5qmx/", - "figshare_doi": "10.6084/m9.figshare.33559345", - "figshare_url": "https://doi.org/10.6084/m9.figshare.33559345", - "harvard_doi": "10.7910/DVN/WBHQ7S", - "harvard_url": "https://doi.org/10.7910/DVN/WBHQ7S", - "github_url": "https://github.com/KronosFE/kronos-ml" - }, - "KEYE": { - "zenodo_doi": "10.5281/zenodo.22694279", - "zenodo_url": "https://doi.org/10.5281/zenodo.22694279", - "osf_url": "https://osf.io/5qzp4/", - "figshare_doi": "10.6084/m9.figshare.33559357", - "figshare_url": "https://doi.org/10.6084/m9.figshare.33559357", - "harvard_doi": "10.7910/DVN/5UILC8", - "harvard_url": "https://doi.org/10.7910/DVN/5UILC8", - "github_url": "https://github.com/KronosFE/kronos-ml" - }, - "KFLOW": { - "zenodo_doi": "10.5281/zenodo.22694283", - "zenodo_url": "https://doi.org/10.5281/zenodo.22694283", - "osf_url": "https://osf.io/hjrzb/", - "figshare_doi": "10.6084/m9.figshare.33559369", - "figshare_url": "https://doi.org/10.6084/m9.figshare.33559369", - "harvard_doi": "10.7910/DVN/XUXC7B", - "harvard_url": "https://doi.org/10.7910/DVN/XUXC7B", - "github_url": "https://github.com/KronosFE/kronos-ml" - }, - "KFLUX": { - "zenodo_doi": "10.5281/zenodo.22694287", - "zenodo_url": "https://doi.org/10.5281/zenodo.22694287", - "osf_url": "https://osf.io/fmjc2/", - "figshare_doi": "10.6084/m9.figshare.33559378", - "figshare_url": "https://doi.org/10.6084/m9.figshare.33559378", - "harvard_doi": "10.7910/DVN/3F0NCW", - "harvard_url": "https://doi.org/10.7910/DVN/3F0NCW", - "github_url": "https://github.com/KronosFE/kronos-ml" - }, - "KFORGE": { - "zenodo_doi": "10.5281/zenodo.22694289", - "zenodo_url": "https://doi.org/10.5281/zenodo.22694289", - "osf_url": "https://osf.io/5zg6j/", - "figshare_doi": "10.6084/m9.figshare.33559390", - "figshare_url": "https://doi.org/10.6084/m9.figshare.33559390", - "harvard_doi": "10.7910/DVN/OVOVVN", - "harvard_url": "https://doi.org/10.7910/DVN/OVOVVN", - "github_url": "https://github.com/KronosFE/kronos-ml" - }, - "KFUEL": { - "zenodo_doi": "10.5281/zenodo.22694291", - "zenodo_url": "https://doi.org/10.5281/zenodo.22694291", - "osf_url": "https://osf.io/xuz8a/", - "figshare_doi": "10.6084/m9.figshare.33559402", - "figshare_url": "https://doi.org/10.6084/m9.figshare.33559402", - "harvard_doi": "10.7910/DVN/89A8GS", - "harvard_url": "https://doi.org/10.7910/DVN/89A8GS", - "github_url": "https://github.com/KronosFE/kronos-ml" - }, - "KFUSE": { - "zenodo_doi": "10.5281/zenodo.22694294", - "zenodo_url": "https://doi.org/10.5281/zenodo.22694294", - "osf_url": "https://osf.io/exhkc/", - "figshare_doi": "10.6084/m9.figshare.33559414", - "figshare_url": "https://doi.org/10.6084/m9.figshare.33559414", - "harvard_doi": "10.7910/DVN/SMA2OP", - "harvard_url": "https://doi.org/10.7910/DVN/SMA2OP", - "github_url": "https://github.com/KronosFE/kronos-ml" - }, - "KGATE": { - "zenodo_doi": "10.5281/zenodo.22694297", - "zenodo_url": "https://doi.org/10.5281/zenodo.22694297", - "osf_url": "https://osf.io/mbu37/", - "figshare_doi": "10.6084/m9.figshare.33559423", - "figshare_url": "https://doi.org/10.6084/m9.figshare.33559423", - "harvard_doi": "10.7910/DVN/2CKPZH", - "harvard_url": "https://doi.org/10.7910/DVN/2CKPZH", - "github_url": "https://github.com/KronosFE/kronos-ml" - }, - "KGEN": { - "zenodo_doi": "10.5281/zenodo.22694307", - "zenodo_url": "https://doi.org/10.5281/zenodo.22694307", - "osf_url": "https://osf.io/svbwq/", - "figshare_doi": "10.6084/m9.figshare.33559435", - "figshare_url": "https://doi.org/10.6084/m9.figshare.33559435", - "harvard_doi": "10.7910/DVN/OCTF8U", - "harvard_url": "https://doi.org/10.7910/DVN/OCTF8U", - "github_url": "https://github.com/KronosFE/kronos-ml" - }, - "KHALO": { - "zenodo_doi": "10.5281/zenodo.22694309", - "zenodo_url": "https://doi.org/10.5281/zenodo.22694309", - "osf_url": "https://osf.io/ne89y/", - "figshare_doi": "10.6084/m9.figshare.33559447", - "figshare_url": "https://doi.org/10.6084/m9.figshare.33559447", - "harvard_doi": "10.7910/DVN/V5YM23", - "harvard_url": "https://doi.org/10.7910/DVN/V5YM23", - "github_url": "https://github.com/KronosFE/kronos-ml" - }, - "KISO": { - "zenodo_doi": "10.5281/zenodo.22694311", - "zenodo_url": "https://doi.org/10.5281/zenodo.22694311", - "osf_url": "https://osf.io/hjqek/", - "figshare_doi": "10.6084/m9.figshare.33559459", - "figshare_url": "https://doi.org/10.6084/m9.figshare.33559459", - "harvard_doi": "10.7910/DVN/ELXAEY", - "harvard_url": "https://doi.org/10.7910/DVN/ELXAEY", - "github_url": "https://github.com/KronosFE/kronos-ml" - }, - "KLAW": { - "zenodo_doi": "10.5281/zenodo.22694315", - "zenodo_url": "https://doi.org/10.5281/zenodo.22694315", - "osf_url": "https://osf.io/kfp4t/", - "figshare_doi": "10.6084/m9.figshare.33559468", - "figshare_url": "https://doi.org/10.6084/m9.figshare.33559468", - "harvard_doi": "10.7910/DVN/ANAFXK", - "harvard_url": "https://doi.org/10.7910/DVN/ANAFXK", - "github_url": "https://github.com/KronosFE/kronos-ml" - }, - "KMAT": { - "zenodo_doi": "10.5281/zenodo.22694319", - "zenodo_url": "https://doi.org/10.5281/zenodo.22694319", - "osf_url": "https://osf.io/y4j2p/", - "figshare_doi": "10.6084/m9.figshare.33559480", - "figshare_url": "https://doi.org/10.6084/m9.figshare.33559480", - "harvard_doi": "10.7910/DVN/IJG9FT", - "harvard_url": "https://doi.org/10.7910/DVN/IJG9FT", - "github_url": "https://github.com/KronosFE/kronos-ml" - }, - "KOIL": { - "zenodo_doi": "10.5281/zenodo.22694323", - "zenodo_url": "https://doi.org/10.5281/zenodo.22694323", - "osf_url": "https://osf.io/2rb68/", - "figshare_doi": "10.6084/m9.figshare.33559492", - "figshare_url": "https://doi.org/10.6084/m9.figshare.33559492", - "harvard_doi": "10.7910/DVN/N5WLNR", - "harvard_url": "https://doi.org/10.7910/DVN/N5WLNR", - "github_url": "https://github.com/KronosFE/kronos-ml" - }, - "KORE": { - "zenodo_doi": "10.5281/zenodo.22694327", - "zenodo_url": "https://doi.org/10.5281/zenodo.22694327", - "osf_url": "https://osf.io/sxm5v/", - "figshare_doi": "10.6084/m9.figshare.33559504", - "figshare_url": "https://doi.org/10.6084/m9.figshare.33559504", - "harvard_doi": "10.7910/DVN/DCFLOI", - "harvard_url": "https://doi.org/10.7910/DVN/DCFLOI", - "github_url": "https://github.com/KronosFE/kronos-ml" - }, - "KPATH": { - "zenodo_doi": "10.5281/zenodo.22694329", - "zenodo_url": "https://doi.org/10.5281/zenodo.22694329", - "osf_url": "https://osf.io/fbcyw/", - "figshare_doi": "10.6084/m9.figshare.33559513", - "figshare_url": "https://doi.org/10.6084/m9.figshare.33559513", - "harvard_doi": "10.7910/DVN/8QIUD4", - "harvard_url": "https://doi.org/10.7910/DVN/8QIUD4", - "github_url": "https://github.com/KronosFE/kronos-ml" - }, - "KPILOT": { - "zenodo_doi": "10.5281/zenodo.22694331", - "zenodo_url": "https://doi.org/10.5281/zenodo.22694331", - "osf_url": "https://osf.io/aqxe8/", - "figshare_doi": "10.6084/m9.figshare.33559525", - "figshare_url": "https://doi.org/10.6084/m9.figshare.33559525", - "harvard_doi": "10.7910/DVN/EYD6FZ", - "harvard_url": "https://doi.org/10.7910/DVN/EYD6FZ", - "github_url": "https://github.com/KronosFE/kronos-ml" - }, - "KQROSS": { - "zenodo_doi": "10.5281/zenodo.22694333", - "zenodo_url": "https://doi.org/10.5281/zenodo.22694333", - "osf_url": "https://osf.io/zp82a/", - "figshare_doi": "10.6084/m9.figshare.33559537", - "figshare_url": "https://doi.org/10.6084/m9.figshare.33559537", - "harvard_doi": "10.7910/DVN/IIDBCF", - "harvard_url": "https://doi.org/10.7910/DVN/IIDBCF", - "github_url": "https://github.com/KronosFE/kronos-ml" - }, - "KQUBIT": { - "zenodo_doi": "10.5281/zenodo.22694336", - "zenodo_url": "https://doi.org/10.5281/zenodo.22694336", - "osf_url": "https://osf.io/eqr9z/", - "figshare_doi": "10.6084/m9.figshare.33559546", - "figshare_url": "https://doi.org/10.6084/m9.figshare.33559546", - "harvard_doi": "10.7910/DVN/2BC8BL", - "harvard_url": "https://doi.org/10.7910/DVN/2BC8BL", - "github_url": "https://github.com/KronosFE/kronos-ml" - }, - "KSENSE": { - "zenodo_doi": "10.5281/zenodo.22694338", - "zenodo_url": "https://doi.org/10.5281/zenodo.22694338", - "osf_url": "https://osf.io/psr8h/", - "figshare_doi": "10.6084/m9.figshare.33559558", - "figshare_url": "https://doi.org/10.6084/m9.figshare.33559558", - "harvard_doi": "10.7910/DVN/5LQJAF", - "harvard_url": "https://doi.org/10.7910/DVN/5LQJAF", - "github_url": "https://github.com/KronosFE/kronos-ml" - }, - "KWARD": { - "zenodo_doi": "10.5281/zenodo.22694342", - "zenodo_url": "https://doi.org/10.5281/zenodo.22694342", - "osf_url": "https://osf.io/ugfpr/", - "figshare_doi": "10.6084/m9.figshare.33559570", - "figshare_url": "https://doi.org/10.6084/m9.figshare.33559570", - "harvard_doi": "10.7910/DVN/VPYXHS", - "harvard_url": "https://doi.org/10.7910/DVN/VPYXHS", - "github_url": "https://github.com/KronosFE/kronos-ml" - }, - "KYRO": { - "zenodo_doi": "10.5281/zenodo.22694348", - "zenodo_url": "https://doi.org/10.5281/zenodo.22694348", - "osf_url": "https://osf.io/5m6vu/", - "figshare_doi": "10.6084/m9.figshare.33559582", - "figshare_url": "https://doi.org/10.6084/m9.figshare.33559582", - "harvard_doi": "10.7910/DVN/2YQQOX", - "harvard_url": "https://doi.org/10.7910/DVN/2YQQOX", - "github_url": "https://github.com/KronosFE/kronos-ml" - } -} \ No newline at end of file diff --git a/publish/state/osf_drafts.json b/publish/state/osf_drafts.json deleted file mode 100644 index d53d3524f7311d5c22a6242a3b8b632bf22d254d..0000000000000000000000000000000000000000 --- a/publish/state/osf_drafts.json +++ /dev/null @@ -1,212 +0,0 @@ -{ - "KAIROS": { - "id": "db6uh", - "url": "https://osf.io/db6uh/", - "done": true, - "public": true - }, - "KBREED": { - "id": "2m3ce", - "url": "https://osf.io/2m3ce/", - "done": true, - "public": true - }, - "KBURN": { - "id": "8e6fn", - "url": "https://osf.io/8e6fn/", - "done": true, - "public": true - }, - "KDRIVE": { - "id": "xhkuy", - "url": "https://osf.io/xhkuy/", - "done": true, - "public": true - }, - "KECON": { - "id": "b5qmx", - "url": "https://osf.io/b5qmx/", - "done": true, - "public": true - }, - "KEYE": { - "id": "5qzp4", - "url": "https://osf.io/5qzp4/", - "done": true, - "public": true - }, - "KFLOW": { - "id": "hjrzb", - "url": "https://osf.io/hjrzb/", - "done": true, - "public": true - }, - "KFLUX": { - "id": "fmjc2", - "url": "https://osf.io/fmjc2/", - "done": true, - "public": true - }, - "KFORGE": { - "id": "5zg6j", - "url": "https://osf.io/5zg6j/", - "done": true, - "public": true - }, - "KFUEL": { - "id": "xuz8a", - "url": "https://osf.io/xuz8a/", - "done": true, - "public": true - }, - "KFUSE": { - "id": "exhkc", - "url": "https://osf.io/exhkc/", - "done": true, - "public": true - }, - "KGATE": { - "id": "mbu37", - "url": "https://osf.io/mbu37/", - "done": true, - "public": true - }, - "KGEN": { - "id": "svbwq", - "url": "https://osf.io/svbwq/", - "done": true, - "public": true - }, - "KHALO": { - "id": "ne89y", - "url": "https://osf.io/ne89y/", - "done": true, - "public": true - }, - "KISO": { - "id": "hjqek", - "url": "https://osf.io/hjqek/", - "done": true, - "public": true - }, - "KLAW": { - "id": "kfp4t", - "url": "https://osf.io/kfp4t/", - "done": true, - "public": true - }, - "KMAT": { - "id": "y4j2p", - "url": "https://osf.io/y4j2p/", - "done": true, - "public": true - }, - "KOIL": { - "id": "2rb68", - "url": "https://osf.io/2rb68/", - "done": true, - "public": true - }, - "KORE": { - "id": "sxm5v", - "url": "https://osf.io/sxm5v/", - "done": true, - "public": true - }, - "KPATH": { - "id": "fbcyw", - "url": "https://osf.io/fbcyw/", - "done": true, - "public": true - }, - "KPILOT": { - "id": "aqxe8", - "url": "https://osf.io/aqxe8/", - "done": true, - "public": true - }, - "KQROSS": { - "id": "zp82a", - "url": "https://osf.io/zp82a/", - "done": true, - "public": true - }, - "KQUBIT": { - "id": "eqr9z", - "url": "https://osf.io/eqr9z/", - "done": true, - "public": true - }, - "KSENSE": { - "id": "psr8h", - "url": "https://osf.io/psr8h/", - "done": true, - "public": true - }, - "KWARD": { - "id": "ugfpr", - "url": "https://osf.io/ugfpr/", - "done": true, - "public": true - }, - "KYRO": { - "id": "5m6vu", - "url": "https://osf.io/5m6vu/", - "done": true, - "public": true - }, - "KBENCH": { - "id": "kdb7a", - "url": "https://osf.io/kdb7a/", - "done": true, - "public": true - }, - "KDYN": { - "id": "8yhba", - "url": "https://osf.io/8yhba/", - "done": true, - "public": true - }, - "KEDGE": { - "id": "s6cbz", - "url": "https://osf.io/s6cbz/", - "done": true, - "public": true - }, - "KHEAT": { - "id": "9wu4t", - "url": "https://osf.io/9wu4t/", - "done": true, - "public": true - }, - "KQERN": { - "id": "fj4cm", - "url": "https://osf.io/fj4cm/", - "done": true, - "public": true - }, - "KQOPT": { - "id": "gae73", - "url": "https://osf.io/gae73/", - "done": true, - "public": true - }, - "KRAD": { - "id": "5hfxr", - "url": "https://osf.io/5hfxr/", - "done": true, - "public": true - }, - "KSEEK": { - "id": "5czek", - "url": "https://osf.io/5czek/", - "done": true, - "public": true - }, - "KTENSOR": { - "id": "zfk6t", - "url": "https://osf.io/zfk6t/", - "done": true, - "public": true - } -} diff --git a/publish/state/zenodo_drafts.json b/publish/state/zenodo_drafts.json deleted file mode 100644 index 4f731450c34ef569a9125eb8341a28a9ba8afa0d..0000000000000000000000000000000000000000 --- a/publish/state/zenodo_drafts.json +++ /dev/null @@ -1,212 +0,0 @@ -{ - "KAIROS": { - "id": 22694265, - "edit_url": "https://zenodo.org/deposit/22694265", - "published": true, - "doi": "10.5281/zenodo.22694265" - }, - "KBREED": { - "id": 22694267, - "edit_url": "https://zenodo.org/deposit/22694267", - "published": true, - "doi": "10.5281/zenodo.22694267" - }, - "KBURN": { - "id": 22694269, - "edit_url": "https://zenodo.org/deposit/22694269", - "published": true, - "doi": "10.5281/zenodo.22694269" - }, - "KDRIVE": { - "id": 22694271, - "edit_url": "https://zenodo.org/deposit/22694271", - "published": true, - "doi": "10.5281/zenodo.22694271" - }, - "KECON": { - "id": 22694273, - "edit_url": "https://zenodo.org/deposit/22694273", - "published": true, - "doi": "10.5281/zenodo.22694273" - }, - "KEYE": { - "id": 22694279, - "edit_url": "https://zenodo.org/deposit/22694279", - "published": true, - "doi": "10.5281/zenodo.22694279" - }, - "KFLOW": { - "id": 22694283, - "edit_url": "https://zenodo.org/deposit/22694283", - "published": true, - "doi": "10.5281/zenodo.22694283" - }, - "KFLUX": { - "id": 22694287, - "edit_url": "https://zenodo.org/deposit/22694287", - "published": true, - "doi": "10.5281/zenodo.22694287" - }, - "KFORGE": { - "id": 22694289, - "edit_url": "https://zenodo.org/deposit/22694289", - "published": true, - "doi": "10.5281/zenodo.22694289" - }, - "KFUEL": { - "id": 22694291, - "edit_url": "https://zenodo.org/deposit/22694291", - "published": true, - "doi": "10.5281/zenodo.22694291" - }, - "KFUSE": { - "id": 22694294, - "edit_url": "https://zenodo.org/deposit/22694294", - "published": true, - "doi": "10.5281/zenodo.22694294" - }, - "KGATE": { - "id": 22694297, - "edit_url": "https://zenodo.org/deposit/22694297", - "published": true, - "doi": "10.5281/zenodo.22694297" - }, - "KGEN": { - "id": 22694307, - "edit_url": "https://zenodo.org/deposit/22694307", - "published": true, - "doi": "10.5281/zenodo.22694307" - }, - "KHALO": { - "id": 22694309, - "edit_url": "https://zenodo.org/deposit/22694309", - "published": true, - "doi": "10.5281/zenodo.22694309" - }, - "KISO": { - "id": 22694311, - "edit_url": "https://zenodo.org/deposit/22694311", - "published": true, - "doi": "10.5281/zenodo.22694311" - }, - "KLAW": { - "id": 22694315, - "edit_url": "https://zenodo.org/deposit/22694315", - "published": true, - "doi": "10.5281/zenodo.22694315" - }, - "KMAT": { - "id": 22694319, - "edit_url": "https://zenodo.org/deposit/22694319", - "published": true, - "doi": "10.5281/zenodo.22694319" - }, - "KOIL": { - "id": 22694323, - "edit_url": "https://zenodo.org/deposit/22694323", - "published": true, - "doi": "10.5281/zenodo.22694323" - }, - "KORE": { - "id": 22694327, - "edit_url": "https://zenodo.org/deposit/22694327", - "published": true, - "doi": "10.5281/zenodo.22694327" - }, - "KPATH": { - "id": 22694329, - "edit_url": "https://zenodo.org/deposit/22694329", - "published": true, - "doi": "10.5281/zenodo.22694329" - }, - "KPILOT": { - "id": 22694331, - "edit_url": "https://zenodo.org/deposit/22694331", - "published": true, - "doi": "10.5281/zenodo.22694331" - }, - "KQROSS": { - "id": 22694333, - "edit_url": "https://zenodo.org/deposit/22694333", - "published": true, - "doi": "10.5281/zenodo.22694333" - }, - "KQUBIT": { - "id": 22694336, - "edit_url": "https://zenodo.org/deposit/22694336", - "published": true, - "doi": "10.5281/zenodo.22694336" - }, - "KSENSE": { - "id": 22694338, - "edit_url": "https://zenodo.org/deposit/22694338", - "published": true, - "doi": "10.5281/zenodo.22694338" - }, - "KWARD": { - "id": 22694342, - "edit_url": "https://zenodo.org/deposit/22694342", - "published": true, - "doi": "10.5281/zenodo.22694342" - }, - "KYRO": { - "id": 22694348, - "edit_url": "https://zenodo.org/deposit/22694348", - "published": true, - "doi": "10.5281/zenodo.22694348" - }, - "KBENCH": { - "id": 22713389, - "edit_url": "https://zenodo.org/deposit/22713389", - "published": true, - "doi": "10.5281/zenodo.22713389" - }, - "KDYN": { - "id": 22713391, - "edit_url": "https://zenodo.org/deposit/22713391", - "published": true, - "doi": "10.5281/zenodo.22713391" - }, - "KEDGE": { - "id": 22713393, - "edit_url": "https://zenodo.org/deposit/22713393", - "published": true, - "doi": "10.5281/zenodo.22713393" - }, - "KHEAT": { - "id": 22713395, - "edit_url": "https://zenodo.org/deposit/22713395", - "published": true, - "doi": "10.5281/zenodo.22713395" - }, - "KQERN": { - "id": 22713397, - "edit_url": "https://zenodo.org/deposit/22713397", - "published": true, - "doi": "10.5281/zenodo.22713397" - }, - "KQOPT": { - "id": 22713399, - "edit_url": "https://zenodo.org/deposit/22713399", - "published": true, - "doi": "10.5281/zenodo.22713399" - }, - "KRAD": { - "id": 22713401, - "edit_url": "https://zenodo.org/deposit/22713401", - "published": true, - "doi": "10.5281/zenodo.22713401" - }, - "KSEEK": { - "id": 22713403, - "edit_url": "https://zenodo.org/deposit/22713403", - "published": true, - "doi": "10.5281/zenodo.22713403" - }, - "KTENSOR": { - "id": 22713405, - "edit_url": "https://zenodo.org/deposit/22713405", - "published": true, - "doi": "10.5281/zenodo.22713405" - } -} diff --git a/publish/zenodo_draft.py b/publish/zenodo_draft.py deleted file mode 100644 index 3ff921c8b3d4fded784af2d6c2967f863b2fea84..0000000000000000000000000000000000000000 --- a/publish/zenodo_draft.py +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env python -"""Create 26 per-code DRAFT Zenodo depositions (one per BUILT KODEX code). - -DRAFT-FIRST: creates unpublished depositions and uploads each code's attach set. -NEVER publishes. Resume-safe: records already in publish/state/zenodo_drafts.json are -skipped. After review, run zenodo_publish_all.py --yes to publish them in one go. - - export ZENODO_TOKEN=... # optional: export ZENODO_BASE=https://sandbox.zenodo.org - python publish/zenodo_draft.py -""" -from __future__ import annotations -import os, sys -import requests -from _percode import built, attach_paths, load_meta, read_state, write_state, require_env - -BASE = os.environ.get("ZENODO_BASE", "https://zenodo.org").rstrip("/") - - -def _api_meta(m): - lic = m["license"]; lic = lic["id"] if isinstance(lic, dict) else lic - out = {"title": m["title"], "upload_type": "software", "description": m["description"], - "creators": m["creators"], "license": lic, "keywords": m["keywords"], - "related_identifiers": m["related_identifiers"], "version": m["version"], - "language": "eng", "notes": m.get("notes")} - return {k: v for k, v in out.items() if v is not None} - - -def main(): - token = require_env("ZENODO_TOKEN") - p = {"access_token": token} - s = requests.Session() - state = read_state("zenodo") - names = built() - for i, name in enumerate(names, 1): - if state.get(name, {}).get("id"): - print(f"[zenodo] ({i}/{len(names)}) {name}: already drafted (skip)"); continue - m = load_meta(name) - r = s.post(f"{BASE}/api/deposit/depositions", params=p, json={}); r.raise_for_status() - dep = r.json(); dep_id, bucket = dep["id"], dep["links"]["bucket"] - for path in attach_paths(name): - with open(path, "rb") as fh: - s.put(f"{bucket}/{path.name}", data=fh, params=p).raise_for_status() - s.put(f"{BASE}/api/deposit/depositions/{dep_id}", params=p, - json={"metadata": _api_meta(m)}).raise_for_status() - state[name] = {"id": dep_id, "edit_url": f"{BASE}/deposit/{dep_id}"} - write_state("zenodo", state) - print(f"[zenodo] ({i}/{len(names)}) {name}: DRAFT {dep_id}") - print(f"\n[zenodo] {len(state)} drafts ready (NONE published). Review, then:") - print(" python publish/zenodo_publish_all.py --yes") - - -if __name__ == "__main__": - sys.exit(main()) diff --git a/publish/zenodo_publish_all.py b/publish/zenodo_publish_all.py deleted file mode 100644 index bc1f876a46c5acbc173be7d650e6f9732917b338..0000000000000000000000000000000000000000 --- a/publish/zenodo_publish_all.py +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env python -"""Publish the 26 per-code Zenodo DRAFTS created by zenodo_draft.py. - -THIS IS THE IRREVERSIBLE STEP. It is a DRY RUN by default — it only lists what would -be published. It publishes ONLY when you pass --yes, and only the drafts recorded in -publish/state/zenodo_drafts.json. Publishing mints DOIs and makes records public. - - export ZENODO_TOKEN=... - python publish/zenodo_publish_all.py # dry run (lists drafts) - python publish/zenodo_publish_all.py --yes # actually publish -""" -from __future__ import annotations -import argparse, os, sys -import requests -from _percode import read_state, write_state, require_env - -BASE = os.environ.get("ZENODO_BASE", "https://zenodo.org").rstrip("/") - - -def main(): - ap = argparse.ArgumentParser() - ap.add_argument("--yes", action="store_true", help="actually publish (irreversible)") - args = ap.parse_args() - state = read_state("zenodo") - pending = {n: r for n, r in state.items() if r.get("id") and not r.get("published")} - if not pending: - print("[zenodo] no unpublished drafts in state (run zenodo_draft.py first)."); return - print(f"[zenodo] {len(pending)} draft(s) to publish on {BASE}:") - for n, r in pending.items(): - print(f" {n:9s} id={r['id']} {r.get('edit_url','')}") - if not args.yes: - print("\n[zenodo] DRY RUN — nothing published. Re-run with --yes to publish these.") - return - p = {"access_token": require_env("ZENODO_TOKEN")} - s = requests.Session() - for n, r in pending.items(): - resp = s.post(f"{BASE}/api/deposit/depositions/{r['id']}/actions/publish", params=p) - resp.raise_for_status() - d = resp.json() - r["published"] = True - r["doi"] = d.get("doi") or d.get("metadata", {}).get("doi") - write_state("zenodo", state) - print(f"[zenodo] PUBLISHED {n}: DOI {r.get('doi')}") - print(f"\n[zenodo] published {len(pending)} records.") - - -if __name__ == "__main__": - sys.exit(main()) diff --git a/pyproject.toml b/pyproject.toml index 88119b9ed732a5b84e69729678654e49c76cfef9..235c56388d626804f3114f1101af3a642b3e5f8d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "kronos-fusion-ml" -version = "0.2.0" +version = "0.3.0" description = "KODEX — the Kronos Family of Codes: a benchmarked AI/ML surrogate suite for fusion, with calibrated uncertainty and an abstention gate on every model." readme = "README.md" requires-python = ">=3.10"