Skip to main content

Spectral lattice-fermion encoder for 2D and 4D chess (D4 / B4 symmetry, graph-Laplacian eigenbasis, 640-dim / 45 056-dim HDC)

Project description

chess_spectral (Python)

Python reference implementations of the 640-dim 2D and 45 056-dim 4D spectral chess encoders, plus the quantum-mechanical front-end (2D + 4D kinematics; 4D dynamics shipped in v1.5, 2D dynamics in v1.6.x), the v1.6 §16 search + tournament + sweep engine surface, and the v5 unified wire format (three encoding modes — dense / per-channel replacement / XOR-stream — with empirical 7.23× compression on 4D fixtures vs dense gzipped).

Sibling of the C17 port in ../src/. Use the Python package for REPL / LLM / notebook analysis, Pyodide-bridge consumers, and the §16 ship-gate matrix runner; use the C binaries for batch encoding throughput.

The pieces ship under two top-level packages:

  • chess_spectral — 2D encoder + 4D encoder math + 4D phase operators + QM extension. Everything that's pure spectral / B_4 representation theory lives here.
  • chess_spectral_4d — 4D game-state surface (move history, side-to-move, draw status, FEN4 round-trip, the Pyodide chess_spectral_4d.bridge module). Splits cleanly from the encoder so the 4D-rules concerns don't bleed into the spectral math.

What's new in v1.6 (April 2026)

The §16 ship-gate release. Headline pieces:

  • Search core, tournament harness, and sweep ship-gate runner ship as CLI commands at both 2D and 4D. Per-side symmetric agent specs let white and black be configured independently in the same single-process tournament loop:

    spectral_py sweep \
        --evaluators material,spectral,qm \
        --depths 1,2,3,4 \
        --n-games-per-pair 10 \
        --time-budget-ms 5000 \
        -o sweep.json
    
  • Three §16.1 evaluator families (material, spectral, qm) ship at both 2D and 4D with a uniform evaluate(position, side_to_move) -> float contract — drop in any of them as the search heuristic.

  • Three independent in-house move-rule oracles — each encodes the same legality predicate ("is move m legal in position p?") through a different mathematical lens, validated head-to-head against the python-chess[4d] reference and against each other. Not because one is more correct — they all agree on the same legal set — but because each lens is a standalone artifact for studying how spatial motion can be encoded:

    1. Bitboard / attack-tables (chess_spectral.spatial_4d) — the engineering lens. Bitboard4D primitive, per-piece attack tables (knight, king, rook, bishop, queen via magic-bitboard- style ray casting), axis-typed pawn moves (Pw/Py per Oana-Chiru §3 Def 11), Board4D game state, and draw rules. Same idea as a classic chess engine, lifted to Z_8^4.
    2. Phase-space operators (chess_spectral.phase_operators, chess_spectral.phase_operators_4d) — the algebraic lens. Per-piece move generation as group actions on a phase-space representation; legality is "the candidate move is in the orbit of the piece operator, intersected with the occupation oracle." 2D ships under §11; 4D under §13.
    3. Discrete-Laplacian eigenbasis oracle (2D + 4D) — the spectral lens. The lattice's discrete Laplacian (Kron-sum of P_8 path-graph Laplacians; eigenvectors form a DCT-style basis) doubles as a structural lookup table for move legality — the same eigenbasis the spectral encoder uses to embed positions also tells you which moves are reachable. Concrete demonstration that "encode the geometry" and "encode the rules" share one foundation.
  • v5 unified .spectral[z] / .spectralz4 wire format (chess_spectral.frame_v5) — single 256-byte header serves both 2D and 4D via explicit n_dimensions field. Three encoding modes selected by encoding_mode: dense (= legacy v2/v4 frame body), per-channel replacement (variable-size, ~2.84× compression on 4D stable workloads), and XOR-stream (fixed-size, 7.23× compression on 4D vs dense gzipped). See docs/WIRE_FORMAT.md for the byte-level spec covering all four shipped versions (v2/v3/v4/v5) and the reader-dispatch convention.

  • CI gate: the 15-cell verify-wheels matrix is now opt-in via the wheel-check PR label (was running on every PR; saves ~150 runner-min/PR while keeping the publish-time matrix as the load-bearing wheel-correctness gate).

For the full release history see CHANGELOG.md.

Both packages share a single dist version derived from importlib.metadata; see Install below.

Install

From PyPI (recommended):

pip install chess-spectral

The base install pulls only numpy and scipy — sufficient for encoding, the 4D phase operators, the kinematic QM layer, and the full §17.1 bridge surface.

Optional extras:

