Skip to content

SignalGraph capability matrix

This matrix separates four questions that are easy to conflate:

  • Runtime: what the engine can execute or represent.
  • Authoring: what a developer can construct and edit through the C++ model.
  • Tooling: what the CLI, kits, and diagnostics expose today.
  • Evidence: the fixture or receipt that supports the status claim.

A capability is only as broad as its narrowest lane. A runtime primitive does not imply a public authoring workflow, and a kit manifest does not prove audio execution. Use the unified workflow guide for the step-by-step sequence.

Choose a starting point

Your question Read these rows first
Can the runtime express this graph? DAG composition, limits, prepared edits, feedback and latency/PDC
Can I author and edit it safely? Prepared topology edits, serialization, and the graph fixture workflow
Can I render and compare it? Offline graph rendering, timeline offline rendering, and the evidence rows
Can I host external processing? Hosted plugin lifecycle, multi-bus routing, and process isolation
Can an agent operate it repeatably? Fixture discovery, limits, receipts, inspection, and fingerprints

Runtime, authoring, tooling, and evidence

Capability Runtime Authoring Tooling Evidence Status / next gate
DAG composition and stable node identity SignalGraph with built-in and custom nodes C++ graph API and reference Serializer and graph tests sample-region graph Supported; add deterministic replay receipt
Limits and generated-graph preflight GraphLimits, validation, work-unit estimate Apply limits before prepare() Serializer/import tests sample-region compatibility graphs Supported; retain rejection reason, actual, and limit in receipts
Prepared topology edits Immutable prepared snapshots and publication generations PreparedTopologyEdit transaction Host bindings and lifecycle tests lifecycle reports Supported with interruption policy; add latency, feedback, rollback, and continuity fixtures
MIDI, sparse automation, and audio-rate modulation Typed event and modulation lanes Graph edges and bounded lane configuration Parameter/modulation docs and tests graph control fixture Supported in bounded lanes; add capacity and sample-accurate parity receipts
Graph-level multirate domains Node-local rate-aware DSP; graph prepares one host rate No per-node rate domain or graph-owned resampler boundary No scheduler/rate-domain contract multirate audit No-change; require an explicit conversion and PDC contract for mixed-rate graphs
Feedback and latency/PDC Explicit feedback delay and prepared compensation Feedback edges and latency declarations Graph tests and prepared stats SignalGraph reference Supported with declared limits; add deterministic replay and latency-change continuity
Serial and parallel execution Canonical and levelized executors Topology determines eligible scheduling Runtime counters and diagnostics lifecycle receipt Supported; benchmark before scheduler changes
Offline graph rendering OfflineSignalGraphHost with no transport Prepare a graph, then render fixed partitions C++ tests sample-region example Supported for no-transport partition parity; use timeline renderer for transport and tails
Timeline offline rendering Timeline renderer supplies transport, pre-roll, PDC, and tails Timeline project, clips, notes, and automation Timeline CLI and SDK guide timeline phase example and timeline corpus Supported at the higher level; preserve the direct graph-host boundary
Graph serialization and bake GraphSerializer and signed bake artifacts Author .pulpgraph and lowerable node sets pulp bake and verification sample-region graph Supported with node restrictions; retain semantic form and artifact lineage
Hosted plugin lifecycle PluginSlot and plugin nodes Wrap a configured PluginSlot in a graph node; Processor nodes use the owned processor-node path Format adapters and bounded hosting fixtures hosting guide Partial; require a pinned format lifecycle matrix
Multi-bus routed ProcessBuffers Direct rich buses; routed named secondary delivery is bounded Declare and connect supported buses Existing tests and routed fixture capability rows Partial/awkward seam; add name preservation, mapping, and auxiliary-output receipts
Graph inspection and fingerprints Authoring receipts and runtime diagnostics Capture semantic and prepared generations separately No unified graph CLI/MCP workflow reference diagnostics Partial/awkward; establish deterministic internal receipts before a public contract
Fixture discovery and structural validation Kit metadata does not execute a graph Declare fixture paths and metadata pulp kit search/inspect/validate/verify sample-region kit Partial; pair structural verification with an executable fixture receipt
Unified graph control workflow Adjacent control operations exist Discover → validate → prepare → mutate → render → diagnose CLI/MCP/control docs cover adjacent surfaces workflow guide Partial/awkward; keep the guide as the canonical integration path
Process isolation for plugin crashes Scanner containment is separate from graph execution No graph-native isolation contract Hosting and diagnostic surfaces hosting guide Unverified/artifact-gated; require pinned crash/hang and isolated-process receipts
Agent/Forge graph generation Limits, serializer, edits, and receipts are reusable Generate a bounded graph fixture Kits, controls, and audio-quality tooling agent acceptance section Semantically possible; add one deterministic fixture with positive and negative controls

Reading the status

Supported means a current source or test receipt covers the named boundary; it does not imply every format, platform, or graph shape. Partial/awkward means the engine or adjacent pieces exist but the unified authoring or debugging path is incomplete. Confirmed seam means a deterministic fixture proves a specific bounded behavior. Unverified/artifact-gated means the required external identity or platform evidence is absent. Do not collapse these states into a broad parity claim.

The matrix is subordinate to the durable audio-graph planning ledger at pulp-planning/graph-update.md (latest closeout receipt: planning commit 43e09da01). When a receipt changes a row, update that ledger with the exact source head, commands, positive and negative controls, confidence, and next action.