docs(GOV-005): 建立 MySQL 5.7 兼容性基线
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
# MySQL 5.7 字符集与兼容性基线实施计划
|
||||
|
||||
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
||||
|
||||
**Goal:** 将 MySQL 5.7.x、`utf8mb4`、`utf8mb4_general_ci` 和禁止 MySQL 8.x 专属能力写入系统架构与开发规范,并以自动化测试锁定。
|
||||
|
||||
**Architecture:** 约束以系统架构定义全局技术基线,以代码开发规范定义实现与 Review 门禁。新增独立 Node.js 静态契约测试读取这两份文档,防止后续删除版本、字符集、排序规则或兼容性要求。
|
||||
|
||||
**Tech Stack:** Markdown、Node.js 内置测试运行器、GitNexus、Git/Gitea。
|
||||
|
||||
## Global Constraints
|
||||
|
||||
- 数据库服务端固定 MySQL 5.7.x,禁止 MySQL 8.x。
|
||||
- 字符集固定 `utf8mb4`,排序规则固定 `utf8mb4_general_ci`。
|
||||
- 数据库、表、连接、迁移和测试环境必须显式声明或验证基线。
|
||||
- 禁止依赖 CTE、窗口函数、函数索引、不可见索引和 `utf8mb4_0900_*`。
|
||||
- 当前只建立规范,不创建数据库、容器、ORM 或生产连接。
|
||||
|
||||
---
|
||||
|
||||
### Task 1: 建立失败的数据库基线契约测试
|
||||
|
||||
**Files:**
|
||||
- Create: `tools/governance/mysql-baseline.test.mjs`
|
||||
- Modify: `package.json`
|
||||
|
||||
**Interfaces:**
|
||||
- Consumes: `docs/architecture/system-architecture.md` 与 `docs/governance/code-development-standards.md`。
|
||||
- Produces: `npm run test:mysql-baseline`,验证数据库基线的机器可读证据。
|
||||
|
||||
- [ ] **Step 1: 编写测试**
|
||||
|
||||
测试必须断言两份文档包含 `MySQL 5.7`、`utf8mb4`、`utf8mb4_general_ci`,并断言开发规范包含 MySQL 8.x 禁用能力、大小写语义、索引长度、迁移与 Review 要求。
|
||||
|
||||
- [ ] **Step 2: 验证测试因规范缺失而失败**
|
||||
|
||||
运行:`npm run test:mysql-baseline`
|
||||
|
||||
预期:失败原因明确指向系统架构或开发规范缺少 MySQL 基线文本。
|
||||
|
||||
### Task 2: 更新架构与开发规范
|
||||
|
||||
**Files:**
|
||||
- Modify: `docs/architecture/system-architecture.md`
|
||||
- Modify: `docs/governance/code-development-standards.md`
|
||||
|
||||
**Interfaces:**
|
||||
- Consumes: Task 1 的断言。
|
||||
- Produces: 所有后续数据库、ORM、迁移和部署功能必须遵守的规范。
|
||||
|
||||
- [ ] **Step 1: 更新系统架构**
|
||||
|
||||
增加数据库技术基线、第一阶段接口边界以及正式启用 MySQL 时的验证条件。
|
||||
|
||||
- [ ] **Step 2: 更新开发规范**
|
||||
|
||||
增加 Schema/表/连接/迁移显式配置、5.7 禁用能力、排序语义、索引预算和 Review 检查。
|
||||
|
||||
- [ ] **Step 3: 验证测试转绿**
|
||||
|
||||
运行:`npm run test:mysql-baseline && npm run test:governance`
|
||||
|
||||
预期:全部通过。
|
||||
|
||||
### Task 3: 完成追溯、Review 与发布
|
||||
|
||||
**Files:**
|
||||
- Create: `docs/features/GOV-005-mysql57-charset-baseline/manifest.yaml`
|
||||
- Create: `docs/features/GOV-005-mysql57-charset-baseline/prd.md`
|
||||
- Create: `docs/features/GOV-005-mysql57-charset-baseline/requirements.md`
|
||||
- Create: `docs/features/GOV-005-mysql57-charset-baseline/test-plan.md`
|
||||
- Create: `docs/features/GOV-005-mysql57-charset-baseline/gitnexus/impact-plan.md`
|
||||
- Create: `docs/features/GOV-005-mysql57-charset-baseline/gitnexus/after.md`
|
||||
- Create: `docs/features/GOV-005-mysql57-charset-baseline/gitnexus/detected-changes.md`
|
||||
- Create: `docs/features/GOV-005-mysql57-charset-baseline/gitnexus/comparison.md`
|
||||
- Create: `docs/features/GOV-005-mysql57-charset-baseline/qa/test-results.md`
|
||||
- Create: `docs/features/GOV-005-mysql57-charset-baseline/qa/visual-qa.md`
|
||||
- Create: `docs/features/GOV-005-mysql57-charset-baseline/review/code-review.md`
|
||||
- Create: `docs/features/GOV-005-mysql57-charset-baseline/review/standards-review.md`
|
||||
- Create: `docs/features/GOV-005-mysql57-charset-baseline/release-notes.md`
|
||||
- Create: `docs/features/GOV-005-mysql57-charset-baseline/rollback.md`
|
||||
- Modify: `docs/index.md`
|
||||
- Modify: `CHANGELOG.md`
|
||||
- Modify: `VERSION`
|
||||
|
||||
**Interfaces:**
|
||||
- Consumes: 通过测试的架构和规范。
|
||||
- Produces: 可审查、可发布、可回退的 GOV-005 完整档案和 `v0.0.4`。
|
||||
|
||||
- [ ] **Step 1: 完成 GitNexus 分析和全部档案**
|
||||
|
||||
重新索引,检测完整暂存区,记录前后节点、关系、流程和风险。
|
||||
|
||||
- [ ] **Step 2: 完成双 Review 与门禁**
|
||||
|
||||
运行:`npm run governance:finish -- GOV-005 mysql57-charset-baseline`
|
||||
|
||||
预期:两份 Review 均为 `passed`,门禁退出码为 0。
|
||||
|
||||
- [ ] **Step 3: 中文提交、推送与标签**
|
||||
|
||||
提交规范变化并推送 `main`;封存验证结果后创建带注释 `v0.0.4`,精确推送该标签并核对远程引用。
|
||||
Reference in New Issue
Block a user