# PGN ingest via chess_spectral.corpus (adds python-chess)
pip install "chess-spectral[corpus]"

# 4D phase-operator validation gates against the Oana & Chiru oracle
pip install "chess-spectral[test]"   # adds python-chess4d-oana-chiru

Package page: https://pypi.org/project/chess-spectral/

From source

Editable install from a local checkout:

pip install -e docs/chess-maths/chess-spectral/python/

From a git URL (pin a commit in production):

pip install "git+https://github.com/lemonforest/mlehaptics.git@COMMIT#subdirectory=docs/chess-maths/chess-spectral/python"

After install, two console scripts are on your $PATH:

chess-spectral --help            # 2D CLI
chess-spectral-4d --help         # 4D CLI

Both packages also expose __version__, derived dynamically from the installed dist:

>>> import chess_spectral, chess_spectral_4d
>>> chess_spectral.__version__ == chess_spectral_4d.__version__
True   # both derive from importlib.metadata.version("chess-spectral");
       # they cannot drift from each other or from the wheel.

In-place (no install)

The legacy workflow still works: every test and analysis script uses sys.path.insert to bootstrap off the python/ directory, so pytest docs/chess-maths/chess-spectral/python/tests/ runs without any install.

Quick start (2D, 640-dim)

>>> from chess_spectral import (
...     encode_640, channel_energies, read_encodings, fen_to_pos,
... )

>>> pos = fen_to_pos("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1")
>>> enc = encode_640(pos)
>>> enc.shape
(640,)

>>> channel_energies(enc)
{'A1': 0.0, 'A2': 19.845, 'B1': 45.2825, 'B2': 45.2825,
 'E': 322.57, 'F1': 88.77, 'F2': 1851.01, 'F3': 1507.65,
 'FA': 19.92, 'FD': 0.0}

# Read a whole game that was encoded by either C or Python
>>> hdr, arr = read_encodings("game.spectralz")  # transparent gzip
>>> arr.shape
(161, 640)

Quick start (4D, 45 056-dim)

The 4D encoder runs on the Z_8^4 hypercubic lattice with B_4 hyperoctahedral symmetry adaptation (per Oana & Chiru, AppliedMath 6(3):48, 2026). Output is a 45 056-dim float32 vector partitioned into 11 channels of 4096 modes each: A1, STD4_X/Y/Z/W, FIB_SYM_1/2/3, FA_PAWN_W, FA_PAWN_Y, FD_DIAG.

>>> from chess_spectral.fen_4d import parse
>>> from chess_spectral.encoder_4d import (
...     encode_4d, channel_energies_4d, CHANNELS_4D,
... )

>>> pos = parse("4d-fen v1: K@4,0,0,0; k@4,7,7,7")
>>> v = encode_4d(pos)
>>> v.shape, v.dtype
((45056,), dtype('float32'))

>>> energies = channel_energies_4d(v)   # per-channel L2 energies
>>> sorted(energies)
['A1', 'FA_PAWN_W', 'FA_PAWN_Y', 'FD_DIAG',
 'FIB_SYM_1', 'FIB_SYM_2', 'FIB_SYM_3',
 'STD4_W', 'STD4_X', 'STD4_Y', 'STD4_Z']

The 4D game-state surface (move history, draw detection, FEN4 round-trip, promotion-piece argument) lives in chess_spectral_4d:

>>> from chess_spectral_4d import GameState4D, apply_move, MoveHistory4D
>>> from chess_spectral_4d import bridge

# Load a placement from a FEN4 string (white-to-move by default)
>>> result = bridge.load_state("4d-fen v1: K@4,0,0,0; k@4,7,7,7")
>>> state = result['state']
>>> isinstance(state, GameState4D)
True

# apply_move(state, from_sq, to_sq, *, promote_to='Q') is the v1.4 API
>>> # state2 = apply_move(state, from_sq=4, to_sq=5, promote_to='Q')

# Draw status: priority threefold > 50-move > insufficient > stalemate
>>> bridge.get_draw_status(state, has_legal_moves=True)
{'ok': True, 'status': 'none'}

For raw move-rule logic (legal-move generation, check detection) on Z_8^4, see chess_spectral.phase_operators_4d below.

Quick start (QM extension, v1.5+)

The QM extension ships in two layers, mirroring the standard physics split:

  • Kinematicschess_spectral.qm_4d. What states and operators look like: state space, observables, measurement structure, the B_4 group action. Lifts encoder output to ψ ∈ ℂ^{45056}, exposes the 11-channel decomposition as a built-in projection-valued measure (PVM), builds five Hermitian piece-reach observables (rook / bishop / queen / king / knight) on the per-channel ℂ^{4096} factor, and ships the 384-element B_4 unitary representation as a cached LUT.
  • Dynamicschess_spectral.qm_4d_dynamics. How states change: the 11 per-channel u_move_* builders for move-as-unitary transitions (discrete) plus evolve_under_h0 for Zeno-style continuous time evolution between move boundaries.

