@dommaker/harness 1.4.0 → 1.6.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 (258) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +0 -2
  3. package/dist/cli/commands/check.d.ts.map +1 -1
  4. package/dist/cli/commands/check.js +28 -0
  5. package/dist/cli/commands/check.js.map +1 -1
  6. package/dist/cli/commands/definitions.d.ts.map +1 -1
  7. package/dist/cli/commands/definitions.js +1 -39
  8. package/dist/cli/commands/definitions.js.map +1 -1
  9. package/dist/cli/commands/knowledge.d.ts +0 -19
  10. package/dist/cli/commands/knowledge.d.ts.map +1 -1
  11. package/dist/cli/commands/knowledge.js +0 -105
  12. package/dist/cli/commands/knowledge.js.map +1 -1
  13. package/dist/cli/commands/passes-gate.d.ts +0 -2
  14. package/dist/cli/commands/passes-gate.d.ts.map +1 -1
  15. package/dist/cli/commands/passes-gate.js +0 -1
  16. package/dist/cli/commands/passes-gate.js.map +1 -1
  17. package/dist/cli/commands/performance.d.ts +0 -4
  18. package/dist/cli/commands/performance.d.ts.map +1 -1
  19. package/dist/cli/commands/performance.js +10 -20
  20. package/dist/cli/commands/performance.js.map +1 -1
  21. package/dist/cli/commands/report.d.ts +1 -1
  22. package/dist/cli/commands/report.d.ts.map +1 -1
  23. package/dist/cli/commands/report.js +2 -55
  24. package/dist/cli/commands/report.js.map +1 -1
  25. package/dist/cli/commands/status.d.ts.map +1 -1
  26. package/dist/cli/commands/status.js +4 -8
  27. package/dist/cli/commands/status.js.map +1 -1
  28. package/dist/context/index.d.ts +2 -5
  29. package/dist/context/index.d.ts.map +1 -1
  30. package/dist/context/index.js +2 -8
  31. package/dist/context/index.js.map +1 -1
  32. package/dist/context/token-budget.d.ts +0 -29
  33. package/dist/context/token-budget.d.ts.map +1 -1
  34. package/dist/context/token-budget.js +1 -65
  35. package/dist/context/token-budget.js.map +1 -1
  36. package/dist/context/types.d.ts +0 -1
  37. package/dist/context/types.d.ts.map +1 -1
  38. package/dist/context/types.js +0 -9
  39. package/dist/context/types.js.map +1 -1
  40. package/dist/core/constraints/checker.d.ts +14 -0
  41. package/dist/core/constraints/checker.d.ts.map +1 -1
  42. package/dist/core/constraints/checker.js +27 -5
  43. package/dist/core/constraints/checker.js.map +1 -1
  44. package/dist/core/constraints/checkers/capability-sync.d.ts +17 -6
  45. package/dist/core/constraints/checkers/capability-sync.d.ts.map +1 -1
  46. package/dist/core/constraints/checkers/capability-sync.js +48 -19
  47. package/dist/core/constraints/checkers/capability-sync.js.map +1 -1
  48. package/dist/core/constraints/checkers/docs-freshness.d.ts.map +1 -1
  49. package/dist/core/constraints/checkers/docs-freshness.js +15 -6
  50. package/dist/core/constraints/checkers/docs-freshness.js.map +1 -1
  51. package/dist/core/constraints/checkers/index.d.ts +2 -2
  52. package/dist/core/constraints/checkers/index.d.ts.map +1 -1
  53. package/dist/core/constraints/checkers/index.js +2 -1
  54. package/dist/core/constraints/checkers/index.js.map +1 -1
  55. package/dist/core/constraints/checkers/types.d.ts +41 -2
  56. package/dist/core/constraints/checkers/types.d.ts.map +1 -1
  57. package/dist/core/constraints/checkers/types.js +33 -0
  58. package/dist/core/constraints/checkers/types.js.map +1 -1
  59. package/dist/core/constraints/git-evidence.d.ts +6 -3
  60. package/dist/core/constraints/git-evidence.d.ts.map +1 -1
  61. package/dist/core/constraints/git-evidence.js +6 -3
  62. package/dist/core/constraints/git-evidence.js.map +1 -1
  63. package/dist/core/index.d.ts +1 -2
  64. package/dist/core/index.d.ts.map +1 -1
  65. package/dist/core/index.js +1 -9
  66. package/dist/core/index.js.map +1 -1
  67. package/dist/core/spec/validator.d.ts +2 -0
  68. package/dist/core/spec/validator.d.ts.map +1 -1
  69. package/dist/core/spec/validator.js +9 -11
  70. package/dist/core/spec/validator.js.map +1 -1
  71. package/dist/core/validators/index.d.ts +1 -1
  72. package/dist/core/validators/index.d.ts.map +1 -1
  73. package/dist/core/validators/passes-gate.d.ts +1 -15
  74. package/dist/core/validators/passes-gate.d.ts.map +1 -1
  75. package/dist/core/validators/passes-gate.js +0 -125
  76. package/dist/core/validators/passes-gate.js.map +1 -1
  77. package/dist/failure/index.d.ts +0 -1
  78. package/dist/failure/index.d.ts.map +1 -1
  79. package/dist/failure/index.js +1 -7
  80. package/dist/failure/index.js.map +1 -1
  81. package/dist/gates/checker-gate.d.ts +2 -1
  82. package/dist/gates/checker-gate.d.ts.map +1 -1
  83. package/dist/gates/checker-gate.js +10 -7
  84. package/dist/gates/checker-gate.js.map +1 -1
  85. package/dist/gates/definitions.d.ts.map +1 -1
  86. package/dist/gates/definitions.js +0 -4
  87. package/dist/gates/definitions.js.map +1 -1
  88. package/dist/gates/performance.d.ts +7 -22
  89. package/dist/gates/performance.d.ts.map +1 -1
  90. package/dist/gates/performance.js +7 -89
  91. package/dist/gates/performance.js.map +1 -1
  92. package/dist/gates/types.d.ts +2 -8
  93. package/dist/gates/types.d.ts.map +1 -1
  94. package/dist/index.d.ts +6 -8
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.js +4 -22
  97. package/dist/index.js.map +1 -1
  98. package/dist/knowledge/index.d.ts +0 -1
  99. package/dist/knowledge/index.d.ts.map +1 -1
  100. package/dist/knowledge/index.js +1 -3
  101. package/dist/knowledge/index.js.map +1 -1
  102. package/dist/monitoring/trace-analyzer.d.ts +25 -10
  103. package/dist/monitoring/trace-analyzer.d.ts.map +1 -1
  104. package/dist/monitoring/trace-analyzer.js +147 -116
  105. package/dist/monitoring/trace-analyzer.js.map +1 -1
  106. package/dist/types/constraint.d.ts +8 -0
  107. package/dist/types/constraint.d.ts.map +1 -1
  108. package/dist/types/constraint.js +6 -1
  109. package/dist/types/constraint.js.map +1 -1
  110. package/dist/types/passes-gate.d.ts +0 -19
  111. package/dist/types/passes-gate.d.ts.map +1 -1
  112. package/dist/types/trace.d.ts +9 -0
  113. package/dist/types/trace.d.ts.map +1 -1
  114. package/package.json +1 -1
  115. package/src/CONTEXT.md +1 -0
  116. package/src/__tests__/passes-gate-check.test.ts +20 -4
  117. package/src/__tests__/passes-gate.test.ts +18 -119
  118. package/src/__tests__/performance-gate.test.ts +3 -11
  119. package/src/__tests__/public-exports.test.ts +46 -16
  120. package/src/__tests__/trace-analyzer.test.ts +52 -2
  121. package/src/cli/commands/CONTEXT.md +5 -4
  122. package/src/cli/commands/__tests__/bin-exit-mapping.test.ts +6 -0
  123. package/src/cli/commands/__tests__/check.test.ts +74 -0
  124. package/src/cli/commands/__tests__/passes-gate-dead-options.test.ts +70 -0
  125. package/src/cli/commands/__tests__/passes-gate.test.ts +7 -3
  126. package/src/cli/commands/__tests__/performance.test.ts +5 -16
  127. package/src/cli/commands/__tests__/project-path-convention.test.ts +85 -23
  128. package/src/cli/commands/__tests__/registry.test.ts +52 -3
  129. package/src/cli/commands/__tests__/report-extra.test.ts +0 -19
  130. package/src/cli/commands/__tests__/report-false-green.test.ts +46 -0
  131. package/src/cli/commands/__tests__/report.test.ts +0 -20
  132. package/src/cli/commands/__tests__/status-analysis-wiring.test.ts +68 -0
  133. package/src/cli/commands/__tests__/status-extra.test.ts +63 -116
  134. package/src/cli/commands/__tests__/status.test.ts +66 -148
  135. package/src/cli/commands/check.ts +39 -1
  136. package/src/cli/commands/definitions.ts +1 -39
  137. package/src/cli/commands/knowledge.ts +0 -119
  138. package/src/cli/commands/passes-gate.ts +0 -3
  139. package/src/cli/commands/performance.ts +13 -27
  140. package/src/cli/commands/report.ts +3 -61
  141. package/src/cli/commands/status.ts +5 -10
  142. package/src/context/CONTEXT.md +2 -3
  143. package/src/context/__tests__/token-budget.test.ts +1 -81
  144. package/src/context/index.ts +2 -7
  145. package/src/context/token-budget.ts +0 -73
  146. package/src/context/types.ts +0 -9
  147. package/src/core/CONTEXT.md +6 -6
  148. package/src/core/constraints/__tests__/collect-constraints.test.ts +66 -0
  149. package/src/core/constraints/checker.ts +41 -6
  150. package/src/core/constraints/checkers/__tests__/capability-sync.test.ts +90 -31
  151. package/src/core/constraints/checkers/__tests__/check-outcome.test.ts +176 -0
  152. package/src/core/constraints/checkers/__tests__/docs-freshness.test.ts +18 -9
  153. package/src/core/constraints/checkers/__tests__/three-state-consistency.test.ts +12 -4
  154. package/src/core/constraints/checkers/capability-sync.ts +56 -18
  155. package/src/core/constraints/checkers/docs-freshness.ts +18 -5
  156. package/src/core/constraints/checkers/index.ts +9 -2
  157. package/src/core/constraints/checkers/types.ts +58 -2
  158. package/src/core/constraints/git-evidence.ts +6 -3
  159. package/src/core/index.ts +0 -11
  160. package/src/core/spec/__tests__/validator.test.ts +24 -0
  161. package/src/core/spec/validator.ts +9 -10
  162. package/src/core/validators/__tests__/passes-gate.test.ts +2 -9
  163. package/src/core/validators/index.ts +0 -1
  164. package/src/core/validators/passes-gate.ts +1 -149
  165. package/src/failure/CONTEXT.md +8 -6
  166. package/src/failure/index.ts +0 -10
  167. package/src/gates/CONTEXT.md +4 -3
  168. package/src/gates/__tests__/checker-gate.test.ts +24 -0
  169. package/src/gates/__tests__/performance.test.ts +6 -74
  170. package/src/gates/checker-gate.ts +11 -15
  171. package/src/gates/definitions.ts +0 -4
  172. package/src/gates/performance.ts +9 -111
  173. package/src/gates/types.ts +2 -8
  174. package/src/index.ts +1 -36
  175. package/src/knowledge/CONTEXT.md +1 -2
  176. package/src/knowledge/index.ts +0 -1
  177. package/src/monitoring/CONTEXT.md +2 -2
  178. package/src/monitoring/trace-analyzer.ts +160 -126
  179. package/src/types/constraint.ts +16 -2
  180. package/src/types/passes-gate.ts +0 -26
  181. package/src/types/trace.ts +10 -0
  182. package/src/utils/__tests__/jsonl-skip-disposition.test.ts +0 -1
  183. package/dist/cli/commands/analyze-sessions.d.ts +0 -20
  184. package/dist/cli/commands/analyze-sessions.d.ts.map +0 -1
  185. package/dist/cli/commands/analyze-sessions.js +0 -290
  186. package/dist/cli/commands/analyze-sessions.js.map +0 -1
  187. package/dist/cli/commands/update-user-model.d.ts +0 -25
  188. package/dist/cli/commands/update-user-model.d.ts.map +0 -1
  189. package/dist/cli/commands/update-user-model.js +0 -397
  190. package/dist/cli/commands/update-user-model.js.map +0 -1
  191. package/dist/cli/session-mining/corrections.d.ts +0 -17
  192. package/dist/cli/session-mining/corrections.d.ts.map +0 -1
  193. package/dist/cli/session-mining/corrections.js +0 -58
  194. package/dist/cli/session-mining/corrections.js.map +0 -1
  195. package/dist/cli/session-mining/index.d.ts +0 -13
  196. package/dist/cli/session-mining/index.d.ts.map +0 -1
  197. package/dist/cli/session-mining/index.js +0 -29
  198. package/dist/cli/session-mining/index.js.map +0 -1
  199. package/dist/cli/session-mining/text.d.ts +0 -31
  200. package/dist/cli/session-mining/text.d.ts.map +0 -1
  201. package/dist/cli/session-mining/text.js +0 -126
  202. package/dist/cli/session-mining/text.js.map +0 -1
  203. package/dist/cli/session-mining/transcript.d.ts +0 -34
  204. package/dist/cli/session-mining/transcript.d.ts.map +0 -1
  205. package/dist/cli/session-mining/transcript.js +0 -130
  206. package/dist/cli/session-mining/transcript.js.map +0 -1
  207. package/dist/context/compaction.d.ts +0 -57
  208. package/dist/context/compaction.d.ts.map +0 -1
  209. package/dist/context/compaction.js +0 -165
  210. package/dist/context/compaction.js.map +0 -1
  211. package/dist/core/session/clean-state.d.ts +0 -17
  212. package/dist/core/session/clean-state.d.ts.map +0 -1
  213. package/dist/core/session/clean-state.js +0 -192
  214. package/dist/core/session/clean-state.js.map +0 -1
  215. package/dist/core/session/index.d.ts +0 -6
  216. package/dist/core/session/index.d.ts.map +0 -1
  217. package/dist/core/session/index.js +0 -15
  218. package/dist/core/session/index.js.map +0 -1
  219. package/dist/core/session/startup.d.ts +0 -47
  220. package/dist/core/session/startup.d.ts.map +0 -1
  221. package/dist/core/session/startup.js +0 -263
  222. package/dist/core/session/startup.js.map +0 -1
  223. package/dist/failure/constraint-handler.d.ts +0 -83
  224. package/dist/failure/constraint-handler.d.ts.map +0 -1
  225. package/dist/failure/constraint-handler.js +0 -138
  226. package/dist/failure/constraint-handler.js.map +0 -1
  227. package/dist/knowledge/lifecycle-hooks.d.ts +0 -62
  228. package/dist/knowledge/lifecycle-hooks.d.ts.map +0 -1
  229. package/dist/knowledge/lifecycle-hooks.js +0 -143
  230. package/dist/knowledge/lifecycle-hooks.js.map +0 -1
  231. package/dist/types/session.d.ts +0 -113
  232. package/dist/types/session.d.ts.map +0 -1
  233. package/dist/types/session.js +0 -6
  234. package/dist/types/session.js.map +0 -1
  235. package/src/__tests__/clean-state-extra.test.ts +0 -301
  236. package/src/__tests__/clean-state.test.ts +0 -169
  237. package/src/__tests__/constraint-handler.test.ts +0 -132
  238. package/src/__tests__/passes-gate-extra.test.ts +0 -93
  239. package/src/__tests__/session-startup.test.ts +0 -334
  240. package/src/cli/commands/__tests__/analyze-sessions.test.ts +0 -184
  241. package/src/cli/commands/__tests__/update-user-model.test.ts +0 -234
  242. package/src/cli/commands/analyze-sessions.ts +0 -335
  243. package/src/cli/commands/update-user-model.ts +0 -461
  244. package/src/cli/session-mining/__tests__/transcript.test.ts +0 -118
  245. package/src/cli/session-mining/corrections.ts +0 -56
  246. package/src/cli/session-mining/index.ts +0 -13
  247. package/src/cli/session-mining/text.ts +0 -117
  248. package/src/cli/session-mining/transcript.ts +0 -125
  249. package/src/context/__tests__/compaction.test.ts +0 -169
  250. package/src/context/compaction.ts +0 -201
  251. package/src/core/session/__tests__/startup.test.ts +0 -281
  252. package/src/core/session/clean-state.ts +0 -178
  253. package/src/core/session/index.ts +0 -15
  254. package/src/core/session/startup.ts +0 -253
  255. package/src/failure/constraint-handler.ts +0 -171
  256. package/src/knowledge/__tests__/lifecycle-hooks.test.ts +0 -140
  257. package/src/knowledge/lifecycle-hooks.ts +0 -202
  258. package/src/types/session.ts +0 -132
