From dd6013c48c0ab49cd49e064e636f735a7443d643 Mon Sep 17 00:00:00 2001 From: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com> Date: Thu, 30 Jul 2026 17:32:37 +0800 Subject: [PATCH] docs(governance): record issue 611 R3 verification Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com> --- docs/verification/issue-611.md | 41 ++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/docs/verification/issue-611.md b/docs/verification/issue-611.md index 8f054f07..417cff79 100644 --- a/docs/verification/issue-611.md +++ b/docs/verification/issue-611.md @@ -4,8 +4,9 @@ - 状态:本地验证及 `big-main` 远端验证均已通过 - 基线:`origin/main@6817d98007c7890c1a8ecb3e822272287bb37a05` - 工作分支:`fix/issue-611-child-fks` -- 修复提交:`e7a23b434bc7be58df6e541c821853fb8a5fab24` -- 已测试的 `big-main` 合并提交:`43f6d1671949d279ab05720fcddd20a25f0c2607` +- 修复提交:`41704e151e0152cdc7688e5b5baec1df75b02dd7` +- 提交身份:`XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>` +- 已测试的 `big-main` 合并提交:`4bf7d52118a43735240a9be6241d04531bd69cbc` ## 一、判断结论 @@ -76,13 +77,18 @@ DELETE /api/web/skills/global/issue-611-repro/versions/1.0.0 | 2026-07-30 15:02–16:06 | 实现修复并执行单元、集成、PostgreSQL、前端和 staging 验证 | 功能、数据完整性和并发场景通过 | | 2026-07-30 16:06 | 执行后端回归 | 排除已知污染类后 659 项通过、1 项跳过;被排除类单独 9/9 通过 | | 2026-07-30 16:08 | 删除本地测试容器、网络、镜像、数据和 staging 临时覆盖 | 清理完成 | -| 2026-07-30 16:16 | 提交并推送工作分支 | 修复提交 `e7a23b43` | +| 2026-07-30 16:16 | 提交并推送工作分支 | 原修复提交 `e7a23b43` | | 2026-07-30 16:17 | 合入最新 `origin/big-main` 并普通推送 | 合并提交 `43f6d1671949d279ab05720fcddd20a25f0c2607` | | 2026-07-30 16:18 | 从该 `big-main` worktree 执行 Java 21 干净构建 | 8 个 Maven 模块构建成功 | | 2026-07-30 16:18–16:38 | 构建首张测试镜像并执行远端矩阵 | 功能矩阵 56/56 通过,但复核时发现 OCI revision 的完整 SHA 后缀记录错误,因此不作为最终证据 | | 2026-07-30 16:44–16:49 | 使用真实 full SHA 重建 R2 镜像、传输到远端、创建全新隔离栈并重新执行全部场景 | 最终 56/56 通过 | | 2026-07-30 16:49 | 固化 R2 镜像、脚本、报告哈希及健康状态 | 镜像 revision 与实际 `big-main` commit 完全一致 | | 2026-07-30 16:50 | 删除 R2 测试容器、网络、卷、镜像、脚本和日志 | 28081 端口关闭;原 8080 服务仍为 `UP` | +| 2026-07-30 17:18 | 将两个 PR 提交重写为 GitHub 账号 `XiaoSeS`,补充 `Signed-off-by` 并使用带精确旧 SHA 的 `force-with-lease` 推送 | 文件树与重写前完全一致;新修复提交为 `41704e15`,DCO 通过 | +| 2026-07-30 17:19 | 将重写后的 PR 提交重新纳入 `big-main` 并普通推送 | 新合并提交为 `4bf7d52118a43735240a9be6241d04531bd69cbc`,相对前一 `big-main` 文件树无变化 | +| 2026-07-30 17:20 | 从新 `big-main` 提交执行 Java 21 干净构建并构建 R3 测试镜像 | 8 个 Maven 模块构建成功;OCI revision 与完整提交 SHA 一致 | +| 2026-07-30 17:23–17:28 | 将 R3 镜像传输到远端测试机,创建全新隔离栈并执行原 56 项矩阵 | PostgreSQL 16.14 上 56/56 通过 | +| 2026-07-30 17:29 | 固化 R3 证据哈希并删除远端测试资源 | 28081 端口关闭;原 8080 服务及 `v0.2.15` 容器保持健康 | 远端传输期间,SFTP 曾停在 0 字节。确认测试尚未开始、数据库中没有测试数据后,仅终止了持有 测试脚本文件的残留 `sftp-server`/`dd` 进程,改用 SSH 命令通道传输,并在执行前校验 @@ -139,20 +145,37 @@ SHA-256。没有停止或修改远端既有 SkillHub 服务。 - Docker Compose:`v5.1.1` - PostgreSQL:`16.14` - Redis:`redis:7-alpine` -- 已测试提交:`43f6d1671949d279ab05720fcddd20a25f0c2607` -- 最终镜像:`skillhub-server:issue-611-big-main-43f6d167-r2` +- 已测试提交:`4bf7d52118a43735240a9be6241d04531bd69cbc` +- 最终镜像:`skillhub-server:issue-611-big-main-4bf7d521-r3` - 最终镜像 ID: - `sha256:a71fa5d0aad0e0d6ecc65e33c29ec6b844d7fecdeec0c83e9e82e27b388f3899` -- OCI revision:`43f6d1671949d279ab05720fcddd20a25f0c2607` + `sha256:3453a2b21b05d157c7955a2e00c0d90eb771a95c82ddb5490f008a008138de2e` +- OCI revision:`4bf7d52118a43735240a9be6241d04531bd69cbc` - 构建 JAR SHA-256: - `165f9d5a522ef4ec8911c1d7896306895ecad4cba3ed2ef633a8883982ff5df7` + `4b4a374506cd6ddfd611d10b738e11d08fb94d4238e836781ffd757c03e86e39` - 测试脚本 SHA-256: `455cc712375aa299d3d04bce0c61eafaaf09355faefa303b67ca72e5036fcd76` - 最终原始测试输出 SHA-256: - `801f3301acc1a7f12e0a57301791705c9c5a320eae45931b9fcf71c28a617153` + `10c2b26a98d3b52cee6175d03897788ba2bc1f9b3598054ef66cecea79d9e897` - 隔离 API:`127.0.0.1:28081` 测试部署使用独立容器名、网络、PostgreSQL 数据卷、对象存储卷和端口,不替换远端既有运行环境。 +R3 是修正提交身份和 DCO 后的最终验证制品;其完整测试矩阵与 R2 相同,测试脚本哈希也保持一致。 + +### 并发测试隔离说明 + +本次 R3 使用 `skillhub-611-r3-4bf7d521-*` 作为资源前缀,并在创建资源前检查容器名、网络、 +数据卷和 `127.0.0.1:28081` 是否已占用。发生冲突时测试会退出,不会接管或删除已有资源。 +测试前后均确认远端既有 `ghcr.io/iflytek/skillhub-server:v0.2.15` 容器在 8080 端口保持 +`running`、`healthy` 和 `{"status":"UP"}`。 + +固定的 28081 端口只能避免破坏,不能支持多个 Issue 同时运行。后续远端验证需要采用以下并发规则: + +- 每次测试生成包含 Issue、精确提交和随机后缀的唯一 run ID。 +- 由 Docker 自动分配仅绑定回环地址的临时端口,启动后读取实际端口传给测试脚本。 +- 容器、网络、数据卷、镜像和临时文件全部携带 run ID;清理只按该 run 精确执行。 +- 禁止在共享测试机执行 `docker system prune`、宽泛名称匹配或未指定项目名的全局清理。 +- `big-main` 更新必须先 fetch 并使用普通 push;远端头变化时重新合并并生成新的待测 SHA。 +- 测试报告必须记录精确的 `big-main` SHA、镜像 ID、OCI revision、动态端口和测试输出哈希。 ### 测试矩阵