Consumers that want a Pyodide-JSON-shaped surface use the chess_spectral.qm_4d_bridge dispatch layer described in the next section.

>>> from chess_spectral.fen_4d import parse
>>> from chess_spectral.qm_4d import (
...     state_to_psi,
...     prob_channel, measure_channel_distribution,
...     channel_projector,
...     H_rook_4, H_bishop_4, H_queen_4, H_king_4, H_knight_4,
...     measure_observable_distribution,
...     b4_unitary_rep_4096, b4_unitary_rep_full,
...     expectation, is_normalized, is_hermitian, is_unitary,
... )

>>> pos = parse("4d-fen v1: K@4,0,0,0; k@4,7,7,7; R@0,0,0,0")
>>> psi = state_to_psi(pos, side_to_move=True)
>>> psi.shape, psi.dtype
((45056,), dtype('complex128'))
>>> is_normalized(psi)
True

# Born-rule channel measurement: probability mass per channel
>>> prob_channel(psi, c=0)            # A1 channel
3.3e-08
>>> probs = measure_channel_distribution(psi)   # all 11 channels
>>> abs(probs.sum() - 1.0) < 1e-10
True

# ⟨ψ|H_rook|ψ⟩ on the rook channel block
>>> # expectation(H_rook_4, psi[0:4096])    # H_piece_4 is sparse 4096x4096

# Born-rule eigenbasis distribution: |⟨φ_k|ψ⟩|² grouped by eigenvalue
>>> # eigvals, probs = measure_observable_distribution(H_rook_4, psi[0:4096])

# B_4 group action (384 elements). 4096-dim per-channel block, or the
# I_11 ⊗ U_4096(g) Kronecker extension to the full 45 056-dim space.
>>> # U = b4_unitary_rep_full(g)            # cached; sparse 45056x45056

The Hermitian piece-reach observables H_rook_4, H_bishop_4, H_queen_4, H_king_4, H_knight_4 are built on demand and cached. They are real-symmetric on ℂ^{4096} with integer / near-integer spectra (Hermiticity verified at floating residual ~5e-15; Pre-flight 2 in qm_4d.py). Pawn observables break Hermiticity under the standard inner product (directed push) — the pseudo-Hermitian η-metric construction is deferred to v1.7+ per ADR-005.

b4_unitary_rep_4096(g) and b4_unitary_rep_full(g) realize the order-384 hyperoctahedral group as sparse unitaries on ℂ^{4096} and ℂ^{45056} respectively (the latter is I_{11} ⊗ U_{4096}(g) — same B_4 action applied independently to each of the 11 channels). Both are cached per group element. measure_observable_distribution(H, ψ) diagonalizes any Hermitian observable on ℂ^{4096} and returns the Born-rule probability distribution over distinct eigenvalues.

Move-as-unitary dynamics (Phase 4, Track B) live in chess_spectral.qm_4d_dynamics. The module ships per-channel builders for all 11 channels and both non-capture and capture moves:

  • u_move_a1 — A_1 channel via projector-sandwich (B1).
  • u_move_std4 — STD4_X/Y/Z/W via similarity-transform; same-orbit is strict-unitary, cross-orbit returns a measurement-only marker (B3a, ADR-003 amendment).
  • u_move_fa_pawn — FA_PAWN_W/Y via axis-parity-odd projector sandwich (B3b).
  • u_move_fib_meas — FIB_SYM_1/2/3 via measurement-only re-encode (B3c, per the Phase 3.5 amendment to ADR-003 §3.3).
  • u_move_fd_diag — FD_DIAG via rank-1 update + renormalization (B3d/e).
  • evolve_under_h0 + H_FREE_4D — Zeno-style continuous evolution between move boundaries, where H_0 = -Δ is the lattice Laplacian (B2, ADR-002).

§17.1 Pyodide bridge surface (v1.5)

chess_spectral.qm_4d_bridge is the consumer-facing bridge — the 7 §17.1 QM-extension methods plus 6 §17.5 dev/debug methods — designed for Pyodide consumers (e.g., the chess4D-OC visualizer) that need Pyodide-JSON-serializable returns and Float32 ψ-amplitudes ready for Float32Array shader uploads.