@@ -14,7 +14,6 @@ export { ReferenceTracker } from './reference-tracker';
14
14
  export { KnowledgeLinter } from './lint';
15
15
  export { ColdStartImporter } from './import';
16
16
  export { KnowledgeHealthScorer } from './doctor';
17
- export { KnowledgeLifecycleHooks } from './lifecycle-hooks';
18
17
  export { KnowledgeAudit } from './audit';
19
18
  export type { AuditRuleName, AuditAction, AuditIssue, AuditReport, AuditOptions } from './audit';
20
19
  export { migrateKnowledgeEntries } from './migration';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/knowledge/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,SAAS,CAAC;AACxB,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACjG,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/knowledge/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,SAAS,CAAC;AACxB,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACjG,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC"}
@@ -19,7 +19,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
19
19
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
20
20
  };
21
21
  Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.extractCodeStructure = exports.migrateKnowledgeEntries = exports.KnowledgeAudit = exports.KnowledgeLifecycleHooks = exports.KnowledgeHealthScorer = exports.ColdStartImporter = exports.KnowledgeLinter = exports.ReferenceTracker = exports.sanitizeExternalContent = exports.KnowledgeIngest = exports.KnowledgeLifecycle = exports.KnowledgeQuery = exports.FileKnowledgeStore = void 0;
