dcl-core v0.3.0: a gauge channel, and a wall around the constants
dcl-core v0.3.0 is out — deposited on Zenodo (doi:10.5281/zenodo.21272238) and tagged on GitHub. It is an additive (MINOR) release over v0.2.2: nothing removed, nothing renamed, A=1 exactness and CPU/GPU parity preserved.
Two things land together in this cut — a new physics channel, and a piece of architecture that has been coming for a while.
A gauge channel in the integer-token engine
The core3d engine now carries a U(1) Peierls gauge coupling. A background magnetic potential (A) and electric potential (A_0) thread through the hop/scheduler path, so the lattice can be driven by an external field while the token bookkeeping stays exact. There is a new dcl_core.core3d.uniform_B_potential for building a symmetric-gauge vector potential with uniform curl, and the hop operator takes the field through HopOperator.step(..., external_potential=..., vector_potential=...).
This is the channel Paper IV’s optical-axis birefringence program needs — the birefringence-from-Dirac essay sketches why a magnetic background is the natural probe. And it already pays off a standing check: the magnetic induced-action Q-tensor, extracted directly from the engine’s Peierls link holonomies, now reproduces Paper I Appendix B’s exact result — Q = [[8,4,-4],[4,8,-4],[-4,-4,8]], eigenvalues \{4,4,16\}, optical axis (1,1,-1). The earlier “N-limited” caveat on that verdict is retired: for a uniform background field this tensor is exact in the lattice interior, not an approximation waiting on larger N.
The one load-bearing question that stays open is test #5 — the full E+B photon-dispersion classification that decides the order of the birefringence. That one is GPU-bound and still ahead.
On throughput: the GPU backend gains a fused CuPy hop_average RawKernel fast path for large-N, large-lattice runs, with CPU/GPU parity held under test.
A wall around the constants
The second half of the cut makes structural the discipline the recent essay Counting Is a Discovery. Seconds Are a Decision. argued for in prose. There is now a single new submodule, dcl_core.calibration, and it is the only place in the package where a physical-unit conversion is allowed to live — seconds, hertz, joules, meters. The engine emits pure counts; every number that carries a unit is converted behind that one boundary.
The headline the audit produced is a number you can read off: the engine holds zero calibration constants, and the boundary holds exactly one free calibration debt — tick_seconds. Everything else (ħ, c) is measured CODATA input, not a knob. A CI test asserts that debt count is one and fails on purpose if a second ever sneaks in, so “how much are we assuming?” stops being an argument and becomes a tripwire.
One honest caveat ships with it, and the release notes state it plainly: Calibration.length_metres currently assumes the light-cone identity a = c \cdot \texttt{tick\_seconds}. That is a modeling assumption baked into a public method, so changing it later would be a breaking (MAJOR) change — it is documented now precisely so a future change is recognized as one.
This wall is drawn on core3d only. The continuous-amplitude core engine — released, and reproduce-pinned by Paper III and the Bell/δp_min work — keeps its current surface; retrofitting the wall there is a breaking change, so it is logged as debt against core’s next MAJOR.
What’s next
Downstream consumers pick this up as they bump their pin to v0.3.0: as each does, its ad-hoc physical-unit constants move into dcl_core.calibration (the δp_min investigation / Paper III and Paper IV are the first in line). And the open Paper IV row — test #5’s dispersion-order classification — is the next piece of physics this release was built to reach.
Citation
- Version: v0.3.0
- DOI: 10.5281/zenodo.21272238
- Prior version: 10.5281/zenodo.20711380 (v0.2.2)
- Repository:
dcl-core - Pin:
dcl_core @ git+https://github.com/JackDMenendez/dcl-core@v0.3.0
See the dcl-core page for how the engine underlies the series, and Paper I for the continuous-amplitude implementation it builds on.