docs(GOV-011): 完成系列版本验证与审查
This commit is contained in:
@@ -29,7 +29,7 @@
|
||||
<!-- gitnexus:start -->
|
||||
# GitNexus — Code Intelligence
|
||||
|
||||
This project is indexed by GitNexus as **a-share-analysis** (2004 symbols, 2681 relationships, 50 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely.
|
||||
This project is indexed by GitNexus as **a-share-analysis** (2015 symbols, 2692 relationships, 50 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely.
|
||||
|
||||
> If any GitNexus tool warns the index is stale, run `npx gitnexus analyze` in terminal first.
|
||||
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
# GOV-011 开发总结
|
||||
|
||||
- 功能编号:GOV-011
|
||||
- 日期:2026-08-17
|
||||
- 当前状态:已完成实现与验证,等待版本发布封存
|
||||
|
||||
## 原始开发需求
|
||||
|
||||
用户要求 Node.js 和 MySQL 不绑定具体小版本:Node.js 使用 22.x,MySQL 使用完整 5.7.x,不设置最低补丁版本。`utf8mb4`、`utf8mb4_general_ci` 和东八区时区等既有严格约束继续保留;历史证据中的实际版本不得改写。
|
||||
|
||||
## 需求与范围变化
|
||||
|
||||
- Node 生产判断原本已经按主版本 22 校验,本次只补充系列内/外特征测试,没有改写生产逻辑。
|
||||
- MySQL 服务端从精确 5.7.42 调整为合法 5.7.x,客户端和 mysqldump 原有 5.7.x 约束保持不变。
|
||||
- 健康详情从硬编码 patch 改为服务端元数据中的三段版本;`-log` 等附加文本不回显。
|
||||
- 现行架构、开发规范、本地/Ubuntu 部署手册统一为系列口径;v0.0.8 CHANGELOG、历史 QA、Schema manifest 和已发布档案继续保存真实 5.7.42、22.11.0、22.22.0。
|
||||
- 用户确认当前开发库无业务结构并授权本次跳过 v0.0.8 Schema 备份。该决定只形成 GOV-011 一次性例外,不增加通用跳过开关。
|
||||
|
||||
## 实际完成需求
|
||||
|
||||
| 需求 | 状态 | 实际结果 |
|
||||
|---|---|---|
|
||||
| Node.js 22.x 系列约束 | 已完成 | 覆盖 22.0.0、常规 22.x、带后缀 22.x 与 21/23 边界;生产判断保持 `major === 22`。 |
|
||||
| MySQL 服务端完整 5.7.x | 已完成 | Schema 元数据接受 5.7.0、5.7.41、5.7.42-log,拒绝 5.6、8.0 和无效格式。 |
|
||||
| 健康检查实际版本 | 已完成 | `5.7.41-log` 返回 `MySQL 5.7.41 / ...`;DTO 与查询结构不变。 |
|
||||
| 字符规则和时区保持严格 | 已完成 | `utf8mb4`、`utf8mb4_general_ci`、库名和 `+08:00` 失败用例全部保留并扩充。 |
|
||||
| 当前规范统一系列口径 | 已完成 | 架构、开发规范、本地开发、Ubuntu 生产和说明性代码注释已更新。 |
|
||||
| 历史证据保持原样 | 已完成 | 未批量改写历史功能档案、QA、Schema 基线或 v0.0.8 发布事实。 |
|
||||
|
||||
## 修复缺陷
|
||||
|
||||
- 修复 Schema 服务端校验把开发机实际 5.7.42 当作唯一合法 patch 的约束错误。
|
||||
- 修复 API 健康检查拒绝其他合法 5.7.x 且成功详情硬编码 5.7.42 的问题。
|
||||
- 修复当前架构、开发规范和部署手册将补丁版本误写成跨环境强制基线的问题。
|
||||
- 完整 Schema 回归发现一处测试仍断言旧错误文案,已同步为 `5.7.x` 并重新验证。
|
||||
|
||||
## 未完成与延期项
|
||||
|
||||
- 本功能没有数据库结构、迁移或数据变更,因此不存在数据回滚或真实 Schema 导出结果。
|
||||
- v0.0.8 Schema 基线没有生成。`verify:release`、`schema:verify` 和 `governance:finish` 会在该缺失条件失败;这是用户已接受的追溯风险,不代表其他测试通过,也不会延伸到后续功能。
|
||||
- 不建立 MySQL 各 patch 的自动兼容矩阵;未来遇到特定补丁缺陷时通过独立功能或 ADR 决定是否提高最低版本。
|
||||
|
||||
## 关键提交
|
||||
|
||||
| 提交 | 中文摘要 | 推送状态 |
|
||||
|---|---|---|
|
||||
| `426870b` | `docs(GOV-011): 制定运行时系列版本实施计划` | 已推送 Gitea |
|
||||
| `c8277ef` | `test(GOV-011): 补充 Node 22 系列边界验证` | 已推送 Gitea |
|
||||
| `54499f0` | `fix(GOV-011): 放宽 MySQL 服务端为完整 5.7 系列` | 已推送 Gitea |
|
||||
| `dc8da80` | `fix(GOV-011): 支持 MySQL 5.7 系列健康检查` | 已推送 Gitea |
|
||||
| `cce77aa` | `docs(GOV-011): 统一运行时系列版本口径` | 已推送 Gitea |
|
||||
|
||||
## 验证证据
|
||||
|
||||
- TDD:Schema 的 5.7.0/5.7.41 成功用例先被旧精确判断拒绝;健康检查的 5.7.41-log 用例先被旧实现拒绝,随后最小修改转绿。
|
||||
- 排除已授权严格发布基线用例后,Schema 28/28;runtime 3/3、governance 10/10、MySQL 2/2、环境 10/10、契约 3/3、边界 16/16、部署 6/6、Web 11/11、Server 30/30、API 预检 2/2。
|
||||
- lint、格式、类型检查、OpenAPI 契约、Web/Server 构建、Playwright 4/4 和源码发布验证通过。
|
||||
- GitNexus 相对 v0.0.8 检测为 23 个文件、70 个符号、11 条受影响流程、HIGH;运行流仅落在既定 Schema 与健康检查边界,详见 `gitnexus/`。
|
||||
- 依赖审计为 0 已知漏洞,Redis 返回 `PONG`;两张视觉截图无溢出或控制台错误。
|
||||
@@ -0,0 +1,17 @@
|
||||
# GitNexus 开发后基线
|
||||
|
||||
- 索引提交:`cce77aa`
|
||||
- 索引时间:2026-08-17 17:43(Asia/Shanghai)
|
||||
- 状态:up-to-date
|
||||
- 节点:2015
|
||||
- 关系:2692
|
||||
- 集群:49
|
||||
- 执行流:50
|
||||
|
||||
## 工作区状态
|
||||
|
||||
实现提交均已推送 `origin/main`。索引刷新后仅有 GitNexus 自动更新的 `AGENTS.md` 计数、GOV-011 最终证据和视觉截图等待后续文档提交。
|
||||
|
||||
## 运行边界
|
||||
|
||||
开发后新增或变化的运行流程仍只有 Schema 治理和 API 健康装配。Web 页面、Scheduler、Worker、Redis 与 RocketMQ 没有新增执行流。
|
||||
@@ -0,0 +1,29 @@
|
||||
# GitNexus 前后对比
|
||||
|
||||
- before:1894 个符号、2569 条关系、50 条流程(GOV-011 启动记录)
|
||||
- after:2015 个节点、2692 条关系、50 条流程(`cce77aa`)
|
||||
- 相对 v0.0.8 detect-changes:23 个文件、70 个符号、11 条受影响流程、HIGH
|
||||
|
||||
## 差异解释
|
||||
|
||||
节点与关系增长主要来自 GOV-011 新增功能档案、实施计划、测试名称和当前规范标题。执行流总数仍为 50,没有出现新的生产流程。HIGH 风险由 Schema 中心函数的多条既有调用链贡献,和开发前 CRITICAL 评估方向一致。
|
||||
|
||||
## 跨模块核对
|
||||
|
||||
| 模块 | 结论 |
|
||||
|---|---|
|
||||
| HTTP/OpenAPI | DTO 和字段不变;健康 `detail` 文本显示实际 patch。 |
|
||||
| Web API | 请求函数、adapter 和页面均未修改。 |
|
||||
| 消息 | RocketMQ 契约、Topic、Group 和 Adapter 未修改。 |
|
||||
| 数据库 | 不改 Schema、迁移、数据和查询范围;只放宽版本判断。 |
|
||||
| Redis | 无代码和配置变化。 |
|
||||
| API | MySQL 健康版本判断和详情变化,完整 Server 回归通过。 |
|
||||
| Scheduler | 无行为变化,构建和进程测试通过。 |
|
||||
| Worker | 无行为变化,构建和进程测试通过。 |
|
||||
| 部署 | 拓扑不变,只把前置 MySQL 文案改为 5.7.x。 |
|
||||
| 测试 | 新增系列边界、实际版本详情和当前文档契约。 |
|
||||
| 文档 | 架构、规范、部署和功能档案同步更新;历史证据保留。 |
|
||||
|
||||
## 风险结论
|
||||
|
||||
没有发现计划外模块影响。残余风险是不同 MySQL 5.7 patch 自身可能存在缺陷,以及 v0.0.8 缺少可验证 Schema 基线;前者由真实迁移/查询验证控制,后者由用户接受的一次性例外记录控制。
|
||||
@@ -0,0 +1,34 @@
|
||||
# GitNexus 实际变更检测
|
||||
|
||||
- 比较基线:`v0.0.8` / `9e85809`
|
||||
- 实现提交:`cce77aa`
|
||||
- 结果:23 个文件、70 个符号、11 条受影响流程
|
||||
- 风险:HIGH
|
||||
|
||||
## 变更符号
|
||||
|
||||
核心运行时符号为:
|
||||
|
||||
- `assertMysql57Metadata`
|
||||
- `runBaselineGeneration`
|
||||
- `MysqlHealthClient`
|
||||
- `MysqlHealthClient.check`
|
||||
- `createMysqlHealthClient`
|
||||
- `assertSupportedRuntime` 只新增测试,没有生产实现变化
|
||||
|
||||
其余符号主要来自架构、规范、部署和 GOV-011 功能档案的 Markdown 标题,以及治理测试中的局部变量。
|
||||
|
||||
## 受影响执行流
|
||||
|
||||
- `RunBaselineGeneration → RequireExactValue`
|
||||
- `AssertCurrentReleasedBaselinePublished → RequireExactValue`
|
||||
- `BuildCapturedArtifacts → RequireExactValue`
|
||||
- `AssertCurrentReleasedBaseline → RequireExactValue`
|
||||
- `RunCommandLine` 到 `RequireExactValue`、`IsEnabled`、`ParseManifest`、`AssertExactFileSet`、`BuildManifest` 和 `ParseEnvironmentFile`
|
||||
- `UseFactory → MysqlHealthClient`
|
||||
|
||||
HIGH 来自 Schema 中心入口映射到多条治理流程,不是新增网络、数据库写入或消息链路。排除用户已授权的 v0.0.8 基线缺失用例后,Schema 28 项全部通过;API 健康、Server 测试、类型和构建也全部通过。
|
||||
|
||||
## 范围结论
|
||||
|
||||
实际变化与开发前影响计划一致。没有新的 HTTP 字段、OpenAPI DTO、Web API、Redis、RocketMQ、Scheduler、Worker、数据库 Schema 或部署拓扑变化。
|
||||
@@ -399,7 +399,7 @@ pnpm verify:release
|
||||
git diff --check
|
||||
```
|
||||
|
||||
Expected: 全部 PASS;`pnpm check:contracts` 执行后 OpenAPI 和 Web 生成类型没有非预期差异。
|
||||
Expected: 除 `pnpm verify:release` 因已授权的 v0.0.8 Schema 基线缺失而失败外,其余命令 PASS;`pnpm check:contracts` 执行后 OpenAPI 和 Web 生成类型没有非预期差异。必须继续手工执行 `verify:release` 在 Schema 失败点之后的构建、E2E 和源码发布门禁。
|
||||
|
||||
- [ ] **Step 3: 完成视觉验证**
|
||||
|
||||
@@ -422,7 +422,7 @@ npx gitnexus status
|
||||
|
||||
```bash
|
||||
pnpm schema:verify
|
||||
pnpm governance:finish -- GOV-011 runtime-version-series
|
||||
pnpm governance:finish GOV-011 runtime-version-series
|
||||
```
|
||||
|
||||
Expected: 两者均因 `database/schema-baselines/v0.0.8` 缺失而失败。把完整错误摘要和退出码写入 `qa/test-results.md`,并引用 `schema-baseline-waiver.md`;不得把预期失败写成通过,也不得生成伪造基线。
|
||||
@@ -478,13 +478,13 @@ Expected: 推送成功,远程包含完整功能档案;提交前 GitNexus det
|
||||
|
||||
Run: `pnpm verify:release`
|
||||
|
||||
Expected: PASS。
|
||||
Expected: 因已授权的一次性例外,在 v0.0.8 Schema 严格发布基线检查处失败;失败点之前的门禁和手工补跑的后续构建、E2E、源码发布验证必须全部通过,且真实结果写入 QA。
|
||||
|
||||
Run: `git diff --check && git status --short && git log -1 --oneline`
|
||||
|
||||
Expected: 只有预期发布文档变更,格式无错误;提交前再次执行 GitNexus detect-changes。
|
||||
|
||||
按 Task 5 重跑 `pnpm schema:verify` 和 `pnpm governance:finish -- GOV-011 runtime-version-series`,Expected 仍是已记录的一次性例外失败;确认没有新增或变化的失败原因。
|
||||
按 Task 5 重跑 `pnpm schema:verify` 和 `pnpm governance:finish GOV-011 runtime-version-series`,Expected 仍是已记录的一次性例外失败;确认没有新增或变化的失败原因。
|
||||
|
||||
- [ ] **Step 3: 创建并推送发布封存提交**
|
||||
|
||||
|
||||
@@ -1,14 +1,21 @@
|
||||
id: GOV-011
|
||||
name: Node 与 MySQL 系列版本约束
|
||||
slug: runtime-version-series
|
||||
status: planned
|
||||
status: reviewed
|
||||
owner: project
|
||||
created_at: 2026-08-17
|
||||
prd: prd.md
|
||||
requirements: requirements.md
|
||||
design: design.md
|
||||
implementation_plan: implementation-plan.md
|
||||
test_plan: test-plan.md
|
||||
development_summary: development-summary.md
|
||||
schema_baseline_waiver: schema-baseline-waiver.md
|
||||
gitnexus_before: gitnexus/before.md
|
||||
gitnexus_impact: gitnexus/impact-plan.md
|
||||
gitnexus_detected_changes: gitnexus/detected-changes.md
|
||||
gitnexus_after: gitnexus/after.md
|
||||
gitnexus_comparison: gitnexus/comparison.md
|
||||
code_review: review/code-review.md
|
||||
standards_review: review/standards-review.md
|
||||
release: unreleased
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
# GOV-011 测试与质量证据
|
||||
|
||||
- 验证提交:`cce77aa`
|
||||
- 验证日期:2026-08-17
|
||||
- 运行时:Node.js 22.11.0、pnpm 10.25.0
|
||||
|
||||
## RED-GREEN 证据
|
||||
|
||||
| 行为 | RED | GREEN |
|
||||
|---|---|---|
|
||||
| Schema 接受完整 5.7.x | `5.7.0` 被旧实现以“必须为 5.7.42”拒绝 | 系列内/外定向测试 2/2 通过 |
|
||||
| 健康检查接受 5.7.41-log | 旧实现拒绝并输出 5.7.42 文案 | 健康客户端 5/5 通过,详情为 `MySQL 5.7.41 / ...` |
|
||||
| 当前文档采用系列口径 | 架构/规范 0/2,部署文档测试 9/10 | MySQL 2/2、环境 10/10、部署 6/6 |
|
||||
|
||||
## 自动化验证
|
||||
|
||||
| 命令或测试组 | 结果 | 关键证据 |
|
||||
|---|---|---|
|
||||
| `pnpm check:runtime` | passed | Node.js 22.11.0、pnpm 10.25.0 |
|
||||
| `pnpm check:contracts` | passed | OpenAPI 与 Web 生成类型无漂移,项目边界通过 |
|
||||
| `pnpm lint` | passed | Web/Server ESLint 无错误 |
|
||||
| `pnpm format:check` | passed | 全仓 Prettier 通过 |
|
||||
| `pnpm typecheck` | passed | Web、Vite 和 Server TypeScript 通过 |
|
||||
| runtime | 3/3 | 22.x 系列与相邻主版本 |
|
||||
| governance | 10/10 | 功能档案和 Review 门禁 |
|
||||
| MySQL 规范 | 2/2 | 当前架构/规范使用 5.7.x |
|
||||
| 环境 | 10/10 | 部署手册使用 5.7.x,其他环境边界保持 |
|
||||
| Schema(跳过严格发布基线) | 28/28 | 生成、验证、历史 manifest 和字符规则回归 |
|
||||
| contracts | 3/3 | 生成契约跟踪与漂移阻断 |
|
||||
| boundaries | 16/16 | 前后端与 HTTP 边界 |
|
||||
| deployment | 6/6 | 唯一 Ubuntu 源码发布边界 |
|
||||
| Web | 11/11 | 请求、adapter 与外壳 |
|
||||
| Server | 30/30 | API、配置、基础设施和进程 |
|
||||
| API 预检 | 2/2 | Redis 可达/不可达分支 |
|
||||
| `pnpm build` | passed | Web、API、Scheduler、Worker 构建成功 |
|
||||
| `pnpm verify:e2e` | 4/4 | Chromium 桌面/移动页面和健康 API |
|
||||
| `pnpm verify:source` | passed | 构建产物、systemd、Nginx 一致 |
|
||||
|
||||
## 一次性例外失败证据
|
||||
|
||||
`pnpm verify:release` 退出码非 0。它依次通过 runtime、契约、lint、格式、类型以及 Schema 之前的测试,随后在 Schema 第 28 个严格发布基线用例失败;实际错误为缺少 `database/schema-baselines/v0.0.8`。Schema 总计 29 项,其中 28 项通过、1 项为该已知失败。
|
||||
|
||||
`pnpm schema:verify` 在直接目录校验处失败;`pnpm governance:finish GOV-011 runtime-version-series` 在其前置 `test:schema-baseline` 的严格发布基线用例处失败。两者根因都是同一个 v0.0.8 目录缺失条件。原因、用户授权和禁止伪造边界见 `schema-baseline-waiver.md`;其余等价门禁已逐项执行并保存上表证据。
|
||||
|
||||
## 安全证据
|
||||
|
||||
- `pnpm audit --prod --registry=https://registry.npmjs.org/`:`No known vulnerabilities found`。
|
||||
- `redis-cli -h 127.0.0.1 -p 6379 ping`:`PONG`,只验证本机开发 Redis。
|
||||
- 构建产物扫描只命中 `MYSQL_PASSWORD`、`AI_API_KEY` 等配置键和必填错误文案,没有真实值、连接串或 Authorization 头。
|
||||
- 本次没有新增依赖、SQL、命令执行、数据库写入、生产连接或外部网络请求。
|
||||
- 健康详情只返回三段版本、库名和时区,不返回原始后缀、地址、账号或密码。
|
||||
|
||||
## 性能证据
|
||||
|
||||
- Web JS:163908 字节;CSS:805 字节,与 v0.0.8 记录一致。
|
||||
- 健康检查仍为一次元数据查询,连接池上限 2;无重试、扫描、缓存或消息增量。
|
||||
- Schema 与 runtime 判断只在启动/治理阶段执行常数时间正则匹配,不进入行情请求热路径。
|
||||
|
||||
## GitNexus 证据
|
||||
|
||||
- after:2015 节点、2692 关系、49 集群、50 流程,索引 `cce77aa` 为 up-to-date。
|
||||
- compare:23 文件、70 符号、11 流程、HIGH;运行影响仅在既有 Schema 与 API 健康路径。
|
||||
- `AGENTS.md` 的 GitNexus 计数由 `analyze` 自动从 2004/2681 更新为 2015/2692。
|
||||
@@ -0,0 +1,21 @@
|
||||
# GOV-011 视觉回归记录
|
||||
|
||||
- 页面:应用工程基础外壳
|
||||
- 变更类型:后端版本判断、测试、注释和文档;无页面样式或交互修改
|
||||
- 结论:无可观察视觉回归
|
||||
|
||||
## 桌面
|
||||
|
||||
- Chromium 视口:1440×900
|
||||
- 截图:[app-shell-desktop-1440x900-cce77aa.png](/Users/citrons/Documents/Codex/2026-08-12/wo-x/a-share-analysis/docs/features/GOV-011-runtime-version-series/screenshots/iterations/app-shell-desktop-1440x900-cce77aa.png)
|
||||
- 检查:`main` 可见,标题正常,无横向溢出,控制台 warning/error 为空。
|
||||
|
||||
## 移动
|
||||
|
||||
- Chromium 视口:390×844
|
||||
- 截图:[app-shell-mobile-390x844-cce77aa.png](/Users/citrons/Documents/Codex/2026-08-12/wo-x/a-share-analysis/docs/features/GOV-011-runtime-version-series/screenshots/iterations/app-shell-mobile-390x844-cce77aa.png)
|
||||
- 检查:标题与主内容正常换行和留白,无横向溢出、遮挡或裁切,控制台 warning/error 为空。
|
||||
|
||||
## 自动化证据
|
||||
|
||||
`pnpm verify:e2e` 在 desktop-chromium 与 mobile-chromium 共执行 4 项,全部通过;覆盖页面可见性、横向溢出、运行时错误和同源 `/api/v1/health` 契约。截图生成后测试 API 与 Vite 服务均通过 SIGINT 关闭,端口 3000/5173 无遗留监听。
|
||||
@@ -0,0 +1,21 @@
|
||||
# GOV-011 发布说明
|
||||
|
||||
- 目标版本:v0.0.9
|
||||
- 状态:等待发布封存
|
||||
|
||||
## 调整
|
||||
|
||||
- Node.js 运行时约束明确为完整 22.x,不绑定 minor 或 patch。
|
||||
- MySQL 客户端、mysqldump、服务端和 API 健康检查统一接受完整 5.7.x,不设置最低 patch。
|
||||
- MySQL 健康详情显示服务端实际三段版本,不再硬编码 5.7.42。
|
||||
- 系统架构、代码开发规范、本地开发和 Ubuntu 源码部署手册统一使用系列版本口径。
|
||||
|
||||
## 保持不变
|
||||
|
||||
- `utf8mb4`、`utf8mb4_general_ci`、`+08:00`、固定开发库和主机白名单继续严格校验。
|
||||
- HTTP/OpenAPI 响应结构、Web API、Redis、RocketMQ、Scheduler、Worker、数据库 Schema 和源码部署拓扑不变。
|
||||
- 历史 QA、Schema 清单、CHANGELOG 历史版本和已发布功能档案继续记录当时真实 patch。
|
||||
|
||||
## 已知例外
|
||||
|
||||
v0.0.8 没有开发库 Schema 基线。用户确认开发库为空并授权 GOV-011 一次性跳过;仓库没有伪造基线或增加通用绕过开关。该例外导致 `verify:release`、`schema:verify` 和 `governance:finish` 在同一基线存在性检查失败,其他门禁已逐项执行并留证。
|
||||
@@ -0,0 +1,46 @@
|
||||
# GOV-011 代码 Review
|
||||
|
||||
- reviewer_type:self
|
||||
- reviewer:当前实现代理结构化自审
|
||||
- 基线:`v0.0.8` / `9e85809`
|
||||
- 审查实现:`cce77aa`
|
||||
- 日期:2026-08-17
|
||||
|
||||
## 审查范围
|
||||
|
||||
审查 Node 特征测试、Schema 元数据校验、MySQL 健康客户端、治理测试、现行架构/规范/部署文档、GitNexus 影响和一次性 Schema 例外。重点检查版本格式、错误边界、历史清单兼容、健康信息泄漏和门禁真实性。
|
||||
|
||||
## 发现
|
||||
|
||||
### 已关闭问题
|
||||
|
||||
| 严重程度 | 位置 | 问题 | 处置 |
|
||||
|---|---|---|---|
|
||||
| Important | `tools/database/schema-baseline.test.mjs` 历史清单篡改测试 | 完整回归仍断言旧的“服务端必须为 5.7.42”文案,导致生产实现转为系列口径后测试失败。 | 更新为 `5.7.x` 断言;排除已授权发布基线用例后 Schema 28/28。 |
|
||||
| Minor | `implementation-plan.md` 全量门禁预期 | 原计划把 `verify:release` 写为 PASS,但该命令包含必然触发一次性 Schema 例外的测试。 | 修正文档为真实失败并要求手工执行其余等价门禁。 |
|
||||
|
||||
### 未发现问题
|
||||
|
||||
未发现未关闭的 Critical、Important 或阻塞性 Minor。服务端正则只接受 `5.7.<数字>` 与 `-`/`+` 后缀;5.6、8.0、无 patch 和文字 patch 均拒绝。字符集、排序规则、库名、时区和生产数据库边界没有放宽。
|
||||
|
||||
## 测试缺口
|
||||
|
||||
没有针对每个 MySQL 5.7 patch 建立真实数据库兼容矩阵;这是用户明确接受的系列版本策略。本次使用纯函数、固定元数据和现有集成测试验证判断边界,不证明第三方数据库每个 patch 都没有厂商缺陷。首次真实迁移和查询仍必须在目标 5.7.x 环境验证。
|
||||
|
||||
## 安全与残余风险
|
||||
|
||||
- 版本字符串不执行、不进入 SQL;健康详情不回显原始后缀、地址、账号或密码。
|
||||
- Schema 入口仍固定 development、开发库和主机白名单;本次未连接生产数据库。
|
||||
- 残余风险一是不同 5.7 patch 的已知缺陷,二是 v0.0.8 缺少可验证 Schema 基线。前者由真实部署验证控制,后者由用户授权的一次性例外承担。
|
||||
|
||||
## 性能与资源影响
|
||||
|
||||
- 只增加常数时间正则捕获,没有新增查询、网络、重试、缓存、任务或依赖。
|
||||
- 健康查询次数和连接池上限不变;Web 构建体积与 v0.0.8 一致。
|
||||
- 不进入行情采集、分析、Redis、RocketMQ 或图表热路径,无需负载测试。
|
||||
|
||||
## GitNexus 与同步修改
|
||||
|
||||
开发前 `assertMysql57Metadata` 为 CRITICAL,5 个直接调用方、10 个受影响符号、5 组流程;`MysqlHealthClient` 为 LOW。开发后相对 v0.0.8 为 HIGH、23 文件、70 符号、11 流程,运行影响均属于计划中的 Schema 与 API 健康路径。HTTP/OpenAPI、Web API、消息、数据库 Schema、Redis、Scheduler、Worker 和部署拓扑没有计划外修改。
|
||||
|
||||
最终结论:passed
|
||||
@@ -0,0 +1,33 @@
|
||||
# GOV-011 开发规范符合性 Review
|
||||
|
||||
- reviewer_type:self
|
||||
- reviewer:当前实现代理结构化自审
|
||||
- 审查提交:`cce77aa`
|
||||
- 日期:2026-08-17
|
||||
|
||||
## 检查结果
|
||||
|
||||
- [x] PRD、需求、设计、实施计划、测试计划、开发总结、QA、GitNexus、Review、发布与回退资料齐全。
|
||||
- [x] 修改关键符号前执行 GitNexus 上游影响分析,提交前执行 detect-changes。
|
||||
- [x] HIGH/CRITICAL 风险已向用户说明,并以完整 Schema 与健康回归控制。
|
||||
- [x] 行为修改遵循 RED-GREEN,测试失败原因来自旧实现而非语法或夹具。
|
||||
- [x] 关键版本口径和安全边界使用准确中文注释,没有逐行复述。
|
||||
- [x] 未新增依赖、预测性抽象、空分层或过度文件拆分。
|
||||
- [x] 没有修改前端 Axios/API 分域、后端业务模块分层或 OpenAPI DTO。
|
||||
- [x] 所有阶段提交使用中文 Conventional Commit 和 GOV-011,并立即推送 Gitea。
|
||||
- [x] 没有使用 GitHub、强推、生产数据库或真实凭据。
|
||||
- [x] 历史 QA、Schema 清单和已发布档案保持原样。
|
||||
|
||||
## 不符合项与处置
|
||||
|
||||
完成门禁无法通过 v0.0.8 Schema 基线存在性校验。该项不是静默忽略:用户在开发前明确确认当前开发库为空并要求本次跳过,仓库保存 `schema-baseline-waiver.md`,实际失败命令和风险写入 QA。没有修改治理工具,也没有伪造 `not_applicable`、`captured_empty` 或空 SQL。除此之外未发现未处置的不符合项。
|
||||
|
||||
## 安全、性能与架构检查
|
||||
|
||||
安全边界保持固定开发环境、库名、主机白名单、字符集、排序规则和时区;健康输出已脱敏,依赖审计 0 漏洞。性能只增加常数时间字符串匹配,查询、连接池、构建体积和执行流数量没有增加。架构仍为 Vue 3 Web 与 NestJS API/Scheduler/Worker 独立项目、Ubuntu 源码部署和外部 MySQL/Redis/RocketMQ。
|
||||
|
||||
## GitNexus 与开发总结检查
|
||||
|
||||
before、impact-plan、detected-changes、after、comparison 互相对应;最终索引为 2015 节点、2692 关系、50 流程。开发总结包含七个固定章节,明确原始需求、范围变化、实际完成、缺陷、延期、提交和验证证据;HIGH 风险与一次性 Schema 例外均有具体边界,不以空占位通过门禁。
|
||||
|
||||
最终结论:passed
|
||||
@@ -0,0 +1,24 @@
|
||||
# GOV-011 回退说明
|
||||
|
||||
GOV-011 不修改数据库结构、迁移或数据,不写 Redis,不操作 RocketMQ,也不修改生产配置。回退只涉及版本判断、健康详情、测试、注释和当前规范文档。
|
||||
|
||||
## 触发条件
|
||||
|
||||
- 合法 MySQL 5.7.x 被错误拒绝,或 5.6/8.x 被错误放行。
|
||||
- 历史 captured/captured_empty manifest 无法验证。
|
||||
- 健康接口泄漏原始版本后缀或返回错误 patch。
|
||||
- 系列判断导致 Schema 生成、治理启动或 API 启动出现无法修复的回归。
|
||||
|
||||
## 回退步骤
|
||||
|
||||
1. 使用新的中文 Conventional Commit 恢复 `assertMysql57Metadata` 和 `MysqlHealthClient` 到上一已验证行为;禁止重写 Gitea 历史、强推或移动已发布标签。
|
||||
2. 同步恢复对应测试、代码注释和当前架构/部署文档,避免实现与规范不一致。
|
||||
3. 不改写已经发布的 GOV-011 档案;通过后续回退记录说明原因、范围和提交。
|
||||
4. 因无数据库结构或数据变化,不执行数据库回滚。
|
||||
|
||||
## 回退验证
|
||||
|
||||
- 重新执行 runtime、Schema、MySQL 规范、环境、Server 健康、类型和构建测试。
|
||||
- 执行 OpenAPI 契约、Playwright 双视口和源码发布验证。
|
||||
- 运行 GitNexus impact、detect-changes 与 analyze,记录回退实际流程影响。
|
||||
- v0.0.8 Schema 一次性例外仍只作为历史事实存在,不因代码回退生成伪造基线。
|
||||
BIN
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
BIN
Binary file not shown.
|
After Width: | Height: | Size: 8.7 KiB |
@@ -0,0 +1,58 @@
|
||||
# GOV-011 测试计划
|
||||
|
||||
- 功能编号:GOV-011
|
||||
- 验证环境:Node.js 22.11.0、pnpm 10.25.0、macOS 开发机
|
||||
- 数据库边界:不连接、探测或读取生产数据库;本次不执行真实 Schema 导出
|
||||
|
||||
## 1. Node.js 系列验证
|
||||
|
||||
- 接受 `22.0.0`、`22.11.0` 和带预发布/构建后缀的合法 22.x。
|
||||
- 拒绝 21.x、23.x、空字符串、`v22` 和其他无法解析格式。
|
||||
- pnpm 继续只接受 10.x,不因 Node 约束调整而放宽。
|
||||
|
||||
## 2. Schema 元数据验证
|
||||
|
||||
- 接受 MySQL 服务端 `5.7.0`、`5.7.41`、`5.7.42-log`。
|
||||
- 拒绝 `5.6.51`、`8.0.40`、`5.7`、`5.7.x` 和空字符串。
|
||||
- mysql 与 mysqldump 客户端继续要求合法 5.7.x。
|
||||
- 服务端版本通过后,字符集仍必须为 `utf8mb4`,排序规则仍必须为 `utf8mb4_general_ci`。
|
||||
- 回归 captured、captured_empty、not_applicable、历史 manifest、生成入口和发布门禁调用链。
|
||||
- 因用户授权的 v0.0.8 基线一次性例外,严格发布基线用例预期只在目录缺失处失败;使用 `--test-skip-pattern='严格发布门禁'` 验证其余 28 项全部通过。
|
||||
|
||||
## 3. API 健康检查验证
|
||||
|
||||
- `5.7.41-log` 返回 `MySQL 5.7.41 / <数据库> / +08:00`,证明 patch 来自服务端元数据而非硬编码。
|
||||
- 拒绝 5.6.x、8.x 和无效版本格式。
|
||||
- 拒绝错误库名、`utf8`、`utf8mb4_0900_ai_ci` 和 `SYSTEM` 时区。
|
||||
- 保持固定只读元数据查询、健康 DTO 结构和生产库名按当前配置校验。
|
||||
- 执行 Server 全量测试、类型检查和 API/Scheduler/Worker 三进程构建。
|
||||
|
||||
## 4. 规范与部署验证
|
||||
|
||||
- 当前系统架构、代码开发规范、本地开发和 Ubuntu 源码部署文档必须写明 `MySQL 5.7.x`。
|
||||
- 上述四份当前文档不得再出现 `MySQL 5.7.42`;历史 QA、Schema 清单、CHANGELOG 历史版本和已发布功能档案不参与该否定扫描。
|
||||
- Node.js 22.x、pnpm 10.25.0、Ubuntu 源码部署、systemd、Nginx、Redis 和 RocketMQ 约束保持不变。
|
||||
|
||||
## 安全验证
|
||||
|
||||
- 版本字符串仅进入固定正则,不执行命令、不拼接 SQL。
|
||||
- MySQL 健康错误不回显服务端原始附加文本、连接地址、账号或密码。
|
||||
- Schema 测试使用固定夹具和依赖注入,不连接真实数据库;本功能不执行 `schema:baseline`。
|
||||
- `pnpm audit --prod --registry=https://registry.npmjs.org/` 必须为 0 已知漏洞。
|
||||
- 扫描 Web/Server 构建产物中的凭据模式;配置键名允许存在,真实值、连接串和授权头不得存在。
|
||||
- `git diff --check`、GitNexus detect-changes 和 Review 核对没有生产数据、真实 `.env` 或凭据进入提交。
|
||||
|
||||
## 性能验证
|
||||
|
||||
- 版本解析为启动/治理阶段常数时间正则匹配,不增加数据库查询、网络调用、重试、缓存或消息操作。
|
||||
- 健康检查继续只执行一次既有元数据查询,连接池上限仍为 2。
|
||||
- Web 页面和依赖未变化,生产 JS/CSS 体积应与 v0.0.8 基线一致。
|
||||
- 本功能不改变行情计算、数据库扫描、Redis 热点、RocketMQ 吞吐、Worker 并发或图表渲染,因此不执行负载测试;后续触及这些路径的业务功能必须重新设定性能目标。
|
||||
|
||||
## 7. 全量与视觉验证
|
||||
|
||||
- 执行 runtime、governance、MySQL、环境、Schema、契约、边界、部署、Web 和 Server 测试。
|
||||
- 执行 OpenAPI 重新生成、lint、格式、类型检查、Web/Server 构建和源码发布验证。
|
||||
- Playwright 在 Chromium 1440×900 与 390×844 下验证页面、同源健康 API、横向溢出和控制台。
|
||||
- 保存桌面/移动截图并人工检查无重叠、裁切或空白渲染回归。
|
||||
- 真实执行 `pnpm verify:release`、`pnpm schema:verify` 和 `pnpm governance:finish GOV-011 runtime-version-series`;三者因同一个已授权 v0.0.8 基线缺失条件失败,必须保存失败证据并手工执行其余等价门禁。
|
||||
Reference in New Issue
Block a user