Skip to content

v0.2.0 -- Cross-validation layer complete; core3d two-frame naming

Choose a tag to compare

@JackDMenendez JackDMenendez released this 08 Jun 00:02
· 8 commits to main since this release

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 error O(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_P gains dp_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 Zenodo dataset record 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; RawKernel bodies pending).
  • Pairwise multi-session interactions (Coulomb / gauge / emission);
    the richer two-session Arnold-tongue needs these.
  • Complex TokenResidual carry -- 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.