跳转到内容

工程记录

不同工程记录服务于变更的不同阶段。只创建能够保存决策及其证据的最小记录,不要维护 可能与可执行契约发生漂移的平行说明。

记录映射

问题 记录 规范位置 生命周期
哪些产品结果必须长期成立? 产品需求 docs/product/product-requirements.md 持久范围或验收条件变化时更新
项目是否应采用这项外部行为或设计方向? 提案 issue 通过功能提案表单建立的 GitHub issue 实现前建立;以最终决策或 Pull Request 收口
为什么接受或拒绝一项持久权衡? 架构决策记录 所有权 package 的 docs/decisions/ 目录 保留决策历史,通过显式 supersede 演进
机器可读契约接受和输出什么? 可执行规范 JSON Schema、TypeScript 类型、MCP 工具 schema 与一致性测试 随公开契约一起版本化
在指定方法下,性能门是否通过? 基准策略与证据 策略 ADR 与绑定提交的 CI artifact 方法长期保留;每个候选重新生成原始证据
如何协调漏洞披露? 私有安全通告 SECURITY.md 指向的 GitHub Security Advisory 协调披露前保持私有;仅在适用时申请或分配 CVE
哪个经过评审的实现会被合并? Pull Request GitHub Pull Request 及其 checks 引用相关 issue、决策、规范与证据

提案与决策的边界

提案描述尚未解决的问题、预期外部行为、备选方案、兼容影响和验收证据,它并不是已经 接受的架构决策。对于不改变公开行为的范围明确纠错,可以直接提交 Pull Request。

ADR 在权衡明确后记录一项持久决策。它应放在拥有该边界的 workspace 中,包含状态、 日期、背景、决策、后果、验证和回滚。需要改变旧决策时应显式 supersede,而不是静默 改写历史结论。

本项目在决策前使用 proposal issue,不另建一套重复的 RFC 文档树。只有当提案确实需要 脱离 issue 生命周期进行长期、版本化评审时,才引入 RFC 流程;该变更本身也需要一份 带所有者和迁移方案的架构决策。

规范与生成参考

Schema、导出类型、工具输入定义和测试共同构成可执行规范。面向人的文档说明如何使用 这些契约。API 参考由经过评审的 TypeScript 导出生成,属于 Web 界面,不会自动进入 MCP 语料。

公开契约发生变化时,必须在同一个 Pull Request 中同步兼容的 schema 与类型改动、先红 后绿的一致性测试、当前文档、示例和 changelog。

当前契约权威

表面 权威来源
MCP 消息与传输 版本化 Model Context Protocol 规范和已安装的官方 SDK
工具参数 MCP package 中的严格 Zod 定义;官方 SDK 将其发布为 JSON Schema
Corpus manifest @sumi-os/corpus-contract 中的 Draft 2020-12 schema、canonicalization 与 fixture
TypeScript API 参考 导出 declaration 与自动生成的 TypeDoc 页面
未来 Rust API 参考 只有在受支持的 parity 实现存在后,才以导出 Rust item 与 rustdoc 为准
浏览器可访问性 已发布的 Web 标准与 WCAG 2.2

LSP 不是本项目契约;它是面向编辑器的语言服务协议。与 MCP 同用 JSON-RPC 并不会让 本服务成为 LSP 实现。未来 Rust runtime 必须消费同一套语言无关 schema 与 fixture, 不能重新定义 wire contract。

基准与安全证据

性能结论必须注明实现、运行时、平台、样本数、排序方法、阈值和原始结果 artifact。 本地报告和生成测量值不作为产品状态提交;候选证据由 CI 绑定到被测提交并保存。

疑似漏洞应通过 SECURITY.md 中的私有渠道报告。不要公开利用细节,也不要创建占位 CVE。 公开安全通告和 CVE 记录应在漏洞完成验证并协调披露后产生,而不是在初次报告时产生。

实现与评审流程见参与贡献