From 2084f75085617f87ea39bac7ec4cc6cd3653cde0 Mon Sep 17 00:00:00 2001 From: agent-58ba63c88b4c9625 Date: Sun, 19 Apr 2026 19:29:42 +0200 Subject: [PATCH] build(agent): new-agents-4#58ba63 iteration --- examples/orchestrator.py | 59 ++++++++++++++++++++++++++++ tests/test_delta_sync_integration.py | 27 +++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 examples/orchestrator.py create mode 100644 tests/test_delta_sync_integration.py diff --git a/examples/orchestrator.py b/examples/orchestrator.py new file mode 100644 index 0000000..b0182fd --- /dev/null +++ b/examples/orchestrator.py @@ -0,0 +1,59 @@ +""" +Tiny orchestrator example: +- Wire two adapters (FIX feed and simulated venue) to SignalCanvas primitives +- Produce PlanDelta updates and reconcile across partitions using delta_sync +- Demonstrate exporting a narrative via NLP helper and recording to governance ledger +""" +import time +from signalcanvas_graph_based_market_signal_s import ( + Graph, + SignalNode, + Link, + HedgePlan, + GraphRegistry, + replay_deltas, +) +from signalcanvas_graph_based_market_signal_s.adapters import FixFeedAdapter, SimulatedVenueAdapter +from signalcanvas_graph_based_market_signal_s.delta_sync import ( + create_plan_delta, +) +from signalcanvas_graph_based_market_signal_s.nlp import generate_narrative +from signalcanvas_graph_based_market_signal_s.ledger import GovernanceLedger + + +def demo_run(): + # Setup a tiny graph with two signals + g = Graph() + n1 = SignalNode(id="n1", type="price", asset="AAPL", venue="FIX", timestamp=time.time(), value=150.0) + n2 = SignalNode(id="n2", type="depth", asset="AAPL", venue="FIX", timestamp=time.time(), value=1.2) + g.add_node(n1) + g.add_node(n2) + g.add_link(Link(from_id="n1", to_id="n2", relation="lead-lag")) + g.add_hedge(HedgePlan(id="h1", delta={"AAPL": 2.0}, scenario_name="sc1", timestamp=time.time())) + + # Two adapters (one real-like FIX feed, one simulated venue) + fix = FixFeedAdapter(asset="AAPL") + sim = SimulatedVenueAdapter(assets=["AAPL", "MSFT"]) + + # Create a couple deltas as if these feeds produced updates + pd1 = create_plan_delta("plan-1", {"AAPL": 1.0}, 1, "demo-signer") + pd2 = create_plan_delta("plan-1", {"MSFT": 0.5}, 2, "demo-signer") + + narrative = generate_narrative(pd1.delta, context="demo run") + print("Narrative:\n", narrative) + + # Governance ledger entry (mock) + ledger = GovernanceLedger(signer_key="demo-signer-key") + ledger.append(pd1.plan_id, pd1.delta) + print("Ledger entries:", len(ledger.entries)) + + # Simple delta replay for demonstration + state = {"AAPL": 100.0, "MSFT": 200.0} + state = replay_deltas(state, [pd1.delta, pd2.delta]) + print("Replayed state:", state) + + return 0 + + +if __name__ == "__main__": + demo_run() diff --git a/tests/test_delta_sync_integration.py b/tests/test_delta_sync_integration.py new file mode 100644 index 0000000..bda9022 --- /dev/null +++ b/tests/test_delta_sync_integration.py @@ -0,0 +1,27 @@ +from signalcanvas_graph_based_market_signal_s.delta_sync import ( + create_plan_delta, + reconcile_runs, + sign_delta, +) + + +def test_plan_delta_signature_and_reconciliation(): + plan_id = "plan-xyz" + delta1 = {"AAPL": 1.0} + delta2 = {"AAPL": -0.25, "MSFT": 0.75} + version1 = 1 + signer = "integration-signer" + + # Create two deltas with signatures + pd1 = create_plan_delta(plan_id, delta1, version1, signer) + assert isinstance(pd1.signature, str) and len(pd1.signature) > 0 + + pd2 = create_plan_delta(plan_id, delta2, version1 + 1, signer) + assert isinstance(pd2.signature, str) and len(pd2.signature) > 0 + + # Reconcile as if two partitions produced deltas + merged = reconcile_runs([pd1], [pd2]) + # AAPL: 1.0 + (-0.25) = 0.75 + # MSFT: 0.75 + assert abs(merged["AAPL"] - 0.75) < 1e-9 + assert abs(merged["MSFT"] - 0.75) < 1e-9