Skip to content

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

Choose a tag to compare

@JacobFV JacobFV released this 31 Mar 06:31
· 91 commits to develop since this release

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