Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
signal_graph_executor_contract.hpp
Go to the documentation of this file.
1#pragma once
2
3// Small, behavior-only contracts shared by SignalGraph's routed executor,
4// legacy reference walk, and host-facing admission code. The full
5// signal_graph_executor_routing.hpp header remains the compatibility surface
6// for callers that need binding storage or snapshot construction.
7
10
11#include <cstddef>
12#include <cstdint>
13#include <span>
14
15namespace pulp::host {
16
17struct Connection;
18struct GraphNode;
19
20// The single, authoritative classification of a host Connection into a runtime
21// lane. MIDI takes precedence over automation, and automation takes precedence
22// over plain audio. Feedback is orthogonal; sidechain and dense audio-rate
23// modulation remain explicit markers on the result.
30
32
33// True iff this connection carries latency-aligned audio for PDC: feed-forward
34// audio or dense audio-rate modulation. Feedback, MIDI, and sparse automation
35// do not participate in the latency domain.
37
47
48// Admission result for the exact routed-executor plan shape derived from a
49// SignalGraph candidate. Capacity failures report actual/limit; plan failures
50// additionally identify the rejected spec index and node.
53 std::uint64_t actual = 0;
54 std::uint64_t limit = 0;
55 std::size_t index = 0;
57
58 constexpr explicit operator bool() const noexcept {
60 }
61};
62
63// Validates the same node/connection projection consumed by
64// build_executor_snapshot(), without preparing or publishing a graph.
65ExecutorTopologyValidation
66validate_signal_graph_executor_topology(std::span<const GraphNode> nodes,
67 std::span<const Connection> connections,
68 graph::GraphRuntimeLimits limits = {});
69
70} // namespace pulp::host
std::uint32_t NodeId
Definition graph_types.hpp:7
GraphRuntimeConnectionKind
Definition graph_runtime_plan.hpp:85
@ Audio
Definition graph_runtime_plan.hpp:86
Bounded event contracts shared by host ingress and graph-authored nodes.
Definition anticipation_eligibility.hpp:9
ConnectionClass classify(const Connection &c)
@ Accepted
Definition graph_event_contract.hpp:30
ExecutorTopologyValidation validate_signal_graph_executor_topology(std::span< const GraphNode > nodes, std::span< const Connection > connections, graph::GraphRuntimeLimits limits={})
@ ConnectionLimitExceeded
Definition sample_region_proof.hpp:124
@ NodeLimitExceeded
Definition sample_region_proof.hpp:123
bool connection_affects_latency(const Connection &c)
ExecutorTopologyValidationCode
Definition signal_graph_executor_contract.hpp:38
@ TopologyIneligible
Definition signal_graph_executor_contract.hpp:40
@ TotalPortLimitExceeded
Definition signal_graph_executor_contract.hpp:44
@ PlanRejected
Definition signal_graph_executor_contract.hpp:45
@ Accepted
Definition signal_graph_executor_contract.hpp:39
@ PerNodePortLimitExceeded
Definition signal_graph_executor_contract.hpp:43
Definition graph_runtime_plan.hpp:25
Definition signal_graph_executor_contract.hpp:24
bool sidechain
Definition signal_graph_executor_contract.hpp:28
bool feedback
Definition signal_graph_executor_contract.hpp:26
graph::GraphRuntimeConnectionKind kind
Definition signal_graph_executor_contract.hpp:25
bool audio_rate
Definition signal_graph_executor_contract.hpp:27
Definition signal_graph_connection.hpp:18
Definition signal_graph_executor_contract.hpp:51
ExecutorTopologyValidationCode code
Definition signal_graph_executor_contract.hpp:52
NodeId node
Definition signal_graph_executor_contract.hpp:56
std::uint64_t actual
Definition signal_graph_executor_contract.hpp:53
std::size_t index
Definition signal_graph_executor_contract.hpp:55
std::uint64_t limit
Definition signal_graph_executor_contract.hpp:54
Definition signal_graph_node.hpp:126