@zxyycom/vibe-check 0.0.1

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 (767) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +154 -0
  3. package/dist/esm/check/check.mjs +5 -0
  4. package/dist/esm/check/check.mjs.map +1 -0
  5. package/dist/esm/check/descriptor-validation.mjs +37 -0
  6. package/dist/esm/check/descriptor-validation.mjs.map +1 -0
  7. package/dist/esm/check/descriptor.mjs +2 -0
  8. package/dist/esm/check/descriptor.mjs.map +1 -0
  9. package/dist/esm/check/inherited-collection.mjs +62 -0
  10. package/dist/esm/check/inherited-collection.mjs.map +1 -0
  11. package/dist/esm/check/options-snapshot.mjs +75 -0
  12. package/dist/esm/check/options-snapshot.mjs.map +1 -0
  13. package/dist/esm/check-settlement/fact-validation.mjs +216 -0
  14. package/dist/esm/check-settlement/fact-validation.mjs.map +1 -0
  15. package/dist/esm/check-settlement/facts.mjs +2 -0
  16. package/dist/esm/check-settlement/facts.mjs.map +1 -0
  17. package/dist/esm/check-settlement/outcome-normalization.mjs +80 -0
  18. package/dist/esm/check-settlement/outcome-normalization.mjs.map +1 -0
  19. package/dist/esm/check-settlement/record-store.mjs +59 -0
  20. package/dist/esm/check-settlement/record-store.mjs.map +1 -0
  21. package/dist/esm/check-settlement/session.mjs +179 -0
  22. package/dist/esm/check-settlement/session.mjs.map +1 -0
  23. package/dist/esm/data-boundary/canonical-data.mjs +159 -0
  24. package/dist/esm/data-boundary/canonical-data.mjs.map +1 -0
  25. package/dist/esm/data-boundary/canonical-json.mjs +2 -0
  26. package/dist/esm/data-boundary/canonical-json.mjs.map +1 -0
  27. package/dist/esm/data-boundary/closed-values.mjs +98 -0
  28. package/dist/esm/data-boundary/closed-values.mjs.map +1 -0
  29. package/dist/esm/data-boundary/value-shapes.mjs +13 -0
  30. package/dist/esm/data-boundary/value-shapes.mjs.map +1 -0
  31. package/dist/esm/finding-waivers/reconciliation.mjs +84 -0
  32. package/dist/esm/finding-waivers/reconciliation.mjs.map +1 -0
  33. package/dist/esm/index.mjs +26 -0
  34. package/dist/esm/index.mjs.map +1 -0
  35. package/dist/esm/machine-output/v4/atomic-publication.mjs +102 -0
  36. package/dist/esm/machine-output/v4/atomic-publication.mjs.map +1 -0
  37. package/dist/esm/machine-output/v4/freeze-publication-value.mjs +14 -0
  38. package/dist/esm/machine-output/v4/freeze-publication-value.mjs.map +1 -0
  39. package/dist/esm/machine-output/v4/projection.mjs +23 -0
  40. package/dist/esm/machine-output/v4/projection.mjs.map +1 -0
  41. package/dist/esm/machine-output/v4/publication-invariants.mjs +59 -0
  42. package/dist/esm/machine-output/v4/publication-invariants.mjs.map +1 -0
  43. package/dist/esm/machine-output/v4/publication-model.mjs +19 -0
  44. package/dist/esm/machine-output/v4/publication-model.mjs.map +1 -0
  45. package/dist/esm/machine-output/v4/publish.mjs +20 -0
  46. package/dist/esm/machine-output/v4/publish.mjs.map +1 -0
  47. package/dist/esm/machine-output/v4/records-fingerprint.mjs +9 -0
  48. package/dist/esm/machine-output/v4/records-fingerprint.mjs.map +1 -0
  49. package/dist/esm/machine-output/v4/schema-identities.mjs +8 -0
  50. package/dist/esm/machine-output/v4/schema-identities.mjs.map +1 -0
  51. package/dist/esm/machine-output/v4/schema.mjs +50 -0
  52. package/dist/esm/machine-output/v4/schema.mjs.map +1 -0
  53. package/dist/esm/machine-output/v4/serializers.mjs +9 -0
  54. package/dist/esm/machine-output/v4/serializers.mjs.map +1 -0
  55. package/dist/esm/machine-output/v4/validation-result.mjs +16 -0
  56. package/dist/esm/machine-output/v4/validation-result.mjs.map +1 -0
  57. package/dist/esm/machine-output/v4/validation.mjs +131 -0
  58. package/dist/esm/machine-output/v4/validation.mjs.map +1 -0
  59. package/dist/esm/package-checks/code-quality-findings/policy.mjs +49 -0
  60. package/dist/esm/package-checks/code-quality-findings/policy.mjs.map +1 -0
  61. package/dist/esm/package-checks/duplicate-detection/area-policy.mjs +71 -0
  62. package/dist/esm/package-checks/duplicate-detection/area-policy.mjs.map +1 -0
  63. package/dist/esm/package-checks/duplicate-detection/cache/cache-contract.mjs +2 -0
  64. package/dist/esm/package-checks/duplicate-detection/cache/cache-contract.mjs.map +1 -0
  65. package/dist/esm/package-checks/duplicate-detection/cache/identity.mjs +37 -0
  66. package/dist/esm/package-checks/duplicate-detection/cache/identity.mjs.map +1 -0
  67. package/dist/esm/package-checks/duplicate-detection/cache/key.mjs +38 -0
  68. package/dist/esm/package-checks/duplicate-detection/cache/key.mjs.map +1 -0
  69. package/dist/esm/package-checks/duplicate-detection/cache/payload.mjs +47 -0
  70. package/dist/esm/package-checks/duplicate-detection/cache/payload.mjs.map +1 -0
  71. package/dist/esm/package-checks/duplicate-detection/cache/store.mjs +44 -0
  72. package/dist/esm/package-checks/duplicate-detection/cache/store.mjs.map +1 -0
  73. package/dist/esm/package-checks/duplicate-detection/default-check.mjs +39 -0
  74. package/dist/esm/package-checks/duplicate-detection/default-check.mjs.map +1 -0
  75. package/dist/esm/package-checks/duplicate-detection/execution.mjs +124 -0
  76. package/dist/esm/package-checks/duplicate-detection/execution.mjs.map +1 -0
  77. package/dist/esm/package-checks/duplicate-detection/final-data.mjs +6 -0
  78. package/dist/esm/package-checks/duplicate-detection/final-data.mjs.map +1 -0
  79. package/dist/esm/package-checks/duplicate-detection/jscpd/availability.mjs +77 -0
  80. package/dist/esm/package-checks/duplicate-detection/jscpd/availability.mjs.map +1 -0
  81. package/dist/esm/package-checks/duplicate-detection/jscpd/command-path.mjs +6 -0
  82. package/dist/esm/package-checks/duplicate-detection/jscpd/command-path.mjs.map +1 -0
  83. package/dist/esm/package-checks/duplicate-detection/jscpd/command-resolution.mjs +87 -0
  84. package/dist/esm/package-checks/duplicate-detection/jscpd/command-resolution.mjs.map +1 -0
  85. package/dist/esm/package-checks/duplicate-detection/jscpd/json-report.mjs +94 -0
  86. package/dist/esm/package-checks/duplicate-detection/jscpd/json-report.mjs.map +1 -0
  87. package/dist/esm/package-checks/duplicate-detection/jscpd/scanner-contract.mjs +2 -0
  88. package/dist/esm/package-checks/duplicate-detection/jscpd/scanner-contract.mjs.map +1 -0
  89. package/dist/esm/package-checks/duplicate-detection/jscpd/scanner.mjs +180 -0
  90. package/dist/esm/package-checks/duplicate-detection/jscpd/scanner.mjs.map +1 -0
  91. package/dist/esm/package-checks/duplicate-detection/jscpd/scoped-fragments.mjs +10 -0
  92. package/dist/esm/package-checks/duplicate-detection/jscpd/scoped-fragments.mjs.map +1 -0
  93. package/dist/esm/package-checks/duplicate-detection/measurement-model.mjs +2 -0
  94. package/dist/esm/package-checks/duplicate-detection/measurement-model.mjs.map +1 -0
  95. package/dist/esm/package-checks/duplicate-detection/measurement.mjs +151 -0
  96. package/dist/esm/package-checks/duplicate-detection/measurement.mjs.map +1 -0
  97. package/dist/esm/package-checks/duplicate-detection/options-resolution.mjs +126 -0
  98. package/dist/esm/package-checks/duplicate-detection/options-resolution.mjs.map +1 -0
  99. package/dist/esm/package-checks/duplicate-detection/options-validation.mjs +60 -0
  100. package/dist/esm/package-checks/duplicate-detection/options-validation.mjs.map +1 -0
  101. package/dist/esm/package-checks/duplicate-detection/options.mjs +2 -0
  102. package/dist/esm/package-checks/duplicate-detection/options.mjs.map +1 -0
  103. package/dist/esm/package-checks/duplicate-detection/project-revision.mjs +5 -0
  104. package/dist/esm/package-checks/duplicate-detection/project-revision.mjs.map +1 -0
  105. package/dist/esm/package-checks/duplicate-detection/records.mjs +119 -0
  106. package/dist/esm/package-checks/duplicate-detection/records.mjs.map +1 -0
  107. package/dist/esm/package-checks/file-metrics/constructor.mjs +39 -0
  108. package/dist/esm/package-checks/file-metrics/constructor.mjs.map +1 -0
  109. package/dist/esm/package-checks/file-metrics/execution.mjs +170 -0
  110. package/dist/esm/package-checks/file-metrics/execution.mjs.map +1 -0
  111. package/dist/esm/package-checks/file-metrics/final-data.mjs +6 -0
  112. package/dist/esm/package-checks/file-metrics/final-data.mjs.map +1 -0
  113. package/dist/esm/package-checks/file-metrics/measurement-model.mjs +2 -0
  114. package/dist/esm/package-checks/file-metrics/measurement-model.mjs.map +1 -0
  115. package/dist/esm/package-checks/file-metrics/measurement.mjs +33 -0
  116. package/dist/esm/package-checks/file-metrics/measurement.mjs.map +1 -0
  117. package/dist/esm/package-checks/file-metrics/options-resolution.mjs +171 -0
  118. package/dist/esm/package-checks/file-metrics/options-resolution.mjs.map +1 -0
  119. package/dist/esm/package-checks/file-metrics/options-validation.mjs +82 -0
  120. package/dist/esm/package-checks/file-metrics/options-validation.mjs.map +1 -0
  121. package/dist/esm/package-checks/file-metrics/options.mjs +2 -0
  122. package/dist/esm/package-checks/file-metrics/options.mjs.map +1 -0
  123. package/dist/esm/package-checks/file-metrics/records.mjs +109 -0
  124. package/dist/esm/package-checks/file-metrics/records.mjs.map +1 -0
  125. package/dist/esm/package-checks/file-metrics/scc/availability.mjs +59 -0
  126. package/dist/esm/package-checks/file-metrics/scc/availability.mjs.map +1 -0
  127. package/dist/esm/package-checks/file-metrics/scc/csv.mjs +17 -0
  128. package/dist/esm/package-checks/file-metrics/scc/csv.mjs.map +1 -0
  129. package/dist/esm/package-checks/file-metrics/scc/parser.mjs +145 -0
  130. package/dist/esm/package-checks/file-metrics/scc/parser.mjs.map +1 -0
  131. package/dist/esm/package-checks/file-metrics/scc/scanner.mjs +54 -0
  132. package/dist/esm/package-checks/file-metrics/scc/scanner.mjs.map +1 -0
  133. package/dist/esm/package-checks/final-data-parsing.mjs +35 -0
  134. package/dist/esm/package-checks/final-data-parsing.mjs.map +1 -0
  135. package/dist/esm/package-checks/function-metrics/analysis.mjs +96 -0
  136. package/dist/esm/package-checks/function-metrics/analysis.mjs.map +1 -0
  137. package/dist/esm/package-checks/function-metrics/constructor.mjs +43 -0
  138. package/dist/esm/package-checks/function-metrics/constructor.mjs.map +1 -0
  139. package/dist/esm/package-checks/function-metrics/execution.mjs +178 -0
  140. package/dist/esm/package-checks/function-metrics/execution.mjs.map +1 -0
  141. package/dist/esm/package-checks/function-metrics/final-data.mjs +6 -0
  142. package/dist/esm/package-checks/function-metrics/final-data.mjs.map +1 -0
  143. package/dist/esm/package-checks/function-metrics/lizard/availability.mjs +64 -0
  144. package/dist/esm/package-checks/function-metrics/lizard/availability.mjs.map +1 -0
  145. package/dist/esm/package-checks/function-metrics/lizard/csv.mjs +17 -0
  146. package/dist/esm/package-checks/function-metrics/lizard/csv.mjs.map +1 -0
  147. package/dist/esm/package-checks/function-metrics/lizard/parser.mjs +138 -0
  148. package/dist/esm/package-checks/function-metrics/lizard/parser.mjs.map +1 -0
  149. package/dist/esm/package-checks/function-metrics/lizard/scanner.mjs +35 -0
  150. package/dist/esm/package-checks/function-metrics/lizard/scanner.mjs.map +1 -0
  151. package/dist/esm/package-checks/function-metrics/measurement-model.mjs +2 -0
  152. package/dist/esm/package-checks/function-metrics/measurement-model.mjs.map +1 -0
  153. package/dist/esm/package-checks/function-metrics/measurement.mjs +35 -0
  154. package/dist/esm/package-checks/function-metrics/measurement.mjs.map +1 -0
  155. package/dist/esm/package-checks/function-metrics/options-resolution.mjs +171 -0
  156. package/dist/esm/package-checks/function-metrics/options-resolution.mjs.map +1 -0
  157. package/dist/esm/package-checks/function-metrics/options-validation.mjs +71 -0
  158. package/dist/esm/package-checks/function-metrics/options-validation.mjs.map +1 -0
  159. package/dist/esm/package-checks/function-metrics/options.mjs +2 -0
  160. package/dist/esm/package-checks/function-metrics/options.mjs.map +1 -0
  161. package/dist/esm/package-checks/function-metrics/records.mjs +133 -0
  162. package/dist/esm/package-checks/function-metrics/records.mjs.map +1 -0
  163. package/dist/esm/package-checks/function-metrics/target-files.mjs +75 -0
  164. package/dist/esm/package-checks/function-metrics/target-files.mjs.map +1 -0
  165. package/dist/esm/package-checks/host-environment/error-message.mjs +4 -0
  166. package/dist/esm/package-checks/host-environment/error-message.mjs.map +1 -0
  167. package/dist/esm/package-checks/host-environment/filesystem.mjs +81 -0
  168. package/dist/esm/package-checks/host-environment/filesystem.mjs.map +1 -0
  169. package/dist/esm/package-checks/host-environment/git.mjs +51 -0
  170. package/dist/esm/package-checks/host-environment/git.mjs.map +1 -0
  171. package/dist/esm/package-checks/host-environment/path.mjs +18 -0
  172. package/dist/esm/package-checks/host-environment/path.mjs.map +1 -0
  173. package/dist/esm/package-checks/host-environment/process/command.mjs +13 -0
  174. package/dist/esm/package-checks/host-environment/process/command.mjs.map +1 -0
  175. package/dist/esm/package-checks/host-environment/process/contract.mjs +2 -0
  176. package/dist/esm/package-checks/host-environment/process/contract.mjs.map +1 -0
  177. package/dist/esm/package-checks/host-environment/process/env.mjs +19 -0
  178. package/dist/esm/package-checks/host-environment/process/env.mjs.map +1 -0
  179. package/dist/esm/package-checks/host-environment/process/failure.mjs +34 -0
  180. package/dist/esm/package-checks/host-environment/process/failure.mjs.map +1 -0
  181. package/dist/esm/package-checks/host-environment/process/result.mjs +33 -0
  182. package/dist/esm/package-checks/host-environment/process/result.mjs.map +1 -0
  183. package/dist/esm/package-checks/host-environment/process/runner.mjs +30 -0
  184. package/dist/esm/package-checks/host-environment/process/runner.mjs.map +1 -0
  185. package/dist/esm/package-checks/json-document/strict-document.mjs +163 -0
  186. package/dist/esm/package-checks/json-document/strict-document.mjs.map +1 -0
  187. package/dist/esm/package-checks/json-schema-validation/default-check.mjs +39 -0
  188. package/dist/esm/package-checks/json-schema-validation/default-check.mjs.map +1 -0
  189. package/dist/esm/package-checks/json-schema-validation/execution-stages.mjs +141 -0
  190. package/dist/esm/package-checks/json-schema-validation/execution-stages.mjs.map +1 -0
  191. package/dist/esm/package-checks/json-schema-validation/final-data.mjs +64 -0
  192. package/dist/esm/package-checks/json-schema-validation/final-data.mjs.map +1 -0
  193. package/dist/esm/package-checks/json-schema-validation/issue-collector.mjs +35 -0
  194. package/dist/esm/package-checks/json-schema-validation/issue-collector.mjs.map +1 -0
  195. package/dist/esm/package-checks/json-schema-validation/json-schema-validation.mjs +118 -0
  196. package/dist/esm/package-checks/json-schema-validation/json-schema-validation.mjs.map +1 -0
  197. package/dist/esm/package-checks/json-schema-validation/options-resolution.mjs +45 -0
  198. package/dist/esm/package-checks/json-schema-validation/options-resolution.mjs.map +1 -0
  199. package/dist/esm/package-checks/json-schema-validation/options-validation.mjs +212 -0
  200. package/dist/esm/package-checks/json-schema-validation/options-validation.mjs.map +1 -0
  201. package/dist/esm/package-checks/json-schema-validation/options.mjs +2 -0
  202. package/dist/esm/package-checks/json-schema-validation/options.mjs.map +1 -0
  203. package/dist/esm/package-checks/json-schema-validation/reference-resolver.mjs +128 -0
  204. package/dist/esm/package-checks/json-schema-validation/reference-resolver.mjs.map +1 -0
  205. package/dist/esm/package-checks/json-schema-validation/remote-response.mjs +71 -0
  206. package/dist/esm/package-checks/json-schema-validation/remote-response.mjs.map +1 -0
  207. package/dist/esm/package-checks/json-schema-validation/schema-engine.mjs +190 -0
  208. package/dist/esm/package-checks/json-schema-validation/schema-engine.mjs.map +1 -0
  209. package/dist/esm/package-checks/json-schema-validation/schema-policy.mjs +234 -0
  210. package/dist/esm/package-checks/json-schema-validation/schema-policy.mjs.map +1 -0
  211. package/dist/esm/package-checks/json-validation/default-check.mjs +39 -0
  212. package/dist/esm/package-checks/json-validation/default-check.mjs.map +1 -0
  213. package/dist/esm/package-checks/json-validation/final-data.mjs +27 -0
  214. package/dist/esm/package-checks/json-validation/final-data.mjs.map +1 -0
  215. package/dist/esm/package-checks/json-validation/json-validation.mjs +138 -0
  216. package/dist/esm/package-checks/json-validation/json-validation.mjs.map +1 -0
  217. package/dist/esm/package-checks/json-validation/options-resolution.mjs +33 -0
  218. package/dist/esm/package-checks/json-validation/options-resolution.mjs.map +1 -0
  219. package/dist/esm/package-checks/json-validation/options-validation.mjs +16 -0
  220. package/dist/esm/package-checks/json-validation/options-validation.mjs.map +1 -0
  221. package/dist/esm/package-checks/json-validation/options.mjs +2 -0
  222. package/dist/esm/package-checks/json-validation/options.mjs.map +1 -0
  223. package/dist/esm/package-checks/maintenance-reminders/assessment-results.mjs +73 -0
  224. package/dist/esm/package-checks/maintenance-reminders/assessment-results.mjs.map +1 -0
  225. package/dist/esm/package-checks/maintenance-reminders/final-data.mjs +153 -0
  226. package/dist/esm/package-checks/maintenance-reminders/final-data.mjs.map +1 -0
  227. package/dist/esm/package-checks/maintenance-reminders/maintenance-reminders.mjs +155 -0
  228. package/dist/esm/package-checks/maintenance-reminders/maintenance-reminders.mjs.map +1 -0
  229. package/dist/esm/package-checks/maintenance-reminders/maintenance-support.mjs +58 -0
  230. package/dist/esm/package-checks/maintenance-reminders/maintenance-support.mjs.map +1 -0
  231. package/dist/esm/package-checks/maintenance-reminders/measurement.mjs +125 -0
  232. package/dist/esm/package-checks/maintenance-reminders/measurement.mjs.map +1 -0
  233. package/dist/esm/package-checks/maintenance-reminders/options-validation.mjs +72 -0
  234. package/dist/esm/package-checks/maintenance-reminders/options-validation.mjs.map +1 -0
  235. package/dist/esm/package-checks/markdown-link-validation/default-check.mjs +55 -0
  236. package/dist/esm/package-checks/markdown-link-validation/default-check.mjs.map +1 -0
  237. package/dist/esm/package-checks/markdown-link-validation/execution.mjs +199 -0
  238. package/dist/esm/package-checks/markdown-link-validation/execution.mjs.map +1 -0
  239. package/dist/esm/package-checks/markdown-link-validation/filesystem-probes.mjs +109 -0
  240. package/dist/esm/package-checks/markdown-link-validation/filesystem-probes.mjs.map +1 -0
  241. package/dist/esm/package-checks/markdown-link-validation/final-data.mjs +28 -0
  242. package/dist/esm/package-checks/markdown-link-validation/final-data.mjs.map +1 -0
  243. package/dist/esm/package-checks/markdown-link-validation/local-resolution.mjs +158 -0
  244. package/dist/esm/package-checks/markdown-link-validation/local-resolution.mjs.map +1 -0
  245. package/dist/esm/package-checks/markdown-link-validation/local-resolver.mjs +17 -0
  246. package/dist/esm/package-checks/markdown-link-validation/local-resolver.mjs.map +1 -0
  247. package/dist/esm/package-checks/markdown-link-validation/markdown-parser.mjs +191 -0
  248. package/dist/esm/package-checks/markdown-link-validation/markdown-parser.mjs.map +1 -0
  249. package/dist/esm/package-checks/markdown-link-validation/options-resolution.mjs +83 -0
  250. package/dist/esm/package-checks/markdown-link-validation/options-resolution.mjs.map +1 -0
  251. package/dist/esm/package-checks/markdown-link-validation/options-validation.mjs +50 -0
  252. package/dist/esm/package-checks/markdown-link-validation/options-validation.mjs.map +1 -0
  253. package/dist/esm/package-checks/markdown-link-validation/options.mjs +2 -0
  254. package/dist/esm/package-checks/markdown-link-validation/options.mjs.map +1 -0
  255. package/dist/esm/package-checks/markdown-link-validation/records.mjs +32 -0
  256. package/dist/esm/package-checks/markdown-link-validation/records.mjs.map +1 -0
  257. package/dist/esm/package-checks/markdown-link-validation/resolver-engine.mjs +196 -0
  258. package/dist/esm/package-checks/markdown-link-validation/resolver-engine.mjs.map +1 -0
  259. package/dist/esm/package-checks/markdown-link-validation/target-descriptor.mjs +23 -0
  260. package/dist/esm/package-checks/markdown-link-validation/target-descriptor.mjs.map +1 -0
  261. package/dist/esm/package-checks/markdown-link-validation/traversal-result.mjs +41 -0
  262. package/dist/esm/package-checks/markdown-link-validation/traversal-result.mjs.map +1 -0
  263. package/dist/esm/package-checks/project-files/collection.mjs +142 -0
  264. package/dist/esm/package-checks/project-files/collection.mjs.map +1 -0
  265. package/dist/esm/package-checks/project-files/config-glob.mjs +11 -0
  266. package/dist/esm/package-checks/project-files/config-glob.mjs.map +1 -0
  267. package/dist/esm/package-checks/project-files/configuration.mjs +104 -0
  268. package/dist/esm/package-checks/project-files/configuration.mjs.map +1 -0
  269. package/dist/esm/package-checks/project-files/exact-input-measurement.mjs +24 -0
  270. package/dist/esm/package-checks/project-files/exact-input-measurement.mjs.map +1 -0
  271. package/dist/esm/package-checks/project-files/file-fingerprint.mjs +36 -0
  272. package/dist/esm/package-checks/project-files/file-fingerprint.mjs.map +1 -0
  273. package/dist/esm/package-checks/project-files/gitlink-revision.mjs +57 -0
  274. package/dist/esm/package-checks/project-files/gitlink-revision.mjs.map +1 -0
  275. package/dist/esm/package-checks/project-files/gitlink-worktree.mjs +72 -0
  276. package/dist/esm/package-checks/project-files/gitlink-worktree.mjs.map +1 -0
  277. package/dist/esm/package-checks/project-files/input-eligibility.mjs +13 -0
  278. package/dist/esm/package-checks/project-files/input-eligibility.mjs.map +1 -0
  279. package/dist/esm/package-checks/project-files/reported-path.mjs +30 -0
  280. package/dist/esm/package-checks/project-files/reported-path.mjs.map +1 -0
  281. package/dist/esm/package-checks/project-files/revision-paths.mjs +19 -0
  282. package/dist/esm/package-checks/project-files/revision-paths.mjs.map +1 -0
  283. package/dist/esm/package-checks/project-files/revision-worktree-files.mjs +102 -0
  284. package/dist/esm/package-checks/project-files/revision-worktree-files.mjs.map +1 -0
  285. package/dist/esm/project-definition/check-tree/authoring.mjs +242 -0
  286. package/dist/esm/project-definition/check-tree/authoring.mjs.map +1 -0
  287. package/dist/esm/project-definition/check-tree/materialization.mjs +50 -0
  288. package/dist/esm/project-definition/check-tree/materialization.mjs.map +1 -0
  289. package/dist/esm/project-definition/check-tree/resolution.mjs +60 -0
  290. package/dist/esm/project-definition/check-tree/resolution.mjs.map +1 -0
  291. package/dist/esm/project-definition/output-defaults.mjs +7 -0
  292. package/dist/esm/project-definition/output-defaults.mjs.map +1 -0
  293. package/dist/esm/project-definition/output-validation.mjs +44 -0
  294. package/dist/esm/project-definition/output-validation.mjs.map +1 -0
  295. package/dist/esm/project-definition/project-definition-validation.mjs +95 -0
  296. package/dist/esm/project-definition/project-definition-validation.mjs.map +1 -0
  297. package/dist/esm/project-definition/project-definition.mjs +92 -0
  298. package/dist/esm/project-definition/project-definition.mjs.map +1 -0
  299. package/dist/esm/project-run/aggregation.mjs +66 -0
  300. package/dist/esm/project-run/aggregation.mjs.map +1 -0
  301. package/dist/esm/project-run/check-execution/callback.mjs +70 -0
  302. package/dist/esm/project-run/check-execution/callback.mjs.map +1 -0
  303. package/dist/esm/project-run/check-execution/dependencies.mjs +50 -0
  304. package/dist/esm/project-run/check-execution/dependencies.mjs.map +1 -0
  305. package/dist/esm/project-run/check-execution/execution-finalization.mjs +103 -0
  306. package/dist/esm/project-run/check-execution/execution-finalization.mjs.map +1 -0
  307. package/dist/esm/project-run/check-execution/execution-settlement.mjs +90 -0
  308. package/dist/esm/project-run/check-execution/execution-settlement.mjs.map +1 -0
  309. package/dist/esm/project-run/check-execution/messages.mjs +38 -0
  310. package/dist/esm/project-run/check-execution/messages.mjs.map +1 -0
  311. package/dist/esm/project-run/check-execution/plan.mjs +35 -0
  312. package/dist/esm/project-run/check-execution/plan.mjs.map +1 -0
  313. package/dist/esm/project-run/check-execution/preflight-result.mjs +83 -0
  314. package/dist/esm/project-run/check-execution/preflight-result.mjs.map +1 -0
  315. package/dist/esm/project-run/check-execution/preflight.mjs +186 -0
  316. package/dist/esm/project-run/check-execution/preflight.mjs.map +1 -0
  317. package/dist/esm/project-run/check-execution/resolved-checks.mjs +168 -0
  318. package/dist/esm/project-run/check-execution/resolved-checks.mjs.map +1 -0
  319. package/dist/esm/project-run/check-execution/terminal-result.mjs +49 -0
  320. package/dist/esm/project-run/check-execution/terminal-result.mjs.map +1 -0
  321. package/dist/esm/project-run/completion.mjs +173 -0
  322. package/dist/esm/project-run/completion.mjs.map +1 -0
  323. package/dist/esm/project-run/controls/contract.mjs +2 -0
  324. package/dist/esm/project-run/controls/contract.mjs.map +1 -0
  325. package/dist/esm/project-run/controls/outputs-override-validation.mjs +61 -0
  326. package/dist/esm/project-run/controls/outputs-override-validation.mjs.map +1 -0
  327. package/dist/esm/project-run/controls/validation-result.mjs +2 -0
  328. package/dist/esm/project-run/controls/validation-result.mjs.map +1 -0
  329. package/dist/esm/project-run/controls/validation.mjs +156 -0
  330. package/dist/esm/project-run/controls/validation.mjs.map +1 -0
  331. package/dist/esm/project-run/diagnostic-logging/diagnostic-detail-rendering.mjs +182 -0
  332. package/dist/esm/project-run/diagnostic-logging/diagnostic-detail-rendering.mjs.map +1 -0
  333. package/dist/esm/project-run/diagnostic-logging/logger.mjs +242 -0
  334. package/dist/esm/project-run/diagnostic-logging/logger.mjs.map +1 -0
  335. package/dist/esm/project-run/invocation-creation.mjs +111 -0
  336. package/dist/esm/project-run/invocation-creation.mjs.map +1 -0
  337. package/dist/esm/project-run/invocation.mjs +195 -0
  338. package/dist/esm/project-run/invocation.mjs.map +1 -0
  339. package/dist/esm/project-run/machine-publication.mjs +16 -0
  340. package/dist/esm/project-run/machine-publication.mjs.map +1 -0
  341. package/dist/esm/project-run/output-configuration.mjs +17 -0
  342. package/dist/esm/project-run/output-configuration.mjs.map +1 -0
  343. package/dist/esm/project-run/output-status.mjs +43 -0
  344. package/dist/esm/project-run/output-status.mjs.map +1 -0
  345. package/dist/esm/project-run/progress-rendering/presentation.mjs +135 -0
  346. package/dist/esm/project-run/progress-rendering/presentation.mjs.map +1 -0
  347. package/dist/esm/project-run/progress-rendering/renderer-formatting.mjs +100 -0
  348. package/dist/esm/project-run/progress-rendering/renderer-formatting.mjs.map +1 -0
  349. package/dist/esm/project-run/progress-rendering/renderer-lifecycle.mjs +123 -0
  350. package/dist/esm/project-run/progress-rendering/renderer-lifecycle.mjs.map +1 -0
  351. package/dist/esm/project-run/progress-rendering/renderer.mjs +12 -0
  352. package/dist/esm/project-run/progress-rendering/renderer.mjs.map +1 -0
  353. package/dist/esm/project-run/project-context.mjs +8 -0
  354. package/dist/esm/project-run/project-context.mjs.map +1 -0
  355. package/dist/esm/project-run/result.mjs +54 -0
  356. package/dist/esm/project-run/result.mjs.map +1 -0
  357. package/dist/esm/project-run/run.mjs +23 -0
  358. package/dist/esm/project-run/run.mjs.map +1 -0
  359. package/dist/esm/project-run/task-scheduler/execution-state.mjs +66 -0
  360. package/dist/esm/project-run/task-scheduler/execution-state.mjs.map +1 -0
  361. package/dist/esm/project-run/task-scheduler/graph-validation.mjs +119 -0
  362. package/dist/esm/project-run/task-scheduler/graph-validation.mjs.map +1 -0
  363. package/dist/esm/project-run/task-scheduler/graph.mjs +116 -0
  364. package/dist/esm/project-run/task-scheduler/graph.mjs.map +1 -0
  365. package/dist/esm/project-run/task-scheduler/scheduler-admission-decision.mjs +82 -0
  366. package/dist/esm/project-run/task-scheduler/scheduler-admission-decision.mjs.map +1 -0
  367. package/dist/esm/project-run/task-scheduler/scheduler-blocker-summary.mjs +27 -0
  368. package/dist/esm/project-run/task-scheduler/scheduler-blocker-summary.mjs.map +1 -0
  369. package/dist/esm/project-run/task-scheduler/scheduler-decision-inspection.mjs +125 -0
  370. package/dist/esm/project-run/task-scheduler/scheduler-decision-inspection.mjs.map +1 -0
  371. package/dist/esm/project-run/task-scheduler/scheduler-decision-model.mjs +45 -0
  372. package/dist/esm/project-run/task-scheduler/scheduler-decision-model.mjs.map +1 -0
  373. package/dist/esm/project-run/task-scheduler/scheduler-decision.mjs +74 -0
  374. package/dist/esm/project-run/task-scheduler/scheduler-decision.mjs.map +1 -0
  375. package/dist/esm/project-run/task-scheduler/scheduler.mjs +147 -0
  376. package/dist/esm/project-run/task-scheduler/scheduler.mjs.map +1 -0
  377. package/docs/api-mechanics.md +205 -0
  378. package/docs/checks/duplicate-detection.md +195 -0
  379. package/docs/checks/file-metrics.md +229 -0
  380. package/docs/checks/function-metrics.md +222 -0
  381. package/docs/checks/json-schema-validation.md +190 -0
  382. package/docs/checks/json-validation.md +133 -0
  383. package/docs/checks/maintenance-reminders.md +158 -0
  384. package/docs/checks/markdown-link-validation.md +192 -0
  385. package/docs/examples/artifacts/mixed-outcomes/definition.ts +195 -0
  386. package/docs/examples/artifacts/mixed-outcomes/records.ndjson +2 -0
  387. package/docs/examples/artifacts/mixed-outcomes/run.json +70 -0
  388. package/docs/output.md +97 -0
  389. package/docs/schemas/vibe-check-record.schema.json +33 -0
  390. package/docs/schemas/vibe-check-run.schema.json +173 -0
  391. package/index.mjs +1 -0
  392. package/package.json +49 -0
  393. package/src/check/check.ts +497 -0
  394. package/src/check/descriptor-validation.ts +60 -0
  395. package/src/check/descriptor.ts +5 -0
  396. package/src/check/inherited-collection.ts +101 -0
  397. package/src/check/options-snapshot.ts +80 -0
  398. package/src/check-settlement/fact-validation.ts +289 -0
  399. package/src/check-settlement/facts.ts +27 -0
  400. package/src/check-settlement/outcome-normalization.ts +118 -0
  401. package/src/check-settlement/record-store.ts +73 -0
  402. package/src/check-settlement/session.ts +257 -0
  403. package/src/data-boundary/canonical-data.ts +188 -0
  404. package/src/data-boundary/canonical-json.ts +11 -0
  405. package/src/data-boundary/closed-values.ts +126 -0
  406. package/src/data-boundary/value-shapes.ts +15 -0
  407. package/src/finding-waivers/reconciliation.ts +176 -0
  408. package/src/index.ts +123 -0
  409. package/src/machine-output/v4/atomic-publication.ts +123 -0
  410. package/src/machine-output/v4/freeze-publication-value.ts +12 -0
  411. package/src/machine-output/v4/projection.ts +36 -0
  412. package/src/machine-output/v4/publication-invariants.ts +89 -0
  413. package/src/machine-output/v4/publication-model.ts +38 -0
  414. package/src/machine-output/v4/publish.ts +23 -0
  415. package/src/machine-output/v4/records-fingerprint.ts +12 -0
  416. package/src/machine-output/v4/schema-identities.ts +8 -0
  417. package/src/machine-output/v4/schema.ts +97 -0
  418. package/src/machine-output/v4/serializers.ts +18 -0
  419. package/src/machine-output/v4/validation-result.ts +59 -0
  420. package/src/machine-output/v4/validation.ts +166 -0
  421. package/src/package-checks/code-quality-findings/policy.ts +85 -0
  422. package/src/package-checks/duplicate-detection/area-policy.ts +103 -0
  423. package/src/package-checks/duplicate-detection/cache/cache-contract.ts +49 -0
  424. package/src/package-checks/duplicate-detection/cache/identity.ts +61 -0
  425. package/src/package-checks/duplicate-detection/cache/key.ts +46 -0
  426. package/src/package-checks/duplicate-detection/cache/payload.ts +78 -0
  427. package/src/package-checks/duplicate-detection/cache/store.ts +77 -0
  428. package/src/package-checks/duplicate-detection/default-check.ts +50 -0
  429. package/src/package-checks/duplicate-detection/execution.ts +168 -0
  430. package/src/package-checks/duplicate-detection/final-data.ts +10 -0
  431. package/src/package-checks/duplicate-detection/jscpd/availability.ts +137 -0
  432. package/src/package-checks/duplicate-detection/jscpd/command-path.ts +8 -0
  433. package/src/package-checks/duplicate-detection/jscpd/command-resolution.ts +112 -0
  434. package/src/package-checks/duplicate-detection/jscpd/json-report.ts +137 -0
  435. package/src/package-checks/duplicate-detection/jscpd/scanner-contract.ts +18 -0
  436. package/src/package-checks/duplicate-detection/jscpd/scanner.ts +257 -0
  437. package/src/package-checks/duplicate-detection/jscpd/scoped-fragments.ts +17 -0
  438. package/src/package-checks/duplicate-detection/measurement-model.ts +44 -0
  439. package/src/package-checks/duplicate-detection/measurement.ts +223 -0
  440. package/src/package-checks/duplicate-detection/options-resolution.ts +162 -0
  441. package/src/package-checks/duplicate-detection/options-validation.ts +75 -0
  442. package/src/package-checks/duplicate-detection/options.ts +72 -0
  443. package/src/package-checks/duplicate-detection/project-revision.ts +5 -0
  444. package/src/package-checks/duplicate-detection/records.ts +171 -0
  445. package/src/package-checks/file-metrics/constructor.ts +46 -0
  446. package/src/package-checks/file-metrics/execution.ts +233 -0
  447. package/src/package-checks/file-metrics/final-data.ts +10 -0
  448. package/src/package-checks/file-metrics/measurement-model.ts +10 -0
  449. package/src/package-checks/file-metrics/measurement.ts +52 -0
  450. package/src/package-checks/file-metrics/options-resolution.ts +213 -0
  451. package/src/package-checks/file-metrics/options-validation.ts +104 -0
  452. package/src/package-checks/file-metrics/options.ts +91 -0
  453. package/src/package-checks/file-metrics/records.ts +182 -0
  454. package/src/package-checks/file-metrics/scc/availability.ts +100 -0
  455. package/src/package-checks/file-metrics/scc/csv.ts +20 -0
  456. package/src/package-checks/file-metrics/scc/parser.ts +223 -0
  457. package/src/package-checks/file-metrics/scc/scanner.ts +68 -0
  458. package/src/package-checks/final-data-parsing.ts +49 -0
  459. package/src/package-checks/function-metrics/analysis.ts +138 -0
  460. package/src/package-checks/function-metrics/constructor.ts +55 -0
  461. package/src/package-checks/function-metrics/execution.ts +263 -0
  462. package/src/package-checks/function-metrics/final-data.ts +10 -0
  463. package/src/package-checks/function-metrics/lizard/availability.ts +90 -0
  464. package/src/package-checks/function-metrics/lizard/csv.ts +20 -0
  465. package/src/package-checks/function-metrics/lizard/parser.ts +179 -0
  466. package/src/package-checks/function-metrics/lizard/scanner.ts +62 -0
  467. package/src/package-checks/function-metrics/measurement-model.ts +30 -0
  468. package/src/package-checks/function-metrics/measurement.ts +57 -0
  469. package/src/package-checks/function-metrics/options-resolution.ts +215 -0
  470. package/src/package-checks/function-metrics/options-validation.ts +89 -0
  471. package/src/package-checks/function-metrics/options.ts +84 -0
  472. package/src/package-checks/function-metrics/records.ts +254 -0
  473. package/src/package-checks/function-metrics/target-files.ts +85 -0
  474. package/src/package-checks/host-environment/error-message.ts +3 -0
  475. package/src/package-checks/host-environment/filesystem.ts +110 -0
  476. package/src/package-checks/host-environment/git.ts +68 -0
  477. package/src/package-checks/host-environment/path.ts +20 -0
  478. package/src/package-checks/host-environment/process/command.ts +21 -0
  479. package/src/package-checks/host-environment/process/contract.ts +56 -0
  480. package/src/package-checks/host-environment/process/env.ts +25 -0
  481. package/src/package-checks/host-environment/process/failure.ts +40 -0
  482. package/src/package-checks/host-environment/process/result.ts +39 -0
  483. package/src/package-checks/host-environment/process/runner.ts +47 -0
  484. package/src/package-checks/json-document/strict-document.ts +209 -0
  485. package/src/package-checks/json-schema-validation/default-check.ts +54 -0
  486. package/src/package-checks/json-schema-validation/execution-stages.ts +230 -0
  487. package/src/package-checks/json-schema-validation/final-data.ts +115 -0
  488. package/src/package-checks/json-schema-validation/issue-collector.ts +43 -0
  489. package/src/package-checks/json-schema-validation/json-schema-validation.ts +191 -0
  490. package/src/package-checks/json-schema-validation/options-resolution.ts +61 -0
  491. package/src/package-checks/json-schema-validation/options-validation.ts +256 -0
  492. package/src/package-checks/json-schema-validation/options.ts +66 -0
  493. package/src/package-checks/json-schema-validation/reference-resolver.ts +165 -0
  494. package/src/package-checks/json-schema-validation/remote-response.ts +84 -0
  495. package/src/package-checks/json-schema-validation/schema-engine.ts +263 -0
  496. package/src/package-checks/json-schema-validation/schema-policy.ts +275 -0
  497. package/src/package-checks/json-validation/default-check.ts +48 -0
  498. package/src/package-checks/json-validation/final-data.ts +46 -0
  499. package/src/package-checks/json-validation/json-validation.ts +212 -0
  500. package/src/package-checks/json-validation/options-resolution.ts +50 -0
  501. package/src/package-checks/json-validation/options-validation.ts +27 -0
  502. package/src/package-checks/json-validation/options.ts +18 -0
  503. package/src/package-checks/maintenance-reminders/assessment-results.ts +117 -0
  504. package/src/package-checks/maintenance-reminders/final-data.ts +239 -0
  505. package/src/package-checks/maintenance-reminders/maintenance-reminders.ts +264 -0
  506. package/src/package-checks/maintenance-reminders/maintenance-support.ts +67 -0
  507. package/src/package-checks/maintenance-reminders/measurement.ts +183 -0
  508. package/src/package-checks/maintenance-reminders/options-validation.ts +88 -0
  509. package/src/package-checks/markdown-link-validation/default-check.ts +70 -0
  510. package/src/package-checks/markdown-link-validation/execution.ts +325 -0
  511. package/src/package-checks/markdown-link-validation/filesystem-probes.ts +127 -0
  512. package/src/package-checks/markdown-link-validation/final-data.ts +47 -0
  513. package/src/package-checks/markdown-link-validation/local-resolution.ts +306 -0
  514. package/src/package-checks/markdown-link-validation/local-resolver.ts +51 -0
  515. package/src/package-checks/markdown-link-validation/markdown-parser.ts +302 -0
  516. package/src/package-checks/markdown-link-validation/options-resolution.ts +114 -0
  517. package/src/package-checks/markdown-link-validation/options-validation.ts +72 -0
  518. package/src/package-checks/markdown-link-validation/options.ts +50 -0
  519. package/src/package-checks/markdown-link-validation/records.ts +77 -0
  520. package/src/package-checks/markdown-link-validation/resolver-engine.ts +276 -0
  521. package/src/package-checks/markdown-link-validation/target-descriptor.ts +34 -0
  522. package/src/package-checks/markdown-link-validation/traversal-result.ts +58 -0
  523. package/src/package-checks/project-files/collection.ts +199 -0
  524. package/src/package-checks/project-files/config-glob.ts +17 -0
  525. package/src/package-checks/project-files/configuration.ts +152 -0
  526. package/src/package-checks/project-files/exact-input-measurement.ts +38 -0
  527. package/src/package-checks/project-files/file-fingerprint.ts +46 -0
  528. package/src/package-checks/project-files/gitlink-revision.ts +82 -0
  529. package/src/package-checks/project-files/gitlink-worktree.ts +106 -0
  530. package/src/package-checks/project-files/input-eligibility.ts +21 -0
  531. package/src/package-checks/project-files/reported-path.ts +35 -0
  532. package/src/package-checks/project-files/revision-paths.ts +34 -0
  533. package/src/package-checks/project-files/revision-worktree-files.ts +148 -0
  534. package/src/project-definition/check-tree/authoring.ts +332 -0
  535. package/src/project-definition/check-tree/materialization.ts +56 -0
  536. package/src/project-definition/check-tree/resolution.ts +108 -0
  537. package/src/project-definition/output-defaults.ts +6 -0
  538. package/src/project-definition/output-validation.ts +54 -0
  539. package/src/project-definition/project-definition-validation.ts +123 -0
  540. package/src/project-definition/project-definition.ts +184 -0
  541. package/src/project-run/aggregation.ts +90 -0
  542. package/src/project-run/check-execution/callback.ts +106 -0
  543. package/src/project-run/check-execution/dependencies.ts +70 -0
  544. package/src/project-run/check-execution/execution-finalization.ts +177 -0
  545. package/src/project-run/check-execution/execution-settlement.ts +147 -0
  546. package/src/project-run/check-execution/messages.ts +46 -0
  547. package/src/project-run/check-execution/plan.ts +46 -0
  548. package/src/project-run/check-execution/preflight-result.ts +131 -0
  549. package/src/project-run/check-execution/preflight.ts +321 -0
  550. package/src/project-run/check-execution/resolved-checks.ts +285 -0
  551. package/src/project-run/check-execution/terminal-result.ts +74 -0
  552. package/src/project-run/completion.ts +263 -0
  553. package/src/project-run/controls/contract.ts +24 -0
  554. package/src/project-run/controls/outputs-override-validation.ts +86 -0
  555. package/src/project-run/controls/validation-result.ts +12 -0
  556. package/src/project-run/controls/validation.ts +176 -0
  557. package/src/project-run/diagnostic-logging/diagnostic-detail-rendering.ts +223 -0
  558. package/src/project-run/diagnostic-logging/logger.ts +325 -0
  559. package/src/project-run/invocation-creation.ts +160 -0
  560. package/src/project-run/invocation.ts +303 -0
  561. package/src/project-run/machine-publication.ts +23 -0
  562. package/src/project-run/output-configuration.ts +24 -0
  563. package/src/project-run/output-status.ts +69 -0
  564. package/src/project-run/progress-rendering/presentation.ts +189 -0
  565. package/src/project-run/progress-rendering/renderer-formatting.ts +141 -0
  566. package/src/project-run/progress-rendering/renderer-lifecycle.ts +152 -0
  567. package/src/project-run/progress-rendering/renderer.ts +68 -0
  568. package/src/project-run/project-context.ts +11 -0
  569. package/src/project-run/result.ts +175 -0
  570. package/src/project-run/run.ts +50 -0
  571. package/src/project-run/task-scheduler/execution-state.ts +153 -0
  572. package/src/project-run/task-scheduler/graph-validation.ts +176 -0
  573. package/src/project-run/task-scheduler/graph.ts +185 -0
  574. package/src/project-run/task-scheduler/scheduler-admission-decision.ts +177 -0
  575. package/src/project-run/task-scheduler/scheduler-blocker-summary.ts +42 -0
  576. package/src/project-run/task-scheduler/scheduler-decision-inspection.ts +199 -0
  577. package/src/project-run/task-scheduler/scheduler-decision-model.ts +158 -0
  578. package/src/project-run/task-scheduler/scheduler-decision.ts +103 -0
  579. package/src/project-run/task-scheduler/scheduler.ts +228 -0
  580. package/third-party-licenses/momoa-3.3.12-LICENSE +201 -0
  581. package/types/check/check.d.ts +350 -0
  582. package/types/check/descriptor-validation.d.ts +18 -0
  583. package/types/check/descriptor.d.ts +5 -0
  584. package/types/check/inherited-collection.d.ts +35 -0
  585. package/types/check/options-snapshot.d.ts +2 -0
  586. package/types/check-settlement/fact-validation.d.ts +14 -0
  587. package/types/check-settlement/facts.d.ts +19 -0
  588. package/types/check-settlement/outcome-normalization.d.ts +9 -0
  589. package/types/check-settlement/record-store.d.ts +14 -0
  590. package/types/check-settlement/session.d.ts +41 -0
  591. package/types/data-boundary/canonical-data.d.ts +13 -0
  592. package/types/data-boundary/canonical-json.d.ts +6 -0
  593. package/types/data-boundary/closed-values.d.ts +8 -0
  594. package/types/data-boundary/value-shapes.d.ts +4 -0
  595. package/types/finding-waivers/reconciliation.d.ts +66 -0
  596. package/types/index.d.ts +57 -0
  597. package/types/machine-output/v4/atomic-publication.d.ts +9 -0
  598. package/types/machine-output/v4/freeze-publication-value.d.ts +6 -0
  599. package/types/machine-output/v4/projection.d.ts +7 -0
  600. package/types/machine-output/v4/publication-invariants.d.ts +3 -0
  601. package/types/machine-output/v4/publication-model.d.ts +15 -0
  602. package/types/machine-output/v4/publish.d.ts +7 -0
  603. package/types/machine-output/v4/records-fingerprint.d.ts +4 -0
  604. package/types/machine-output/v4/schema-identities.d.ts +7 -0
  605. package/types/machine-output/v4/schema.d.ts +44 -0
  606. package/types/machine-output/v4/serializers.d.ts +6 -0
  607. package/types/machine-output/v4/validation-result.d.ts +26 -0
  608. package/types/machine-output/v4/validation.d.ts +6 -0
  609. package/types/package-checks/code-quality-findings/policy.d.ts +20 -0
  610. package/types/package-checks/duplicate-detection/area-policy.d.ts +3 -0
  611. package/types/package-checks/duplicate-detection/cache/cache-contract.d.ts +48 -0
  612. package/types/package-checks/duplicate-detection/cache/identity.d.ts +17 -0
  613. package/types/package-checks/duplicate-detection/cache/key.d.ts +4 -0
  614. package/types/package-checks/duplicate-detection/cache/payload.d.ts +4 -0
  615. package/types/package-checks/duplicate-detection/cache/store.d.ts +18 -0
  616. package/types/package-checks/duplicate-detection/default-check.d.ts +11 -0
  617. package/types/package-checks/duplicate-detection/execution.d.ts +11 -0
  618. package/types/package-checks/duplicate-detection/final-data.d.ts +5 -0
  619. package/types/package-checks/duplicate-detection/jscpd/availability.d.ts +19 -0
  620. package/types/package-checks/duplicate-detection/jscpd/command-path.d.ts +1 -0
  621. package/types/package-checks/duplicate-detection/jscpd/command-resolution.d.ts +23 -0
  622. package/types/package-checks/duplicate-detection/jscpd/json-report.d.ts +2 -0
  623. package/types/package-checks/duplicate-detection/jscpd/scanner-contract.d.ts +11 -0
  624. package/types/package-checks/duplicate-detection/jscpd/scanner.d.ts +21 -0
  625. package/types/package-checks/duplicate-detection/jscpd/scoped-fragments.d.ts +4 -0
  626. package/types/package-checks/duplicate-detection/measurement-model.d.ts +36 -0
  627. package/types/package-checks/duplicate-detection/measurement.d.ts +14 -0
  628. package/types/package-checks/duplicate-detection/options-resolution.d.ts +3 -0
  629. package/types/package-checks/duplicate-detection/options-validation.d.ts +1 -0
  630. package/types/package-checks/duplicate-detection/options.d.ts +65 -0
  631. package/types/package-checks/duplicate-detection/project-revision.d.ts +1 -0
  632. package/types/package-checks/duplicate-detection/records.d.ts +22 -0
  633. package/types/package-checks/file-metrics/constructor.d.ts +11 -0
  634. package/types/package-checks/file-metrics/execution.d.ts +11 -0
  635. package/types/package-checks/file-metrics/final-data.d.ts +5 -0
  636. package/types/package-checks/file-metrics/measurement-model.d.ts +12 -0
  637. package/types/package-checks/file-metrics/measurement.d.ts +13 -0
  638. package/types/package-checks/file-metrics/options-resolution.d.ts +3 -0
  639. package/types/package-checks/file-metrics/options-validation.d.ts +3 -0
  640. package/types/package-checks/file-metrics/options.d.ts +75 -0
  641. package/types/package-checks/file-metrics/records.d.ts +43 -0
  642. package/types/package-checks/file-metrics/scc/availability.d.ts +18 -0
  643. package/types/package-checks/file-metrics/scc/csv.d.ts +1 -0
  644. package/types/package-checks/file-metrics/scc/parser.d.ts +25 -0
  645. package/types/package-checks/file-metrics/scc/scanner.d.ts +14 -0
  646. package/types/package-checks/final-data-parsing.d.ts +9 -0
  647. package/types/package-checks/function-metrics/analysis.d.ts +10 -0
  648. package/types/package-checks/function-metrics/constructor.d.ts +11 -0
  649. package/types/package-checks/function-metrics/execution.d.ts +7 -0
  650. package/types/package-checks/function-metrics/final-data.d.ts +5 -0
  651. package/types/package-checks/function-metrics/lizard/availability.d.ts +11 -0
  652. package/types/package-checks/function-metrics/lizard/csv.d.ts +1 -0
  653. package/types/package-checks/function-metrics/lizard/parser.d.ts +17 -0
  654. package/types/package-checks/function-metrics/lizard/scanner.d.ts +15 -0
  655. package/types/package-checks/function-metrics/measurement-model.d.ts +26 -0
  656. package/types/package-checks/function-metrics/measurement.d.ts +21 -0
  657. package/types/package-checks/function-metrics/options-resolution.d.ts +3 -0
  658. package/types/package-checks/function-metrics/options-validation.d.ts +3 -0
  659. package/types/package-checks/function-metrics/options.d.ts +76 -0
  660. package/types/package-checks/function-metrics/records.d.ts +37 -0
  661. package/types/package-checks/function-metrics/target-files.d.ts +3 -0
  662. package/types/package-checks/host-environment/error-message.d.ts +1 -0
  663. package/types/package-checks/host-environment/filesystem.d.ts +19 -0
  664. package/types/package-checks/host-environment/git.d.ts +13 -0
  665. package/types/package-checks/host-environment/path.d.ts +3 -0
  666. package/types/package-checks/host-environment/process/command.d.ts +7 -0
  667. package/types/package-checks/host-environment/process/contract.d.ts +50 -0
  668. package/types/package-checks/host-environment/process/env.d.ts +16 -0
  669. package/types/package-checks/host-environment/process/failure.d.ts +4 -0
  670. package/types/package-checks/host-environment/process/result.d.ts +2 -0
  671. package/types/package-checks/host-environment/process/runner.d.ts +3 -0
  672. package/types/package-checks/json-document/strict-document.d.ts +35 -0
  673. package/types/package-checks/json-schema-validation/default-check.d.ts +11 -0
  674. package/types/package-checks/json-schema-validation/execution-stages.d.ts +27 -0
  675. package/types/package-checks/json-schema-validation/final-data.d.ts +15 -0
  676. package/types/package-checks/json-schema-validation/issue-collector.d.ts +12 -0
  677. package/types/package-checks/json-schema-validation/json-schema-validation.d.ts +42 -0
  678. package/types/package-checks/json-schema-validation/options-resolution.d.ts +3 -0
  679. package/types/package-checks/json-schema-validation/options-validation.d.ts +2 -0
  680. package/types/package-checks/json-schema-validation/options.d.ts +53 -0
  681. package/types/package-checks/json-schema-validation/reference-resolver.d.ts +23 -0
  682. package/types/package-checks/json-schema-validation/remote-response.d.ts +2 -0
  683. package/types/package-checks/json-schema-validation/schema-engine.d.ts +33 -0
  684. package/types/package-checks/json-schema-validation/schema-policy.d.ts +17 -0
  685. package/types/package-checks/json-validation/default-check.d.ts +11 -0
  686. package/types/package-checks/json-validation/final-data.d.ts +10 -0
  687. package/types/package-checks/json-validation/json-validation.d.ts +28 -0
  688. package/types/package-checks/json-validation/options-resolution.d.ts +3 -0
  689. package/types/package-checks/json-validation/options-validation.d.ts +2 -0
  690. package/types/package-checks/json-validation/options.d.ts +13 -0
  691. package/types/package-checks/maintenance-reminders/assessment-results.d.ts +10 -0
  692. package/types/package-checks/maintenance-reminders/final-data.d.ts +47 -0
  693. package/types/package-checks/maintenance-reminders/maintenance-reminders.d.ts +111 -0
  694. package/types/package-checks/maintenance-reminders/maintenance-support.d.ts +7 -0
  695. package/types/package-checks/maintenance-reminders/measurement.d.ts +10 -0
  696. package/types/package-checks/maintenance-reminders/options-validation.d.ts +3 -0
  697. package/types/package-checks/markdown-link-validation/default-check.d.ts +27 -0
  698. package/types/package-checks/markdown-link-validation/execution.d.ts +12 -0
  699. package/types/package-checks/markdown-link-validation/filesystem-probes.d.ts +10 -0
  700. package/types/package-checks/markdown-link-validation/final-data.d.ts +10 -0
  701. package/types/package-checks/markdown-link-validation/local-resolution.d.ts +92 -0
  702. package/types/package-checks/markdown-link-validation/local-resolver.d.ts +5 -0
  703. package/types/package-checks/markdown-link-validation/markdown-parser.d.ts +37 -0
  704. package/types/package-checks/markdown-link-validation/options-resolution.d.ts +3 -0
  705. package/types/package-checks/markdown-link-validation/options-validation.d.ts +2 -0
  706. package/types/package-checks/markdown-link-validation/options.d.ts +43 -0
  707. package/types/package-checks/markdown-link-validation/records.d.ts +37 -0
  708. package/types/package-checks/markdown-link-validation/resolver-engine.d.ts +15 -0
  709. package/types/package-checks/markdown-link-validation/target-descriptor.d.ts +5 -0
  710. package/types/package-checks/markdown-link-validation/traversal-result.d.ts +12 -0
  711. package/types/package-checks/project-files/collection.d.ts +9 -0
  712. package/types/package-checks/project-files/config-glob.d.ts +5 -0
  713. package/types/package-checks/project-files/configuration.d.ts +31 -0
  714. package/types/package-checks/project-files/exact-input-measurement.d.ts +12 -0
  715. package/types/package-checks/project-files/file-fingerprint.d.ts +7 -0
  716. package/types/package-checks/project-files/gitlink-revision.d.ts +9 -0
  717. package/types/package-checks/project-files/gitlink-worktree.d.ts +26 -0
  718. package/types/package-checks/project-files/input-eligibility.d.ts +7 -0
  719. package/types/package-checks/project-files/reported-path.d.ts +1 -0
  720. package/types/package-checks/project-files/revision-paths.d.ts +12 -0
  721. package/types/package-checks/project-files/revision-worktree-files.d.ts +5 -0
  722. package/types/project-definition/check-tree/authoring.d.ts +41 -0
  723. package/types/project-definition/check-tree/materialization.d.ts +4 -0
  724. package/types/project-definition/check-tree/resolution.d.ts +25 -0
  725. package/types/project-definition/output-defaults.d.ts +14 -0
  726. package/types/project-definition/output-validation.d.ts +3 -0
  727. package/types/project-definition/project-definition-validation.d.ts +6 -0
  728. package/types/project-definition/project-definition.d.ts +88 -0
  729. package/types/project-run/aggregation.d.ts +7 -0
  730. package/types/project-run/check-execution/callback.d.ts +24 -0
  731. package/types/project-run/check-execution/dependencies.d.ts +9 -0
  732. package/types/project-run/check-execution/execution-finalization.d.ts +18 -0
  733. package/types/project-run/check-execution/execution-settlement.d.ts +41 -0
  734. package/types/project-run/check-execution/messages.d.ts +3 -0
  735. package/types/project-run/check-execution/plan.d.ts +10 -0
  736. package/types/project-run/check-execution/preflight-result.d.ts +23 -0
  737. package/types/project-run/check-execution/preflight.d.ts +27 -0
  738. package/types/project-run/check-execution/resolved-checks.d.ts +51 -0
  739. package/types/project-run/check-execution/terminal-result.d.ts +27 -0
  740. package/types/project-run/completion.d.ts +14 -0
  741. package/types/project-run/controls/contract.d.ts +24 -0
  742. package/types/project-run/controls/outputs-override-validation.d.ts +3 -0
  743. package/types/project-run/controls/validation-result.d.ts +14 -0
  744. package/types/project-run/controls/validation.d.ts +3 -0
  745. package/types/project-run/diagnostic-logging/diagnostic-detail-rendering.d.ts +11 -0
  746. package/types/project-run/diagnostic-logging/logger.d.ts +33 -0
  747. package/types/project-run/invocation-creation.d.ts +12 -0
  748. package/types/project-run/invocation.d.ts +34 -0
  749. package/types/project-run/machine-publication.d.ts +10 -0
  750. package/types/project-run/output-configuration.d.ts +3 -0
  751. package/types/project-run/output-status.d.ts +21 -0
  752. package/types/project-run/progress-rendering/presentation.d.ts +28 -0
  753. package/types/project-run/progress-rendering/renderer-formatting.d.ts +23 -0
  754. package/types/project-run/progress-rendering/renderer-lifecycle.d.ts +24 -0
  755. package/types/project-run/progress-rendering/renderer.d.ts +44 -0
  756. package/types/project-run/project-context.d.ts +7 -0
  757. package/types/project-run/result.d.ts +99 -0
  758. package/types/project-run/run.d.ts +18 -0
  759. package/types/project-run/task-scheduler/execution-state.d.ts +67 -0
  760. package/types/project-run/task-scheduler/graph-validation.d.ts +11 -0
  761. package/types/project-run/task-scheduler/graph.d.ts +40 -0
  762. package/types/project-run/task-scheduler/scheduler-admission-decision.d.ts +8 -0
  763. package/types/project-run/task-scheduler/scheduler-blocker-summary.d.ts +4 -0
  764. package/types/project-run/task-scheduler/scheduler-decision-inspection.d.ts +24 -0
  765. package/types/project-run/task-scheduler/scheduler-decision-model.d.ts +94 -0
  766. package/types/project-run/task-scheduler/scheduler-decision.d.ts +8 -0
  767. package/types/project-run/task-scheduler/scheduler.d.ts +3 -0
