@dommaker/harness 1.11.0 → 1.12.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 (137) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/cli/commands/constraints-pack-proposal.d.ts +48 -0
  3. package/dist/cli/commands/constraints-pack-proposal.d.ts.map +1 -0
  4. package/dist/cli/commands/constraints-pack-proposal.js +169 -0
  5. package/dist/cli/commands/constraints-pack-proposal.js.map +1 -0
  6. package/dist/cli/commands/constraints-reactivate.d.ts +55 -0
  7. package/dist/cli/commands/constraints-reactivate.d.ts.map +1 -0
  8. package/dist/cli/commands/constraints-reactivate.js +175 -0
  9. package/dist/cli/commands/constraints-reactivate.js.map +1 -0
  10. package/dist/cli/commands/constraints-report.d.ts +12 -1
  11. package/dist/cli/commands/constraints-report.d.ts.map +1 -1
  12. package/dist/cli/commands/constraints-report.js +35 -2
  13. package/dist/cli/commands/constraints-report.js.map +1 -1
  14. package/dist/cli/commands/constraints-retire.d.ts +49 -4
  15. package/dist/cli/commands/constraints-retire.d.ts.map +1 -1
  16. package/dist/cli/commands/constraints-retire.js +116 -34
  17. package/dist/cli/commands/constraints-retire.js.map +1 -1
  18. package/dist/cli/commands/definitions.d.ts.map +1 -1
  19. package/dist/cli/commands/definitions.js +31 -1
  20. package/dist/cli/commands/definitions.js.map +1 -1
  21. package/dist/cli/commands/knowledge-view.d.ts +6 -3
  22. package/dist/cli/commands/knowledge-view.d.ts.map +1 -1
  23. package/dist/cli/commands/knowledge-view.js +8 -26
  24. package/dist/cli/commands/knowledge-view.js.map +1 -1
  25. package/dist/cli/commands/report.d.ts.map +1 -1
  26. package/dist/cli/commands/report.js +9 -5
  27. package/dist/cli/commands/report.js.map +1 -1
  28. package/dist/cli/state-io.d.ts +8 -1
  29. package/dist/cli/state-io.d.ts.map +1 -1
  30. package/dist/cli/state-io.js +2 -1
  31. package/dist/cli/state-io.js.map +1 -1
  32. package/dist/core/app-constraints-loader.d.ts +28 -0
  33. package/dist/core/app-constraints-loader.d.ts.map +1 -0
  34. package/dist/core/app-constraints-loader.js +187 -0
  35. package/dist/core/app-constraints-loader.js.map +1 -0
  36. package/dist/core/constraints/checker.js +1 -1
  37. package/dist/core/constraints/checker.js.map +1 -1
  38. package/dist/core/constraints/checkers/index.d.ts +20 -9
  39. package/dist/core/constraints/checkers/index.d.ts.map +1 -1
  40. package/dist/core/constraints/checkers/index.js +40 -11
  41. package/dist/core/constraints/checkers/index.js.map +1 -1
  42. package/dist/core/constraints/checkers/templated/file-exists.d.ts +16 -0
  43. package/dist/core/constraints/checkers/templated/file-exists.d.ts.map +1 -0
  44. package/dist/core/constraints/checkers/templated/file-exists.js +108 -0
  45. package/dist/core/constraints/checkers/templated/file-exists.js.map +1 -0
  46. package/dist/core/constraints/checkers/templated/glob.d.ts +10 -0
  47. package/dist/core/constraints/checkers/templated/glob.d.ts.map +1 -0
  48. package/dist/core/constraints/checkers/templated/glob.js +51 -0
  49. package/dist/core/constraints/checkers/templated/glob.js.map +1 -0
  50. package/dist/core/constraints/checkers/templated/index.d.ts +12 -0
  51. package/dist/core/constraints/checkers/templated/index.d.ts.map +1 -0
  52. package/dist/core/constraints/checkers/templated/index.js +17 -0
  53. package/dist/core/constraints/checkers/templated/index.js.map +1 -0
  54. package/dist/core/constraints/checkers/templated/regex-scan.d.ts +15 -0
  55. package/dist/core/constraints/checkers/templated/regex-scan.d.ts.map +1 -0
  56. package/dist/core/constraints/checkers/templated/regex-scan.js +129 -0
  57. package/dist/core/constraints/checkers/templated/regex-scan.js.map +1 -0
  58. package/dist/core/constraints/checkers/templates-registry.d.ts +17 -0
  59. package/dist/core/constraints/checkers/templates-registry.d.ts.map +1 -0
  60. package/dist/core/constraints/checkers/templates-registry.js +23 -0
  61. package/dist/core/constraints/checkers/templates-registry.js.map +1 -0
  62. package/dist/core/constraints/checkers/types.d.ts +14 -0
  63. package/dist/core/constraints/checkers/types.d.ts.map +1 -1
  64. package/dist/core/constraints/checkers/types.js.map +1 -1
  65. package/dist/core/constraints/definitions/guidelines.d.ts.map +1 -1
  66. package/dist/core/constraints/definitions/guidelines.js +0 -14
  67. package/dist/core/constraints/definitions/guidelines.js.map +1 -1
  68. package/dist/core/constraints/definitions/iron-laws.d.ts.map +1 -1
  69. package/dist/core/constraints/definitions/iron-laws.js +15 -0
  70. package/dist/core/constraints/definitions/iron-laws.js.map +1 -1
  71. package/dist/core/constraints/usage-report.d.ts +58 -6
  72. package/dist/core/constraints/usage-report.d.ts.map +1 -1
  73. package/dist/core/constraints/usage-report.js +61 -12
  74. package/dist/core/constraints/usage-report.js.map +1 -1
  75. package/dist/core/project-config-loader.d.ts +9 -6
  76. package/dist/core/project-config-loader.d.ts.map +1 -1
  77. package/dist/core/project-config-loader.js +18 -8
  78. package/dist/core/project-config-loader.js.map +1 -1
  79. package/dist/gates/command.d.ts.map +1 -1
  80. package/dist/gates/command.js +50 -0
  81. package/dist/gates/command.js.map +1 -1
  82. package/dist/knowledge/lifecycle.d.ts +14 -0
  83. package/dist/knowledge/lifecycle.d.ts.map +1 -1
  84. package/dist/knowledge/lifecycle.js +50 -0
  85. package/dist/knowledge/lifecycle.js.map +1 -1
  86. package/dist/presets/standard.d.ts +1 -1
  87. package/dist/presets/standard.d.ts.map +1 -1
  88. package/dist/presets/standard.js +2 -3
  89. package/dist/presets/standard.js.map +1 -1
  90. package/dist/types/constraint.d.ts +24 -0
  91. package/dist/types/constraint.d.ts.map +1 -1
  92. package/dist/types/constraint.js.map +1 -1
  93. package/package.json +1 -1
  94. package/src/__tests__/app-constraints-loader.test.ts +220 -0
  95. package/src/__tests__/iron-laws.test.ts +5 -5
  96. package/src/cli/commands/CONTEXT.md +3 -2
  97. package/src/cli/commands/__tests__/check.test.ts +22 -4
  98. package/src/cli/commands/__tests__/constraints-pack-proposal.test.ts +142 -0
  99. package/src/cli/commands/__tests__/constraints-reactivate.test.ts +210 -0
  100. package/src/cli/commands/__tests__/constraints-report.test.ts +175 -6
  101. package/src/cli/commands/__tests__/constraints-retire.test.ts +135 -10
  102. package/src/cli/commands/__tests__/knowledge.test.ts +6 -16
  103. package/src/cli/commands/__tests__/report-app-constraints.test.ts +67 -0
  104. package/src/cli/commands/constraints-pack-proposal.ts +172 -0
  105. package/src/cli/commands/constraints-reactivate.ts +197 -0
  106. package/src/cli/commands/constraints-report.ts +44 -2
  107. package/src/cli/commands/constraints-retire.ts +129 -36
  108. package/src/cli/commands/definitions.ts +31 -1
  109. package/src/cli/commands/knowledge-view.ts +9 -28
  110. package/src/cli/commands/report.ts +9 -5
  111. package/src/cli/state-io.ts +8 -1
  112. package/src/core/CONTEXT.md +5 -4
  113. package/src/core/app-constraints-loader.ts +165 -0
  114. package/src/core/constraints/__tests__/collect-constraints.test.ts +3 -1
  115. package/src/core/constraints/__tests__/usage-report.test.ts +63 -0
  116. package/src/core/constraints/checker.ts +1 -1
  117. package/src/core/constraints/checkers/__tests__/templated-checkers.test.ts +180 -0
  118. package/src/core/constraints/checkers/__tests__/templates-registry.test.ts +81 -0
  119. package/src/core/constraints/checkers/index.ts +44 -10
  120. package/src/core/constraints/checkers/templated/file-exists.ts +75 -0
  121. package/src/core/constraints/checkers/templated/glob.ts +46 -0
  122. package/src/core/constraints/checkers/templated/index.ts +12 -0
  123. package/src/core/constraints/checkers/templated/regex-scan.ts +132 -0
  124. package/src/core/constraints/checkers/templates-registry.ts +22 -0
  125. package/src/core/constraints/checkers/types.ts +15 -0
  126. package/src/core/constraints/definitions/guidelines.ts +0 -15
  127. package/src/core/constraints/definitions/iron-laws.ts +16 -0
  128. package/src/core/constraints/usage-report.ts +128 -13
  129. package/src/core/project-config-loader.ts +19 -8
  130. package/src/gates/__tests__/command.test.ts +54 -0
  131. package/src/gates/command.ts +51 -0
  132. package/src/knowledge/CONTEXT.md +3 -1
  133. package/src/knowledge/__tests__/lifecycle.test.ts +81 -0
  134. package/src/knowledge/lifecycle.ts +49 -0
  135. package/src/presets/__tests__/standard.test.ts +5 -4
  136. package/src/presets/standard.ts +2 -3
  137. package/src/types/constraint.ts +28 -0
