Chronaxis用户手册English
本页目录

chronaxis.results.binding_metadata

源码基线:8904c2f744951857659abd40aaa3535d57faf53c

1"""保存清单中的预设版本与最终角色,不读取来源或重新执行工程契约。23输入是计划构建器已检查、运行层又与实际绑定核对的有限角色记录,输出为冻结4快照。记录只有别名和契约追溯,不含样本或原配置。contract_status仅表示给定5声明元数据通过了检查,不能证明方向、位置或物理语义已经由系统测量核实。6本模块只依赖标准库与核心字段校验,无I/O、预算或状态副作用。7"""89# 完整信号定义由RunMetadata另存;角色快照只引用同一清单的实际简单别名。10from dataclasses import dataclass11from ..core.validation import require_identifier, require_text121314@dataclass(frozen=True)15class PresetRoleMetadata:16    """保留角色选择和声明契约版本,字段冻结且不代表物理事实已验。"""1718    role: str  # 原预设角色。19    alias: str  # 最终实际信号别名。20    resolution: str  # explicit或semantic_unique。21    contract_version: str  # 实际检查的角色契约版本。22    contract_status: str = 'checked_against_declared_metadata'  # 校验的是给定声明。2324    def __post_init__(self):25        """校验有限字段,不执行角色契约。参数: 无。返回: None。异常: 类型或非法状态。"""26        require_identifier(self.role, 'preset_role.role')27        require_identifier(self.alias, 'preset_role.alias')28        require_text(self.contract_version, 'preset_role.contract_version')29        # 两种选择方式都先由原构建器完成,不接受未知方式或升级后的物理验证状态。30        if self.resolution not in ('explicit', 'semantic_unique'):31            raise ValueError('预设角色查找方式需explicit或semantic_unique')32        if self.contract_status != 'checked_against_declared_metadata':33            raise ValueError('预设角色状态只能说明已检查声明元数据')343536@dataclass(frozen=True)37class PresetBindingMetadata:38    """按原计划顺序保存一个预设的版本和全部角色,角色不可重复。"""3940    preset_id: str  # 原预设ID。41    preset_type: str  # 原预设种类,不从名称推断领域事实。42    version: str  # 原预设版本,与角色契约版本独立。43    roles: tuple[PresetRoleMetadata, ...]  # 有限冻结记录,不含输入行。4445    def __post_init__(self):46        """核快照及角色唯一性。参数: 无。返回: None。异常: 类型、空身份或重复角色。"""47        require_identifier(self.preset_id, 'preset_binding.preset_id')48        require_text(self.preset_type, 'preset_binding.preset_type')49        require_text(self.version, 'preset_binding.version')50        if type(self.roles) is not tuple or any(type(role) is not PresetRoleMetadata for role in self.roles):51            raise TypeError('预设清单角色需冻结PresetRoleMetadata tuple')52        # 模型只检查内部结构;运行层另证别名和定义属于本次实际输入。53        if len({role.role for role in self.roles}) != len(self.roles):54            raise ValueError('预设清单不能重复同一角色')55
Chronaxis 用户手册 · 离线阅读