Commit a68fa13fc2baf831da1476cdb39449284c9f8a70

Authored by zichun
1 parent 1b944be8

coding-start: move git-readiness gate into coding.mjs runtime, slim entry to Pla…

…n-check + projectRoot

git 就绪(默认分支/工作树干净/功能分支创建与合并)改由 coding.mjs runBranchSetup 运行时把守;
入口只校验 Plan 完成态(docs/08 §一 全勾)并取 projectRoot 绝对路径传入 Workflow。
相应收窄 allowed-tools(去掉 git status/branch/checkout 授权)。
skills/coding/coding-start/SKILL.md
1 1 ---
2 2 name: coding-start
3   -description: B 阶段(Coding)瘦入口。校验 Plan 完成态与 git 就绪(docs/08 §一 A0~A5 全勾、在本地默认分支或自动切回 halt 残留功能分支、工作树干净)后,读取 docs/08 §二/§三 概述模块/前端进度,然后调用 workflows/coding.mjs Workflow 全自动、静默地跑完整个编码阶段(后端+前端功能循环、测试闸、里程碑 tag),跑完或 halt 时返回最终状态。本入口不写任何文件、不做编码决策。
  3 +description: B 阶段(Coding)瘦入口。校验 Plan 完成态(docs/08 §一 A0~A5 全勾)并取得 projectRoot 绝对路径后,读取 docs/08 §二/§三 概述模块/前端进度,然后调用 workflows/coding.mjs Workflow 全自动、静默地跑完整个编码阶段(后端+前端功能循环、测试闸、里程碑 tag);git 就绪(默认分支/工作树干净/功能分支创建与合并)由 coding.mjs runBranchSetup 在运行时把守。跑完或 halt 时返回最终状态。本入口不写任何文件、不做编码决策。
4 4 user-invocable: true
5   -allowed-tools: Read Glob Workflow Bash(git rev-parse *) Bash(git status *) Bash(git branch *) Bash(git checkout *) Bash(git tag *)
  5 +allowed-tools: Read Glob Workflow Bash(git rev-parse *) Bash(git tag *)
