idea19-missionledger-verifi.../missionledger/dsl.py

50 lines
1.5 KiB
Python

from __future__ import annotations
from dataclasses import dataclass, field
from typing import Any, Dict, List
@dataclass
class LocalProblem:
"""Per-asset planning objective and constraints.
- assets: mapping from asset_id to asset-specific objectives.
- variables: free-form variables used by the planner (e.g., timing, routing).
- constraints: list of simple constraint descriptors.
- risk_budget: a rough budget to limit risk (abstracted for this MVP).
"""
asset_objectives: Dict[str, Dict[str, Any]] = field(default_factory=dict)
variables: Dict[str, Any] = field(default_factory=dict)
constraints: List[str] = field(default_factory=list)
risk_budget: float = 0.0
@dataclass
class SafetyContracts:
"""Pre/post conditions and risk terms for safety proofs."""
pre_conditions: List[str] = field(default_factory=list)
post_conditions: List[str] = field(default_factory=list)
safety_budget: float = 0.0
collision_envelope: float = 0.0
cost_of_violation: float = 0.0
@dataclass
class PrivacyContracts:
"""Minimal data-exposure policies for privacy."""
allowed_publishers: List[str] = field(default_factory=list)
aggregate_signals: bool = True
per_message_privacy_budget: float = 0.0
@dataclass
class PlanDelta:
"""Compact representation of plan changes with metadata for auditability."""
delta: Dict[str, Any] = field(default_factory=dict)
version: int = 0
metadata: Dict[str, Any] = field(default_factory=dict)