v0.2.0 -- Cross-validation layer complete; core3d two-frame naming
dcl_core v0.2.0 closes the framework's stated v1.0 gap -- the
core <-> core3d cross-validation suite -- and lands the core3d
two-frame naming convention. We are cutting this as v0.2.0, not
v1.0.0: the public API stays under the pre-1.0 "expect breakage"
signal for one more cycle, since GPU kernels and inter-session
coupling are still ahead and may move the surface.
Semver impact: MINOR (pre-1.0). The naming retrofit renames
public symbols, but every old name still resolves through a
backward-compatible deprecation shim, so existing callers do not
break. Downstream papers pinning ==0.2.0 get a stable
reproducibility anchor.
Highlights
Cross-validation suite now passes (was 4 skipped)
All four tests/test_cross_validation.py tests pass. Each was
respec'd to the regime where the discrete (core3d) and continuous
(core) engines are actually comparable -- the two pin different
observables at fixed lattice spacing and converge only in the double
limit, so the tests assert each engine's own invariant plus a
fixed-lattice-divergence tripwire rather than a spurious shared value
(see CLAUDE.md's cross-validation triage):
test_conservation_invariants_agree-- each engine conserves its
own A=1 invariant.test_free_propagation_matches_in_large_N_limit--core3d
self-convergence: integer-token density tracks the continuous
amplitude it quantises, L2 errorO(sqrt(n_sites)/n_units).test_two_body_orbit_locks_in_both_cores(slow) -- each engine
settles to a stable interior radius in a fixed Coulomb well.test_arnold_tongue_locations_agree(slow) -- single-session
orbital resonance shows a frequency-dependent lock-in in each
engine.
core3d two-frame naming convention
Public symbols now follow docs/design/03_naming_convention.md: the
name says what the object IS in the lattice's own mathematics, with a
# physics: comment carrying the existing-physics correspondence.
The renames (all shimmed):
BresenhamResidual->TokenResidual- session state
N_R/N_L/phi_R/phi_L->
N_RGB/N_CMY/phi_RGB/phi_CMY amplitude(chirality=)->amplitude(component=)("RGB"/"CMY")- new
BipartiteLattice.coordination,epsilon_Pgainsdp_min
Old names resolve today; keyword aliases emit DeprecationWarning.
Migrate before the first MAJOR after 1.0.
Reproducibility / provenance
- Pinned-dependency Dockerfile + tracked
.vscode/extensions.txt. docs/data_deposit_and_provenance.md-- per-experiment provenance
manifests, one Zenododatasetrecord per paper, heavy data
deposited (not bundled into the software DOI).- Release protocol v2 adopted in
release_notes/README.md.
Tests
pytest tests/ reports 232 passed, 26 xfailed, 0 skipped
(v0.1.0: 228 passed, 4 skipped, 26 xfailed). The 26 xfails remain
pre-existing Paper~I port drift (documented in CLAUDE.md).
Installing
pip install "git+https://github.com/JackDMenendez/dcl-core@v0.2.0"For symbolic-verification tests (Clifford algebra) or GPU backend:
pip install "dcl_core[sympy] @ git+https://github.com/JackDMenendez/dcl-core@v0.2.0"
pip install "dcl_core[gpu] @ git+https://github.com/JackDMenendez/dcl-core@v0.2.0"What is NOT in v0.2.0
Still ahead (unchanged from v0.1.0's deferral list):
- GPU backend kernels (allocators wired;
RawKernelbodies pending). - Pairwise multi-session interactions (Coulomb / gauge / emission);
the richer two-session Arnold-tongue needs these. - Complex
TokenResidualcarry -- real carry only; the complex-carry
hypothesis is parked for Paper~III's min-Δp experiments
(notes/bresenham_residual_design.md).
Citation. See CITATION.cff. Zenodo DOI for this release:
10.5281/zenodo.20586191.