5.1 KiB
共享契约维护
唯一来源与目录边界
最终契约仓库:git@gitee.com:zzmbac/sip-contracts.git,分支 main。
SaaS 开发人员与本项目共同维护业务规范、Schema、MQ 拓扑和正常示例。
本项目的 contracts/schema 是 Git submodule,只记录消费的确定提交,不维护另一份本地定义。
原 contracts/local 已移除;docs/thirds/saas-dispatcher.md 只提供导航。
内部 proto/agent/agent.proto 仍属于本项目,不移入 SaaS 业务契约。
| 位置 | 用途 |
|---|---|
contracts/schema/ |
双方对接所需的规范、Schema、拓扑和正常示例;README 分开列出 Schema 和 Examples 用途,业务规范及 MQ 拓扑在正文单独链接说明。 |
contracts/manifest.json |
本项目记录的冻结历史来源证据;不登记现行合同 hash,不是 SaaS 对接数据。 |
contracts/verify.py、contracts/test_verify.py |
离线检查 Schema 引用、来源和文件完整性,并验证共享目录及 README 的范围。 |
contracts/examples/invalid/ |
本项目拒绝错误消息和配置的测试材料,不作为正常对接示例。 |
contracts/archive/sources/ |
两份历史来源的原字节,只用于验证,不作为当前规范。 |
contracts/AGENTS.md、contracts/*_test.go |
本项目维护规则与契约测试。 |
获取项目
git clone --recurse-submodules git@gitee.com:zzmbac/go-sip-agent.git
# 或在已有项目中获取固定契约版本:
git submodule update --init --recursive
构建仅将固定提交的 Schema、拓扑和正常示例嵌入制品,不包含本项目 manifest、错误示例或历史来源,
不在运行时读取 Git checkout 或在线加载引用。普通 make check 不自动联网追新。
缺失/未初始化契约、错误来源、未提交修改、指针不一致或未登记的引用均明确失败,没有旧文件兜底。
发布清单分别记录共享仓库地址、准确提交、拓扑 hash 和本项目验证 manifest 的 hash。
每次调研或修改契约之前
# 同步本项目自己的远程分支;失败或分叉时停止,不覆盖现有修改。
git fetch origin
# 依据当前分支的上游进行 --ff-only 合并。
make contracts-update
contracts-update 获取共享仓库最新 main 并只允许快进;更新前验证当前指针、来源及干净状态,
更新后使用本项目 contracts/ 中的验证材料检查共享契约。检查通过后仅暂存 contracts/schema 新指针。
现行合同仅以 Git submodule 提交号固定,不再登记逐文件或整包 hash。
脚本不提交其他文件,不改写历史来源证据,不得回退到旧文件。
网络错误、分叉或现有契约修改时停止;不自动 stash/reset,不改写已有历史。
已拉取但尚未暂存的快进允许重新核验;脚本仍拒绝分叉历史、错误来源和子模块内未提交文件,核验成功后才暂存指针。
修改与同步交付
-
确认已完成上述更新;在共享仓库修改对应 Schema、业务规范、拓扑或正常示例。 定义只维护一次,聚合入口只引用独立 Schema;README 将 Schema 与 Examples 分表,业务规范和 MQ 拓扑使用独立链接说明。
-
在本项目补充错误示例或测试,并核对共享文件变更:
python3 contracts/verify.py python3 -m unittest discover -s contracts -p 'test_*.py' -v go test ./contracts验证保留离线 Schema 引用及冻结历史来源检查;现行合同没有需手动刷新的重复 hash。
-
提交并推送共享仓库,只选择本次修改的对接文件:
git -C contracts/schema add <本次契约文件> git -C contracts/schema commit -m '<契约变更说明>' git -C contracts/schema push origin HEAD:main git add contracts/schema make contracts-update -
同步本项目实现、测试和文档;运行
make contract-check、make check、make release-check-local。 -
明确暂存本次项目改动及
contracts/schema指针,提交本项目;通知 SaaS 开发人员按同一 commit SHA 同步。
仅推送契约仓库不算完成。所有契约变更必须同步修改本项目;双方评审和联调需记录同一准确提交。
已有 P01–P08、A01–A12、K01–K16 项目内证据见 docs/evidence/saas-dispatcher-p08-acceptance.md。
Mock、hash 或离线验证不替代 SaaS、供应商或生产签收。
2026-10-08 本地适配
共享版本 b502ad2 的任务线路并发结构已用于配置读取、冻结快照、Dispatcher 选线与原子占用、Agent 入站校验及 SaaS Mock。旧字符串数组直接拒绝;已有占用与未知执行不因配置调整或重启清除。并发从现有 inbox 计算,不新增表或自动改写旧快照。
AI 连接的 HTTP 与 WebSocket 地址按调用用途分别使用,缺失时明确拒绝、不互相回退。字段定义仍只在共享仓库维护。
本轮本地验证与外部边界见 evidence/schema-task-trunk-concurrency-20261008.md。没有部署、真实拨号或真实 AI 请求。