22
+ exports.extractCodeStructure = exports.migrateKnowledgeEntries = exports.KnowledgeAudit = exports.KnowledgeHealthScorer = exports.ColdStartImporter = exports.KnowledgeLinter = exports.ReferenceTracker = exports.sanitizeExternalContent = exports.KnowledgeIngest = exports.KnowledgeLifecycle = exports.KnowledgeQuery = exports.FileKnowledgeStore = void 0;
23
23
  __exportStar(require("./types"), exports);
24
24
  var store_1 = require("./store");
25
25
  Object.defineProperty(exports, "FileKnowledgeStore", { enumerable: true, get: function () { return store_1.FileKnowledgeStore; } });
@@ -38,8 +38,6 @@ var import_1 = require("./import");
38
38
  Object.defineProperty(exports, "ColdStartImporter", { enumerable: true, get: function () { return import_1.ColdStartImporter; } });
39
39
  var doctor_1 = require("./doctor");
40
40
  Object.defineProperty(exports, "KnowledgeHealthScorer", { enumerable: true, get: function () { return doctor_1.KnowledgeHealthScorer; } });
41
- var lifecycle_hooks_1 = require("./lifecycle-hooks");
42
- Object.defineProperty(exports, "KnowledgeLifecycleHooks", { enumerable: true, get: function () { return lifecycle_hooks_1.KnowledgeLifecycleHooks; } });
43
41
  var audit_1 = require("./audit");
44
42
  Object.defineProperty(exports, "KnowledgeAudit", { enumerable: true, get: function () { return audit_1.KnowledgeAudit; } });
45
43
  var migration_1 = require("./migration");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/knowledge/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;AAEH,0CAAwB;AAExB,iCAA6C;AAApC,2GAAA,kBAAkB,OAAA;AAC3B,iCAAyC;AAAhC,uGAAA,cAAc,OAAA;AACvB,yCAAiD;AAAxC,+GAAA,kBAAkB,OAAA;AAE3B,mCAAoE;AAA3D,yGAAA,eAAe,OAAA;AAAE,iHAAA,uBAAuB,OAAA;AACjD,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AACzB,+BAAyC;AAAhC,uGAAA,eAAe,OAAA;AACxB,mCAA6C;AAApC,2GAAA,iBAAiB,OAAA;AAC1B,mCAAiD;AAAxC,+GAAA,qBAAqB,OAAA;AAC9B,qDAA4D;AAAnD,0HAAA,uBAAuB,OAAA;AAChC,iCAAyC;AAAhC,uGAAA,cAAc,OAAA;AAEvB,yCAAsD;AAA7C,oHAAA,uBAAuB,OAAA;AAChC,8DAAmE;AAA1D,sHAAA,oBAAoB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/knowledge/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;AAEH,0CAAwB;AAExB,iCAA6C;AAApC,2GAAA,kBAAkB,OAAA;AAC3B,iCAAyC;AAAhC,uGAAA,cAAc,OAAA;AACvB,yCAAiD;AAAxC,+GAAA,kBAAkB,OAAA;AAE3B,mCAAoE;AAA3D,yGAAA,eAAe,OAAA;AAAE,iHAAA,uBAAuB,OAAA;AACjD,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AACzB,+BAAyC;AAAhC,uGAAA,eAAe,OAAA;AACxB,mCAA6C;AAApC,2GAAA,iBAAiB,OAAA;AAC1B,mCAAiD;AAAxC,+GAAA,qBAAqB,OAAA;AAC9B,iCAAyC;AAAhC,uGAAA,cAAc,OAAA;AAEvB,yCAAsD;AAA7C,oHAAA,uBAAuB,OAAA;AAChC,8DAAmE;AAA1D,sHAAA,oBAAoB,OAAA"}
@@ -7,9 +7,28 @@
7
7
  * - 统计汇总(每小时自动执行)
8
8
  * - 异常检测(每日检查)
9
9
  * - 趋势分析(对比上一周期)
