signalvault-verifiable-priv.../signalvault_verifiable_priv.../schema.py

70 lines
1.7 KiB
Python

from __future__ import annotations
from dataclasses import dataclass, field
from typing import List, Dict, Optional
@dataclass
class SignalNode:
asset: str
venue: str
signal_type: str
timestamp: int # epoch seconds
quality: float = 0.0
metadata: Dict[str, object] = field(default_factory=dict)
@dataclass
class Edge:
from_id: str
to_id: str
relation: str # e.g., "causal", "temporal"
timestamp: int
metadata: Dict[str, object] = field(default_factory=dict)
@dataclass
class Scenario:
id: str
nodes: List[str] = field(default_factory=list)
edges: List[str] = field(default_factory=list)
description: str = ""
version: int = 1
@dataclass
class HedgePlan:
id: str
delta: Dict[str, object] # minimal representation of hedging actions
version: int = 1
approvals: List[str] = field(default_factory=list)
@dataclass
class AuditLog:
# Per-message audit log entries. We keep a list to support multi-entry provenance.
entries: List[str] = field(default_factory=list)
# Optional signer identity for provenance signing
signer: Optional[str] = None
# Optional timestamp for when the log entry was created
timestamp: Optional[int] = None
# Optional contract identifier related to this audit log
contract_id: Optional[str] = None
# Optional cryptographic chaining fields (for verifiable provenance)
parent_hash: Optional[str] = None
signature: Optional[str] = None
@dataclass
class PrivacyBudget:
signal_id: str
budget: float # DP budget allocated per signal
policy: Dict[str, object] = field(default_factory=dict)
@dataclass
class RegistryEntry:
adapter_name: str
contract: Dict[str, object]
conformance: bool = False