Files
go-omni/reports/programAcceptance.md

3.5 KiB
Raw Blame History

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 和进程崩溃无法由模板保证收尾。新模板不改变既有调度器或队列的重试/投递语义。

远程发布验收

2026-09-30,两个独立空模块缓存安装远程 v0.28.0-preview,均未使用本地 replace:

  • 通用工程远程报告:30 项检查通过,耗时 26.45 秒。测试直接从下载的框架模块运行,并通过远程 CLI 生成实际消费者;包含示例的一次性运行。
  • 既有生成项目远程报告:98 项检查、10 组消费者通过,耗时 111.07 秒。覆盖原有配置、HTTP 关闭、上传策略、国际化及 TypeScript 消费者;TypeScript 5.6.3 通过 npm exec 提供,未跳过该检查。
  • 两组报告的远程模块 checksum 一致:h1:nD9Xtn7RhHy81n+qp96rlcJlxpDc276Per+dt1low1g=。
  • 发布标签固定在代码提交 0b6c0043b6c3b58648645aeee03bf80801e6aa3f;标签对象 50caea1fc81a52080c0f0832d8c4a63cac786859。代码与标签已推送,验收文档随后独立提交,不移动发布标签。