Files
go-sip/docs/contracts.md
T

5.1 KiB
Raw Blame History

共享契约维护

唯一来源与目录边界

最终契约仓库: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,不改写已有历史。 已拉取但尚未暂存的快进允许重新核验;脚本仍拒绝分叉历史、错误来源和子模块内未提交文件,核验成功后才暂存指针。

修改与同步交付

  1. 确认已完成上述更新;在共享仓库修改对应 Schema、业务规范、拓扑或正常示例。 定义只维护一次,聚合入口只引用独立 Schema;README 将 Schema 与 Examples 分表,业务规范和 MQ 拓扑使用独立链接说明。

  2. 在本项目补充错误示例或测试,并核对共享文件变更:

    python3 contracts/verify.py
    python3 -m unittest discover -s contracts -p 'test_*.py' -v
    go test ./contracts
    

    验证保留离线 Schema 引用及冻结历史来源检查;现行合同没有需手动刷新的重复 hash。

  3. 提交并推送共享仓库,只选择本次修改的对接文件:

    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
    
  4. 同步本项目实现、测试和文档;运行 make contract-check、make check、make release-check-local。

  5. 明确暂存本次项目改动及 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 请求。