>>> from chess_spectral.qm_4d_bridge import (
...     # §17.1 (QM-extension surface)
...     get_qm_state, get_qm_density, apply_move_qm, apply_move_qm_full,
...     measure_at, get_density_matrix_of, get_probability_current,
...     get_qm_expectation,
...     # §17.5 (dev / debug surface)
...     get_version, get_encoder_shape, get_fen4_state, load_fen4,
...     load_jsonl_fixture, has_legal_moves,
... )

# Round-trip: load a FEN4, get ψ as Float32 interleaved, apply a move,
# get the updated ψ.
>>> r = load_fen4("4d-fen v1: K@0,0,0,0; k@7,7,7,7; R@1,0,0,0")
>>> state = r['state']

>>> r = get_qm_state(state, side_to_move=True)
>>> r['basisDim'], r['psi'].dtype, r['psi'].shape
(45056, dtype('float32'), (90112,))   # 2 × 45 056 — real+imag interleaved
>>> abs(r['normSq'] - 1.0) < 1e-6
True

# Per-cell density: |ψ|² summed across the 11 channels per cell
>>> r = get_qm_density(state)
>>> r['density'].shape, abs(r['density'].sum() - 1.0) < 1e-6
((4096,), True)

# Apply a move and get the assembled ψ_post (Float32 interleaved).
# move format: (from_sq, to_sq) as ints OR ((x,y,z,w), (x,y,z,w))
>>> # r = apply_move_qm_full(state, move=(1, 2))
>>> # r['ok'], r['psi'].shape
>>> # (True, (90112,))

# §17.5 debug surface
>>> get_version()['version']         # e.g., '1.5.0'
>>> get_encoder_shape()['totalDim']  # 45056
>>> get_encoder_shape()['channels']  # [{'name': 'A1', 'offset': 0, 'dim': 4096}, ...]

Wire format (ComplexArray, Float32Array-friendly): every ψ return is a 1-D Float32 array of length 2 * 45056 = 90112, where psi[2k] is Re(ψ_k) and psi[2k+1] is Im(ψ_k). This matches the §17.1 contract documented in the research notebook §17.1.

apply_move_qm vs apply_move_qm_full. The low-level apply_move_qm returns a per-channel dispatch dict (mixed csr_matrix

  • marker dict values) for consumers that want to reason about per- channel structure. The high-level apply_move_qm_full does the block-by-block assembly (csr_matrixU_chan @ ψ_pre[block]; marker dict → psi_post_block splice) and returns the assembled ψ_post as Float32 interleaved. Most consumers want the _full variant.

The B5 milestone (April 2026) closed the last unshipped channels, so the bridge no longer raises for any move type — non-captures and captures both succeed via the channels' B5 capture-path branches. See qm_4d_bridge.py for per-method docstrings and qm_4d_dynamics.py for the per-channel construction details.

Deferred to v1.7+:

  • get_density_matrix_of (reduced density matrix; needs partial- trace machinery on channel labels).
  • get_qm_density(piece_id=...) (per-piece marginal; same blocker).

Both raise NotImplementedError with a pointer to the v1.7 milestone.

CLI

The 2D CLI (chess-spectral, entry point chess_spectral.cli:main) mirrors the C spectral CLI subcommand-for-subcommand. Output is byte-identical to the C binary on the same input — the spectral csv command produces the same bytes on either side.

chess-spectral csv         game.spectralz -o game.csv
chess-spectral encode      -i game.ndjson -o game.spectralz -z
chess-spectral encode-fen  --fen "..."   -o single.spectral
chess-spectral compare     a.spectralz b.spectralz
chess-spectral query       game.spectralz --ply 30
chess-spectral heatmap     game.spectralz --ply 30 --channel A1
chess-spectral analyze     game.spectralz
chess-spectral export      game.spectralz -o game.json
chess-spectral version

The 4D CLI (chess-spectral-4d):

chess-spectral-4d tables-verify  --phase all
chess-spectral-4d encode-fen4    --fen4 "4d-fen v1: K@0,0,0,0; ..."
chess-spectral-4d encode-moves4  --moves game.ndjson4 -o game.spectralz4 -z
chess-spectral-4d corpus-gen     --games game1.ndjson4 game2.ndjson4 ...
chess-spectral-4d version

Both CLIs follow the --help discipline: every subcommand and every argument has non-empty help text. Run <cmd> --help (or <cmd> <subcommand> --help) before invoking; the immolation suite gates this in CI.

Layout