10
+ *
11
+ * 形状(ADR-0020):`summarize`/`detectAnomalies` 的判定本体是模块级纯函数
12
+ * (`summarizeTraces`/`detectTraceAnomalies`),`TraceAnalyzer` 类壳转发过去——
13
+ * 类壳是 studio 的运行时消费面,纯函数是已持有数据、不需要 collector 的消费端
14
+ * (`status`)的入口。两个纯函数不进包根导出(ADR-0003 零扩张)。
10
15
  */
11
16
  import type { ExecutionTrace, TraceSummary, TraceAnomaly, TraceAnalyzerConfig } from '../types/trace';
12
17
  import { TraceCollector } from './traces';
18
+ /**
19
+ * 生成统计汇总
20
+ *
21
+ * 纯计算,零 Token 成本。判定住在这里,`TraceAnalyzer.summarize()` 只是转发(ADR-0020)——
22
+ * 只要数据的消费端(`status`)直调本函数,不必为它构造带 mkdir 副作用的 collector。
23
+ */
24
+ export declare function summarizeTraces(traces: ExecutionTrace[]): TraceSummary[];
25
+ /**
26
+ * 检测异常
27
+ *
28
+ * 基于阈值检测异常模式。阈值来自参数而非实例状态(ADR-0020):省略 `config` 时
29
+ * 与类壳同一默认口径(`{ ...DEFAULT_CONFIG, ...config }`)。
30
+ */
31
+ export declare function detectTraceAnomalies(summaries: TraceSummary[], config?: Partial<TraceAnalyzerConfig>): TraceAnomaly[];
13
32
  /**
14
33
  * Trace 分析器
15
34
  *
@@ -28,6 +47,9 @@ export declare class TraceAnalyzer {
28
47
  * 生成统计汇总
29
48
  *
30
49
  * 纯计算,零 Token 成本
50
+ *
51
+ * ADR-0020:判定本体在模块级 `summarizeTraces()`,此处只是类壳转发
52
+ * (studio 经类消费的面逐字不动)。
31
53
  */
32
54
  summarize(traces: ExecutionTrace[]): TraceSummary[];
33
55
  /**
@@ -57,6 +79,9 @@ export declare class TraceAnalyzer {
57
79
  * 检测异常
58
80
  *
59
81
  * 基于阈值检测异常模式
82
+ *
83
+ * ADR-0020:判定本体在模块级 `detectTraceAnomalies()`(阈值经参数传入),
84
+ * 此处只是类壳转发。
60
85
  */
61
86
  detectAnomalies(summaries: TraceSummary[]): TraceAnomaly[];
62
87
  /**
@@ -65,16 +90,6 @@ export declare class TraceAnalyzer {
65
90
  * 计算各指标的环比变化
66
91
  */
67
92
  compareWithPrevious(current: TraceSummary[], previous: TraceSummary[]): TraceSummary[];
68
- /**
69
- * 计算趋势
70
- *
71
- * 对比前半段和后半段的通过率
72
- */
73
- private calculateTrend;
74
- /**
75
- * 计算通过率(skip 未评估,不计入分母)
76
- */
77
- private calcPassRate;
78
93
  /**
79
94
  * 保存汇总结果
80
95
  */
