KYMA v3 Dynamics Ablation — Preregistration¶
Date: 2026-09-30
Status: frozen before any ablation variant is trained. The freeze is the commit
that adds this file and scripts/run_kyma_v3_ablation.py, once it is on the public
remote; the run starts only after that push. The result will be appended below a
RESULT heading; nothing above it changes after training.
0 QPU. Classical oscillator-substrate ablation.
Scientific question¶
KYMA v3 (docs/campaigns/kyma_v3_symbolic_composition_prereg_2026-09-29.md, PASS:
substrate 1.000 ± 0.000 on the held-out pair against 0.441 ± 0.099 for the best
matched baseline) could not separate the oscillator dynamics from the other
architectural priors chosen for realisability: the phase-lattice value encoding, the
gated write stage with reset, and the triadic coupling that can add phases. Which of
them carries the generalisation?
Authority: owner decision 2026-09-30 ("priprav to a spustíme to").
Unchanged from v3¶
Task, split (2,112 training items; held-out pair (R0, R1), query a, 64 items),
labels, loss (1 − cos), initialisation (N(0, 0.3²) per gate, seeded), optimiser
(full-batch Adam, learning rate 0.05, 3,000 epochs), seeds 0–4, readout
(nearest lattice value), chance floor 0.25. The frozen v3 modules are imported, not
modified; this commit adds only the runner, its tests and this file.
Variants (frozen)¶
| variant | what changes | trainable parameters | hand-set realisability (all 2,304 items) |
|---|---|---|---|
full |
nothing: the frozen v3 write stage (control) | 108 | 1.000 |
phasor |
no dynamics: each write stage sets the destination phase to the stable fixed point of the frozen stage dynamics, θ_i = arg(Σ_j K e^{i(x_j+α)} + Σ_p T e^{i(x_{p1}+x_{p2}+β)}); no integration, no reset |
108 | 1.000 |
pairwise |
frozen dynamics without the triadic term (triadic gates fixed at 0, not trained) | 54 | 0.875 (pairwise coupling cannot add phases) |
short |
frozen dynamics with 5 RK4 steps per stage instead of 60 (T = 0.25) |
108 | 0.458 at the hand coupling 2.0; 0.995 at 10 and 1.000 at 20 |
Basis of phasor: the frozen right-hand side equals |Z| sin(arg Z − θ) with Z as
above, whose stable fixed point is arg Z; the runner's test integrates the frozen
dynamics for 4,000 steps and matches the phasor phase to 1e-3 rad. full training in
the runner is bit-identical to the frozen substrate.train (tested).
Measurements¶
Per variant and seed: held-out accuracy on the 64 test items (primary), training accuracy, training wall time. Reported as mean ± population SD over seeds 0–4. No energy figure is computed.
Interpretation rules (the contract; no PASS/FAIL)¶
- R0 — validity.
fullmust reproduce the v3 per-seed held-out accuracies (all five seeds 1.000). If it does not, every comparison below is made against this run'sfulland the mismatch is reported first. - R1 — dynamics. If
phasormean is within 10 percentage points offullmean, the v3 generalisation is attributed to the phase-arithmetic structure that the stage's fixed point already contains (phase encoding, operation gating, triadic phase sum), not to oscillator dynamics; KYMA Part B must not name the dynamics as the mechanism. Ifphasoris more than 10 points belowfull, the integration dynamics contribute beyond their fixed-point map within this task's scope, and that may be stated with this probe's limits. - R2 — triadic prior. If
pairwiseis within 10 points offull, the triadic term is not necessary (contradicting its realisability bound); otherwise the phase-sum prior is necessary for this task. - R3 — settling. If
shortis within 10 points offull, the long integration is not needed; otherwise it is reported as a limitation of short integration.
The rules apply whatever the numbers are. v3 baselines are quoted for context only and are not re-run.
Compute and environment¶
Host: ML350 (approved compute host); one systemd-run --user unit pinned to at most 12
cores; outputs under ~/, then copied into
data/kyma_v3_symbolic_composition/kyma_v3_dynamics_ablation.json. Environment: the
pinned requirements-ci-py312-linux.txt plus requirements-ci-jax-py312-linux.txt
(jax 0.10.1, CPU), as for v3. Command:
python scripts/run_kyma_v3_ablation.py --commit <freeze commit> (all four variants,
seeds 0–4, 3,000 epochs). Expected run time about 2–3 hours.
Amendments¶
Any change before training is a new commit labelled as an amendment in this file, pushed before the run. No change after training starts.
Reporting¶
The result is reported whichever way it falls, with R0–R3 applied, to the owner and the CEO, and appended below. Part B quotes no partial or assumed number.
Seat: 90ad
RESULT¶
Appended 2026-10-01 after training. Nothing above this heading changed (SHA-256 of the file before this section:
360c6fbcb3c356ff4b2fc9b35ffa91d1d8351a8e4d258c0a5eb4ccacb9f9443b).
Run. Source commit d739e6b01b7d51ad35227e1ea77361a194b10005 (this freeze; runner SHA-256
d9cfb54f93424401b9139c70f92d7be3f462e986d4e8c9f6195f4b6a3f9bab0e), host ML350 (god-of-the-math), one
systemd-run --user unit pinned to cores 0–11, Python 3.12.3, jax/jaxlib 0.10.1 (CPU), NumPy 2.4.6. Started
2026-09-30T13:27:18Z, finished 2026-09-30T23:23:44Z (9 h 56 min wall, 13 h 20 min CPU). Artefact
data/kyma_v3_symbolic_composition/kyma_v3_dynamics_ablation.json, SHA-256
b9f56cc10b125eb348efedeb833d6ccdcab1a068d6feadf73c790f80c715b529 (identical on the host and in the repository).
Interrupted first attempt. An identical run started 2026-09-30T09:57:20Z was stopped on the owner's instruction at 12:32:45Z for an electrical inspection of the host, after 3 h 40 min CPU time. It wrote no output and nothing from it was observed; the run above is a fresh start of the same command on the same frozen tree.
Run time. The estimate of 2–3 hours above was wrong: full needed 73 min per seed, not about 12.
| variant | held-out accuracy (mean ± SD, seeds 0–4) | per seed | training accuracy (mean) | parameters | mean training wall time per seed |
|---|---|---|---|---|---|
full |
1.000 ± 0.000 | 1.000, 1.000, 1.000, 1.000, 1.000 | 0.9995 | 108 | 4,390 s |
phasor |
1.000 ± 0.000 | 1.000, 1.000, 1.000, 1.000, 1.000 | 1.0000 | 108 | 29 s |
pairwise |
0.253 ± 0.006 | 0.250, 0.250, 0.250, 0.266, 0.250 | 0.8883 | 54 | 2,350 s |
short |
0.984 ± 0.031 | 1.000, 1.000, 1.000, 0.922, 1.000 | 0.9898 | 108 | 388 s |
Chance is 0.25; 64 held-out items per seed.
R0 — validity: holds. full reproduces the v3 per-seed held-out accuracies (all five seeds 1.000; no mismatched
seed). All comparisons below are against this run's full.
R1 — dynamics: the phasor variant is within 10 points (gap 0.0). By the frozen rule, the v3 generalisation is attributed to the phase-arithmetic structure that the stage's fixed point already contains (phase encoding, operation gating, triadic phase sum), not to oscillator dynamics. KYMA Part B must not name the dynamics as the mechanism. The fixed-point map trains about 150 times faster than the integrated stage on this task.
R2 — triadic prior: necessary. pairwise is 74.7 points below full; its held-out accuracy is at chance while its
training accuracy (0.888) sits at its hand-set realisability bound (0.875 on all items). Without the triadic phase sum
the model fits what pairwise coupling can express and does not generalise to the held-out pair.
R3 — settling: long integration not needed. short (5 RK4 steps per stage) is 1.6 points below full, within the
10-point margin. One seed (3) reached 0.922. The hand-set realisability of short at the hand coupling 2.0 was 0.458;
training reached 0.984, so the trained gates evidently found couplings under which five steps settle closely enough.
The trained coupling values were not inspected in this probe.
Limits. One task, one held-out pair, five seeds, classical simulation on CPU; no energy figure. The result separates the stage's fixed-point map from its integration dynamics within this task only; it makes no statement about other tasks, hardware oscillators or quantum execution.