Files
nana-story/docs/adr/0001-rust-contract-source.md
T
2026-07-28 12:51:00 +08:00

760 B

ADR 0001:Rust 是公共契约的唯一事实来源

  • 状态:已接受
  • 日期:2026-07-28

决策

公共数据模型只在 nana-domain 中定义。JSON Schema 与 TypeScript DTO 由 nana-contracts 生成并提交到 contracts/。CI 同时检查源文件哈希和生成结果。

禁止手工维护第二套同名模型。前端只能导入 contracts/ts

原因

资源校验、状态 reducer、存档和 Tauri 命令都运行在 Rust 侧。让 Rust 成为唯一事实来源 可以避免多个子智能体分别发明不兼容的字段和枚举。

后果

  • 任何契约变更必须重新生成 Schema 与 TypeScript。
  • 契约变更必须连同 canonical fixtures 一起评审。
  • 生成物漂移会使 pnpm verify 失败。