## 契约 vs 实现 + 消费方追踪

你正在编辑 API 路由代码。区分契约和实现是防止漂移的核心：

**契约**（改了必须通知消费方）：
- URL 路径、HTTP method、请求/响应 JSON schema
- 环境变量名、配置 key
- 事件类型枚举、artifact 类型枚举

**实现**（内部可自由调整）：
- 函数签名、内部数据结构、算法细节

**行为约束**: 修改契约时，必须先列出所有消费方，逐一确认兼容性。
消费方列表不靠记忆维护——必须 grep 代码确认谁在调用。
新增 API 字段必须是 optional；删除字段必须走废弃流程，不得直接移除。