@@ -1 +1 @@
1
- {"version":3,"file":"trace-analyzer.d.ts","sourceRoot":"","sources":["../../src/monitoring/trace-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAqB1C;;;;;;;;;GASG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,SAAS,CAAiB;gBAEtB,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAK5E;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,YAAY,EAAE;IAiDnD;;;;;;OAMG;IACH,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,SAAS,EAAE,YAAY,EAAE,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE;IASvF;;;;OAIG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,EAAE;IAI5C;;;;OAIG;IACH,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,EAAE;IAKvD;;;;OAIG;IACH,eAAe,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE;IA2C1D;;;;OAIG;IACH,mBAAmB,CACjB,OAAO,EAAE,YAAY,EAAE,EACvB,QAAQ,EAAE,YAAY,EAAE,GACvB,YAAY,EAAE;IAmBjB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAyBtB;;OAEG;IACH,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,IAAI;IAI5C;;OAEG;IACH,WAAW,IAAI,YAAY,EAAE,GAAG,IAAI;IAIpC;;;;OAIG;IACH,gBAAgB,IAAI,YAAY,EAAE;IAgBlC;;;;OAIG;IACH,oBAAoB,IAAI,YAAY,EAAE;IAUtC;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,MAAM;CA4C7E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,aAAa,CAGnF"}
1
+ {"version":3,"file":"trace-analyzer.d.ts","sourceRoot":"","sources":["../../src/monitoring/trace-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AA6D1C;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,YAAY,EAAE,CA+CxE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,YAAY,EAAE,EACzB,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACpC,YAAY,EAAE,CAyChB;AAED;;;;;;;;;GASG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,SAAS,CAAiB;gBAEtB,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAK5E;;;;;;;OAOG;IACH,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,YAAY,EAAE;IAInD;;;;;;OAMG;IACH,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,SAAS,EAAE,YAAY,EAAE,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE;IASvF;;;;OAIG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,EAAE;IAI5C;;;;OAIG;IACH,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,EAAE;IAKvD;;;;;;;OAOG;IACH,eAAe,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE;IAI1D;;;;OAIG;IACH,mBAAmB,CACjB,OAAO,EAAE,YAAY,EAAE,EACvB,QAAQ,EAAE,YAAY,EAAE,GACvB,YAAY,EAAE;IAmBjB;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,IAAI;IAI5C;;OAEG;IACH,WAAW,IAAI,YAAY,EAAE,GAAG,IAAI;IAIpC;;;;OAIG;IACH,gBAAgB,IAAI,YAAY,EAAE;IAgBlC;;;;OAIG;IACH,oBAAoB,IAAI,YAAY,EAAE;IAUtC;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,MAAM;CA4C7E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,aAAa,CAGnF"}
@@ -8,9 +8,16 @@
8
8
  * - 统计汇总(每小时自动执行)
9
9
  * - 异常检测(每日检查)
10
10
  * - 趋势分析(对比上一周期)
11
+ *
12
+ * 形状(ADR-0020):`summarize`/`detectAnomalies` 的判定本体是模块级纯函数
13
+ * (`summarizeTraces`/`detectTraceAnomalies`),`TraceAnalyzer` 类壳转发过去——
14
+ * 类壳是 studio 的运行时消费面,纯函数是已持有数据、不需要 collector 的消费端
15
+ * (`status`)的入口。两个纯函数不进包根导出(ADR-0003 零扩张)。
11
16
  */
12
17
  Object.defineProperty(exports, "__esModule", { value: true });
13
18
  exports.TraceAnalyzer = void 0;
19
+ exports.summarizeTraces = summarizeTraces;
20
+ exports.detectTraceAnomalies = detectTraceAnomalies;
14
21
  exports.createAnalyzer = createAnalyzer;
15
22
  const traces_1 = require("./traces");
16
23
  const analyzer_base_1 = require("./analyzer-base");
@@ -24,6 +31,138 @@ const DEFAULT_CONFIG = {
24
31
  failRate: 0.5, // 失败率 > 50% 视为异常
25
32
  },
26
33
  };
34
+ /**
35
+ * 计算趋势(`summarizeTraces` 的模块内助手)
36
+ *
37
+ * 对比前半段和后半段的通过率
38
+ */
39
+ function calculateTrend(traces) {
40
+ if (traces.length < analyzer_base_1.MIN_TREND_SAMPLES) {
41
+ return 'stable';
42
+ }
43
+ // 分成前后两半(按时间排序)
44
+ const [firstHalf, secondHalf] = (0, analyzer_base_1.splitByTime)(traces);
45
+ // 计算前半段和后半段的通过率
46
+ const firstPassRate = calcPassRate(firstHalf);
47
+ const secondPassRate = calcPassRate(secondHalf);
48
+ // 计算变化
49
+ const delta = secondPassRate - firstPassRate;
50
+ // 判断趋势(变化 > 5% 才算显著)
51
+ if (delta > 0.05) {
52
+ return 'rising';
53
+ }
54
+ else if (delta < -0.05) {
55
+ return 'falling';
56
+ }
57
+ else {
58
+ return 'stable';
59
+ }
60
+ }
61
+ /**
62
+ * 计算通过率(skip 未评估,不计入分母)
63
+ */
64
+ function calcPassRate(traces) {
65
+ const evaluated = traces.filter(t => t.result !== 'skip');
66
+ if (evaluated.length === 0)
67
+ return 0;
68
+ const passCount = evaluated.filter(t => t.result === 'pass').length;
69
+ return passCount / evaluated.length;
70
+ }
71
+ /**
72
+ * 生成统计汇总
73
+ *
74
+ * 纯计算,零 Token 成本。判定住在这里,`TraceAnalyzer.summarize()` 只是转发(ADR-0020)——
75
+ * 只要数据的消费端(`status`)直调本函数,不必为它构造带 mkdir 副作用的 collector。
76
+ */
77
+ function summarizeTraces(traces) {
78
+ // 按约束 ID 分组
79
+ const grouped = (0, analyzer_base_1.groupByKey)(traces, t => t.constraintId);
80
+ const summaries = [];
81
+ for (const [constraintId, group] of grouped) {
82
+ // 提取层级(从第一条 trace)
83
+ const level = group[0].level;
84
+ // 计算时间范围
85
+ const timeRange = (0, analyzer_base_1.timeRangeOf)(group.map(t => t.timestamp));
86
+ // 单次遍历计算核心统计(skip 单独计数,不计入 pass/fail 率分母,ADR-0001)
87
+ const totalChecks = group.length;
88
+ let passCount = 0, failCount = 0, ignoreCount = 0, skipCount = 0;
89
+ for (const t of group) {
90
+ if (t.result === 'pass')
91
+ passCount++;
92
+ else if (t.result === 'fail')
93
+ failCount++;
94
+ else if (t.result === 'skip')
95
+ skipCount++;
96
+ if (t.userAction === 'ignore')
97
+ ignoreCount++;
98
+ }
99
+ // 计算比率(分母 = 实际评估次数,skip 未评估不计入)
100
+ const evaluatedChecks = totalChecks - skipCount;
101
+ const passRate = evaluatedChecks > 0 ? passCount / evaluatedChecks : 0;
102
+ const failRate = evaluatedChecks > 0 ? failCount / evaluatedChecks : 0;
103
+ // 计算趋势
104
+ const recentTrend = calculateTrend(group);
105
+ summaries.push({
106
+ constraintId,
107
+ level,
108
+ timeRange,
109
+ totalChecks,
110
+ passCount,
111
+ failCount,
112
+ skipCount,
113
+ ignoreCount,
114
+ passRate,
115
+ failRate,
116
+ recentTrend,
117
+ });
118
+ }
119
+ return summaries;
120
+ }
121
+ /**
122
+ * 检测异常
123
+ *
124
+ * 基于阈值检测异常模式。阈值来自参数而非实例状态(ADR-0020):省略 `config` 时
125
+ * 与类壳同一默认口径(`{ ...DEFAULT_CONFIG, ...config }`)。
126
+ */
127
+ function detectTraceAnomalies(summaries, config) {
128
+ const anomalies = [];
129
+ const thresholds = { ...DEFAULT_CONFIG, ...config }.thresholds;
130
+ for (const summary of summaries) {
131
+ // 检测失败率上升
132
+ if (summary.failRate > thresholds.failRate && summary.recentTrend === 'rising') {
133
+ anomalies.push({
134
+ type: 'rising_fail_rate',
135
+ constraintId: summary.constraintId,
136
+ level: summary.level,
137
+ message: `约束 ${summary.constraintId} 失败率 ${Math.round(summary.failRate * 100)}% 且趋势上升`,
138
+ data: {
139
+ currentRate: summary.failRate,
140
+ threshold: thresholds.failRate,
141
+ trend: 'rising',
142
+ },
143
+ detectedAt: Date.now(),
144
+ suggestedAction: 'diagnose',
145
+ });
146
+ }
147
+ // 检测低通过率
148
+ if (summary.passRate < 0.3) {
149
+ anomalies.push({
150
+ type: 'low_pass_rate',
151
+ constraintId: summary.constraintId,
152
+ level: summary.level,
153
+ message: `约束 ${summary.constraintId} 通过率 ${Math.round(summary.passRate * 100)}%,低于 30%`,
154
+ data: {
155
+ currentRate: summary.passRate,
156
+ threshold: 0.3,
157
+ trend: summary.recentTrend,
158
+ },
159
+ detectedAt: Date.now(),
160
+ suggestedAction: 'adjust_threshold',
161
+ });
162
+ }
163
+ }
164
+ return anomalies;
165
+ }
27
166
  /**
28
167
  * Trace 分析器
29
168
  *
@@ -45,50 +184,12 @@ class TraceAnalyzer {
45
184
  * 生成统计汇总
46
185
  *
47
186
  * 纯计算,零 Token 成本
187
+ *
188
+ * ADR-0020:判定本体在模块级 `summarizeTraces()`,此处只是类壳转发
189
+ * (studio 经类消费的面逐字不动)。
48
190
  */
49
191
  summarize(traces) {
50
- // 按约束 ID 分组
51
- const grouped = (0, analyzer_base_1.groupByKey)(traces, t => t.constraintId);
52
- const summaries = [];
53
- for (const [constraintId, group] of grouped) {
54
- // 提取层级(从第一条 trace)
55
- const level = group[0].level;
56
- // 计算时间范围
57
- const timeRange = (0, analyzer_base_1.timeRangeOf)(group.map(t => t.timestamp));
58
- // 单次遍历计算核心统计(skip 单独计数,不计入 pass/fail 率分母,ADR-0001)
59
- const totalChecks = group.length;
60
- let passCount = 0, failCount = 0, ignoreCount = 0, skipCount = 0;
61
- for (const t of group) {
62
- if (t.result === 'pass')
63
- passCount++;
64
- else if (t.result === 'fail')
65
- failCount++;
66
- else if (t.result === 'skip')
67
- skipCount++;
68
- if (t.userAction === 'ignore')
69
- ignoreCount++;
70
- }
71
- // 计算比率(分母 = 实际评估次数,skip 未评估不计入)
72
- const evaluatedChecks = totalChecks - skipCount;
73
- const passRate = evaluatedChecks > 0 ? passCount / evaluatedChecks : 0;
74
- const failRate = evaluatedChecks > 0 ? failCount / evaluatedChecks : 0;
75
- // 计算趋势
76
- const recentTrend = this.calculateTrend(group);
77
- summaries.push({
78
- constraintId,
79
- level,
80
- timeRange,
81
- totalChecks,
82
- passCount,
83
- failCount,
84
- skipCount,
85
- ignoreCount,
86
- passRate,
87
- failRate,
88
- recentTrend,
89
- });
90
- }
91
- return summaries;
192
+ return summarizeTraces(traces);
92
193
  }
93
194
  /**
94
195
  * 分析最近 N 小时的 traces,并带出坏行计数(harness#100 报告入口)
@@ -125,45 +226,12 @@ class TraceAnalyzer {
125
226
  * 检测异常
126
227
  *
127
228
  * 基于阈值检测异常模式
229
+ *
230
+ * ADR-0020:判定本体在模块级 `detectTraceAnomalies()`(阈值经参数传入),
231
+ * 此处只是类壳转发。
128
232
  */
129
233
  detectAnomalies(summaries) {
130
- const anomalies = [];
131
- const thresholds = this.config.thresholds;
132
- for (const summary of summaries) {
133
- // 检测失败率上升
134
- if (summary.failRate > thresholds.failRate && summary.recentTrend === 'rising') {
135
- anomalies.push({
136
- type: 'rising_fail_rate',
137
- constraintId: summary.constraintId,
138
- level: summary.level,
139
- message: `约束 ${summary.constraintId} 失败率 ${Math.round(summary.failRate * 100)}% 且趋势上升`,
140
- data: {
141
- currentRate: summary.failRate,
142
- threshold: thresholds.failRate,
143
- trend: 'rising',
144
- },
145
- detectedAt: Date.now(),
146
- suggestedAction: 'diagnose',
147
- });
148
- }
149
- // 检测低通过率
150
- if (summary.passRate < 0.3) {
151
- anomalies.push({
152
- type: 'low_pass_rate',
153
- constraintId: summary.constraintId,
154
- level: summary.level,
155
- message: `约束 ${summary.constraintId} 通过率 ${Math.round(summary.passRate * 100)}%,低于 30%`,
156
- data: {
157
- currentRate: summary.passRate,
158
- threshold: 0.3,
159
- trend: summary.recentTrend,
160
- },
161
- detectedAt: Date.now(),
162
- suggestedAction: 'adjust_threshold',
163
- });
164
- }
165
- }
166
- return anomalies;
234
+ return detectTraceAnomalies(summaries, this.config);
167
235
  }
168
236
  /**
169
237
  * 对比上一周期
@@ -183,43 +251,6 @@ class TraceAnalyzer {
183
251
  return summary;
184
252
  });
185
253
  }
186
- /**
187
- * 计算趋势
188
- *
189
- * 对比前半段和后半段的通过率
190
- */
191
- calculateTrend(traces) {
192
- if (traces.length < analyzer_base_1.MIN_TREND_SAMPLES) {
193
- return 'stable';
194
- }
195
- // 分成前后两半(按时间排序)
196
- const [firstHalf, secondHalf] = (0, analyzer_base_1.splitByTime)(traces);
197
- // 计算前半段和后半段的通过率
198
- const firstPassRate = this.calcPassRate(firstHalf);
199
- const secondPassRate = this.calcPassRate(secondHalf);
200
- // 计算变化
201
- const delta = secondPassRate - firstPassRate;
202
- // 判断趋势(变化 > 5% 才算显著)
203
- if (delta > 0.05) {
204
- return 'rising';
205
- }
206
- else if (delta < -0.05) {
207
- return 'falling';
208
- }
209
- else {
210
- return 'stable';
211
- }
212
- }
213
- /**
214
- * 计算通过率(skip 未评估,不计入分母)
215
- */
216
- calcPassRate(traces) {
217
- const evaluated = traces.filter(t => t.result !== 'skip');
218
- if (evaluated.length === 0)
219
- return 0;
220
- const passCount = evaluated.filter(t => t.result === 'pass').length;
221
- return passCount / evaluated.length;
222
- }
223
254
  /**
224
255
  * 保存汇总结果
225
256
  */
@@ -1 +1 @@
1
- {"version":3,"file":"trace-analyzer.js","sourceRoot":"","sources":["../../src/monitoring/trace-analyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trace-analyzer.js","sourceRoot":"","sources":["../../src/monitoring/trace-analyzer.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AA2EH,0CA+CC;AAQD,oDA4CC;AAiND,wCAGC;AA1XD,qCAA0C;AAC1C,mDAOyB;AAEzB;;GAEG;AACH,MAAM,cAAc,GAAwB;IAC1C,WAAW,EAAE,mCAAmC;IAChD,QAAQ,EAAE,IAAI,GAAG,IAAI,EAAE,OAAO;IAC9B,UAAU,EAAE;QACV,QAAQ,EAAE,GAAG,EAAS,iBAAiB;KACxC;CACF,CAAC;AAEF;;;;GAIG;AACH,SAAS,cAAc,CAAC,MAAwB;IAC9C,IAAI,MAAM,CAAC,MAAM,GAAG,iCAAiB,EAAE,CAAC;QACtC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,gBAAgB;IAChB,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,IAAA,2BAAW,EAAC,MAAM,CAAC,CAAC;IAEpD,gBAAgB;IAChB,MAAM,aAAa,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IAC9C,MAAM,cAAc,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IAEhD,OAAO;IACP,MAAM,KAAK,GAAG,cAAc,GAAG,aAAa,CAAC;IAE7C,qBAAqB;IACrB,IAAI,KAAK,GAAG,IAAI,EAAE,CAAC;QACjB,OAAO,QAAQ,CAAC;IAClB,CAAC;SAAM,IAAI,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACnB,CAAC;SAAM,CAAC;QACN,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,MAAwB;IAC5C,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IAC1D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IACpE,OAAO,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;AACtC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,MAAwB;IACtD,YAAY;IACZ,MAAM,OAAO,GAAG,IAAA,0BAAU,EAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IAExD,MAAM,SAAS,GAAmB,EAAE,CAAC;IAErC,KAAK,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QAC5C,mBAAmB;QACnB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAE7B,SAAS;QACT,MAAM,SAAS,GAAG,IAAA,2BAAW,EAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAE3D,mDAAmD;QACnD,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;QACjC,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,EAAE,WAAW,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC;QACjE,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;gBAAE,SAAS,EAAE,CAAC;iBAChC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;gBAAE,SAAS,EAAE,CAAC;iBACrC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;gBAAE,SAAS,EAAE,CAAC;YAC1C,IAAI,CAAC,CAAC,UAAU,KAAK,QAAQ;gBAAE,WAAW,EAAE,CAAC;QAC/C,CAAC;QAED,gCAAgC;QAChC,MAAM,eAAe,GAAG,WAAW,GAAG,SAAS,CAAC;QAChD,MAAM,QAAQ,GAAG,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QAEvE,OAAO;QACP,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QAE1C,SAAS,CAAC,IAAI,CAAC;YACb,YAAY;YACZ,KAAK;YACL,SAAS;YACT,WAAW;YACX,SAAS;YACT,SAAS;YACT,SAAS;YACT,WAAW;YACX,QAAQ;YACR,QAAQ;YACR,WAAW;SACZ,CAAC,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,oBAAoB,CAClC,SAAyB,EACzB,MAAqC;IAErC,MAAM,SAAS,GAAmB,EAAE,CAAC;IACrC,MAAM,UAAU,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC,UAAW,CAAC;IAEhE,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;QAChC,UAAU;QACV,IAAI,OAAO,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAS,IAAI,OAAO,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;YAChF,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,kBAAkB;gBACxB,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,OAAO,EAAE,MAAM,OAAO,CAAC,YAAY,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC,SAAS;gBACtF,IAAI,EAAE;oBACJ,WAAW,EAAE,OAAO,CAAC,QAAQ;oBAC7B,SAAS,EAAE,UAAU,CAAC,QAAS;oBAC/B,KAAK,EAAE,QAAQ;iBAChB;gBACD,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;gBACtB,eAAe,EAAE,UAAU;aAC5B,CAAC,CAAC;QACL,CAAC;QAED,SAAS;QACT,IAAI,OAAO,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC;YAC3B,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,eAAe;gBACrB,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,OAAO,EAAE,MAAM,OAAO,CAAC,YAAY,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC,UAAU;gBACvF,IAAI,EAAE;oBACJ,WAAW,EAAE,OAAO,CAAC,QAAQ;oBAC7B,SAAS,EAAE,GAAG;oBACd,KAAK,EAAE,OAAO,CAAC,WAAW;iBAC3B;gBACD,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;gBACtB,eAAe,EAAE,kBAAkB;aACpC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAa,aAAa;IAChB,MAAM,CAAsB;IAC5B,SAAS,CAAiB;IAElC,YAAY,SAAyB,EAAE,MAAqC;QAC1E,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;IACjD,CAAC;IAED;;;;;;;OAOG;IACH,SAAS,CAAC,MAAwB;QAChC,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED;;;;;;OAMG;IACH,mBAAmB,CAAC,KAAa;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;QAC/C,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;YACzD,SAAS,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE;SACtC,CAAC,CAAC;QAEH,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;IAC7D,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,KAAa;QACzB,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;IACnD,CAAC;IAED;;;;OAIG;IACH,iBAAiB,CAAC,YAAoB;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED;;;;;;;OAOG;IACH,eAAe,CAAC,SAAyB;QACvC,OAAO,oBAAoB,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;IAED;;;;OAIG;IACH,mBAAmB,CACjB,OAAuB,EACvB,QAAwB;QAExB,MAAM,WAAW,GAAG,IAAI,GAAG,CACzB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CACvC,CAAC;QAEF,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YAC3B,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAEnD,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,CAAC,oBAAoB,GAAG;oBAC7B,aAAa,EAAE,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;oBAC/C,aAAa,EAAE,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;iBAChD,CAAC;YACJ,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,SAAyB;QACnC,IAAA,gCAAgB,EAAC,IAAI,CAAC,MAAM,CAAC,WAAY,EAAE,SAAS,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAA,+BAAe,EAAiB,IAAI,CAAC,MAAM,CAAC,WAAY,CAAC,CAAC;IACnE,CAAC;IAED;;;;OAIG;IACH,gBAAgB;QACd,YAAY;QACZ,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAEtC,cAAc;QACd,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC9C,CAAC;QAED,SAAS;QACT,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAE1B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACH,oBAAoB;QAClB,aAAa;QACb,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAEzC,OAAO;QACP,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAElD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,SAAyB,EAAE,SAAyB;QACjE,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,OAAO;QACP,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;YAChC,MAAM,UAAU,GAAG;gBACjB,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,IAAI;gBACf,MAAM,EAAE,IAAI;gBACZ,GAAG,EAAE,IAAI;aACV,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAEjB,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,MAAM,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC;YACxD,KAAK,CAAC,IAAI,CAAC,eAAe,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;YACjD,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/D,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/D,KAAK,CAAC,IAAI,CAAC,cAAc,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;YAChD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,OAAO;QACP,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEf,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;gBAChC,KAAK,CAAC,IAAI,CAAC,QAAQ,OAAO,CAAC,IAAI,OAAO,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;gBAC9D,KAAK,CAAC,IAAI,CAAC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;gBACrC,KAAK,CAAC,IAAI,CAAC,kBAAkB,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;gBACxD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF;AAhMD,sCAgMC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,MAAqC;IAClE,MAAM,SAAS,GAAG,IAAI,uBAAc,EAAE,CAAC;IACvC,OAAO,IAAI,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAC9C,CAAC"}
@@ -86,6 +86,14 @@ export interface ConstraintResult {
86
86
  constraint?: Constraint;
87
87
  /** 消息 */
88
88
  message?: string;
89
+ /**
90
+ * 证据行(harness#119)
91
+ *
92
+ * checker 经 CheckDetail 返回的具体判定依据(如未登记的文件路径)。
93
+ * 违规时随 message 一并展示;满足但非空时为「提示」(不进 pass/fail 统计)。
94
+ * skip 恒为空——未评估不得留下证据行。
95
+ */
96
+ evidence?: string[];
89
97
  /** 建议操作 */
90
98
  requiredAction?: string;
91
99
  /** 检查时间 */
@@ -1 +1 @@
1
- {"version":3,"file":"constraint.d.ts","sourceRoot":"","sources":["../../src/types/constraint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constraint.d.ts","sourceRoot":"","sources":["../../src/types/constraint.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,12 @@ exports.ConstraintViolationError = void 0;
16
16
  class ConstraintViolationError extends Error {
17
17
  result;
18
18
  constructor(result) {
19
- super(result.message || 'Constraint violation');
19
+ // 铁律违规在 checkConstraints 处直接 throw,CLI 的结构化输出块走不到这里,
20
+ // error.message 是判定证据唯一的外溢面(harness#119)
21
+ const detail = result.evidence?.length
22
+ ? `:\n${result.evidence.map((line) => ` - ${line}`).join('\n')}`
23
+ : '';
24
+ super(`${result.message || 'Constraint violation'}${detail}`);
20
25
  this.name = 'ConstraintViolationError';
21
26
  this.result = result;
22
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"constraint.js","sourceRoot":"","sources":["../../src/types/constraint.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAqLH;;GAEG;AACH,MAAa,wBAAyB,SAAQ,KAAK;IACjC,MAAM,CAAmB;IAEzC,YAAY,MAAwB;QAClC,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,sBAAsB,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AARD,4DAQC"}
1
+ {"version":3,"file":"constraint.js","sourceRoot":"","sources":["../../src/types/constraint.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AA8LH;;GAEG;AACH,MAAa,wBAAyB,SAAQ,KAAK;IACjC,MAAM,CAAmB;IAEzC,YAAY,MAAwB;QAClC,qDAAqD;QACrD,yCAAyC;QACzC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,MAAM;YACpC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACjE,CAAC,CAAC,EAAE,CAAC;QACP,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,IAAI,sBAAsB,GAAG,MAAM,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAbD,4DAaC"}
@@ -20,10 +20,6 @@ export interface PassesGateConfig {
20
20
  * 不赦免非零退出码(判定依据收在 core/validators/test-output.ts 的 judgeTestRun,ADR-0014)
21
21
  */
22
22
  allowPartialPass?: boolean;
23
- /** 最大重试次数 */
24
- maxRetries?: number;
25
- /** 重试延迟(毫秒) */
26
- retryDelay?: number;
27
23
  }
28
24
  /**
29
25
  * 测试结果
@@ -46,21 +42,6 @@ export interface TaskTestResult {
46
42
  /** 证据路径 */
47
43
  evidence?: string;
48
44
  }
49
- /**
50
- * 测试门控结果
51
- */
52
- export interface PassesGateResult {
53
- /** 任务 ID */
54
- taskId: string;
55
- /** 是否允许设置 */
56
- allowed: boolean;
57
- /** 测试结果 */
58
- testResult?: TaskTestResult;
59
- /** 尝试次数 */
60
- attempts: number;
61
- /** 错误信息 */
62
- error?: string;
63
- }
64
45
  /**
65
46
  * 动态任务(用于 passes-gate)
66
47
  */
@@ -1 +1 @@
1
- {"version":3,"file":"passes-gate.d.ts","sourceRoot":"","sources":["../../src/types/passes-gate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW;IACX,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,aAAa;IACb,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,aAAa;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,eAAe;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,WAAW;IACX,MAAM,EAAE,OAAO,CAAC;IAEhB,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;IAEhB,SAAS;IACT,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,SAAS;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,eAAe;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,UAAU;IACV,SAAS,CAAC,EAAE,IAAI,CAAC;IAEjB,cAAc;IACd,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAEpB,WAAW;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,YAAY;IACZ,MAAM,EAAE,MAAM,CAAC;IAEf,aAAa;IACb,OAAO,EAAE,OAAO,CAAC;IAEjB,WAAW;IACX,UAAU,CAAC,EAAE,cAAc,CAAC;IAE5B,WAAW;IACX,QAAQ,EAAE,MAAM,CAAC;IAEjB,WAAW;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,YAAY;IACZ,EAAE,EAAE,MAAM,CAAC;IAEX,WAAW;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,WAAW;IACX,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,WAAW;IACX,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAMD;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,eAAe;IACf,MAAM,EAAE,OAAO,CAAC;IAEhB,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,eAAe;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,eAAe;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAEpB,eAAe;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,eAAe;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,eAAe;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,kBAAkB;IAClB,EAAE,EAAE,MAAM,CAAC;IAEX,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IAEb,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;IAEhB,WAAW;IACX,KAAK,EAAE,UAAU,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,eAAe;IACf,OAAO,EAAE,OAAO,CAAC;IAEjB,oBAAoB;IACpB,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAEnC,aAAa;IACb,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB"}
1
+ {"version":3,"file":"passes-gate.d.ts","sourceRoot":"","sources":["../../src/types/passes-gate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW;IACX,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,aAAa;IACb,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,WAAW;IACX,MAAM,EAAE,OAAO,CAAC;IAEhB,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;IAEhB,SAAS;IACT,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,SAAS;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,eAAe;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,UAAU;IACV,SAAS,CAAC,EAAE,IAAI,CAAC;IAEjB,cAAc;IACd,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAEpB,WAAW;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,YAAY;IACZ,EAAE,EAAE,MAAM,CAAC;IAEX,WAAW;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,WAAW;IACX,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,WAAW;IACX,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAMD;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,eAAe;IACf,MAAM,EAAE,OAAO,CAAC;IAEhB,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,eAAe;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,eAAe;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAEpB,eAAe;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,eAAe;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,eAAe;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,kBAAkB;IAClB,EAAE,EAAE,MAAM,CAAC;IAEX,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IAEb,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;IAEhB,WAAW;IACX,KAAK,EAAE,UAAU,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,eAAe;IACf,OAAO,EAAE,OAAO,CAAC;IAEjB,oBAAoB;IACpB,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAEnC,aAAa;IACb,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB"}
@@ -17,6 +17,8 @@ export declare const DEFAULT_TRACE_FILE = ".harness/logs/traces.log";
17
17
  * - 只记录核心字段(零 Token)
18
18
  * - 不记录代码片段(需要时从 git diff 获取)
19
19
  * - 不记录决策路径(需要时从 execution logs 获取)
20
+ * - 例外(harness#119):判定证据允许记录——路径级依据不是代码片段,
21
+ * 而没有它,一条恒红的约束在统计侧根本无法回答「红在哪」
20
22
  */
21
23
  export interface ExecutionTrace {
22
24
  /** 约束 ID */
@@ -35,6 +37,13 @@ export interface ExecutionTrace {
35
37
  projectPath?: string;
36
38
  /** 会话 ID(用于追踪同一会话的多次检查) */
37
39
  sessionId?: string;
40
+ /**
41
+ * 判定证据行(harness#119)
42
+ *
43
+ * 只落 checker 给出的路径级依据(如未登记文件清单),由 checker 截断条数;
44
+ * 不落 pass 结果的空数组,避免无信息记录膨胀 JSONL。
45
+ */
46
+ evidence?: string[];
38
47
  /** 用户如何响应失败 */
39
48
  userAction?: 'bypass' | 'fix' | 'ignore' | 'request_help';
40
49
  /** 用户绕过理由(如果用户绕过) */
@@ -1 +1 @@
1
- {"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../src/types/trace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../src/types/trace.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dommaker/harness",
3
- "version": "1.4.0",
3
+ "version": "1.6.0",
4
4
  "description": "通用工程约束框架 - 铁律系统、检查点验证、测试门控",
5
5
  "keywords": [
6
6
  "harness",
package/src/CONTEXT.md CHANGED
@@ -42,6 +42,7 @@
42
42
  | 回滚 | 分工:版本化回退(单段——yml 数据文件 git 版本化,删段恢复)+ 提案回滚(多段 inverse,挂 studio#82 D6) |
43
43
  | 文件驱动 CLI | yml 状态真值 + 一次性进程、无常驻生命周期;故不引 dispose 链(止步档 1) |
44
44
  | 对照(reconcile) | CAPABILITIES.md 声明与源码实况的双向一致性判定(代码→文档查漏登,文档→代码查幽灵);唯一实现 `core/constraints/capabilities-reconcile.ts`,capability_sync / docs_freshness / sync-docs 共消费(ADR-0009) |
45
+ | 判定证据(evidence) | checker 随判定一并返回的路径级依据(`CheckDetail{pass, evidence}`,harness#119/ADR-0016);文案由 checker 措辞、消费端只打印,出口 = `ConstraintResult` / CLI 输出 / trace / 铁律异常文案。不是第四种统计态:**违规** = 与本次变更有因果(进 pass/fail 分母),**提示** = `pass:true` + evidence(仓库级漂移等无因果缺口,只露出不拦) |
45
46
  | 测试产物解读(test-output) | 从测试运行器 stdout 读出「过了没 / 哪些失败 / 覆盖率」的判定;唯一实现 `core/validators/test-output.ts`(包内,不进导出面),passes-gate / acceptance 共消费(ADR-0012)。两门禁判定依据不一致待 #93 裁决,覆盖率取数归属待 #94 裁决 |
46
47
  | 飞轮指标(flywheel) | 知识条目的引用与消费度量(refCoverage / avgRefs / consumptionHitRate);唯一实现 `knowledge/flywheel-metrics.ts`(包内,不进导出面),canonical 分子为过滤 synthetic 后的 genuine refs,audit D6 / knowledge stats / knowledge health 共消费(ADR-0013,#81) |
47
48
  | 测试夹具(project fixture) | 临时项目根 + 落盘声明;唯一实现 `test-setup/project-fixture.ts`(测试层,不进导出面)——`config` 槽是 `.harness/config.yml` 落点唯一正本(字符串原样落盘,畸形/脏配置用例依赖此口径),`traces` 槽/`writeProjectTraces` 是 trace 落盘唯一正本(路径锚定 `DEFAULT_TRACE_FILE`、序列化走 `appendJsonl` 生产写链,harness#108),其余文件走 `files` 相对路径;非缺省根必须经 `parentDir` **显式** opt-out(cwd 锚定用例语义),回收经 `mkdtemp-cleanup` 劫持(harness#90) |