@zxyycom/vibe-check 0.0.1 → 0.0.2

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 (950) hide show
  1. package/README.md +47 -74
  2. package/dist/esm/cache/cache-json-by-key.mjs +189 -0
  3. package/dist/esm/cache/cache-json-by-key.mjs.map +1 -0
  4. package/dist/esm/check/check.mjs.map +1 -1
  5. package/dist/esm/check/finding-presentation.mjs +40 -0
  6. package/dist/esm/check/finding-presentation.mjs.map +1 -0
  7. package/dist/esm/check/inherited-collection.mjs +1 -1
  8. package/dist/esm/check/inherited-collection.mjs.map +1 -1
  9. package/dist/esm/check-settlement/fact-validation.mjs +17 -23
  10. package/dist/esm/check-settlement/fact-validation.mjs.map +1 -1
  11. package/dist/esm/check-settlement/outcome-normalization.mjs +9 -19
  12. package/dist/esm/check-settlement/outcome-normalization.mjs.map +1 -1
  13. package/dist/esm/check-settlement/reason-shape.mjs +12 -0
  14. package/dist/esm/check-settlement/reason-shape.mjs.map +1 -0
  15. package/dist/esm/check-settlement/record-store.mjs +14 -17
  16. package/dist/esm/check-settlement/record-store.mjs.map +1 -1
  17. package/dist/esm/check-settlement/session.mjs +8 -2
  18. package/dist/esm/check-settlement/session.mjs.map +1 -1
  19. package/dist/esm/data-boundary/closed-values.mjs +16 -0
  20. package/dist/esm/data-boundary/closed-values.mjs.map +1 -1
  21. package/dist/esm/data-boundary/value-shapes.mjs +9 -0
  22. package/dist/esm/data-boundary/value-shapes.mjs.map +1 -1
  23. package/dist/esm/index.mjs +9 -2
  24. package/dist/esm/index.mjs.map +1 -1
  25. package/dist/esm/learned-critical-path/duration-model/bounded-history.mjs +56 -0
  26. package/dist/esm/learned-critical-path/duration-model/bounded-history.mjs.map +1 -0
  27. package/dist/esm/learned-critical-path/duration-model/prediction.mjs +122 -0
  28. package/dist/esm/learned-critical-path/duration-model/prediction.mjs.map +1 -0
  29. package/dist/esm/learned-critical-path/duration-model/preparation.mjs +41 -0
  30. package/dist/esm/learned-critical-path/duration-model/preparation.mjs.map +1 -0
  31. package/dist/esm/learned-critical-path/duration-model/recording.mjs +109 -0
  32. package/dist/esm/learned-critical-path/duration-model/recording.mjs.map +1 -0
  33. package/dist/esm/learned-critical-path/duration-model/storage.mjs +187 -0
  34. package/dist/esm/learned-critical-path/duration-model/storage.mjs.map +1 -0
  35. package/dist/esm/learned-critical-path/selection-layers.mjs +28 -0
  36. package/dist/esm/learned-critical-path/selection-layers.mjs.map +1 -0
  37. package/dist/esm/learned-critical-path/static-decision.mjs +55 -0
  38. package/dist/esm/learned-critical-path/static-decision.mjs.map +1 -0
  39. package/dist/esm/learned-critical-path/strategy.mjs +179 -0
  40. package/dist/esm/learned-critical-path/strategy.mjs.map +1 -0
  41. package/dist/esm/machine-output/v4/atomic-publication.mjs +1 -15
  42. package/dist/esm/machine-output/v4/atomic-publication.mjs.map +1 -1
  43. package/dist/esm/package-checks/code-quality-findings/finding-waiver-authoring.mjs +40 -0
  44. package/dist/esm/package-checks/code-quality-findings/finding-waiver-authoring.mjs.map +1 -0
  45. package/dist/esm/package-checks/code-quality-findings/finding-waiver-evidence.mjs +48 -0
  46. package/dist/esm/package-checks/code-quality-findings/finding-waiver-evidence.mjs.map +1 -0
  47. package/dist/esm/package-checks/code-quality-findings/policy.mjs +20 -0
  48. package/dist/esm/package-checks/code-quality-findings/policy.mjs.map +1 -1
  49. package/dist/esm/package-checks/duplicate-detection/area-policy.mjs +15 -7
  50. package/dist/esm/package-checks/duplicate-detection/area-policy.mjs.map +1 -1
  51. package/dist/esm/package-checks/duplicate-detection/cache/identity.mjs +1 -1
  52. package/dist/esm/package-checks/duplicate-detection/cache/identity.mjs.map +1 -1
  53. package/dist/esm/package-checks/duplicate-detection/default-check.mjs +1 -1
  54. package/dist/esm/package-checks/duplicate-detection/default-check.mjs.map +1 -1
  55. package/dist/esm/package-checks/duplicate-detection/execution.mjs +44 -18
  56. package/dist/esm/package-checks/duplicate-detection/execution.mjs.map +1 -1
  57. package/dist/esm/package-checks/duplicate-detection/finding-messages.mjs +59 -0
  58. package/dist/esm/package-checks/duplicate-detection/finding-messages.mjs.map +1 -0
  59. package/dist/esm/package-checks/duplicate-detection/finding-waiver-identity.mjs +55 -0
  60. package/dist/esm/package-checks/duplicate-detection/finding-waiver-identity.mjs.map +1 -0
  61. package/dist/esm/package-checks/duplicate-detection/jscpd/availability.mjs +1 -1
  62. package/dist/esm/package-checks/duplicate-detection/jscpd/availability.mjs.map +1 -1
  63. package/dist/esm/package-checks/duplicate-detection/jscpd/command-resolution.mjs +1 -1
  64. package/dist/esm/package-checks/duplicate-detection/jscpd/command-resolution.mjs.map +1 -1
  65. package/dist/esm/package-checks/duplicate-detection/jscpd/json-report.mjs +15 -5
  66. package/dist/esm/package-checks/duplicate-detection/jscpd/json-report.mjs.map +1 -1
  67. package/dist/esm/package-checks/duplicate-detection/jscpd/scanner.mjs +5 -4
  68. package/dist/esm/package-checks/duplicate-detection/jscpd/scanner.mjs.map +1 -1
  69. package/dist/esm/package-checks/duplicate-detection/options-resolution.mjs +22 -47
  70. package/dist/esm/package-checks/duplicate-detection/options-resolution.mjs.map +1 -1
  71. package/dist/esm/package-checks/duplicate-detection/options-validation.mjs +20 -25
  72. package/dist/esm/package-checks/duplicate-detection/options-validation.mjs.map +1 -1
  73. package/dist/esm/package-checks/duplicate-detection/options.mjs.map +1 -1
  74. package/dist/esm/package-checks/duplicate-detection/records.mjs +27 -6
  75. package/dist/esm/package-checks/duplicate-detection/records.mjs.map +1 -1
  76. package/dist/esm/package-checks/file-metrics/execution.mjs +10 -17
  77. package/dist/esm/package-checks/file-metrics/execution.mjs.map +1 -1
  78. package/dist/esm/package-checks/file-metrics/finding-messages.mjs +22 -0
  79. package/dist/esm/package-checks/file-metrics/finding-messages.mjs.map +1 -0
  80. package/dist/esm/package-checks/file-metrics/options-resolution.mjs +11 -43
  81. package/dist/esm/package-checks/file-metrics/options-resolution.mjs.map +1 -1
  82. package/dist/esm/package-checks/file-metrics/options-validation.mjs +15 -25
  83. package/dist/esm/package-checks/file-metrics/options-validation.mjs.map +1 -1
  84. package/dist/esm/package-checks/file-metrics/records.mjs +2 -9
  85. package/dist/esm/package-checks/file-metrics/records.mjs.map +1 -1
  86. package/dist/esm/package-checks/file-metrics/scc/availability.mjs +1 -1
  87. package/dist/esm/package-checks/file-metrics/scc/availability.mjs.map +1 -1
  88. package/dist/esm/package-checks/file-metrics/scc/parser.mjs +4 -4
  89. package/dist/esm/package-checks/file-metrics/scc/parser.mjs.map +1 -1
  90. package/dist/esm/package-checks/file-metrics/scc/scanner.mjs +2 -2
  91. package/dist/esm/package-checks/file-metrics/scc/scanner.mjs.map +1 -1
  92. package/dist/esm/package-checks/function-metrics/analysis.mjs +56 -15
  93. package/dist/esm/package-checks/function-metrics/analysis.mjs.map +1 -1
  94. package/dist/esm/package-checks/function-metrics/analyzer/analysis-context.mjs +550 -0
  95. package/dist/esm/package-checks/function-metrics/analyzer/analysis-context.mjs.map +1 -0
  96. package/dist/esm/package-checks/function-metrics/analyzer/analysis-model.mjs +332 -0
  97. package/dist/esm/package-checks/function-metrics/analyzer/analysis-model.mjs.map +1 -0
  98. package/dist/esm/package-checks/function-metrics/analyzer/contracts.mjs +7 -0
  99. package/dist/esm/package-checks/function-metrics/analyzer/contracts.mjs.map +1 -0
  100. package/dist/esm/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.mjs +24 -0
  101. package/dist/esm/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.mjs.map +1 -0
  102. package/dist/esm/package-checks/function-metrics/analyzer/extensions/lizardnd.mjs +113 -0
  103. package/dist/esm/package-checks/function-metrics/analyzer/extensions/lizardnd.mjs.map +1 -0
  104. package/dist/esm/package-checks/function-metrics/analyzer/extensions/protocol.mjs +180 -0
  105. package/dist/esm/package-checks/function-metrics/analyzer/extensions/protocol.mjs.map +1 -0
  106. package/dist/esm/package-checks/function-metrics/analyzer/extensions/registry.mjs +121 -0
  107. package/dist/esm/package-checks/function-metrics/analyzer/extensions/registry.mjs.map +1 -0
  108. package/dist/esm/package-checks/function-metrics/analyzer/pipeline.mjs +217 -0
  109. package/dist/esm/package-checks/function-metrics/analyzer/pipeline.mjs.map +1 -0
  110. package/dist/esm/package-checks/function-metrics/analyzer/port-facade.mjs +96 -0
  111. package/dist/esm/package-checks/function-metrics/analyzer/port-facade.mjs.map +1 -0
  112. package/dist/esm/package-checks/function-metrics/analyzer/reader-registry.mjs +76 -0
  113. package/dist/esm/package-checks/function-metrics/analyzer/reader-registry.mjs.map +1 -0
  114. package/dist/esm/package-checks/function-metrics/analyzer/readers/csharp.mjs +88 -0
  115. package/dist/esm/package-checks/function-metrics/analyzer/readers/csharp.mjs.map +1 -0
  116. package/dist/esm/package-checks/function-metrics/analyzer/readers/erlang.mjs +466 -0
  117. package/dist/esm/package-checks/function-metrics/analyzer/readers/erlang.mjs.map +1 -0
  118. package/dist/esm/package-checks/function-metrics/analyzer/readers/fortran.mjs +289 -0
  119. package/dist/esm/package-checks/function-metrics/analyzer/readers/fortran.mjs.map +1 -0
  120. package/dist/esm/package-checks/function-metrics/analyzer/readers/gdscript.mjs +38 -0
  121. package/dist/esm/package-checks/function-metrics/analyzer/readers/gdscript.mjs.map +1 -0
  122. package/dist/esm/package-checks/function-metrics/analyzer/readers/go.mjs +44 -0
  123. package/dist/esm/package-checks/function-metrics/analyzer/readers/go.mjs.map +1 -0
  124. package/dist/esm/package-checks/function-metrics/analyzer/readers/java-body-states.mjs +113 -0
  125. package/dist/esm/package-checks/function-metrics/analyzer/readers/java-body-states.mjs.map +1 -0
  126. package/dist/esm/package-checks/function-metrics/analyzer/readers/java.mjs +247 -0
  127. package/dist/esm/package-checks/function-metrics/analyzer/readers/java.mjs.map +1 -0
  128. package/dist/esm/package-checks/function-metrics/analyzer/readers/javascript.mjs +16 -0
  129. package/dist/esm/package-checks/function-metrics/analyzer/readers/javascript.mjs.map +1 -0
  130. package/dist/esm/package-checks/function-metrics/analyzer/readers/kotlin.mjs +103 -0
  131. package/dist/esm/package-checks/function-metrics/analyzer/readers/kotlin.mjs.map +1 -0
  132. package/dist/esm/package-checks/function-metrics/analyzer/readers/lua.mjs +55 -0
  133. package/dist/esm/package-checks/function-metrics/analyzer/readers/lua.mjs.map +1 -0
  134. package/dist/esm/package-checks/function-metrics/analyzer/readers/objc.mjs +100 -0
  135. package/dist/esm/package-checks/function-metrics/analyzer/readers/objc.mjs.map +1 -0
  136. package/dist/esm/package-checks/function-metrics/analyzer/readers/perl.mjs +367 -0
  137. package/dist/esm/package-checks/function-metrics/analyzer/readers/perl.mjs.map +1 -0
  138. package/dist/esm/package-checks/function-metrics/analyzer/readers/php-states.mjs +260 -0
  139. package/dist/esm/package-checks/function-metrics/analyzer/readers/php-states.mjs.map +1 -0
  140. package/dist/esm/package-checks/function-metrics/analyzer/readers/php.mjs +53 -0
  141. package/dist/esm/package-checks/function-metrics/analyzer/readers/php.mjs.map +1 -0
  142. package/dist/esm/package-checks/function-metrics/analyzer/readers/plsql.mjs +306 -0
  143. package/dist/esm/package-checks/function-metrics/analyzer/readers/plsql.mjs.map +1 -0
  144. package/dist/esm/package-checks/function-metrics/analyzer/readers/python.mjs +402 -0
  145. package/dist/esm/package-checks/function-metrics/analyzer/readers/python.mjs.map +1 -0
  146. package/dist/esm/package-checks/function-metrics/analyzer/readers/r.mjs +214 -0
  147. package/dist/esm/package-checks/function-metrics/analyzer/readers/r.mjs.map +1 -0
  148. package/dist/esm/package-checks/function-metrics/analyzer/readers/ruby.mjs +75 -0
  149. package/dist/esm/package-checks/function-metrics/analyzer/readers/ruby.mjs.map +1 -0
  150. package/dist/esm/package-checks/function-metrics/analyzer/readers/rust.mjs +32 -0
  151. package/dist/esm/package-checks/function-metrics/analyzer/readers/rust.mjs.map +1 -0
  152. package/dist/esm/package-checks/function-metrics/analyzer/readers/scala.mjs +47 -0
  153. package/dist/esm/package-checks/function-metrics/analyzer/readers/scala.mjs.map +1 -0
  154. package/dist/esm/package-checks/function-metrics/analyzer/readers/solidity.mjs +22 -0
  155. package/dist/esm/package-checks/function-metrics/analyzer/readers/solidity.mjs.map +1 -0
  156. package/dist/esm/package-checks/function-metrics/analyzer/readers/st.mjs +142 -0
  157. package/dist/esm/package-checks/function-metrics/analyzer/readers/st.mjs.map +1 -0
  158. package/dist/esm/package-checks/function-metrics/analyzer/readers/swift.mjs +94 -0
  159. package/dist/esm/package-checks/function-metrics/analyzer/readers/swift.mjs.map +1 -0
  160. package/dist/esm/package-checks/function-metrics/analyzer/readers/tsx.mjs +149 -0
  161. package/dist/esm/package-checks/function-metrics/analyzer/readers/tsx.mjs.map +1 -0
  162. package/dist/esm/package-checks/function-metrics/analyzer/readers/ttcn.mjs +79 -0
  163. package/dist/esm/package-checks/function-metrics/analyzer/readers/ttcn.mjs.map +1 -0
  164. package/dist/esm/package-checks/function-metrics/analyzer/readers/typescript.mjs +606 -0
  165. package/dist/esm/package-checks/function-metrics/analyzer/readers/typescript.mjs.map +1 -0
  166. package/dist/esm/package-checks/function-metrics/analyzer/readers/vue.mjs +31 -0
  167. package/dist/esm/package-checks/function-metrics/analyzer/readers/vue.mjs.map +1 -0
  168. package/dist/esm/package-checks/function-metrics/analyzer/readers/zig.mjs +23 -0
  169. package/dist/esm/package-checks/function-metrics/analyzer/readers/zig.mjs.map +1 -0
  170. package/dist/esm/package-checks/function-metrics/analyzer/shared/clike.mjs +492 -0
  171. package/dist/esm/package-checks/function-metrics/analyzer/shared/clike.mjs.map +1 -0
  172. package/dist/esm/package-checks/function-metrics/analyzer/shared/code-reader.mjs +542 -0
  173. package/dist/esm/package-checks/function-metrics/analyzer/shared/code-reader.mjs.map +1 -0
  174. package/dist/esm/package-checks/function-metrics/analyzer/shared/golike.mjs +141 -0
  175. package/dist/esm/package-checks/function-metrics/analyzer/shared/golike.mjs.map +1 -0
  176. package/dist/esm/package-checks/function-metrics/analyzer/shared/js-style-regex.mjs +62 -0
  177. package/dist/esm/package-checks/function-metrics/analyzer/shared/js-style-regex.mjs.map +1 -0
  178. package/dist/esm/package-checks/function-metrics/analyzer/shared/rubylike.mjs +154 -0
  179. package/dist/esm/package-checks/function-metrics/analyzer/shared/rubylike.mjs.map +1 -0
  180. package/dist/esm/package-checks/function-metrics/analyzer/shared/script-language.mjs +36 -0
  181. package/dist/esm/package-checks/function-metrics/analyzer/shared/script-language.mjs.map +1 -0
  182. package/dist/esm/package-checks/function-metrics/analyzer-adapter.mjs +56 -0
  183. package/dist/esm/package-checks/function-metrics/analyzer-adapter.mjs.map +1 -0
  184. package/dist/esm/package-checks/function-metrics/analyzer-worker-contract.mjs +2 -0
  185. package/dist/esm/package-checks/function-metrics/analyzer-worker-contract.mjs.map +1 -0
  186. package/dist/esm/package-checks/function-metrics/analyzer-worker-port.mjs +108 -0
  187. package/dist/esm/package-checks/function-metrics/analyzer-worker-port.mjs.map +1 -0
  188. package/dist/esm/package-checks/function-metrics/analyzer-worker.mjs +24 -0
  189. package/dist/esm/package-checks/function-metrics/analyzer-worker.mjs.map +1 -0
  190. package/dist/esm/package-checks/function-metrics/constructor.mjs +2 -2
  191. package/dist/esm/package-checks/function-metrics/constructor.mjs.map +1 -1
  192. package/dist/esm/package-checks/function-metrics/execution.mjs +51 -33
  193. package/dist/esm/package-checks/function-metrics/execution.mjs.map +1 -1
  194. package/dist/esm/package-checks/function-metrics/finding-messages.mjs +75 -0
  195. package/dist/esm/package-checks/function-metrics/finding-messages.mjs.map +1 -0
  196. package/dist/esm/package-checks/function-metrics/finding-waiver-identity.mjs +28 -0
  197. package/dist/esm/package-checks/function-metrics/finding-waiver-identity.mjs.map +1 -0
  198. package/dist/esm/package-checks/function-metrics/measurement-model.mjs.map +1 -1
  199. package/dist/esm/package-checks/function-metrics/measurement.mjs +161 -26
  200. package/dist/esm/package-checks/function-metrics/measurement.mjs.map +1 -1
  201. package/dist/esm/package-checks/function-metrics/options-resolution.mjs +30 -63
  202. package/dist/esm/package-checks/function-metrics/options-resolution.mjs.map +1 -1
  203. package/dist/esm/package-checks/function-metrics/options-validation.mjs +27 -32
  204. package/dist/esm/package-checks/function-metrics/options-validation.mjs.map +1 -1
  205. package/dist/esm/package-checks/function-metrics/options.mjs.map +1 -1
  206. package/dist/esm/package-checks/function-metrics/records.mjs +31 -1
  207. package/dist/esm/package-checks/function-metrics/records.mjs.map +1 -1
  208. package/dist/esm/package-checks/function-metrics/target-files.mjs +6 -67
  209. package/dist/esm/package-checks/function-metrics/target-files.mjs.map +1 -1
  210. package/dist/esm/package-checks/{file-metrics/scc → host-environment}/csv.mjs +1 -0
  211. package/dist/esm/package-checks/host-environment/csv.mjs.map +1 -0
  212. package/dist/esm/package-checks/host-environment/git.mjs +1 -1
  213. package/dist/esm/package-checks/host-environment/git.mjs.map +1 -1
  214. package/dist/esm/package-checks/host-environment/process.mjs +5 -0
  215. package/dist/esm/package-checks/host-environment/process.mjs.map +1 -0
  216. package/dist/esm/package-checks/json-schema-validation/final-data.mjs.map +1 -1
  217. package/dist/esm/package-checks/json-schema-validation/options-validation.mjs +15 -17
  218. package/dist/esm/package-checks/json-schema-validation/options-validation.mjs.map +1 -1
  219. package/dist/esm/package-checks/json-schema-validation/options.mjs.map +1 -1
  220. package/dist/esm/package-checks/json-validation/final-data.mjs.map +1 -1
  221. package/dist/esm/package-checks/json-validation/options-validation.mjs +4 -10
  222. package/dist/esm/package-checks/json-validation/options-validation.mjs.map +1 -1
  223. package/dist/esm/package-checks/maintenance-reminders/final-data.mjs.map +1 -1
  224. package/dist/esm/package-checks/markdown-link-validation/default-check.mjs +9 -3
  225. package/dist/esm/package-checks/markdown-link-validation/default-check.mjs.map +1 -1
  226. package/dist/esm/package-checks/markdown-link-validation/execution.mjs +27 -24
  227. package/dist/esm/package-checks/markdown-link-validation/execution.mjs.map +1 -1
  228. package/dist/esm/package-checks/markdown-link-validation/filesystem-probes.mjs +82 -53
  229. package/dist/esm/package-checks/markdown-link-validation/filesystem-probes.mjs.map +1 -1
  230. package/dist/esm/package-checks/markdown-link-validation/final-data.mjs.map +1 -1
  231. package/dist/esm/package-checks/markdown-link-validation/finding-messages.mjs +36 -0
  232. package/dist/esm/package-checks/markdown-link-validation/finding-messages.mjs.map +1 -0
  233. package/dist/esm/package-checks/markdown-link-validation/local-resolution.mjs.map +1 -1
  234. package/dist/esm/package-checks/markdown-link-validation/local-resolver.mjs +2 -2
  235. package/dist/esm/package-checks/markdown-link-validation/local-resolver.mjs.map +1 -1
  236. package/dist/esm/package-checks/markdown-link-validation/options-resolution.mjs +26 -4
  237. package/dist/esm/package-checks/markdown-link-validation/options-resolution.mjs.map +1 -1
  238. package/dist/esm/package-checks/markdown-link-validation/options-validation.mjs +24 -11
  239. package/dist/esm/package-checks/markdown-link-validation/options-validation.mjs.map +1 -1
  240. package/dist/esm/package-checks/markdown-link-validation/options.mjs.map +1 -1
  241. package/dist/esm/package-checks/markdown-link-validation/parse-facts-cache-payload.mjs +185 -0
  242. package/dist/esm/package-checks/markdown-link-validation/parse-facts-cache-payload.mjs.map +1 -0
  243. package/dist/esm/package-checks/markdown-link-validation/parse-facts-cache.mjs +131 -0
  244. package/dist/esm/package-checks/markdown-link-validation/parse-facts-cache.mjs.map +1 -0
  245. package/dist/esm/package-checks/markdown-link-validation/resolver-engine.mjs +58 -57
  246. package/dist/esm/package-checks/markdown-link-validation/resolver-engine.mjs.map +1 -1
  247. package/dist/esm/package-checks/markdown-link-validation/source-reader.mjs +54 -0
  248. package/dist/esm/package-checks/markdown-link-validation/source-reader.mjs.map +1 -0
  249. package/dist/esm/package-checks/markdown-link-validation/unavailable-reasons.mjs +16 -0
  250. package/dist/esm/package-checks/markdown-link-validation/unavailable-reasons.mjs.map +1 -0
  251. package/dist/esm/package-checks/project-files/collection.mjs +1 -1
  252. package/dist/esm/package-checks/project-files/collection.mjs.map +1 -1
  253. package/dist/esm/package-checks/project-files/configuration.mjs +2 -10
  254. package/dist/esm/package-checks/project-files/configuration.mjs.map +1 -1
  255. package/dist/esm/package-checks/project-files/gitlink-revision.mjs +1 -1
  256. package/dist/esm/package-checks/project-files/gitlink-revision.mjs.map +1 -1
  257. package/dist/esm/package-checks/project-files/gitlink-worktree.mjs +1 -1
  258. package/dist/esm/package-checks/project-files/gitlink-worktree.mjs.map +1 -1
  259. package/dist/esm/package-checks/project-files/public-collection.mjs +56 -0
  260. package/dist/esm/package-checks/project-files/public-collection.mjs.map +1 -0
  261. package/dist/esm/package-checks/project-files/revision-worktree-files.mjs +1 -1
  262. package/dist/esm/package-checks/project-files/revision-worktree-files.mjs.map +1 -1
  263. package/dist/esm/package-checks/secret-detection/classification.mjs +15 -0
  264. package/dist/esm/package-checks/secret-detection/classification.mjs.map +1 -0
  265. package/dist/esm/package-checks/secret-detection/default-check.mjs +39 -0
  266. package/dist/esm/package-checks/secret-detection/default-check.mjs.map +1 -0
  267. package/dist/esm/package-checks/secret-detection/execution.mjs +172 -0
  268. package/dist/esm/package-checks/secret-detection/execution.mjs.map +1 -0
  269. package/dist/esm/package-checks/secret-detection/final-data.mjs +33 -0
  270. package/dist/esm/package-checks/secret-detection/final-data.mjs.map +1 -0
  271. package/dist/esm/package-checks/secret-detection/finding-waiver-identity.mjs +30 -0
  272. package/dist/esm/package-checks/secret-detection/finding-waiver-identity.mjs.map +1 -0
  273. package/dist/esm/package-checks/secret-detection/input-preparation.mjs +153 -0
  274. package/dist/esm/package-checks/secret-detection/input-preparation.mjs.map +1 -0
  275. package/dist/esm/package-checks/secret-detection/options-resolution.mjs +40 -0
  276. package/dist/esm/package-checks/secret-detection/options-resolution.mjs.map +1 -0
  277. package/dist/esm/package-checks/secret-detection/options-validation.mjs +22 -0
  278. package/dist/esm/package-checks/secret-detection/options-validation.mjs.map +1 -0
  279. package/dist/esm/package-checks/secret-detection/options.mjs +2 -0
  280. package/dist/esm/package-checks/secret-detection/options.mjs.map +1 -0
  281. package/dist/esm/package-checks/secret-detection/records.mjs +31 -0
  282. package/dist/esm/package-checks/secret-detection/records.mjs.map +1 -0
  283. package/dist/esm/package-checks/secret-detection/secretlint/adapter.mjs +85 -0
  284. package/dist/esm/package-checks/secret-detection/secretlint/adapter.mjs.map +1 -0
  285. package/dist/esm/project-definition/check-tree/authoring.mjs +12 -172
  286. package/dist/esm/project-definition/check-tree/authoring.mjs.map +1 -1
  287. package/dist/esm/project-definition/check-tree/check-fields-authoring.mjs +171 -0
  288. package/dist/esm/project-definition/check-tree/check-fields-authoring.mjs.map +1 -0
  289. package/dist/esm/project-definition/check-tree/collection-authoring.mjs +16 -0
  290. package/dist/esm/project-definition/check-tree/collection-authoring.mjs.map +1 -0
  291. package/dist/esm/project-definition/check-tree/materialization.mjs +9 -1
  292. package/dist/esm/project-definition/check-tree/materialization.mjs.map +1 -1
  293. package/dist/esm/project-definition/check-tree/resolution.mjs +45 -13
  294. package/dist/esm/project-definition/check-tree/resolution.mjs.map +1 -1
  295. package/dist/esm/project-definition/check-tree/scheduling-authoring.mjs +73 -0
  296. package/dist/esm/project-definition/check-tree/scheduling-authoring.mjs.map +1 -0
  297. package/dist/esm/project-definition/declarative-snapshot.mjs +73 -0
  298. package/dist/esm/project-definition/declarative-snapshot.mjs.map +1 -0
  299. package/dist/esm/project-definition/output-defaults.mjs +18 -1
  300. package/dist/esm/project-definition/output-defaults.mjs.map +1 -1
  301. package/dist/esm/project-definition/output-validation.mjs +15 -15
  302. package/dist/esm/project-definition/output-validation.mjs.map +1 -1
  303. package/dist/esm/project-definition/progress-rendering-output.mjs +52 -0
  304. package/dist/esm/project-definition/progress-rendering-output.mjs.map +1 -0
  305. package/dist/esm/project-definition/project-definition-validation.mjs +100 -16
  306. package/dist/esm/project-definition/project-definition-validation.mjs.map +1 -1
  307. package/dist/esm/project-definition/project-definition.mjs +52 -47
  308. package/dist/esm/project-definition/project-definition.mjs.map +1 -1
  309. package/dist/esm/project-definition/resource-unit-mapping.mjs +21 -0
  310. package/dist/esm/project-definition/resource-unit-mapping.mjs.map +1 -0
  311. package/dist/esm/project-definition/scheduler-policy.mjs +2 -0
  312. package/dist/esm/project-definition/scheduler-policy.mjs.map +1 -0
  313. package/dist/esm/project-run/admission-strategy-provider/custom-strategy-preparation.mjs +54 -0
  314. package/dist/esm/project-run/admission-strategy-provider/custom-strategy-preparation.mjs.map +1 -0
  315. package/dist/esm/project-run/admission-strategy-provider/prepared-admission-strategy.mjs +2 -0
  316. package/dist/esm/project-run/admission-strategy-provider/prepared-admission-strategy.mjs.map +1 -0
  317. package/dist/esm/project-run/admission-strategy-provider/provider.mjs +23 -0
  318. package/dist/esm/project-run/admission-strategy-provider/provider.mjs.map +1 -0
  319. package/dist/esm/project-run/aggregation.mjs +7 -5
  320. package/dist/esm/project-run/aggregation.mjs.map +1 -1
  321. package/dist/esm/project-run/check-execution/callback.mjs +35 -8
  322. package/dist/esm/project-run/check-execution/callback.mjs.map +1 -1
  323. package/dist/esm/project-run/check-execution/console-capture.mjs +220 -0
  324. package/dist/esm/project-run/check-execution/console-capture.mjs.map +1 -0
  325. package/dist/esm/project-run/check-execution/dependencies.mjs +21 -3
  326. package/dist/esm/project-run/check-execution/dependencies.mjs.map +1 -1
  327. package/dist/esm/project-run/check-execution/execution-finalization.mjs +54 -13
  328. package/dist/esm/project-run/check-execution/execution-finalization.mjs.map +1 -1
  329. package/dist/esm/project-run/check-execution/execution-settlement.mjs +13 -9
  330. package/dist/esm/project-run/check-execution/execution-settlement.mjs.map +1 -1
  331. package/dist/esm/project-run/check-execution/flag-controls.mjs +87 -0
  332. package/dist/esm/project-run/check-execution/flag-controls.mjs.map +1 -0
  333. package/dist/esm/project-run/check-execution/lifecycle.mjs +2 -0
  334. package/dist/esm/project-run/check-execution/lifecycle.mjs.map +1 -0
  335. package/dist/esm/project-run/check-execution/messages.mjs +5 -0
  336. package/dist/esm/project-run/check-execution/messages.mjs.map +1 -1
  337. package/dist/esm/project-run/check-execution/plan.mjs +9 -5
  338. package/dist/esm/project-run/check-execution/plan.mjs.map +1 -1
  339. package/dist/esm/project-run/check-execution/preflight.mjs +18 -32
  340. package/dist/esm/project-run/check-execution/preflight.mjs.map +1 -1
  341. package/dist/esm/project-run/check-execution/resolved-checks.mjs +100 -58
  342. package/dist/esm/project-run/check-execution/resolved-checks.mjs.map +1 -1
  343. package/dist/esm/project-run/check-execution/resolved-execution-result.mjs +2 -0
  344. package/dist/esm/project-run/check-execution/resolved-execution-result.mjs.map +1 -0
  345. package/dist/esm/project-run/{completion.mjs → completion/completion.mjs} +16 -38
  346. package/dist/esm/project-run/completion/completion.mjs.map +1 -0
  347. package/dist/esm/project-run/{machine-publication.mjs → completion/machine-publication.mjs} +1 -1
  348. package/dist/esm/project-run/completion/machine-publication.mjs.map +1 -0
  349. package/dist/esm/project-run/completion/result-resolver.mjs +36 -0
  350. package/dist/esm/project-run/completion/result-resolver.mjs.map +1 -0
  351. package/dist/esm/project-run/controls/contract.mjs.map +1 -1
  352. package/dist/esm/project-run/controls/outputs-override-validation.mjs +67 -47
  353. package/dist/esm/project-run/controls/outputs-override-validation.mjs.map +1 -1
  354. package/dist/esm/project-run/controls/validation-result.mjs.map +1 -1
  355. package/dist/esm/project-run/controls/validation.mjs +75 -11
  356. package/dist/esm/project-run/controls/validation.mjs.map +1 -1
  357. package/dist/esm/project-run/diagnostic-logging/logger.mjs +100 -161
  358. package/dist/esm/project-run/diagnostic-logging/logger.mjs.map +1 -1
  359. package/dist/esm/project-run/diagnostic-logging/observation-rendering.mjs +159 -0
  360. package/dist/esm/project-run/diagnostic-logging/observation-rendering.mjs.map +1 -0
  361. package/dist/esm/project-run/invocation/candidate.mjs +61 -0
  362. package/dist/esm/project-run/invocation/candidate.mjs.map +1 -0
  363. package/dist/esm/project-run/invocation/creation.mjs +79 -0
  364. package/dist/esm/project-run/invocation/creation.mjs.map +1 -0
  365. package/dist/esm/project-run/invocation/paths.mjs +77 -0
  366. package/dist/esm/project-run/invocation/paths.mjs.map +1 -0
  367. package/dist/esm/project-run/invocation/progress.mjs +30 -0
  368. package/dist/esm/project-run/invocation/progress.mjs.map +1 -0
  369. package/dist/esm/project-run/{invocation.mjs → invocation/run.mjs} +78 -92
  370. package/dist/esm/project-run/invocation/run.mjs.map +1 -0
  371. package/dist/esm/project-run/invocation/scheduler.mjs +57 -0
  372. package/dist/esm/project-run/invocation/scheduler.mjs.map +1 -0
  373. package/dist/esm/project-run/{output-configuration.mjs → outputs/configuration.mjs} +3 -2
  374. package/dist/esm/project-run/outputs/configuration.mjs.map +1 -0
  375. package/dist/esm/project-run/outputs/status.mjs +105 -0
  376. package/dist/esm/project-run/outputs/status.mjs.map +1 -0
  377. package/dist/esm/project-run/progress-rendering/presentation.mjs +112 -18
  378. package/dist/esm/project-run/progress-rendering/presentation.mjs.map +1 -1
  379. package/dist/esm/project-run/progress-rendering/renderer-formatting.mjs +108 -19
  380. package/dist/esm/project-run/progress-rendering/renderer-formatting.mjs.map +1 -1
  381. package/dist/esm/project-run/progress-rendering/renderer-lifecycle.mjs +30 -4
  382. package/dist/esm/project-run/progress-rendering/renderer-lifecycle.mjs.map +1 -1
  383. package/dist/esm/project-run/progress-rendering/renderer.mjs +5 -2
  384. package/dist/esm/project-run/progress-rendering/renderer.mjs.map +1 -1
  385. package/dist/esm/project-run/project-context.mjs +1 -1
  386. package/dist/esm/project-run/project-context.mjs.map +1 -1
  387. package/dist/esm/project-run/result.mjs +2 -0
  388. package/dist/esm/project-run/result.mjs.map +1 -1
  389. package/dist/esm/project-run/run.mjs +1 -1
  390. package/dist/esm/project-run/run.mjs.map +1 -1
  391. package/dist/esm/project-run/task-scheduler/admission-core/compiled-graph.mjs +166 -0
  392. package/dist/esm/project-run/task-scheduler/admission-core/compiled-graph.mjs.map +1 -0
  393. package/dist/esm/project-run/task-scheduler/admission-core/core.mjs +163 -0
  394. package/dist/esm/project-run/task-scheduler/admission-core/core.mjs.map +1 -0
  395. package/dist/esm/project-run/task-scheduler/admission-core/input.mjs +119 -0
  396. package/dist/esm/project-run/task-scheduler/admission-core/input.mjs.map +1 -0
  397. package/dist/esm/project-run/task-scheduler/admission-core/projection.mjs +124 -0
  398. package/dist/esm/project-run/task-scheduler/admission-core/projection.mjs.map +1 -0
  399. package/dist/esm/project-run/task-scheduler/admission-core/selection-index.mjs +99 -0
  400. package/dist/esm/project-run/task-scheduler/admission-core/selection-index.mjs.map +1 -0
  401. package/dist/esm/project-run/task-scheduler/admission-core/selection-query.mjs +198 -0
  402. package/dist/esm/project-run/task-scheduler/admission-core/selection-query.mjs.map +1 -0
  403. package/dist/esm/project-run/task-scheduler/admission-core/selection-seed.mjs +151 -0
  404. package/dist/esm/project-run/task-scheduler/admission-core/selection-seed.mjs.map +1 -0
  405. package/dist/esm/project-run/task-scheduler/admission-core/selection-transition.mjs +121 -0
  406. package/dist/esm/project-run/task-scheduler/admission-core/selection-transition.mjs.map +1 -0
  407. package/dist/esm/project-run/task-scheduler/admission-core/selection.mjs +65 -0
  408. package/dist/esm/project-run/task-scheduler/admission-core/selection.mjs.map +1 -0
  409. package/dist/esm/project-run/task-scheduler/admission-scope-layers.mjs +25 -0
  410. package/dist/esm/project-run/task-scheduler/admission-scope-layers.mjs.map +1 -0
  411. package/dist/esm/project-run/task-scheduler/admission-selection-policy.mjs +55 -0
  412. package/dist/esm/project-run/task-scheduler/admission-selection-policy.mjs.map +1 -0
  413. package/dist/esm/project-run/task-scheduler/critical-path-ranking.mjs +46 -0
  414. package/dist/esm/project-run/task-scheduler/critical-path-ranking.mjs.map +1 -0
  415. package/dist/esm/project-run/task-scheduler/custom-admission-policy.mjs +110 -0
  416. package/dist/esm/project-run/task-scheduler/custom-admission-policy.mjs.map +1 -0
  417. package/dist/esm/project-run/task-scheduler/execution-state.mjs +34 -5
  418. package/dist/esm/project-run/task-scheduler/execution-state.mjs.map +1 -1
  419. package/dist/esm/project-run/task-scheduler/forced-block-effect-replay.mjs +46 -0
  420. package/dist/esm/project-run/task-scheduler/forced-block-effect-replay.mjs.map +1 -0
  421. package/dist/esm/project-run/task-scheduler/graph-validation.mjs +54 -26
  422. package/dist/esm/project-run/task-scheduler/graph-validation.mjs.map +1 -1
  423. package/dist/esm/project-run/task-scheduler/graph.mjs +79 -3
  424. package/dist/esm/project-run/task-scheduler/graph.mjs.map +1 -1
  425. package/dist/esm/project-run/task-scheduler/measurement/diagnostics.mjs +207 -0
  426. package/dist/esm/project-run/task-scheduler/measurement/diagnostics.mjs.map +1 -0
  427. package/dist/esm/project-run/task-scheduler/measurement/integrals.mjs +116 -0
  428. package/dist/esm/project-run/task-scheduler/measurement/integrals.mjs.map +1 -0
  429. package/dist/esm/project-run/task-scheduler/measurement/policy.mjs +67 -0
  430. package/dist/esm/project-run/task-scheduler/measurement/policy.mjs.map +1 -0
  431. package/dist/esm/project-run/task-scheduler/measurement/summary.mjs +123 -0
  432. package/dist/esm/project-run/task-scheduler/measurement/summary.mjs.map +1 -0
  433. package/dist/esm/project-run/task-scheduler/measurement/timing.mjs +158 -0
  434. package/dist/esm/project-run/task-scheduler/measurement/timing.mjs.map +1 -0
  435. package/dist/esm/project-run/task-scheduler/scheduler-admission-decision.mjs +90 -62
  436. package/dist/esm/project-run/task-scheduler/scheduler-admission-decision.mjs.map +1 -1
  437. package/dist/esm/project-run/task-scheduler/scheduler-blocker-summary.mjs +20 -6
  438. package/dist/esm/project-run/task-scheduler/scheduler-blocker-summary.mjs.map +1 -1
  439. package/dist/esm/project-run/task-scheduler/scheduler-decision-inspection.mjs +5 -105
  440. package/dist/esm/project-run/task-scheduler/scheduler-decision-inspection.mjs.map +1 -1
  441. package/dist/esm/project-run/task-scheduler/scheduler-decision-model.mjs +0 -9
  442. package/dist/esm/project-run/task-scheduler/scheduler-decision-model.mjs.map +1 -1
  443. package/dist/esm/project-run/task-scheduler/scheduler-decision.mjs +48 -28
  444. package/dist/esm/project-run/task-scheduler/scheduler-decision.mjs.map +1 -1
  445. package/dist/esm/project-run/task-scheduler/scheduler-observation.mjs +89 -0
  446. package/dist/esm/project-run/task-scheduler/scheduler-observation.mjs.map +1 -0
  447. package/dist/esm/project-run/task-scheduler/scheduler-task-lifecycle.mjs +94 -0
  448. package/dist/esm/project-run/task-scheduler/scheduler-task-lifecycle.mjs.map +1 -0
  449. package/dist/esm/project-run/task-scheduler/scheduler-terminal-measurement.mjs +66 -0
  450. package/dist/esm/project-run/task-scheduler/scheduler-terminal-measurement.mjs.map +1 -0
  451. package/dist/esm/project-run/task-scheduler/scheduler.mjs +171 -114
  452. package/dist/esm/project-run/task-scheduler/scheduler.mjs.map +1 -1
  453. package/docs/api-mechanics.md +64 -137
  454. package/docs/changelog.md +157 -0
  455. package/docs/checks/duplicate-detection.md +111 -59
  456. package/docs/checks/file-metrics.md +46 -43
  457. package/docs/checks/function-metrics.md +100 -163
  458. package/docs/checks/json-schema-validation.md +43 -36
  459. package/docs/checks/json-validation.md +38 -25
  460. package/docs/checks/maintenance-reminders.md +41 -29
  461. package/docs/checks/markdown-link-validation.md +82 -54
  462. package/docs/checks/secret-detection.md +129 -0
  463. package/docs/examples/artifacts/mixed-outcomes/definition.ts +5 -5
  464. package/docs/guides/cache-results.md +63 -0
  465. package/docs/guides/callbacks.md +34 -0
  466. package/docs/guides/check-dependencies.md +121 -0
  467. package/docs/guides/collecting-project-files.md +59 -0
  468. package/docs/guides/extending-check-lifecycle.md +112 -0
  469. package/docs/guides/finding-waivers.md +45 -0
  470. package/docs/guides/learned-scheduling.md +83 -0
  471. package/docs/guides/presenting-findings.md +54 -0
  472. package/docs/guides/run-outputs.md +145 -0
  473. package/docs/guides/scheduling.md +208 -0
  474. package/docs/guides/simulating-admission.md +55 -0
  475. package/docs/output.md +11 -20
  476. package/licenses/Lizard-1.24.0-MIT.txt +30 -0
  477. package/{third-party-licenses/momoa-3.3.12-LICENSE → licenses/Lizard-1.24.0-lizard.py-Apache-2.0.txt} +1 -0
  478. package/licenses/Pygments-2.18.0-BSD-2-Clause.txt +25 -0
  479. package/licenses/analyzer-translations-NOTICE.md +24 -0
  480. package/licenses/lizard-1.24.0-provenance.json +957 -0
  481. package/package.json +18 -6
  482. package/src/cache/cache-json-by-key.ts +304 -0
  483. package/src/check/check.ts +67 -17
  484. package/src/check/finding-presentation.ts +67 -0
  485. package/src/check/inherited-collection.ts +1 -1
  486. package/src/check-settlement/fact-validation.ts +29 -39
  487. package/src/check-settlement/outcome-normalization.ts +17 -35
  488. package/src/check-settlement/reason-shape.ts +20 -0
  489. package/src/check-settlement/record-store.ts +18 -15
  490. package/src/check-settlement/session.ts +12 -3
  491. package/src/data-boundary/closed-values.ts +29 -0
  492. package/src/data-boundary/value-shapes.ts +12 -0
  493. package/src/index.ts +70 -2
  494. package/src/learned-critical-path/duration-model/bounded-history.ts +108 -0
  495. package/src/learned-critical-path/duration-model/prediction.ts +181 -0
  496. package/src/learned-critical-path/duration-model/preparation.ts +77 -0
  497. package/src/learned-critical-path/duration-model/recording.ts +208 -0
  498. package/src/learned-critical-path/duration-model/storage.ts +252 -0
  499. package/src/learned-critical-path/selection-layers.ts +72 -0
  500. package/src/learned-critical-path/static-decision.ts +105 -0
  501. package/src/learned-critical-path/strategy.ts +299 -0
  502. package/src/machine-output/v4/atomic-publication.ts +1 -16
  503. package/src/package-checks/code-quality-findings/finding-waiver-authoring.ts +46 -0
  504. package/src/package-checks/code-quality-findings/finding-waiver-evidence.ts +95 -0
  505. package/src/package-checks/code-quality-findings/policy.ts +23 -0
  506. package/src/package-checks/duplicate-detection/area-policy.ts +24 -13
  507. package/src/package-checks/duplicate-detection/cache/identity.ts +1 -1
  508. package/src/package-checks/duplicate-detection/default-check.ts +1 -1
  509. package/src/package-checks/duplicate-detection/execution.ts +82 -22
  510. package/src/package-checks/duplicate-detection/finding-messages.ts +75 -0
  511. package/src/package-checks/duplicate-detection/finding-waiver-identity.ts +68 -0
  512. package/src/package-checks/duplicate-detection/jscpd/availability.ts +1 -1
  513. package/src/package-checks/duplicate-detection/jscpd/command-resolution.ts +1 -1
  514. package/src/package-checks/duplicate-detection/jscpd/json-report.ts +24 -5
  515. package/src/package-checks/duplicate-detection/jscpd/scanner.ts +6 -7
  516. package/src/package-checks/duplicate-detection/options-resolution.ts +32 -57
  517. package/src/package-checks/duplicate-detection/options-validation.ts +23 -31
  518. package/src/package-checks/duplicate-detection/options.ts +21 -1
  519. package/src/package-checks/duplicate-detection/records.ts +65 -12
  520. package/src/package-checks/file-metrics/execution.ts +16 -17
  521. package/src/package-checks/file-metrics/finding-messages.ts +29 -0
  522. package/src/package-checks/file-metrics/options-resolution.ts +19 -52
  523. package/src/package-checks/file-metrics/options-validation.ts +23 -32
  524. package/src/package-checks/file-metrics/records.ts +11 -23
  525. package/src/package-checks/file-metrics/scc/availability.ts +1 -1
  526. package/src/package-checks/file-metrics/scc/parser.ts +4 -4
  527. package/src/package-checks/file-metrics/scc/scanner.ts +2 -2
  528. package/src/package-checks/function-metrics/analysis.ts +76 -21
  529. package/src/package-checks/function-metrics/analyzer/analysis-context.ts +749 -0
  530. package/src/package-checks/function-metrics/analyzer/analysis-model.ts +421 -0
  531. package/src/package-checks/function-metrics/analyzer/contracts.ts +54 -0
  532. package/src/package-checks/function-metrics/analyzer/extension-output.ts +261 -0
  533. package/src/package-checks/function-metrics/analyzer/extensions/extension-base.ts +33 -0
  534. package/src/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.ts +27 -0
  535. package/src/package-checks/function-metrics/analyzer/extensions/lizardnd.ts +144 -0
  536. package/src/package-checks/function-metrics/analyzer/extensions/protocol.ts +345 -0
  537. package/src/package-checks/function-metrics/analyzer/extensions/registry.ts +157 -0
  538. package/src/package-checks/function-metrics/analyzer/pipeline.ts +311 -0
  539. package/src/package-checks/function-metrics/analyzer/port-facade.ts +142 -0
  540. package/src/package-checks/function-metrics/analyzer/reader-registry.ts +84 -0
  541. package/src/package-checks/function-metrics/analyzer/readers/csharp.ts +110 -0
  542. package/src/package-checks/function-metrics/analyzer/readers/erlang.ts +501 -0
  543. package/src/package-checks/function-metrics/analyzer/readers/fortran.ts +294 -0
  544. package/src/package-checks/function-metrics/analyzer/readers/gdscript.ts +42 -0
  545. package/src/package-checks/function-metrics/analyzer/readers/go.ts +53 -0
  546. package/src/package-checks/function-metrics/analyzer/readers/java-body-states.ts +141 -0
  547. package/src/package-checks/function-metrics/analyzer/readers/java.ts +270 -0
  548. package/src/package-checks/function-metrics/analyzer/readers/javascript.ts +19 -0
  549. package/src/package-checks/function-metrics/analyzer/readers/kotlin.ts +120 -0
  550. package/src/package-checks/function-metrics/analyzer/readers/lua.ts +68 -0
  551. package/src/package-checks/function-metrics/analyzer/readers/objc.ts +107 -0
  552. package/src/package-checks/function-metrics/analyzer/readers/perl.ts +340 -0
  553. package/src/package-checks/function-metrics/analyzer/readers/php-states.ts +246 -0
  554. package/src/package-checks/function-metrics/analyzer/readers/php.ts +63 -0
  555. package/src/package-checks/function-metrics/analyzer/readers/plsql.ts +306 -0
  556. package/src/package-checks/function-metrics/analyzer/readers/python.ts +431 -0
  557. package/src/package-checks/function-metrics/analyzer/readers/r.ts +234 -0
  558. package/src/package-checks/function-metrics/analyzer/readers/ruby.ts +88 -0
  559. package/src/package-checks/function-metrics/analyzer/readers/rust.ts +47 -0
  560. package/src/package-checks/function-metrics/analyzer/readers/scala.ts +60 -0
  561. package/src/package-checks/function-metrics/analyzer/readers/solidity.ts +32 -0
  562. package/src/package-checks/function-metrics/analyzer/readers/st.ts +161 -0
  563. package/src/package-checks/function-metrics/analyzer/readers/swift.ts +116 -0
  564. package/src/package-checks/function-metrics/analyzer/readers/tsx.ts +165 -0
  565. package/src/package-checks/function-metrics/analyzer/readers/ttcn.ts +90 -0
  566. package/src/package-checks/function-metrics/analyzer/readers/typescript.ts +593 -0
  567. package/src/package-checks/function-metrics/analyzer/readers/vue.ts +43 -0
  568. package/src/package-checks/function-metrics/analyzer/readers/zig.ts +35 -0
  569. package/src/package-checks/function-metrics/analyzer/shared/clike.ts +541 -0
  570. package/src/package-checks/function-metrics/analyzer/shared/code-reader.ts +682 -0
  571. package/src/package-checks/function-metrics/analyzer/shared/golike.ts +143 -0
  572. package/src/package-checks/function-metrics/analyzer/shared/js-style-regex.ts +75 -0
  573. package/src/package-checks/function-metrics/analyzer/shared/rubylike.ts +161 -0
  574. package/src/package-checks/function-metrics/analyzer/shared/script-language.ts +50 -0
  575. package/src/package-checks/function-metrics/analyzer-adapter.ts +84 -0
  576. package/src/package-checks/function-metrics/analyzer-worker-contract.ts +10 -0
  577. package/src/package-checks/function-metrics/analyzer-worker-port.ts +150 -0
  578. package/src/package-checks/function-metrics/analyzer-worker.ts +31 -0
  579. package/src/package-checks/function-metrics/constructor.ts +2 -2
  580. package/src/package-checks/function-metrics/execution.ts +94 -39
  581. package/src/package-checks/function-metrics/finding-messages.ts +95 -0
  582. package/src/package-checks/function-metrics/finding-waiver-identity.ts +36 -0
  583. package/src/package-checks/function-metrics/measurement-model.ts +15 -1
  584. package/src/package-checks/function-metrics/measurement.ts +221 -36
  585. package/src/package-checks/function-metrics/options-resolution.ts +39 -75
  586. package/src/package-checks/function-metrics/options-validation.ts +30 -39
  587. package/src/package-checks/function-metrics/options.ts +27 -11
  588. package/src/package-checks/function-metrics/records.ts +73 -7
  589. package/src/package-checks/function-metrics/target-files.ts +10 -70
  590. package/src/package-checks/{file-metrics/scc → host-environment}/csv.ts +1 -2
  591. package/src/package-checks/host-environment/git.ts +2 -2
  592. package/src/package-checks/host-environment/process.ts +10 -0
  593. package/src/package-checks/json-schema-validation/final-data.ts +8 -0
  594. package/src/package-checks/json-schema-validation/options-validation.ts +16 -23
  595. package/src/package-checks/json-schema-validation/options.ts +23 -0
  596. package/src/package-checks/json-validation/final-data.ts +5 -0
  597. package/src/package-checks/json-validation/options-validation.ts +4 -18
  598. package/src/package-checks/maintenance-reminders/final-data.ts +18 -0
  599. package/src/package-checks/markdown-link-validation/default-check.ts +9 -3
  600. package/src/package-checks/markdown-link-validation/execution.ts +51 -57
  601. package/src/package-checks/markdown-link-validation/filesystem-probes.ts +108 -51
  602. package/src/package-checks/markdown-link-validation/final-data.ts +5 -0
  603. package/src/package-checks/markdown-link-validation/finding-messages.ts +48 -0
  604. package/src/package-checks/markdown-link-validation/local-resolution.ts +17 -9
  605. package/src/package-checks/markdown-link-validation/local-resolver.ts +5 -2
  606. package/src/package-checks/markdown-link-validation/options-resolution.ts +31 -3
  607. package/src/package-checks/markdown-link-validation/options-validation.ts +27 -19
  608. package/src/package-checks/markdown-link-validation/options.ts +15 -0
  609. package/src/package-checks/markdown-link-validation/parse-facts-cache-payload.ts +246 -0
  610. package/src/package-checks/markdown-link-validation/parse-facts-cache.ts +154 -0
  611. package/src/package-checks/markdown-link-validation/resolver-engine.ts +75 -65
  612. package/src/package-checks/markdown-link-validation/source-reader.ts +86 -0
  613. package/src/package-checks/markdown-link-validation/unavailable-reasons.ts +42 -0
  614. package/src/package-checks/project-files/collection.ts +1 -1
  615. package/src/package-checks/project-files/configuration.ts +3 -14
  616. package/src/package-checks/project-files/gitlink-revision.ts +1 -1
  617. package/src/package-checks/project-files/gitlink-worktree.ts +1 -1
  618. package/src/package-checks/project-files/public-collection.ts +92 -0
  619. package/src/package-checks/project-files/revision-worktree-files.ts +1 -1
  620. package/src/package-checks/secret-detection/classification.ts +30 -0
  621. package/src/package-checks/secret-detection/default-check.ts +50 -0
  622. package/src/package-checks/secret-detection/execution.ts +247 -0
  623. package/src/package-checks/secret-detection/final-data.ts +57 -0
  624. package/src/package-checks/secret-detection/finding-waiver-identity.ts +37 -0
  625. package/src/package-checks/secret-detection/input-preparation.ts +233 -0
  626. package/src/package-checks/secret-detection/options-resolution.ts +65 -0
  627. package/src/package-checks/secret-detection/options-validation.ts +27 -0
  628. package/src/package-checks/secret-detection/options.ts +36 -0
  629. package/src/package-checks/secret-detection/records.ts +77 -0
  630. package/src/package-checks/secret-detection/secretlint/adapter.ts +123 -0
  631. package/src/project-definition/check-tree/authoring.ts +29 -230
  632. package/src/project-definition/check-tree/check-fields-authoring.ts +227 -0
  633. package/src/project-definition/check-tree/collection-authoring.ts +13 -0
  634. package/src/project-definition/check-tree/materialization.ts +9 -1
  635. package/src/project-definition/check-tree/resolution.ts +80 -22
  636. package/src/project-definition/check-tree/scheduling-authoring.ts +114 -0
  637. package/src/project-definition/declarative-snapshot.ts +87 -0
  638. package/src/project-definition/output-defaults.ts +32 -1
  639. package/src/project-definition/output-validation.ts +15 -15
  640. package/src/project-definition/progress-rendering-output.ts +121 -0
  641. package/src/project-definition/project-definition-validation.ts +117 -18
  642. package/src/project-definition/project-definition.ts +198 -61
  643. package/src/project-definition/resource-unit-mapping.ts +25 -0
  644. package/src/project-definition/scheduler-policy.ts +553 -0
  645. package/src/project-run/admission-strategy-provider/custom-strategy-preparation.ts +80 -0
  646. package/src/project-run/admission-strategy-provider/prepared-admission-strategy.ts +27 -0
  647. package/src/project-run/admission-strategy-provider/provider.ts +45 -0
  648. package/src/project-run/aggregation.ts +10 -5
  649. package/src/project-run/check-execution/callback.ts +50 -8
  650. package/src/project-run/check-execution/console-capture.ts +262 -0
  651. package/src/project-run/check-execution/dependencies.ts +43 -6
  652. package/src/project-run/check-execution/execution-finalization.ts +99 -25
  653. package/src/project-run/check-execution/execution-settlement.ts +19 -11
  654. package/src/project-run/check-execution/flag-controls.ts +132 -0
  655. package/src/project-run/check-execution/lifecycle.ts +21 -0
  656. package/src/project-run/check-execution/messages.ts +8 -0
  657. package/src/project-run/check-execution/plan.ts +12 -8
  658. package/src/project-run/check-execution/preflight.ts +23 -43
  659. package/src/project-run/check-execution/resolved-checks.ts +165 -126
  660. package/src/project-run/check-execution/resolved-execution-result.ts +22 -0
  661. package/src/project-run/{completion.ts → completion/completion.ts} +17 -57
  662. package/src/project-run/{machine-publication.ts → completion/machine-publication.ts} +4 -4
  663. package/src/project-run/completion/result-resolver.ts +60 -0
  664. package/src/project-run/controls/contract.ts +25 -2
  665. package/src/project-run/controls/outputs-override-validation.ts +83 -60
  666. package/src/project-run/controls/validation-result.ts +17 -6
  667. package/src/project-run/controls/validation.ts +107 -12
  668. package/src/project-run/diagnostic-logging/logger.ts +132 -207
  669. package/src/project-run/diagnostic-logging/observation-rendering.ts +203 -0
  670. package/src/project-run/invocation/candidate.ts +86 -0
  671. package/src/project-run/invocation/creation.ts +116 -0
  672. package/src/project-run/invocation/paths.ts +154 -0
  673. package/src/project-run/invocation/progress.ts +38 -0
  674. package/src/project-run/{invocation.ts → invocation/run.ts} +125 -120
  675. package/src/project-run/invocation/scheduler.ts +75 -0
  676. package/src/project-run/{output-configuration.ts → outputs/configuration.ts} +6 -5
  677. package/src/project-run/outputs/status.ts +161 -0
  678. package/src/project-run/progress-rendering/presentation.ts +118 -26
  679. package/src/project-run/progress-rendering/renderer-formatting.ts +166 -19
  680. package/src/project-run/progress-rendering/renderer-lifecycle.ts +38 -3
  681. package/src/project-run/progress-rendering/renderer.ts +13 -2
  682. package/src/project-run/project-context.ts +3 -2
  683. package/src/project-run/result.ts +49 -3
  684. package/src/project-run/run.ts +7 -6
  685. package/src/project-run/task-scheduler/admission-core/compiled-graph.ts +316 -0
  686. package/src/project-run/task-scheduler/admission-core/core.ts +278 -0
  687. package/src/project-run/task-scheduler/admission-core/input.ts +138 -0
  688. package/src/project-run/task-scheduler/admission-core/projection.ts +164 -0
  689. package/src/project-run/task-scheduler/admission-core/selection-index.ts +165 -0
  690. package/src/project-run/task-scheduler/admission-core/selection-query.ts +295 -0
  691. package/src/project-run/task-scheduler/admission-core/selection-seed.ts +252 -0
  692. package/src/project-run/task-scheduler/admission-core/selection-transition.ts +236 -0
  693. package/src/project-run/task-scheduler/admission-core/selection.ts +140 -0
  694. package/src/project-run/task-scheduler/admission-core/trace.ts +177 -0
  695. package/src/project-run/task-scheduler/admission-scope-layers.ts +44 -0
  696. package/src/project-run/task-scheduler/admission-selection-policy.ts +116 -0
  697. package/src/project-run/task-scheduler/critical-path-ranking.ts +76 -0
  698. package/src/project-run/task-scheduler/custom-admission-policy.ts +128 -0
  699. package/src/project-run/task-scheduler/execution-state.ts +97 -6
  700. package/src/project-run/task-scheduler/forced-block-effect-replay.ts +68 -0
  701. package/src/project-run/task-scheduler/graph-validation.ts +77 -31
  702. package/src/project-run/task-scheduler/graph.ts +111 -3
  703. package/src/project-run/task-scheduler/measurement/diagnostics.ts +261 -0
  704. package/src/project-run/task-scheduler/measurement/integrals.ts +177 -0
  705. package/src/project-run/task-scheduler/measurement/policy.ts +105 -0
  706. package/src/project-run/task-scheduler/measurement/summary.ts +175 -0
  707. package/src/project-run/task-scheduler/measurement/timing.ts +190 -0
  708. package/src/project-run/task-scheduler/scheduler-admission-decision.ts +143 -134
  709. package/src/project-run/task-scheduler/scheduler-blocker-summary.ts +34 -9
  710. package/src/project-run/task-scheduler/scheduler-decision-inspection.ts +28 -170
  711. package/src/project-run/task-scheduler/scheduler-decision-model.ts +36 -40
  712. package/src/project-run/task-scheduler/scheduler-decision.ts +68 -36
  713. package/src/project-run/task-scheduler/scheduler-observation.ts +124 -0
  714. package/src/project-run/task-scheduler/scheduler-task-lifecycle.ts +150 -0
  715. package/src/project-run/task-scheduler/scheduler-terminal-measurement.ts +95 -0
  716. package/src/project-run/task-scheduler/scheduler.ts +216 -171
  717. package/types/cache/cache-json-by-key.d.ts +53 -0
  718. package/types/check/check.d.ts +62 -17
  719. package/types/check/finding-presentation.d.ts +25 -0
  720. package/types/check/inherited-collection.d.ts +1 -1
  721. package/types/check-settlement/reason-shape.d.ts +5 -0
  722. package/types/check-settlement/record-store.d.ts +2 -2
  723. package/types/check-settlement/session.d.ts +3 -1
  724. package/types/data-boundary/closed-values.d.ts +8 -0
  725. package/types/data-boundary/value-shapes.d.ts +3 -0
  726. package/types/index.d.ts +22 -7
  727. package/types/learned-critical-path/duration-model/bounded-history.d.ts +34 -0
  728. package/types/learned-critical-path/duration-model/prediction.d.ts +32 -0
  729. package/types/learned-critical-path/duration-model/preparation.d.ts +28 -0
  730. package/types/learned-critical-path/duration-model/recording.d.ts +28 -0
  731. package/types/learned-critical-path/duration-model/storage.d.ts +12 -0
  732. package/types/learned-critical-path/selection-layers.d.ts +14 -0
  733. package/types/learned-critical-path/static-decision.d.ts +3 -0
  734. package/types/learned-critical-path/strategy.d.ts +35 -0
  735. package/types/package-checks/code-quality-findings/finding-waiver-authoring.d.ts +7 -0
  736. package/types/package-checks/code-quality-findings/finding-waiver-evidence.d.ts +34 -0
  737. package/types/package-checks/code-quality-findings/policy.d.ts +4 -0
  738. package/types/package-checks/duplicate-detection/area-policy.d.ts +1 -1
  739. package/types/package-checks/duplicate-detection/finding-messages.d.ts +7 -0
  740. package/types/package-checks/duplicate-detection/finding-waiver-identity.d.ts +3 -0
  741. package/types/package-checks/duplicate-detection/jscpd/command-resolution.d.ts +1 -1
  742. package/types/package-checks/duplicate-detection/options.d.ts +18 -1
  743. package/types/package-checks/duplicate-detection/records.d.ts +20 -3
  744. package/types/package-checks/file-metrics/finding-messages.d.ts +4 -0
  745. package/types/package-checks/file-metrics/records.d.ts +5 -10
  746. package/types/package-checks/file-metrics/scc/parser.d.ts +4 -4
  747. package/types/package-checks/function-metrics/analysis.d.ts +1 -1
  748. package/types/package-checks/function-metrics/analyzer/analysis-context.d.ts +174 -0
  749. package/types/package-checks/function-metrics/analyzer/analysis-model.d.ts +135 -0
  750. package/types/package-checks/function-metrics/analyzer/contracts.d.ts +48 -0
  751. package/types/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.d.ts +13 -0
  752. package/types/package-checks/function-metrics/analyzer/extensions/lizardnd.d.ts +28 -0
  753. package/types/package-checks/function-metrics/analyzer/extensions/protocol.d.ts +99 -0
  754. package/types/package-checks/function-metrics/analyzer/extensions/registry.d.ts +34 -0
  755. package/types/package-checks/function-metrics/analyzer/pipeline.d.ts +67 -0
  756. package/types/package-checks/function-metrics/analyzer/port-facade.d.ts +38 -0
  757. package/types/package-checks/function-metrics/analyzer/reader-registry.d.ts +18 -0
  758. package/types/package-checks/function-metrics/analyzer/readers/csharp.d.ts +22 -0
  759. package/types/package-checks/function-metrics/analyzer/readers/erlang.d.ts +22 -0
  760. package/types/package-checks/function-metrics/analyzer/readers/fortran.d.ts +29 -0
  761. package/types/package-checks/function-metrics/analyzer/readers/gdscript.d.ts +18 -0
  762. package/types/package-checks/function-metrics/analyzer/readers/go.d.ts +18 -0
  763. package/types/package-checks/function-metrics/analyzer/readers/java-body-states.d.ts +18 -0
  764. package/types/package-checks/function-metrics/analyzer/readers/java.d.ts +44 -0
  765. package/types/package-checks/function-metrics/analyzer/readers/javascript.d.ts +14 -0
  766. package/types/package-checks/function-metrics/analyzer/readers/kotlin.d.ts +23 -0
  767. package/types/package-checks/function-metrics/analyzer/readers/lua.d.ts +16 -0
  768. package/types/package-checks/function-metrics/analyzer/readers/objc.d.ts +18 -0
  769. package/types/package-checks/function-metrics/analyzer/readers/perl.d.ts +28 -0
  770. package/types/package-checks/function-metrics/analyzer/readers/php-states.d.ts +41 -0
  771. package/types/package-checks/function-metrics/analyzer/readers/php.d.ts +22 -0
  772. package/types/package-checks/function-metrics/analyzer/readers/plsql.d.ts +24 -0
  773. package/types/package-checks/function-metrics/analyzer/readers/python.d.ts +50 -0
  774. package/types/package-checks/function-metrics/analyzer/readers/r.d.ts +22 -0
  775. package/types/package-checks/function-metrics/analyzer/readers/ruby.d.ts +16 -0
  776. package/types/package-checks/function-metrics/analyzer/readers/rust.d.ts +20 -0
  777. package/types/package-checks/function-metrics/analyzer/readers/scala.d.ts +20 -0
  778. package/types/package-checks/function-metrics/analyzer/readers/solidity.d.ts +19 -0
  779. package/types/package-checks/function-metrics/analyzer/readers/st.d.ts +37 -0
  780. package/types/package-checks/function-metrics/analyzer/readers/swift.d.ts +30 -0
  781. package/types/package-checks/function-metrics/analyzer/readers/tsx.d.ts +15 -0
  782. package/types/package-checks/function-metrics/analyzer/readers/ttcn.d.ts +22 -0
  783. package/types/package-checks/function-metrics/analyzer/readers/typescript.d.ts +35 -0
  784. package/types/package-checks/function-metrics/analyzer/readers/vue.d.ts +18 -0
  785. package/types/package-checks/function-metrics/analyzer/readers/zig.d.ts +19 -0
  786. package/types/package-checks/function-metrics/analyzer/shared/clike.d.ts +101 -0
  787. package/types/package-checks/function-metrics/analyzer/shared/code-reader.d.ts +176 -0
  788. package/types/package-checks/function-metrics/analyzer/shared/golike.d.ts +39 -0
  789. package/types/package-checks/function-metrics/analyzer/shared/js-style-regex.d.ts +16 -0
  790. package/types/package-checks/function-metrics/analyzer/shared/rubylike.d.ts +40 -0
  791. package/types/package-checks/function-metrics/analyzer/shared/script-language.d.ts +17 -0
  792. package/types/package-checks/function-metrics/analyzer-adapter.d.ts +26 -0
  793. package/types/package-checks/function-metrics/analyzer-worker-contract.d.ts +5 -0
  794. package/types/package-checks/function-metrics/analyzer-worker-port.d.ts +24 -0
  795. package/types/package-checks/function-metrics/analyzer-worker.d.ts +1 -0
  796. package/types/package-checks/function-metrics/constructor.d.ts +1 -1
  797. package/types/package-checks/function-metrics/execution.d.ts +5 -2
  798. package/types/package-checks/function-metrics/finding-messages.d.ts +9 -0
  799. package/types/package-checks/function-metrics/finding-waiver-identity.d.ts +2 -0
  800. package/types/package-checks/function-metrics/measurement-model.d.ts +13 -1
  801. package/types/package-checks/function-metrics/measurement.d.ts +22 -7
  802. package/types/package-checks/function-metrics/options.d.ts +23 -10
  803. package/types/package-checks/function-metrics/records.d.ts +24 -5
  804. package/types/package-checks/function-metrics/target-files.d.ts +4 -3
  805. package/types/package-checks/host-environment/csv.d.ts +2 -0
  806. package/types/package-checks/host-environment/git.d.ts +1 -1
  807. package/types/package-checks/host-environment/process.d.ts +5 -0
  808. package/types/package-checks/json-schema-validation/final-data.d.ts +8 -0
  809. package/types/package-checks/json-schema-validation/options.d.ts +31 -3
  810. package/types/package-checks/json-validation/final-data.d.ts +5 -0
  811. package/types/package-checks/maintenance-reminders/final-data.d.ts +18 -0
  812. package/types/package-checks/markdown-link-validation/default-check.d.ts +9 -3
  813. package/types/package-checks/markdown-link-validation/execution.d.ts +1 -3
  814. package/types/package-checks/markdown-link-validation/final-data.d.ts +5 -0
  815. package/types/package-checks/markdown-link-validation/finding-messages.d.ts +4 -0
  816. package/types/package-checks/markdown-link-validation/local-resolution.d.ts +12 -6
  817. package/types/package-checks/markdown-link-validation/local-resolver.d.ts +2 -1
  818. package/types/package-checks/markdown-link-validation/options.d.ts +15 -0
  819. package/types/package-checks/markdown-link-validation/parse-facts-cache-payload.d.ts +24 -0
  820. package/types/package-checks/markdown-link-validation/parse-facts-cache.d.ts +13 -0
  821. package/types/package-checks/markdown-link-validation/resolver-engine.d.ts +6 -4
  822. package/types/package-checks/markdown-link-validation/source-reader.d.ts +11 -0
  823. package/types/package-checks/markdown-link-validation/unavailable-reasons.d.ts +4 -0
  824. package/types/package-checks/project-files/public-collection.d.ts +16 -0
  825. package/types/package-checks/secret-detection/classification.d.ts +12 -0
  826. package/types/package-checks/secret-detection/default-check.d.ts +11 -0
  827. package/types/package-checks/secret-detection/execution.d.ts +14 -0
  828. package/types/package-checks/secret-detection/final-data.d.ts +15 -0
  829. package/types/package-checks/secret-detection/finding-waiver-identity.d.ts +5 -0
  830. package/types/package-checks/secret-detection/input-preparation.d.ts +24 -0
  831. package/types/package-checks/secret-detection/options-resolution.d.ts +6 -0
  832. package/types/package-checks/secret-detection/options-validation.d.ts +3 -0
  833. package/types/package-checks/secret-detection/options.d.ts +32 -0
  834. package/types/package-checks/secret-detection/records.d.ts +35 -0
  835. package/types/package-checks/secret-detection/secretlint/adapter.d.ts +28 -0
  836. package/types/project-definition/check-tree/authoring.d.ts +11 -14
  837. package/types/project-definition/check-tree/check-fields-authoring.d.ts +25 -0
  838. package/types/project-definition/check-tree/collection-authoring.d.ts +2 -0
  839. package/types/project-definition/check-tree/resolution.d.ts +8 -3
  840. package/types/project-definition/check-tree/scheduling-authoring.d.ts +19 -0
  841. package/types/project-definition/declarative-snapshot.d.ts +7 -0
  842. package/types/project-definition/output-defaults.d.ts +7 -0
  843. package/types/project-definition/output-validation.d.ts +2 -1
  844. package/types/project-definition/progress-rendering-output.d.ts +41 -0
  845. package/types/project-definition/project-definition.d.ts +61 -16
  846. package/types/project-definition/resource-unit-mapping.d.ts +4 -0
  847. package/types/project-definition/scheduler-policy.d.ts +497 -0
  848. package/types/project-run/admission-strategy-provider/custom-strategy-preparation.d.ts +9 -0
  849. package/types/project-run/admission-strategy-provider/prepared-admission-strategy.d.ts +23 -0
  850. package/types/project-run/admission-strategy-provider/provider.d.ts +13 -0
  851. package/types/project-run/aggregation.d.ts +1 -1
  852. package/types/project-run/check-execution/callback.d.ts +5 -1
  853. package/types/project-run/check-execution/console-capture.d.ts +18 -0
  854. package/types/project-run/check-execution/dependencies.d.ts +1 -1
  855. package/types/project-run/check-execution/execution-finalization.d.ts +17 -7
  856. package/types/project-run/check-execution/execution-settlement.d.ts +5 -2
  857. package/types/project-run/check-execution/flag-controls.d.ts +27 -0
  858. package/types/project-run/check-execution/lifecycle.d.ts +20 -0
  859. package/types/project-run/check-execution/messages.d.ts +2 -0
  860. package/types/project-run/check-execution/plan.d.ts +2 -3
  861. package/types/project-run/check-execution/preflight.d.ts +6 -5
  862. package/types/project-run/check-execution/resolved-checks.d.ts +32 -38
  863. package/types/project-run/check-execution/resolved-execution-result.d.ts +21 -0
  864. package/types/project-run/{completion.d.ts → completion/completion.d.ts} +4 -4
  865. package/types/project-run/{machine-publication.d.ts → completion/machine-publication.d.ts} +3 -3
  866. package/types/project-run/completion/result-resolver.d.ts +4 -0
  867. package/types/project-run/controls/contract.d.ts +25 -2
  868. package/types/project-run/controls/outputs-override-validation.d.ts +2 -1
  869. package/types/project-run/controls/validation-result.d.ts +12 -4
  870. package/types/project-run/diagnostic-logging/logger.d.ts +34 -4
  871. package/types/project-run/diagnostic-logging/observation-rendering.d.ts +7 -0
  872. package/types/project-run/invocation/candidate.d.ts +12 -0
  873. package/types/project-run/{invocation-creation.d.ts → invocation/creation.d.ts} +3 -3
  874. package/types/project-run/invocation/paths.d.ts +40 -0
  875. package/types/project-run/invocation/progress.d.ts +11 -0
  876. package/types/project-run/invocation/run.d.ts +43 -0
  877. package/types/project-run/invocation/scheduler.d.ts +16 -0
  878. package/types/project-run/outputs/configuration.d.ts +3 -0
  879. package/types/project-run/outputs/status.d.ts +48 -0
  880. package/types/project-run/progress-rendering/presentation.d.ts +9 -5
  881. package/types/project-run/progress-rendering/renderer-formatting.d.ts +8 -0
  882. package/types/project-run/progress-rendering/renderer-lifecycle.d.ts +6 -1
  883. package/types/project-run/progress-rendering/renderer.d.ts +7 -1
  884. package/types/project-run/project-context.d.ts +2 -1
  885. package/types/project-run/result.d.ts +37 -3
  886. package/types/project-run/run.d.ts +6 -5
  887. package/types/project-run/task-scheduler/admission-core/compiled-graph.d.ts +31 -0
  888. package/types/project-run/task-scheduler/admission-core/core.d.ts +57 -0
  889. package/types/project-run/task-scheduler/admission-core/input.d.ts +4 -0
  890. package/types/project-run/task-scheduler/admission-core/projection.d.ts +22 -0
  891. package/types/project-run/task-scheduler/admission-core/selection-index.d.ts +61 -0
  892. package/types/project-run/task-scheduler/admission-core/selection-query.d.ts +28 -0
  893. package/types/project-run/task-scheduler/admission-core/selection-seed.d.ts +9 -0
  894. package/types/project-run/task-scheduler/admission-core/selection-transition.d.ts +4 -0
  895. package/types/project-run/task-scheduler/admission-core/selection.d.ts +20 -0
  896. package/types/project-run/task-scheduler/admission-scope-layers.d.ts +8 -0
  897. package/types/project-run/task-scheduler/admission-selection-policy.d.ts +31 -0
  898. package/types/project-run/task-scheduler/critical-path-ranking.d.ts +19 -0
  899. package/types/project-run/task-scheduler/custom-admission-policy.d.ts +6 -0
  900. package/types/project-run/task-scheduler/execution-state.d.ts +43 -1
  901. package/types/project-run/task-scheduler/forced-block-effect-replay.d.ts +9 -0
  902. package/types/project-run/task-scheduler/graph-validation.d.ts +3 -2
  903. package/types/project-run/task-scheduler/graph.d.ts +15 -0
  904. package/types/project-run/task-scheduler/measurement/diagnostics.d.ts +47 -0
  905. package/types/project-run/task-scheduler/measurement/integrals.d.ts +27 -0
  906. package/types/project-run/task-scheduler/measurement/policy.d.ts +10 -0
  907. package/types/project-run/task-scheduler/measurement/summary.d.ts +3 -0
  908. package/types/project-run/task-scheduler/measurement/timing.d.ts +33 -0
  909. package/types/project-run/task-scheduler/scheduler-admission-decision.d.ts +13 -1
  910. package/types/project-run/task-scheduler/scheduler-decision-inspection.d.ts +20 -19
  911. package/types/project-run/task-scheduler/scheduler-decision-model.d.ts +38 -22
  912. package/types/project-run/task-scheduler/scheduler-decision.d.ts +4 -1
  913. package/types/project-run/task-scheduler/scheduler-observation.d.ts +14 -0
  914. package/types/project-run/task-scheduler/scheduler-task-lifecycle.d.ts +18 -0
  915. package/types/project-run/task-scheduler/scheduler-terminal-measurement.d.ts +9 -0
  916. package/dist/esm/package-checks/file-metrics/scc/csv.mjs.map +0 -1
  917. package/dist/esm/package-checks/function-metrics/lizard/availability.mjs +0 -64
  918. package/dist/esm/package-checks/function-metrics/lizard/availability.mjs.map +0 -1
  919. package/dist/esm/package-checks/function-metrics/lizard/csv.mjs +0 -17
  920. package/dist/esm/package-checks/function-metrics/lizard/csv.mjs.map +0 -1
  921. package/dist/esm/package-checks/function-metrics/lizard/parser.mjs +0 -138
  922. package/dist/esm/package-checks/function-metrics/lizard/parser.mjs.map +0 -1
  923. package/dist/esm/package-checks/function-metrics/lizard/scanner.mjs +0 -35
  924. package/dist/esm/package-checks/function-metrics/lizard/scanner.mjs.map +0 -1
  925. package/dist/esm/package-checks/host-environment/process/command.mjs +0 -13
  926. package/dist/esm/package-checks/host-environment/process/command.mjs.map +0 -1
  927. package/dist/esm/project-run/completion.mjs.map +0 -1
  928. package/dist/esm/project-run/invocation-creation.mjs +0 -111
  929. package/dist/esm/project-run/invocation-creation.mjs.map +0 -1
  930. package/dist/esm/project-run/invocation.mjs.map +0 -1
  931. package/dist/esm/project-run/machine-publication.mjs.map +0 -1
  932. package/dist/esm/project-run/output-configuration.mjs.map +0 -1
  933. package/dist/esm/project-run/output-status.mjs +0 -43
  934. package/dist/esm/project-run/output-status.mjs.map +0 -1
  935. package/src/package-checks/function-metrics/lizard/availability.ts +0 -90
  936. package/src/package-checks/function-metrics/lizard/csv.ts +0 -20
  937. package/src/package-checks/function-metrics/lizard/parser.ts +0 -179
  938. package/src/package-checks/function-metrics/lizard/scanner.ts +0 -62
  939. package/src/package-checks/host-environment/process/command.ts +0 -21
  940. package/src/project-run/invocation-creation.ts +0 -160
  941. package/src/project-run/output-status.ts +0 -69
  942. package/types/package-checks/file-metrics/scc/csv.d.ts +0 -1
  943. package/types/package-checks/function-metrics/lizard/availability.d.ts +0 -11
  944. package/types/package-checks/function-metrics/lizard/csv.d.ts +0 -1
  945. package/types/package-checks/function-metrics/lizard/parser.d.ts +0 -17
  946. package/types/package-checks/function-metrics/lizard/scanner.d.ts +0 -15
  947. package/types/package-checks/host-environment/process/command.d.ts +0 -7
  948. package/types/project-run/invocation.d.ts +0 -34
  949. package/types/project-run/output-configuration.d.ts +0 -3
  950. package/types/project-run/output-status.d.ts +0 -21
