Kevin

Canvas Composer — composition substrate

A canvas evaluates as a dataflow graph: the Content envelope + the object binding.

Canvas Composer — composition substrate (v2026-09-30T103805Z-5e473105f4) 2026-09-30 | A canvas evaluates as a dataflow graph: the Content envelope + the object binding. 1 - Canvas Evaluation - Evaluates canvas widgets canvas_router.py GET /api/canvas/{name} GET /api/canvas/{name}/render load_all_canvases() canvas_bindings.py resolve(source) select_payload(data, key) _daemon_base() composer/__init__.py GraphEvaluator validate order edges index widget spec resolved data 2 - Content Binding - Binds content sources canvas_bindings.py resolve(source) select_payload(data, key) _daemon_base() graphify-out/*.json httpx.AsyncClient GET /api/mail/message GET /api/inbox source spec fetched data 3 - Exit Handling - Handles canvas exits exits.py run_exit(node_id) validate_exits() exit_of(node_id) artifacts_root artifacts/*.json artifacts/*.log event_bus.publish() holon:publish artifact:publish catalog:publish exit request exit receipt 1. Load canvas spec 2. Resolve content sources 3. Evaluate graph 4. Handle exits Canvas Widget Spec type: canvas widgets: [widget1, widget2] name: dashboard Resolved Content descriptor: {type: table, units: %} value: {score: 0.4} provenance: {source: /api/mail/message} Canvas widgets are terminal; they cannot consume another widget's output directly. Legend actor = initiates work · process = code path · store = state on disk · bus = durable queue · dashed = separate process cyan = request flow · pink = state read/write · dashed green = pull / return path · red = refusal As of 2026-09-30 10:38 UTC, from commit 5e47310

Provenance

This drawing is generated, not drawn. It is rebuilt from the source files below, so when they change the picture changes — a diagram here cannot quietly describe a system that no longer works this way.

Owner
Kevin
Slug
canvas-composer
Rendered
2026-09-30T103805Z
From commit
5e473105f4
Updated
30 Sep 2026, 10:38 UTC
Sources at
5e47310
Watches
4 paths
  • daemon/src/composer
  • daemon/src/canvas_bindings.py
  • daemon/src/canvas_router.py
  • backlog/KAN-1275-composer-substrate-canvas-composes-holon-composer-packages-o.md