用途:为 mx-core 编写和审查 Drizzle SQL 迁移,保证滚动部署期间新旧 Pod 同时运行时迁移与上一版本代码兼容。迁移在发布阶段先于任何 mx-core Pod 启动执行,失败会阻塞部署。
主要能力:提供决策树区分增量变更与破坏性变更;给出各类操作的安全模板,如新增表、可空列、带默认值的 NOT NULL 列、索引、外键,以及删除列/表、重命名列、改类型等需跨多个发布完成的 expand-contract 阶段;说明大表索引需 CREATE INDEX CONCURRENTLY 并用 --> statement-breakpoint 跳出 Drizzle 事务;外键大表用 ADD CONSTRAINT ... NOT VALID 后再 VALIDATE。
使用方式:编辑 apps/core/src/database/schema/*.ts,运行 pnpm -C apps/core exec drizzle-kit generate 生成 SQL,阅读并按需拆分迁移,运行 pnpm -C apps/core run lint:migrations 检查,本地用 pnpm -C apps/core run migrate 应用,补充测试后提交,PR 标题以 migration: 或 db: 开头并附 expand-contract 阶段计划。lint 标记危险模式,确需放行时用 -- migration-lint:allow=<规则> reason=<理由> 注解,reason 必填。
限制:不得单方面添加 allow 注解,需用户确认;除基线外不得把 expand 与 contract 合并为一个迁移;不得在未阅读现有 schema 前建议变更;不得使用 applyMigrations 或启动时变更。缺失信息暂未提供。