@@ -4,25 +4,38 @@ const EMPTY_MESSAGES = Object.freeze([]);
4
4
  export function closeResolvedChecks(input) {
5
5
  try {
6
6
  assertNoTaskEngineFailures(input.graphRun.settlements);
7
+ if (input.graphRun.admissionPolicyFault !== undefined) {
8
+ return closeAdmissionPolicyFailed({
9
+ normalizedChecks: input.allChecks,
10
+ state: input.state,
11
+ terminalSchedulerMeasurement: input.graphRun.terminalMeasurement
12
+ });
13
+ }
7
14
  if (input.graphRun.cancelled) {
8
15
  return closeCancelledExecution({
9
16
  normalizedChecks: input.allChecks,
10
- preparedChecks: input.readyChecks,
11
- state: input.state
17
+ state: input.state,
18
+ terminalSchedulerMeasurement: input.graphRun.terminalMeasurement
12
19
  });
13
20
  }
14
- assertEveryCheckClosed(input.readyChecks, input.graphRun.settlements);
15
- return resolvedExecution("completed", input.state.session.freeze(), input.state);
21
+ assertEveryCheckClosed(input.allChecks, input.graphRun.settlements);
22
+ return completedResolvedExecution(input.effectiveCheckIds, input.state.session.freeze(), input.state, input.graphRun.terminalMeasurement);
16
23
  }
17
24
  catch (error) {
18
25
  throw trustedFailure(error);
19
26
  }
20
27
  }
