The Continual Learning Loop
Kronos closes a data-to-model loop that continually re-grounds every predictive object against new pulse evidence without ever letting the machine learn online.
Learning offline, acting online
Continual learning at Kronos is strictly a batch discipline. Each pulse or campaign on the breeder or burner writes labeled evidence into the L0 archive; periodically that evidence retrains or refines the surrogates, controllers, and anomaly detectors; the improved artifacts are validated and staged back out. The online layers never update their own weights. This separation is what lets the failsafe path be certified independently of any learning component.
The loop is deliberately asymmetric in speed. The control plane acts in microseconds; the learning loop turns in hours to weeks. Coupling them tightly would make control behavior non-reproducible. Decoupling them means every deployed controller corresponds to a frozen, hash-identified artifact you can point to after the fact.
# Continual learning loop (batch, offline) — conceptual
while True:
evidence = L0.collect_new_pulses(since=last_watermark)
dataset = curate(evidence, dedupe=True, provenance=True)
if drift_detected(dataset) or scheduled_retrain():
model = retrain(base=registry.current('breeder/equilibrium'),
data=dataset, seed=FIXED_SEED)
report = validate_offline(model, holdout, backtests)
if report.passes_all_gates:
registry.register(model, state='STAGING', lineage=report)
last_watermark = evidence.max_time
What gets refined
- Grad-Shafranov and MHD surrogates for the breeder twin
- Ambipolar-potential and plug-density surrogates for the burner twin
- Anomaly and disruption-precursor detectors on both machines
- Diagnostic calibration models tracking sensor drift
The loop feeds directly into digital-twin refinement and reads its retraining triggers from drift detection. It is the connective tissue between L0 and the twin. See also the lifecycle overview for how a refined artifact is then staged.