Skip to content

Releases

v0.5.0: N-dimensional spatial canvas

Choose a tag to compare

@JacobFV JacobFV released this 05 Apr 15:02

Arbitrary spatial dimensions — the canvas is no longer locked to 2D.

What's new

  • spatial_shape parameter: CanvasLayout, compile_schema, and compile_program all accept spatial_shape=(...) for 1D, 2D, 3D, or higher.
  • 1D time-series: Field(spatial_shape=(128,)) + compile_schema(..., spatial_shape=(200,))
  • 3D volumetric: Field(spatial_shape=(4, 4, 4)) + compile_schema(..., spatial_shape=(8, 8, 8))
  • N-D positional encoding: SinusoidalPositionalEncodingND splits d_model evenly across all dimensions.
  • N-D packing: 1D linear, 2D strip (unchanged), 3D+ stacked greedy.
  • N-D masks: Rect generalized to hyperrectangles, rect_cover works on any-dimensional boolean masks.
  • Schema format: Serializes spatial_shape list; reads old H/W format transparently.

Backward compatible

The old H=/W= API continues to work unchanged. All 478 existing tests pass without modification.

# All of these still work exactly as before:
CanvasLayout(T=5, H=8, W=8, d_model=256)
Field(12, 12)
compile_schema(Robot(), T=8, H=16, W=16, d_model=256)

529 tests passing (478 existing + 51 new)

v0.4.2: 18 examples + TRIBE v2 BCI

Choose a tag to compare

@JacobFV JacobFV released this 31 Mar 20:57

18 runnable examples. TRIBE v2 BCI experiment: canvas decoder 68.8% vs SVM 59.4% on real cortical predictions.

v0.4.1: Fix all examples, add Modal runner

Choose a tag to compare

@JacobFV JacobFV released this 31 Mar 19:49

All 13 examples verified passing on Modal. Fixes deprecated parent_child kwarg and grid sizing for coarse-grained fields.

v0.4.0: Phase 6+ — all 8 future workstreams

Choose a tag to compare

@JacobFV JacobFV released this 31 Mar 18:32

Phase 6+: ProgramConditioner, internal microsteps, identity slots, masks, cortex, learned scheduling, ClockExpr IR, constraints. 478 tests.

v0.3.0: Typed process layer — families, carriers, operators, scheduling, compilation

Choose a tag to compare

@JacobFV JacobFV released this 31 Mar 06:31

What's new

Canvas-engineering gains a typed process layer on top of the existing typed layout:

CanvasProgram layer

  • 5 region families: observation, state, memory, residual, action — everything else is tags
  • 5 carriers: deterministic, diffusive, filter, memory, residual — not everything follows diffusion dynamics
  • Operators: semantic intent (observe, predict, correct, retrieve, write, act) separate from backend (cross_attention, mamba, perceiver, etc.)
  • Auto-wiring: compile_program() auto-sets operators from region family pairs
  • ClockSpec: periodic, on_event (residual threshold), boundary clocks with cooldown and max_silence

Runtime

  • ResidualAccumulator: tracks running scalar EMA summaries of error signals per region
  • RegionScheduler: evaluates clock rules to decide which regions fire each step
  • AttentionDispatcher.active_regions: skip inactive regions, pass through unchanged

Compilation

  • ProgramCompiler: freeze/constant/export/dead-elimination passes
  • Per-family learning defaults: ssl_prediction for observation, posterior_match for state, retrieval for memory, calibration for residual, supervised for action

New modules

  • program.py — CanvasProgram, RegionProgram, ConnectionProgram, ClockSpec, LearningSpec
  • residuals.py — ResidualSpec, ResidualAccumulator
  • scheduling.py — RegionScheduler
  • learning.py — FAMILY_DEFAULTS, default_learning()
  • compiler.py — ProgramCompiler, CompiledProgram

Stats

  • 361 tests, all passing
  • 122 new tests for v2 features
  • All 239 v0.2.0 tests pass unchanged
  • Full backward compatibility: compile_schema() unchanged, all existing code works

v0.2.0: Temporal fill modes, PeriodEmbedding, CogVideoX

Choose a tag to compare

@JacobFV JacobFV released this 31 Mar 06:31

What's new

  • Temporal fill modes (DROP, HOLD, INTERPOLATE) for cross-frequency attention connections
  • PeriodEmbedding — learned embedding indexed by log-bucketed temporal period
  • Higher-order IDW interpolation via interpolation_order on Connection
  • CogVideoX backbone-native attention type
  • Mamba readout refactored from pooled-mean to query-based attention
  • Block-weighted mean period for coarse-grained field computation
  • Period-aware fill resolution in real-time space

Behavior change

HOLD is now the default temporal fill mode. Previously, out-of-bounds temporal connections silently dropped. Use TemporalFill.DROP for the old behavior.

Stats

  • 239 tests, all passing
  • Full backward compatibility with v0.1.x

v0.1.1

Choose a tag to compare

@JacobFV JacobFV released this 08 Mar 05:08