speccore 8.3.313 → 8.3.333

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.
Files changed (126) hide show
  1. package/dist/cli.js +3 -1
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/analyze.js +2 -2
  4. package/dist/commands/analyze.js.map +1 -1
  5. package/dist/commands/config.d.ts.map +1 -1
  6. package/dist/commands/config.js +10 -0
  7. package/dist/commands/config.js.map +1 -1
  8. package/dist/commands/doc2spec.d.ts +12 -0
  9. package/dist/commands/doc2spec.d.ts.map +1 -1
  10. package/dist/commands/doc2spec.js +64 -17
  11. package/dist/commands/doc2spec.js.map +1 -1
  12. package/dist/commands/done.js +4 -1
  13. package/dist/commands/done.js.map +1 -1
  14. package/dist/commands/execute.js +22 -19
  15. package/dist/commands/execute.js.map +1 -1
  16. package/dist/commands/help.js +1 -0
  17. package/dist/commands/help.js.map +1 -1
  18. package/dist/commands/init.d.ts.map +1 -1
  19. package/dist/commands/init.js +299 -113
  20. package/dist/commands/init.js.map +1 -1
  21. package/dist/commands/iteration/create.js +9 -6
  22. package/dist/commands/iteration/create.js.map +1 -1
  23. package/dist/commands/iteration/taskify.d.ts +8 -0
  24. package/dist/commands/iteration/taskify.d.ts.map +1 -1
  25. package/dist/commands/iteration/taskify.js +55 -38
  26. package/dist/commands/iteration/taskify.js.map +1 -1
  27. package/dist/commands/review.js +2 -7
  28. package/dist/commands/review.js.map +1 -1
  29. package/dist/commands/run.js +11 -2
  30. package/dist/commands/run.js.map +1 -1
  31. package/dist/commands/spec2doc.d.ts +7 -0
  32. package/dist/commands/spec2doc.d.ts.map +1 -1
  33. package/dist/commands/spec2doc.js +32 -18
  34. package/dist/commands/spec2doc.js.map +1 -1
  35. package/dist/commands/unitize.d.ts +2 -0
  36. package/dist/commands/unitize.d.ts.map +1 -1
  37. package/dist/commands/unitize.js +79 -0
  38. package/dist/commands/unitize.js.map +1 -1
  39. package/dist/commands/update.d.ts.map +1 -1
  40. package/dist/commands/update.js +6 -0
  41. package/dist/commands/update.js.map +1 -1
  42. package/dist/core/agents/engine/agent-loader.d.ts +2 -0
  43. package/dist/core/agents/engine/agent-loader.d.ts.map +1 -1
  44. package/dist/core/agents/engine/agent-loader.js +8 -2
  45. package/dist/core/agents/engine/agent-loader.js.map +1 -1
  46. package/dist/core/analyze-engine.d.ts +11 -0
  47. package/dist/core/analyze-engine.d.ts.map +1 -1
  48. package/dist/core/analyze-engine.js +136 -112
  49. package/dist/core/analyze-engine.js.map +1 -1
  50. package/dist/core/ask-engine.d.ts.map +1 -1
  51. package/dist/core/ask-engine.js +22 -2
  52. package/dist/core/ask-engine.js.map +1 -1
  53. package/dist/core/asset-stamp.d.ts +40 -0
  54. package/dist/core/asset-stamp.d.ts.map +1 -0
  55. package/dist/core/asset-stamp.js +77 -0
  56. package/dist/core/asset-stamp.js.map +1 -0
  57. package/dist/core/change-detection.d.ts +1 -1
  58. package/dist/core/change-detection.d.ts.map +1 -1
  59. package/dist/core/change-detection.js +28 -1
  60. package/dist/core/change-detection.js.map +1 -1
  61. package/dist/core/code-graph/incremental-build.d.ts.map +1 -1
  62. package/dist/core/code-graph/incremental-build.js +2 -2
  63. package/dist/core/code-graph/incremental-build.js.map +1 -1
  64. package/dist/core/code-graph/index.d.ts.map +1 -1
  65. package/dist/core/code-graph/index.js +3 -2
  66. package/dist/core/code-graph/index.js.map +1 -1
  67. package/dist/core/code-graph/requirement-linker.js +2 -2
  68. package/dist/core/code-graph/requirement-linker.js.map +1 -1
  69. package/dist/core/code-scanner.d.ts +11 -0
  70. package/dist/core/code-scanner.d.ts.map +1 -1
  71. package/dist/core/code-scanner.js +103 -1
  72. package/dist/core/code-scanner.js.map +1 -1
  73. package/dist/core/constitution-builder.d.ts +24 -0
  74. package/dist/core/constitution-builder.d.ts.map +1 -1
  75. package/dist/core/constitution-builder.js +110 -88
  76. package/dist/core/constitution-builder.js.map +1 -1
  77. package/dist/core/doc-validator.d.ts.map +1 -1
  78. package/dist/core/doc-validator.js +14 -4
  79. package/dist/core/doc-validator.js.map +1 -1
  80. package/dist/core/git-integration.d.ts +13 -8
  81. package/dist/core/git-integration.d.ts.map +1 -1
  82. package/dist/core/git-integration.js +191 -89
  83. package/dist/core/git-integration.js.map +1 -1
  84. package/dist/core/global-knowledge.js +1 -1
  85. package/dist/core/global-knowledge.js.map +1 -1
  86. package/dist/core/intent-recognition.d.ts.map +1 -1
  87. package/dist/core/intent-recognition.js +40 -0
  88. package/dist/core/intent-recognition.js.map +1 -1
  89. package/dist/core/platform-registry.d.ts +2 -2
  90. package/dist/core/platform-registry.d.ts.map +1 -1
  91. package/dist/core/platform-registry.js +25 -2
  92. package/dist/core/platform-registry.js.map +1 -1
  93. package/dist/core/prompt-builder.js +1 -1
  94. package/dist/core/prompt-builder.js.map +1 -1
  95. package/dist/core/rag-engine.d.ts +25 -0
  96. package/dist/core/rag-engine.d.ts.map +1 -1
  97. package/dist/core/rag-engine.js +88 -3
  98. package/dist/core/rag-engine.js.map +1 -1
  99. package/dist/core/refresh-scheduler.js +39 -17
  100. package/dist/core/refresh-scheduler.js.map +1 -1
  101. package/dist/core/requirement-clarifier.js +1 -1
  102. package/dist/core/requirement-clarifier.js.map +1 -1
  103. package/dist/core/task-paths.d.ts.map +1 -1
  104. package/dist/core/task-paths.js +4 -1
  105. package/dist/core/task-paths.js.map +1 -1
  106. package/dist/core/unified-config.d.ts +8 -0
  107. package/dist/core/unified-config.d.ts.map +1 -1
  108. package/dist/core/unified-config.js +3 -0
  109. package/dist/core/unified-config.js.map +1 -1
  110. package/dist/core/unit-context-assembler.d.ts.map +1 -1
  111. package/dist/core/unit-context-assembler.js +21 -45
  112. package/dist/core/unit-context-assembler.js.map +1 -1
  113. package/dist/core/unit-staffing.d.ts +28 -1
  114. package/dist/core/unit-staffing.d.ts.map +1 -1
  115. package/dist/core/unit-staffing.js +115 -20
  116. package/dist/core/unit-staffing.js.map +1 -1
  117. package/dist/utils/markdown-image.d.ts +12 -0
  118. package/dist/utils/markdown-image.d.ts.map +1 -0
  119. package/dist/utils/markdown-image.js +34 -0
  120. package/dist/utils/markdown-image.js.map +1 -0
  121. package/package.json +2 -1
  122. package/templates/ci/github-actions.yml +1 -1
  123. package/templates/html/speccore-ask-guide.html +1 -1
  124. package/templates/html/speccore-ask-pipeline.html +1 -1
  125. package/templates/html/speccore-ask-result.html +1 -1
  126. package/templates/html/speccore-help.html +2 -2