28
+ export function closeAdmissionPolicyFailed(input) {
29
+ input.state.session.closeUnresolvedAsCancelled();
30
+ const snapshot = input.state.session.freeze();
31
+ settleUnstartedCancelledChecks({ ...input, snapshot });
32
+ return resolvedExecution("admission-policy-failed", snapshot, input.state, input.terminalSchedulerMeasurement);
33
+ }
21
34
  export function closeCancelledExecution(input) {
22
35
  input.state.session.closeUnresolvedAsCancelled();
23
36
  const snapshot = input.state.session.freeze();
24
37
  settleUnstartedCancelledChecks({ ...input, snapshot });
25
- return resolvedExecution("cancelled", snapshot, input.state);
38
+ return resolvedExecution("cancelled", snapshot, input.state, input.terminalSchedulerMeasurement);
26
39
  }
27
40
  export function checkIdentity(check) {
28
41
  return Object.freeze({
@@ -36,16 +49,25 @@ export function trustedFailure(error) {
36
49
  ? error
37
50
  : new CheckExecutionInvariantFailure("Check execution adapter escaped its contained failure boundary");
38
51
  }
39
- function resolvedExecution(kind, snapshot, state) {
52
+ function resolvedExecution(kind, snapshot, state, terminalSchedulerMeasurement) {
40
53
  return Object.freeze({
41
54
  kind,
42
55
  ...checkRunSummaries(snapshot, state.settledFactsByCheckId),
43
- snapshot
56
+ snapshot,
57
+ ...(terminalSchedulerMeasurement === undefined ? {} : { terminalSchedulerMeasurement })
58
+ });
59
+ }
60
+ function completedResolvedExecution(effectiveCheckIds, snapshot, state, terminalSchedulerMeasurement) {
61
+ return Object.freeze({
62
+ kind: "completed",
63
+ ...checkRunSummaries(snapshot, state.settledFactsByCheckId),
64
+ effectiveCheckIds,
65
+ snapshot,
66
+ ...(terminalSchedulerMeasurement === undefined ? {} : { terminalSchedulerMeasurement })
44
67
  });
45
68
  }
46
69
  function settleUnstartedCancelledChecks(input) {
47
70
  const normalizedByCheckId = new Map(input.normalizedChecks.map((check) => [check.definition.checkId, check]));
48
- const preparedByCheckId = new Map(input.preparedChecks.map((check) => [check.definition.checkId, check]));
49
71
  for (const check of input.snapshot.checks) {
50
72
  if (input.state.settledFactsByCheckId.has(check.checkId))
51
73
  continue;
@@ -56,7 +78,7 @@ function settleUnstartedCancelledChecks(input) {
56
78
  recordSettledCheck({
57
79
  check: checkIdentity(normalized),
58
80
  durationMs: null,
59
- messages: preparedByCheckId.get(check.checkId)?.preflightMessages ?? EMPTY_MESSAGES,
81
+ messages: EMPTY_MESSAGES,
60
82
  outcome: check.outcome,
61
83
  phase: "execution",
62
84
  state: input.state
@@ -74,7 +96,10 @@ function checkRunSummaries(snapshot, settledFactsByCheckId) {
74
96
  if (settledFacts === undefined) {
75
97
  throw new CheckExecutionInvariantFailure("Check settled facts are missing a Check");
76
98
  }
77
- checkDurations.push(Object.freeze({ checkId: check.checkId, durationMs: settledFacts.durationMs }));
99
+ checkDurations.push(Object.freeze({
100
+ checkId: check.checkId,
101
+ durationMs: settledFacts.durationMs
102
+ }));
78
103
  messages.push(...settledFacts.messages.map((message) => Object.freeze({ checkId: check.checkId, ...message })));
79
104
  }
80
105
  return Object.freeze({
@@ -82,14 +107,30 @@ function checkRunSummaries(snapshot, settledFactsByCheckId) {
82
107
  checkMessages: messages.length === 0 ? Object.freeze([]) : Object.freeze(messages)
83
108
  });
84
109
  }
110
+ /** Closes one Scheduler-blocked Check before a terminal observer may start. */
111
+ export function settleBlockedDependent(input) {
112
+ const scope = input.state.session.openCheckScope(input.check.definition.checkId);
113
+ const outcome = scope.settleProduct(Object.freeze({
114
+ status: "unavailable",
115
+ reason: Object.freeze({
116
+ code: "dependency-not-passed",
117
+ checkIds: Object.freeze([...input.dependencyIds])
118
+ })
119
+ }));
120
+ recordSettledCheck({
121
+ check: checkIdentity(input.check),
122
+ durationMs: null,
123
+ messages: EMPTY_MESSAGES,
124
+ outcome,
125
+ phase: "dependency",
126
+ state: input.state
127
+ });
128
+ }
85
129
  function assertNoTaskEngineFailures(settlements) {
86
130
  for (const settled of settlements) {
87
131
  if (settled.settlement.kind === "failed") {
88
132
  throw new CheckExecutionInvariantFailure("Task engine received an unexpected execution failure");
89
133
  }
90
- if (settled.settlement.kind === "blocked") {
91
- throw new CheckExecutionInvariantFailure("Task engine blocked a Product Check");
92
- }
93
134
  }
94
135
  }
95
136
  function assertEveryCheckClosed(checks, settlements) {
@@ -1 +1 @@
1
- {"version":3,"file":"execution-finalization.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/execution-finalization.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CheckMessage } from \"../../check/check.ts\";\nimport type { CoreSnapshot } from \"../../check-settlement/facts.ts\";\nimport type { NormalizedCheck } from \"../../project-definition/project-definition.ts\";\nimport type { SettledTask } from \"../task-scheduler/scheduler.ts\";\nimport type { CheckDuration, CheckRunMessage } from \"../result.ts\";\nimport {\n CheckExecutionInvariantFailure,\n recordSettledCheck,\n type CheckIdentity,\n type SettledCheckFacts\n} from \"./execution-settlement.ts\";\nimport type { PreparedCheck } from \"./preflight.ts\";\nimport type { CheckExecutionState, ResolvedCheckExecution } from \"./resolved-checks.ts\";\n\nconst EMPTY_MESSAGES: readonly CheckMessage[] = Object.freeze([]);\n\n/** Closes the task graph, lifecycle facts, and canonical Check summaries as one Run boundary. */\nexport function closeResolvedChecks(\n input: Readonly<{\n readonly allChecks: readonly NormalizedCheck[];\n readonly graphRun: Awaited<\n ReturnType<typeof import(\"../task-scheduler/scheduler.ts\").runTaskGraph<void>>\n >;\n readonly readyChecks: readonly PreparedCheck[];\n readonly state: CheckExecutionState;\n }>\n): ResolvedCheckExecution {\n try {\n assertNoTaskEngineFailures(input.graphRun.settlements);\n if (input.graphRun.cancelled) {\n return closeCancelledExecution({\n normalizedChecks: input.allChecks,\n preparedChecks: input.readyChecks,\n state: input.state\n });\n }\n assertEveryCheckClosed(input.readyChecks, input.graphRun.settlements);\n return resolvedExecution(\"completed\", input.state.session.freeze(), input.state);\n } catch (error) {\n throw trustedFailure(error);\n }\n}\n\nexport function closeCancelledExecution(\n input: Readonly<{\n readonly normalizedChecks: readonly NormalizedCheck[];\n readonly preparedChecks: readonly PreparedCheck[];\n readonly state: CheckExecutionState;\n }>\n): ResolvedCheckExecution {\n input.state.session.closeUnresolvedAsCancelled();\n const snapshot = input.state.session.freeze();\n settleUnstartedCancelledChecks({ ...input, snapshot });\n return resolvedExecution(\"cancelled\", snapshot, input.state);\n}\n\nexport function checkIdentity(\n check: Pick<NormalizedCheck, \"definition\" | \"visibility\">\n): CheckIdentity {\n return Object.freeze({\n checkId: check.definition.checkId,\n displayName: check.definition.displayName,\n visibility: check.visibility\n });\n}\n\nexport function trustedFailure(error: unknown): CheckExecutionInvariantFailure {\n return error instanceof CheckExecutionInvariantFailure\n ? error\n : new CheckExecutionInvariantFailure(\n \"Check execution adapter escaped its contained failure boundary\"\n );\n}\n\nfunction resolvedExecution(\n kind: ResolvedCheckExecution[\"kind\"],\n snapshot: CoreSnapshot,\n state: CheckExecutionState\n): ResolvedCheckExecution {\n return Object.freeze({\n kind,\n ...checkRunSummaries(snapshot, state.settledFactsByCheckId),\n snapshot\n });\n}\n\nfunction settleUnstartedCancelledChecks(\n input: Readonly<{\n readonly normalizedChecks: readonly NormalizedCheck[];\n readonly preparedChecks: readonly PreparedCheck[];\n readonly snapshot: CoreSnapshot;\n readonly state: CheckExecutionState;\n }>\n): void {\n const normalizedByCheckId = new Map(\n input.normalizedChecks.map((check) => [check.definition.checkId, check])\n );\n const preparedByCheckId = new Map(\n input.preparedChecks.map((check) => [check.definition.checkId, check])\n );\n for (const check of input.snapshot.checks) {\n if (input.state.settledFactsByCheckId.has(check.checkId)) continue;\n const normalized = normalizedByCheckId.get(check.checkId);\n if (normalized === undefined) {\n throw new CheckExecutionInvariantFailure(\n \"Cancelled Check does not identify a normalized Check\"\n );\n }\n recordSettledCheck({\n check: checkIdentity(normalized),\n durationMs: null,\n messages: preparedByCheckId.get(check.checkId)?.preflightMessages ?? EMPTY_MESSAGES,\n outcome: check.outcome,\n phase: \"execution\",\n state: input.state\n });\n }\n}\n\nfunction checkRunSummaries(\n snapshot: CoreSnapshot,\n settledFactsByCheckId: ReadonlyMap<string, SettledCheckFacts>\n): Readonly<{\n readonly checkDurations: readonly CheckDuration[];\n readonly checkMessages: readonly CheckRunMessage[];\n}> {\n if (snapshot.checks.length !== settledFactsByCheckId.size) {\n throw new CheckExecutionInvariantFailure(\"Check settled facts do not close every Check\");\n }\n const checkDurations: CheckDuration[] = [];\n const messages: CheckRunMessage[] = [];\n for (const check of snapshot.checks) {\n const settledFacts = settledFactsByCheckId.get(check.checkId);\n if (settledFacts === undefined) {\n throw new CheckExecutionInvariantFailure(\"Check settled facts are missing a Check\");\n }\n checkDurations.push(\n Object.freeze({ checkId: check.checkId, durationMs: settledFacts.durationMs })\n );\n messages.push(\n ...settledFacts.messages.map((message) =>\n Object.freeze({ checkId: check.checkId, ...message })\n )\n );\n }\n return Object.freeze({\n checkDurations: Object.freeze(checkDurations),\n checkMessages: messages.length === 0 ? Object.freeze([]) : Object.freeze(messages)\n });\n}\n\nfunction assertNoTaskEngineFailures(settlements: readonly SettledTask<void>[]): void {\n for (const settled of settlements) {\n if (settled.settlement.kind === \"failed\") {\n throw new CheckExecutionInvariantFailure(\n \"Task engine received an unexpected execution failure\"\n );\n }\n if (settled.settlement.kind === \"blocked\") {\n throw new CheckExecutionInvariantFailure(\"Task engine blocked a Product Check\");\n }\n }\n}\n\nfunction assertEveryCheckClosed(\n checks: readonly NormalizedCheck[],\n settlements: readonly SettledTask<void>[]\n): void {\n if (settlements.some((settled) => settled.settlement.kind === \"cancelled-before-start\")) {\n throw new CheckExecutionInvariantFailure(\"Non-cancelled Task graph left a Check unstarted\");\n }\n if (checks.length !== settlements.length) {\n throw new CheckExecutionInvariantFailure(\n \"Task graph does not have one Task per executable Check\"\n );\n }\n}\n"]}
1
+ {"version":3,"file":"execution-finalization.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/execution-finalization.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CheckMessage } from \"../../check/check.ts\";\nimport type { CoreSnapshot } from \"../../check-settlement/facts.ts\";\nimport type {\n NormalizedCheck,\n SchedulerMeasurementContext\n} from \"../../project-definition/project-definition.ts\";\nimport type { SettledTask } from \"../task-scheduler/scheduler.ts\";\nimport type { CheckDuration, CheckRunMessage } from \"../result.ts\";\nimport {\n CheckExecutionInvariantFailure,\n recordSettledCheck,\n type CheckIdentity,\n type CheckExecutionState,\n type SettledCheckFacts\n} from \"./execution-settlement.ts\";\nimport type { ResolvedCheckExecution } from \"./resolved-execution-result.ts\";\n\nconst EMPTY_MESSAGES: readonly CheckMessage[] = Object.freeze([]);\n\n/** Closes the task graph, lifecycle facts, and canonical Check summaries as one Run boundary. */\nexport function closeResolvedChecks(\n input: Readonly<{\n readonly allChecks: readonly NormalizedCheck[];\n readonly effectiveCheckIds: readonly string[];\n readonly graphRun: Awaited<\n ReturnType<typeof import(\"../task-scheduler/scheduler.ts\").runTaskGraph<boolean>>\n >;\n readonly state: CheckExecutionState;\n }>\n): ResolvedCheckExecution {\n try {\n assertNoTaskEngineFailures(input.graphRun.settlements);\n if (input.graphRun.admissionPolicyFault !== undefined) {\n return closeAdmissionPolicyFailed({\n normalizedChecks: input.allChecks,\n state: input.state,\n terminalSchedulerMeasurement: input.graphRun.terminalMeasurement\n });\n }\n if (input.graphRun.cancelled) {\n return closeCancelledExecution({\n normalizedChecks: input.allChecks,\n state: input.state,\n terminalSchedulerMeasurement: input.graphRun.terminalMeasurement\n });\n }\n assertEveryCheckClosed(input.allChecks, input.graphRun.settlements);\n return completedResolvedExecution(\n input.effectiveCheckIds,\n input.state.session.freeze(),\n input.state,\n input.graphRun.terminalMeasurement\n );\n } catch (error) {\n throw trustedFailure(error);\n }\n}\n\nexport function closeAdmissionPolicyFailed(\n input: Readonly<{\n readonly normalizedChecks: readonly NormalizedCheck[];\n readonly state: CheckExecutionState;\n readonly terminalSchedulerMeasurement?: SchedulerMeasurementContext;\n }>\n): ResolvedCheckExecution {\n input.state.session.closeUnresolvedAsCancelled();\n const snapshot = input.state.session.freeze();\n settleUnstartedCancelledChecks({ ...input, snapshot });\n return resolvedExecution(\n \"admission-policy-failed\",\n snapshot,\n input.state,\n input.terminalSchedulerMeasurement\n );\n}\n\nexport function closeCancelledExecution(\n input: Readonly<{\n readonly normalizedChecks: readonly NormalizedCheck[];\n readonly state: CheckExecutionState;\n readonly terminalSchedulerMeasurement?: SchedulerMeasurementContext;\n }>\n): ResolvedCheckExecution {\n input.state.session.closeUnresolvedAsCancelled();\n const snapshot = input.state.session.freeze();\n settleUnstartedCancelledChecks({ ...input, snapshot });\n return resolvedExecution(\"cancelled\", snapshot, input.state, input.terminalSchedulerMeasurement);\n}\n\nexport function checkIdentity(\n check: Pick<NormalizedCheck, \"definition\" | \"visibility\">\n): CheckIdentity {\n return Object.freeze({\n checkId: check.definition.checkId,\n displayName: check.definition.displayName,\n visibility: check.visibility\n });\n}\n\nexport function trustedFailure(error: unknown): CheckExecutionInvariantFailure {\n return error instanceof CheckExecutionInvariantFailure\n ? error\n : new CheckExecutionInvariantFailure(\n \"Check execution adapter escaped its contained failure boundary\"\n );\n}\n\nfunction resolvedExecution(\n kind: Exclude<ResolvedCheckExecution[\"kind\"], \"completed\">,\n snapshot: CoreSnapshot,\n state: CheckExecutionState,\n terminalSchedulerMeasurement: SchedulerMeasurementContext | undefined\n): ResolvedCheckExecution {\n return Object.freeze({\n kind,\n ...checkRunSummaries(snapshot, state.settledFactsByCheckId),\n snapshot,\n ...(terminalSchedulerMeasurement === undefined ? {} : { terminalSchedulerMeasurement })\n });\n}\n\nfunction completedResolvedExecution(\n effectiveCheckIds: readonly string[],\n snapshot: CoreSnapshot,\n state: CheckExecutionState,\n terminalSchedulerMeasurement: SchedulerMeasurementContext | undefined\n): Extract<ResolvedCheckExecution, { readonly kind: \"completed\" }> {\n return Object.freeze({\n kind: \"completed\",\n ...checkRunSummaries(snapshot, state.settledFactsByCheckId),\n effectiveCheckIds,\n snapshot,\n ...(terminalSchedulerMeasurement === undefined ? {} : { terminalSchedulerMeasurement })\n });\n}\n\nfunction settleUnstartedCancelledChecks(\n input: Readonly<{\n readonly normalizedChecks: readonly NormalizedCheck[];\n readonly snapshot: CoreSnapshot;\n readonly state: CheckExecutionState;\n }>\n): void {\n const normalizedByCheckId = new Map(\n input.normalizedChecks.map((check) => [check.definition.checkId, check])\n );\n for (const check of input.snapshot.checks) {\n if (input.state.settledFactsByCheckId.has(check.checkId)) continue;\n const normalized = normalizedByCheckId.get(check.checkId);\n if (normalized === undefined) {\n throw new CheckExecutionInvariantFailure(\n \"Cancelled Check does not identify a normalized Check\"\n );\n }\n recordSettledCheck({\n check: checkIdentity(normalized),\n durationMs: null,\n messages: EMPTY_MESSAGES,\n outcome: check.outcome,\n phase: \"execution\",\n state: input.state\n });\n }\n}\n\nfunction checkRunSummaries(\n snapshot: CoreSnapshot,\n settledFactsByCheckId: ReadonlyMap<string, SettledCheckFacts>\n): Readonly<{\n readonly checkDurations: readonly CheckDuration[];\n readonly checkMessages: readonly CheckRunMessage[];\n}> {\n if (snapshot.checks.length !== settledFactsByCheckId.size) {\n throw new CheckExecutionInvariantFailure(\"Check settled facts do not close every Check\");\n }\n const checkDurations: CheckDuration[] = [];\n const messages: CheckRunMessage[] = [];\n for (const check of snapshot.checks) {\n const settledFacts = settledFactsByCheckId.get(check.checkId);\n if (settledFacts === undefined) {\n throw new CheckExecutionInvariantFailure(\"Check settled facts are missing a Check\");\n }\n checkDurations.push(\n Object.freeze({\n checkId: check.checkId,\n durationMs: settledFacts.durationMs\n })\n );\n messages.push(\n ...settledFacts.messages.map((message) =>\n Object.freeze({ checkId: check.checkId, ...message })\n )\n );\n }\n return Object.freeze({\n checkDurations: Object.freeze(checkDurations),\n checkMessages: messages.length === 0 ? Object.freeze([]) : Object.freeze(messages)\n });\n}\n\n/** Closes one Scheduler-blocked Check before a terminal observer may start. */\nexport function settleBlockedDependent(\n input: Readonly<{\n readonly check: NormalizedCheck;\n readonly dependencyIds: readonly string[];\n readonly state: CheckExecutionState;\n }>\n): void {\n const scope = input.state.session.openCheckScope(input.check.definition.checkId);\n const outcome = scope.settleProduct(\n Object.freeze({\n status: \"unavailable\" as const,\n reason: Object.freeze({\n code: \"dependency-not-passed\",\n checkIds: Object.freeze([...input.dependencyIds])\n })\n })\n );\n recordSettledCheck({\n check: checkIdentity(input.check),\n durationMs: null,\n messages: EMPTY_MESSAGES,\n outcome,\n phase: \"dependency\",\n state: input.state\n });\n}\n\nfunction assertNoTaskEngineFailures(settlements: readonly SettledTask<boolean>[]): void {\n for (const settled of settlements) {\n if (settled.settlement.kind === \"failed\") {\n throw new CheckExecutionInvariantFailure(\n \"Task engine received an unexpected execution failure\"\n );\n }\n }\n}\n\nfunction assertEveryCheckClosed(\n checks: readonly NormalizedCheck[],\n settlements: readonly SettledTask<boolean>[]\n): void {\n if (settlements.some((settled) => settled.settlement.kind === \"cancelled-before-start\")) {\n throw new CheckExecutionInvariantFailure(\"Non-cancelled Task graph left a Check unstarted\");\n }\n if (checks.length !== settlements.length) {\n throw new CheckExecutionInvariantFailure(\n \"Task graph does not have one Task per executable Check\"\n );\n }\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  import { diagnosticTags, summarizeDiagnosticValue } from "../diagnostic-logging/logger.mjs";
2
2
  import { parseCheckTerminalResult } from "./terminal-result.mjs";
3
+ import { combineCheckMessages } from "./messages.mjs";
3
4
  export class CheckExecutionInvariantFailure extends Error {
4
5
  constructor(message) {
5
6
  super(message);
@@ -11,7 +12,10 @@ export function settleCallback(input) {
11
12
  const { callback } = input;
12
13
  if (callback.source === "product") {
13
14
  const outcome = input.scope.settleProduct(callback.result);
14
- return Object.freeze({ messages: input.preflightMessages, outcome });
15
+ return Object.freeze({
16
+ messages: combineCheckMessages(input.preflightMessages, callback.consoleMessages),
17
+ outcome
18
+ });
15
19
  }
16
20
  const terminal = parseCheckTerminalResult(callback.result);
17
21
  if (terminal === undefined) {
@@ -31,8 +35,8 @@ export function settleCallback(input) {
31
35
  }
32
36
  return Object.freeze({
33
37
  messages: terminal !== undefined && settlement.authorResultAccepted
34
- ? Object.freeze([...input.preflightMessages, ...terminal.messages])
35
- : input.preflightMessages,
38
+ ? combineCheckMessages(input.preflightMessages, callback.consoleMessages, terminal.messages)
39
+ : combineCheckMessages(input.preflightMessages, callback.consoleMessages),
36
40
  outcome: settlement.outcome
37
41
  });
38
42
  }
@@ -47,7 +51,8 @@ export function recordSettledCheck(input) {
47
51
  tags: diagnosticTags(`CHECK:${input.check.checkId}`, input.phase.toUpperCase(), "FINISHED", input.outcome.status.toUpperCase()),
48
52
  details: {
49
53
  durationMs: input.durationMs,
50
- ...(input.messages.length === 0 ? {} : { messages: input.messages }),
54
+ messageCount: input.messages.length,
55
+ phase: input.phase,
51
56
  ...diagnosticSettledOutcome(input.outcome)
52
57
  }
53
58
  });
@@ -57,6 +62,7 @@ export function recordSettledCheck(input) {
57
62
  outcome: input.outcome,
58
63
  durationMs: input.durationMs,
59
64
  messages: input.messages,
65
+ records: input.state.session.readSettledCheckRecords(input.check.checkId),
60
66
  visibility: input.check.visibility
61
67
  }));
62
68
  }
@@ -64,13 +70,11 @@ function diagnosticSettledOutcome(outcome) {
64
70
  switch (outcome.status) {
65
71
  case "passed":
66
72
  case "failed":
67
- return Object.freeze({ data: summarizeDiagnosticValue(outcome.data) });
73
+ return Object.freeze({ status: outcome.status });
68
74
  case "not-applicable":
69
- return outcome.reason === undefined
70
- ? Object.freeze({})
71
- : Object.freeze({ reason: outcome.reason });
75
+ return Object.freeze({ reasonCode: outcome.reason?.code ?? null, status: outcome.status });
72
76
  case "unavailable":
73
- return Object.freeze({ reason: outcome.reason });
77
+ return Object.freeze({ reasonCode: outcome.reason.code, status: outcome.status });
74
78
  }
75
79
  }
76
80
  function diagnosticOutcome(outcome) {
@@ -1 +1 @@
1
- {"version":3,"file":"execution-settlement.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/execution-settlement.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CheckMessage, CheckOutcome, CheckVisibility } from \"../../check/check.ts\";\nimport type { CoreCheckSession } from \"../../check-settlement/session.ts\";\nimport {\n diagnosticTags,\n summarizeDiagnosticValue,\n type DiagnosticLogger\n} from \"../diagnostic-logging/logger.ts\";\nimport { parseCheckTerminalResult } from \"./terminal-result.ts\";\nimport type { CheckExecutionLifecycle } from \"./resolved-checks.ts\";\nimport type { executeCheckCallback } from \"./callback.ts\";\n\nexport type CheckIdentity = Readonly<{\n readonly checkId: string;\n readonly displayName: string;\n readonly visibility: CheckVisibility;\n}>;\n\nexport interface SettledCheckFacts {\n readonly durationMs: number | null;\n readonly messages: readonly CheckMessage[];\n}\n\nexport type CheckExecutionSettlementState = Readonly<{\n readonly diagnosticLogger: DiagnosticLogger | undefined;\n readonly lifecycle: CheckExecutionLifecycle | undefined;\n readonly settledFactsByCheckId: Map<string, SettledCheckFacts>;\n}>;\n\nexport class CheckExecutionInvariantFailure extends Error {\n public constructor(message: string) {\n super(message);\n this.name = \"CheckExecutionInvariantFailure\";\n }\n}\n\nexport function settleCallback(\n input: Readonly<{\n readonly callback: Awaited<ReturnType<typeof executeCheckCallback>>;\n readonly checkId: string;\n readonly diagnosticLogger: DiagnosticLogger | undefined;\n readonly preflightMessages: readonly CheckMessage[];\n readonly scope: ReturnType<CoreCheckSession[\"openCheckScope\"]>;\n }>\n): Readonly<{ readonly messages: readonly CheckMessage[]; readonly outcome: CheckOutcome }> {\n const executionTags = diagnosticTags(`CHECK:${input.checkId}`, \"EXECUTION\");\n const { callback } = input;\n if (callback.source === \"product\") {\n const outcome = input.scope.settleProduct(callback.result);\n return Object.freeze({ messages: input.preflightMessages, outcome });\n }\n const terminal = parseCheckTerminalResult(callback.result);\n if (terminal === undefined) {\n input.diagnosticLogger?.observe({\n event: \"callback.malformed\",\n tags: diagnosticTags(...executionTags, \"MALFORMED\"),\n details: { result: callback.result }\n });\n }\n const settlement = input.scope.settle(terminal?.result ?? callback.result);\n if (terminal !== undefined && !settlement.authorResultAccepted) {\n input.diagnosticLogger?.observe({\n event: \"check.contained\",\n tags: diagnosticTags(...executionTags, \"CONTAINED\"),\n details: { outcome: diagnosticOutcome(settlement.outcome), raw: callback.result }\n });\n }\n return Object.freeze({\n messages:\n terminal !== undefined && settlement.authorResultAccepted\n ? Object.freeze([...input.preflightMessages, ...terminal.messages])\n : input.preflightMessages,\n outcome: settlement.outcome\n });\n}\n\n/** Records one terminal Check lifecycle fact after its owning Core scope has closed. */\nexport function recordSettledCheck(\n input: Readonly<{\n readonly check: CheckIdentity;\n readonly durationMs: number | null;\n readonly messages: readonly CheckMessage[];\n readonly outcome: CheckOutcome;\n readonly phase: \"execution\" | \"preflight\";\n readonly state: CheckExecutionSettlementState;\n }>\n): void {\n if (input.state.settledFactsByCheckId.has(input.check.checkId)) {\n throw new CheckExecutionInvariantFailure(\"Check lifecycle settled more than once\");\n }\n input.state.settledFactsByCheckId.set(\n input.check.checkId,\n Object.freeze({ durationMs: input.durationMs, messages: input.messages })\n );\n input.state.diagnosticLogger?.observe({\n event: \"check.finished\",\n tags: diagnosticTags(\n `CHECK:${input.check.checkId}`,\n input.phase.toUpperCase(),\n \"FINISHED\",\n input.outcome.status.toUpperCase()\n ),\n details: {\n durationMs: input.durationMs,\n ...(input.messages.length === 0 ? {} : { messages: input.messages }),\n ...diagnosticSettledOutcome(input.outcome)\n }\n });\n input.state.lifecycle?.settled(\n Object.freeze({\n checkId: input.check.checkId,\n displayName: input.check.displayName,\n outcome: input.outcome,\n durationMs: input.durationMs,\n messages: input.messages,\n visibility: input.check.visibility\n })\n );\n}\n\nfunction diagnosticSettledOutcome(outcome: CheckOutcome): Readonly<Record<string, unknown>> {\n switch (outcome.status) {\n case \"passed\":\n case \"failed\":\n return Object.freeze({ data: summarizeDiagnosticValue(outcome.data) });\n case \"not-applicable\":\n return outcome.reason === undefined\n ? Object.freeze({})\n : Object.freeze({ reason: outcome.reason });\n case \"unavailable\":\n return Object.freeze({ reason: outcome.reason });\n }\n}\n\nfunction diagnosticOutcome(outcome: CheckOutcome): Readonly<Record<string, unknown>> {\n switch (outcome.status) {\n case \"passed\":\n case \"failed\":\n return Object.freeze({\n data: summarizeDiagnosticValue(outcome.data),\n status: outcome.status\n });\n case \"not-applicable\":\n return Object.freeze({ reason: outcome.reason ?? null, status: outcome.status });\n case \"unavailable\":\n return Object.freeze({ reason: outcome.reason, status: outcome.status });\n }\n}\n"]}
1
+ {"version":3,"file":"execution-settlement.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/execution-settlement.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CheckMessage, CheckOutcome, CheckVisibility } from \"../../check/check.ts\";\nimport type { CoreCheckSession } from \"../../check-settlement/session.ts\";\nimport {\n diagnosticTags,\n summarizeDiagnosticValue,\n type DiagnosticLogger\n} from \"../diagnostic-logging/logger.ts\";\nimport { parseCheckTerminalResult } from \"./terminal-result.ts\";\nimport { combineCheckMessages } from \"./messages.ts\";\nimport type { CheckExecutionLifecycle } from \"./lifecycle.ts\";\nimport type { executeCheckCallback } from \"./callback.ts\";\n\nexport type CheckIdentity = Readonly<{\n readonly checkId: string;\n readonly displayName: string;\n readonly visibility: CheckVisibility;\n}>;\n\nexport interface SettledCheckFacts {\n readonly durationMs: number | null;\n readonly messages: readonly CheckMessage[];\n}\n\nexport type CheckExecutionSettlementState = Readonly<{\n readonly session: CoreCheckSession;\n readonly diagnosticLogger: DiagnosticLogger | undefined;\n readonly lifecycle: CheckExecutionLifecycle | undefined;\n readonly settledFactsByCheckId: Map<string, SettledCheckFacts>;\n}>;\n\n/** Mutable execution session state shared by execution and terminal finalization. */\nexport type CheckExecutionState = CheckExecutionSettlementState;\n\nexport class CheckExecutionInvariantFailure extends Error {\n public constructor(message: string) {\n super(message);\n this.name = \"CheckExecutionInvariantFailure\";\n }\n}\n\nexport function settleCallback(\n input: Readonly<{\n readonly callback: Awaited<ReturnType<typeof executeCheckCallback>>;\n readonly checkId: string;\n readonly diagnosticLogger: DiagnosticLogger | undefined;\n readonly preflightMessages: readonly CheckMessage[];\n readonly scope: ReturnType<CoreCheckSession[\"openCheckScope\"]>;\n }>\n): Readonly<{ readonly messages: readonly CheckMessage[]; readonly outcome: CheckOutcome }> {\n const executionTags = diagnosticTags(`CHECK:${input.checkId}`, \"EXECUTION\");\n const { callback } = input;\n if (callback.source === \"product\") {\n const outcome = input.scope.settleProduct(callback.result);\n return Object.freeze({\n messages: combineCheckMessages(input.preflightMessages, callback.consoleMessages),\n outcome\n });\n }\n const terminal = parseCheckTerminalResult(callback.result);\n if (terminal === undefined) {\n input.diagnosticLogger?.observe({\n event: \"callback.malformed\",\n tags: diagnosticTags(...executionTags, \"MALFORMED\"),\n details: { result: callback.result }\n });\n }\n const settlement = input.scope.settle(terminal?.result ?? callback.result);\n if (terminal !== undefined && !settlement.authorResultAccepted) {\n input.diagnosticLogger?.observe({\n event: \"check.contained\",\n tags: diagnosticTags(...executionTags, \"CONTAINED\"),\n details: { outcome: diagnosticOutcome(settlement.outcome), raw: callback.result }\n });\n }\n return Object.freeze({\n messages:\n terminal !== undefined && settlement.authorResultAccepted\n ? combineCheckMessages(input.preflightMessages, callback.consoleMessages, terminal.messages)\n : combineCheckMessages(input.preflightMessages, callback.consoleMessages),\n outcome: settlement.outcome\n });\n}\n\n/** Records one terminal Check lifecycle fact after its owning Core scope has closed. */\nexport function recordSettledCheck(\n input: Readonly<{\n readonly check: CheckIdentity;\n readonly durationMs: number | null;\n readonly messages: readonly CheckMessage[];\n readonly outcome: CheckOutcome;\n readonly phase: \"control\" | \"dependency\" | \"execution\" | \"preflight\";\n readonly state: CheckExecutionSettlementState;\n }>\n): void {\n if (input.state.settledFactsByCheckId.has(input.check.checkId)) {\n throw new CheckExecutionInvariantFailure(\"Check lifecycle settled more than once\");\n }\n input.state.settledFactsByCheckId.set(\n input.check.checkId,\n Object.freeze({ durationMs: input.durationMs, messages: input.messages })\n );\n input.state.diagnosticLogger?.observe({\n event: \"check.finished\",\n tags: diagnosticTags(\n `CHECK:${input.check.checkId}`,\n input.phase.toUpperCase(),\n \"FINISHED\",\n input.outcome.status.toUpperCase()\n ),\n details: {\n durationMs: input.durationMs,\n messageCount: input.messages.length,\n phase: input.phase,\n ...diagnosticSettledOutcome(input.outcome)\n }\n });\n input.state.lifecycle?.settled(\n Object.freeze({\n checkId: input.check.checkId,\n displayName: input.check.displayName,\n outcome: input.outcome,\n durationMs: input.durationMs,\n messages: input.messages,\n records: input.state.session.readSettledCheckRecords(input.check.checkId),\n visibility: input.check.visibility\n })\n );\n}\n\nfunction diagnosticSettledOutcome(outcome: CheckOutcome): Readonly<Record<string, unknown>> {\n switch (outcome.status) {\n case \"passed\":\n case \"failed\":\n return Object.freeze({ status: outcome.status });\n case \"not-applicable\":\n return Object.freeze({ reasonCode: outcome.reason?.code ?? null, status: outcome.status });\n case \"unavailable\":\n return Object.freeze({ reasonCode: outcome.reason.code, status: outcome.status });\n }\n}\n\nfunction diagnosticOutcome(outcome: CheckOutcome): Readonly<Record<string, unknown>> {\n switch (outcome.status) {\n case \"passed\":\n case \"failed\":\n return Object.freeze({\n data: summarizeDiagnosticValue(outcome.data),\n status: outcome.status\n });\n case \"not-applicable\":\n return Object.freeze({ reason: outcome.reason ?? null, status: outcome.status });\n case \"unavailable\":\n return Object.freeze({ reason: outcome.reason, status: outcome.status });\n }\n}\n"]}
@@ -0,0 +1,87 @@
1
+ import { diagnosticTags } from "../diagnostic-logging/logger.mjs";
2
+ export const FLAG_CONDITION_NOT_MATCHED_CODE = "flag-condition-not-matched";
3
+ /**
4
+ * Selects canonical Check IDs for direct flag matches and their opt-in
5
+ * `dependsOn` closures after complete static graph validation.
6
+ */
7
+ export function selectEffectiveCheckIds(checks, flags) {
8
+ const expandedCheckIds = new Set();
9
+ const selectedCheckIds = new Set();
10
+ const checksByCheckId = new Map(checks.map((check) => [check.definition.checkId, check]));
11
+ for (const check of checks) {
12
+ const enablement = check.enabledByFlags;
13
+ if (enablement !== undefined && !matchesFlagEnablement(enablement, flags))
14
+ continue;
15
+ if (enablement?.propagateDependsOn === true) {
16
+ selectCheckAndDependsOnClosure(check, checksByCheckId, expandedCheckIds, selectedCheckIds);
17
+ continue;
18
+ }
19
+ selectedCheckIds.add(check.definition.checkId);
20
+ }
21
+ return Object.freeze([...selectedCheckIds].sort());
22
+ }
23
+ /** Resolves all flag-controlled outcomes before Scheduler admission or Check-owned work. */
24
+ export function resolveFlagControlSettlements(input) {
25
+ if (input.signal?.aborted === true)
26
+ return Object.freeze([]);
27
+ const settlements = [];
28
+ const selectedCheckIds = new Set(input.effectiveCheckIds);
29
+ for (const check of input.checks) {
30
+ const settlement = resolveFlagControl(check, selectedCheckIds);
31
+ if (settlement === undefined)
32
+ continue;
33
+ settlements.push(settlement);
34
+ input.diagnosticLogger?.observe({
35
+ event: "control.resolved",
36
+ tags: diagnosticTags(`CHECK:${check.definition.checkId}`, "CONTROL", FLAG_CONDITION_NOT_MATCHED_CODE.toUpperCase()),
37
+ details: {
38
+ enabledByFlags: check.enabledByFlags,
39
+ outcome: settlement.outcome
40
+ }
41
+ });
42
+ }
43
+ return Object.freeze(settlements);
44
+ }
45
+ function resolveFlagControl(check, selectedCheckIds) {
46
+ if (check.enabledByFlags === undefined || selectedCheckIds.has(check.definition.checkId)) {
47
+ return undefined;
48
+ }
49
+ return Object.freeze({
50
+ check: Object.freeze({
51
+ definition: check.definition,
52
+ visibility: check.visibility
53
+ }),
54
+ outcome: Object.freeze({
55
+ status: "not-applicable",
56
+ reason: Object.freeze({ code: FLAG_CONDITION_NOT_MATCHED_CODE })
57
+ })
58
+ });
59
+ }
60
+ function selectCheckAndDependsOnClosure(check, checksByCheckId, expandedCheckIds, selectedCheckIds) {
61
+ const checkId = check.definition.checkId;
62
+ if (expandedCheckIds.has(checkId))
63
+ return;
64
+ expandedCheckIds.add(checkId);
65
+ selectedCheckIds.add(checkId);
66
+ for (const dependencyId of check.dependsOn) {
67
+ const dependency = checksByCheckId.get(dependencyId);
68
+ if (dependency === undefined) {
69
+ throw new Error("Validated Check graph has an unavailable dependency");
70
+ }
71
+ selectCheckAndDependsOnClosure(dependency, checksByCheckId, expandedCheckIds, selectedCheckIds);
72
+ }
73
+ }
74
+ function matchesFlagEnablement(enablement, runFlags) {
75
+ const isPresentInRun = (flag) => runFlags.includes(flag);
76
+ switch (enablement.mode) {
77
+ case "all":
78
+ return enablement.flags.every(isPresentInRun);
79
+ case "any":
80
+ return enablement.flags.some(isPresentInRun);
81
+ case "none":
82
+ return !enablement.flags.some(isPresentInRun);
83
+ case "not-all":
84
+ return !enablement.flags.every(isPresentInRun);
85
+ }
86
+ }
87
+ //# sourceMappingURL=flag-controls.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flag-controls.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/flag-controls.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NormalizedCheck } from \"../../project-definition/project-definition.ts\";\nimport { diagnosticTags, type DiagnosticLogger } from \"../diagnostic-logging/logger.ts\";\n\nexport const FLAG_CONDITION_NOT_MATCHED_CODE = \"flag-condition-not-matched\";\n\ntype FlagControlledCheck = Pick<NormalizedCheck, \"definition\" | \"visibility\">;\ntype FlagControlOutcome = Readonly<{\n readonly status: \"not-applicable\";\n readonly reason: Readonly<{ readonly code: typeof FLAG_CONDITION_NOT_MATCHED_CODE }>;\n}>;\n\nexport type FlagControlSettlement = Readonly<{\n readonly check: FlagControlledCheck;\n readonly outcome: FlagControlOutcome;\n}>;\n\n/**\n * Selects canonical Check IDs for direct flag matches and their opt-in\n * `dependsOn` closures after complete static graph validation.\n */\nexport function selectEffectiveCheckIds(\n checks: readonly NormalizedCheck[],\n flags: readonly string[]\n): readonly string[] {\n const expandedCheckIds = new Set<string>();\n const selectedCheckIds = new Set<string>();\n const checksByCheckId = new Map(\n checks.map((check) => [check.definition.checkId, check] as const)\n );\n\n for (const check of checks) {\n const enablement = check.enabledByFlags;\n if (enablement !== undefined && !matchesFlagEnablement(enablement, flags)) continue;\n\n if (enablement?.propagateDependsOn === true) {\n selectCheckAndDependsOnClosure(check, checksByCheckId, expandedCheckIds, selectedCheckIds);\n continue;\n }\n selectedCheckIds.add(check.definition.checkId);\n }\n\n return Object.freeze([...selectedCheckIds].sort());\n}\n\n/** Resolves all flag-controlled outcomes before Scheduler admission or Check-owned work. */\nexport function resolveFlagControlSettlements(\n input: Readonly<{\n readonly checks: readonly NormalizedCheck[];\n readonly diagnosticLogger?: DiagnosticLogger;\n readonly effectiveCheckIds: readonly string[];\n readonly signal: AbortSignal | undefined;\n }>\n): readonly FlagControlSettlement[] {\n if (input.signal?.aborted === true) return Object.freeze([]);\n\n const settlements: FlagControlSettlement[] = [];\n const selectedCheckIds = new Set(input.effectiveCheckIds);\n for (const check of input.checks) {\n const settlement = resolveFlagControl(check, selectedCheckIds);\n if (settlement === undefined) continue;\n settlements.push(settlement);\n input.diagnosticLogger?.observe({\n event: \"control.resolved\",\n tags: diagnosticTags(\n `CHECK:${check.definition.checkId}`,\n \"CONTROL\",\n FLAG_CONDITION_NOT_MATCHED_CODE.toUpperCase()\n ),\n details: {\n enabledByFlags: check.enabledByFlags,\n outcome: settlement.outcome\n }\n });\n }\n return Object.freeze(settlements);\n}\n\nfunction resolveFlagControl(\n check: NormalizedCheck,\n selectedCheckIds: ReadonlySet<string>\n): FlagControlSettlement | undefined {\n if (check.enabledByFlags === undefined || selectedCheckIds.has(check.definition.checkId)) {\n return undefined;\n }\n return Object.freeze({\n check: Object.freeze({\n definition: check.definition,\n visibility: check.visibility\n }),\n outcome: Object.freeze({\n status: \"not-applicable\",\n reason: Object.freeze({ code: FLAG_CONDITION_NOT_MATCHED_CODE })\n })\n });\n}\n\nfunction selectCheckAndDependsOnClosure(\n check: NormalizedCheck,\n checksByCheckId: ReadonlyMap<string, NormalizedCheck>,\n expandedCheckIds: Set<string>,\n selectedCheckIds: Set<string>\n): void {\n const checkId = check.definition.checkId;\n if (expandedCheckIds.has(checkId)) return;\n expandedCheckIds.add(checkId);\n selectedCheckIds.add(checkId);\n\n for (const dependencyId of check.dependsOn) {\n const dependency = checksByCheckId.get(dependencyId);\n if (dependency === undefined) {\n throw new Error(\"Validated Check graph has an unavailable dependency\");\n }\n selectCheckAndDependsOnClosure(dependency, checksByCheckId, expandedCheckIds, selectedCheckIds);\n }\n}\n\nfunction matchesFlagEnablement(\n enablement: NonNullable<NormalizedCheck[\"enabledByFlags\"]>,\n runFlags: readonly string[]\n): boolean {\n const isPresentInRun = (flag: string): boolean => runFlags.includes(flag);\n switch (enablement.mode) {\n case \"all\":\n return enablement.flags.every(isPresentInRun);\n case \"any\":\n return enablement.flags.some(isPresentInRun);\n case \"none\":\n return !enablement.flags.some(isPresentInRun);\n case \"not-all\":\n return !enablement.flags.every(isPresentInRun);\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=lifecycle.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/lifecycle.ts"],"names":[],"mappings":"","sourcesContent":["import type { CheckMessage, CheckOutcome, CheckVisibility } from \"../../check/check.ts\";\nimport type { CoreRecord } from \"../../check-settlement/facts.ts\";\n\n/** Private Run handoff for Check lifecycle presentation and accounting. */\nexport type CheckExecutionLifecycle = Readonly<{\n /** Fires after the invocation-wide flag-control phase and before Scheduler execution starts. */\n readonly flagControlCompleted: () => void;\n readonly started: (fact: CheckStartedFact) => void;\n readonly settled: (fact: CheckSettledFact) => void;\n}>;\n\nexport type CheckStartedFact = Readonly<{ checkId: string; displayName: string }>;\n\nexport type CheckSettledFact = CheckStartedFact &\n Readonly<{\n durationMs: number | null;\n messages: readonly CheckMessage[];\n records: readonly CoreRecord[];\n outcome: CheckOutcome;\n visibility: CheckVisibility;\n }>;\n"]}
@@ -1,5 +1,10 @@
1
1
  import { hasRequiredAndOptionalRecordKeys, snapshotClosedArray, snapshotClosedRecord } from "../../data-boundary/closed-values.mjs";
2
2
  const EMPTY_MESSAGES = Object.freeze([]);
3
+ /** Preserves phase-local order while avoiding mutable or per-call empty message collections. */
4
+ export function combineCheckMessages(...collections) {
5
+ const messages = collections.flat();
6
+ return messages.length === 0 ? EMPTY_MESSAGES : Object.freeze(messages);
7
+ }
3
8
  /** Parses the shared closed Check-message attachment without retaining author input. */
4
9
  export function parseCheckMessages(value) {
5
10
  if (value === undefined)
@@ -1 +1 @@
1
- {"version":3,"file":"messages.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/messages.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gCAAgC,EAChC,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,sCAAsC,CAAC;AAE9C,MAAM,cAAc,GAA4B,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAElE,wFAAwF;AACxF,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,cAAc,CAAC;IAC/C,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,gBAAgB,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAErD,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,KAAK,MAAM,eAAe,IAAI,gBAAgB,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC;QACjD,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC5C,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC5C,IACE,OAAO,KAAK,SAAS;QACrB,CAAC,gCAAgC,CAAC,OAAO,EAAE;YACzC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC;YACtC,QAAQ,EAAE,EAAE;SACb,CAAC;QACF,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC;QACnC,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;QAChC,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QACzB,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;QACnC,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAC5B,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AAC/F,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IACzC,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,OAAO,CAAC;AACtE,CAAC","sourcesContent":["import type { CheckMessage } from \"../../check/check.ts\";\nimport {\n hasRequiredAndOptionalRecordKeys,\n snapshotClosedArray,\n snapshotClosedRecord\n} from \"../../data-boundary/closed-values.ts\";\n\nconst EMPTY_MESSAGES: readonly CheckMessage[] = Object.freeze([]);\n\n/** Parses the shared closed Check-message attachment without retaining author input. */\nexport function parseCheckMessages(value: unknown): readonly CheckMessage[] | undefined {\n if (value === undefined) return EMPTY_MESSAGES;\n const authoredMessages = snapshotClosedArray(value);\n if (authoredMessages === undefined) return undefined;\n\n const messages: CheckMessage[] = [];\n for (const authoredMessage of authoredMessages) {\n const message = detachedMessage(authoredMessage);\n if (message === undefined) return undefined;\n messages.push(message);\n }\n return messages.length === 0 ? EMPTY_MESSAGES : Object.freeze(messages);\n}\n\nfunction detachedMessage(value: unknown): CheckMessage | undefined {\n const message = snapshotClosedRecord(value);\n if (\n message === undefined ||\n !hasRequiredAndOptionalRecordKeys(message, {\n required: [\"level\", \"code\", \"message\"],\n optional: []\n }) ||\n !isCheckMessageLevel(message.level) ||\n typeof message.code !== \"string\" ||\n message.code.length === 0 ||\n typeof message.message !== \"string\" ||\n message.message.length === 0\n ) {\n return undefined;\n }\n return Object.freeze({ code: message.code, level: message.level, message: message.message });\n}\n\nfunction isCheckMessageLevel(value: unknown): value is CheckMessage[\"level\"] {\n return value === \"info\" || value === \"warning\" || value === \"error\";\n}\n"]}
1
+ {"version":3,"file":"messages.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/messages.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gCAAgC,EAChC,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,sCAAsC,CAAC;AAE9C,MAAM,cAAc,GAA4B,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAElE,gGAAgG;AAChG,MAAM,UAAU,oBAAoB,CAClC,GAAG,WAAiD;IAEpD,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IACpC,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC1E,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,cAAc,CAAC;IAC/C,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,gBAAgB,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAErD,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,KAAK,MAAM,eAAe,IAAI,gBAAgB,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC;QACjD,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC5C,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC5C,IACE,OAAO,KAAK,SAAS;QACrB,CAAC,gCAAgC,CAAC,OAAO,EAAE;YACzC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC;YACtC,QAAQ,EAAE,EAAE;SACb,CAAC;QACF,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC;QACnC,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;QAChC,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QACzB,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;QACnC,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAC5B,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AAC/F,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IACzC,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,OAAO,CAAC;AACtE,CAAC","sourcesContent":["import type { CheckMessage } from \"../../check/check.ts\";\nimport {\n hasRequiredAndOptionalRecordKeys,\n snapshotClosedArray,\n snapshotClosedRecord\n} from \"../../data-boundary/closed-values.ts\";\n\nconst EMPTY_MESSAGES: readonly CheckMessage[] = Object.freeze([]);\n\n/** Preserves phase-local order while avoiding mutable or per-call empty message collections. */\nexport function combineCheckMessages(\n ...collections: readonly (readonly CheckMessage[])[]\n): readonly CheckMessage[] {\n const messages = collections.flat();\n return messages.length === 0 ? EMPTY_MESSAGES : Object.freeze(messages);\n}\n\n/** Parses the shared closed Check-message attachment without retaining author input. */\nexport function parseCheckMessages(value: unknown): readonly CheckMessage[] | undefined {\n if (value === undefined) return EMPTY_MESSAGES;\n const authoredMessages = snapshotClosedArray(value);\n if (authoredMessages === undefined) return undefined;\n\n const messages: CheckMessage[] = [];\n for (const authoredMessage of authoredMessages) {\n const message = detachedMessage(authoredMessage);\n if (message === undefined) return undefined;\n messages.push(message);\n }\n return messages.length === 0 ? EMPTY_MESSAGES : Object.freeze(messages);\n}\n\nfunction detachedMessage(value: unknown): CheckMessage | undefined {\n const message = snapshotClosedRecord(value);\n if (\n message === undefined ||\n !hasRequiredAndOptionalRecordKeys(message, {\n required: [\"level\", \"code\", \"message\"],\n optional: []\n }) ||\n !isCheckMessageLevel(message.level) ||\n typeof message.code !== \"string\" ||\n message.code.length === 0 ||\n typeof message.message !== \"string\" ||\n message.message.length === 0\n ) {\n return undefined;\n }\n return Object.freeze({ code: message.code, level: message.level, message: message.message });\n}\n\nfunction isCheckMessageLevel(value: unknown): value is CheckMessage[\"level\"] {\n return value === \"info\" || value === \"warning\" || value === \"error\";\n}\n"]}
@@ -1,22 +1,26 @@
1
+ import { EMPTY_RESOURCE_UNIT_MAPPING } from "../../project-definition/resource-unit-mapping.mjs";
1
2
  /**
2
3
  * Pure executable-Check projection. Check ids are the only scheduler Task
3
4
  * identities: containment has already been resolved by Definition and has no
4
5
  * runtime alias or completion semantics here.
5
6
  */
6
- export function planStaticCheckGraph(checks, options = {}) {
7
- const alreadySettledCheckIds = options.alreadySettledCheckIds ?? new Set();
8
- const tasks = checks.map((check) => taskForCheck(check, alreadySettledCheckIds));
7
+ export function planStaticCheckGraph(checks, resourceCapacities = EMPTY_RESOURCE_UNIT_MAPPING) {
8
+ const tasks = checks.map(taskForCheck);
9
9
  const scopes = checks.map(scopeForCheck);
10
10
  return Object.freeze({
11
+ resourceCapacities,
11
12
  tasks: Object.freeze(tasks),
12
13
  scopes: Object.freeze(scopes)
13
14
  });
14
15
  }
15
- function taskForCheck(check, alreadySettledCheckIds) {
16
+ function taskForCheck(check) {
16
17
  return Object.freeze({
17
- dependsOn: check.dependsOn.filter((checkId) => !alreadySettledCheckIds.has(checkId)),
18
+ admissionPriority: check.admissionPriority,
19
+ dependsOn: check.dependsOn,
18
20
  id: check.definition.checkId,
19
21
  mutex: check.mutex,
22
+ observes: check.observes,
23
+ resourceClaims: check.resourceClaims,
20
24
  scopeId: scopeIdFor(check)
21
25
  });
22
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"plan.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/plan.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAkC,EAClC,OAAO,GAAwE,EAAE;IAEjF,MAAM,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,IAAI,IAAI,GAAG,EAAU,CAAC;IACnF,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC,CAAC;IACjF,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACzC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;KAC9B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CACnB,KAAsB,EACtB,sBAA2C;IAE3C,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACpF,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC,OAAO;QAC5B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC;KAC3B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,KAAsB;IAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;IACxC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;QAC1C,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC;QACrB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,cAAc,EAAE,MAAM;KACvB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,KAAsB;IACxC,OAAO,SAAS,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAC7C,CAAC","sourcesContent":["import type { TaskGraph, TaskNode, TaskScope } from \"../task-scheduler/graph.ts\";\nimport type { NormalizedCheck } from \"../../project-definition/project-definition.ts\";\n\n/**\n * Pure executable-Check projection. Check ids are the only scheduler Task\n * identities: containment has already been resolved by Definition and has no\n * runtime alias or completion semantics here.\n */\nexport function planStaticCheckGraph(\n checks: readonly NormalizedCheck[],\n options: Readonly<{ readonly alreadySettledCheckIds?: ReadonlySet<string> }> = {}\n): TaskGraph {\n const alreadySettledCheckIds = options.alreadySettledCheckIds ?? new Set<string>();\n const tasks = checks.map((check) => taskForCheck(check, alreadySettledCheckIds));\n const scopes = checks.map(scopeForCheck);\n return Object.freeze({\n tasks: Object.freeze(tasks),\n scopes: Object.freeze(scopes)\n });\n}\n\nfunction taskForCheck(\n check: NormalizedCheck,\n alreadySettledCheckIds: ReadonlySet<string>\n): TaskNode {\n return Object.freeze({\n dependsOn: check.dependsOn.filter((checkId) => !alreadySettledCheckIds.has(checkId)),\n id: check.definition.checkId,\n mutex: check.mutex,\n scopeId: scopeIdFor(check)\n });\n}\n\nfunction scopeForCheck(check: NormalizedCheck): TaskScope {\n const taskId = check.definition.checkId;\n return Object.freeze({\n activationTaskIds: Object.freeze([taskId]),\n id: scopeIdFor(check),\n maxParallel: check.maxParallel,\n terminalTaskId: taskId\n });\n}\n\nfunction scopeIdFor(check: NormalizedCheck): string {\n return `check/${check.definition.checkId}`;\n}\n"]}
1
+ {"version":3,"file":"plan.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/plan.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,2BAA2B,EAE5B,MAAM,mDAAmD,CAAC;AAE3D;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAkC,EAClC,kBAAkB,GAAwB,2BAA2B;IAErE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACzC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,kBAAkB;QAClB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;KAC9B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAC,KAAsB;IAC1C,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC,OAAO;QAC5B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC;KAC3B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,KAAsB;IAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;IACxC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;QAC1C,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC;QACrB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,cAAc,EAAE,MAAM;KACvB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,KAAsB;IACxC,OAAO,SAAS,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAC7C,CAAC","sourcesContent":["import type { TaskGraph, TaskNode, TaskScope } from \"../task-scheduler/graph.ts\";\nimport type { NormalizedCheck } from \"../../project-definition/project-definition.ts\";\nimport {\n EMPTY_RESOURCE_UNIT_MAPPING,\n type ResourceUnitMapping\n} from \"../../project-definition/resource-unit-mapping.ts\";\n\n/**\n * Pure executable-Check projection. Check ids are the only scheduler Task\n * identities: containment has already been resolved by Definition and has no\n * runtime alias or completion semantics here.\n */\nexport function planStaticCheckGraph(\n checks: readonly NormalizedCheck[],\n resourceCapacities: ResourceUnitMapping = EMPTY_RESOURCE_UNIT_MAPPING\n): TaskGraph {\n const tasks = checks.map(taskForCheck);\n const scopes = checks.map(scopeForCheck);\n return Object.freeze({\n resourceCapacities,\n tasks: Object.freeze(tasks),\n scopes: Object.freeze(scopes)\n });\n}\n\nfunction taskForCheck(check: NormalizedCheck): TaskNode {\n return Object.freeze({\n admissionPriority: check.admissionPriority,\n dependsOn: check.dependsOn,\n id: check.definition.checkId,\n mutex: check.mutex,\n observes: check.observes,\n resourceClaims: check.resourceClaims,\n scopeId: scopeIdFor(check)\n });\n}\n\nfunction scopeForCheck(check: NormalizedCheck): TaskScope {\n const taskId = check.definition.checkId;\n return Object.freeze({\n activationTaskIds: Object.freeze([taskId]),\n id: scopeIdFor(check),\n maxParallel: check.maxParallel,\n terminalTaskId: taskId\n });\n}\n\nfunction scopeIdFor(check: NormalizedCheck): string {\n return `check/${check.definition.checkId}`;\n}\n"]}
@@ -1,21 +1,12 @@
1
1
  import { snapshotJsonObject } from "../../check/options-snapshot.mjs";
2
2
  import { diagnosticTags, summarizeDiagnosticValue } from "../diagnostic-logging/logger.mjs";
3
3
  import { parseCheckPreflightResult } from "./preflight-result.mjs";
4
+ import { invokeWithCapturedConsole } from "./console-capture.mjs";
5
+ import { combineCheckMessages } from "./messages.mjs";
4
6
  const EMPTY_MESSAGES = Object.freeze([]);
5
7
  const INERT_SIGNAL = new AbortController().signal;
6
- /** Completes the sequential invocation-wide barrier before any Check enters the Task graph. */
7
- export async function prepareChecks(input) {
8
- const resolutions = [];
9
- for (const check of input.checks) {
10
- resolutions.push(await prepareCheck({
11
- check,
12
- diagnosticLogger: input.diagnosticLogger,
13
- signal: input.signal
14
- }));
15
- }
16
- return Object.freeze(resolutions);
17
- }
18
- async function prepareCheck(input) {
8
+ /** Resolves one Check's task-local preparation after Scheduler admission. */
9
+ export async function prepareCheck(input) {
19
10
  if (input.signal?.aborted) {
20
11
  return observeBlockedPreflight({
21
12
  check: input.check,
@@ -45,18 +36,20 @@ function resolvePreflightInvocation(input, invocation) {
45
36
  check: input.check,
46
37
  diagnosticLogger: input.diagnosticLogger,
47
38
  details: { error: invocation.error },
39
+ messages: invocation.messages,
48
40
  result: input.signal?.aborted ? "cancelled-after-throw" : "threw",
49
41
  reasonCode: input.signal?.aborted ? "execution-cancelled" : "preflight-threw"
50
42
  });
51
43
  }
52
- return resolveReturnedPreflight(input, invocation.output);
44
+ return resolveReturnedPreflight(input, invocation.output, invocation.messages);
53
45
  }
54
- function resolveReturnedPreflight(input, preflightOutput) {
46
+ function resolveReturnedPreflight(input, preflightOutput, consoleMessages) {
55
47
  if (input.signal?.aborted) {
56
48
  return observeBlockedPreflight({
57
49
  check: input.check,
58
50
  diagnosticLogger: input.diagnosticLogger,
59
51
  details: { raw: preflightOutput },
52
+ messages: consoleMessages,
60
53
  result: "cancelled-after-callback",
61
54
  reasonCode: "execution-cancelled"
62
55
  });
@@ -67,19 +60,20 @@ function resolveReturnedPreflight(input, preflightOutput) {
67
60
  check: input.check,
68
61
  diagnosticLogger: input.diagnosticLogger,
69
62
  details: { raw: preflightOutput },
63
+ messages: consoleMessages,
70
64
  result: "malformed",
71
65
  reasonCode: "invalid-preflight-result"
72
66
  });
73
67
  }
74
68
  if (preflightResult.status === "failure" && preflightResult.action === "block") {
75
- return resolveBlockedPreflightResult(input, preflightResult);
69
+ return resolveBlockedPreflightResult(input, preflightResult, consoleMessages);
76
70
  }
77
- return resolveReadyPreflightResult(input, preflightOutput, preflightResult);
71
+ return resolveReadyPreflightResult(input, preflightOutput, preflightResult, consoleMessages);
78
72
  }
79
- function resolveBlockedPreflightResult(input, preflightResult) {
73
+ function resolveBlockedPreflightResult(input, preflightResult, consoleMessages) {
80
74
  const resolution = blockedResolution({
81
75
  check: input.check,
82
- messages: preflightResult.messages,
76
+ messages: combineCheckMessages(consoleMessages, preflightResult.messages),
83
77
  reasonCode: preflightResult.reason.code
84
78
  });
85
79
  observePreflightResolution(input.diagnosticLogger, input.check.definition.checkId, resolution, "blocked", {
@@ -88,12 +82,12 @@ function resolveBlockedPreflightResult(input, preflightResult) {
88
82
  });
89
83
  return resolution;
90
84
  }
91
- function resolveReadyPreflightResult(input, preflightOutput, preflightResult) {
85
+ function resolveReadyPreflightResult(input, preflightOutput, preflightResult, consoleMessages) {
92
86
  const checkId = input.check.definition.checkId;
93
87
  const result = preflightResult.status === "success" ? "prepared" : "continued";
94
88
  const resolution = readyResolution({
95
89
  authoredCheck: input.check,
96
- messages: preflightResult.messages,
90
+ messages: combineCheckMessages(consoleMessages, preflightResult.messages),
97
91
  preparedOptions: preflightResult.status === "success"
98
92
  ? preflightResult.preparedOptions
99
93
  : preflightResult.fallback
@@ -106,20 +100,12 @@ function resolveReadyPreflightResult(input, preflightOutput, preflightResult) {
106
100
  return resolution;
107
101
  }
108
102
  async function invokePreflight(check, signal) {
109
- try {
110
- return Object.freeze({
111
- kind: "returned",
112
- output: await check.preflight(check.options, signal ?? INERT_SIGNAL)
113
- });
114
- }
115
- catch (error) {
116
- return Object.freeze({ kind: "threw", error });
117
- }
103
+ return invokeWithCapturedConsole(() => check.preflight(check.options, signal ?? INERT_SIGNAL));
118
104
  }
119
105
  function observeBlockedPreflight(input) {
120
106
  const resolution = blockedResolution({
121
107
  check: input.check,
122
- messages: EMPTY_MESSAGES,
108
+ messages: input.messages ?? EMPTY_MESSAGES,
123
109
  reasonCode: input.reasonCode
124
110
  });
125
111
  observePreflightResolution(input.diagnosticLogger, input.check.definition.checkId, resolution, input.result, input.details);
@@ -155,7 +141,7 @@ function readyResolution(input) {
155
141
  if (preparedOptions === undefined) {
156
142
  return blockedResolution({
157
143
  check: input.authoredCheck,
158
- messages: EMPTY_MESSAGES,
144
+ messages: input.messages,
159
145
  reasonCode: "invalid-preflight-result"
160
146
  });
161
147
  }