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.