Commit f2216a4c034de755b47059167598b43ae37a1619

Authored by yanghl
1 parent 81036c88

preflight 新增第 5 项硬门:拒绝旧 DROP-源库模型的 setup-test-db.mjs

存量项目(模板修复 56c4d891 之前生成)的 scripts/setup-test-db.mjs 在 env 缺省时
回退到 config-vars.yaml 的源库名并 DROP+CREATE——xlyClaude13 的源库
xlyweberp_vibe_erp_async 因此被清空重灌(2026-07-10 事故)。laneDbSupport 探测
只查 env 支持、且仅并行波次才跑,串行门裸跑脚本无任何拦截。

现 preflight 启动即 grep 目标项目 setup-test-db.mjs 是否含 COPY_SCHEMA
(新复制副本模型标识),不含即 halt 并给出用 skeleton-gen 模板升级的指引。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Showing 1 changed file with 1 additions and 0 deletions
workflows/coding.mjs
@@ -1411,6 +1411,7 @@ function preflightPromptM() { @@ -1411,6 +1411,7 @@ function preflightPromptM() {
1411 '2. **JDK**(若后端为 Java):`java -version` 主版本与 docs/04 锁定版本一致;不一致时探测 `/usr/libexec/java_home -v <版本>`(macOS)或 `JAVA_HOME` 是否可解析到正确版本,并在 detail 给出导出 JAVA_HOME 的具体命令。', 1411 '2. **JDK**(若后端为 Java):`java -version` 主版本与 docs/04 锁定版本一致;不一致时探测 `/usr/libexec/java_home -v <版本>`(macOS)或 `JAVA_HOME` 是否可解析到正确版本,并在 detail 给出导出 JAVA_HOME 的具体命令。',
1412 '3. **数据库客户端**:docs/04 指明的 DB(如 mysql)客户端命令存在;若 `.env.local` 存在则尝试一次只读连接探测(失败不算硬错,记入 detail 提示)。', 1412 '3. **数据库客户端**:docs/04 指明的 DB(如 mysql)客户端命令存在;若 `.env.local` 存在则尝试一次只读连接探测(失败不算硬错,记入 detail 提示)。',
1413 '4. **测试入口**:docs/04 § 零命令清单里 test-gate 用到的脚本文件(如 `scripts/test.mjs`)存在。', 1413 '4. **测试入口**:docs/04 § 零命令清单里 test-gate 用到的脚本文件(如 `scripts/test.mjs`)存在。',
  1414 + `5. **测试库脚本必须是复制副本模型(fail-closed 硬门)**:若 \`${ROOT}/scripts/setup-test-db.mjs\` 存在,Grep 其内容是否含字符串 \`COPY_SCHEMA\`(新模型:复制源库→一次性副本,带 COPY≠SOURCE 守卫)。**不含即硬错**——旧模型脚本对 env 缺省时直接 DROP config-vars.yaml 的源库(真实数据全灭,已有事故)。error 写「scripts/setup-test-db.mjs 是旧 DROP-源库模型」,detail 写明:用插件 \`skills/plan/skeleton-gen/templates/\` 下的 scripts-setup-test-db / scripts-drop-test-db / scripts-promote-to-source / scripts-seed-demo-data / scripts-test 模板升级目标项目 \`scripts/\` 后重跑。`,
1414 '', 1415 '',
1415 '全部满足 → `{ "success": true }`;任一硬缺失 → `{ "success": false, "error": "<一句话>", "detail": "<逐项列出缺什么、装/配的具体命令>" }`。', 1416 '全部满足 → `{ "success": true }`;任一硬缺失 → `{ "success": false, "error": "<一句话>", "detail": "<逐项列出缺什么、装/配的具体命令>" }`。',
1416 '## 输出(ACTION_RESULT_SCHEMA)', 1417 '## 输出(ACTION_RESULT_SCHEMA)',