citygrid-policy-driven-fede.../citygrid/core.py

55 lines
1.0 KiB
Python

from dataclasses import dataclass, field
from typing import Any, Dict, List, Optional
@dataclass
class LocalProblem:
id: str
domain: str # e.g., "electric", "water", "thermal"
assets: List[str]
objective: Dict[str, Any] # simple objective description, can be expanded
constraints: List[Dict[str, Any]] = field(default_factory=list)
solver_hint: Optional[str] = None
@dataclass
class SharedVariables:
version: int
signals: Dict[str, Any] # e.g., forecasts, priors
@dataclass
class DualVariables:
multipliers: Dict[str, float]
@dataclass
class PlanDelta:
delta: Dict[str, Any]
timestamp: float
author: str
contract_id: str
signature: Optional[str] = None
@dataclass
class PrivacyBudget:
signal: str
budget: float
expiry: Optional[float] = None
@dataclass
class AuditLog:
entry: str
signer: str
timestamp: float
contract_id: str
version: int
@dataclass
class PolicyBlock:
safety: Dict[str, Any] = None
exposure_rules: Dict[str, Any] = None