Files
a-share-analysis/docs/features/GOV-012-node-schema-exporter/gitnexus/impact-plan.md

7.0 KiB
Raw Permalink Blame History

GitNexus 开发前影响计划

  • 功能编号:GOV-012
  • 基线提交:3555b7c2224e
  • 总体风险:HIGH(版本治理和全部后续开发入口)

直接与间接影响

runBaselineGeneration

  • 直接被 Schema CLI 入口和多组单元测试调用;从同步子进程改为异步数据库连接会影响生成命令、测试注入和错误传播。
  • 间接影响 schema:baseline 产物以及后续 schema:verify、assertCurrentReleasedBaselinePublished 和 governance:start 的可用性。
  • 控制:保留外部命令,使用可注入假连接先测试,真实开发库只在专项验证中读取。

assertMysql57Metadata 与历史验证

  • 同时服务 captured、captured_empty 和历史目录验证。直接修改现有字段语义会破坏 v1/v2 发布证据。
  • 控制:保留 v1/v2 原验证分支,新增 v3 元数据验证函数或明确格式分支,不原地复用旧客户端字段。

SQL 规范化、对象计数和安全扫描

  • 新导出器输出不再完全等同 mysqldump 文本,可能影响 normalizeSchemaSql、splitSqlStatements、对象计数和敏感语句扫描。
  • 控制:用六类对象固定夹具覆盖格式、分隔符、对象体 DML、DEFINER、自增值和确定性输出。

跨模块同步修改

  • HTTP/OpenAPI、Web API、消息契约、Redis、API、Scheduler、Worker:无运行时影响。
  • 数据库:只读开发库 Schema,不修改迁移、表或数据;生产数据库禁止访问。
  • 依赖:根工作区新增 mysql2 直接依赖并更新锁文件,需审计安全、许可证和维护边界。
  • 治理:Schema format 升级、开发流程、代码规范、GOV-007 现行说明和测试必须同步;历史档案保持原文。
  • 测试:Schema 测试是主要影响面,治理测试和完整验证用于确认后续开发入口未回归。
  • 文档:新增 GOV-012 PRD、设计、测试、回退和开发总结,记录 v0.0.9 基线补建结果。

高风险处置

这是全部版本开发的关键路径,风险至少为 HIGH。修改任何相关函数前必须重新执行 GitNexus upstream impact;若 MCP 仍不可用,使用静态调用关系、现有 50 条流程和全量回归交叉验证。历史基线失败、数据语句进入 SQL、生产边界被放宽或自动门禁未恢复时立即停止发布并回退。

GOV-012 Task 1 重新核对(2026-08-18)

工具状态与静态替代证据

  • 已执行 npx gitnexus analyze,结果为 Already up to date;已执行 npx gitnexus status,索引和当前提交均为 235163c,状态为 up-to-date。
  • GitNexus MCP 在本次开发环境没有可调用传输入口;结合任务启动时持续的 Transport closed,不能把 MCP 不可用解释为无影响。本轮使用 rg -n 对五个符号检索全部仓库静态引用(排除 node_modules、.git 与 .gitnexus),并以已刷新的 CLI 索引和后续 git diff 交叉验证。
  • 静态引用集中在 tools/database/schema-baseline.mjs、tools/database/schema-baseline.test.mjs、GOV-007/009/011/012 的治理档案及 tools/runtime/verify-runtime.mjs;Task 1 不修改这些既有执行符号或 format v1/v2 目录。
  • 以本 worktree 路径指定 CLI 后,assertMysql57Metadata 的 upstream 结果为 CRITICAL(4 个直接调用方、9 个受影响符号、5 组流程),verifyBaselineDirectory 为 HIGH(3 个直接调用方、6 个受影响符号、4 组流程)。前者较历史 5/10 计数少一,是当前索引未计入测试引用,不能降低历史关键路径风险判断。
  • CLI 将 runBaselineGeneration 和 buildCapturedArtifacts 显示为 LOW/0;与源码中 runCommandLine -> runBaselineGeneration -> buildCapturedArtifacts 的静态调用不一致,因此以静态调用补足,不记录为无影响。runCommandLine 与 tools/runtime/verify-runtime.mjs 中同名符号歧义,CLI 不支持按 UID 或文件路径消歧,使用 schema-baseline.mjs 主入口守卫的静态引用作为替代证据。

关键符号影响结论

符号 直接调用方/静态入口 受影响流程 实际风险与本任务控制
runBaselineGeneration runCommandLine 的 generate 分支;Schema 单元测试直接调用 schema:baseline 生成、随后 schema:verify、当前发布基线校验和 governance:start HIGH;后续异步替换会改变错误传播与注入边界。Task 1 只新建模块,不改此函数。
assertMysql57Metadata buildCapturedArtifacts、buildCapturedEmptyArtifacts、verifyBaselineDirectory 的 captured/captured_empty 分支、runBaselineGeneration 与 Schema 单元测试 captured、captured_empty、历史目录验证、当前发布基线、基线生成和 governance:start CRITICAL;历史 GitNexus 证据为 5 个直接调用方、10 个受影响符号和 5 组流程。Task 1 建立独立 assertMysql57ServerMetadata,不改变 v1/v2 语义。
buildCapturedArtifacts runBaselineGeneration;Schema 单元测试 captured 产物、清单/checksum、schema:verify MEDIUM;v3 产物契约将在后续 Task 修改。本任务不改该函数。
verifyBaselineDirectory runBaselineGeneration 的已存在目录、MySQL 关闭和 captured 分支;assertCurrentReleasedBaseline;assertCurrentReleasedBaselinePublished;Schema 单元测试 schema:verify、已发布基线校验、governance:start HIGH;format v1/v2 只读兼容是发布门禁。本任务不改该函数或历史目录。
runCommandLine 模块主入口守卫;内部 generate 分支调用 runBaselineGeneration schema:baseline、schema:verify 的 CLI 非零退出边界 HIGH;后续改异步入口会影响命令完成时序。本任务不改此函数。

跨模块同步判断

  • HTTP/OpenAPI、Web API、消息契约、Redis、API、Scheduler、Worker、部署:本 Task 仅新增 Node 治理工具安全基础,不接入运行时服务,均无同步代码修改;边界是后续 Task 将替换 Schema CLI 内部实现。
  • 数据库:不建立连接、不查询业务数据、不执行 DDL/DML/多语句/锁表;本 Task 仅固定未来连接选项和服务端元数据契约。
  • 测试、依赖和文档:新增 mysql2 根开发依赖、Node 单元测试和本影响记录;pnpm audit --audit-level high 是依赖安全门禁。

Task 1 依赖审计范围限定例外

  • 官方 registry 审计确认既有 Web 测试依赖链 @vue/test-utils -> js-beautify -> glob 存在一项 high;新增的 mysql2@3.23.3 不在该依赖路径中。
  • 用户于 2026-08-18 明确同意 GOV-012 使用范围限定例外继续:该既有风险作为单独治理欠项处理,本功能不得擅自升级前端测试依赖,也不得把该例外解释为 mysql2 安全审计通过之外的通用放行。
  • GOV-012 发布前的代码 Review 和开发规范 Review 必须继续披露该残余风险;若后续审计发现 mysql2、Schema 导出链路或生产依赖新增 high/critical,则本例外不适用并立即阻断。