"""Minimal DSL primitives for CatOpt Studio MVP. This module provides lightweight, serializable primitives that sketch the Domain-Specific Language (DSL) surface described in the plan. It is not a full implementation, but serves as a stable foundation for tests and demos. """ from __future__ import annotations from dataclasses import dataclass, field from datetime import datetime from typing import Any, Dict, List, Optional @dataclass class LocalProblem: id: str domain: str assets: Dict[str, Any] = field(default_factory=dict) objective: str = "" constraints: List[str] = field(default_factory=list) solver_hint: Optional[str] = None @dataclass class SharedVariables: forecasts: Dict[str, Any] = field(default_factory=dict) priors: Dict[str, Any] = field(default_factory=dict) version: int = 0 @dataclass class PlanDelta: delta: Dict[str, Any] = field(default_factory=dict) timestamp: datetime = field(default_factory=datetime.utcnow) author: str = "anonymous" contract_id: Optional[str] = None signature: Optional[str] = None @dataclass class PrivacyBudget: signal: str = "" budget: float = 0.0 expiry: Optional[datetime] = None @dataclass class AuditLog: entry: str = "" signer: str = "anonymous" timestamp: datetime = field(default_factory=datetime.utcnow) contract_id: Optional[str] = None version: int = 0 @dataclass class PolicyBlock: safety: Dict[str, Any] = field(default_factory=dict) exposure_rules: Dict[str, Any] = field(default_factory=dict) @dataclass class GraphOfContractsEntry: adapter_name: str canonical_schema: str