@@ -0,0 +1,195 @@
1
+ # `duplicateDetection`
2
+
3
+ 返回 [README 的随包 Check 概览](../../README.md#随包提供的-check)。
4
+
5
+ ## 用途
6
+
7
+ 本页是 package consumer 配置和读取 `duplicateDetection` 的主指南。`duplicateDetection(options?)` 使用带默认值的
8
+ policy 构造一个普通 `duplicate-detection` Check。该 Check 用 jscpd 比较自己批准的项目文件,把满足行数与 token
9
+ policy 的重复片段报告为 supplemental Records,并分别报告 finding 总数与 blocking finding 数量。
10
+
11
+ 默认 package command 使用随 `@zxyycom/vibe-check` 安装的 jscpd v5;项目无需选择版本、提供 executable 或复制默认 options:
12
+
13
+ ```ts
14
+ import { duplicateDetection } from "@zxyycom/vibe-check";
15
+
16
+ const check = duplicateDetection();
17
+ ```
18
+
19
+ ## 参数与默认配置
20
+
21
+ 顶层 `cache`、`codeAreas`、`findingPolicy` 与 `scanner` 都可省略;显式 `codeAreas[areaId]` 只要求提供
22
+ `files` branch。无参调用物化成以下完整 Check options,调用方无需复制:
23
+
24
+ ```ts
25
+ {
26
+ cache: { directory: ".cache/vibe-check", enabled: true },
27
+ codeAreas: {
28
+ project: {
29
+ files: defaultProjectFileSelection,
30
+ findingPolicy: "non-blocking",
31
+ minimumLines: 4,
32
+ minimumTokens: 100
33
+ }
34
+ },
35
+ scanner: {
36
+ command: { kind: "package" }
37
+ }
38
+ }
39
+ ```
40
+
41
+ 这里的 `defaultProjectFileSelection` 是从 package root 公开的深冻结完整基线;constructor 会把同值 files branch 物化到
42
+ 自己的 resolved options,调用方无需复制该对象;完整默认 glob 可直接从该 public value 读取。
43
+
44
+ - 省略整个 `codeAreas` 时建立默认 `project` area。显式 map 必须至少包含一个非空 area id。
45
+ - 每个显式 area 必须提供 `files` branch。`source` 只能是 `"filesystem" | "git-worktree"`,默认 `filesystem`。
46
+ `filesystem` 枚举普通文件且不解释 `.gitignore`;`git-worktree` 使用已跟踪文件和未被 Git 标准忽略规则排除的
47
+ 未跟踪文件。来源不可用时 Check 结算为 `unavailable`,不会切换到另一来源。
48
+ - `include` 与 `exclude` 都按 project-root-relative slash path 的 glob 匹配,exclude 优先。两者可分别省略并使用公开的
49
+ `defaultProjectFileSelection`;显式数组是完整替换值,`include: []` 不选择路径,`exclude: []` 不排除路径。
50
+ - 顶层 `findingPolicy` 只能是 `"blocking" | "non-blocking"`,默认 `non-blocking`;area 可覆盖,省略时继承顶层值。
51
+ - `minimumLines` 与 `minimumTokens` 可省略并分别使用 `4` 和 `100`,显式值必须是正安全整数。
52
+ - `cache.directory` 省略时为 `.cache/vibe-check`,相对路径从 project root 解析;`cache.enabled` 省略时为 `true`。
53
+ - `scanner.command` 省略时为 `{ kind: "package" }`。
54
+ - 未知字段、空 area map、缺失 area `files`、非法阈值或非法 scanner policy 会由 constructor 同步抛出
55
+ `TypeError`。
56
+
57
+ ## 定制区域 policy
58
+
59
+ 调用方只声明要改变的 policy,不需要读取默认 Check。下面两个 area 各自拥有文件范围和阈值;省略的 file fields、
60
+ finding policy 与阈值由 constructor 补齐。只有追加默认数组时才组合公开的 files 基线:
61
+
62
+ ```ts
63
+ import { defaultProjectFileSelection, duplicateDetection } from "@zxyycom/vibe-check";
64
+
65
+ const sourceAndScriptsDuplicateDetection = duplicateDetection({
66
+ codeAreas: {
67
+ source: {
68
+ files: { include: ["src/**/*.ts"] },
69
+ minimumTokens: 20
70
+ },
71
+ scripts: {
72
+ files: {
73
+ ...defaultProjectFileSelection,
74
+ include: ["scripts/**/*.ts"],
75
+ exclude: [...defaultProjectFileSelection.exclude, "scripts/**/*.test.ts"]
76
+ },
77
+ minimumLines: 10,
78
+ minimumTokens: 100
79
+ }
80
+ }
81
+ });
82
+ ```
83
+
84
+ 每个 `codeAreas[id]` 都是该区域文件范围、有效 finding policy 与行数/token 下限的单一事实源。上例的
85
+ `scripts.exclude` 显式保留 common defaults 并追加测试文件;若只写 `["scripts/**/*.test.ts"]`,它会完整替换默认排除数组。
86
+
87
+ ## 定制 jscpd executable
88
+
89
+ 只有项目确实授权另一个可执行文件时才设置 custom command:
90
+
91
+ ```ts
92
+ import { duplicateDetection } from "@zxyycom/vibe-check";
93
+
94
+ const customDuplicateDetection = duplicateDetection({
95
+ scanner: {
96
+ command: {
97
+ kind: "custom",
98
+ executable: "/absolute/path/to/jscpd"
99
+ }
100
+ }
101
+ });
102
+ ```
103
+
104
+ `executable` 必须是已授权、可执行且**直接接受 jscpd CLI 参数**的 command。public scanner policy 只选择 command;
105
+ owning adapter 负责 version probe、exact-path config、JSON report 与 jscpd 的自动 worker policy。实际版本用于区分 cache
106
+ provenance,不要求 custom command 等于 package 当前安装的版本。
107
+
108
+ 需要靠前置参数才能转发到 jscpd 的通用 runtime(例如 `node path/to/jscpd.js`)不是受支持的 custom command;应直接
109
+ 提供 jscpd executable 或一个已授权的专用 wrapper executable。
110
+
111
+ 默认 package command 使用安装包声明并由 package manager 解析的兼容 jscpd v5。package 或 custom command 的实际版本都会
112
+ 隔离 cache;command、config 或 report 不兼容时,Check fail closed 为 `unavailable`,不会把无法完成的扫描伪装成零
113
+ finding。
114
+
115
+ ## 工作原理
116
+
117
+ Check 先按文件 `source` 分组;每种不同来源只枚举一次候选文件,再为各 `codeAreas[id].files` 应用自己的
118
+ `include` / `exclude`,最后把全部路径去重成一个批准的精确范围。一个路径可同时属于多个 area;全部 exact paths 仍
119
+ 一次性交给 jscpd,因此同 area、跨 area 与重叠 area 文件都会互相比较:
120
+
121
+ 1. jscpd 使用所有实际输入 area 中最低的 line 阈值和最低的 token 阈值取得完整候选。
122
+ 2. 每个 raw fragment 的 location path 必须属于本次完整 exact scope;任一路径越界都会拒绝整批 measurement。
123
+ 3. Check 按 location path 恢复它匹配的全部 areas。fragment 的 line count 和 token count 必须分别达到所有涉及 area
124
+ 对应阈值中的最大值,才形成 finding。
125
+
126
+ 例如 `source` 使用 line `3` / token `20`,`scripts` 使用 line `10` / token `100` 时,scanner 使用 line `3` /
127
+ token `20` 取得候选;跨这两个 area 的 8-line / 120-token fragment 和 12-line / 80-token fragment 都会被过滤,只有
128
+ 同时达到 line `10` 与 token `100` 的 fragment 会保留。
129
+
130
+ cache 只保存通过 exact-input 校验的 scanner fragments;无论是否命中 cache,当前 area annotation 与最终 policy filtering
131
+ 都走同一路径。只有 package/custom command identity、实际 jscpd 版本、当前 commit、完整 exact-input fingerprint 和实际
132
+ 影响 scanner 结果的配置均匹配时才会复用;package command identity 不含 consumer 安装目录,custom command identity 使用
133
+ 项目显式提供的 executable。
134
+
135
+ ## 效果与结果
136
+
137
+ 每个可信 finding 都形成 Record,不因 policy 或先前 finding 而省略。若 fragment 涉及多个 areas,只要任一 effective
138
+ `findingPolicy` 为 `blocking`,该 Record 的 `blocking` 就为 `true`。正常 final data 恰为
139
+ `{ findingCount, blockingFindingCount }`;前者等于 Records 数量,后者等于其中 `blocking: true` 的数量。
140
+ `blockingFindingCount > 0` 时 outcome 为 `failed`,否则为 `passed`,所以 passed outcome 可以携带 non-blocking Records。
141
+
142
+ 每个 Record data 使用以下字段:
143
+
144
+ ```ts
145
+ {
146
+ blocking: boolean,
147
+ metric: "duplicate-tokens",
148
+ tokenCount: number,
149
+ lineCount: number,
150
+ codeAreas: string[],
151
+ locations: Array<{ path: string; startLine: number; endLine: number }>
152
+ }
153
+ ```
154
+
155
+ `failed` 的 `blocking-findings` message 与携带 non-blocking Records 的 `passed` 的 `non-blocking-findings` message 都会引导
156
+ 调用方检查本 Check 的 Records。由本 Check 结算的 `unavailable` 会使用对应 `reason.code` 提供 error message;零 finding
157
+ 的 `passed` 与 `not-applicable` 不合成人为提示。
158
+
159
+ 用返回 Check 的 `check.parseData(value)` 或 package root 的 `parseDuplicateDetectionData(value)` 验证 final data。两者返回
160
+ `DuplicateDetectionFinalData`,Record 与不可用原因可分别用 `DuplicateDetectionRecordData` 和
161
+ `DuplicateDetectionUnavailableReasonCode` 标注;authoring / resolved options types 是 `DuplicateDetectionOptions` 与
162
+ `ResolvedDuplicateDetectionOptions`。parser 只适用于 `passed` / `failed` data,shape 或计数不变量不匹配时抛出
163
+ `TypeError`。
164
+
165
+ ## `not-applicable` 与 `unavailable`
166
+
167
+ - 少于两个合格 exact inputs:`not-applicable / no-eligible-input`。
168
+ - constructor 后形成的 resolved options 不符合完整 shape:`unavailable / invalid-options`。
169
+ - 所配置的 filesystem 或 git-worktree 来源无法形成候选快照:`unavailable / source-unavailable`。
170
+ - package/custom command 缺失、version probe 失败或无法形成可识别版本 provenance:
171
+ `unavailable / external-dependency-unavailable`。
172
+ - 已启动 jscpd 但进程执行失败:`unavailable / external-execution-failed`。
173
+ - cache 写入失败:`unavailable / cache-write-failed`。
174
+ - report、fragment 或 exact-input membership 无法形成可信完整结果:`unavailable / external-result-invalid`。
175
+
176
+ 通用 preflight 机制见 [options preflight 与 execution](../api-mechanics.md#options-preflight-与-execution)。
177
+
178
+ ## I/O 与安全边界
179
+
180
+ execution 启动一次本机 jscpd 调用;输入只包含各 `codeAreas[id].files` 批准的 exact paths 去重并集。显式配置
181
+ `scanner.command.kind: "custom"` 表示项目授权执行其中的 executable;所有传入参数由 owning adapter 生成。该 Check
182
+ 不发起网络请求。
183
+
184
+ ## 最小用法
185
+
186
+ ```ts
187
+ import { defineConfig, duplicateDetection, run } from "@zxyycom/vibe-check";
188
+
189
+ const result = await run(defineConfig({ checks: [duplicateDetection()] }));
190
+ ```
191
+
192
+ ## 适用边界
193
+
194
+ 该 Check 负责报告重复片段及其数量;consumer 根据代码语义和架构目标决定是否以及如何重构。它不会自动改写源码,
195
+ 也不会把 token 数量单独解释为重构优先级。
@@ -0,0 +1,229 @@
1
+ # `fileMetrics`
2
+
3
+ 本页完整说明 package consumer 如何构造、配置和读取 `fileMetrics`。package 总入口见
4
+ [README 的随包 Check 概览](../../README.md#随包提供的-check);普通 Check 的 preflight、Run 与结果读取机制见
5
+ [深入 API 机制](../api-mechanics.md)。
6
+
7
+ ## 用途
8
+
9
+ `fileMetrics(options?)` 返回一个普通 `file-metrics` Check。该 Check 使用 SCC 测量各区域所选文件的代码行数,
10
+ 将超过区域策略的文件发布为 supplemental Records,并分别报告 finding 总数与 blocking finding 数量。可选的声明式
11
+ waiver 在完整 finding 集合形成后对账;它不会把路径排除在 SCC 输入之外。
12
+
13
+ 无参调用使用完整默认策略:
14
+
15
+ ```ts
16
+ import { fileMetrics } from "@zxyycom/vibe-check";
17
+
18
+ const check = fileMetrics();
19
+ ```
20
+
21
+ 执行这个 Check 时,project runtime 需要让默认 `scc` command 可用,或在 `scanner.executable` 中选择项目已授权且
22
+ 兼容 SCC 3.7.0 version output 与 CSV contract 的 executable。
23
+
24
+ ## 参数与默认配置
25
+
26
+ 顶层 `codeAreas`、`findingPolicy`、`findingWaivers` 与 `scanner` 都可省略。每个 `codeAreas[areaId]` 同时拥有文件选择和代码行
27
+ 策略,因此不同区域可以选择不同文件并使用不同上限。无参调用物化以下完整、冻结的 Check options:
28
+
29
+ ```ts
30
+ {
31
+ codeAreas: {
32
+ project: {
33
+ files: defaultProjectFileSelection,
34
+ findingPolicy: "non-blocking",
35
+ codeLines: {
36
+ maximum: 360,
37
+ lowDecisionTokenAllowance: {
38
+ maximumCodeLines: 600,
39
+ maximumDecisionTokens: 12
40
+ }
41
+ }
42
+ }
43
+ },
44
+ findingWaivers: [],
45
+ scanner: { executable: "scc" }
46
+ }
47
+ ```
48
+
49
+ 这里的 `defaultProjectFileSelection` 是从 package root 公开的深冻结完整基线;constructor 会把同值 files branch 物化到
50
+ 自己的 resolved options,调用方无需复制该对象;完整默认 glob 可直接从该 public value 读取。
51
+
52
+ ### 字段规则
53
+
54
+ - 省略整个 `codeAreas` 时,constructor 建立默认 `project` 区域。显式 `codeAreas` 必须至少包含一个
55
+ 非空 area ID。
56
+ - 每个显式区域必须提供 `files`。`source` 只能是 `"filesystem" | "git-worktree"`,默认 `filesystem`;filesystem
57
+ 不解释 `.gitignore`,git-worktree 使用已跟踪文件和未被 Git 标准忽略规则排除的未跟踪文件。来源不可用时 Check
58
+ 结算为 `unavailable`,不会切换到另一来源。
59
+ - `include` 与 `exclude` 都按 project-root-relative slash path 的 glob 匹配,exclude 优先。省略时使用公开的
60
+ `defaultProjectFileSelection`;显式数组是完整替换值,`include: []` 不选择路径,`exclude: []` 不排除路径。
61
+ - 顶层 `findingPolicy` 只能是 `"blocking" | "non-blocking"`,默认 `non-blocking`;area 可覆盖,省略时继承顶层值。
62
+ - `findingWaivers` 省略时为 `[]`。每项必须是 `{ identity: { metric: "code-lines", path }, reason }`;`path` 必须已经是
63
+ normalized project-root-relative slash path:非空、不以 `/` 开头、不含 `\\`、Windows drive prefix、空 segment、`.` 或 `..`。
64
+ `reason` 必须非空,同一 `{ metric, path }` 不得重复。它不接受 callback 或 glob:metric 和 path 是该 Check 承诺的稳定
65
+ identity,实际行数与上限仍会随策略变化。
66
+ - 省略 `codeLines` 时使用完整默认代码行策略;`maximum` 与 allowance 内的字段也可分别省略。
67
+ - `maximum` 与 `maximumCodeLines` 必须是正安全整数,`maximumDecisionTokens` 必须是非负安全整数;
68
+ allowance 的 `maximumCodeLines` 必须严格大于同一区域的普通 `maximum`。
69
+ - `scanner.executable` 必须是非空字符串。省略 `scanner` 或 `scanner.executable` 时直接执行 `scc`。
70
+ - 未知字段、空区域 map、缺失 `files` 或非法字段值会让 constructor 同步抛出 `TypeError`。
71
+
72
+ ### 为不同文件配置策略
73
+
74
+ ```ts
75
+ import { defaultProjectFileSelection, fileMetrics } from "@zxyycom/vibe-check";
76
+
77
+ const sourceAndTests = fileMetrics({
78
+ codeAreas: {
79
+ source: {
80
+ files: { include: ["src/**/*.ts"] },
81
+ codeLines: { maximum: 300 }
82
+ },
83
+ tests: {
84
+ files: {
85
+ ...defaultProjectFileSelection,
86
+ exclude: [...defaultProjectFileSelection.exclude, "**/fixtures/**"],
87
+ include: ["test/**/*.ts", "src/**/*.test.ts"]
88
+ },
89
+ codeLines: {
90
+ maximum: 600,
91
+ lowDecisionTokenAllowance: {
92
+ maximumCodeLines: 800,
93
+ maximumDecisionTokens: 20
94
+ }
95
+ }
96
+ }
97
+ }
98
+ });
99
+ ```
100
+
101
+ 本例只覆盖各区域显式给出的字段;省略的文件字段、finding policy 和代码行字段继续使用 package 默认值。`tests` area
102
+ 通过公开的深冻结 `defaultProjectFileSelection` 保留 common exclusions,再追加项目的 fixture 规则。
103
+
104
+ ### 单个区域的有效上限
105
+
106
+ SCC CSV 的 `Complexity` 字段是 file-metrics 使用的 decision-token measurement。Check 按下表为每个文件、
107
+ 每个匹配区域计算一次有效代码行上限:
108
+
109
+ | SCC decision-token measurement | 区域的有效代码行上限 |
110
+ | ------------------------------------------ | -------------------------------------------- |
111
+ | 非 `null` 且不大于 `maximumDecisionTokens` | `lowDecisionTokenAllowance.maximumCodeLines` |
112
+ | `null` 或大于 `maximumDecisionTokens` | `codeLines.maximum` |
113
+
114
+ 只有实际 `codeLines` **严格大于**有效上限时,该区域策略才判定文件超限。
115
+
116
+ ## 工作原理
117
+
118
+ 1. Check 先按文件 `source` 分组;每种不同来源只枚举一次候选文件,再为每个 area 应用自己的 `include` / `exclude`,
119
+ 并保存 path 到全部实际 area IDs 的 membership。
120
+ 2. Check 对全部路径稳定排序、去重,只把这个 exact-path union 交给 SCC 一次。
121
+ 3. 每条 SCC measurement 必须声明属于该 union 的 source path;任一越界 measurement 会拒绝整批结果。
122
+ 4. 对属于多个区域的文件,Check 分别计算各区域的有效代码行上限,并使用其中最小的严格上限:
123
+
124
+ ```text
125
+ file limit = min(effective maximum of every matching area)
126
+ ```
127
+
128
+ 5. 一个超限路径最多发布一条 Record,因此区域重叠不会重复扫描、重复记录或重复计数。Record 保留稳定排序的
129
+ 全部匹配 area IDs;任一 matching area 的 effective finding policy 为 blocking 时,该 Record blocking。
130
+
131
+ ## 定制 SCC executable
132
+
133
+ 只有项目明确授权另一个可执行文件时才配置 `scanner.executable`:
134
+
135
+ ```ts
136
+ const customFileMetrics = fileMetrics({
137
+ scanner: { executable: "/absolute/path/to/scc" }
138
+ });
139
+ ```
140
+
141
+ custom executable 必须直接接受 SCC CLI 参数。public scanner policy 只选择 executable;owning adapter 固定执行以下协议:
142
+
143
+ - availability probe:`--version`
144
+ - measurement:`--by-file --format csv <approved exact paths...>`
145
+ - process timeout:由 adapter 固定,不属于项目策略
146
+
147
+ 需要 prefix arguments 的通用 runtime(例如 `node path/to/tool.js`)不是受支持的直接 command;项目应提供一个已授权的
148
+ 专用 wrapper executable。当前 adapter 只接受 SCC `3.7.0` 的 version output 与对应 CSV header contract。
149
+
150
+ ### 安装兼容 SCC
151
+
152
+ 项目可以用自己的工具管理方式提供 `scc`。本仓库验证的项目拥有安装方式是在 `mise.toml` 固定 Go 与 SCC:
153
+
154
+ ```toml
155
+ [tools]
156
+ go = "1.25"
157
+ "go:github.com/boyter/scc/v3" = { version = "v3.7.0", depends = ["go"] }
158
+ ```
159
+
160
+ 运行 `mise install` 后,用 `scc --version` 确认当前 project runtime 能解析到该命令。若项目使用其它安装方式,只要
161
+ `scanner.executable` 指向已授权、直接接受上述协议并产生 SCC 3.7.0-compatible output 的 executable 即可。
162
+
163
+ ## 效果与结果
164
+
165
+ 每个可信 finding 都形成 Record,不因 policy 或先前 finding 而省略。正常 final data 恰为
166
+ `{ findingCount, blockingFindingCount }`;前者等于 SCC 形成的 finding 数量,后者只计没有被 applied waiver 覆盖的
167
+ `blocking: true` finding。`blockingFindingCount > 0` 时 outcome 为 `failed`,否则为 `passed`,所以 passed outcome 可以携带
168
+ non-blocking 或 waived finding Records。
169
+
170
+ 每个超限路径发布一条 supplemental Record。Record ID 是 path,data shape 为:
171
+
172
+ ```ts
173
+ {
174
+ blocking: boolean;
175
+ codeAreas: string[]; // 稳定排序的全部匹配 area IDs
176
+ codeLines: number;
177
+ limit: number; // 全部匹配区域中的最严格有效上限
178
+ metric: "code-lines";
179
+ path: string;
180
+ waiver?: { reason: string };
181
+ }
182
+ ```
183
+
184
+ 精确命中一项 finding 的 waiver 会保留原 finding Record,并写入 `waiver.reason`、将 `blocking` 设为 `false`,同时附加
185
+ `finding-waived` info message。未命中或命中多项的 waiver 不会隐藏 finding;各自产生一条 `kind: "finding-waiver-audit"`
186
+ Record,带 identity、reason、matchCount 和 `"unused" | "overmatched"` status,并附 warning。这样 stale 或过宽配置可见,
187
+ 而不是悄悄失效或覆盖多个 finding。audit Record ID 使用 `/finding-waiver-audit/<identity.path>`,该 leading-slash domain
188
+ 与正常 finding 的 normalized relative path ID 不相交。
189
+
190
+ `failed` 的 `blocking-findings` message 与携带 non-blocking Records 的 `passed` 的 `non-blocking-findings` message 都会引导
191
+ 调用方检查本 Check 的 Records。由本 Check 结算的 `unavailable` 会使用对应 `reason.code` 提供 error message;没有 finding
192
+ 且没有 waiver audit 时,`passed` 与 `not-applicable` 不合成人为提示。若已配置 waiver,即使 exact-path union 为空,Check
193
+ 仍会对已知空 finding 集合产生 `unused` audit Record 和 warning,同时保持 `not-applicable / no-eligible-input` outcome。
194
+
195
+ 用返回 Check 的 `check.parseData(value)` 或 package root 的 `parseFileMetricsData(value)` 验证 final data。两者返回
196
+ `FileMetricsFinalData`,Record 与不可用原因可分别用 `FileMetricsRecordData` 和
197
+ `FileMetricsUnavailableReasonCode` 标注;authoring / resolved options types 是 `FileMetricsOptions` 与
198
+ `ResolvedFileMetricsOptions`。parser 只适用于 `passed` / `failed` data,不匹配时抛出 `TypeError`。
199
+
200
+ ## `not-applicable` 与 `unavailable`
201
+
202
+ | 阶段或条件 | Check 结果 |
203
+ | ---------------------------------------------------------------- | ----------------------------------------------- |
204
+ | 全部区域的 exact-path union 为空 | `not-applicable / no-eligible-input`;已配置 waiver 仍产生 unused audit |
205
+ | resolved options 不符合完整 closed shape | `unavailable / invalid-options` |
206
+ | 所配置的 filesystem 或 git-worktree 来源无法形成候选集合 | `unavailable / source-unavailable` |
207
+ | SCC command 缺失、version probe 失败或版本不匹配 | `unavailable / external-dependency-unavailable` |
208
+ | SCC measurement process 执行失败 | `unavailable / external-execution-failed` |
209
+ | CSV、measurement scope 或 Record conversion 不能形成可信完整结果 | `unavailable / external-result-invalid` |
210
+
211
+ 合法的 SCC CSV header 后没有 measurement rows 是可信空 measurement,不等同于 command、执行或解析失败。
212
+
213
+ ## I/O 与安全边界
214
+
215
+ execution 只启动本机已授权的 SCC executable,输入仅包含各区域批准的 exact paths 去重并集。该 Check 不发起网络请求,
216
+ 也不把 raw SCC stdout/stderr 直接发布为稳定 Check 或 Record data。
217
+
218
+ ## 最小用法
219
+
220
+ ```ts
221
+ import { defineConfig, fileMetrics, run } from "@zxyycom/vibe-check";
222
+
223
+ const result = await run(defineConfig({ checks: [fileMetrics()] }));
224
+ ```
225
+
226
+ ## 适用边界
227
+
228
+ 该 Check 只评估文件级代码行策略。函数级 NLOC、cyclomatic complexity 与 parameter count 由
229
+ [`functionMetrics`](function-metrics.md) 评估;`fileMetrics` 不格式化、拆分或修改源文件。
@@ -0,0 +1,222 @@
1
+ # `functionMetrics`
2
+
3
+ 返回 [README 的随包 Check 概览](../../README.md#随包提供的-check)。
4
+
5
+ ## 用途
6
+
7
+ `functionMetrics(options?)` 构造一个普通 Check。它使用 Lizard 测量函数 NLOC、cyclomatic complexity 与参数数量,
8
+ 把超过 area limits 的结果保存为 supplemental Records,并让全局默认与 area override 共同决定 finding 是否阻断
9
+ Check。阻断只改变最终 outcome;一次 invocation 仍扫描完整 exact scope 并保留后续 findings。
10
+
11
+ ```ts
12
+ import { functionMetrics } from "@zxyycom/vibe-check";
13
+
14
+ const check = functionMetrics();
15
+ ```
16
+
17
+ 执行这个 Check 时,project runtime 需要让默认 `lizard` command 可用,或在 `scanner.executable` 中选择项目已授权且
18
+ 兼容 Lizard 1.23 version output 与 CSV contract 的 executable。
19
+
20
+ ## 参数与默认配置
21
+
22
+ 顶层 `findingPolicy`、`codeAreas` 与 `scanner` 都可省略;显式 `codeAreas[areaId]` 只要求提供 `files` branch。
23
+ `functionMetrics()` 按下表物化完整、冻结的 resolved options,调用方无需复制默认数组:
24
+
25
+ | Resolved field | 无参默认值 |
26
+ | --- | --- |
27
+ | `codeAreas.project.files.source` | `"filesystem"` |
28
+ | `codeAreas.project.files.include` | 从同一 Check-local Lizard 1.23.0 extension registry 生成;每个官方支持 extension 对应一个大小写不敏感 glob |
29
+ | `codeAreas.project.files.exclude` | detached copy of `defaultProjectFileSelection.exclude` |
30
+ | `codeAreas.project.findingPolicy` | `"non-blocking"` |
31
+ | `codeAreas.project.limits.codeLines` | `{ maximum: 60, lowComplexityAllowance: { maximum: 180, cyclomaticComplexityBelow: 6 } }` |
32
+ | `codeAreas.project.limits.cyclomaticComplexity` | `{ maximum: 12 }` |
33
+ | `codeAreas.project.limits.parameters` | `{ maximum: 6 }` |
34
+ | `scanner` | `{ executable: "lizard" }` |
35
+
36
+ 需要核对当前完整 glob array 时,读取 `functionMetrics().options.codeAreas.project.files.include`;它与 runtime eligibility
37
+ predicate 来自同一 extension registry。source/exclude 沿用公开深冻结基线,include 精准匹配 Lizard 能力。
38
+
39
+ 顶层 `findingPolicy` 只为各 area 提供默认值;每个 resolved area 保存自己的有效 `findingPolicy`。所有 maximum 都是
40
+ 包含等于值的上限:measurement 必须严格大于 limit 才产生 finding。complexity 小于
41
+ `cyclomaticComplexityBelow` 时,function NLOC 使用 allowance maximum;所有 limit 都必须是正安全整数,allowance
42
+ maximum 不得小于普通 code-line maximum。
43
+
44
+ constructor 按字段补默认值。`source` 只能是 `"filesystem" | "git-worktree"`,默认 `filesystem`;filesystem 不解释
45
+ `.gitignore`,git-worktree 使用已跟踪文件和未被 Git 标准忽略规则排除的未跟踪文件。来源不可用时 Check 结算为
46
+ `unavailable`,不会切换到另一来源。`include` 与 `exclude` 都按 project-root-relative slash path 的 glob 匹配,exclude
47
+ 优先。省略 source/exclude 时沿用公开 baseline,省略 include 时使用上述 Lizard-specific globs;显式数组完整替换对应
48
+ 默认值,`include: []` 不选择路径,`exclude: []` 不排除路径。显式组合完整 `defaultProjectFileSelection` 会明确选择
49
+ `**/*`,不受支持的路径因而形成 input-rejection Records。nested limit 字段和 area `findingPolicy` 仍可分别省略并继承
50
+ 各自默认值。
51
+
52
+ ### 区域与阻断政策
53
+
54
+ 顶层 `findingPolicy` 只能是 `"blocking" | "non-blocking"`,省略时为 `"non-blocking"`。显式 `codeAreas` 必须非空,
55
+ 每个非空 area ID 必须声明 `files: {}`;file fields、limits 和 area `findingPolicy` 都可省略并由 constructor 补齐。
56
+
57
+ ```ts
58
+ import { defaultProjectFileSelection, functionMetrics } from "@zxyycom/vibe-check";
59
+
60
+ const metrics = functionMetrics({
61
+ findingPolicy: "non-blocking",
62
+ codeAreas: {
63
+ source: {
64
+ files: { include: ["src/**/*.ts"] },
65
+ findingPolicy: "blocking",
66
+ limits: {
67
+ cyclomaticComplexity: { maximum: 10 },
68
+ parameters: { maximum: 5 }
69
+ }
70
+ },
71
+ tooling: {
72
+ files: {
73
+ ...defaultProjectFileSelection,
74
+ include: ["scripts/**/*.ts"],
75
+ exclude: [...defaultProjectFileSelection.exclude, "scripts/**/*.test.ts"]
76
+ }
77
+ }
78
+ }
79
+ });
80
+ ```
81
+
82
+ 本例中 source finding 会阻断,tooling finding 只形成 evidence。Check 不会在首个 blocking finding 后停止;它仍处理
83
+ 其它函数与 area,然后以完整计数结算。
84
+
85
+ 同一路径匹配多个 area 时,area authoring order 不参与结算:
86
+
87
+ 1. Record 的 `codeAreas` 保存该路径匹配的全部 area IDs,并按文本稳定排序。
88
+ 2. 每项 metric 分别计算所有 matching areas 的适用 maximum,并以其中最小值作为 effective limit。
89
+ 3. 任一 matching area 的 effective `findingPolicy` 为 `"blocking"` 时,该路径上的 finding 就是 blocking;这一判断不取决于
90
+ 哪个 area 提供了最小 limit。
91
+
92
+ ## 定制 Lizard executable
93
+
94
+ public scanner policy 只选择直接接受 Lizard arguments 的 executable:
95
+
96
+ ```ts
97
+ const metrics = functionMetrics({
98
+ scanner: { executable: "/opt/tools/lizard" }
99
+ });
100
+ ```
101
+
102
+ owning adapter 固定执行 `--version` probe,并以 approved exact paths 和 `--csv` 扫描。显式 executable 表示项目授权执行
103
+ 该命令;需要 wrapper 时由项目提供直接接受这套协议的 executable wrapper。不兼容命令会 fail closed 为 unavailable,
104
+ 而不会产生成功空结果。
105
+
106
+ ### 安装兼容 Lizard
107
+
108
+ 项目可以用自己的工具管理方式提供 `lizard`。本仓库验证的项目拥有安装方式是在 `mise.toml` 固定 uv 与 Lizard:
109
+
110
+ ```toml
111
+ [tools]
112
+ uv = "0.11.28"
113
+ "pipx:lizard" = { version = "1.23.0", depends = ["uv"] }
114
+ ```
115
+
116
+ 运行 `mise install` 后,用 `lizard --version` 确认当前 project runtime 能解析到该命令。若项目使用其它安装方式,只要
117
+ `scanner.executable` 指向已授权、直接接受上述协议并产生 Lizard 1.23-compatible output 的 executable 即可。
118
+
119
+ ## 工作原理
120
+
121
+ 1. constructor 关闭 input shape,补齐 files、limits、finding policy 与 scanner defaults,再冻结 resolved options。
122
+ 2. execution 按文件来源分组,每种不同来源只枚举一次候选文件,再按各 area 的 `include` / `exclude` 形成完整 selected
123
+ paths,并以 Lizard extension registry 分成 accepted/rejected。每个 rejected path 只产生一条 Record,并保留全部 matching
124
+ area IDs;accepted paths 形成稳定去重的 exact-input 并集。
125
+ 3. accepted 并集非空时,Lizard adapter 对它执行一次 measurement;parser output 必须完整,且所有 source paths 必须属于
126
+ 本次 exact set,否则整批结果结算为 unavailable,不发布 partial Records。
127
+ 4. 可信 measurements 恢复全部 matching areas,按上一节的 overlap 规则计算 effective limit 与 blocking,再完整形成 Records
128
+ 和 final counts,不因首个 finding 短路。
129
+
130
+ ## 效果与结果
131
+
132
+ 每个超过 effective limit 的 metric 产生一个 metric Record,data 包含:
133
+
134
+ ```ts
135
+ {
136
+ blocking: boolean,
137
+ codeAreas: readonly string[],
138
+ functionName: string,
139
+ limit: number,
140
+ metric: "cyclomatic-complexity" | "function-code-density" | "parameter-count",
141
+ path: string,
142
+ startLine: number,
143
+ value: number
144
+ }
145
+ ```
146
+
147
+ Record metric 与 measurement 的对应关系如下:
148
+
149
+ | `metric` | `value` 的含义 | effective limit 来源 |
150
+ | --- | --- | --- |
151
+ | `cyclomatic-complexity` | Lizard CCN | matching areas 的 `cyclomaticComplexity.maximum` 最小值 |
152
+ | `function-code-density` | function NLOC;该 ID 不表示比例 | matching areas 按各自 allowance 条件计算后的 code-line maximum 最小值 |
153
+ | `parameter-count` | function parameter count | matching areas 的 `parameters.maximum` 最小值 |
154
+
155
+ 每个 rejected selected path 另产生一条 ID 为 `/input-rejected/<path>` 的 Record:
156
+
157
+ ```ts
158
+ {
159
+ blocking: false,
160
+ codeAreas: readonly string[],
161
+ kind: "input-rejected",
162
+ path: string,
163
+ reason: "unsupported-file-type"
164
+ }
165
+ ```
166
+
167
+ `codeAreas` 是该 path 被选中的全部 area IDs,经去重和稳定排序。即使 area policy 为 blocking,这个 Finding 也固定
168
+ non-blocking;它不包含函数或伪造 measurement。
169
+
170
+ 正常 final data 是 `{ findingCount, blockingFindingCount }`。`findingCount` 包含 metric 与 input-rejection Records,
171
+ `blockingFindingCount` 只统计 effective blocking metric findings。后者大于零时 outcome 为 `failed`;只有 non-blocking
172
+ findings 时 outcome 为 `passed`,Records 仍完整保留。
173
+
174
+ `failed` 的 `blocking-findings` message 与携带 non-blocking metric Records 的 `passed` 的 `non-blocking-findings` message
175
+ 都会引导调用方检查本 Check 的 Records;有 rejected input 时另附一条 `input-rejected` warning,只汇总数量,不省略逐路径
176
+ Record。由本 Check 结算的 `unavailable` 会使用对应 `reason.code` 提供 error message;若 rejection Records 已发布,它们与
177
+ 对应 warning 仍保留。零 finding 的 `passed` 与 `not-applicable` 不合成人为提示。
178
+
179
+ 用返回 Check 的 `check.parseData(value)` 或 package root 的 `parseFunctionMetricsData(value)` 验证 final data。两者返回
180
+ `FunctionMetricsFinalData`,Record 与不可用原因可分别用 `FunctionMetricsRecordData` 和
181
+ `FunctionMetricsUnavailableReasonCode` 标注;authoring / resolved options types 是 `FunctionMetricsOptions` 与
182
+ `ResolvedFunctionMetricsOptions`。parser 只适用于 `passed` / `failed` data,不匹配时抛出 `TypeError`。
183
+
184
+ ## `not-applicable` 与 `unavailable`
185
+
186
+ 所有 area 的 selected path 去重并集为空时结算为 `not-applicable / no-eligible-input`。selected 非空但全部被 extension
187
+ registry 拒绝时,不启动 Lizard,直接以带 input-rejection Records、warning 和 final counts 的 `passed` 结算。其它无法形成
188
+ 可信 final data 的边界结算为 `unavailable`:
189
+
190
+ | `reason.code` | 触发边界 | 调用方检查项 |
191
+ | --- | --- | --- |
192
+ | `invalid-options` | constructor 之后被普通 object composition 替换的完整 options 未通过 preflight 或 execution 防御校验 | 对照本页 resolved options,补齐或删除字段 |
193
+ | `source-unavailable` | 所配置的 filesystem 或 git-worktree 来源无法形成候选快照 | 检查 project root、目录读取权限或 Git worktree 状态 |
194
+ | `external-dependency-unavailable` | Lizard executable 不存在、version probe 失败或没有可识别的 version output | 检查 `scanner.executable` 与该命令的 `--version` 行为 |
195
+ | `external-execution-failed` | Lizard scan 无法启动、被 signal 终止或返回非零状态 | 直接运行配置的 executable,检查 exact-path 与 `--csv` 调用 |
196
+ | `external-result-invalid` | CSV、measurement、exact-scope 或 function metric 完整性校验失败 | 检查 wrapper 是否返回 Lizard 1.23-compatible CSV,且没有扩大输入 |
197
+ | `cancelled` | invocation signal 在可观察的工作边界终止本 Check | 检查调用方取消原因;不要把该结果解释为 clean scan |
198
+
199
+ constructor 自身会同步拒绝 unknown、malformed 或 incomplete input,并抛出 `TypeError`;表中的 `invalid-options` 用于
200
+ constructor 返回后又被替换的 resolved options。通用 preflight 语法见
201
+ [options preflight 与 execution](../api-mechanics.md#options-preflight-与-execution)。
202
+
203
+ ## I/O 与安全边界
204
+
205
+ execution 只把各 area files 中 Lizard 1.23.0 官方 reader 支持的 extension exact paths 交给本机 Lizard;匹配大小写不敏感,
206
+ 支持的 extension table 同时生成默认 globs 与 runtime predicate。未被该 table 识别的 Markdown、JSON 等 selected files
207
+ 产生拒绝 Finding,但不交给 Lizard,避免其 C-like fallback 误解析非代码文本;scanner 不接收 project root 重新发现输入。
208
+ 该 Check 的网络 request 数为零。Lizard 收到 accepted exact path 后是否产生函数 row 属于 backend measurement semantics,
209
+ 不能由本 Check 推断为 input rejection。
210
+
211
+ ## 最小用法
212
+
213
+ ```ts
214
+ import { defineConfig, functionMetrics, run } from "@zxyycom/vibe-check";
215
+ const result = await run(defineConfig({ checks: [functionMetrics()] }));
216
+ ```
217
+
218
+ ## 适用边界
219
+
220
+ 该 Check 适用于函数 NLOC、cyclomatic complexity 与 parameter-count policy;文件级 code-line policy 由
221
+ [`fileMetrics`](file-metrics.md) 评估,重复片段由
222
+ [`duplicateDetection`](duplicate-detection.md) 报告。