6.3 KiB
6.3 KiB
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是依赖安全门禁。