01
Contract · workflow
cross-repo-contract-alignment
01-cross-repo-contract-alignment.md
◉
WHAT IS THIS
定位跨仓库契约对齐 workflow。适合一个功能横跨 producer、consumer、CLI、desktop、agent runtime、多端 SDK 时使用。
这个 workflow 的核心判断是:不要先在 consumer 侧补适配层。先确认 owner repo 的 contract 是否稳定,再决定 consumer 应该接什么。
⚡
TRIGGERS
触发场景▸CLI、frontend、desktop、agent 调用同一个后端能力,但字段、状态、错误语义不一致。
▸一个 repo 的测试通过了,真实链路仍然失败。
▸新增 API 后,需要同步 SDK、CLI、docs、schema cache。
▸历史里出现过“只改 client,最后发现 server contract 才是根因”。
▸多个 repo 都有同名 capability,但语义或状态机不同。
▸Agent capability、tool schema、UI 展示层都声称支持同一能力,但运行时证据不一致。
▸登录、token exchange、callback、tool backend auth 横跨多个 repo,需要确认 canonical token flow。
↹
INPUT & OUTPUT
输入 / 产出↘ INPUT
- 相关 repo 列表。
- 已知失败症状或目标能力名。
- Producer contract 文件,比如 OpenAPI、DTO、schema、API handler、event type。
- Consumer 调用点,比如 CLI command、frontend action、desktop adapter、agent tool。
- 运行时证据,比如 session id、audit log、tool call、DB row、network trace,可选。
- 当前测试命令和部署 smoke 命令。
↗ OUTPUT
- Contract owner repo 的修复或确认文档。
- Consumer repo 的最小接入改动。
- Contract tests 和 integration tests。
- 每个 repo 独立 commit,commit message 说明该 repo 在链路里的职责。
- 一个最终对齐报告,列出 producer、consumer、docs、tests 的状态。
🪜
STEPS
编排步骤- 1建立能力地图用
rg找 capability 名称、endpoint、DTO、schema、command 名。输出 producer 和 consumer 两张表。 - 2锁定 owner repo判断哪个 repo 定义了真实 contract。通常是 API server、shared schema package、agent runtime,而不是 CLI 或 UI。
- 3读 owner contract检查字段命名、状态枚举、错误 envelope、鉴权要求、分页和版本策略。不要从 consumer 代码反推 contract。
- 4写 contract alignment note在 owner repo 里补一份短文档,说明 canonical contract、兼容策略、迁移边界。
- 5先补 owner tests补
list/get/call、状态转换、错误响应、schema 兼容测试。测试先失败,再改实现。 - 6Consumer 接入 canonical contract删除本地重复解析、兼容假设、手写状态映射。只保留 domain 级配置和展示逻辑。
- 7同步文档和例子更新 CLI reference、API docs、README、PRD 状态字段。文档必须引用 canonical contract。
- 8跑端到端 smoke从用户入口发起调用,经过 consumer 到 producer,再验证输出和错误语义。
- 9
⚙
AGENT ROLES
Agent 分工⚙
Contract Mapper
扫描 repo,产出 producer/consumer 能力地图。
⚙
Owner Contract Agent
只负责 owner repo 的 contract 和 tests。
⚙
Consumer Agent
只负责接入 canonical contract,不改 owner repo。
⚙
Docs Agent
同步 reference、PRD、ADR、README。
⚙
Verifier Agent
独立跑 smoke,检查是否仍有本地适配层。
✓
ACCEPTANCE GATE
验收 gate- ✓Owner repo 有 contract tests。
- ✓Consumer repo 有 integration 或 smoke tests。
- ✓所有同名 capability 的字段和状态枚举一致。
- ✓
rg找不到旧 contract 名、旧 endpoint、旧 envelope 的生产调用。 - ✓机器输出格式不被 formatter 改坏,比如 JSON、NDJSON、schema dump。
- ✓每个 repo 的
git status可解释,不混入无关改动。
⊘
FAILURE HANDLING
失败处理如果 owner contract 不清楚,先停下来写 ADR,不继续实现。
如果 consumer 需要兼容旧 contract,必须写明兼容期限和删除条件。
如果无法跑全链路 smoke,至少保留可复现的 curl、CLI command 或 fixture。
如果 contract 看起来一致但真实用户仍失败,不在 consumer 侧继续补猜测逻辑,改走运行时证据链。
⌘
TEMPLATE
最小落地模板## Contract Alignment
- Capability:
- Owner repo:
- Consumers:
- Canonical request:
- Canonical response:
- Error envelope:
- State enum:
- Compatibility policy:
- Tests added:
- Smoke command: