from __future__ import annotations from dataclasses import dataclass, field from typing import Dict, Optional @dataclass class GoCContract: name: str version: str schema: dict = field(default_factory=dict) @dataclass class GoCRegistry: """Lightweight Graph-of-Contracts registry for GoC interoperability. This is intentionally minimal: it stores versioned contract schemas for adapters and primitives. Producers can register contracts, and consumers can fetch them by (name, version). """ contracts: Dict[str, GoCContract] = field(default_factory=dict) def register(self, name: str, version: str, schema: Optional[dict] = None) -> str: key = f"{name}:{version}" self.contracts[key] = GoCContract(name=name, version=version, schema=(schema or {})) return key def get_contract(self, name: str, version: str) -> Optional[GoCContract]: key = f"{name}:{version}" return self.contracts.get(key)