54 lines
1.3 KiB
Python
54 lines
1.3 KiB
Python
"""Safety Contract DSL (minimal MVP).
|
|
|
|
Defines simple data models to describe safety contracts for onboard AI planning.
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
from dataclasses import dataclass, field
|
|
from typing import List, Dict, Any, Optional
|
|
|
|
|
|
@dataclass
|
|
class LocalCapabilities:
|
|
name: str
|
|
capabilities: List[str] = field(default_factory=list)
|
|
metadata: Dict[str, Any] = field(default_factory=dict)
|
|
|
|
|
|
@dataclass
|
|
class SafetyPreConditions:
|
|
description: str
|
|
conditions: Dict[str, Any] = field(default_factory=dict)
|
|
|
|
|
|
@dataclass
|
|
class SafetyPostConditions:
|
|
description: str
|
|
conditions: Dict[str, Any] = field(default_factory=dict)
|
|
|
|
|
|
@dataclass
|
|
class ResourceBudgets:
|
|
cpu_cores: float = 0.0
|
|
memory_gb: float = 0.0
|
|
energy_wh: float = 0.0
|
|
time_seconds: float = 0.0
|
|
|
|
|
|
@dataclass
|
|
class DataSharingPolicy:
|
|
policy_id: str
|
|
allowed_data: List[str] = field(default_factory=list)
|
|
constraints: Dict[str, Any] = field(default_factory=dict)
|
|
|
|
|
|
@dataclass
|
|
class SafetyContract:
|
|
contract_id: str
|
|
local_capabilities: List[LocalCapabilities] = field(default_factory=list)
|
|
pre_conditions: Optional[SafetyPreConditions] = None
|
|
post_conditions: Optional[SafetyPostConditions] = None
|
|
budgets: Optional[ResourceBudgets] = None
|
|
data_policy: Optional[DataSharingPolicy] = None
|
|
version: str = "1.0"
|