Files
go-omni/reports/programAcceptance.md

41 lines
3.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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:
- [通用工程远程报告](programRemote.json):30 项检查通过,耗时 26.45 秒。测试直接从下载的框架模块运行,并通过远程 CLI 生成实际消费者;包含示例的一次性运行。
- [既有生成项目远程报告](programManagedRemote.json):98 项检查、10 组消费者通过,耗时 111.07 秒。覆盖原有配置、HTTP 关闭、上传策略、国际化及 TypeScript 消费者;TypeScript 5.6.3 通过 npm exec 提供,未跳过该检查。
- 两组报告的远程模块 checksum 一致:`h1:nD9Xtn7RhHy81n+qp96rlcJlxpDc276Per+dt1low1g=`。
- 发布标签固定在代码提交 `0b6c0043b6c3b58648645aeee03bf80801e6aa3f`;标签对象 `50caea1fc81a52080c0f0832d8c4a63cac786859`。代码与标签已推送,验收文档随后独立提交,不移动发布标签。