build(agent): new-agents-3#dd492b iteration

This commit is contained in:
agent-dd492b85242a98c5 2026-04-21 11:25:02 +02:00
parent 083368bb79
commit 0ae69bea5f
3 changed files with 79 additions and 2 deletions

View File

@ -10,6 +10,20 @@ This repository provides a compact, production-oriented starting point for an ed
- Security: basic governance metadata scaffolding (AuditLog placeholders).
- MVP roadmap: end-to-end toy demonstration with 2 venues, 2 central analyzers.
## EnergiBridge Interop (IR)
- This repo now includes a lightweight EnergiBridge-compatible intermediate representation (IR) to map edge primitives to a common cross-venue interface.
- Key primitives:
- LocalMarketContext: per-venue local state snapshot.
- SharedSignalsIR: IR payload carrying core metrics plus optional privacy budgets and version metadata.
- Converter: EdgeSignalProcessor.to_ir(signals, context, privacy_budget, version) converts SharedSignals into SharedSignalsIR.
Usage sketch:
- Compute signals via EdgeSignalProcessor.extract_signals(feed).
- Optionally attach a LocalMarketContext for venue context.
- Convert to IR via EdgeSignalProcessor.to_ir(signals, context, privacy_budget=0.25, version=1).
This addition enables pluggable adapters to interoperate with a canonical IR without altering existing consumers of SharedSignals.
This project is designed to be production-friendly, with a real packaging setup, tests, and a clear readme that explains how to extend the system.
See pyproject.toml for packaging configuration and the src/edgemarketsignal package for the implementation details.

View File

@ -1,3 +1,15 @@
from .core import EdgeSignalProcessor, DeltaVectorClock, DeltaSync
from .core import (
EdgeSignalProcessor,
DeltaVectorClock,
DeltaSync,
LocalMarketContext,
SharedSignalsIR,
)
__all__ = ["EdgeSignalProcessor", "DeltaVectorClock", "DeltaSync"]
__all__ = [
"EdgeSignalProcessor",
"DeltaVectorClock",
"DeltaSync",
"LocalMarketContext",
"SharedSignalsIR",
]

View File

@ -10,6 +10,35 @@ class SharedSignals:
liquidity: int
@dataclass(frozen=True)
class LocalMarketContext:
"""Lightweight per-venue local context for edge processing.
This represents a small snapshot of the venue state captured at the edge
prior to emitting aggregated signals. It is intended for use by interoperable
bridges (EnergiBridge) to map edge primitives to a common intermediate
representation (IR).
"""
venue: str
timestamp: Optional[float] = None
liquidity: int = 0
@dataclass
class SharedSignalsIR:
"""EnergiBridge-inspired intermediate representation for SharedSignals.
This is a lightweight container that carries edge-derived metrics along with
optional privacy budgeting and versioning metadata for reproducible
cross-venue analysis.
"""
venue: str
mid_price: float
liquidity: int
privacy_budget: Optional[float] = None
version: int = 0
class EdgeSignalProcessor:
@staticmethod
def extract_signals(feed: Dict) -> SharedSignals:
@ -29,6 +58,28 @@ class EdgeSignalProcessor:
liquidity = int((bid_size or 0) + (ask_size or 0))
return SharedSignals(venue=venue, mid_price=float(mid_price), liquidity=liquidity)
@staticmethod
def to_ir(
signals: SharedSignals,
context: Optional[LocalMarketContext] = None,
privacy_budget: Optional[float] = None,
version: int = 0,
) -> SharedSignalsIR:
"""Convert edge SharedSignals into an EnergiBridge IR payload.
This is deliberately lightweight: it preserves core fields and attaches
optional governance metadata. It allows adapters to interoperate via a
stable, vendor-agnostic representation without pulling in heavy payloads.
"""
_ = context # Currently unused, but kept for future extensions
return SharedSignalsIR(
venue=signals.venue,
mid_price=signals.mid_price,
liquidity=signals.liquidity,
privacy_budget=privacy_budget,
version=version,
)
@dataclass
class DeltaVectorClock: