@dommaker/harness 1.9.0 → 1.10.0

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 (253) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +9 -12
  3. package/dist/cli/commands/check.d.ts +3 -3
  4. package/dist/cli/commands/check.d.ts.map +1 -1
  5. package/dist/cli/commands/check.js +41 -78
  6. package/dist/cli/commands/check.js.map +1 -1
  7. package/dist/cli/commands/constraints-report.d.ts +2 -10
  8. package/dist/cli/commands/constraints-report.d.ts.map +1 -1
  9. package/dist/cli/commands/constraints-report.js +4 -57
  10. package/dist/cli/commands/constraints-report.js.map +1 -1
  11. package/dist/cli/commands/constraints-retire.d.ts +9 -23
  12. package/dist/cli/commands/constraints-retire.d.ts.map +1 -1
  13. package/dist/cli/commands/constraints-retire.js +39 -121
  14. package/dist/cli/commands/constraints-retire.js.map +1 -1
  15. package/dist/cli/commands/constraints.d.ts +3 -8
  16. package/dist/cli/commands/constraints.d.ts.map +1 -1
  17. package/dist/cli/commands/constraints.js +8 -23
  18. package/dist/cli/commands/constraints.js.map +1 -1
  19. package/dist/cli/commands/definitions.js +2 -2
  20. package/dist/cli/commands/init.d.ts +0 -32
  21. package/dist/cli/commands/init.d.ts.map +1 -1
  22. package/dist/cli/commands/init.js +7 -149
  23. package/dist/cli/commands/init.js.map +1 -1
  24. package/dist/cli/commands/report.d.ts.map +1 -1
  25. package/dist/cli/commands/report.js +14 -17
  26. package/dist/cli/commands/report.js.map +1 -1
  27. package/dist/cli/commands/scaffold-templates.d.ts +0 -2
  28. package/dist/cli/commands/scaffold-templates.d.ts.map +1 -1
  29. package/dist/cli/commands/scaffold-templates.js +2 -37
  30. package/dist/cli/commands/scaffold-templates.js.map +1 -1
  31. package/dist/cli/commands/scaffold.d.ts +0 -2
  32. package/dist/cli/commands/scaffold.d.ts.map +1 -1
  33. package/dist/cli/commands/scaffold.js +0 -10
  34. package/dist/cli/commands/scaffold.js.map +1 -1
  35. package/dist/cli/commands/status.js +10 -10
  36. package/dist/cli/commands/status.js.map +1 -1
  37. package/dist/cli/commands/sync-docs/agents-syncer.d.ts +0 -2
  38. package/dist/cli/commands/sync-docs/agents-syncer.d.ts.map +1 -1
  39. package/dist/cli/commands/sync-docs/agents-syncer.js +4 -23
  40. package/dist/cli/commands/sync-docs/agents-syncer.js.map +1 -1
  41. package/dist/core/constraints/capabilities-parser.d.ts.map +1 -1
  42. package/dist/core/constraints/capabilities-parser.js +16 -4
  43. package/dist/core/constraints/capabilities-parser.js.map +1 -1
  44. package/dist/core/constraints/checker.d.ts +15 -24
  45. package/dist/core/constraints/checker.d.ts.map +1 -1
  46. package/dist/core/constraints/checker.js +33 -72
  47. package/dist/core/constraints/checker.js.map +1 -1
  48. package/dist/core/constraints/checkers/docs-freshness.js +1 -1
  49. package/dist/core/constraints/checkers/docs-freshness.js.map +1 -1
  50. package/dist/core/constraints/checkers/governance-presence.d.ts +2 -1
  51. package/dist/core/constraints/checkers/governance-presence.d.ts.map +1 -1
  52. package/dist/core/constraints/checkers/governance-presence.js +4 -3
  53. package/dist/core/constraints/checkers/governance-presence.js.map +1 -1
  54. package/dist/core/constraints/checkers/index.d.ts +1 -1
  55. package/dist/core/constraints/checkers/index.d.ts.map +1 -1
  56. package/dist/core/constraints/checkers/index.js +4 -8
  57. package/dist/core/constraints/checkers/index.js.map +1 -1
  58. package/dist/core/constraints/checkers/iron-flags.d.ts +3 -4
  59. package/dist/core/constraints/checkers/iron-flags.d.ts.map +1 -1
  60. package/dist/core/constraints/checkers/iron-flags.js +4 -5
  61. package/dist/core/constraints/checkers/iron-flags.js.map +1 -1
  62. package/dist/core/constraints/checkers/no-test-simplification.js +1 -1
  63. package/dist/core/constraints/checkers/no-test-simplification.js.map +1 -1
  64. package/dist/core/constraints/checkers/types.d.ts +1 -1
  65. package/dist/core/constraints/checkers/types.js +1 -1
  66. package/dist/core/constraints/definitions/guidelines.d.ts +4 -4
  67. package/dist/core/constraints/definitions/guidelines.d.ts.map +1 -1
  68. package/dist/core/constraints/definitions/guidelines.js +9 -25
  69. package/dist/core/constraints/definitions/guidelines.js.map +1 -1
  70. package/dist/core/constraints/definitions/iron-laws.d.ts +4 -4
  71. package/dist/core/constraints/definitions/iron-laws.d.ts.map +1 -1
  72. package/dist/core/constraints/definitions/iron-laws.js +10 -81
  73. package/dist/core/constraints/definitions/iron-laws.js.map +1 -1
  74. package/dist/core/constraints/definitions.d.ts +7 -9
  75. package/dist/core/constraints/definitions.d.ts.map +1 -1
  76. package/dist/core/constraints/definitions.js +13 -16
  77. package/dist/core/constraints/definitions.js.map +1 -1
  78. package/dist/core/constraints/index.d.ts +2 -5
  79. package/dist/core/constraints/index.d.ts.map +1 -1
  80. package/dist/core/constraints/index.js +3 -13
  81. package/dist/core/constraints/index.js.map +1 -1
  82. package/dist/core/constraints/injection-writer.d.ts +10 -38
  83. package/dist/core/constraints/injection-writer.d.ts.map +1 -1
  84. package/dist/core/constraints/injection-writer.js +17 -54
  85. package/dist/core/constraints/injection-writer.js.map +1 -1
  86. package/dist/core/constraints/run-env.d.ts +1 -10
  87. package/dist/core/constraints/run-env.d.ts.map +1 -1
  88. package/dist/core/constraints/run-env.js +1 -22
  89. package/dist/core/constraints/run-env.js.map +1 -1
  90. package/dist/core/constraints/usage-report.d.ts +5 -7
  91. package/dist/core/constraints/usage-report.d.ts.map +1 -1
  92. package/dist/core/constraints/usage-report.js +5 -10
  93. package/dist/core/constraints/usage-report.js.map +1 -1
  94. package/dist/core/effective-constraints.d.ts +12 -22
  95. package/dist/core/effective-constraints.d.ts.map +1 -1
  96. package/dist/core/effective-constraints.js +13 -30
  97. package/dist/core/effective-constraints.js.map +1 -1
  98. package/dist/core/index.d.ts +2 -2
  99. package/dist/core/index.d.ts.map +1 -1
  100. package/dist/core/index.js +3 -9
  101. package/dist/core/index.js.map +1 -1
  102. package/dist/core/project-config-loader.d.ts +4 -42
  103. package/dist/core/project-config-loader.d.ts.map +1 -1
  104. package/dist/core/project-config-loader.js +16 -125
  105. package/dist/core/project-config-loader.js.map +1 -1
  106. package/dist/core/validators/passes-gate.d.ts +2 -2
  107. package/dist/core/validators/passes-gate.js +6 -6
  108. package/dist/core/validators/passes-gate.js.map +1 -1
  109. package/dist/index.d.ts +7 -10
  110. package/dist/index.d.ts.map +1 -1
  111. package/dist/index.js +9 -18
  112. package/dist/index.js.map +1 -1
  113. package/dist/monitoring/trace-analyzer.d.ts.map +1 -1
  114. package/dist/monitoring/trace-analyzer.js +11 -12
  115. package/dist/monitoring/trace-analyzer.js.map +1 -1
  116. package/dist/monitoring/traces.d.ts +4 -4
  117. package/dist/monitoring/traces.d.ts.map +1 -1
  118. package/dist/monitoring/traces.js +8 -8
  119. package/dist/monitoring/traces.js.map +1 -1
  120. package/dist/presets/standard.d.ts +8 -10
  121. package/dist/presets/standard.d.ts.map +1 -1
  122. package/dist/presets/standard.js +10 -16
  123. package/dist/presets/standard.js.map +1 -1
  124. package/dist/types/constraint.d.ts +24 -35
  125. package/dist/types/constraint.d.ts.map +1 -1
  126. package/dist/types/constraint.js +8 -7
  127. package/dist/types/constraint.js.map +1 -1
  128. package/dist/types/passes-gate.d.ts +5 -5
  129. package/dist/types/passes-gate.d.ts.map +1 -1
  130. package/dist/types/project-config.d.ts +8 -66
  131. package/dist/types/project-config.d.ts.map +1 -1
  132. package/dist/types/project-config.js +3 -2
  133. package/dist/types/project-config.js.map +1 -1
  134. package/dist/types/trace.d.ts +8 -10
  135. package/dist/types/trace.d.ts.map +1 -1
  136. package/package.json +2 -2
  137. package/src/CONTEXT.md +2 -2
  138. package/src/__tests__/checker-extra.test.ts +37 -61
  139. package/src/__tests__/checker.test.ts +10 -115
  140. package/src/__tests__/effective-constraints.test.ts +18 -83
  141. package/src/__tests__/iron-laws.test.ts +71 -90
  142. package/src/__tests__/passes-gate-check.test.ts +2 -2
  143. package/src/__tests__/project-config-loader-extra.test.ts +22 -123
  144. package/src/__tests__/project-config-loader.test.ts +5 -33
  145. package/src/__tests__/public-exports.test.ts +1 -7
  146. package/src/__tests__/public-type-surface.test.ts +2 -5
  147. package/src/__tests__/public-value-surface.test.ts +1 -7
  148. package/src/__tests__/skip-semantics.test.ts +21 -37
  149. package/src/__tests__/trace-analyzer-extra.test.ts +14 -14
  150. package/src/__tests__/trace-analyzer.test.ts +21 -21
  151. package/src/__tests__/trace-collector.test.ts +22 -22
  152. package/src/__tests__/traces.test.ts +27 -28
  153. package/src/cli/commands/CONTEXT.md +9 -9
  154. package/src/cli/commands/__tests__/check-read-count.test.ts +4 -15
  155. package/src/cli/commands/__tests__/check-skip-output.test.ts +14 -14
  156. package/src/cli/commands/__tests__/check.test.ts +14 -31
  157. package/src/cli/commands/__tests__/constraints-report.test.ts +12 -80
  158. package/src/cli/commands/__tests__/constraints-retire.test.ts +42 -231
  159. package/src/cli/commands/__tests__/init-governance-io.test.ts +12 -58
  160. package/src/cli/commands/__tests__/init-ondisk.test.ts +12 -20
  161. package/src/cli/commands/__tests__/init.test.ts +0 -11
  162. package/src/cli/commands/__tests__/project-path-anchoring.test.ts +2 -2
  163. package/src/cli/commands/__tests__/report-extra.test.ts +4 -4
  164. package/src/cli/commands/__tests__/report.test.ts +1 -1
  165. package/src/cli/commands/__tests__/scaffold.test.ts +4 -14
  166. package/src/cli/commands/__tests__/status-analysis-wiring.test.ts +3 -3
  167. package/src/cli/commands/__tests__/status-extra.test.ts +14 -14
  168. package/src/cli/commands/__tests__/status.test.ts +12 -12
  169. package/src/cli/commands/__tests__/sync-docs-agents.test.ts +1 -1
  170. package/src/cli/commands/check.ts +43 -82
  171. package/src/cli/commands/constraints-report.ts +4 -59
  172. package/src/cli/commands/constraints-retire.ts +49 -154
  173. package/src/cli/commands/constraints.ts +11 -26
  174. package/src/cli/commands/definitions.ts +2 -2
  175. package/src/cli/commands/init.ts +8 -179
  176. package/src/cli/commands/report.ts +19 -23
  177. package/src/cli/commands/scaffold-templates.ts +1 -37
  178. package/src/cli/commands/scaffold.ts +0 -11
  179. package/src/cli/commands/status.ts +10 -10
  180. package/src/cli/commands/sync-docs/agents-syncer.ts +4 -25
  181. package/src/core/CONTEXT.md +9 -9
  182. package/src/core/constraints/__tests__/capability-counts.test.ts +5 -5
  183. package/src/core/constraints/__tests__/collect-constraints.test.ts +13 -8
  184. package/src/core/constraints/__tests__/git-evidence.test.ts +4 -7
  185. package/src/core/constraints/__tests__/injection-writer.test.ts +8 -61
  186. package/src/core/constraints/__tests__/run-env.test.ts +5 -34
  187. package/src/core/constraints/__tests__/trace-injection.test.ts +1 -1
  188. package/src/core/constraints/capabilities-parser.ts +17 -5
  189. package/src/core/constraints/checker.ts +39 -88
  190. package/src/core/constraints/checkers/__tests__/check-outcome.test.ts +5 -8
  191. package/src/core/constraints/checkers/__tests__/governance-presence.test.ts +1 -53
  192. package/src/core/constraints/checkers/__tests__/iron-flags.test.ts +5 -25
  193. package/src/core/constraints/checkers/docs-freshness.ts +1 -1
  194. package/src/core/constraints/checkers/governance-presence.ts +4 -3
  195. package/src/core/constraints/checkers/index.ts +4 -10
  196. package/src/core/constraints/checkers/iron-flags.ts +3 -12
  197. package/src/core/constraints/checkers/no-test-simplification.ts +1 -1
  198. package/src/core/constraints/checkers/types.ts +1 -1
  199. package/src/core/constraints/definitions/guidelines.ts +8 -25
  200. package/src/core/constraints/definitions/iron-laws.ts +9 -82
  201. package/src/core/constraints/definitions.ts +14 -15
  202. package/src/core/constraints/index.ts +4 -19
  203. package/src/core/constraints/injection-writer.ts +16 -61
  204. package/src/core/constraints/run-env.ts +1 -33
  205. package/src/core/constraints/usage-report.ts +8 -15
  206. package/src/core/effective-constraints.ts +14 -45
  207. package/src/core/index.ts +3 -10
  208. package/src/core/project-config-loader.ts +20 -145
  209. package/src/core/validators/passes-gate.ts +6 -6
  210. package/src/failure/CONTEXT.md +1 -1
  211. package/src/hooks/__tests__/bootstrap.test.ts +3 -5
  212. package/src/index.ts +8 -18
  213. package/src/monitoring/__tests__/trace-file-anchoring.test.ts +1 -1
  214. package/src/monitoring/__tests__/traces.test.ts +22 -22
  215. package/src/monitoring/trace-analyzer.ts +12 -13
  216. package/src/monitoring/traces.ts +8 -8
  217. package/src/presets/__tests__/standard.test.ts +12 -16
  218. package/src/presets/standard.ts +14 -23
  219. package/src/types/__tests__/types.test.ts +3 -3
  220. package/src/types/constraint.ts +26 -40
  221. package/src/types/passes-gate.ts +5 -5
  222. package/src/types/project-config.ts +8 -77
  223. package/src/types/trace.ts +8 -11
  224. package/dist/core/constraints/agent-prompt-renderer.d.ts +0 -32
  225. package/dist/core/constraints/agent-prompt-renderer.d.ts.map +0 -1
  226. package/dist/core/constraints/agent-prompt-renderer.js +0 -55
  227. package/dist/core/constraints/agent-prompt-renderer.js.map +0 -1
  228. package/dist/core/constraints/checkers/no-bypass-checkpoint.d.ts +0 -6
  229. package/dist/core/constraints/checkers/no-bypass-checkpoint.d.ts.map +0 -1
  230. package/dist/core/constraints/checkers/no-bypass-checkpoint.js +0 -40
  231. package/dist/core/constraints/checkers/no-bypass-checkpoint.js.map +0 -1
  232. package/dist/core/constraints/definitions/prompts.d.ts +0 -12
  233. package/dist/core/constraints/definitions/prompts.d.ts.map +0 -1
  234. package/dist/core/constraints/definitions/prompts.js +0 -400
  235. package/dist/core/constraints/definitions/prompts.js.map +0 -1
  236. package/dist/core/constraints/injection-drift.d.ts +0 -61
  237. package/dist/core/constraints/injection-drift.d.ts.map +0 -1
  238. package/dist/core/constraints/injection-drift.js +0 -131
  239. package/dist/core/constraints/injection-drift.js.map +0 -1
  240. package/dist/core/constraints/injection-renderer.d.ts +0 -23
  241. package/dist/core/constraints/injection-renderer.d.ts.map +0 -1
  242. package/dist/core/constraints/injection-renderer.js +0 -44
  243. package/dist/core/constraints/injection-renderer.js.map +0 -1
  244. package/src/cli/commands/__tests__/check-drift.test.ts +0 -158
  245. package/src/cli/commands/__tests__/init-injection.test.ts +0 -466
  246. package/src/core/constraints/__tests__/agent-prompt-renderer.test.ts +0 -129
  247. package/src/core/constraints/__tests__/injection-drift.test.ts +0 -247
  248. package/src/core/constraints/agent-prompt-renderer.ts +0 -67
  249. package/src/core/constraints/checkers/__tests__/no-bypass-checkpoint.test.ts +0 -76
  250. package/src/core/constraints/checkers/no-bypass-checkpoint.ts +0 -40
  251. package/src/core/constraints/definitions/prompts.ts +0 -414
  252. package/src/core/constraints/injection-drift.ts +0 -142
  253. package/src/core/constraints/injection-renderer.ts +0 -44