chess_spectral/                # 2D + 4D encoder math + QM extension
  __init__.py                  # __version__ via importlib.metadata
  encoder.py                   # encode_640(pos) → np.ndarray(640,)
  frame.py                     # v2 .spectral[z] binary I/O + transparent gzip
  csv_export.py                # dist_prev / cos_prev / energies CSV
  cli.py                       # `chess-spectral` (2D CLI)
  phase_operators/             # 2D §11 phase-space move generator (1.2.0+)

  encoder_4d.py                # encode_4d(pos4) → float32(45056,)
  frame_4d.py                  # v3/v4 .spectralz4 binary I/O (legacy reader)
  frame_v5.py                  # v5 unified wire format (2D + 4D, 3 encoding modes; default for new writes from v1.6)
  tables_4d.py                 # B_4 group, lattice tables, eigenmodes
  fen_4d.py                    # FEN4 v1 placement-literal parser + serialize
  phase_operators_4d/          # 4D §13 phase-operator move engine (1.3.0+)

  qm_4d.py                     # Track A kinematic QM front-end (1.5.0+)
  qm_4d_dynamics.py            # Track B per-channel U_move builders (1.5.0+)
  qm_4d_bridge.py              # §17.1 + §17.5 Pyodide bridge surface (1.5.0+)

chess_spectral_4d/             # 4D game-state surface (1.4.0+)
  __init__.py                  # GameState4D, Move4D, MoveHistory4D, apply_move, bridge
  move_history.py              # ply log, side-to-move, 50-move clock, repetition hash
  apply_move.py                # apply_move(state, from_sq, to_sq, *, promote_to='Q')
  bridge.py                    # load_state, get_draw_status, get_move_history,
                               #   is_insufficient_material_2d
  cli.py                       # `chess-spectral-4d` (4D CLI)

pyproject.toml                 # PEP 621 packaging metadata
tests/                         # pytest suite (see test count below)

Test count (post-v1.5): 45 895 tests collected. Breakdown: ~44 876 parametric 4D phase-operator tests (the bulk), 81-test end-to-end immolation suite (test_smoke_e2e.py, expanded from 41 for v1.5 surface coverage), 272 v1.5 QM tests across the kinematic front-end (test_qm_4d.py, test_qm_4d_z2_grading.py), the Track B B1..B5 dynamics gates (test_qm_4d_dynamics_b{1,2,3a,3b,3c,3d,5}.py), and the §17.1/§17.5 bridge surface (test_qm_4d_bridge_v15.py), plus 102 fast tests, 260 pawn-axis / phase-4d-check / phase-4d- unobstructed tests, 92 2D phase_operators tests, and 210 v1.4 game-state tests. Run via pytest docs/chess-maths/chess-spectral/python/tests/.

Phase operators (2D, §11)

chess_spectral.phase_operators ships a phase-space move generator and check detector (added in 1.2.0). The primitives compute all moves and check relationships as modular arithmetic on a single integer per square — phi(r, c) = r·67 + c·7 mod 640 — rather than geometric coordinates. They are a drop-in equivalent to python-chess's pseudo_legal_moves + is_check, validated at 100% on the reference corpus, and compose naturally with the spectral encoder's coprime phase structure.

import chess
from chess_spectral.phase_operators import (
    occupation_aware_moves_c,   # pseudo-legal dests from a square
    available_castles,          # legal castles for side-to-move
    phasecast_is_check,         # is the mover's king attacked?
    move_leaves_king_in_check,  # would this move expose our king?
)

board = chess.Board()
dests = occupation_aware_moves_c(board, "N", 0, 1, +1)
# -> frozenset({(2, 0), (2, 2)})   (a3 and c3)

phasecast_is_check(board)  # False on the starting position

Validation coverage and rationale: see PHASE_OPERATOR_SUPPLEMENT.md.

Phase operators (4D, §13)

