Target Version
3.0-dev。该开发线将产生首个 3.0 stable release;证据复核于提交 a75fc8721b99e5c0b4421d0c58b5618bbe71ff31。
Evidence
.github/workflows/ 只有 CI 与 agent-policy workflow,没有 tag/release workflow。
.github/workflows/ci.yml 只上传短期 compose-service-artifacts,不发布版本化服务镜像、二进制或 release manifest。
- 各服务 Dockerfile 依赖预先生成的
build/<service>_server 与 depends/,没有面向发布用户的统一构建入口。
- 仓库当前没有 Git tag、VERSION/manifest、镜像 registry contract、checksums、SBOM、provenance、签名或发布回滚 runbook。
- CI 的
protoc-gen-go@v1.36.11 与已跟踪生成文件头记录的 v1.34.2 不一致,make -C tests proto 会重写已跟踪输出,表明 code generation 尚不可复现。
- 根与子项目仍声明
cmake_minimum_required(VERSION 3.1.3);CMake 4.3 默认拒绝该 policy compatibility。
- README 声明 source available,但仓库没有独立 LICENSE、SECURITY 或稳定版兼容支持政策。
Problem or Goal
建立一个可审计、可复现、不可从未通过门禁的提交发布的 stable-release pipeline,产出版本化镜像/二进制、依赖清单和回滚材料,并能从发布产物而非开发工作区部署。
Scope
- 定义 SemVer、RC、tag、支持分支和版本 manifest。
- 固定 CMake、compiler、Protobuf、ODB、Go generator 与第三方依赖版本,保证 clean build/codegen 无 diff。
- 在通过稳定版门禁后构建并发布九个服务的版本化镜像和必要二进制。
- 生成 checksums、SBOM、provenance、依赖/许可证清单和机器可读 release manifest。
- 生成符合仓库语言契约的发布说明。
- 提供从指定版本部署、升级、回滚和验证的 canonical runbook。
- 增加 workflow contract,禁止从非目标版本线、脏生成物或未通过门禁的 commit 发布。
Non-goals
- 不在本 Issue 修复各业务缺陷、Reliability 缺口或 HA 拓扑。
- 不执行生产部署或 merge;发布生产与高影响操作仍需人工批准。
- 不承诺尚未测量的 SLA 或长期支持周期。
- 不把 GitHub Actions cache/artifact 当作正式长期发布仓库。
Acceptance Criteria
Test-first Plan
先增加行为中立的 workflow/release contract,并运行:
cd tests && go test ./pkg/contracts -run TestStableReleaseContract -v -count=1
预期 RED 是没有 release workflow、version manifest、不可变 artifact、SBOM/provenance 和 gate dependency。最小 GREEN 先产出 dry-run RC artifact 与 manifest;随后执行 clean build 两次、codegen diff、镜像启动 BVT、升级/回滚演练和安全扫描。该 Issue 的首个 RED 是发布契约缺失,不以编译成功替代运行时门禁。
Risk and Security
发布 token、registry credential 和 signing key 只能通过受控 GitHub environment/secret 使用,最小权限且不得提供给不受信 PR。供应链步骤必须固定 action digest、保留 provenance 并扫描高危依赖。正式 tag、签名、生产发布和不可逆迁移需要人工批准;回滚不能绕过数据兼容性检查。
Architecture Impact
No。该 Issue 建立构建、打包与发布边界,不改变九个服务、存储和消息拓扑。
Core-flow Impact
No。业务协议、认证、持久化、顺序、幂等、Push 和 ACK 行为不变;只验证并交付既有实现。
Required Skill Updates
.agents/skills/chatnow-orienting/references/technology-stack.md
.agents/skills/chatnow-orienting/references/repository-map.md
.agents/skills/chatnow-verifying-changes/SKILL.md
.agents/skills/chatnow-submitting-pull-requests/SKILL.md
docs/operations/release-management.md(若确认没有现有 canonical release 文档,则在同一 PR 创建)
Target Version
3.0-dev。该开发线将产生首个 3.0 stable release;证据复核于提交
a75fc8721b99e5c0b4421d0c58b5618bbe71ff31。Evidence
.github/workflows/只有 CI 与 agent-policy workflow,没有 tag/release workflow。.github/workflows/ci.yml只上传短期compose-service-artifacts,不发布版本化服务镜像、二进制或 release manifest。build/<service>_server与depends/,没有面向发布用户的统一构建入口。protoc-gen-go@v1.36.11与已跟踪生成文件头记录的 v1.34.2 不一致,make -C tests proto会重写已跟踪输出,表明 code generation 尚不可复现。cmake_minimum_required(VERSION 3.1.3);CMake 4.3 默认拒绝该 policy compatibility。Problem or Goal
建立一个可审计、可复现、不可从未通过门禁的提交发布的 stable-release pipeline,产出版本化镜像/二进制、依赖清单和回滚材料,并能从发布产物而非开发工作区部署。
Scope
Non-goals
Acceptance Criteria
make -C tests proto在固定工具链下不修改已跟踪生成文件。3.0-dev选定提交/RC 或其批准的稳定分支,并依赖全部必需门禁成功。build/或depends/。Test-first Plan
先增加行为中立的 workflow/release contract,并运行:
cd tests && go test ./pkg/contracts -run TestStableReleaseContract -v -count=1预期 RED 是没有 release workflow、version manifest、不可变 artifact、SBOM/provenance 和 gate dependency。最小 GREEN 先产出 dry-run RC artifact 与 manifest;随后执行 clean build 两次、codegen diff、镜像启动 BVT、升级/回滚演练和安全扫描。该 Issue 的首个 RED 是发布契约缺失,不以编译成功替代运行时门禁。
Risk and Security
发布 token、registry credential 和 signing key 只能通过受控 GitHub environment/secret 使用,最小权限且不得提供给不受信 PR。供应链步骤必须固定 action digest、保留 provenance 并扫描高危依赖。正式 tag、签名、生产发布和不可逆迁移需要人工批准;回滚不能绕过数据兼容性检查。
Architecture Impact
No。该 Issue 建立构建、打包与发布边界,不改变九个服务、存储和消息拓扑。
Core-flow Impact
No。业务协议、认证、持久化、顺序、幂等、Push 和 ACK 行为不变;只验证并交付既有实现。
Required Skill Updates
.agents/skills/chatnow-orienting/references/technology-stack.md.agents/skills/chatnow-orienting/references/repository-map.md.agents/skills/chatnow-verifying-changes/SKILL.md.agents/skills/chatnow-submitting-pull-requests/SKILL.mddocs/operations/release-management.md(若确认没有现有 canonical release 文档,则在同一 PR 创建)