speccore 8.3.247 → 8.3.249

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.
@@ -1 +1 @@
1
- {"version":3,"file":"split.d.ts","sourceRoot":"","sources":["../../../src/commands/iteration/split.ts"],"names":[],"mappings":"AA0KA,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAmKD,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAorCzF"}
1
+ {"version":3,"file":"split.d.ts","sourceRoot":"","sources":["../../../src/commands/iteration/split.ts"],"names":[],"mappings":"AA0KA,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAqLD,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAorCzF"}
@@ -235,13 +235,33 @@ async function preSplitGate(iterationDir) {
235
235
  level: 'block',
236
236
  });
237
237
  // v8.3.221+: 检查全局 ANALYSIS.md(阻塞级——功能分析,骨架说明 analyze 未落盘)
238
+ // v8.3.248+: 模块级回退——v8.3.238 后 analyze 指示 AI 把 ANALYSIS.md 写在 {feature}/overview/ 下
239
+ // (全局 overview 只留索引类文档),若仍硬性要求全局文件,新流程将永远阻塞无法拆分。
240
+ // 全局缺失/骨架时,任一功能模块的 overview/ANALYSIS.md 非骨架即视为分析已落盘。
238
241
  const analysisGatePath = (0, path_1.join)(specDir, spec_paths_1.GLOBAL_SPECS_DIR, 'ANALYSIS.md');
239
- const analysisGateExists = await (0, fs_extra_1.pathExists)(analysisGatePath);
242
+ let analysisGateExists = await (0, fs_extra_1.pathExists)(analysisGatePath);
240
243
  let analysisGateIsSkeleton = false;
241
244
  if (analysisGateExists) {
242
245
  const ac = await (0, fs_extra_1.readFile)(analysisGatePath, 'utf-8');
243
246
  analysisGateIsSkeleton = ac.includes('<!-- SPEC-SKELETON -->') || ac.trim().length < 100;
244
247
  }
248
+ if (!analysisGateExists || analysisGateIsSkeleton) {
249
+ try {
250
+ const fList = await (0, spec_paths_1.parseFeatureList)(iterationDir);
251
+ for (const f of fList) {
252
+ const fAnalysisPath = (0, path_1.join)(specDir, f, 'overview', 'ANALYSIS.md');
253
+ if (!(await (0, fs_extra_1.pathExists)(fAnalysisPath)))
254
+ continue;
255
+ const c = await (0, fs_extra_1.readFile)(fAnalysisPath, 'utf-8');
256
+ if (!c.includes('<!-- SPEC-SKELETON -->') && c.trim().length >= 100) {
257
+ analysisGateExists = true;
258
+ analysisGateIsSkeleton = false;
259
+ break;
260
+ }
261
+ }
262
+ }
263
+ catch { /* 回退失败保持原判定 */ }
264
+ }
245
265
  items.push({
246
266
  path: analysisGatePath,
247
267
  name: 'ANALYSIS.md',