# v0.28 通用工程验收 本轮新增 `project new/generate/check`,默认生成普通 Go 程序,不包含 API、网络监听、外部服务初始化或业务任务。项目维护配置、svc 和 Run;模板维护入口、加载与生命周期装配。 ## 发布前回归 2026-09-29,macOS arm64,Go 1.27.1 / Go 1.22.12: - `GO_OMNI_SCAFFOLD_INTEGRATION=1 go test -race -count=1 ./...`:56 个测试包通过,含现有 API 生成消费者与新通用工程消费者。 - `GOTOOLCHAIN=go1.22.12 GO_OMNI_SCAFFOLD_INTEGRATION=1 go test -count=1 ./...`:56 个测试包通过。 - `go vet ./...`、`go build ./...`、`git diff --check`:通过。 - 最终补充真实进程异常退出断言后,新生成器再次通过 race 集成回归与 Go 1.22 集成回归。 - `examples/program` 在临时副本中使用显式本地替换,完成 tidy、race、配置检查、实际一次性运行、生成漂移检查;仓库示例不含本地 replace。 ## 验证边界 生成保护覆盖:手写文件逐字节保留、修改生成文件报冲突、缺失生成文件补回、缺失手写文件显式报错、只读 check/预览、模板升级漂移、工程与模块身份、最低依赖版本、路径/符号链接和锁保护、写入冲突后的事务回滚。 实际生成的消费者保留全部入口/加载/装配代码,只修改项目所有文件,覆盖: - 一次性正常完成,主流程 defer 结束后反序关闭资源。 - Init 返回错误或 panic,Run 返回错误、panic、Goexit,以及组件报告致命故障。 - 初始化到一半失败后停止并等待已经启动的工作。 - 停止接收后等待处理与确认完成,期间 WorkContext 仍可用。 - 排空超时后请求取消,宽限期内完成则可清理;仍未结束则保留共享资源和日志。 - 主运行入口、后台工作、失败初始化后的工作不响应取消,均不会提前关闭资源。 - 显式环境引用、固定值不被隐式覆盖、非法配置阻止初始化,check-config 不打开日志文件。 - 真实构建的进程:SIGINT/SIGTERM 正常退出码 0;Run 错误/panic、主流程不响应停止导致超时,退出码 1。 - 默认进程通过本机 lsof 检查,无 TCP/UDP 端口;生成目录和源码无 API/Handler/Swagger/数据库/队列启动。 文件替换只对单文件原子,普通失败会回滚,整个工程不具备崩溃事务性。未登记的 goroutine、不遵守完成契约的项目组件、SIGKILL 和进程崩溃无法由模板保证收尾。新模板不改变既有调度器或队列的重试/投递语义。 ## 远程发布验收 发布后运行 `scripts/verifyProgramRelease.py` 与原有 `scripts/verifyManagedRelease.py`,使用空模块缓存安装固定远程 CLI,禁止本地 replace。结果在完成后补入本文件及 JSON 报告。