@@ -38,8 +38,8 @@ const DEFAULT_CONFIG: TraceCollectorConfig = {
38
38
  * ```typescript
39
39
  * const collector = new TraceCollector({ projectPath: '/path/to/project' });
40
40
  * collector.record({
41
- * constraintId: 'no_fix_without_root_cause',
42
- * level: 'iron_law',
41
+ * constraintId: 'no_completion_without_verification',
42
+ * severity: 'error',
43
43
  * timestamp: Date.now(),
44
44
  * result: 'fail',
45
45
  * });
@@ -92,12 +92,12 @@ export class TraceCollector {
92
92
  */
93
93
  recordPass(
94
94
  constraintId: string,
95
- level: 'iron_law' | 'guideline',
95
+ severity: 'error' | 'warning',
96
96
  options?: Partial<ExecutionTrace>
97
97
  ): void {
98
98
  this.record({
99
99
  constraintId,
100
- level,
100
+ severity,
101
101
  timestamp: Date.now(),
102
102
  result: 'pass',
103
103
  ...options,
@@ -109,12 +109,12 @@ export class TraceCollector {
109
109
  */
110
110
  recordFail(
111
111
  constraintId: string,
112
- level: 'iron_law' | 'guideline',
112
+ severity: 'error' | 'warning',
113
113
  options?: Partial<ExecutionTrace>
114
114
  ): void {
115
115
  this.record({
116
116
  constraintId,
117
- level,
117
+ severity,
118
118
  timestamp: Date.now(),
119
119
  result: 'fail',
120
120
  ...options,
@@ -184,8 +184,8 @@ export class TraceCollector {
184
184
  return false;
185
185
  }
186
186
 
187
- // 层级
188
- if (filter.level && trace.level !== filter.level) {
187
+ // 严重性
188
+ if (filter.severity && trace.severity !== filter.severity) {
189
189
  return false;
190
190
  }
191
191
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * presets 纯数据测试
3
3
  *
4
- * 预设只保留数据(ADR-0001:筛选逻辑统一在 mergeConstraints),
4
+ * 预设只保留数据(ADR-0029:键按 severity 命名;筛选逻辑统一在 mergeConstraints),
5
5
  * 这里锁定数据形状与 strict→standard 别名语义。
6
6
  */
7
7
 
@@ -16,43 +16,39 @@ describe('预设数据', () => {
16
16
  describe('STRICT_PRESET', () => {
17
17
  it('应该启用所有约束', () => {
18
18
  expect(STRICT_PRESET.name).toBe('strict');
19
- expect(STRICT_PRESET.ironLaws).toBeNull();
20
- expect(STRICT_PRESET.guidelines).toBeNull();
21
- expect(STRICT_PRESET.prompts).toBeNull();
19
+ expect(STRICT_PRESET.errors).toBeNull();
20
+ expect(STRICT_PRESET.warnings).toBeNull();
22
21
  });
23
22
  });
24
23
 
25
24
  describe('STANDARD_PRESET', () => {
26
25
  it('应该启用所有约束', () => {
27
26
  expect(STANDARD_PRESET.name).toBe('standard');
28
- expect(STANDARD_PRESET.ironLaws).toBeNull();
29
- expect(STANDARD_PRESET.guidelines).toBeNull();
30
- expect(STANDARD_PRESET.prompts).toBeNull();
27
+ expect(STANDARD_PRESET.errors).toBeNull();
28
+ expect(STANDARD_PRESET.warnings).toBeNull();
31
29
  });
32
30
  });
33
31
 
34
32
  describe('RELAXED_PRESET', () => {
35
33
  it('应该只启用核心约束', () => {
36
34
  expect(RELAXED_PRESET.name).toBe('relaxed');
37
- expect(RELAXED_PRESET.ironLaws).toHaveLength(3);
38
- expect(RELAXED_PRESET.guidelines).toHaveLength(2);
39
- expect(RELAXED_PRESET.prompts).toEqual([]);
35
+ expect(RELAXED_PRESET.errors).toHaveLength(1);
36
+ expect(RELAXED_PRESET.warnings).toHaveLength(1);
40
37
  });
41
38
 
42
39
  it('应该包含 no_completion_without_verification', () => {
43
- expect(RELAXED_PRESET.ironLaws).toContain('no_completion_without_verification');
40
+ expect(RELAXED_PRESET.errors).toContain('no_completion_without_verification');
44
41
  });
45
42
 
46
- it('应该包含 no_bypass_checkpoint', () => {
47
- expect(RELAXED_PRESET.guidelines).toContain('no_bypass_checkpoint');
43
+ it('应该包含 no_hardcoded_credentials', () => {
44
+ expect(RELAXED_PRESET.warnings).toContain('no_hardcoded_credentials');
48
45
  });
49
46
  });
50
47
 
51
48
  describe('PRESETS_BY_NAME', () => {
52
49
  it('strict 是 standard 的别名(同为全部启用)', () => {
53
- expect(PRESETS_BY_NAME['strict']?.ironLaws).toBeNull();
54
- expect(PRESETS_BY_NAME['strict']?.guidelines).toBeNull();
55
- expect(PRESETS_BY_NAME['strict']?.prompts).toBeNull();
50
+ expect(PRESETS_BY_NAME['strict']?.errors).toBeNull();
51
+ expect(PRESETS_BY_NAME['strict']?.warnings).toBeNull();
56
52
  });
57
53
 
58
54
  it('三个预设名均可解析', () => {
@@ -2,10 +2,10 @@
2
2
  * 约束预设(纯数据)
3
3
  *
4
4
  * 预设定义哪些内置约束被启用。筛选与合并逻辑统一在
5
- * core/project-config-loader.ts 的 mergeConstraints(ADR-0001 生效集链路),
5
+ * core/project-config-loader.ts 的 mergeConstraints(生效集链路),
6
6
  * 本文件只保留预设数据,不再含函数。
7
7
  *
8
- * ADR-0001:kind 二元(check + prompt 纯注入层)。
8
+ * ADR-0029:桶按 severity 命名(errors / warnings),取代三层命名。
9
9
  */
10
10
 
11
11
  /**
@@ -15,14 +15,11 @@ export interface PresetConfig {
15
15
  /** 预设名称 */
16
16
  name: string;
17
17
 
18
- /** 启用的铁律 ID 列表(null 表示全部启用) */
19
- ironLaws: string[] | null;
18
+ /** 启用的 severity='error' 约束 ID 列表(null 表示全部启用) */
19
+ errors: string[] | null;
20
20
 
21
- /** 启用的指导原则 ID 列表(null 表示全部启用) */
22
- guidelines: string[] | null;
23
-
24
- /** 启用的提示 ID 列表(null 表示全部启用) */
25
- prompts: string[] | null;
21
+ /** 启用的 severity='warning' 约束 ID 列表(null 表示全部启用) */
22
+ warnings: string[] | null;
26
23
  }
27
24
 
28
25
  /**
@@ -32,40 +29,34 @@ export interface PresetConfig {
32
29
  */
33
30
  export const STRICT_PRESET: PresetConfig = {
34
31
  name: 'strict',
35
- ironLaws: null, // 全部启用
36
- guidelines: null, // 全部启用
37
- prompts: null, // 全部启用
32
+ errors: null, // 全部启用
33
+ warnings: null, // 全部启用
38
34
  };
39
35
 
40
36
  /**
41
37
  * 标准预设
42
38
  *
43
- * 铁律全部启用,指导原则和提示选择性启用
39
+ * 全部约束启用
44
40
  */
45
41
  export const STANDARD_PRESET: PresetConfig = {
46
42
  name: 'standard',
47
- ironLaws: null, // 全部启用
48
- guidelines: null, // 全部启用
49
- prompts: null, // 全部启用
43
+ errors: null, // 全部启用
44
+ warnings: null, // 全部启用
50
45
  };
51
46
 
52
47
  /**
53
48
  * 宽松预设
54
49
  *
55
- * 仅启用核心铁律,禁用提示
50
+ * 仅启用核心 error 级与凭证扫描
56
51
  */
57
52
  export const RELAXED_PRESET: PresetConfig = {
58
53
  name: 'relaxed',
59
- ironLaws: [
54
+ errors: [
60
55
  'no_completion_without_verification',
61
- 'incremental_progress',
62
- 'no_implementation_without_requirement',
63
56
  ],
64
- guidelines: [
65
- 'no_bypass_checkpoint',
57
+ warnings: [
66
58
  'no_hardcoded_credentials',
67
59
  ],
68
- prompts: [], // 禁用提示
69
60
  };
70
61
 
71
62
  /**
@@ -17,7 +17,7 @@ describe('ConstraintViolationError', () => {
17
17
  it('应该使用 result.message 作为错误消息', () => {
18
18
  const error = new ConstraintViolationError({
19
19
  id: 'test',
20
- level: 'iron_law',
20
+ severity: 'error',
21
21
  satisfied: false,
22
22
  message: '测试违规消息',
23
23
  checkedAt: new Date(),
@@ -31,7 +31,7 @@ describe('ConstraintViolationError', () => {
31
31
  it('应该在 message 为空时使用默认消息', () => {
32
32
  const error = new ConstraintViolationError({
33
33
  id: 'test',
34
- level: 'iron_law',
34
+ severity: 'error',
35
35
  satisfied: false,
36
36
  checkedAt: new Date(),
37
37
  });
@@ -42,7 +42,7 @@ describe('ConstraintViolationError', () => {
42
42
  it('应该在 message 为空字符串时使用默认消息', () => {
43
43
  const error = new ConstraintViolationError({
44
44
  id: 'test',
45
- level: 'iron_law',
45
+ severity: 'error',
46
46
  satisfied: false,
47
47
  message: '',
48
48
  checkedAt: new Date(),
@@ -1,11 +1,12 @@
1
1
  /**
2
2
  * 约束类型定义
3
3
  *
4
- * kind 二元模型(ADR-0001):
5
- * - check:必须带真实 checker,参与运行时检查与 trace 统计
6
- * - iron_law:绝对禁止,无例外,违背即阻止执行
7
- * - guideline:优先建议,违背发警告但不阻止
8
- * - prompt:纯文本提示,仅参与 prompt 注入,不占检查位、不产生 trace
4
+ * severity 显式模型(ADR-0029,取代 ADR-0001 的三层命名与 kind 二元模型):
5
+ * - 全部约束 kind='check':必须带真实 checker,参与运行时检查与 trace 统计
6
+ * - severity 直接写死在定义上:error = 违规即阻断;warning = 违规告警不阻断;
7
+ * info = 仅记录
8
+ * - 纯文本提示层(kind='prompt' / promptInjection / 注入段渲染)已整体关停,
9
+ * 文本规则由消费方手写治理段承接
9
10
  */
10
11
 
11
12
  /**
@@ -14,16 +15,14 @@
14
15
  export type ConstraintId = string;
15
16
 
16
17
  /**
17
- * 约束类别:check = 可执行检查;prompt = 纯文本注入
18
+ * 约束类别(ADR-0029 收窄为单值):check = 可执行检查
18
19
  */
19
- export type ConstraintKind = 'check' | 'prompt';
20
+ export type ConstraintKind = 'check';
20
21
 
21
22
  /**
22
- * 约束层级
23
- *
24
- * check 层只使用 'iron_law' | 'guideline';prompt 类统一为 'prompt'。
23
+ * 约束严重性(显式字段,取代三层 level 命名)
25
24
  */
26
- export type ConstraintLevel = 'iron_law' | 'guideline' | 'prompt';
25
+ export type ConstraintSeverity = 'error' | 'warning' | 'info';
27
26
 
28
27
  /**
29
28
  * 约束触发条件(开放扩展)
@@ -41,9 +40,8 @@ export interface Constraint {
41
40
  id: ConstraintId;
42
41
 
43
42
  /**
44
- * 约束类别(ADR-0001):
45
- * - check:必须带真实 checker,参与运行时检查
46
- * - prompt:纯文本提示,仅参与注入,不执行 checker
43
+ * 约束类别(ADR-0029):恒为 'check'——必须带真实 checker,参与运行时检查;
44
+ * 纯文本提示(kind='prompt')已随文本注入层一并关停
47
45
  */
48
46
  kind: ConstraintKind;
49
47
 
@@ -53,8 +51,8 @@ export interface Constraint {
53
51
  /** 约束消息(中文) */
54
52
  message: string;
55
53
 
56
- /** 约束层级 */
57
- level: ConstraintLevel;
54
+ /** 约束严重性:error = 违规即阻断;warning = 违规告警不阻断;info = 仅记录 */
55
+ severity: ConstraintSeverity;
58
56
 
59
57
  /** 触发条件(支持多个 trigger) */
60
58
  trigger: ConstraintTrigger | ConstraintTrigger[];
@@ -65,20 +63,8 @@ export interface Constraint {
65
63
  /** 约束描述 */
66
64
  description?: string;
67
65
 
68
- /** 软约束 prompt 注入(引导 Agent 行为的提示文本) */
69
- promptInjection?: string;
70
-
71
- /** 是否注入 Agent prompt(默认 iron_law=true, guideline=false) */
72
- injectPrompt?: boolean;
73
-
74
66
  /** 是否启用 */
75
67
  enabled?: boolean;
76
-
77
- /**
78
- * 适用场景标签(prompt 类专用,如 'agent-skill'、'llm-app')。
79
- * 未标注表示通用场景。消费端(init 注入 / studio 路由)可按标签过滤。
80
- */
81
- appliesTo?: string[];
82
68
  }
83
69
 
84
70
  /**
@@ -88,8 +74,8 @@ export interface ConstraintResult {
88
74
  /** 约束 ID */
89
75
  id: ConstraintId;
90
76
 
91
- /** 约束层级 */
92
- level: ConstraintLevel;
77
+ /** 约束严重性 */
78
+ severity: ConstraintSeverity;
93
79
 
94
80
  /** 是否满足 */
95
81
  satisfied: boolean;
@@ -186,10 +172,10 @@ export interface ConstraintContext {
186
172
  /** 是否已进行复用检查 */
187
173
  hasReuseCheck?: boolean;
188
174
 
189
- /** 是否只处理单个任务(用于 incremental_progress) */
175
+ /** 是否只处理单个任务(证据标志,当前无内置 checker 消费,供自定义约束用) */
190
176
  hasSingleTask?: boolean;
191
177
 
192
- /** 是否有需求文档(用于 no_implementation_without_requirement) */
178
+ /** 是否有需求文档(证据标志,当前无内置 checker 消费,供自定义约束用) */
193
179
  hasRequirement?: boolean;
194
180
 
195
181
  /** worktree 路径(用于 worktree 相关检查) */
@@ -203,8 +189,8 @@ export class ConstraintViolationError extends Error {
203
189
  public readonly result: ConstraintResult;
204
190
 
205
191
  constructor(result: ConstraintResult) {
206
- // 铁律违规在 checkConstraints 处直接 throw,CLI 的结构化输出块走不到这里,
207
- // error.message 是判定证据唯一的外溢面(harness#119)
192
+ // severity='error' 的违规在 checkConstraints 处直接 throw,CLI 的结构化输出块
193
+ // 走不到这里,error.message 是判定证据唯一的外溢面(harness#119)
208
194
  const detail = result.evidence?.length
209
195
  ? `:\n${result.evidence.map((line) => ` - ${line}`).join('\n')}`
210
196
  : '';
@@ -215,16 +201,16 @@ export class ConstraintViolationError extends Error {
215
201
  }
216
202
 
217
203
  /**
218
- * 约束检查结果(check 层)
204
+ * 约束检查结果(按 severity 分桶)
219
205
  */
220
206
  export interface ConstraintCheckResult {
221
- /** 铁律检查结果(必须全部通过) */
222
- ironLaws: ConstraintResult[];
207
+ /** severity='error' 的检查结果(必须全部通过) */
208
+ errors: ConstraintResult[];
223
209
 
224
- /** 指导原则检查结果(警告,不阻止) */
225
- guidelines: ConstraintResult[];
210
+ /** severity='warning' 的检查结果(警告,不阻止) */
211
+ warnings: ConstraintResult[];
226
212
 
227
- /** 是否通过(铁律全部通过) */
213
+ /** 是否通过(error 级全部通过) */
228
214
  passed: boolean;
229
215
 
230
216
  /** 警告数量 */
@@ -94,17 +94,17 @@ export interface TestResult {
94
94
  * PassesGate 验证违规
95
95
  */
96
96
  export interface PassesGateViolation {
97
- /** Iron Law ID */
97
+ /** 约束 ID */
98
98
  id: string;
99
99
 
100
- /** Iron Law 规则 */
100
+ /** 约束规则 */
101
101
  rule: string;
102
102
 
103
103
  /** 中文消息 */
104
104
  message: string;
105
105
 
106
- /** 约束层级 */
107
- level: 'iron_law';
106
+ /** 约束严重性(PassesGate 违规恒为阻断级) */
107
+ severity: 'error';
108
108
  }
109
109
 
110
110
  /**
@@ -114,7 +114,7 @@ export interface PassesGateCheckResult {
114
114
  /** 是否允许标记完成 */
115
115
  allowed: boolean;
116
116
 
117
- /** Iron Law 违规列表 */
117
+ /** 阻断级违规列表 */
118
118
  violations?: PassesGateViolation[];
119
119
 
120
120
  /** 原始测试结果 */
@@ -1,57 +1,11 @@
1
1
  /**
2
- * 项目级自定义约束配置
2
+ * 项目级约束配置
3
3
  *
4
- * 允许项目定义自己的约束,扩展或覆盖 harness 内置约束
4
+ * 允许项目启用/禁用 harness 内置约束(ADR-0029:项目自定义纯文本约束
5
+ * 已随文本注入层关停一并退役,文本规则由项目手写治理段承接)
5
6
  */
6
7
 
7
- import type { Constraint, ConstraintLevel } from './constraint';
8
-
9
- /**
10
- * 自定义约束定义
11
- */
12
- export interface CustomConstraintDefinition {
13
- /** 约束 ID */
14
- id: string;
15
-
16
- /** 约束层级(可选,缺省 guideline) */
17
- level?: ConstraintLevel;
18
-
19
- /** 约束规则(可选) */
20
- rule?: string;
21
-
22
- /** 约束消息(可选) */
23
- message?: string;
24
-
25
- /** 触发条件(可选) */
26
- trigger?: string | string[];
27
-
28
- /** 描述(可选) */
29
- description?: string;
30
-
31
- /**
32
- * Prompt 注入文本(可选)
33
- *
34
- * 自定义约束统一 kind='prompt'(无 checker),该字段是进入 CLAUDE.md
35
- * 注入段(renderConstraintsSection)的唯一通道——缺省不出现在注入段,
36
- * 与内置无 promptInjection 的 check 条目行为一致。
37
- */
38
- promptInjection?: string;
39
-
40
- /** 是否启用(可选,默认 true) */
41
- enabled?: boolean;
42
-
43
- /**
44
- * 退役元数据(studio#82 D6 统一落点)
45
- *
46
- * 存在即视为已退役:不进生效集、不注入 CLAUDE.md。恢复 = 删除该段。
47
- * 落点在 custom-constraints.yml 条目内(一处真相,不拆 config.yml 第二处)。
48
- */
49
- retired?: {
50
- at?: string;
51
- reason?: string;
52
- stats?: { total: number; fail: number; failRate: number };
53
- };
54
- }
8
+ import type { Constraint } from './constraint';
55
9
 
56
10
  /**
57
11
  * 文档同步配置
@@ -257,26 +211,12 @@ export interface ProjectConfig {
257
211
  /** CI 接线平台(harness#143,缺省 github) */
258
212
  ci?: CiConfig;
259
213
 
260
- /**
261
- * 项目适用场景标签(ADR-0001,如 'agent-skill'、'llm-app')
262
- *
263
- * 带 appliesTo 标签的 prompt 仅当 scenes 与其交集非空时进入生效集;
264
- * 无 appliesTo 的条目不受影响。缺省为空 = 场景专属 prompt 默认不注入。
265
- */
266
- scenes?: string[];
267
-
268
214
  /** 治理配置 */
269
215
  governance?: GovernanceConfig;
270
216
 
271
217
  /** 内置约束启用/禁用配置 */
272
218
  constraints?: Record<string, { enabled?: boolean }>;
273
219
 
274
- /** 自定义约束文件路径 */
275
- custom_constraints_file?: string;
276
-
277
- /** 自定义约束(直接定义) */
278
- custom_constraints?: Record<string, CustomConstraintDefinition>;
279
-
280
220
  /** Spec 验证配置 */
281
221
  spec?: {
282
222
  /** 是否启用 Spec 验证 */
@@ -291,26 +231,17 @@ export interface ProjectConfig {
291
231
  }
292
232
 
293
233
  /**
294
- * 完整的约束配置(合并内置 + 自定义)
234
+ * 完整的约束配置(合并内置 + preset 裁剪 + config.yml 禁用)
295
235
  */
296
236
  export interface MergedConstraintsConfig {
297
- /** Iron Laws(合并后) */
298
- ironLaws: Record<string, Constraint>;
299
-
300
- /** Guidelines(合并后) */
301
- guidelines: Record<string, Constraint>;
302
-
303
- /** Prompts(合并后,ADR-0001 新增;可选以兼容旧调用方,缺省回落内置 PROMPTS) */
304
- prompts?: Record<string, Constraint>;
237
+ /** 生效的约束(合并后,单桶;severity 在条目上) */
238
+ constraints: Record<string, Constraint>;
305
239
 
306
240
  /** 禁用的约束 ID */
307
241
  disabled: string[];
308
242
 
309
- /** 自定义约束 ID */
310
- custom: string[];
311
-
312
243
  /**
313
- * config.yml `constraints.<id>` 中既非内置也非自定义的未知 id(ADR-0001)
244
+ * config.yml `constraints.<id>` 中非内置的未知 id
314
245
  *
315
246
  * 例如禁用了已被本版移除的约束 id 的残留配置。生效集计算静默忽略,
316
247
  * 在此列出供诊断(lintEffectiveConfig / report)使用。
@@ -31,8 +31,8 @@ export interface ExecutionTrace {
31
31
  /** 约束 ID */
32
32
  constraintId: string;
33
33
 
34
- /** 约束层级 */
35
- level: 'iron_law' | 'guideline' | 'prompt';
34
+ /** 约束严重性(ADR-0029:显式 severity 取代三层 level 命名) */
35
+ severity: 'error' | 'warning' | 'info';
36
36
 
37
37
  /** 检查时间(Unix timestamp) */
38
38
  timestamp: number;
@@ -47,9 +47,6 @@ export interface ExecutionTrace {
47
47
  /** 操作类型(触发条件) */
48
48
  operation?: string;
49
49
 
50
- /** 严重性(从约束定义继承) */
51
- severity?: 'error' | 'warning' | 'info';
52
-
53
50
  /** 项目路径(用于区分多项目) */
54
51
  projectPath?: string;
55
52
 
@@ -84,8 +81,8 @@ export interface TraceSummary {
84
81
  /** 约束 ID */
85
82
  constraintId: string;
86
83
 
87
- /** 约束层级 */
88
- level: 'iron_law' | 'guideline' | 'prompt';
84
+ /** 约束严重性 */
85
+ severity: 'error' | 'warning' | 'info';
89
86
 
90
87
  /** 统计时间范围 */
91
88
  timeRange: {
@@ -148,8 +145,8 @@ export interface TraceAnomaly {
148
145
  /** 约束 ID */
149
146
  constraintId: string;
150
147
 
151
- /** 约束层级 */
152
- level: 'iron_law' | 'guideline' | 'prompt';
148
+ /** 约束严重性 */
149
+ severity: 'error' | 'warning' | 'info';
153
150
 
154
151
  /** 异常描述 */
155
152
  message: string;
@@ -175,8 +172,8 @@ export interface TraceFilter {
175
172
  /** 约束 ID(可选,不指定则查全部) */
176
173
  constraintId?: string;
177
174
 
178
- /** 约束层级(可选) */
179
- level?: 'iron_law' | 'guideline' | 'prompt';
175
+ /** 约束严重性(可选) */
176
+ severity?: 'error' | 'warning' | 'info';
180
177
 
181
178
  /** 结果类型(可选) */
182
179
  result?: 'pass' | 'fail' | 'skip';
@@ -1,32 +0,0 @@
1
- /**
2
- * Agent prompt 约束段渲染(H6/G6:trigger 参数化分组渲染 API)
3
- *
4
- * 收编 studio prompt-injection.ts 的渲染层:role→trigger 路由留在 studio,
5
- * 本模块只做 trigger 参数化 + 生效集过滤 + 层级分组渲染。
6
- *
7
- * 数据源 = getEffectiveConstraints(内置 → preset → config.yml 禁用 →
8
- * custom 追加 → scenes 过滤),与 init 注入、harness check 同一来源。
9
- *
10
- * 输出按层级分组:铁律 → 指导原则 → 行为提示;无 promptInjection 的约束
11
- * (如 docs_freshness)不渲染。
12
- */
13
- import type { ConstraintTrigger } from '../../types/constraint';
14
- /**
15
- * renderConstraintsByTrigger 选项
16
- */
17
- export interface RenderConstraintsByTriggerOptions {
18
- /** 项目根路径(决定 config.yml 生效集),缺省 process.cwd() */
19
- projectRoot?: string;
20
- }
21
- /**
22
- * 按触发条件渲染约束分组文本(注入 Agent system prompt 用)
23
- *
24
- * 过滤:生效集内 trigger 与入参存在交集的约束;无 promptInjection 的不渲染。
25
- * 分组:按层级 iron_law → guideline → prompt 顺序渲染为标题 + 条目列表;
26
- * 无适用约束时返回空字符串。
27
- *
28
- * @param triggers 触发条件(单个或多个;空数组返回空字符串)
29
- * @param options.projectRoot 项目根路径(决定 config.yml 生效集)
30
- */
31
- export declare function renderConstraintsByTrigger(triggers: ConstraintTrigger | ConstraintTrigger[], options?: RenderConstraintsByTriggerOptions): string;
32
- //# sourceMappingURL=agent-prompt-renderer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-prompt-renderer.d.ts","sourceRoot":"","sources":["../../../src/core/constraints/agent-prompt-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAmB,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAIjF;;GAEG;AACH,MAAM,WAAW,iCAAiC;IAChD,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AASD;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,EACjD,OAAO,CAAC,EAAE,iCAAiC,GAC1C,MAAM,CAqBR"}
@@ -1,55 +0,0 @@
1
- "use strict";
2
- /**
3
- * Agent prompt 约束段渲染(H6/G6:trigger 参数化分组渲染 API)
4
- *
5
- * 收编 studio prompt-injection.ts 的渲染层:role→trigger 路由留在 studio,
6
- * 本模块只做 trigger 参数化 + 生效集过滤 + 层级分组渲染。
7
- *
8
- * 数据源 = getEffectiveConstraints(内置 → preset → config.yml 禁用 →
9
- * custom 追加 → scenes 过滤),与 init 注入、harness check 同一来源。
10
- *
11
- * 输出按层级分组:铁律 → 指导原则 → 行为提示;无 promptInjection 的约束
12
- * (如 docs_freshness)不渲染。
13
- */
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.renderConstraintsByTrigger = renderConstraintsByTrigger;
16
- const triggers_1 = require("./triggers");
17
- const effective_constraints_1 = require("../effective-constraints");
18
- /** 层级分组定义(渲染顺序即声明顺序) */
19
- const LEVEL_GROUPS = [
20
- { level: 'iron_law', heading: '### 铁律(绝对禁止,无例外)' },
21
- { level: 'guideline', heading: '### 指导原则(优先建议)' },
22
- { level: 'prompt', heading: '### 行为提示' },
23
- ];
24
- /**
25
- * 按触发条件渲染约束分组文本(注入 Agent system prompt 用)
26
- *
27
- * 过滤:生效集内 trigger 与入参存在交集的约束;无 promptInjection 的不渲染。
28
- * 分组:按层级 iron_law → guideline → prompt 顺序渲染为标题 + 条目列表;
29
- * 无适用约束时返回空字符串。
30
- *
31
- * @param triggers 触发条件(单个或多个;空数组返回空字符串)
32
- * @param options.projectRoot 项目根路径(决定 config.yml 生效集)
33
- */
34
- function renderConstraintsByTrigger(triggers, options) {
35
- const requested = Array.isArray(triggers) ? triggers : [triggers];
36
- if (requested.length === 0)
37
- return '';
38
- const constraints = (0, effective_constraints_1.getEffectiveConstraints)(options?.projectRoot);
39
- const applicable = constraints.filter(c => c.promptInjection && (0, triggers_1.matchesTrigger)(c, requested));
40
- if (applicable.length === 0)
41
- return '';
42
- const lines = ['\n## 行为约束(前置声明)\n'];
43
- for (const group of LEVEL_GROUPS) {
44
- const items = applicable.filter(c => c.level === group.level);
45
- if (items.length === 0)
46
- continue;
47
- lines.push(`${group.heading}\n`);
48
- for (const c of items) {
49
- lines.push(`- **${c.id}**: ${c.promptInjection}`);
50
- }
51
- lines.push('');
52
- }
53
- return lines.join('\n');
54
- }
55
- //# sourceMappingURL=agent-prompt-renderer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-prompt-renderer.js","sourceRoot":"","sources":["../../../src/core/constraints/agent-prompt-renderer.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;AA+BH,gEAwBC;AApDD,yCAA4C;AAC5C,oEAAmE;AAUnE,wBAAwB;AACxB,MAAM,YAAY,GAA+D;IAC/E,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,kBAAkB,EAAE;IAClD,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,EAAE;IACjD,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE;CACzC,CAAC;AAEF;;;;;;;;;GASG;AACH,SAAgB,0BAA0B,CACxC,QAAiD,EACjD,OAA2C;IAE3C,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEtC,MAAM,WAAW,GAAG,IAAA,+CAAuB,EAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAClE,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CACnC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,IAAI,IAAA,yBAAc,EAAC,CAAC,EAAE,SAAS,CAAC,CACvD,CAAC;IACF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEvC,MAAM,KAAK,GAAa,CAAC,mBAAmB,CAAC,CAAC;IAC9C,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACjC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;QACjC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * no_bypass_checkpoint:检查变更文件内容是否有 skip/bypass 关键词(工单 21)
3
- */
4
- import type { ConstraintCheck } from './types';
5
- export declare const noBypassCheckpoint: ConstraintCheck;
6
- //# sourceMappingURL=no-bypass-checkpoint.d.ts.map