模块按职责拆分为四层: - model.py:使用 frozen dataclass 定义不可变数据模型(HardCaps、UniverseConstraint、ConsentMeta、Mandate)及枚举(InstrumentType、AssetClass),并通过 MANDATE_SCHEMA_VERSION 实现未知版本的 fail-closed 拒绝。 - store.py:唯一对外入口 load_mandate(broker),从 <runtime_root>/live/<broker>/mandate.json 以严格 JSON 解析 + 结构校验构建 Mandate,任何缺失/非法均返回 None,由上层 gate 统一拒单。 - commit.py:唯一的写入端,包含提案保存 save_proposal 与最终提交 commit_mandate;通过 _atomic_write_json 原子写 0600 权限文件,先写 consent 记录再写 mandate 文件,随后删除提案以实现一次性提交;通过 _normalize_limits + _profile_fits_ceilings 在提交时重新校验所选 profile 未超出用户可见的天花板,且仅允许收窄调整。 - 信任边界:__init__.py 文档声明 agent loop 不可导入 commit.py,写入路径仅限 API 层 POST /mandate/commit,agent 工具注册表不暴露该模块,形成“命门”不变式——AI 无法自批授权。 依赖方向单向:store → model,commit → model + src.live.paths,二者互不引用,避免 agent 侧误用写入能力。