idea10-catopt-studio-a/catopt_studio/core.py

66 lines
1.6 KiB
Python

"""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