6 6 ---
7 7  
8 8 **所有输出必须使用中文。**
... ... @@ -35,28 +35,21 @@ allowed-tools: Read Glob Workflow Bash(git rev-parse *) Bash(git status *) Bash(
35 35 用 `Glob` 检查 `docs/08-模块任务管理.md`。
36 36 - 不存在 → 输出「⚠️ 项目尚未初始化,请先运行 `/erp-workflow:plan-start`」并**停下**,不启动 Workflow。
37 37  
38   -### 步骤 2:Plan 完成态 + git 就绪校验(HARD GATE)
  38 +### 步骤 2:Plan 完成态校验 + 取 projectRoot(HARD GATE)
39 39  
40   -`Read` `docs/08-模块任务管理.md`,逐项校验,任一不满足即**拦截、不启动 Workflow**。
  40 +`Read` `docs/08-模块任务管理.md` 校验 Plan 完成态,并取得 `projectRoot`;任一不满足即**拦截、不启动 Workflow**。
41 41  
42   -> 注:REQ 真实数据 / config 全锁 / docs/04 命令齐 / docs/05+02 已评审等**内容闸**由 `plan-start` 终结硬闸把守;本步只校验「Plan 完成态(checkbox)+ git 就绪」,不重复内容校验。
  42 +> 注:REQ 真实数据 / config 全锁 / docs/04 命令齐 / docs/05+02 已评审等**内容闸**由 `plan-start` 终结硬闸把守;本步只校验「Plan 完成态(checkbox)」,不重复内容校验。
  43 +>
  44 +> 注:git 就绪(在默认分支 / 工作树干净 / 功能分支创建与合并)由 coding.mjs `runBranchSetup` 在运行时把守——分支已存在则 checkout、不存在则从默认分支新建(与当前所停分支无关),工作树不干净会立即 HALT;续跑点由 Router 从 `milestone/*` tag + docs/08 字段重算,与所在分支无关。故本入口不再做 git 就绪预检,只取 `projectRoot` 供步骤 4。
43 45  
44 46 1. **docs/08 § 一 A0~A5 全部勾选**
45 47 - 读 § 一 进度表,确认 A0/A1/A2/A3/A4/A5(含各自子项)均为 `[x]`。
46 48 - 任一未勾 → 缺口:`Plan 未完成(<未勾项>)→ 先运行 /erp-workflow:plan-start`。
47 49  
48   -2. **当前在本地默认分支(main / master);停在 halt 残留功能分支则自动切回**
49   - - 用 `Bash(git rev-parse --show-toplevel)` 确认当前目录在 git 仓库中,并记录 stdout 作为 `projectRoot`。
50   - - 用 `Bash(git rev-parse --verify refs/heads/main)` / `refs/heads/master` 依次检测本地默认分支,取第一个存在者作为 `<default>`;两者都不存在则缺口:`找不到本地默认分支 main/master`。
51   - - 用 `Bash(git branch --show-current)` 读取当前分支 `<branch>`,按下列三种情况处理:
52   - - `<branch>` == `<default>` → 通过。
53   - - `<branch>` 形如 `module-*` 或等于 `frontend-phase`(= 上次 halt 残留的功能分支;coding.mjs 在模块中途 halt 时 HEAD 停在功能分支,不会自动切回):先用 `Bash(git status --porcelain)` 检查工作树——
54   - - **干净** → 用 `Bash(git checkout <default>)` 切回默认分支(续跑点由 coding.mjs Router 从 `milestone/*` / `req-done/*` tag 重算,与所在分支无关),通过;切换失败则缺口:`无法自动切回默认分支 <default>:<stderr 摘要>`。
55   - - **不干净** → 缺口:`停在功能分支 <branch> 且工作树不干净,无法自动切回——请先提交或清理改动后重跑(dirty 前 20 行:<...>)`。
56   - - 其它分支 → 缺口:`当前分支 <branch> 不是默认分支 <default>`。
57   -
58   -3. **工作树干净(Plan 产物已 commit)**
59   - - 用 `Bash(git status --porcelain)` 检查(步骤 2 自动切回后应仍干净),stdout 非空即缺口:`工作树不干净(列出前 20 行 dirty 路径)`。
  50 +2. **取得 projectRoot 绝对路径(取参数,非 gate)**
  51 + - 用 `Bash(git rev-parse --show-toplevel)` 取仓库根,记录 stdout 作为 `projectRoot`(步骤 4 必须传入;coding.mjs 顶部对相对路径硬 HALT)。
  52 + - 命令失败(当前目录不在 git 仓库内)→ 缺口:`无法取得 projectRoot(当前目录不在 git 仓库内)`。
60 53  
61 54 任一缺口 → 输出拦截横幅,逐条列出缺口与回填位置,**停下**,不启动 Workflow:
62 55  
... ... @@ -102,13 +95,14 @@ Workflow({
102 95 进度概述:<步骤 3 概述,如「待跑 3 模块 + 前端阶段」>
103 96  
104 97 已程序化校验:
105   - ✓ 当前在本地默认分支(main / master;如停在 halt 残留功能分支已自动切回)
106   - ✓ 工作树干净,Plan 产物(docs/* + skeleton + DDL)已 commit
  98 + ✓ Plan 完成态:docs/08 §一 A0~A5 全勾
  99 + ✓ 已取得 projectRoot(仓库根绝对路径),传入 Workflow
107 100  
108 101 Workflow 将按模块顺序全自动、静默推进,跑完所有模块或在某模块
109 102 halt(测试闸持续 RED / review 5 轮未过 / 缺值阻塞等)时返回最终状态。
110 103 halt 后请按诊断修复,再重新运行 /erp-workflow:coding-start 续跑
111   - (残留功能分支会自动切回默认分支,无需手动 checkout;但工作树须先清理干净)。
  104 + (git 分支由 coding.mjs 自行处理:残留功能分支直接续用、新模块从默认分支建,
  105 + 无需手动 checkout;但工作树不干净会在运行时 HALT,故重跑前请先清理工作树)。
112 106 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
113 107 ```
114 108  
... ...