Skip to content

Known limitations and resolved implementation history

This page states current capability boundaries and preserves resolved implementation history. It is not a roadmap, priority queue, or task registry. Repository planning remains private; public users need the limitation itself, its effect on claims, and the evidence that resolves a historical issue.

Current limitation

Fixed-weight disruption-risk baseline

scpn_control.control.disruption_predictor.predict_disruption_risk computes a deterministic, hand-tuned sigmoid over toroidal-asymmetry observables. It is a heuristic baseline with synthetic sanity checks, not a model trained or validated on an experimental disruption database. Its score must not be represented as facility-validated probability, experimental accuracy, or a production protection-system decision.

The public claim boundary is enforced in the predictor metadata, Studio evidence adapter, README limitation disclosure, and validation tests. Optional Transformer training on synthetic shots does not close the experimental-data boundary.

Normalized H-infinity model and runtime boundary

HInfinityController implements the central DGKF solution only for the normalized continuous-time standard plant with D11=D22=0, explicit D12/D21, the required stabilizability/detectability and orthogonality identities, positive-semidefinite stabilizing Riccati solutions, and strict rho(XY)<gamma^2. It does not silently transform arbitrary generalized plants.

The theorem covers the unsaturated linear continuous-time interconnection. Exact ZOH reproduces the controller realization between samples, but does not guarantee stability for every sample period; output clipping also invalidates the linear performance proof. The bundled vertical and flight-simulator plants are reduced examples, not facility-identified reactor models. Rust executes the same admitted realization but does not independently synthesize it.

Resolved implementation history

The entries below are historical engineering facts, not open work items.

Component Former limitation Resolution evidence Tracking
Rust H-infinity runtime The historical path used Euler and later a different sampled LQR/observer design labelled as H-infinity Rust now receives the admitted Python DGKF (Ak,Bk,Ck) realization and executes exact ZOH with step-for-step parity; it makes no independent synthesis claim gh-10
Nengo Loihi wrapper The Loihi backend was not exercised in CI v0.9.0 added the dedicated nengo-loihi job with nengo>=4.0 gh-11
Rust SPI compatibility RustSPIMitigation had no Python fallback v0.8.0 added a Python fallback matching the Rust SPI phase constants gh-13
Rust multigrid compatibility rust_multigrid_vcycle had no Python fallback v0.8.0 delegated the fallback to FusionKernel._multigrid_vcycle gh-14
Rust SVD correction compatibility rust_svd_optimal_correction had no Python fallback v0.8.0 added the NumPy truncated-SVD pseudoinverse fallback gh-15
JAX traceable runtime JAX tracing was not exercised in CI v0.9.0 added the dedicated jax-parity job gh-12
Finite-value validation Repeated np.isfinite validation was duplicated across modules v0.8.0 introduced shared bounded-float and finite-array validators and migrated the initial owners gh-17
Vertical stability index VerticalStabilityAnalysis.compute_n_index returned a hard-coded value v0.18.x derives the vertical field index from the flux grid and rejects degenerate grids local regression suite
Sensor-fault reconfiguration ReconfigurableController.handle_sensor_fault did not change allocation after isolation v0.18.x records isolated sensors, removes their allocation weight, recomputes gain, masks residuals, and rejects invalid indices local regression suite
SOL detachment threshold detachment_threshold returned False for every state v0.18.x evaluates a two-point Spitzer/sheath target-temperature criterion with fail-fast input validation local regression suite
LCFS extraction RealtimeEFIT.find_lcfs returned a zero-array stub v0.18.x extracts and angle-sorts finite boundary points from the positive closed-flux region local regression suite
Rogowski measurement DiagnosticResponse.simulate_measurements returned a hard-coded current v0.18.x integrates the reconstructed toroidal current density over the diagnostic grid local regression suite
Grad-Shafranov source solve RealtimeEFIT._solve_gs_with_sources returned a generic clipped ellipse v0.18.x solves the fixed-boundary source equation with a sparse finite-difference operator and polynomial source profiles local regression suite
EFIT reconstruction RealtimeEFIT.reconstruct did not perform a real inverse reconstruction 2026-06-22 work added weighted least squares, Tikhonov regularisation, Picard geometry updates, free-boundary coil fitting, and closure tests; magnetic-only data still do not identify the pressure/current split commits a640bf0, 13d5417
Director integration An implicit director_module import kept the native branch permanently unavailable commit 75568e0 replaced it with injected-director or rule-based-fallback contracts and removed the stale typing override commit 75568e0

The current repository head, tests, and public API documentation are the authority for present behaviour. Historical version statements describe the point at which each limitation was resolved; they do not independently claim facility validation, deployed performance, or certification.