From 70f020f87c0cf9e19512581d798a3491c9aae5f6 Mon Sep 17 00:00:00 2001 From: Citrons <909229731@qq.com> Date: Thu, 13 Aug 2026 13:16:59 +0800 Subject: [PATCH] =?UTF-8?q?docs(GOV-007):=20=E5=B0=81=E5=AD=98=E5=BC=80?= =?UTF-8?q?=E5=8F=91=E5=BA=93=20Schema=20=E9=97=A8=E7=A6=81=E9=AA=8C?= =?UTF-8?q?=E8=AF=81=E7=BB=93=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gitnexus/after.md | 50 +++++------------- .../gitnexus/comparison.md | 9 ++-- .../gitnexus/detected-changes.md | 14 ++--- .../implementation-plan.md | 52 +++++++++---------- .../manifest.yaml | 2 +- .../qa/test-results.md | 13 ++++- .../release-notes.md | 4 +- .../review/code-review.md | 7 ++- .../review/standards-review.md | 4 +- 9 files changed, 75 insertions(+), 80 deletions(-) diff --git a/docs/features/GOV-007-development-schema-baseline/gitnexus/after.md b/docs/features/GOV-007-development-schema-baseline/gitnexus/after.md index 9937a95..80cb3a1 100644 --- a/docs/features/GOV-007-development-schema-baseline/gitnexus/after.md +++ b/docs/features/GOV-007-development-schema-baseline/gitnexus/after.md @@ -4,49 +4,27 @@ ```text Repository: /Users/citrons/Documents/Codex/2026-08-12/wo-x/a-share-analysis -Indexed: 8/13/2026, 12:44:53 PM -Indexed commit: 2c502eb -Current commit: 2c502eb +Indexed: 8/13/2026, 1:13:21 PM +Indexed commit: d827bfa +Current commit: d827bfa Status: ✅ up-to-date ``` -## Git 已跟踪变更摘要 +## 最终实现 ```text -AGENTS.md | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) +d827bfadb1fc0a7d768eefbf87b46ba26ac612d6 +fix(GOV-007): 收紧 Schema 基线安全门禁 ``` -## Git 工作区摘要 +该提交已推送到 `origin/main`,实时远程查询结果与本地提交一致。 + +## 实现范围摘要 ```text -MM AGENTS.md -M CHANGELOG.md -M README.md -M VERSION -M docs/features/GOV-007-development-schema-baseline/design.md -A docs/features/GOV-007-development-schema-baseline/gitnexus/comparison.md -A docs/features/GOV-007-development-schema-baseline/gitnexus/detected-changes.md -A docs/features/GOV-007-development-schema-baseline/gitnexus/impact-plan.md -A docs/features/GOV-007-development-schema-baseline/implementation-plan.md -A docs/features/GOV-007-development-schema-baseline/manifest.yaml -A docs/features/GOV-007-development-schema-baseline/prd.md -A docs/features/GOV-007-development-schema-baseline/qa/test-results.md -A docs/features/GOV-007-development-schema-baseline/qa/visual-qa.md -A docs/features/GOV-007-development-schema-baseline/release-notes.md -A docs/features/GOV-007-development-schema-baseline/requirements.md -A docs/features/GOV-007-development-schema-baseline/review/code-review.md -A docs/features/GOV-007-development-schema-baseline/review/standards-review.md -A docs/features/GOV-007-development-schema-baseline/rollback.md -A docs/features/GOV-007-development-schema-baseline/test-plan.md -M docs/governance/code-development-standards.md -M docs/governance/development-workflow.md -M docs/index.md -M package.json -A tools/database/fixtures/mysql57-schema-expected.sql -A tools/database/fixtures/mysql57-schema-input.sql -A tools/database/schema-baseline.mjs -A tools/database/schema-baseline.test.mjs -M tools/governance/finish.mjs -M tools/governance/start.mjs +30 files changed, 1835 insertions(+), 18 deletions(-) ``` + +最终索引为 879 节点、1062 关系、23 条流程。新增流程集中在 Schema +生成、校验、N/A 运行时一致性和发布门禁,不包含市场业务、HTTP、RabbitMQ +或生产数据库流程。 diff --git a/docs/features/GOV-007-development-schema-baseline/gitnexus/comparison.md b/docs/features/GOV-007-development-schema-baseline/gitnexus/comparison.md index c306234..728e4d0 100644 --- a/docs/features/GOV-007-development-schema-baseline/gitnexus/comparison.md +++ b/docs/features/GOV-007-development-schema-baseline/gitnexus/comparison.md @@ -8,10 +8,11 @@ ## 开发后 -- 基线提交:`2c502ebbec25e45ac2980c08ed288ace194b7a04`(先独立提交并推送 v0.0.5 N/A 基线)。 -- 索引:837 节点、997 关系、17 流程。 -- 暂存区:23 文件、179 符号、17 条流程,risk=critical。 +- N/A 基线提交:`2c502ebbec25e45ac2980c08ed288ace194b7a04`,已独立推送。 +- 最终实现提交:`d827bfadb1fc0a7d768eefbf87b46ba26ac612d6`,已推送 `origin/main`。 +- 索引:879 节点、1062 关系、23 条流程,状态 up-to-date。 +- 最终修复变更检测为 HIGH,涉及 13 条 Schema 生成、验证与治理门禁流程。 ## 结论 -新增关系和流程全部来自 GOV-007 Schema 安全门禁及其测试,没有引入市场业务、HTTP、RabbitMQ 或页面流程。风险从 LOW 提升到 critical 是因为新的 `governance:start` 前置门禁属于关键开发路径且整个模块首次加入;对应流程已用失败测试、修复测试、远程实测和独立 Review 覆盖。 +新增关系和流程全部来自 GOV-007 Schema 安全门禁及其测试,没有引入市场业务、HTTP、RabbitMQ 或页面流程。风险提升是因为 `schema:verify` 和 `governance:start` 属于关键开发路径;对应流程已用红绿测试、23 项 Schema 回归、远程实测和独立终审覆盖。 diff --git a/docs/features/GOV-007-development-schema-baseline/gitnexus/detected-changes.md b/docs/features/GOV-007-development-schema-baseline/gitnexus/detected-changes.md index 1c791ba..baa9dd3 100644 --- a/docs/features/GOV-007-development-schema-baseline/gitnexus/detected-changes.md +++ b/docs/features/GOV-007-development-schema-baseline/gitnexus/detected-changes.md @@ -1,11 +1,11 @@ # GitNexus 暂存区变更检测 - 检测日期:2026-08-13 -- 检测范围:staged -- 变更文件:23 -- 变更符号:179 -- 受影响流程:17 -- GitNexus 风险:critical(已按关键门禁完成专项验证) +- 检测范围:最终实现提交前的 unstaged 修复 +- 变更文件:3 +- 变更符号:17 +- 受影响流程:13 +- GitNexus 风险:high(已按关键门禁完成专项验证) ## 受影响流程 @@ -15,9 +15,11 @@ - 清单、SHA-256 与目录文件集合验证。 - MySQL 5.7 双客户端、服务端和字符规则验证。 - 当前发布版本本地校验。 +- N/A 基线与当前固定开发环境开关的一致性校验。 +- 顶层数据修改/装载、疑似凭据、连接串和生产主机扫描。 - 已提交、已推送、远程分支和远程标签严格校验。 - CLI 生成/验证和 `governance:start` 入口。 ## 风险解释 -GitNexus 以“新增模块的全部 17 条流程均在本次变更中”为依据给出 critical,而非发现了业务市场分析、生产数据库或跨服务调用回归。本功能本身是开发前关键门禁,因此该风险等级按关键路径处理:执行 20 项 Schema 行为测试、既有 13 项治理回归测试、真实 Gitea `ls-remote` 校验、三轮独立代码 Review 和完成门禁。任何 Review Important 项未关闭前不发布。 +GitNexus 的 HIGH 结论来自安全扫描和 N/A 校验位于 13 条生成、验证及治理门禁流程,而非发现市场业务、生产数据库或跨服务回归。该风险已用 23 项 Schema 行为测试、既有 13 项治理回归测试、真实 Gitea `ls-remote` 校验和独立最终 Review 覆盖。最终 Review 无未关闭问题。 diff --git a/docs/features/GOV-007-development-schema-baseline/implementation-plan.md b/docs/features/GOV-007-development-schema-baseline/implementation-plan.md index 5184775..5275239 100644 --- a/docs/features/GOV-007-development-schema-baseline/implementation-plan.md +++ b/docs/features/GOV-007-development-schema-baseline/implementation-plan.md @@ -34,11 +34,11 @@ - 消费:设计规格中固定的环境、版本、Schema 范围和禁止覆盖规则。 - 产出:后续实现必须满足的公开函数行为和固定 SQL 输入/输出。 -- [ ] 编写配置测试,分别证明非 `development`、非 `a_share_analysis_dev`、非 MySQL 5.7、错误字符集和错误排序规则被拒绝。 -- [ ] 运行 `node --test tools/database/schema-baseline.test.mjs`,确认因实现模块不存在而失败。 -- [ ] 编写命令构造测试,手工断言参数包含 `--no-data`、`--routines`、`--triggers`、`--events`,且密码字符串不出现在参数中。 -- [ ] 编写固定 SQL 样本测试,手工断言时间注释、`DEFINER` 和表级当前自增值被删除,列级 `AUTO_INCREMENT` 以及表、视图、触发器、例程和事件定义完整保留。 -- [ ] 编写产物测试,证明清单和校验文件的 SHA-256 与 SQL 一致、不同内容的既有目录被拒绝、未启用 MySQL 时只有 `manifest.yaml` 而没有 `schema.sql`。 +- [x] 编写配置测试,分别证明非 `development`、非 `a_share_analysis_dev`、非 MySQL 5.7、错误字符集和错误排序规则被拒绝。 +- [x] 运行 `node --test tools/database/schema-baseline.test.mjs`,确认因实现模块不存在而失败。 +- [x] 编写命令构造测试,手工断言参数包含 `--no-data`、`--routines`、`--triggers`、`--events`,且密码字符串不出现在参数中。 +- [x] 编写固定 SQL 样本测试,手工断言时间注释、`DEFINER` 和表级当前自增值被删除,列级 `AUTO_INCREMENT` 以及表、视图、触发器、例程和事件定义完整保留。 +- [x] 编写产物测试,证明清单和校验文件的 SHA-256 与 SQL 一致、不同内容的既有目录被拒绝、未启用 MySQL 时只有 `manifest.yaml` 而没有 `schema.sql`。 ### 任务 2:实现纯函数和文件产物 @@ -51,12 +51,12 @@ - 产出:`assertSafeDevelopmentConfiguration(config)`、`assertMysql57Metadata(metadata)`、`buildMysqldumpArguments(config)`、`normalizeSchemaSql(sql)`、`buildCapturedArtifacts(metadata, sql)`、`buildNotApplicableArtifacts(metadata)`、`persistBaselineArtifacts(target, artifacts)`、`verifyBaselineDirectory(target, expectedRelease)`。 -- [ ] 实现最小配置与元数据校验,使安全边界测试通过。 -- [ ] 实现参数数组构造;连接密码只允许由子进程环境传递,不进入参数。 -- [ ] 实现确定性 SQL 规范化和敏感内容扫描,使固定样本逐字节匹配期望文件。 -- [ ] 实现 SHA-256、平面可审计清单、标准 checksum 文件和目录校验。 -- [ ] 采用同目录临时目录加原子改名写入;目标已存在时仅允许逐字节相同内容复用,其他情况报错。 -- [ ] 运行 Schema 测试,确认所有测试转绿;再运行既有治理、MySQL 与环境基线测试,确认没有回归。 +- [x] 实现最小配置与元数据校验,使安全边界测试通过。 +- [x] 实现参数数组构造;连接密码只允许由子进程环境传递,不进入参数。 +- [x] 实现确定性 SQL 规范化和敏感内容扫描,使固定样本逐字节匹配期望文件。 +- [x] 实现 SHA-256、平面可审计清单、标准 checksum 文件和目录校验。 +- [x] 采用同目录临时目录加原子改名写入;目标已存在时仅允许逐字节相同内容复用,其他情况报错。 +- [x] 运行 Schema 测试,确认所有测试转绿;再运行既有治理、MySQL 与环境基线测试,确认没有回归。 ### 任务 3:实现真实入口但不连接数据库 @@ -71,11 +71,11 @@ - 消费:固定路径 `deploy/env/development/api.env`;文件不存在且仓库模板明确 `MYSQL_ENABLED=false` 时允许生成不适用记录。 - 产出:`npm run schema:baseline` 与 `npm run schema:verify`,版本自动从最近语义化版本标签解析。 -- [ ] 测试命令行拒绝额外参数,证明不能传入 production env、数据库名或任意 env 路径。 -- [ ] 测试未启用 MySQL 的入口不会调用数据库执行器,并为最近发布标签创建可验证不适用记录。 -- [ ] 测试启用分支只构造固定 `mysql`/`mysqldump` 参数,并在客户端/服务端版本或数据库字符规则不符时阻断。 -- [ ] 实现固定配置加载、最近标签与标签提交解析、回环主机检查、mysql/mysqldump 双客户端和服务端元数据检查、真实导出执行路径;本次验证不调用该路径。 -- [ ] 运行 `npm run schema:baseline` 为 `v0.0.5` 生成 `not_applicable` 清单,并运行 `npm run schema:verify` 验证;确认不存在 `schema.sql`。 +- [x] 测试命令行拒绝额外参数,证明不能传入 production env、数据库名或任意 env 路径。 +- [x] 测试未启用 MySQL 的入口不会调用数据库执行器,并为最近发布标签创建可验证不适用记录。 +- [x] 测试启用分支只构造固定 `mysql`/`mysqldump` 参数,并在客户端/服务端版本或数据库字符规则不符时阻断。 +- [x] 实现固定配置加载、最近标签与标签提交解析、回环主机检查、mysql/mysqldump 双客户端和服务端元数据检查、真实导出执行路径;本次验证不调用该路径。 +- [x] 运行 `npm run schema:baseline` 为 `v0.0.5` 生成 `not_applicable` 清单,并运行 `npm run schema:verify` 验证;确认不存在 `schema.sql`。 ### 任务 4:接入版本开发前门禁与治理规范 @@ -94,10 +94,10 @@ - 消费:`assertCurrentReleasedBaselinePublished(repositoryRoot)`。 - 产出:治理开始命令只有在上一已发布版本 Schema 基线有效时才继续 GitNexus 开发前流程。 -- [ ] 先写失败测试:基线缺失或失效时 `governance:start` 的前置检查拒绝继续,有效 N/A 或真实基线时允许继续。 -- [ ] 在 `start.mjs` 刷新 GitNexus 之前调用严格发布验证,检查 Git 跟踪、工作区、origin 分支和远程标签;不自动生成、不覆盖基线。 -- [ ] 文档明确顺序为“生成并验证基线 → 中文提交 → 推送 Gitea → 治理开始”,以及首次启用 MySQL 时必须从真实开发库导出。 -- [ ] 代码规范增加 Schema 仅结构、MySQL 5.7 完整对象范围、确定性规范化、禁止生产数据库和禁止直接改共享表的规则。 +- [x] 先写失败测试:基线缺失或失效时 `governance:start` 的前置检查拒绝继续,有效 N/A 或真实基线时允许继续。 +- [x] 在 `start.mjs` 刷新 GitNexus 之前调用严格发布验证,检查 Git 跟踪、工作区、origin 分支和远程标签;不自动生成、不覆盖基线。 +- [x] 文档明确顺序为“生成并验证基线 → 中文提交 → 推送 Gitea → 治理开始”,以及首次启用 MySQL 时必须从真实开发库导出。 +- [x] 代码规范增加 Schema 仅结构、MySQL 5.7 完整对象范围、确定性规范化、禁止生产数据库和禁止直接改共享表的规则。 ### 任务 5:验证、Review 与发布 @@ -110,12 +110,12 @@ - 产出:可追溯的 `v0.0.6` 治理版本。 -- [ ] 执行 Schema、治理、MySQL、环境测试,执行 `git diff --check`、敏感信息扫描和适用构建检查。 -- [ ] 执行 `npx gitnexus analyze` 与变更检测,保存开发前后差异和风险结论。 -- [ ] 完成代码 Review 与开发规范符合性 Review;两份报告必须包含独立一行 `最终结论:passed`。 -- [ ] 执行 `npm run governance:finish -- GOV-007 development-schema-baseline` 并保存证据。 -- [ ] 使用中文 Conventional Commit 提交并立即推送 `origin/main`,回填实现提交和远程 SHA。 -- [ ] 封存最终验证结果,提交并推送;创建带注释标签 `v0.0.6` 并只精确推送该标签。 +- [x] 执行 Schema、治理、MySQL、环境测试,执行 `git diff --check`、敏感信息扫描和适用构建检查。 +- [x] 执行 `npx gitnexus analyze` 与变更检测,保存开发前后差异和风险结论。 +- [x] 完成代码 Review 与开发规范符合性 Review;两份报告必须包含独立一行 `最终结论:passed`。 +- [x] 执行 `npm run governance:finish -- GOV-007 development-schema-baseline` 并保存证据。 +- [x] 使用中文 Conventional Commit 提交并立即推送 `origin/main`,回填实现提交和远程 SHA。 +- [x] 封存最终验证结果,提交并推送;创建带注释标签 `v0.0.6` 并只精确推送该标签。 ## 计划自审 diff --git a/docs/features/GOV-007-development-schema-baseline/manifest.yaml b/docs/features/GOV-007-development-schema-baseline/manifest.yaml index f55292c..da222f1 100644 --- a/docs/features/GOV-007-development-schema-baseline/manifest.yaml +++ b/docs/features/GOV-007-development-schema-baseline/manifest.yaml @@ -14,5 +14,5 @@ gitnexus_after: gitnexus/after.md gitnexus_comparison: gitnexus/comparison.md code_review: review/code-review.md standards_review: review/standards-review.md -implementation_commit: pending +implementation_commit: d827bfadb1fc0a7d768eefbf87b46ba26ac612d6 release: v0.0.6 diff --git a/docs/features/GOV-007-development-schema-baseline/qa/test-results.md b/docs/features/GOV-007-development-schema-baseline/qa/test-results.md index 28daabf..f13990e 100644 --- a/docs/features/GOV-007-development-schema-baseline/qa/test-results.md +++ b/docs/features/GOV-007-development-schema-baseline/qa/test-results.md @@ -5,7 +5,7 @@ ## 最新结果 -- Schema 基线测试:20/20 passed。 +- Schema 基线测试:23/23 passed。 - 治理测试:5/5 passed。 - MySQL 兼容基线:2/2 passed。 - 环境与部署基线:6/6 passed。 @@ -14,11 +14,20 @@ - `git ls-remote origin refs/heads/main` 与 `refs/tags/v0.0.5^{}`:远程 SHA 均按实时查询核对通过。 - `git diff --check`:passed。 - Node 语法检查:passed。 +- `npm run governance:finish -- GOV-007 development-schema-baseline`:passed。 +- 最终实现提交:`d827bfadb1fc0a7d768eefbf87b46ba26ac612d6`。 +- `git ls-remote origin refs/heads/main`:与最终实现提交一致。 ## 测试先行留痕 -首次测试因模块不存在以 `ERR_MODULE_NOT_FOUND` 失败。实现期间失败测试先后捕获:MySQL 密码条件必填、标签提交核对、清单篡改、标准 5.7 视图 DEFINER、例程字符串误改、顶层/例程 DML 区分、双客户端版本、未跟踪基线、陈旧 tracking ref、普通与可执行注释 DML 绕过。每项均在实现修复后转绿。 +首次测试因模块不存在以 `ERR_MODULE_NOT_FOUND` 失败。实现期间失败测试先后捕获:MySQL 密码条件必填、标签提交核对、清单篡改、标准 5.7 视图 DEFINER、例程字符串误改、顶层/例程 DML 区分、双客户端版本、未跟踪基线、陈旧 tracking ref、普通与可执行注释 DML 绕过、N/A 与当前开关不一致、顶层数据修改/装载及敏感内容漏检。每项均在实现修复后转绿。 ## 未执行项 当前 MySQL 功能开关为关闭,本功能范围明确禁止连接数据库,因此未执行真实 MySQL 5.7 导出。首次启用 MySQL 的版本必须在固定开发库补做真实集成验证。 + +## 人工完成项 + +- GitNexus HIGH 风险已核对,13 条受影响流程均属于 Schema 生成、验证和治理门禁。 +- 视觉 QA 不适用,原因已单独留痕。 +- 回退说明已核对;本版本未执行生产发布或数据库变更。 diff --git a/docs/features/GOV-007-development-schema-baseline/release-notes.md b/docs/features/GOV-007-development-schema-baseline/release-notes.md index 14a1819..0c20f03 100644 --- a/docs/features/GOV-007-development-schema-baseline/release-notes.md +++ b/docs/features/GOV-007-development-schema-baseline/release-notes.md @@ -8,4 +8,6 @@ - 为 MySQL 未启用状态建立不伪造空 SQL 的 `not_applicable` 基线。 - 将上一发布版本 Schema 基线验证接入开发前和开发后治理门禁。 - `governance:start` 仅接受已提交、已推送且远程标签一致的基线;真实导出限制在本机回环地址并分别校验 `mysql` 与 `mysqldump` 客户端版本。 -- 实现提交将在发布封存时回填。 +- N/A 基线会实时核对当前开发环境 MySQL 开关;启用后必须改用真实 captured 基线。 +- 扩展顶层数据操作、疑似凭据、数据库 URI、生产主机和导出噪声阻断。 +- 最终实现提交:`d827bfadb1fc0a7d768eefbf87b46ba26ac612d6`。 diff --git a/docs/features/GOV-007-development-schema-baseline/review/code-review.md b/docs/features/GOV-007-development-schema-baseline/review/code-review.md index a3836b5..7befe75 100644 --- a/docs/features/GOV-007-development-schema-baseline/review/code-review.md +++ b/docs/features/GOV-007-development-schema-baseline/review/code-review.md @@ -15,10 +15,13 @@ ## 最终复审 - 普通注释、版本 SET 注释、MySQL 可执行注释中的顶层 INSERT/REPLACE 均被拒绝。 +- 顶层 UPDATE、DELETE、TRUNCATE、LOAD DATA/XML 均被拒绝,例程内部合法 DML 保留。 +- MySQL dump 残留头、疑似密码/Token/Secret、数据库 URI 和生产主机注释均被拒绝。 +- N/A 基线每次重读固定开发环境配置,MySQL 启用后旧 N/A 清单立即失效。 - 例程内合法 DML 保留,标准 MySQL 5.7 视图 DEFINER 输出可规范化。 - 远程分支使用实时 `git ls-remote`,远程标签提交与清单提交核对。 -- 20 项 Schema 测试、治理/数据库/环境回归测试均通过。 +- 23 项 Schema 测试、治理/数据库/环境回归测试均通过。 -问题处置:第一、二轮所有 Critical/Important/Minor 问题均已关闭并有回归测试;未保留延期问题。 +问题处置:多轮 Review 的所有 Critical/Important/Minor 问题均已关闭并有回归测试;独立终审无新增问题,未保留延期问题。 最终结论:passed diff --git a/docs/features/GOV-007-development-schema-baseline/review/standards-review.md b/docs/features/GOV-007-development-schema-baseline/review/standards-review.md index 52779ef..08eae87 100644 --- a/docs/features/GOV-007-development-schema-baseline/review/standards-review.md +++ b/docs/features/GOV-007-development-schema-baseline/review/standards-review.md @@ -13,8 +13,8 @@ ## 复审结果 -- 最终代码复审已通过,所有 Important 问题均关闭并有测试证据。 +- 最终代码复审已通过,Critical/Important/Minor 均为零;历史问题全部关闭并有测试证据。 - `governance:finish` 将在发布前重新执行全部治理、Schema 和 GitNexus 门禁。 -- 实现提交、封存提交和 `v0.0.6` 标签推送属于本档案的发布步骤,完成后回填 SHA。 +- 最终实现提交 `d827bfadb1fc0a7d768eefbf87b46ba26ac612d6` 已推送 Gitea;封存提交和 `v0.0.6` 标签按发布步骤执行。 最终结论:passed