chess_spectral.phase_operators_4d (1.3.0+) is the 4D analogue — mixed-radix tower with modulus 145451 and ladder coefficient 14 (vs the 2D framework's 8). Validated against python-chess4d-oana-chiru at 44 803 (state, origin, piece) cases for occupation-aware moves and 232 cases for check detection.

from chess_spectral.phase_operators_4d import (
    phi4,
    P_rook4, P_bishop4, P_queen4, P_king4, P_knight4,
    P_pawn4_white, P_pawn4_black,
    occupation_aware_moves_a_4d,    # phase-op candidates ∩ chess4d oracle
    phasecast_is_check_4d,
    move_leaves_king_in_check_4d,
)

Full design + experimental record: PHASE_OPERATOR_SUPPLEMENT_4D.md.

When to use what

The 2D and 4D encoders are independent build targets that share table generation discipline. Pick by what you're encoding; the QM extension sits on top of the 4D encoder.

2D (chess_spectral) 4D (chess_spectral + chess_spectral_4d)
Encoding dim 640 45 056
Lattice Z_8 × Z_8 Z_8^4
Symmetry group D_4 (order 8) B_4 hyperoctahedral (order 384)
Game rules python-chess (fen_to_pos) Oana & Chiru (python-chess4d-oana-chiru)
Channels 10 (A1, A2, B1, B2, E, F1, F2, F3, FA, FD) 11 (A1, STD4_X/Y/Z/W, FIB_SYM_1/2/3, FA_PAWN_W/Y, FD_DIAG)
Phase operators phase_operators (1.2.0+) phase_operators_4d (1.3.0+)
QM extension not yet shipped qm_4d + qm_4d_dynamics + qm_4d_bridge (1.5.0+)

Python vs C — same encoders on either side, byte-identical output:

C (../src/) Python (this package)
Throughput µs/encode ms/encode
REPL / notebooks
LLM-pasteable binary code
scipy.linalg exploration
Embeds in mobile / web (Pyodide) ✓ (Pyodide)
Exact numerical reference tables baked at build rebuilt from primitives

Develop new channels in Python first (faster iteration, scipy.linalg at hand, no rebuild loop). Once the math is frozen, port to C and verify parity via the test suite — the critical test is test_csv_matches_c_byte_for_byte (2D) / test_e2e_spectralz4_parity.py (4D), which assert the C-produced encoded bytes equal the Python-produced bytes.

See also

  • Cross-disciplinary applications — research notebook §15 (chess_spectral_research_notebook.md) for the framing of chess-spectral as a H(4, 8) Hamming-scheme toolkit with B_4-equivariant frozen featurizer and Born-rule loss hooks.
  • §17 bridge contracts — same notebook, §17.1 / §17.5 for the consumer-facing method specs that this package implements.
  • 4D notebookchess_spectral_4d_notebook.md for the 4D-specific research record (encoder injectivity, B_4 spectral identity, qm_4d pre-flight findings).
  • Track B ADRsdocs/adr/qm_4d/ for the design record of the v1.5 QM extension:
    • ADR-001 phase convention for unitary moves
    • ADR-002 time-evolution semantics (continuous H_0 between move boundaries; evolve_under_h0)
    • ADR-003 per-channel move transformation (+ Phase 3.5 orbit-restriction amendment for cross-orbit STD4 / FIB_SYM measurement-only re-encode)
    • ADR-004 Z_2 superselection structure (side-to-move sign multiplier, resolves the 8-collision encoder hash issue)
    • ADR-005 pawn pseudo-Hermitian η-metric (deferred to v1.7+)
    • PHASE_3_5_PROBE_RESULTS.md — empirical probe record that drove the ADR-003 amendment.
  • Pawn-axis split (v1.1.1) — Oana & Chiru Definition 11; the encoder splits the pawn antisymmetric channel into W-axis and Y-axis sub-channels (FA_PAWN_W, FA_PAWN_Y) and grew from 40 960-dim to 45 056-dim. See encoder_4d.py header for the rationale.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

chess_spectral-1.7.0.tar.gz (4.2 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

chess_spectral-1.7.0-py3-none-any.whl (1.9 MB view details)

Uploaded Python 3

chess_spectral-1.7.0-cp314-cp314-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.14Windows x86-64

chess_spectral-1.7.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

chess_spectral-1.7.0-cp314-cp314-macosx_11_0_arm64.whl (3.5 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

chess_spectral-1.7.0-cp313-cp313-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.13Windows x86-64

chess_spectral-1.7.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

chess_spectral-1.7.0-cp313-cp313-macosx_11_0_arm64.whl (3.5 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

chess_spectral-1.7.0-cp312-cp312-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.12Windows x86-64

chess_spectral-1.7.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

chess_spectral-1.7.0-cp312-cp312-macosx_11_0_arm64.whl (3.5 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

chess_spectral-1.7.0-cp311-cp311-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.11Windows x86-64

chess_spectral-1.7.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

chess_spectral-1.7.0-cp311-cp311-macosx_11_0_arm64.whl (3.5 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

chess_spectral-1.7.0-cp310-cp310-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.10Windows x86-64

chess_spectral-1.7.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

chess_spectral-1.7.0-cp310-cp310-macosx_11_0_arm64.whl (3.5 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file chess_spectral-1.7.0.tar.gz.

File metadata

  • Download URL: chess_spectral-1.7.0.tar.gz
  • Upload date:
  • Size: 4.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for chess_spectral-1.7.0.tar.gz
Algorithm Hash digest
SHA256 f1c5bbf37fe7a9ebea69af6ba0f8714b9d8e33bd1c60d6bd2e54538c853b9b45
MD5 f5ffe77187558d92909ad7dcc8ac7905
BLAKE2b-256 311b2dc72c785d3c52ded6346518c984a6477949aea1c64dd5b2b144fa09ec76

See more details on using hashes here.

Provenance

The following attestation bundles were made for chess_spectral-1.7.0.tar.gz:

Publisher: chess-spectral-publish.yml on lemonforest/mlehaptics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file chess_spectral-1.7.0-py3-none-any.whl.

File metadata

  • Download URL: chess_spectral-1.7.0-py3-none-any.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for chess_spectral-1.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f48b0bdba4931b35532acb88b512ef7b6a75abc33e546a6dcf27cbe6f8a67bf2
MD5 187aa5ea0c7963015c214085886db4a8
BLAKE2b-256 1aa13de557c72d883dce8de206e592fdbf92c1d4c8166a4c73643d4387a51b67

See more details on using hashes here.

Provenance

The following attestation bundles were made for chess_spectral-1.7.0-py3-none-any.whl:

Publisher: chess-spectral-publish.yml on lemonforest/mlehaptics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file chess_spectral-1.7.0-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for chess_spectral-1.7.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 cbe78b1fdce418d9f0509e92dd0818a51d69cb017375df3181225785a07b462d
MD5 4ff9767f119d15fa75f22116932308af
BLAKE2b-256 faa8970f5fc121d28c67464046f6fb7e8aeda533a2a3586955e771c24e4cf478

See more details on using hashes here.

Provenance

The following attestation bundles were made for chess_spectral-1.7.0-cp314-cp314-win_amd64.whl:

Publisher: chess-spectral-publish.yml on lemonforest/mlehaptics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file chess_spectral-1.7.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for chess_spectral-1.7.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 eb531e1aacfcf9608c9e4af256f46f3e74c26dcfcf07c29df6061280270ac48c
MD5 84574875f1fe206a0132528693119d16
BLAKE2b-256 f78ac29f5cd051a11a6af02dfd1599b16067e94f78e343bcb7524a462dce39fe

See more details on using hashes here.

Provenance

The following attestation bundles were made for chess_spectral-1.7.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: chess-spectral-publish.yml on lemonforest/mlehaptics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file chess_spectral-1.7.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for chess_spectral-1.7.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ba8f0cc36a12a6c5814ab2c030a5a805ce941c6c9b50f0e5bb87628481c4fff1
MD5 da5318463406336726e2785115242382
BLAKE2b-256 5030ce681ccd8f451b83367fe75e41ad4e7a6549087f8eafa45cdac485b1935c

See more details on using hashes here.

Provenance

The following attestation bundles were made for chess_spectral-1.7.0-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: chess-spectral-publish.yml on lemonforest/mlehaptics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file chess_spectral-1.7.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for chess_spectral-1.7.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 15fe3c5866559e58e047e183dfa0fca8e2a38f9a4bf4c41ebd907aee24c1fd82
MD5 6d283ea1206ed705b3d4e85c4ff5a5a1
BLAKE2b-256 5c698fd4e0161e7fac75954a658edc6940df322f83c678c74d9459379d435657

See more details on using hashes here.

Provenance

The following attestation bundles were made for chess_spectral-1.7.0-cp313-cp313-win_amd64.whl:

Publisher: chess-spectral-publish.yml on lemonforest/mlehaptics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file chess_spectral-1.7.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for chess_spectral-1.7.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 75526fb1504db31f7318a4ab13e0e56ca57225ea127a534803df4e69f1a04946
MD5 30c6af0bba245758c00ddb053c429694
BLAKE2b-256 f09bbe75797cedc78ed1b6ad894b471e1f7a70c6611cdbfbc799b9a4a9bd685d

See more details on using hashes here.

Provenance

The following attestation bundles were made for chess_spectral-1.7.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: chess-spectral-publish.yml on lemonforest/mlehaptics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file chess_spectral-1.7.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for chess_spectral-1.7.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 53aaee61114ac432772e9b6ff4dbac71e55bbc9505c00a45f0a0ee5848111544
MD5 e9bde86ab494e9c6c3bd6daa09342753
BLAKE2b-256 4e6afbd841b55a5ba82551a97d6fcf91726f536b40136c3990a9d3938c364650

See more details on using hashes here.

Provenance

The following attestation bundles were made for chess_spectral-1.7.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: chess-spectral-publish.yml on lemonforest/mlehaptics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file chess_spectral-1.7.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for chess_spectral-1.7.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ff398f4d218c41b5a88bedcaab2052da421eb02d71aa923df875bb221a59e579
MD5 7ed0c5b0fb070bfb13cb90a3cfb034eb
BLAKE2b-256 c7f97f83cd1e2a17324615a0aae413ba85bd69081a119941975ea1af10467283

See more details on using hashes here.

Provenance

The following attestation bundles were made for chess_spectral-1.7.0-cp312-cp312-win_amd64.whl:

Publisher: chess-spectral-publish.yml on lemonforest/mlehaptics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file chess_spectral-1.7.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for chess_spectral-1.7.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e5192326e23a88755a504b81401011db10c81b74d32dcf2eca3df346b422fd51
MD5 903561057e74a4a7f5527b23c3da21ed
BLAKE2b-256 9861f79939606b590f03f744f29daaa18d048205920e35adb6200aa1be64a86f

See more details on using hashes here.

Provenance

The following attestation bundles were made for chess_spectral-1.7.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: chess-spectral-publish.yml on lemonforest/mlehaptics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file chess_spectral-1.7.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for chess_spectral-1.7.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f642aa540fee9d13a6e14a24b0b2bb015b7f247bf8f44613f2ff10dd86b1cd9c
MD5 849930c6407325b3ad647acdbfd66545
BLAKE2b-256 0f0ee1ec14ab04182d5da546a2100d83e3d3934cf95e5cf003c2db33ef35ff4f

See more details on using hashes here.

Provenance

The following attestation bundles were made for chess_spectral-1.7.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: chess-spectral-publish.yml on lemonforest/mlehaptics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file chess_spectral-1.7.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for chess_spectral-1.7.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 4dbb29bc6aa60efdaaeddc3a274dac64ebd9383ccd2fededafb76691d9c69bda
MD5 5bef584706f6184f7fadb6d82e92ecbd
BLAKE2b-256 cdd5d7c397f0980ca95070edf94655fdd4792a7fba103b3c4ec24bf2429758e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for chess_spectral-1.7.0-cp311-cp311-win_amd64.whl:

Publisher: chess-spectral-publish.yml on lemonforest/mlehaptics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file chess_spectral-1.7.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for chess_spectral-1.7.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6bd67fa5ca7ad88f07049ffbff15e8187e2b07124cd3d02ef5bf127f0e1d8eaf
MD5 612d65a048693dc5a35f540c27d4edbb
BLAKE2b-256 1a31151569aa6bc2e48689f4234ba307737eb1bc2ee93f77f22c5831e99b4a5c

See more details on using hashes here.

Provenance

The following attestation bundles were made for chess_spectral-1.7.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: chess-spectral-publish.yml on lemonforest/mlehaptics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file chess_spectral-1.7.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for chess_spectral-1.7.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 09040e602945f6984ef0c14a448cb08b73f5d97997ea71fceb6f293ad7c5ef0d
MD5 e0eb3fa1288bcb361c432ccde7851d6e
BLAKE2b-256 b5b2af8dfc72f9bd90bb0f56922c90ea9818756e25c43ded0355ef3880b053c7

See more details on using hashes here.

Provenance

The following attestation bundles were made for chess_spectral-1.7.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: chess-spectral-publish.yml on lemonforest/mlehaptics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file chess_spectral-1.7.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for chess_spectral-1.7.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 f461d56f5efe091ef036fb1ea909803c7e2c7e819678ba5b0c6f7d9398028829
MD5 1ac245fef27be587ee633988825f569e
BLAKE2b-256 66509e58b36dbb66832755967a3b719250eb3bd50e3d000116d5bc0ff58a74b5

See more details on using hashes here.

Provenance

The following attestation bundles were made for chess_spectral-1.7.0-cp310-cp310-win_amd64.whl:

Publisher: chess-spectral-publish.yml on lemonforest/mlehaptics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file chess_spectral-1.7.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for chess_spectral-1.7.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bc57461cc73e5874c93be0ef409a9940d906edd429c177ca8e024febcaae7109
MD5 8284e3fd8350fcd745e817ff2d4eef8c
BLAKE2b-256 767d7cb6c8dd5b803c93b2e67fe9f886a77bb8879d8c3a98cc70cb2ba7a1ba57

See more details on using hashes here.

Provenance

The following attestation bundles were made for chess_spectral-1.7.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: chess-spectral-publish.yml on lemonforest/mlehaptics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file chess_spectral-1.7.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for chess_spectral-1.7.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6d2eeefa177068c4012a5f8014fd2e145ea014e4fa8f504afcc69f120645ec53
MD5 cfecae4d0cba178bb1b930fe4fafff7d
BLAKE2b-256 ce509cd9522ab116200c6d0094ebf59086c21fcfd5dc08f95f661b277d9ba783

See more details on using hashes here.

Provenance

The following attestation bundles were made for chess_spectral-1.7.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: chess-spectral-publish.yml on lemonforest/mlehaptics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page