@@ -163,8 +163,10 @@ class KnowledgeLifecycle {
163
163
  };
164
164
  this.store.update(entryId, { maturity: target });
165
165
  // AC-8a: After promotion, check skillCandidate eligibility
166
+ // 块 3 子项 6(ADR-0033):同位触发 constraintCandidate 判定——两标独立,可同挂
166
167
  if (target === 'proven') {
167
168
  this.checkSkillCandidate(entryId);
169
+ this.checkConstraintCandidate(entryId);
168
170
  }
169
171
  return change;
170
172
  }
@@ -217,6 +219,54 @@ class KnowledgeLifecycle {
217
219
  return false;
218
220
  return true;
219
221
  }
222
+ /**
223
+ * 块 3 子项 6(ADR-0033):Check if a proven entry qualifies as a constraintCandidate.
224
+ * Marks with 'constraintCandidate' tag and emits event if eligible.
225
+ * Returns true if newly marked.
226
+ *
227
+ * 判定口径(人类已批准,设计稿 Q4):proven + 未打过标 + references≥5
228
+ * (referencedBy 条数,与 recordReference 的 refKey 口径一致)+ ≥3 个不同来源会话
229
+ * (contributors,与 skill 候选同字段)。与 skillCandidate 互不干扰,可同挂两标。
230
+ */
231
+ checkConstraintCandidate(entryId) {
232
+ const entry = this.store.get(entryId);
233
+ if (!entry)
234
+ return false;
235
+ if (!this.isConstraintCandidate(entry))
236
+ return false;
237
+ // Mark as constraintCandidate
238
+ this.store.update(entryId, {
239
+ tags: [...entry.tags, 'constraintCandidate'],
240
+ });
241
+ // Emit event for downstream consumers
242
+ const now = new Date().toISOString();
243
+ for (const cb of this.onReferenceCallbacks) {
244
+ try {
245
+ cb({
246
+ entryId,
247
+ contributor: 'lifecycle',
248
+ timestamp: now,
249
+ context: 'constraintCandidate:marked',
250
+ });
251
+ }
252
+ catch { /* non-blocking */ }
253
+ }
254
+ return true;
255
+ }
256
+ /**
257
+ * 块 3 子项 6:Check if an entry meets constraintCandidate criteria.
258
+ */
259
+ isConstraintCandidate(entry) {
260
+ if (entry.maturity !== 'proven')
261
+ return false;
262
+ if (entry.tags.includes('constraintCandidate'))
263
+ return false;
264
+ if (entry.referencedBy.length < 5)
265
+ return false;
266
+ if (entry.contributors.length < 3)
267
+ return false;
268
+ return true;
269
+ }
220
270
  /**
221
271
  * AC-8c: Remove skillCandidate tag if success rate drops below 50%.
222
272
  * Called after execution writeback.
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/knowledge/lifecycle.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AASH,mCAA+C;AAG/C,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM,sBAAsB,GAAG,GAAG,CAAC;AACnC,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAC5C,MAAM,2BAA2B,GAAG,CAAC,CAAC;AACtC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,MAAM,0BAA0B,GAAG,CAAC,CAAC;AACrC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAYhC,MAAa,kBAAkB;IACrB,KAAK,CAAiB;IACtB,MAAM,CAAc;IACpB,oBAAoB,GAA6C,EAAE,CAAC;IAE5E,YAAY,KAAqB,EAAE,MAA6B;QAC9D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,4BAAoB,EAAE,GAAG,MAAM,EAAE,CAAC;IACvD,CAAC;IAED,gEAAgE;IAChE,WAAW,CAAC,QAA2C;QACrD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACH,eAAe,CAAC,OAAe,EAAE,WAAoB,EAAE,OAAiB,EAAE,MAAyB;QACjG,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAE7B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,YAAY,GAAG,WAAW,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC3E,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,EAAE,WAAW,CAAC;YACtC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;QAEvB,MAAM,MAAM,GAAG,GAAG,WAAW,IAAI,SAAS,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACjE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAErF,iFAAiF;QACjF,IAAI,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACxC,gDAAgD;YAChD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,MAAM,gBAAgB,GAAG;oBACvB,GAAG,CAAC,KAAK,CAAC,gBAAgB,IAAI,EAAE,CAAC;oBACjC,EAAE,WAAW,EAAE,WAAW,IAAI,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE;iBACvF,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC;YACnD,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,YAAY,GAAG,CAAC,GAAG,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAC/E,MAAM,gBAAgB,GAAG,OAAO,KAAK,SAAS;YAC5C,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,IAAI,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,WAAW,IAAI,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC;YACvJ,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;QAE3B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE;YACzC,cAAc,EAAE,GAAG;YACnB,YAAY;YACZ,YAAY;YACZ,gBAAgB;SACjB,CAAC,CAAC;QAEH,mCAAmC;QACnC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC3C,IAAI,CAAC;gBACH,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,IAAI,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;YAClF,CAAC;YAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;;;;OASG;IACH,cAAc,CAAC,OAAe;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAE7B,6CAA6C;QAC7C,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,SAAS,CAAC;QAEpD,MAAM,IAAI,GAAG,KAAK,CAAC,eAAe,IAAI,WAAW,CAAC;QAElD,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,MAAM,CAAC,CAAM,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACxD,KAAK,SAAS,CAAC,CAAG,OAAO,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAC3D,KAAK,QAAQ,CAAC,CAAI,OAAO,SAAS,CAAC,CAAC,wBAAwB;YAC5D,KAAK,WAAW,CAAC,CAAC,OAAO,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,eAAe,CAAC,OAAe;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAE7B,oDAAoD;QACpD,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;YAC3D,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,eAAe,IAAI,WAAW,CAAC;QAElD,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,MAAM,CAAC,CAAM,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACpD,KAAK,WAAW,CAAC,CAAC,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACzD,KAAK,SAAS,CAAC,CAAG,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACvD,KAAK,QAAQ,CAAC,CAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,aAAa;QACX,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAqB,EAAE,CAAC;QACrC,MAAM,OAAO,GAAkB,EAAE,CAAC;QAElC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACtD,IAAI,cAAc,IAAI,cAAc,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACxD,MAAM,MAAM,GAAmB;oBAC7B,OAAO,EAAE,KAAK,CAAC,EAAE;oBACjB,IAAI,EAAE,KAAK,CAAC,QAAQ;oBACpB,EAAE,EAAE,cAAc;oBAClB,MAAM,EAAE,eAAe,KAAK,CAAC,QAAQ,MAAM,cAAc,+BAA+B;iBACzF,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;gBACtE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC7B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,OAAe;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAE7B,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,KAAK,CAAC,QAAQ;YAAE,OAAO,SAAS,CAAC;QAE3D,MAAM,MAAM,GAAmB;YAC7B,OAAO;YACP,IAAI,EAAE,KAAK,CAAC,QAAQ;YACpB,EAAE,EAAE,MAAM;YACV,MAAM,EAAE,cAAc,KAAK,CAAC,QAAQ,MAAM,MAAM,EAAE;SACnD,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QAEjD,2DAA2D;QAC3D,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,mBAAmB,CAAC,OAAe;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAEhD,yBAAyB;QACzB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE;YACzB,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,gBAAgB,CAAC;SACxC,CAAC,CAAC;QAEH,sCAAsC;QACtC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC3C,IAAI,CAAC;gBACH,EAAE,CAAC;oBACD,OAAO;oBACP,WAAW,EAAE,WAAW;oBACxB,SAAS,EAAE,GAAG;oBACd,OAAO,EAAE,uBAAuB;iBACjC,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,KAAqB;QAC5C,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC9C,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAAE,OAAO,KAAK,CAAC;QACxD,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAChD,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAC5D,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG;YAAE,OAAO,KAAK,CAAC;QAE7C,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,GAAG,GAAG;YAAE,OAAO,KAAK,CAAC;QAEnD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,6BAA6B,CAAC,OAAe;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAAE,OAAO,KAAK,CAAC;QAEnE,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC;YAC3D,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE;gBACzB,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,gBAAgB,CAAC;aACrD,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,MAAc;QAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;IAED;;;OAGG;IACH,uBAAuB,CAAC,OAAe;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAC/F,MAAM,KAAK,GAAG,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAC5C,MAAM,SAAS,GAAG,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;QACvE,OAAO,EAAE,IAAI,EAAE,SAAS,GAAG,KAAK,EAAE,KAAK,EAAE,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACH,mBAAmB,CAAC,OAAe;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAC/F,MAAM,YAAY,GAAG,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC;QAC9E,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAChD,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC;QAClC,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;QAC7D,OAAO,EAAE,IAAI,EAAE,SAAS,GAAG,KAAK,EAAE,KAAK,EAAE,CAAC;IAC5C,CAAC;IAED,8DAA8D;IAE9D,kDAAkD;IAC1C,kBAAkB,CAAC,KAAqB;QAC9C,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO;YAAE,OAAO,SAAS,CAAC;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG;YAAE,OAAO,QAAQ,CAAC;QACjE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,wDAAwD;IAChD,uBAAuB,CAAC,KAAqB;QACnD,QAAQ,KAAK,CAAC,QAAQ,EAAE,CAAC;YACvB,KAAK,OAAO;gBACV,IAAI,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE;oBAAE,OAAO,UAAU,CAAC;gBACjF,OAAO,SAAS,CAAC;YAEnB,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,sBAAsB;oBAAE,OAAO,SAAS,CAAC;gBAC3E,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACrD,IAAI,SAAS,IAAI,SAAS,CAAC,KAAK,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,IAAI,GAAG;oBAAE,OAAO,QAAQ,CAAC;gBAChF,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACxD,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,IAAI,GAAG;oBAAE,OAAO,QAAQ,CAAC;gBAC7E,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC;oBAAE,OAAO,QAAQ,CAAC;gBAClF,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,CAAC;gBACjD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;gBACpG,IAAI,QAAQ,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,IAAI,CAAC;oBAAE,OAAO,QAAQ,CAAC;gBAChE,OAAO,SAAS,CAAC;YACnB,CAAC;YAED;gBACE,OAAO,SAAS,CAAC;QACrB,CAAC;IACH,CAAC;IAED,6CAA6C;IACrC,qBAAqB,CAAC,KAAqB;QACjD,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO;YAAE,OAAO,SAAS,CAAC;QACjD,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,QAAQ,CAAC;QACpD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,8DAA8D;IAE9D,oEAAoE;IAC5D,cAAc,CAAC,KAAqB;QAC1C,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,0BAA0B,IAAI,IAAI,CAAC,IAAI,IAAI,mBAAmB;YAAE,OAAO,YAAY,CAAC;QAC9G,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,yEAAyE;IACjE,mBAAmB,CAAC,KAAqB;QAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,OAAO,CAAC;QACtD,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAC/B,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAEjD,QAAQ,KAAK,CAAC,QAAQ,EAAE,CAAC;YACvB,KAAK,QAAQ;gBACX,IAAI,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB;oBAAE,OAAO,UAAU,CAAC;gBACvE,OAAO,SAAS,CAAC;YACnB,KAAK,UAAU;gBACb,IAAI,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB;oBAAE,OAAO,OAAO,CAAC;gBACtE,OAAO,SAAS,CAAC;YACnB,KAAK,OAAO;gBACV,IAAI,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB;oBAAE,OAAO,UAAU,CAAC;gBACtE,OAAO,SAAS,CAAC;YACnB;gBACE,OAAO,SAAS,CAAC;QACrB,CAAC;IACH,CAAC;IAED,uEAAuE;IAC/D,iBAAiB,CAAC,KAAqB;QAC7C,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QAClD,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,OAAO,CAAC;QACtD,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAC/B,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,oBAAoB;YAAE,OAAO,UAAU,CAAC;QACzE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;OAGG;IACK,gBAAgB,CAAC,KAAqB;QAC5C,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QAClD,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,CAAC;QACjD,IAAI,QAAQ,GAAG,2BAA2B;YAAE,OAAO,SAAS,CAAC;QAE7D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,eAAe,EAAE,KAAK;SACvB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CACV,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE;YACjB,CAAC,CAAC,CAAC,eAAe,IAAI,WAAW,CAAC,KAAK,QAAQ;YAC/C,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAC1B,CAAC;QACF,IAAI,KAAK;YAAE,OAAO,UAAU,CAAC;QAC7B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,8DAA8D;IAEtD,WAAW,CAAC,OAAe;QACjC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5F,CAAC;CACF;AA9XD,gDA8XC"}
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/knowledge/lifecycle.ts"],"names":[],"mappings":"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"}
@@ -33,7 +33,7 @@ export declare const STANDARD_PRESET: PresetConfig;
33
33
  /**
34
34
  * 宽松预设
35
35
  *
36
- * 仅启用核心 error 级与凭证扫描
36
+ * 仅启用核心 error 级与凭证扫描(ADR-0032 起凭证扫描为 error 级,同桶)
37
37
  */