@@ -216,16 +216,26 @@ async function checkImages(content, outputDir, iterDir, issues) {
216
216
  while ((match = imgRegex.exec(content)) !== null) {
217
217
  images.push({ alt: match[1], path: match[2] });
218
218
  }
219
+ // 兼容 HTML <img src="..."> 形态(旧 doc2spec 产物 / 手写文档),v8.3.331+
220
+ content.replace(/<img\b([^>]*)\/?>/g, (_tag, attrs) => {
221
+ const src = /src="([^"]+)"/.exec(attrs)?.[1];
222
+ const alt = /alt="([^"]*)"/.exec(attrs)?.[1] ?? '';
223
+ if (src)
224
+ images.push({ alt, path: src });
225
+ return '';
226
+ });
219
227
  let missingCount = 0;
220
228
  for (const img of images) {
221
229
  // 跳过外部 URL
222
230
  if (img.path.startsWith('http://') || img.path.startsWith('https://'))
223
231
  continue;
232
+ // Windows 反斜杠归一化(旧产物可能带 \),避免 basename 拆分失效
233
+ const posix = img.path.replace(/\\/g, '/');
224
234
  // 尝试在多个可能的位置查找图片
225
235
  const possiblePaths = [
226
- (0, path_1.join)(outputDir, img.path),
227
- (0, path_1.join)(iterDir, '010-requirements', 'assets', 'extracted', img.path.replace(/.*\//, '')),
228
- (0, path_1.join)(iterDir, img.path),
236
+ (0, path_1.join)(outputDir, posix),
237
+ (0, path_1.join)(iterDir, '010-requirements', 'assets', 'extracted', posix.replace(/.*\//, '')),
238
+ (0, path_1.join)(iterDir, posix),
229
239
  ];
230
240
  let found = false;
231
241
  for (const p of possiblePaths) {
@@ -239,7 +249,7 @@ async function checkImages(content, outputDir, iterDir, issues) {
239
249
  issues.push({
240
250
  severity: 'error',
241
251
  category: 'image',
242
- description: `图片引用可能失效: ${img.path}`,
252
+ description: `图片引用可能失效: ${posix}`,
243
253
  suggestion: '检查 pandoc 是否正确提取了图片,或手动将图片放入 assets/extracted/ 目录',
244
254
  fixed: false,
245
255
  });
@@ -1 +1 @@
1
- {"version":3,"file":"doc-validator.js","sourceRoot":"","sources":["../../src/core/doc-validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doc-validator.js","sourceRoot":"","sources":["../../src/core/doc-validator.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,8 @@
11
11
  /**
12
12
  * Git 配置 — 三级回退:子任务级 > 迭代级 > 全局级 > 默认值
13
13
  *
14
- * 继承链:命令行参数 > 子任务 .meta/git-config > 迭代级 PROJECT_GRAPH.md > 全局 CONSTITUTION.md > 默认值
14
+ * 继承链:命令行参数 > 子任务 .meta/git-config > 迭代级 PROJECT_GRAPH.md
15
+ * > 全局 PROJECT.yaml git 段(机器事实源,v8.3.322+)> CONSTITUTION.md(AI 契约回退)> 默认值
15
16
  */
16
17
  export interface GitConfig {
17
18
  /** 默认基础分支(如 main/master) */
@@ -47,7 +48,7 @@ export declare const STANDARD_BRANCH_TYPES: Set<string>;
47
48
  * 为任务创建 Git 分支
48
49
  *
49
50
  * 分支名按子任务级/迭代级/全局配置生成,支持自定义前缀和格式模板
50
- * 三级回退:子任务 .meta/git-config > 迭代 PROJECT_GRAPH.md > 全局 CONSTITUTION.md
51
+ * 三级回退:子任务 .meta/git-config > 迭代 PROJECT_GRAPH.md > 全局 PROJECT.yaml > CONSTITUTION 回退
51
52
  *
52
53
  * v8.3.87+: 增加 cwd 参数,支持 speccore 与工程代码分离的目录结构
53
54
  */
@@ -79,8 +80,9 @@ export declare function loadSubtaskGitConfig(taskDir: string): Partial<GitConfig
79
80
  * 配置来源优先级:
80
81
  * 1. 子任务级 .meta/git-config 任务自身配置
81
82
  * 2. 迭代级 PROJECT_GRAPH.md frontmatter 字段
82
- * 3. 全局 CONSTITUTION.md Git 分支策略章节
83
- * 4. 默认值
83
+ * 3. 全局 PROJECT.yaml git 段 机器事实源(v8.3.322+)
84
+ * 4. 全局 CONSTITUTION.md 「Git 分支策略」章节(AI 契约回退)
85
+ * 5. 默认值
84
86
  *
85
87
  * 每个字段独立回退:子任务只配了 branchPrefix,defaultBranch 仍从迭代/全局继承
86
88
  */
@@ -121,7 +123,9 @@ export declare function generateCommitMessage(taskId: string, taskName: string,
121
123
  */
122
124
  export declare function generatePRDescription(taskId: string, taskName: string, cwd?: string): string;
123
125
  /**
124
- * 从 CONSTITUTION.md 读取保护分支列表
126
+ * 读取保护分支列表
127
+ * v8.3.323: 严格收敛——PROJECT.yaml 声明了(含显式清空 [])就以其为准;
128
+ * 未声明则回退 CONSTITUTION「保护分支」;两处都无则兜底默认 main/master。
125
129
  */
126
130
  export declare function getProtectedBranches(): string[];
127
131
  /**
@@ -131,9 +135,10 @@ export declare function getProtectedBranches(): string[];
131
135
  */
132
136
  export declare function isProtectedBranch(branchName: string): boolean;
133
137
  /**
134
- * 合并 PROJECT.yaml 全局 + 端级 protected_branches(v8.3.300)
135
- * 此前 PROJECT.yaml 配置的保护分支从未生效(getEffectiveGitConfig 无消费方),
136
- * pr/execute 只认 CONSTITUTION.md。此处以 PROJECT.yaml 为主源、CONSTITUTION.md 回退。
138
+ * 获取拦截用保护分支(v8.3.323: 严格收敛,与同步版 getProtectedBranches 同口径)
139
+ * PROJECT.yaml 声明即准(含显式清空);未声明回退 CONSTITUTION;两处都无兜底默认。
140
+ * 此前为「CONSTITUTION + PROJECT.yaml 合并」——PROJECT.yaml 已声明时残留的
141
+ * CONSTITUTION 旧值仍会拦截,用户删改 PROJECT.yaml 无法解除保护,与唯一事实源矛盾。
137
142
  */
138
143
  export declare function getProtectedBranchesMerged(): Promise<string[]>;
139
144
  /** isProtectedBranch 的异步合并版(含 PROJECT.yaml 全局/端级配置) */
@@ -1 +1 @@
1
- {"version":3,"file":"git-integration.d.ts","sourceRoot":"","sources":["../../src/core/git-integration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-integration.d.ts","sourceRoot":"","sources":["../../src/core/git-integration.ts"],"names":[],"mappings":"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"}
@@ -9,39 +9,6 @@
9
9
  * - Git Hook 安装
10
10
  * - 保护分支拦截
11
11
  */
12
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
13
- if (k2 === undefined) k2 = k;
14
- var desc = Object.getOwnPropertyDescriptor(m, k);
15
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
16
- desc = { enumerable: true, get: function() { return m[k]; } };
17
- }
18
- Object.defineProperty(o, k2, desc);
19
- }) : (function(o, m, k, k2) {
20
- if (k2 === undefined) k2 = k;
21
- o[k2] = m[k];
22
- }));
23
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
24
- Object.defineProperty(o, "default", { enumerable: true, value: v });
25
- }) : function(o, v) {
26
- o["default"] = v;
27
- });
28
- var __importStar = (this && this.__importStar) || (function () {
29
- var ownKeys = function(o) {
30
- ownKeys = Object.getOwnPropertyNames || function (o) {
31
- var ar = [];
32
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
33
- return ar;
34
- };
35
- return ownKeys(o);
36
- };
37
- return function (mod) {
38
- if (mod && mod.__esModule) return mod;
39
- var result = {};
40
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
41
- __setModuleDefault(result, mod);
42
- return result;
43
- };
44
- })();
45
12
  Object.defineProperty(exports, "__esModule", { value: true });
46
13
  exports.STANDARD_BRANCH_TYPES = exports.TASK_TYPE_TO_BRANCH_TYPE = void 0;
47
14
  exports.createTaskBranch = createTaskBranch;
@@ -92,11 +59,116 @@ const DEFAULT_GIT_CONFIG = {
92
59
  mergeWhitelist: [],
93
60
  mergeBlacklist: [],
94
61
  };
62
+ /**
63
+ * 同步读取 PROJECT.yaml 的 Git 配置(v8.3.322+)
64
+ *
65
+ * Git 配置单向收敛:PROJECT.yaml 是机器事实源,CONSTITUTION.md 是 AI 阅读契约与兼容回退。
66
+ * 只认用户显式声明的字段(不合并 DEFAULT_PROJECT_CONFIG 默认值),未声明返回 undefined,
67
+ * 由调用方按字段独立回退 CONSTITUTION / 默认值。
68
+ *
69
+ * 与 resolveTaskBaseBranch 的 loadRawProjectConfig 同源同语义,但本函数是同步版——
70
+ * loadGitConfig / getProtectedBranches 是同步接口,不能 await。
71
+ */
72
+ function loadRawProjectGitSync() {
73
+ try {
74
+ const projectPath = (0, path_1.join)((0, task_utils_1.getProjectRoot)(), '.speccore', 'PROJECT.yaml');
75
+ if (!(0, fs_extra_1.existsSync)(projectPath))
76
+ return null;
77
+ const raw = (0, unified_config_1.parseYaml)((0, fs_extra_1.readFileSync)(projectPath, 'utf-8'));
78
+ if (!raw?.git)
79
+ return null;
80
+ const result = {};
81
+ if (typeof raw.git.default_base === 'string' && raw.git.default_base.trim()) {
82
+ result.defaultBase = raw.git.default_base.trim();
83
+ }
84
+ // 全局 + 端级 protected_branches 合并;「声明」= git 段键存在 或 任一端声明
85
+ const declared = raw.git.protected_branches !== undefined && raw.git.protected_branches !== null
86
+ || (raw.platforms || []).some((p) => p?.protected_branches !== undefined && p?.protected_branches !== null);
87
+ if (declared)
88
+ result.declaredProtected = true;
89
+ const merged = new Set();
90
+ for (const b of raw.git.protected_branches || []) {
91
+ if (b != null)
92
+ merged.add(String(b).trim());
93
+ }
94
+ for (const p of raw.platforms || []) {
95
+ for (const b of p?.protected_branches || []) {
96
+ if (b != null)
97
+ merged.add(String(b).trim());
98
+ }
99
+ }
100
+ if (merged.size > 0)
101
+ result.protectedBranches = [...merged];
102
+ return result;
103
+ }
104
+ catch {
105
+ return null;
106
+ }
107
+ }
108
+ /** Git 源不一致告警标记文件(指纹去重,避免每个任务刷屏) */
109
+ const gitSourceWarnPath = () => (0, path_1.join)((0, task_utils_1.getProjectRoot)(), '.speccore', 'local', '.git-source-warn.json');
110
+ /**
111
+ * Git 配置双源不一致告警(v8.3.323)
112
+ *
113
+ * 存量项目升级后,PROJECT.yaml 与 CONSTITUTION 可能残留两份不一致的 Git 配置。
114
+ * 机器已切到「PROJECT.yaml 声明即准」,此处把不一致摆到明面上,按指纹只告警一次:
115
+ * 同一不一致不重复刷屏;用户修平后标记清除,未来再不一致可再次告警。
116
+ */
117
+ function warnGitSourceMismatch() {
118
+ try {
119
+ const constitutionPath = (0, path_1.join)((0, task_utils_1.getProjectRoot)(), '.speccore', 'CONSTITUTION.md');
120
+ if (!(0, fs_extra_1.existsSync)(constitutionPath))
121
+ return;
122
+ const content = (0, fs_extra_1.readFileSync)(constitutionPath, 'utf-8');
123
+ const cnDefault = content.match(/^[-•]\s*\**默认分支\**\s*[::]\s*([A-Za-z0-9._\/-]+)/m)?.[1] ?? null;
124
+ const cnProtectRaw = content.match(/^[-•]\s*\**保护分支\**\s*[::]\s*(.+)$/m)?.[1] ?? null;
125
+ const cnProtect = cnProtectRaw ? cnProtectRaw.split(',').map((s) => s.trim()).filter(Boolean) : null;
126
+ const projectGit = loadRawProjectGitSync();
127
+ const mismatches = [];
128
+ if (projectGit?.defaultBase && cnDefault && projectGit.defaultBase !== cnDefault) {
129
+ mismatches.push(`默认分支:PROJECT.yaml=${projectGit.defaultBase},CONSTITUTION=${cnDefault}`);
130
+ }
131
+ if (projectGit?.declaredProtected && cnProtect) {
132
+ const py = [...(projectGit.protectedBranches || [])].sort().join(',');
133
+ const cn = [...cnProtect].sort().join(',');
134
+ if (py !== cn)
135
+ mismatches.push(`保护分支:PROJECT.yaml=[${py}],CONSTITUTION=[${cn}]`);
136
+ }
137
+ const markerPath = gitSourceWarnPath();
138
+ const fingerprint = mismatches.join(' || ');
139
+ let warned = '';
140
+ try {
141
+ warned = (0, fs_extra_1.readFileSync)(markerPath, 'utf-8').trim();
142
+ }
143
+ catch { }
144
+ if (mismatches.length === 0) {
145
+ if (warned) {
146
+ try {
147
+ (0, fs_extra_1.writeFileSync)(markerPath, '');
148
+ }
149
+ catch { }
150
+ } // 已修平,清除标记
151
+ return;
152
+ }
153
+ if (warned === fingerprint)
154
+ return; // 同一不一致已告警过
155
+ try {
156
+ (0, fs_extra_1.ensureFileSync)(markerPath);
157
+ (0, fs_extra_1.writeFileSync)(markerPath, fingerprint);
158
+ }
159
+ catch { }
160
+ for (const m of mismatches) {
161
+ console.warn(`⚠️ SpecCore: Git 配置两处不一致(机器以 PROJECT.yaml 为准)— ${m}`);
162
+ }
163
+ console.warn(' 请修正 CONSTITUTION.md「Git 分支策略」或 PROJECT.yaml git 段,使两处一致');
164
+ }
165
+ catch { }
166
+ }
95
167
  /**
96
168
  * 为任务创建 Git 分支
97
169
  *
98
170
  * 分支名按子任务级/迭代级/全局配置生成,支持自定义前缀和格式模板
99
- * 三级回退:子任务 .meta/git-config > 迭代 PROJECT_GRAPH.md > 全局 CONSTITUTION.md
171
+ * 三级回退:子任务 .meta/git-config > 迭代 PROJECT_GRAPH.md > 全局 PROJECT.yaml > CONSTITUTION 回退
100
172
  *
101
173
  * v8.3.87+: 增加 cwd 参数,支持 speccore 与工程代码分离的目录结构
102
174
  */
@@ -303,46 +375,68 @@ function loadSubtaskGitConfig(taskDir) {
303
375
  * 配置来源优先级:
304
376
  * 1. 子任务级 .meta/git-config 任务自身配置
305
377
  * 2. 迭代级 PROJECT_GRAPH.md frontmatter 字段
306
- * 3. 全局 CONSTITUTION.md Git 分支策略章节
307
- * 4. 默认值
378
+ * 3. 全局 PROJECT.yaml git 段 机器事实源(v8.3.322+)
379
+ * 4. 全局 CONSTITUTION.md 「Git 分支策略」章节(AI 契约回退)
380
+ * 5. 默认值
308
381
  *
309
382
  * 每个字段独立回退:子任务只配了 branchPrefix,defaultBranch 仍从迭代/全局继承
310
383
  */
311
384
  function loadGitConfig(iteration, taskDir) {
312
385
  const config = {};
313
- // ── 1. 读取全局 CONSTITUTION.md ──
386
+ // v8.3.323: 双源不一致告警(指纹去重,仅在 PROJECT.yaml 与 CONSTITUTION 值冲突时提示一次)
387
+ warnGitSourceMismatch();
388
+ // ── 1. 全局层:PROJECT.yaml git 段(机器事实源)> CONSTITUTION.md「Git 分支策略」(AI 契约回退) ──
389
+ // v8.3.322: Git 配置单向收敛——PROJECT.yaml 是唯一机器事实源;CONSTITUTION 保留为
390
+ // AI 阅读契约与兼容回退,同一字段仅在 PROJECT.yaml 未显式声明时才从 CONSTITUTION 取值。
391
+ // 1a. PROJECT.yaml(同步读原始文件;branch_prefix 是旧语义兼容字段,其现代语义
392
+ // 已由 getEffectiveGitConfig 端级路径消费,此处不注入以免与 branchType 双拼)
393
+ const projectGit = loadRawProjectGitSync();
394
+ if (projectGit) {
395
+ if (projectGit.defaultBase)
396
+ config.defaultBranch = projectGit.defaultBase;
397
+ // v8.3.323: 声明即准(含显式清空 [] = 无保护分支)
398
+ if (projectGit.declaredProtected)
399
+ config.protectedBranches = projectGit.protectedBranches || [];
400
+ }
401
+ // 1b. CONSTITUTION.md 回退(每字段独立:仅当上面未取到值)
314
402
  try {
315
403
  const constitutionPath = (0, path_1.join)((0, task_utils_1.getProjectRoot)(), '.speccore', 'CONSTITUTION.md');
316
404
  if ((0, fs_extra_1.existsSync)(constitutionPath)) {
317
405
  const content = (0, fs_extra_1.readFileSync)(constitutionPath, 'utf-8');
318
406
  // 默认分支(v8.3.300: 行首锚定 + 兼容「**默认分支**」双侧加粗格式,避开「> - **默认分支**:如 main...」字段说明行误匹配)
319
- const branchMatch = content.match(/^[-•]\s*\**默认分支\**\s*[::]\s*([A-Za-z0-9._\/-]+)/m);
320
- if (branchMatch)
321
- config.defaultBranch = branchMatch[1];
407
+ if (!config.defaultBranch) {
408
+ const branchMatch = content.match(/^[-•]\s*\**默认分支\**\s*[::]\s*([A-Za-z0-9._\/-]+)/m);
409
+ if (branchMatch)
410
+ config.defaultBranch = branchMatch[1];
411
+ }
322
412
  // 任务分支类型段(从"任务分支: feature/{Task-ID}"提取,兼容加粗格式)
323
413
  // v8.3.306: 语义矫正——「任务分支」的 X/ 段是分支类型而非前缀;此前误存
324
414
  // branchPrefix,与 {type} 段重复拼出 feature/feature-Task-XXX,导致分支名与
325
415
  // 子任务 ID 不一致。标准类型名写入 branchType,自定义值(兼容保留)仍入 branchPrefix。
326
- const taskBranchMatch = content.match(/^[-•]\s*\**任务分支\**\s*[::]\s*(\S+?)\//m);
327
- if (taskBranchMatch) {
328
- const extracted = taskBranchMatch[1];
329
- // v8.3.293+: 模板变量(如 {type})不是真实值,忽略以免污染分支命名
330
- if (!extracted.includes('{') && !extracted.includes('}')) {
331
- if (exports.STANDARD_BRANCH_TYPES.has(extracted)) {
332
- config.branchType = extracted;
333
- }
334
- else {
335
- config.branchPrefix = extracted;
416
+ if (!config.branchType) {
417
+ const taskBranchMatch = content.match(/^[-•]\s*\**任务分支\**\s*[::]\s*(\S+?)\//m);
418
+ if (taskBranchMatch) {
419
+ const extracted = taskBranchMatch[1];
420
+ // v8.3.293+: 模板变量(如 {type})不是真实值,忽略以免污染分支命名
421
+ if (!extracted.includes('{') && !extracted.includes('}')) {
422
+ if (exports.STANDARD_BRANCH_TYPES.has(extracted)) {
423
+ config.branchType = extracted;
424
+ }
425
+ else if (config.branchPrefix === undefined) {
426
+ config.branchPrefix = extracted;
427
+ }
336
428
  }
337
429
  }
338
430
  }
339
431
  // 保护分支(行首锚定,兼容「**保护分支**」双侧加粗格式,避开字段说明行)
340
- const protectMatch = content.match(/^[-•]\s*\**保护分支\**\s*[::]\s*(.+)$/m);
341
- if (protectMatch) {
342
- config.protectedBranches = protectMatch[1]
343
- .split(',')
344
- .map((s) => s.trim())
345
- .filter(Boolean);
432
+ if (!config.protectedBranches) {
433
+ const protectMatch = content.match(/^[-•]\s*\**保护分支\**\s*[::]\s*(.+)$/m);
434
+ if (protectMatch) {
435
+ config.protectedBranches = protectMatch[1]
436
+ .split(',')
437
+ .map((s) => s.trim())
438
+ .filter(Boolean);
439
+ }
346
440
  }
347
441
  // v8.3.209+: 依赖合并策略(auto/manual/off)+ 黑白名单
348
442
  const mergeDepMatch = content.match(/依赖合并策略[::]\s*(\S+)/);
@@ -595,26 +689,36 @@ function generatePRDescription(taskId, taskName, cwd) {
595
689
  return lines.join('\n');
596
690
  }
597
691
  /**
598
- * 从 CONSTITUTION.md 读取保护分支列表
692
+ * 读取保护分支列表
693
+ * v8.3.323: 严格收敛——PROJECT.yaml 声明了(含显式清空 [])就以其为准;
694
+ * 未声明则回退 CONSTITUTION「保护分支」;两处都无则兜底默认 main/master。
599
695
  */
600
696
  function getProtectedBranches() {
697
+ const projectGit = loadRawProjectGitSync();
698
+ if (projectGit?.declaredProtected) {
699
+ // 声明即准:显式清空 = 无保护分支,尊重用户意图,不回退 CONSTITUTION
700
+ return projectGit.protectedBranches || [];
701
+ }
702
+ // 2. CONSTITUTION.md「保护分支」(AI 契约回退)
703
+ const merged = new Set();
601
704
  try {
602
705
  const constitutionPath = (0, path_1.join)((0, task_utils_1.getProjectRoot)(), '.speccore', 'CONSTITUTION.md');
603
- if (!(0, fs_extra_1.existsSync)(constitutionPath))
604
- return [];
605
- const content = (0, fs_extra_1.readFileSync)(constitutionPath, 'utf-8');
606
- // v8.3.300: 行首锚定 + 兼容「**保护分支**」双侧加粗格式(此前匹配不到导致保护分支检查失效)
607
- const match = content.match(/^[-•]\s*\**保护分支\**\s*[::]\s*(.+)$/m);
608
- if (!match)
609
- return [];
610
- return match[1]
611
- .split(',')
612
- .map((s) => s.trim())
613
- .filter(Boolean);
614
- }
615
- catch {
616
- return [];
706
+ if ((0, fs_extra_1.existsSync)(constitutionPath)) {
707
+ const content = (0, fs_extra_1.readFileSync)(constitutionPath, 'utf-8');
708
+ // v8.3.300: 行首锚定 + 兼容「**保护分支**」双侧加粗格式(此前匹配不到导致保护分支检查失效)
709
+ const match = content.match(/^[-•]\s*\**保护分支\**\s*[::]\s*(.+)$/m);
710
+ if (match) {
711
+ for (const s of match[1].split(',')) {
712
+ const v = s.trim();
713
+ if (v)
714
+ merged.add(v);
715
+ }
716
+ }
717
+ }
617
718
  }
719
+ catch { }
720
+ const list = [...merged];
721
+ return list.length > 0 ? list : DEFAULT_GIT_CONFIG.protectedBranches;
618
722
  }
619
723
  /** 单个保护分支规则匹配(精确匹配 + 通配符如 release/*) */
620
724
  function matchesProtectedPattern(branchName, pattern) {
@@ -639,26 +743,14 @@ function isProtectedBranch(branchName) {
639
743
  return false;
640
744
  }
641
745
  /**
642
- * 合并 PROJECT.yaml 全局 + 端级 protected_branches(v8.3.300)
643
- * 此前 PROJECT.yaml 配置的保护分支从未生效(getEffectiveGitConfig 无消费方),
644
- * pr/execute 只认 CONSTITUTION.md。此处以 PROJECT.yaml 为主源、CONSTITUTION.md 回退。
746
+ * 获取拦截用保护分支(v8.3.323: 严格收敛,与同步版 getProtectedBranches 同口径)
747
+ * PROJECT.yaml 声明即准(含显式清空);未声明回退 CONSTITUTION;两处都无兜底默认。
748
+ * 此前为「CONSTITUTION + PROJECT.yaml 合并」——PROJECT.yaml 已声明时残留的
749
+ * CONSTITUTION 旧值仍会拦截,用户删改 PROJECT.yaml 无法解除保护,与唯一事实源矛盾。
645
750
  */
646
751
  async function getProtectedBranchesMerged() {
647
- const merged = new Set(getProtectedBranches());
648
- try {
649
- const { loadProjectConfig } = await Promise.resolve().then(() => __importStar(require('../core/unified-config')));
650
- const pc = await loadProjectConfig();
651
- for (const b of pc.git?.protected_branches || [])
652
- merged.add(b);
653
- for (const p of pc.platforms || []) {
654
- for (const b of p.protected_branches || [])
655
- merged.add(b);
656
- }
657
- }
658
- catch {
659
- // PROJECT.yaml 读取失败时仅用 CONSTITUTION.md 结果
660
- }
661
- return [...merged];
752
+ warnGitSourceMismatch();
753
+ return getProtectedBranches();
662
754
  }
663
755
  /** isProtectedBranch 的异步合并版(含 PROJECT.yaml 全局/端级配置) */
664
756
  async function isProtectedBranchAsync(branchName) {
@@ -688,6 +780,11 @@ function installGitHooks(cwd) {
688
780
  CURRENT_BRANCH=$(git branch --show-current 2>/dev/null)
689
781
  if [ -n "$CURRENT_BRANCH" ] && [ -f ".speccore/CONSTITUTION.md" ]; then
690
782
  PROTECTED=$(grep '保护分支' .speccore/CONSTITUTION.md | sed 's/.*[::]\\s*//' | tr ',' '\\n' | sed 's/^[ \\t]*//')
783
+ # v8.3.322: PROJECT.yaml(git 段 + 端级)protected_branches 一并纳入(机器事实源)
784
+ if [ -f ".speccore/PROJECT.yaml" ]; then
785
+ PY_PROTECTED=$(sed -n '/^[[:space:]]*protected_branches:/,/^[[:space:]]*[a-zA-Z_][a-zA-Z0-9_]*:/p' .speccore/PROJECT.yaml | grep '^[[:space:]]*- ' | sed 's/^[[:space:]]*- //; s/[[:space:]]*#.*$//; s/[[:space:]]*$//')
786
+ PROTECTED="$PROTECTED $PY_PROTECTED"
787
+ fi
691
788
  for PATTERN in $PROTECTED; do
692
789
  # 精确匹配
693
790
  if [ "$CURRENT_BRANCH" = "$PATTERN" ]; then
@@ -722,6 +819,11 @@ git diff --cached --name-only | grep -q "@spec" && echo "✅ Spec annotations fo
722
819
  CURRENT_BRANCH=$(git branch --show-current 2>/dev/null)
723
820
  if [ -n "$CURRENT_BRANCH" ] && [ -f ".speccore/CONSTITUTION.md" ]; then
724
821
  PROTECTED=$(grep '保护分支' .speccore/CONSTITUTION.md | sed 's/.*[::]\\s*//' | tr ',' '\\n' | sed 's/^[ \\t]*//')
822
+ # v8.3.322: PROJECT.yaml(git 段 + 端级)protected_branches 一并纳入(机器事实源)
823
+ if [ -f ".speccore/PROJECT.yaml" ]; then
824
+ PY_PROTECTED=$(sed -n '/^[[:space:]]*protected_branches:/,/^[[:space:]]*[a-zA-Z_][a-zA-Z0-9_]*:/p' .speccore/PROJECT.yaml | grep '^[[:space:]]*- ' | sed 's/^[[:space:]]*- //; s/[[:space:]]*#.*$//; s/[[:space:]]*$//')
825
+ PROTECTED="$PROTECTED $PY_PROTECTED"
826
+ fi
725
827
  for PATTERN in $PROTECTED; do
726
828
  if [ "$CURRENT_BRANCH" = "$PATTERN" ]; then
727
829
  echo "❌ SpecCore: 保护分支 '$CURRENT_BRANCH' 禁止 push"