kld-sdd 2.4.15 → 2.4.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -93,7 +93,7 @@ function findActiveApplyStage(projectRoot) {
|
|
|
93
93
|
*/
|
|
94
94
|
function hasCompletedCheck(projectRoot, changeName) {
|
|
95
95
|
const safeName = safeChangeName(changeName);
|
|
96
|
-
const eventsChangeDir = path.join(projectRoot, 'skywalk-sdd', '
|
|
96
|
+
const eventsChangeDir = path.join(projectRoot, 'skywalk-sdd', 'events', safeName);
|
|
97
97
|
if (!fs.existsSync(eventsChangeDir)) return false;
|
|
98
98
|
|
|
99
99
|
const jsonlFiles = fs.readdirSync(eventsChangeDir)
|
|
@@ -167,4 +167,5 @@ const changeName = activeApply.change || 'unknown';
|
|
|
167
167
|
console.log(JSON.stringify({
|
|
168
168
|
decision: 'block',
|
|
169
169
|
reason: `[SDD Apply Gate] 检测到 apply 阶段正在执行(change: ${changeName}),但 check 阶段尚未完成。\n\n请先执行 /opsx:check 完成质量门禁检查,再执行 /opsx:apply 进行代码实施。\n\n操作顺序:/opsx:check → /opsx:apply`,
|
|
170
|
-
}));
|
|
170
|
+
}));
|
|
171
|
+
process.exit(2);
|
|
@@ -108,6 +108,46 @@ openspec list --json
|
|
|
108
108
|
> - **Capability**:`<capability-name>`
|
|
109
109
|
> - **任务文件**:`changes/<name>/specs/<capability>/tasks.md`"
|
|
110
110
|
|
|
111
|
+
### 1.2 【Check 门禁检查】验证质量门禁状态
|
|
112
|
+
|
|
113
|
+
> **⛔ 强制门禁**:apply 阶段开始前,必须确认 check 阶段已完成。这是 SDD 流程的关键质量保障。
|
|
114
|
+
|
|
115
|
+
**检查方式**:
|
|
116
|
+
|
|
117
|
+
1. **读取 telemetry 事件数据**,检查当前 change 是否已有完成的 check 阶段:
|
|
118
|
+
```bash
|
|
119
|
+
node skywalk-sdd/log.cjs doctor --project=. --change=<change-name>
|
|
120
|
+
```
|
|
121
|
+
或在 `skywalk-sdd/data/events/<change-name>/` 目录中搜索 `stage_end` + `command=check` + `result=success` 事件。
|
|
122
|
+
|
|
123
|
+
2. **若 check 已完成** ✅:
|
|
124
|
+
> "✅ Check 门禁已通过(事件 ID: evt_xxx),继续 apply 流程。"
|
|
125
|
+
|
|
126
|
+
3. **若 check 未完成** ❌:
|
|
127
|
+
> "⛔ **[Check 门禁未通过]** 检测到当前 change (`<change-name>`) 尚未执行 check 阶段或 check 未通过。
|
|
128
|
+
>
|
|
129
|
+
> **必须先执行质量门禁检查,再开始代码实施:**
|
|
130
|
+
>
|
|
131
|
+
> ```
|
|
132
|
+
> /opsx:check <change-name>
|
|
133
|
+
> ```
|
|
134
|
+
>
|
|
135
|
+
> **原因**:check 阶段验证文档完整性、一致性、可执行性,跳过 check 直接 apply 可能导致需求误解或设计缺陷。
|
|
136
|
+
>
|
|
137
|
+
> **操作顺序**:`/opsx:check → /opsx:apply`
|
|
138
|
+
>
|
|
139
|
+
> 是否要现在执行 check?"
|
|
140
|
+
|
|
141
|
+
- 若用户确认执行 check → 引导执行 `/opsx:check`
|
|
142
|
+
- 若用户坚持跳过 → **强制拒绝**,不得跳过 check 直接 apply
|
|
143
|
+
|
|
144
|
+
4. **若 telemetry 数据缺失**(如新项目无历史数据):
|
|
145
|
+
> "⚠️ 未找到 check 阶段记录。如果这是首次执行,请先运行 `/opsx:check <change-name>` 完成质量门禁。
|
|
146
|
+
>
|
|
147
|
+
> 是否要现在执行 check?"
|
|
148
|
+
|
|
149
|
+
> **🔗 双重保障**:此技能自检与 `sdd-apply-gate.cjs` Hook 形成双重门禁。即使 Hook 因环境问题未触发,技能自检仍会拦截未 check 的 apply。
|
|
150
|
+
|
|
111
151
|
### 1.5 【隔离工作区】设置 Git Worktree
|
|
112
152
|
|
|
113
153
|
> **🤖 使用 Git Worktree 创建隔离工作区,保护主分支不受变更影响。**
|
|
@@ -303,6 +343,7 @@ node skywalk-sdd/log.cjs record --type=ai_adoption_review --command=apply --proj
|
|
|
303
343
|
|
|
304
344
|
## Guardrails
|
|
305
345
|
|
|
346
|
+
- **⛔ Check 门禁检查**:apply 阶段开始前,必须确认 check 阶段已完成。若 check 未完成,**强制拒绝** apply,引导用户先执行 `/opsx:check`。与 `sdd-apply-gate.cjs` Hook 形成双重保障。
|
|
306
347
|
- **⛔ 渐进式加载**:只加载当前 Capability 的四文档链
|
|
307
348
|
- **⛔ 隔离红线**:绝对禁止加载同级其他 Capability 的文档
|
|
308
349
|
- **⛔ DAG 依赖拦截**:执行任务前必须检查依赖,前置未完成必须拦截
|