38
38
  export declare const RELAXED_PRESET: PresetConfig;
39
39
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"standard.d.ts","sourceRoot":"","sources":["../../src/presets/standard.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IAEb,iDAAiD;IACjD,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAExB,mDAAmD;IACnD,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CAC3B;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,YAI3B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,YAI7B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,YAQ5B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAIxD,CAAC"}
1
+ {"version":3,"file":"standard.d.ts","sourceRoot":"","sources":["../../src/presets/standard.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IAEb,iDAAiD;IACjD,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAExB,mDAAmD;IACnD,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CAC3B;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,YAI3B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,YAI7B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,YAO5B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAIxD,CAAC"}
@@ -33,16 +33,15 @@ exports.STANDARD_PRESET = {
33
33
  /**
34
34
  * 宽松预设
35
35
  *
36
- * 仅启用核心 error 级与凭证扫描
36
+ * 仅启用核心 error 级与凭证扫描(ADR-0032 起凭证扫描为 error 级,同桶)
37
37
  */
38
38
  exports.RELAXED_PRESET = {
39
39
  name: 'relaxed',
40
40
  errors: [
41
41
  'no_completion_without_verification',
42
- ],
43
- warnings: [
44
42
  'no_hardcoded_credentials',
45
43
  ],
44
+ warnings: [],
46
45
  };
47
46
  /**
48
47
  * 预设名 → 预设数据
@@ -1 +1 @@
1
- {"version":3,"file":"standard.js","sourceRoot":"","sources":["../../src/presets/standard.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAgBH;;;;GAIG;AACU,QAAA,aAAa,GAAiB;IACzC,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,IAAI,EAAK,OAAO;IACxB,QAAQ,EAAE,IAAI,EAAG,OAAO;CACzB,CAAC;AAEF;;;;GAIG;AACU,QAAA,eAAe,GAAiB;IAC3C,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,IAAI,EAAK,OAAO;IACxB,QAAQ,EAAE,IAAI,EAAG,OAAO;CACzB,CAAC;AAEF;;;;GAIG;AACU,QAAA,cAAc,GAAiB;IAC1C,IAAI,EAAE,SAAS;IACf,MAAM,EAAE;QACN,oCAAoC;KACrC;IACD,QAAQ,EAAE;QACR,0BAA0B;KAC3B;CACF,CAAC;AAEF;;;;;GAKG;AACU,QAAA,eAAe,GAAiC;IAC3D,MAAM,EAAE,qBAAa;IACrB,QAAQ,EAAE,uBAAe;IACzB,OAAO,EAAE,sBAAc;CACxB,CAAC"}
1
+ {"version":3,"file":"standard.js","sourceRoot":"","sources":["../../src/presets/standard.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAgBH;;;;GAIG;AACU,QAAA,aAAa,GAAiB;IACzC,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,IAAI,EAAK,OAAO;IACxB,QAAQ,EAAE,IAAI,EAAG,OAAO;CACzB,CAAC;AAEF;;;;GAIG;AACU,QAAA,eAAe,GAAiB;IAC3C,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,IAAI,EAAK,OAAO;IACxB,QAAQ,EAAE,IAAI,EAAG,OAAO;CACzB,CAAC;AAEF;;;;GAIG;AACU,QAAA,cAAc,GAAiB;IAC1C,IAAI,EAAE,SAAS;IACf,MAAM,EAAE;QACN,oCAAoC;QACpC,0BAA0B;KAC3B;IACD,QAAQ,EAAE,EAAE;CACb,CAAC;AAEF;;;;;GAKG;AACU,QAAA,eAAe,GAAiC;IAC3D,MAAM,EAAE,qBAAa;IACrB,QAAQ,EAAE,uBAAe;IACzB,OAAO,EAAE,sBAAc;CACxB,CAAC"}
@@ -27,6 +27,14 @@ export type ConstraintSeverity = 'error' | 'warning' | 'info';
27
27
  * 无需修改 harness 即可添加领域特定 trigger。
28
28
  */
29
29
  export type ConstraintTrigger = string;
30
+ /**
31
+ * 约束来源(ADR-0033 两层约束模型)
32
+ *
33
+ * - builtin:内置约束(definitions/ 字面量定义,checker 按约束 id 注册查找)
34
+ * - app:应用层约束(应用仓 `.harness/constraints.yml` 定义,checker 按模板 id +
35
+ * params 实例化);缺省 builtin
36
+ */
37
+ export type ConstraintSource = 'builtin' | 'app';
30
38
  /**
31
39
  * 约束定义
32
40
  */
@@ -52,6 +60,22 @@ export interface Constraint {
52
60
  description?: string;
53
61
  /** 是否启用 */
54
62
  enabled?: boolean;
63
+ /**
64
+ * 约束来源(ADR-0033):缺省 builtin
65
+ *
66
+ * app = 应用层约束(应用仓 `.harness/constraints.yml` 定义);
67
+ * report/退休/提案据此区分来源
68
+ */
69
+ source?: ConstraintSource;
70
+ /**
71
+ * 填空式 checker 模板 id(仅 source='app' 使用)
72
+ *
73
+ * 内置约束省略 = checker 按约束 id 在内置注册表查找;应用层约束按模板 id
74
+ * 在模板注册表(checkers/index.ts TEMPLATES)查找并带 params 实例化
75
+ */
76
+ checker?: string;
77
+ /** 模板参数(仅 source='app' 使用,形状由各模板的 validateParams 校验) */
78
+ params?: Record<string, unknown>;
55
79
  }
56
80
  /**
57
81
  * 约束检查结果
@@ -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":"AAAA;;;;;;;;;GASG;AAEH;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAElC;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC;AAErC;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEvC;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,KAAK,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,YAAY;IACZ,EAAE,EAAE,YAAY,CAAC;IAEjB;;;OAGG;IACH,IAAI,EAAE,cAAc,CAAC;IAErB,eAAe;IACf,IAAI,EAAE,MAAM,CAAC;IAEb,eAAe;IACf,OAAO,EAAE,MAAM,CAAC;IAEhB,uDAAuD;IACvD,QAAQ,EAAE,kBAAkB,CAAC;IAE7B,yBAAyB;IACzB,OAAO,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,CAAC;IAEjD,iBAAiB;IACjB,WAAW,EAAE,MAAM,CAAC;IAEpB,WAAW;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,WAAW;IACX,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAE1B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,YAAY;IACZ,EAAE,EAAE,YAAY,CAAC;IAEjB,YAAY;IACZ,QAAQ,EAAE,kBAAkB,CAAC;IAE7B,WAAW;IACX,SAAS,EAAE,OAAO,CAAC;IAEnB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,WAAW;IACX,UAAU,CAAC,EAAE,UAAU,CAAC;IAExB,SAAS;IACT,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAEpB,WAAW;IACX,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,WAAW;IACX,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,aAAa;IACb,SAAS,EAAE,iBAAiB,CAAC;IAE7B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAEpC,aAAa;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,YAAY;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,WAAW;IACX,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,WAAW;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,cAAc;IACd,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB,WAAW;IACX,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,WAAW;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAMhB,gBAAgB;IAChB,yBAAyB,CAAC,EAAE,OAAO,CAAC;IAEpC,4BAA4B;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,cAAc;IACd,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC,YAAY;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,eAAe;IACf,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,gBAAgB;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,+CAA+C;IAC/C,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,6CAA6C;IAC7C,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,KAAK;IACjD,SAAgB,MAAM,EAAE,gBAAgB,CAAC;gBAE7B,MAAM,EAAE,gBAAgB;CAUrC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,qCAAqC;IACrC,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAE3B,uCAAuC;IACvC,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAE7B,wBAAwB;IACxB,MAAM,EAAE,OAAO,CAAC;IAEhB,WAAW;IACX,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,iBAAiB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"constraint.js","sourceRoot":"","sources":["../../src/types/constraint.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AA+KH;;GAEG;AACH,MAAa,wBAAyB,SAAQ,KAAK;IACjC,MAAM,CAAmB;IAEzC,YAAY,MAAwB;QAClC,+DAA+D;QAC/D,+CAA+C;QAC/C,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"}
1
+ {"version":3,"file":"constraint.js","sourceRoot":"","sources":["../../src/types/constraint.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AA2MH;;GAEG;AACH,MAAa,wBAAyB,SAAQ,KAAK;IACjC,MAAM,CAAmB;IAEzC,YAAY,MAAwB;QAClC,+DAA+D;QAC/D,+CAA+C;QAC/C,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dommaker/harness",
3
- "version": "1.11.0",
3
+ "version": "1.12.0",
4
4
  "description": "通用工程约束框架 - 约束检查(severity 分级)、检查点验证、测试门控",
5
5
  "keywords": [
6
6
  "harness",
@@ -0,0 +1,220 @@
1
+ /**
2
+ * 应用层约束加载器(ADR-0033 两层约束模型)测试
3
+ *
4
+ * 覆盖面:
5
+ * - loadAppConstraints 校验分支(文件不存在 / 坏 YAML / 缺必填字段 / id 无前缀 /
6
+ * id 与内置冲突 / 未知模板 / validateParams 失败 / trigger 形状)
7
+ * - 实例化缺省(source='app'、kind='check'、trigger 缺省全操作集、message 回落 rule)
8
+ * - memo 口径与 RunEnv.rawConfig 同形(同一观察面至多读一次;路径入参每次读当下内容)
9
+ * - 合并链(mergeConstraints / getEffectiveConstraints):应用层并入 +
10
+ * config.yml enabled:false / retired 墓碑对应用层 id 同口径生效 + 不进 unknownIds
11
+ *
12
+ * 模板注册表(TEMPLATES)本票为空表:测试用替身模板注册/注销,
13
+ * 真实模板(regex-scan / file-exists)随子项 2 进场。
14
+ */
15
+
16
+ import { describe, it, expect, afterEach } from '@jest/globals';
17
+ import * as fs from 'fs';
18
+ import * as path from 'path';
19
+ import { loadAppConstraints } from '../core/app-constraints-loader';
20
+ import { getEffectiveConstraints, lintEffectiveConfig, getMergedConstraintsConfig } from '../core/effective-constraints';
21
+ import { CONSTRAINTS } from '../core/constraints/definitions';
22
+ import { createRunEnv } from '../core/constraints/run-env';
23
+ import { TEMPLATES, type TemplatedCheckerFactory } from '../core/constraints/checkers';
24
+ import { createProjectFixture } from '../test-setup/project-fixture';
25
+
26
+ const CONSTRAINTS_YML = path.join('.harness', 'constraints.yml');
27
+
28
+ const BUILTIN_TOTAL = Object.keys(CONSTRAINTS).length;
29
+
30
+ /** 替身模板:validateParams 要求 params.must 为 true(其余参数放行) */
31
+ const FAKE_TEMPLATE: TemplatedCheckerFactory = {
32
+ validateParams: (params) => (params.must === true ? [] : ['params.must 必须为 true']),
33
+ create: (id) => ({ id, evaluate: () => true }),
34
+ };
35
+
36
+ function fixture(constraintsYml?: string, configYml?: string): string {
37
+ return createProjectFixture({
38
+ name: 'app-constraints',
39
+ config: configYml,
40
+ files: constraintsYml !== undefined ? { [CONSTRAINTS_YML]: constraintsYml } : undefined,
41
+ });
42
+ }
43
+
44
+ const VALID = `
45
+ constraints:
46
+ - id: app_no_internal_url
47
+ rule: Web code must not contain internal URLs
48
+ checker: fake-template
49
+ params:
50
+ must: true
51
+ severity: warning
52
+ message: 检测到内网地址
53
+ `;
54
+
55
+ // 替身模板逐用例注册、统一注销:不污染模板注册表(其他套件断言注册表构成)
56
+ afterEach(() => {
57
+ TEMPLATES.delete('fake-template');
58
+ });
59
+
60
+ function registerFake(): void {
61
+ TEMPLATES.set('fake-template', FAKE_TEMPLATE);
62
+ }
63
+
64
+ describe('loadAppConstraints 校验分支', () => {
65
+ it('文件不存在 = 无应用层约束,正常返回空', () => {
66
+ expect(loadAppConstraints(fixture())).toEqual([]);
67
+ });
68
+
69
+ it('合法条目 → Constraint(source=app,kind=check,缺省 trigger=全操作集,message 回落 rule)', () => {
70
+ registerFake();
71
+ const constraints = loadAppConstraints(fixture(VALID));
72
+
73
+ expect(constraints).toHaveLength(1);
74
+ const c = constraints[0];
75
+ expect(c).toMatchObject({
76
+ id: 'app_no_internal_url',
77
+ kind: 'check',
78
+ rule: 'Web code must not contain internal URLs',
79
+ severity: 'warning',
80
+ message: '检测到内网地址',
81
+ source: 'app',
82
+ checker: 'fake-template',
83
+ params: { must: true },
84
+ });
85
+ // 缺省 trigger = 每次 check 都评估
86
+ expect(Array.isArray(c.trigger)).toBe(true);
87
+ expect(c.trigger).toContain('commit');
88
+ expect(c.trigger).toContain('file_modification');
89
+ });
90
+
91
+ it('坏 YAML → 抛错(配置坏不能静默放行)', () => {
92
+ const root = fixture('constraints:\n - id: app_x\n bad indent: [');
93
+ expect(() => loadAppConstraints(root)).toThrow(/YAML 解析失败/);
94
+ });
95
+
96
+ it('id 无 app_ 前缀 → 抛错', () => {
97
+ registerFake();
98
+ const root = fixture(`
99
+ constraints:
100
+ - id: no_prefix
101
+ rule: r
102
+ checker: fake-template
103
+ severity: warning
104
+ `);
105
+ expect(() => loadAppConstraints(root)).toThrow(/app_ 前缀/);
106
+ });
107
+
108
+ it('id 与内置约束冲突 → 抛错', () => {
109
+ registerFake();
110
+ const builtinId = Object.keys(CONSTRAINTS)[0];
111
+ const root = fixture(`
112
+ constraints:
113
+ - id: ${builtinId}
114
+ rule: r
115
+ checker: fake-template
116
+ severity: warning
117
+ `);
118
+ expect(() => loadAppConstraints(root)).toThrow(/与内置约束冲突/);
119
+ });
120
+
121
+ it('checker 模板未注册 → 抛错(加载期闭环)', () => {
122
+ const root = fixture(`
123
+ constraints:
124
+ - id: app_unknown_template
125
+ rule: r
126
+ checker: not-a-template
127
+ severity: warning
128
+ `);
129
+ expect(() => loadAppConstraints(root)).toThrow(/未注册/);
130
+ });
131
+
132
+ it.each([
133
+ ['id', 'rule: r\nchecker: fake-template\nseverity: warning'],
134
+ ['rule', 'id: app_x\nchecker: fake-template\nseverity: warning'],
135
+ ['checker', 'id: app_x\nrule: r\nseverity: warning'],
136
+ ['severity', 'id: app_x\nrule: r\nchecker: fake-template'],
137
+ ])('缺必填字段 %s → 抛错', (_field, entryYaml) => {
138
+ registerFake();
139
+ const root = fixture(`constraints:\n - ${entryYaml.replace(/\n/g, '\n ')}\n`);
140
+ expect(() => loadAppConstraints(root)).toThrow(/缺必填字段/);
141
+ });
142
+
143
+ it('severity 取值非法 → 抛错', () => {
144
+ registerFake();
145
+ const root = fixture(`
146
+ constraints:
147
+ - id: app_x
148
+ rule: r
149
+ checker: fake-template
150
+ severity: critical
151
+ `);
152
+ expect(() => loadAppConstraints(root)).toThrow(/severity/);
153
+ });
154
+
155
+ it('validateParams 不通过 → 抛错(参数坏早报)', () => {
156
+ registerFake();
157
+ const root = fixture(`
158
+ constraints:
159
+ - id: app_bad_params
160
+ rule: r
161
+ checker: fake-template
162
+ severity: warning
163
+ `);
164
+ expect(() => loadAppConstraints(root)).toThrow(/参数校验失败/);
165
+ });
166
+
167
+ it('constraints 段不是数组 → 抛错;顶层缺 constraints 段 = 空', () => {
168
+ expect(() => loadAppConstraints(fixture('constraints: notalist\n'))).toThrow(/数组/);
169
+ expect(loadAppConstraints(fixture('preset: standard\n'))).toEqual([]);
170
+ });
171
+
172
+ it('memo 与 rawConfig 同形:同一 RunEnv 至多读一次(缓存同一数组引用)', () => {
173
+ registerFake();
174
+ const root = fixture(VALID);
175
+ const env = createRunEnv(root);
176
+ const first = loadAppConstraints(env);
177
+ // 观察面命中 memo 后,文件改动在本 run 内不可见
178
+ fs.writeFileSync(path.join(root, CONSTRAINTS_YML), 'constraints: []\n');
179
+ expect(loadAppConstraints(env)).toBe(first);
180
+ // 传路径 = 一次性观察面,每次读当下内容
181
+ expect(loadAppConstraints(root)).toEqual([]);
182
+ });
183
+ });
184
+
185
+ describe('合并链并入(ADR-0033)', () => {
186
+ it('应用层条目并入生效集尾部(getEffectiveConstraints)', () => {
187
+ registerFake();
188
+ const root = fixture(VALID);
189
+ const constraints = getEffectiveConstraints(root);
190
+ expect(constraints).toHaveLength(BUILTIN_TOTAL + 1);
191
+ const app = constraints.find(c => c.id === 'app_no_internal_url');
192
+ expect(app?.source).toBe('app');
193
+ });
194
+
195
+ it('config.yml enabled:false 禁用应用层条目(filterEnabledEntries 天然兼容)', () => {
196
+ registerFake();
197
+ const root = fixture(VALID, 'constraints:\n app_no_internal_url:\n enabled: false\n');
198
+ const merged = getMergedConstraintsConfig(root);
199
+ expect(merged.constraints.app_no_internal_url).toBeUndefined();
200
+ expect(merged.disabled).toContain('app_no_internal_url');
201
+ // 应用层 id 是已知 id,不进 unknownIds 诊断
202
+ expect(merged.unknownIds).toEqual([]);
203
+ });
204
+
205
+ it('config.yml retired 墓碑对应用层条目同样生效(随 enabled:false)', () => {
206
+ registerFake();
207
+ const root = fixture(
208
+ VALID,
209
+ 'constraints:\n app_no_internal_url:\n enabled: false\n retired:\n at: 2026-09-22\n reason: 零拦截\n'
210
+ );
211
+ const ids = getEffectiveConstraints(root).map(c => c.id);
212
+ expect(ids).not.toContain('app_no_internal_url');
213
+ });
214
+
215
+ it('lintEffectiveConfig 不把应用层 id 报成未知', () => {
216
+ registerFake();
217
+ const root = fixture(VALID, 'constraints:\n app_no_internal_url:\n enabled: false\n');
218
+ expect(lintEffectiveConfig(root).unknownIds).toEqual([]);
219
+ });
220
+ });
@@ -21,11 +21,11 @@ describe('Constraint System', () => {
21
21
  expect(all.every(c => c.kind === 'check')).toBe(true);
22
22
  });
23
23
 
24
- it('severity 分桶 = 3 error + 4 warning', () => {
24
+ it('severity 分桶 = 4 error + 3 warning(ADR-0032:凭证扫描升 error)', () => {
25
25
  const errors = Object.values(CONSTRAINTS).filter(c => c.severity === 'error');
26
26
  const warnings = Object.values(CONSTRAINTS).filter(c => c.severity === 'warning');
27
- expect(errors).toHaveLength(3);
28
- expect(warnings).toHaveLength(4);
27
+ expect(errors).toHaveLength(4);
28
+ expect(warnings).toHaveLength(3);
29
29
  Object.values(CONSTRAINTS).forEach(c => {
30
30
  expect(c.kind).toBe('check');
31
31
  });
@@ -222,13 +222,13 @@ describe('Constraint Checker', () => {
222
222
 
223
223
  describe('Constraint Severity', () => {
224
224
  it('error 级约束 severity 均为 error', () => {
225
- ['no_completion_without_verification', 'no_test_simplification', 'docs_freshness'].forEach(id => {
225
+ ['no_completion_without_verification', 'no_test_simplification', 'docs_freshness', 'no_hardcoded_credentials'].forEach(id => {
226
226
  expect(CONSTRAINTS[id].severity).toBe('error');
227
227
  });
228
228
  });
229
229
 
230
230
  it('warning 级约束 severity 均为 warning', () => {
231
- ['no_hardcoded_credentials', 'capability_sync', 'context_doc_sync', 'governance_presence'].forEach(id => {
231
+ ['capability_sync', 'context_doc_sync', 'governance_presence'].forEach(id => {
232
232
  expect(CONSTRAINTS[id].severity).toBe('warning');
233
233
  });
234
234
  });
@@ -1,7 +1,7 @@
1
1
  # cli/commands/
2
2
 
3
3
  ## 职责
4
- CLI 子命令实现:20 个顶层命令 + constraints 治理子命令 report/retire,覆盖约束检查/门禁验证/文档同步/知识管理/失败诊断/发布等。
4
+ CLI 子命令实现:20 个顶层命令 + constraints 治理子命令 report/retire/reactivate/pack-proposal,覆盖约束检查/门禁验证/文档同步/知识管理/失败诊断/发布等。
5
5
 
6
6
  H5(#44)起:
7
7
  - **命令定义即注册**:`definitions.ts` 的 `COMMAND_DEFINITIONS` 是命令形状(名称/别名/位置参数/选项/子命令/实现引用)的单一来源;bin/harness.js 遍历本表注册表驱动生成,不再手写 commander 命令块,不再有 index.ts barrel 两处同步(R6)
@@ -15,10 +15,11 @@ H5(#44)起:
15
15
  - 脚手架落盘面(`src/cli/commands/scaffold.ts`)— 受管文件(managed file)三态判定 `writeManagedFile` / 一组落盘 `runPlan` + 8 个站点工厂(含对外文案;ADR-0029:custom-constraints.yml 示例站随 custom 约束面退役移除);模板正文住 `scaffold-templates.ts`,落盘注入面 `ScaffoldFileSystem` 可换内存替身(harness#132);CI 站点工厂 `harnessCheckCiFile` 带平台维度(github / gitlab,harness#143);两道 Git hook 工厂 `preCommitHookFile` / `prePushHookFile`(后者 harness#144,带可执行位)
16
16
  - knowledge 投影面(`src/cli/commands/knowledge-view.ts`)— 11 个 knowledge 子操作的**display model** 渲染与出口:`emitKnowledgeView`(json/人读唯一分派 + 退出码)、`announce`(取数期进度行,`--json` 下静默)、`TONE_STYLES` 角色→样式单表、维度/规则 label 与 `toneForMaturity`/`toneForScore`/`toneForSeverity` 三张映射、`resolveKnowledgeBaseDir` + `openKnowledgeStore`(路径兜底与 store 构造单点)(harness#133)
17
17
  - 各命令文件:check / validate / passes-gate / init / report / status / spec / sync-docs / knowledge / sdd / failure / release / constraints / spec-baseline-check
18
+ - `report` 的约束面走生效集(ADR-0033 修缺口):collectConstraints 传 getMergedConstraintsConfig 的 merged config(与 check.ts 同一入口),总数/分级计数按生效集——此前跑内置全集,config.yml 禁用与应用层条目(`.harness/constraints.yml`)都进不了报告面
18
19
  - 6 门禁命令实现在 `acceptance` / `command` / `contract` / `performance` / `review` / `security`(其 CLI 元数据在 `src/gates/definitions.ts`,形状同为 `CommandDefinition`,ADR-0007);**判定一律穿过统一接口 `evaluate()`**,成败与措辞由共享面映射。`command` 只复用映射、保留自己的单行 ✓/✗ 输出(已对外的机器友好形状);`security audit` / `acceptance list` / `contract validate-schema` / `review status` / `command --list/--level` 是只展示不判断的子命令,直读报告面(`scan()` 等),不套骨架
19
20
  - CLI 子命令 `command` 的两个分支共用同一台 gate 实例(#135/ADR-0024):默认分支经 `evaluate()` 取裁决、`--level` 经同一实例的 `getRiskLevel()` 取等级,命令侧不再引用模块级单例出口——「配置传进去却到不了判定」的那条路已封。`--strict` 旗帜随 `CommandGateConfig.strict`(零消费者、从不生效)一并删除
20
21
 
21
- `constraints` 下挂治理子命令:`constraints report`(使用统计 + 退役候选诊断 + 配置健康,`--export` 脱敏;JSON 输出走 `--json-output`——原名 `--json` 与父命令同名会被 commander 消费在父侧、JSON 分支不可达,E1 复盘修正 M3.1 换名,闸见 `__tests__/constraints-report-json-flag.test.ts`)、`constraints retire`(交互选择 + 人确认退役;带 id 直达需显式 `--yes`(#24 人确认闸门),无 `--yes` 报错 + 非零退出码且不落盘;落 config.yml retired 元数据 + KnowledgeStore 沉淀。ADR-0029:注入漂移小节、prompt 注入清单、custom 落点与治理注入段同步已随文本注入层关停移除)。
22
+ `constraints` 下挂治理子命令:`constraints report`(使用统计 + 退役候选诊断 + 配置健康,`--export` 脱敏;JSON 输出走 `--json-output`——原名 `--json` 与父命令同名会被 commander 消费在父侧、JSON 分支不可达,E1 复盘修正 M3.1 换名,闸见 `__tests__/constraints-report-json-flag.test.ts`)、`constraints retire`(交互选择 + 人确认退役;带 id 直达需显式 `--yes`(#24 人确认闸门),无 `--yes` 报错 + 非零退出码且不落盘;落 config.yml retired 墓碑 + KnowledgeStore 沉淀——沉淀写口的 baseDir 走 knowledge-view `openKnowledgeStore` 同一解析点,与 knowledge 读口同根,不再硬编码 projectRoot 拼接(harness#177)。ADR-0029:注入漂移小节、prompt 注入清单、custom 落点与治理注入段同步已随文本注入层关停移除。ADR-0032:already_retired 只认 retired 墓碑,裸 enabled:false 由退休流程接管补墓碑+沉淀(票 02 断点 6);落盘后 git 仓内附 commit 提示,不替用户动 git(断点 4)。ADR-0033:findRetireTarget 扩到内置 + 应用层(`.harness/constraints.yml`)——应用层退休墓碑同写 config.yml(enabled:false + retired 同形),constraints.yml 条文保留不删,沉淀条目 tags 加 `source:app`)、`constraints reactivate`(点对点复活:删 retired 墓碑段 + 写 `constraint-reactivated-<id>` 新沉淀,不改历史(ADR-0032 决策 6.5,票 02 断点 5);直达同需 `--yes`,无交互模式;ADR-0033 起对应用层约束同路径可用)、`constraints pack-proposal`(升级提案材料打包,ADR-0033 决策 4,块 3 子项 5:条文 + checker 模板与参数 + traces 使用统计 + 升级理由留白的脱敏 markdown,缺省落 `.harness/reports/proposal-<id>-<YYYYMMDD>.md`,`--stdout` 打印不落盘;脱敏只做项目根路径→`<repoRoot>` 替换,params 原文带出并标注人工确认——打包是质量前置不是保密闸门,人拿材料去 harness 仓开 issue)。
22
23
 
23
24
  ## 依赖关系
24
25
  - 依赖 `src/core/constraints/` 约束引擎
@@ -165,8 +165,8 @@ describe('check command(真 git fixture)', () => {
165
165
  io
166
166
  );
167
167
 
168
- expect(io.outText()).toContain('✅ error 级约束: 全部通过 (1 条)');
169
- expect(io.outText()).toContain('✅ warning 级约束: 1/1 通过');
168
+ // ADR-0032 起凭证扫描为 error 级:code_implementation error 评 2 条,warning 无命中不输出
169
+ expect(io.outText()).toContain('✅ error 级约束: 全部通过 (2 条)');
170
170
  expect(io.outText()).toContain('✅ 约束检查通过');
171
171
  expect(result).toEqual({ kind: 'ok' });
172
172
  });
@@ -204,7 +204,7 @@ describe('check command(真 git fixture)', () => {
204
204
  expect(result.kind).toBe('fail');
205
205
  });
206
206
 
207
- it('staged 硬编码凭证 → warning 级警告但不阻断', async () => {
207
+ it('staged 硬编码凭证 → error 级违规即阻断(ADR-0032 升级)', async () => {
208
208
  const dir = gitRepo();
209
209
  stageChange(
210
210
  dir,
@@ -220,8 +220,26 @@ describe('check command(真 git fixture)', () => {
220
220
  io
221
221
  );
222
222
 
223
+ // error 级违规走 throw 契约(#119):异常外溢为 fail,消息即约束 message
224
+ expect(io.outText()).toContain('❌ 约束检查异常: 禁止在代码/文档/配置文件中硬编码密码');
225
+ expect(result.kind).toBe('fail');
226
+ });
227
+
228
+ it('warning 级违规(治理契约缺失)→ 警告但不阻断', async () => {
229
+ const dir = gitRepo();
230
+ // 采用 harness 治理(config.yml 在场)但无 PRESERVE:governance 段 → governance_presence 判 warning
231
+ write(dir, '.harness/config.yml', 'preset: standard\n');
232
+ stageChange(dir, 'src/existing.ts', 'export const a = 2;\n');
233
+ passTraces(dir);
234
+
235
+ // 不显式传 trigger:governance_presence 的触发词是 file_modification,由 diff 推断
236
+ const result = await check(
237
+ { preset: 'standard', staged: true, projectPath: dir },
238
+ io
239
+ );
240
+
223
241
  expect(io.outText()).toContain('⚠️ warning 级约束警告: 1 条');
224
- expect(io.outText()).toContain('- no_hardcoded_credentials');
242
+ expect(io.outText()).toContain('- governance_presence');
225
243
  expect(io.outText()).toContain('✅ 约束检查通过');
226
244
  expect(result).toEqual({ kind: 'ok' });
227
245
  });