@zxyycom/vibe-check 0.0.2 → 0.0.3

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 (670) hide show
  1. package/README.md +36 -5
  2. package/dist/esm/check/check.mjs +4 -0
  3. package/dist/esm/check/check.mjs.map +1 -1
  4. package/dist/esm/check/flag-enablement.mjs +32 -0
  5. package/dist/esm/check/flag-enablement.mjs.map +1 -0
  6. package/dist/esm/check/handoff-provider-identity.mjs +18 -0
  7. package/dist/esm/check/handoff-provider-identity.mjs.map +1 -0
  8. package/dist/esm/check/inherited-collection.mjs +1 -1
  9. package/dist/esm/check/inherited-collection.mjs.map +1 -1
  10. package/dist/esm/check/project-changes.mjs +2 -0
  11. package/dist/esm/check/project-changes.mjs.map +1 -0
  12. package/dist/esm/check/project-context.mjs +2 -0
  13. package/dist/esm/check/project-context.mjs.map +1 -0
  14. package/dist/esm/check-settlement/facts.mjs.map +1 -1
  15. package/dist/esm/check-settlement/record-store.mjs +1 -1
  16. package/dist/esm/check-settlement/record-store.mjs.map +1 -1
  17. package/dist/esm/data-boundary/canonical-data.mjs +36 -7
  18. package/dist/esm/data-boundary/canonical-data.mjs.map +1 -1
  19. package/dist/esm/data-boundary/canonical-json.mjs.map +1 -1
  20. package/dist/esm/data-boundary/closed-values.mjs +28 -4
  21. package/dist/esm/data-boundary/closed-values.mjs.map +1 -1
  22. package/dist/esm/{package-checks/project-files → data-boundary}/config-glob.mjs +3 -3
  23. package/dist/esm/data-boundary/config-glob.mjs.map +1 -0
  24. package/dist/esm/data-boundary/project-path.mjs +19 -0
  25. package/dist/esm/data-boundary/project-path.mjs.map +1 -0
  26. package/dist/esm/index.mjs +12 -5
  27. package/dist/esm/index.mjs.map +1 -1
  28. package/dist/esm/machine-output/v4/atomic-publication.mjs +4 -1
  29. package/dist/esm/machine-output/v4/atomic-publication.mjs.map +1 -1
  30. package/dist/esm/package-checks/check-authoring.mjs +69 -0
  31. package/dist/esm/package-checks/check-authoring.mjs.map +1 -0
  32. package/dist/esm/package-checks/code-quality-findings/finding-waiver-authoring.mjs.map +1 -1
  33. package/dist/esm/package-checks/code-quality-findings/finding-waiver-evidence.mjs.map +1 -1
  34. package/dist/esm/package-checks/command-check/command-check.mjs +55 -0
  35. package/dist/esm/package-checks/command-check/command-check.mjs.map +1 -0
  36. package/dist/esm/package-checks/command-check/contract.mjs +2 -0
  37. package/dist/esm/package-checks/command-check/contract.mjs.map +1 -0
  38. package/dist/esm/package-checks/command-check/execution.mjs +134 -0
  39. package/dist/esm/package-checks/command-check/execution.mjs.map +1 -0
  40. package/dist/esm/package-checks/command-check/options.mjs +284 -0
  41. package/dist/esm/package-checks/command-check/options.mjs.map +1 -0
  42. package/dist/esm/package-checks/command-check/transcript.mjs +26 -0
  43. package/dist/esm/package-checks/command-check/transcript.mjs.map +1 -0
  44. package/dist/esm/package-checks/duplicate-detection/default-check.mjs +9 -11
  45. package/dist/esm/package-checks/duplicate-detection/default-check.mjs.map +1 -1
  46. package/dist/esm/package-checks/duplicate-detection/execution.mjs +2 -4
  47. package/dist/esm/package-checks/duplicate-detection/execution.mjs.map +1 -1
  48. package/dist/esm/package-checks/duplicate-detection/finding-messages.mjs +1 -1
  49. package/dist/esm/package-checks/duplicate-detection/finding-messages.mjs.map +1 -1
  50. package/dist/esm/package-checks/duplicate-detection/jscpd/availability.mjs +1 -1
  51. package/dist/esm/package-checks/duplicate-detection/jscpd/availability.mjs.map +1 -1
  52. package/dist/esm/package-checks/duplicate-detection/options.mjs.map +1 -1
  53. package/dist/esm/package-checks/duplicate-detection/records.mjs.map +1 -1
  54. package/dist/esm/package-checks/file-metrics/constructor.mjs +9 -11
  55. package/dist/esm/package-checks/file-metrics/constructor.mjs.map +1 -1
  56. package/dist/esm/package-checks/file-metrics/execution.mjs +2 -4
  57. package/dist/esm/package-checks/file-metrics/execution.mjs.map +1 -1
  58. package/dist/esm/package-checks/file-metrics/finding-messages.mjs +1 -1
  59. package/dist/esm/package-checks/file-metrics/finding-messages.mjs.map +1 -1
  60. package/dist/esm/package-checks/file-metrics/options.mjs.map +1 -1
  61. package/dist/esm/package-checks/file-metrics/records.mjs.map +1 -1
  62. package/dist/esm/package-checks/file-metrics/scc/availability.mjs +1 -1
  63. package/dist/esm/package-checks/file-metrics/scc/availability.mjs.map +1 -1
  64. package/dist/esm/package-checks/file-metrics/scc/batch-planner.mjs +38 -0
  65. package/dist/esm/package-checks/file-metrics/scc/batch-planner.mjs.map +1 -0
  66. package/dist/esm/package-checks/file-metrics/scc/logical-scan-resources.mjs +35 -0
  67. package/dist/esm/package-checks/file-metrics/scc/logical-scan-resources.mjs.map +1 -0
  68. package/dist/esm/package-checks/file-metrics/scc/scanner.mjs +102 -29
  69. package/dist/esm/package-checks/file-metrics/scc/scanner.mjs.map +1 -1
  70. package/dist/esm/package-checks/function-metrics/analysis.mjs +7 -2
  71. package/dist/esm/package-checks/function-metrics/analysis.mjs.map +1 -1
  72. package/dist/esm/package-checks/function-metrics/analyzer/analysis-model.mjs +1 -1
  73. package/dist/esm/package-checks/function-metrics/analyzer/analysis-model.mjs.map +1 -1
  74. package/dist/esm/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.mjs +1 -3
  75. package/dist/esm/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.mjs.map +1 -1
  76. package/dist/esm/package-checks/function-metrics/analyzer/extensions/protocol.mjs.map +1 -1
  77. package/dist/esm/package-checks/function-metrics/analyzer/pipeline.mjs +3 -2
  78. package/dist/esm/package-checks/function-metrics/analyzer/pipeline.mjs.map +1 -1
  79. package/dist/esm/package-checks/function-metrics/analyzer/readers/erlang.mjs +6 -6
  80. package/dist/esm/package-checks/function-metrics/analyzer/readers/erlang.mjs.map +1 -1
  81. package/dist/esm/package-checks/function-metrics/analyzer/readers/fortran.mjs +1 -1
  82. package/dist/esm/package-checks/function-metrics/analyzer/readers/fortran.mjs.map +1 -1
  83. package/dist/esm/package-checks/function-metrics/analyzer/readers/objc.mjs +9 -3
  84. package/dist/esm/package-checks/function-metrics/analyzer/readers/objc.mjs.map +1 -1
  85. package/dist/esm/package-checks/function-metrics/analyzer/readers/php-states.mjs +12 -7
  86. package/dist/esm/package-checks/function-metrics/analyzer/readers/php-states.mjs.map +1 -1
  87. package/dist/esm/package-checks/function-metrics/analyzer/readers/plsql.mjs +6 -6
  88. package/dist/esm/package-checks/function-metrics/analyzer/readers/plsql.mjs.map +1 -1
  89. package/dist/esm/package-checks/function-metrics/analyzer/readers/python.mjs +5 -3
  90. package/dist/esm/package-checks/function-metrics/analyzer/readers/python.mjs.map +1 -1
  91. package/dist/esm/package-checks/function-metrics/analyzer/readers/r.mjs +2 -0
  92. package/dist/esm/package-checks/function-metrics/analyzer/readers/r.mjs.map +1 -1
  93. package/dist/esm/package-checks/function-metrics/analyzer/readers/ttcn.mjs +9 -3
  94. package/dist/esm/package-checks/function-metrics/analyzer/readers/ttcn.mjs.map +1 -1
  95. package/dist/esm/package-checks/function-metrics/analyzer/readers/typescript.mjs +9 -3
  96. package/dist/esm/package-checks/function-metrics/analyzer/readers/typescript.mjs.map +1 -1
  97. package/dist/esm/package-checks/function-metrics/analyzer/readers/zig.mjs +3 -1
  98. package/dist/esm/package-checks/function-metrics/analyzer/readers/zig.mjs.map +1 -1
  99. package/dist/esm/package-checks/function-metrics/analyzer/shared/code-reader.mjs +3 -1
  100. package/dist/esm/package-checks/function-metrics/analyzer/shared/code-reader.mjs.map +1 -1
  101. package/dist/esm/package-checks/function-metrics/analyzer/shared/js-style-regex.mjs +12 -5
  102. package/dist/esm/package-checks/function-metrics/analyzer/shared/js-style-regex.mjs.map +1 -1
  103. package/dist/esm/package-checks/function-metrics/analyzer-worker-port.mjs +20 -8
  104. package/dist/esm/package-checks/function-metrics/analyzer-worker-port.mjs.map +1 -1
  105. package/dist/esm/package-checks/function-metrics/constructor.mjs +9 -11
  106. package/dist/esm/package-checks/function-metrics/constructor.mjs.map +1 -1
  107. package/dist/esm/package-checks/function-metrics/execution.mjs +2 -4
  108. package/dist/esm/package-checks/function-metrics/execution.mjs.map +1 -1
  109. package/dist/esm/package-checks/function-metrics/finding-messages.mjs +1 -1
  110. package/dist/esm/package-checks/function-metrics/finding-messages.mjs.map +1 -1
  111. package/dist/esm/package-checks/function-metrics/measurement.mjs +3 -1
  112. package/dist/esm/package-checks/function-metrics/measurement.mjs.map +1 -1
  113. package/dist/esm/package-checks/function-metrics/options.mjs.map +1 -1
  114. package/dist/esm/package-checks/function-metrics/records.mjs.map +1 -1
  115. package/dist/esm/package-checks/host-environment/git.mjs +11 -0
  116. package/dist/esm/package-checks/host-environment/git.mjs.map +1 -1
  117. package/dist/esm/package-checks/host-environment/path.mjs +1 -17
  118. package/dist/esm/package-checks/host-environment/path.mjs.map +1 -1
  119. package/dist/esm/package-checks/host-environment/process/contract.mjs.map +1 -1
  120. package/dist/esm/package-checks/host-environment/process/result.mjs +43 -17
  121. package/dist/esm/package-checks/host-environment/process/result.mjs.map +1 -1
  122. package/dist/esm/package-checks/host-environment/process/runner.mjs +7 -5
  123. package/dist/esm/package-checks/host-environment/process/runner.mjs.map +1 -1
  124. package/dist/esm/package-checks/json-schema-validation/default-check.mjs +9 -11
  125. package/dist/esm/package-checks/json-schema-validation/default-check.mjs.map +1 -1
  126. package/dist/esm/package-checks/json-schema-validation/options.mjs.map +1 -1
  127. package/dist/esm/package-checks/json-schema-validation/reference-resolver.mjs +6 -2
  128. package/dist/esm/package-checks/json-schema-validation/reference-resolver.mjs.map +1 -1
  129. package/dist/esm/package-checks/json-schema-validation/schema-policy.mjs +11 -3
  130. package/dist/esm/package-checks/json-schema-validation/schema-policy.mjs.map +1 -1
  131. package/dist/esm/package-checks/json-validation/default-check.mjs +9 -11
  132. package/dist/esm/package-checks/json-validation/default-check.mjs.map +1 -1
  133. package/dist/esm/package-checks/json-validation/options.mjs.map +1 -1
  134. package/dist/esm/package-checks/local-cache-options.mjs +28 -0
  135. package/dist/esm/package-checks/local-cache-options.mjs.map +1 -0
  136. package/dist/esm/package-checks/maintenance-reminders/maintenance-reminders.mjs +37 -45
  137. package/dist/esm/package-checks/maintenance-reminders/maintenance-reminders.mjs.map +1 -1
  138. package/dist/esm/package-checks/maintenance-reminders/maintenance-support.mjs +3 -1
  139. package/dist/esm/package-checks/maintenance-reminders/maintenance-support.mjs.map +1 -1
  140. package/dist/esm/package-checks/markdown-link-validation/default-check.mjs +19 -33
  141. package/dist/esm/package-checks/markdown-link-validation/default-check.mjs.map +1 -1
  142. package/dist/esm/package-checks/markdown-link-validation/execution.mjs +1 -1
  143. package/dist/esm/package-checks/markdown-link-validation/execution.mjs.map +1 -1
  144. package/dist/esm/package-checks/markdown-link-validation/finding-messages.mjs +1 -1
  145. package/dist/esm/package-checks/markdown-link-validation/finding-messages.mjs.map +1 -1
  146. package/dist/esm/package-checks/markdown-link-validation/markdown-parser.mjs +1 -3
  147. package/dist/esm/package-checks/markdown-link-validation/markdown-parser.mjs.map +1 -1
  148. package/dist/esm/package-checks/markdown-link-validation/options-resolution.mjs +3 -18
  149. package/dist/esm/package-checks/markdown-link-validation/options-resolution.mjs.map +1 -1
  150. package/dist/esm/package-checks/markdown-link-validation/options-validation.mjs +2 -14
  151. package/dist/esm/package-checks/markdown-link-validation/options-validation.mjs.map +1 -1
  152. package/dist/esm/package-checks/markdown-link-validation/options.mjs.map +1 -1
  153. package/dist/esm/package-checks/markdown-link-validation/parse-facts-cache-payload.mjs +4 -5
  154. package/dist/esm/package-checks/markdown-link-validation/parse-facts-cache-payload.mjs.map +1 -1
  155. package/dist/esm/package-checks/markdown-lint/adapter.mjs +125 -0
  156. package/dist/esm/package-checks/markdown-lint/adapter.mjs.map +1 -0
  157. package/dist/esm/package-checks/markdown-lint/default-check.mjs +37 -0
  158. package/dist/esm/package-checks/markdown-lint/default-check.mjs.map +1 -0
  159. package/dist/esm/package-checks/markdown-lint/execution.mjs +202 -0
  160. package/dist/esm/package-checks/markdown-lint/execution.mjs.map +1 -0
  161. package/dist/esm/package-checks/markdown-lint/final-data.mjs +16 -0
  162. package/dist/esm/package-checks/markdown-lint/final-data.mjs.map +1 -0
  163. package/dist/esm/package-checks/markdown-lint/finding-messages.mjs +72 -0
  164. package/dist/esm/package-checks/markdown-lint/finding-messages.mjs.map +1 -0
  165. package/dist/esm/package-checks/markdown-lint/finding-waiver-identity.mjs +41 -0
  166. package/dist/esm/package-checks/markdown-lint/finding-waiver-identity.mjs.map +1 -0
  167. package/dist/esm/package-checks/markdown-lint/findings-cache.mjs +110 -0
  168. package/dist/esm/package-checks/markdown-lint/findings-cache.mjs.map +1 -0
  169. package/dist/esm/package-checks/markdown-lint/options-resolution.mjs +74 -0
  170. package/dist/esm/package-checks/markdown-lint/options-resolution.mjs.map +1 -0
  171. package/dist/esm/package-checks/markdown-lint/options-validation.mjs +41 -0
  172. package/dist/esm/package-checks/markdown-lint/options-validation.mjs.map +1 -0
  173. package/dist/esm/package-checks/markdown-lint/options.mjs +13 -0
  174. package/dist/esm/package-checks/markdown-lint/options.mjs.map +1 -0
  175. package/dist/esm/package-checks/markdown-lint/records.mjs +65 -0
  176. package/dist/esm/package-checks/markdown-lint/records.mjs.map +1 -0
  177. package/dist/esm/package-checks/markdown-lint/unavailable-reasons.mjs +14 -0
  178. package/dist/esm/package-checks/markdown-lint/unavailable-reasons.mjs.map +1 -0
  179. package/dist/esm/package-checks/project-files/collection.mjs +23 -19
  180. package/dist/esm/package-checks/project-files/collection.mjs.map +1 -1
  181. package/dist/esm/package-checks/project-files/configuration.mjs +1 -1
  182. package/dist/esm/package-checks/project-files/configuration.mjs.map +1 -1
  183. package/dist/esm/package-checks/project-files/gitlink-revision.mjs +2 -5
  184. package/dist/esm/package-checks/project-files/gitlink-revision.mjs.map +1 -1
  185. package/dist/esm/package-checks/project-files/gitlink-worktree.mjs +22 -6
  186. package/dist/esm/package-checks/project-files/gitlink-worktree.mjs.map +1 -1
  187. package/dist/esm/package-checks/project-files/public-collection.mjs +1 -1
  188. package/dist/esm/package-checks/project-files/public-collection.mjs.map +1 -1
  189. package/dist/esm/package-checks/project-files/revision-paths.mjs +3 -3
  190. package/dist/esm/package-checks/project-files/revision-paths.mjs.map +1 -1
  191. package/dist/esm/package-checks/project-files/revision-worktree-files.mjs +11 -15
  192. package/dist/esm/package-checks/project-files/revision-worktree-files.mjs.map +1 -1
  193. package/dist/esm/package-checks/secret-detection/default-check.mjs +9 -11
  194. package/dist/esm/package-checks/secret-detection/default-check.mjs.map +1 -1
  195. package/dist/esm/package-checks/secret-detection/execution.mjs +2 -2
  196. package/dist/esm/package-checks/secret-detection/execution.mjs.map +1 -1
  197. package/dist/esm/package-checks/secret-detection/input-preparation.mjs +46 -7
  198. package/dist/esm/package-checks/secret-detection/input-preparation.mjs.map +1 -1
  199. package/dist/esm/package-checks/secret-detection/options.mjs.map +1 -1
  200. package/dist/esm/package-checks/secret-detection/records.mjs.map +1 -1
  201. package/dist/esm/package-checks/secret-detection/secretlint/adapter.mjs +3 -4
  202. package/dist/esm/package-checks/secret-detection/secretlint/adapter.mjs.map +1 -1
  203. package/dist/esm/package-tools/admission-policy/define-admission-policy.mjs +10 -0
  204. package/dist/esm/package-tools/admission-policy/define-admission-policy.mjs.map +1 -0
  205. package/dist/esm/{cache → package-tools/cache}/cache-json-by-key.mjs +13 -14
  206. package/dist/esm/package-tools/cache/cache-json-by-key.mjs.map +1 -0
  207. package/dist/esm/package-tools/finding-presentation/finding-presentation.mjs.map +1 -0
  208. package/dist/esm/{finding-waivers → package-tools/finding-waivers}/reconciliation.mjs +14 -5
  209. package/dist/esm/package-tools/finding-waivers/reconciliation.mjs.map +1 -0
  210. package/dist/esm/package-tools/learned-critical-path/critical-path-ranking.mjs.map +1 -0
  211. package/dist/esm/package-tools/learned-critical-path/duration-model/bounded-history.mjs.map +1 -0
  212. package/dist/esm/{learned-critical-path → package-tools/learned-critical-path}/duration-model/prediction.mjs +2 -2
  213. package/dist/esm/package-tools/learned-critical-path/duration-model/prediction.mjs.map +1 -0
  214. package/dist/esm/{learned-critical-path → package-tools/learned-critical-path}/duration-model/preparation.mjs +4 -2
  215. package/dist/esm/package-tools/learned-critical-path/duration-model/preparation.mjs.map +1 -0
  216. package/dist/esm/package-tools/learned-critical-path/duration-model/recording.mjs.map +1 -0
  217. package/dist/esm/{learned-critical-path → package-tools/learned-critical-path}/duration-model/storage.mjs +8 -8
  218. package/dist/esm/package-tools/learned-critical-path/duration-model/storage.mjs.map +1 -0
  219. package/dist/esm/{learned-critical-path → package-tools/learned-critical-path}/selection-layers.mjs +1 -2
  220. package/dist/esm/package-tools/learned-critical-path/selection-layers.mjs.map +1 -0
  221. package/dist/esm/package-tools/learned-critical-path/static-decision.mjs.map +1 -0
  222. package/dist/esm/{learned-critical-path → package-tools/learned-critical-path}/strategy.mjs +3 -3
  223. package/dist/esm/package-tools/learned-critical-path/strategy.mjs.map +1 -0
  224. package/dist/esm/project-definition/check-tree/authoring.mjs +8 -5
  225. package/dist/esm/project-definition/check-tree/authoring.mjs.map +1 -1
  226. package/dist/esm/project-definition/check-tree/check-fields-authoring.mjs +79 -66
  227. package/dist/esm/project-definition/check-tree/check-fields-authoring.mjs.map +1 -1
  228. package/dist/esm/project-definition/check-tree/flag-conditions.mjs +71 -0
  229. package/dist/esm/project-definition/check-tree/flag-conditions.mjs.map +1 -0
  230. package/dist/esm/project-definition/check-tree/materialization.mjs +13 -8
  231. package/dist/esm/project-definition/check-tree/materialization.mjs.map +1 -1
  232. package/dist/esm/project-definition/check-tree/resolution.mjs +7 -6
  233. package/dist/esm/project-definition/check-tree/resolution.mjs.map +1 -1
  234. package/dist/esm/project-definition/declarative-snapshot.mjs +2 -1
  235. package/dist/esm/project-definition/declarative-snapshot.mjs.map +1 -1
  236. package/dist/esm/project-definition/project-changes.mjs +70 -0
  237. package/dist/esm/project-definition/project-changes.mjs.map +1 -0
  238. package/dist/esm/project-definition/project-definition-validation.mjs +40 -8
  239. package/dist/esm/project-definition/project-definition-validation.mjs.map +1 -1
  240. package/dist/esm/project-definition/project-definition.mjs +22 -15
  241. package/dist/esm/project-definition/project-definition.mjs.map +1 -1
  242. package/dist/esm/project-definition/scheduler-policy.mjs.map +1 -1
  243. package/dist/esm/project-run/admission-strategy-provider/custom-strategy-preparation.mjs +9 -6
  244. package/dist/esm/project-run/admission-strategy-provider/custom-strategy-preparation.mjs.map +1 -1
  245. package/dist/esm/project-run/admission-strategy-provider/prepared-admission-strategy.mjs.map +1 -1
  246. package/dist/esm/project-run/aggregation.mjs +42 -59
  247. package/dist/esm/project-run/aggregation.mjs.map +1 -1
  248. package/dist/esm/project-run/changes/git.mjs +161 -0
  249. package/dist/esm/project-run/changes/git.mjs.map +1 -0
  250. package/dist/esm/project-run/check-execution/admitted-check-execution.mjs +41 -0
  251. package/dist/esm/project-run/check-execution/admitted-check-execution.mjs.map +1 -0
  252. package/dist/esm/project-run/check-execution/callback.mjs +3 -2
  253. package/dist/esm/project-run/check-execution/callback.mjs.map +1 -1
  254. package/dist/esm/project-run/check-execution/dependencies.mjs +80 -5
  255. package/dist/esm/project-run/check-execution/dependencies.mjs.map +1 -1
  256. package/dist/esm/project-run/check-execution/execution-finalization.mjs +5 -3
  257. package/dist/esm/project-run/check-execution/execution-finalization.mjs.map +1 -1
  258. package/dist/esm/project-run/check-execution/execution-settlement.mjs +37 -16
  259. package/dist/esm/project-run/check-execution/execution-settlement.mjs.map +1 -1
  260. package/dist/esm/project-run/check-execution/flag-controls.mjs +15 -7
  261. package/dist/esm/project-run/check-execution/flag-controls.mjs.map +1 -1
  262. package/dist/esm/project-run/check-execution/lifecycle.mjs.map +1 -1
  263. package/dist/esm/project-run/check-execution/{preflight-result.mjs → preparation-result.mjs} +24 -24
  264. package/dist/esm/project-run/check-execution/preparation-result.mjs.map +1 -0
  265. package/dist/esm/project-run/check-execution/{preflight.mjs → preparation.mjs} +52 -52
  266. package/dist/esm/project-run/check-execution/preparation.mjs.map +1 -0
  267. package/dist/esm/project-run/check-execution/ready-check-execution.mjs +71 -0
  268. package/dist/esm/project-run/check-execution/ready-check-execution.mjs.map +1 -0
  269. package/dist/esm/project-run/check-execution/resolved-checks.mjs +27 -164
  270. package/dist/esm/project-run/check-execution/resolved-checks.mjs.map +1 -1
  271. package/dist/esm/project-run/check-execution/scheduled-check-run.mjs +79 -0
  272. package/dist/esm/project-run/check-execution/scheduled-check-run.mjs.map +1 -0
  273. package/dist/esm/project-run/check-execution/terminal-result.mjs +70 -25
  274. package/dist/esm/project-run/check-execution/terminal-result.mjs.map +1 -1
  275. package/dist/esm/project-run/completion/completion.mjs +18 -1
  276. package/dist/esm/project-run/completion/completion.mjs.map +1 -1
  277. package/dist/esm/project-run/controls/contract.mjs.map +1 -1
  278. package/dist/esm/project-run/controls/validation.mjs +7 -54
  279. package/dist/esm/project-run/controls/validation.mjs.map +1 -1
  280. package/dist/esm/project-run/diagnostic-logging/diagnostic-detail-rendering.mjs +3 -3
  281. package/dist/esm/project-run/diagnostic-logging/diagnostic-detail-rendering.mjs.map +1 -1
  282. package/dist/esm/project-run/diagnostic-logging/observation-rendering.mjs +1 -1
  283. package/dist/esm/project-run/diagnostic-logging/observation-rendering.mjs.map +1 -1
  284. package/dist/esm/project-run/invocation/candidate.mjs +17 -13
  285. package/dist/esm/project-run/invocation/candidate.mjs.map +1 -1
  286. package/dist/esm/project-run/invocation/candidates.mjs +26 -0
  287. package/dist/esm/project-run/invocation/candidates.mjs.map +1 -0
  288. package/dist/esm/project-run/invocation/creation.mjs +7 -3
  289. package/dist/esm/project-run/invocation/creation.mjs.map +1 -1
  290. package/dist/esm/project-run/invocation/execution.mjs +98 -0
  291. package/dist/esm/project-run/invocation/execution.mjs.map +1 -0
  292. package/dist/esm/project-run/invocation/run.mjs +13 -112
  293. package/dist/esm/project-run/invocation/run.mjs.map +1 -1
  294. package/dist/esm/project-run/invocation/scheduler.mjs +13 -6
  295. package/dist/esm/project-run/invocation/scheduler.mjs.map +1 -1
  296. package/dist/esm/project-run/outputs/status.mjs +12 -12
  297. package/dist/esm/project-run/outputs/status.mjs.map +1 -1
  298. package/dist/esm/project-run/progress-rendering/presentation.mjs +31 -11
  299. package/dist/esm/project-run/progress-rendering/presentation.mjs.map +1 -1
  300. package/dist/esm/project-run/progress-rendering/renderer-formatting.mjs +11 -4
  301. package/dist/esm/project-run/progress-rendering/renderer-formatting.mjs.map +1 -1
  302. package/dist/esm/project-run/progress-rendering/renderer-lifecycle.mjs +20 -6
  303. package/dist/esm/project-run/progress-rendering/renderer-lifecycle.mjs.map +1 -1
  304. package/dist/esm/project-run/progress-rendering/renderer.mjs +6 -2
  305. package/dist/esm/project-run/progress-rendering/renderer.mjs.map +1 -1
  306. package/dist/esm/project-run/project-context.mjs +2 -1
  307. package/dist/esm/project-run/project-context.mjs.map +1 -1
  308. package/dist/esm/project-run/result.mjs +2 -2
  309. package/dist/esm/project-run/result.mjs.map +1 -1
  310. package/dist/esm/project-run/run.mjs.map +1 -1
  311. package/dist/esm/project-run/task-scheduler/admission-core/compiled-graph-lookup.mjs +45 -0
  312. package/dist/esm/project-run/task-scheduler/admission-core/compiled-graph-lookup.mjs.map +1 -0
  313. package/dist/esm/project-run/task-scheduler/admission-core/compiled-graph.mjs +9 -4
  314. package/dist/esm/project-run/task-scheduler/admission-core/compiled-graph.mjs.map +1 -1
  315. package/dist/esm/project-run/task-scheduler/admission-core/selection-query.mjs +3 -5
  316. package/dist/esm/project-run/task-scheduler/admission-core/selection-query.mjs.map +1 -1
  317. package/dist/esm/project-run/task-scheduler/admission-core/selection-seed.mjs +25 -8
  318. package/dist/esm/project-run/task-scheduler/admission-core/selection-seed.mjs.map +1 -1
  319. package/dist/esm/project-run/task-scheduler/admission-core/selection-transition.mjs +8 -8
  320. package/dist/esm/project-run/task-scheduler/admission-core/selection-transition.mjs.map +1 -1
  321. package/dist/esm/project-run/task-scheduler/execution-state.mjs.map +1 -1
  322. package/dist/esm/project-run/task-scheduler/measurement/diagnostics.mjs +8 -4
  323. package/dist/esm/project-run/task-scheduler/measurement/diagnostics.mjs.map +1 -1
  324. package/dist/esm/project-run/task-scheduler/measurement/timing.mjs +12 -6
  325. package/dist/esm/project-run/task-scheduler/measurement/timing.mjs.map +1 -1
  326. package/dist/esm/project-run/task-scheduler/scheduler-observation.mjs +3 -1
  327. package/dist/esm/project-run/task-scheduler/scheduler-observation.mjs.map +1 -1
  328. package/dist/esm/project-run/task-scheduler/scheduler-terminal-measurement.mjs +17 -17
  329. package/dist/esm/project-run/task-scheduler/scheduler-terminal-measurement.mjs.map +1 -1
  330. package/dist/esm/project-run/task-scheduler/scheduler.mjs +18 -6
  331. package/dist/esm/project-run/task-scheduler/scheduler.mjs.map +1 -1
  332. package/docs/api-mechanics.md +147 -28
  333. package/docs/changelog.md +145 -2
  334. package/docs/checks/duplicate-detection.md +22 -3
  335. package/docs/checks/file-metrics.md +25 -6
  336. package/docs/checks/function-metrics.md +21 -2
  337. package/docs/checks/json-schema-validation.md +25 -4
  338. package/docs/checks/json-validation.md +24 -5
  339. package/docs/checks/maintenance-reminders.md +30 -6
  340. package/docs/checks/markdown-link-validation.md +24 -4
  341. package/docs/checks/markdown-lint.md +167 -0
  342. package/docs/checks/secret-detection.md +31 -7
  343. package/docs/examples/artifacts/mixed-outcomes/definition.ts +10 -10
  344. package/docs/guides/building-project-gate.md +706 -0
  345. package/docs/guides/callbacks.md +81 -22
  346. package/docs/guides/check-dependencies.md +41 -10
  347. package/docs/guides/collecting-project-files.md +7 -7
  348. package/docs/guides/command-check.md +155 -0
  349. package/docs/guides/data-boundaries.md +140 -0
  350. package/docs/guides/extending-check-lifecycle.md +77 -25
  351. package/docs/guides/finding-waivers.md +43 -1
  352. package/docs/guides/learned-scheduling.md +1 -1
  353. package/docs/guides/run-outputs.md +35 -9
  354. package/docs/guides/scheduling.md +15 -15
  355. package/docs/output.md +6 -5
  356. package/package.json +2 -1
  357. package/src/check/check.ts +332 -92
  358. package/src/check/flag-enablement.ts +76 -0
  359. package/src/check/handoff-provider-identity.ts +34 -0
  360. package/src/check/inherited-collection.ts +1 -1
  361. package/src/check/project-changes.ts +14 -0
  362. package/src/check/project-context.ts +11 -0
  363. package/src/check-settlement/facts.ts +1 -1
  364. package/src/check-settlement/record-store.ts +1 -1
  365. package/src/data-boundary/canonical-data.ts +36 -9
  366. package/src/data-boundary/canonical-json.ts +18 -1
  367. package/src/data-boundary/closed-values.ts +26 -6
  368. package/src/data-boundary/config-glob.ts +17 -0
  369. package/src/data-boundary/project-path.ts +21 -0
  370. package/src/index.ts +72 -11
  371. package/src/machine-output/v4/atomic-publication.ts +3 -1
  372. package/src/package-checks/check-authoring.ts +136 -0
  373. package/src/package-checks/code-quality-findings/finding-waiver-authoring.ts +1 -1
  374. package/src/package-checks/code-quality-findings/finding-waiver-evidence.ts +1 -1
  375. package/src/package-checks/command-check/command-check.ts +152 -0
  376. package/src/package-checks/command-check/contract.ts +168 -0
  377. package/src/package-checks/command-check/execution.ts +211 -0
  378. package/src/package-checks/command-check/options.ts +331 -0
  379. package/src/package-checks/command-check/transcript.ts +35 -0
  380. package/src/package-checks/duplicate-detection/default-check.ts +37 -6
  381. package/src/package-checks/duplicate-detection/execution.ts +2 -4
  382. package/src/package-checks/duplicate-detection/finding-messages.ts +2 -2
  383. package/src/package-checks/duplicate-detection/jscpd/availability.ts +1 -1
  384. package/src/package-checks/duplicate-detection/options.ts +6 -3
  385. package/src/package-checks/duplicate-detection/records.ts +1 -1
  386. package/src/package-checks/file-metrics/constructor.ts +29 -6
  387. package/src/package-checks/file-metrics/execution.ts +2 -4
  388. package/src/package-checks/file-metrics/finding-messages.ts +1 -1
  389. package/src/package-checks/file-metrics/options.ts +6 -3
  390. package/src/package-checks/file-metrics/records.ts +1 -1
  391. package/src/package-checks/file-metrics/scc/availability.ts +1 -1
  392. package/src/package-checks/file-metrics/scc/batch-planner.ts +56 -0
  393. package/src/package-checks/file-metrics/scc/logical-scan-resources.ts +59 -0
  394. package/src/package-checks/file-metrics/scc/scanner.ts +134 -32
  395. package/src/package-checks/function-metrics/analysis.ts +7 -2
  396. package/src/package-checks/function-metrics/analyzer/analysis-model.ts +1 -1
  397. package/src/package-checks/function-metrics/analyzer/extension-output.ts +14 -6
  398. package/src/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.ts +1 -3
  399. package/src/package-checks/function-metrics/analyzer/extensions/protocol.ts +3 -3
  400. package/src/package-checks/function-metrics/analyzer/pipeline.ts +4 -2
  401. package/src/package-checks/function-metrics/analyzer/readers/erlang.ts +6 -6
  402. package/src/package-checks/function-metrics/analyzer/readers/fortran.ts +1 -1
  403. package/src/package-checks/function-metrics/analyzer/readers/objc.ts +9 -3
  404. package/src/package-checks/function-metrics/analyzer/readers/php-states.ts +14 -7
  405. package/src/package-checks/function-metrics/analyzer/readers/plsql.ts +8 -4
  406. package/src/package-checks/function-metrics/analyzer/readers/python.ts +4 -3
  407. package/src/package-checks/function-metrics/analyzer/readers/r.ts +2 -1
  408. package/src/package-checks/function-metrics/analyzer/readers/ttcn.ts +9 -3
  409. package/src/package-checks/function-metrics/analyzer/readers/typescript.ts +9 -3
  410. package/src/package-checks/function-metrics/analyzer/readers/zig.ts +2 -1
  411. package/src/package-checks/function-metrics/analyzer/shared/code-reader.ts +3 -1
  412. package/src/package-checks/function-metrics/analyzer/shared/js-style-regex.ts +10 -5
  413. package/src/package-checks/function-metrics/analyzer-worker-port.ts +20 -6
  414. package/src/package-checks/function-metrics/constructor.ts +30 -7
  415. package/src/package-checks/function-metrics/execution.ts +2 -4
  416. package/src/package-checks/function-metrics/finding-messages.ts +2 -2
  417. package/src/package-checks/function-metrics/measurement.ts +3 -1
  418. package/src/package-checks/function-metrics/options.ts +6 -3
  419. package/src/package-checks/function-metrics/records.ts +1 -1
  420. package/src/package-checks/host-environment/git.ts +11 -0
  421. package/src/package-checks/host-environment/path.ts +1 -20
  422. package/src/package-checks/host-environment/process/contract.ts +17 -9
  423. package/src/package-checks/host-environment/process/result.ts +48 -20
  424. package/src/package-checks/host-environment/process/runner.ts +8 -4
  425. package/src/package-checks/json-schema-validation/default-check.ts +38 -5
  426. package/src/package-checks/json-schema-validation/options.ts +4 -1
  427. package/src/package-checks/json-schema-validation/reference-resolver.ts +6 -2
  428. package/src/package-checks/json-schema-validation/schema-policy.ts +10 -5
  429. package/src/package-checks/json-validation/default-check.ts +27 -6
  430. package/src/package-checks/json-validation/options.ts +4 -1
  431. package/src/package-checks/local-cache-options.ts +40 -0
  432. package/src/package-checks/maintenance-reminders/maintenance-reminders.ts +89 -9
  433. package/src/package-checks/maintenance-reminders/maintenance-support.ts +3 -3
  434. package/src/package-checks/markdown-link-validation/default-check.ts +48 -5
  435. package/src/package-checks/markdown-link-validation/execution.ts +1 -1
  436. package/src/package-checks/markdown-link-validation/finding-messages.ts +1 -1
  437. package/src/package-checks/markdown-link-validation/markdown-parser.ts +1 -5
  438. package/src/package-checks/markdown-link-validation/options-resolution.ts +2 -19
  439. package/src/package-checks/markdown-link-validation/options-validation.ts +2 -17
  440. package/src/package-checks/markdown-link-validation/options.ts +6 -7
  441. package/src/package-checks/markdown-link-validation/parse-facts-cache-payload.ts +4 -5
  442. package/src/package-checks/markdown-lint/adapter.ts +167 -0
  443. package/src/package-checks/markdown-lint/default-check.ts +92 -0
  444. package/src/package-checks/markdown-lint/execution.ts +266 -0
  445. package/src/package-checks/markdown-lint/final-data.ts +33 -0
  446. package/src/package-checks/markdown-lint/finding-messages.ts +87 -0
  447. package/src/package-checks/markdown-lint/finding-waiver-identity.ts +54 -0
  448. package/src/package-checks/markdown-lint/findings-cache.ts +141 -0
  449. package/src/package-checks/markdown-lint/options-resolution.ts +102 -0
  450. package/src/package-checks/markdown-lint/options-validation.ts +50 -0
  451. package/src/package-checks/markdown-lint/options.ts +82 -0
  452. package/src/package-checks/markdown-lint/records.ts +132 -0
  453. package/src/package-checks/markdown-lint/unavailable-reasons.ts +33 -0
  454. package/src/package-checks/project-files/collection.ts +38 -22
  455. package/src/package-checks/project-files/config-glob.ts +1 -17
  456. package/src/package-checks/project-files/configuration.ts +1 -1
  457. package/src/package-checks/project-files/gitlink-revision.ts +4 -6
  458. package/src/package-checks/project-files/gitlink-worktree.ts +35 -7
  459. package/src/package-checks/project-files/public-collection.ts +1 -1
  460. package/src/package-checks/project-files/revision-paths.ts +3 -3
  461. package/src/package-checks/project-files/revision-worktree-files.ts +16 -16
  462. package/src/package-checks/secret-detection/default-check.ts +29 -6
  463. package/src/package-checks/secret-detection/execution.ts +2 -2
  464. package/src/package-checks/secret-detection/input-preparation.ts +64 -7
  465. package/src/package-checks/secret-detection/options.ts +5 -2
  466. package/src/package-checks/secret-detection/records.ts +1 -1
  467. package/src/package-checks/secret-detection/secretlint/adapter.ts +3 -4
  468. package/src/package-tools/admission-policy/define-admission-policy.ts +54 -0
  469. package/src/{cache → package-tools/cache}/cache-json-by-key.ts +13 -17
  470. package/src/{check → package-tools/finding-presentation}/finding-presentation.ts +3 -1
  471. package/src/{finding-waivers → package-tools/finding-waivers}/reconciliation.ts +16 -8
  472. package/src/{learned-critical-path → package-tools/learned-critical-path}/duration-model/prediction.ts +5 -2
  473. package/src/{learned-critical-path → package-tools/learned-critical-path}/duration-model/preparation.ts +5 -3
  474. package/src/{learned-critical-path → package-tools/learned-critical-path}/duration-model/recording.ts +5 -4
  475. package/src/{learned-critical-path → package-tools/learned-critical-path}/duration-model/storage.ts +9 -10
  476. package/src/{learned-critical-path → package-tools/learned-critical-path}/selection-layers.ts +2 -3
  477. package/src/{learned-critical-path → package-tools/learned-critical-path}/static-decision.ts +1 -1
  478. package/src/{learned-critical-path → package-tools/learned-critical-path}/strategy.ts +7 -4
  479. package/src/project-definition/check-tree/authoring.ts +15 -8
  480. package/src/project-definition/check-tree/check-fields-authoring.ts +106 -91
  481. package/src/project-definition/check-tree/flag-conditions.ts +99 -0
  482. package/src/project-definition/check-tree/materialization.ts +12 -8
  483. package/src/project-definition/check-tree/resolution.ts +13 -15
  484. package/src/project-definition/declarative-snapshot.ts +9 -2
  485. package/src/project-definition/project-changes.ts +112 -0
  486. package/src/project-definition/project-definition-validation.ts +58 -10
  487. package/src/project-definition/project-definition.ts +41 -68
  488. package/src/project-definition/scheduler-policy.ts +6 -3
  489. package/src/project-run/admission-strategy-provider/custom-strategy-preparation.ts +11 -8
  490. package/src/project-run/admission-strategy-provider/prepared-admission-strategy.ts +2 -2
  491. package/src/project-run/aggregation.ts +51 -74
  492. package/src/project-run/changes/git.ts +206 -0
  493. package/src/project-run/check-execution/admitted-check-execution.ts +62 -0
  494. package/src/project-run/check-execution/callback.ts +3 -2
  495. package/src/project-run/check-execution/dependencies.ts +120 -6
  496. package/src/project-run/check-execution/execution-finalization.ts +6 -4
  497. package/src/project-run/check-execution/execution-settlement.ts +88 -29
  498. package/src/project-run/check-execution/flag-controls.ts +22 -8
  499. package/src/project-run/check-execution/lifecycle.ts +14 -6
  500. package/src/project-run/check-execution/{preflight-result.ts → preparation-result.ts} +34 -32
  501. package/src/project-run/check-execution/{preflight.ts → preparation.ts} +92 -84
  502. package/src/project-run/check-execution/ready-check-execution.ts +97 -0
  503. package/src/project-run/check-execution/resolved-checks.ts +40 -219
  504. package/src/project-run/check-execution/scheduled-check-run.ts +119 -0
  505. package/src/project-run/check-execution/terminal-result.ts +108 -29
  506. package/src/project-run/completion/completion.ts +17 -3
  507. package/src/project-run/controls/contract.ts +6 -16
  508. package/src/project-run/controls/validation.ts +7 -60
  509. package/src/project-run/diagnostic-logging/diagnostic-detail-rendering.ts +1 -2
  510. package/src/project-run/diagnostic-logging/observation-rendering.ts +1 -1
  511. package/src/project-run/invocation/candidate.ts +28 -15
  512. package/src/project-run/invocation/candidates.ts +56 -0
  513. package/src/project-run/invocation/creation.ts +7 -3
  514. package/src/project-run/invocation/execution.ts +136 -0
  515. package/src/project-run/invocation/run.ts +15 -179
  516. package/src/project-run/invocation/scheduler.ts +13 -6
  517. package/src/project-run/outputs/status.ts +15 -15
  518. package/src/project-run/progress-rendering/presentation.ts +35 -13
  519. package/src/project-run/progress-rendering/renderer-formatting.ts +20 -7
  520. package/src/project-run/progress-rendering/renderer-lifecycle.ts +23 -6
  521. package/src/project-run/progress-rendering/renderer.ts +10 -4
  522. package/src/project-run/project-context.ts +8 -4
  523. package/src/project-run/result.ts +5 -5
  524. package/src/project-run/run.ts +1 -1
  525. package/src/project-run/task-scheduler/admission-core/compiled-graph-lookup.ts +71 -0
  526. package/src/project-run/task-scheduler/admission-core/compiled-graph.ts +9 -4
  527. package/src/project-run/task-scheduler/admission-core/selection-query.ts +6 -4
  528. package/src/project-run/task-scheduler/admission-core/selection-seed.ts +36 -6
  529. package/src/project-run/task-scheduler/admission-core/selection-transition.ts +17 -8
  530. package/src/project-run/task-scheduler/execution-state.ts +4 -4
  531. package/src/project-run/task-scheduler/measurement/diagnostics.ts +10 -4
  532. package/src/project-run/task-scheduler/measurement/timing.ts +13 -5
  533. package/src/project-run/task-scheduler/scheduler-observation.ts +3 -1
  534. package/src/project-run/task-scheduler/scheduler-terminal-measurement.ts +24 -22
  535. package/src/project-run/task-scheduler/scheduler.ts +23 -6
  536. package/types/check/check.d.ts +178 -67
  537. package/types/check/flag-enablement.d.ts +42 -0
  538. package/types/check/handoff-provider-identity.d.ts +12 -0
  539. package/types/check/project-changes.d.ts +13 -0
  540. package/types/check/project-context.d.ts +10 -0
  541. package/types/check-settlement/facts.d.ts +1 -1
  542. package/types/data-boundary/canonical-data.d.ts +28 -5
  543. package/types/data-boundary/canonical-json.d.ts +18 -1
  544. package/types/data-boundary/closed-values.d.ts +17 -1
  545. package/types/data-boundary/config-glob.d.ts +5 -0
  546. package/types/data-boundary/project-path.d.ts +4 -0
  547. package/types/index.d.ts +27 -11
  548. package/types/package-checks/check-authoring.d.ts +45 -0
  549. package/types/package-checks/code-quality-findings/finding-waiver-authoring.d.ts +1 -1
  550. package/types/package-checks/code-quality-findings/finding-waiver-evidence.d.ts +1 -1
  551. package/types/package-checks/command-check/command-check.d.ts +48 -0
  552. package/types/package-checks/command-check/contract.d.ts +108 -0
  553. package/types/package-checks/command-check/execution.d.ts +7 -0
  554. package/types/package-checks/command-check/options.d.ts +11 -0
  555. package/types/package-checks/command-check/transcript.d.ts +8 -0
  556. package/types/package-checks/duplicate-detection/default-check.d.ts +5 -2
  557. package/types/package-checks/duplicate-detection/finding-messages.d.ts +1 -1
  558. package/types/package-checks/duplicate-detection/options.d.ts +4 -3
  559. package/types/package-checks/duplicate-detection/records.d.ts +1 -1
  560. package/types/package-checks/file-metrics/constructor.d.ts +5 -2
  561. package/types/package-checks/file-metrics/options.d.ts +4 -3
  562. package/types/package-checks/file-metrics/records.d.ts +1 -1
  563. package/types/package-checks/file-metrics/scc/batch-planner.d.ts +18 -0
  564. package/types/package-checks/file-metrics/scc/logical-scan-resources.d.ts +14 -0
  565. package/types/package-checks/function-metrics/analyzer/extensions/protocol.d.ts +3 -3
  566. package/types/package-checks/function-metrics/constructor.d.ts +5 -2
  567. package/types/package-checks/function-metrics/finding-messages.d.ts +1 -1
  568. package/types/package-checks/function-metrics/options.d.ts +4 -3
  569. package/types/package-checks/function-metrics/records.d.ts +1 -1
  570. package/types/package-checks/host-environment/git.d.ts +2 -0
  571. package/types/package-checks/host-environment/path.d.ts +1 -3
  572. package/types/package-checks/host-environment/process/contract.d.ts +17 -9
  573. package/types/package-checks/json-schema-validation/default-check.d.ts +4 -1
  574. package/types/package-checks/json-schema-validation/options.d.ts +2 -1
  575. package/types/package-checks/json-validation/default-check.d.ts +4 -1
  576. package/types/package-checks/json-validation/options.d.ts +2 -1
  577. package/types/package-checks/local-cache-options.d.ts +9 -0
  578. package/types/package-checks/maintenance-reminders/maintenance-reminders.d.ts +11 -2
  579. package/types/package-checks/markdown-link-validation/default-check.d.ts +4 -1
  580. package/types/package-checks/markdown-link-validation/options.d.ts +4 -7
  581. package/types/package-checks/markdown-lint/adapter.d.ts +10 -0
  582. package/types/package-checks/markdown-lint/default-check.d.ts +37 -0
  583. package/types/package-checks/markdown-lint/execution.d.ts +24 -0
  584. package/types/package-checks/markdown-lint/final-data.d.ts +8 -0
  585. package/types/package-checks/markdown-lint/finding-messages.d.ts +6 -0
  586. package/types/package-checks/markdown-lint/finding-waiver-identity.d.ts +3 -0
  587. package/types/package-checks/markdown-lint/findings-cache.d.ts +17 -0
  588. package/types/package-checks/markdown-lint/options-resolution.d.ts +3 -0
  589. package/types/package-checks/markdown-lint/options-validation.d.ts +2 -0
  590. package/types/package-checks/markdown-lint/options.d.ts +65 -0
  591. package/types/package-checks/markdown-lint/records.d.ts +39 -0
  592. package/types/package-checks/markdown-lint/unavailable-reasons.d.ts +3 -0
  593. package/types/package-checks/secret-detection/default-check.d.ts +4 -1
  594. package/types/package-checks/secret-detection/options.d.ts +3 -2
  595. package/types/package-tools/admission-policy/define-admission-policy.d.ts +26 -0
  596. package/types/{check → package-tools/finding-presentation}/finding-presentation.d.ts +3 -1
  597. package/types/{finding-waivers → package-tools/finding-waivers}/reconciliation.d.ts +3 -3
  598. package/types/{learned-critical-path → package-tools/learned-critical-path}/duration-model/prediction.d.ts +2 -2
  599. package/types/{learned-critical-path → package-tools/learned-critical-path}/duration-model/preparation.d.ts +1 -1
  600. package/types/{learned-critical-path → package-tools/learned-critical-path}/duration-model/recording.d.ts +1 -1
  601. package/types/{learned-critical-path → package-tools/learned-critical-path}/selection-layers.d.ts +1 -1
  602. package/types/{learned-critical-path → package-tools/learned-critical-path}/static-decision.d.ts +1 -1
  603. package/types/{learned-critical-path → package-tools/learned-critical-path}/strategy.d.ts +1 -1
  604. package/types/project-definition/check-tree/authoring.d.ts +5 -3
  605. package/types/project-definition/check-tree/check-fields-authoring.d.ts +12 -7
  606. package/types/project-definition/check-tree/flag-conditions.d.ts +5 -0
  607. package/types/project-definition/check-tree/resolution.d.ts +6 -4
  608. package/types/project-definition/declarative-snapshot.d.ts +4 -1
  609. package/types/project-definition/project-changes.d.ts +30 -0
  610. package/types/project-definition/project-definition.d.ts +15 -30
  611. package/types/project-definition/scheduler-policy.d.ts +3 -3
  612. package/types/project-run/admission-strategy-provider/prepared-admission-strategy.d.ts +2 -2
  613. package/types/project-run/aggregation.d.ts +8 -6
  614. package/types/project-run/changes/git.d.ts +14 -0
  615. package/types/project-run/check-execution/admitted-check-execution.d.ts +18 -0
  616. package/types/project-run/check-execution/dependencies.d.ts +3 -0
  617. package/types/project-run/check-execution/execution-finalization.d.ts +1 -1
  618. package/types/project-run/check-execution/execution-settlement.d.ts +15 -7
  619. package/types/project-run/check-execution/flag-controls.d.ts +1 -1
  620. package/types/project-run/check-execution/lifecycle.d.ts +9 -5
  621. package/types/project-run/check-execution/{preflight-result.d.ts → preparation-result.d.ts} +3 -3
  622. package/types/project-run/check-execution/{preflight.d.ts → preparation.d.ts} +10 -9
  623. package/types/project-run/check-execution/ready-check-execution.d.ts +18 -0
  624. package/types/project-run/check-execution/resolved-checks.d.ts +12 -13
  625. package/types/project-run/check-execution/scheduled-check-run.d.ts +10 -0
  626. package/types/project-run/check-execution/terminal-result.d.ts +13 -1
  627. package/types/project-run/completion/completion.d.ts +3 -1
  628. package/types/project-run/controls/contract.d.ts +6 -16
  629. package/types/project-run/invocation/candidates.d.ts +8 -0
  630. package/types/project-run/invocation/execution.d.ts +5 -0
  631. package/types/project-run/invocation/run.d.ts +2 -2
  632. package/types/project-run/outputs/status.d.ts +4 -4
  633. package/types/project-run/progress-rendering/presentation.d.ts +4 -3
  634. package/types/project-run/progress-rendering/renderer-formatting.d.ts +5 -2
  635. package/types/project-run/progress-rendering/renderer-lifecycle.d.ts +2 -0
  636. package/types/project-run/progress-rendering/renderer.d.ts +4 -2
  637. package/types/project-run/project-context.d.ts +3 -3
  638. package/types/project-run/result.d.ts +3 -3
  639. package/types/project-run/run.d.ts +1 -1
  640. package/types/project-run/task-scheduler/admission-core/compiled-graph-lookup.d.ts +10 -0
  641. package/types/project-run/task-scheduler/execution-state.d.ts +4 -4
  642. package/types/project-run/task-scheduler/measurement/diagnostics.d.ts +2 -2
  643. package/types/project-run/task-scheduler/scheduler-terminal-measurement.d.ts +1 -1
  644. package/dist/esm/cache/cache-json-by-key.mjs.map +0 -1
  645. package/dist/esm/check/finding-presentation.mjs.map +0 -1
  646. package/dist/esm/finding-waivers/reconciliation.mjs.map +0 -1
  647. package/dist/esm/learned-critical-path/duration-model/bounded-history.mjs.map +0 -1
  648. package/dist/esm/learned-critical-path/duration-model/prediction.mjs.map +0 -1
  649. package/dist/esm/learned-critical-path/duration-model/preparation.mjs.map +0 -1
  650. package/dist/esm/learned-critical-path/duration-model/recording.mjs.map +0 -1
  651. package/dist/esm/learned-critical-path/duration-model/storage.mjs.map +0 -1
  652. package/dist/esm/learned-critical-path/selection-layers.mjs.map +0 -1
  653. package/dist/esm/learned-critical-path/static-decision.mjs.map +0 -1
  654. package/dist/esm/learned-critical-path/strategy.mjs.map +0 -1
  655. package/dist/esm/package-checks/project-files/config-glob.mjs.map +0 -1
  656. package/dist/esm/project-run/check-execution/preflight-result.mjs.map +0 -1
  657. package/dist/esm/project-run/check-execution/preflight.mjs.map +0 -1
  658. package/dist/esm/project-run/task-scheduler/critical-path-ranking.mjs.map +0 -1
  659. package/types/package-checks/project-files/config-glob.d.ts +0 -5
  660. /package/dist/esm/{check → package-tools/finding-presentation}/finding-presentation.mjs +0 -0
  661. /package/dist/esm/{project-run/task-scheduler → package-tools/learned-critical-path}/critical-path-ranking.mjs +0 -0
  662. /package/dist/esm/{learned-critical-path → package-tools/learned-critical-path}/duration-model/bounded-history.mjs +0 -0
  663. /package/dist/esm/{learned-critical-path → package-tools/learned-critical-path}/duration-model/recording.mjs +0 -0
  664. /package/dist/esm/{learned-critical-path → package-tools/learned-critical-path}/static-decision.mjs +0 -0
  665. /package/src/{project-run/task-scheduler → package-tools/learned-critical-path}/critical-path-ranking.ts +0 -0
  666. /package/src/{learned-critical-path → package-tools/learned-critical-path}/duration-model/bounded-history.ts +0 -0
  667. /package/types/{cache → package-tools/cache}/cache-json-by-key.d.ts +0 -0
  668. /package/types/{project-run/task-scheduler → package-tools/learned-critical-path}/critical-path-ranking.d.ts +0 -0
  669. /package/types/{learned-critical-path → package-tools/learned-critical-path}/duration-model/bounded-history.d.ts +0 -0
  670. /package/types/{learned-critical-path → package-tools/learned-critical-path}/duration-model/storage.d.ts +0 -0
@@ -1,72 +1,39 @@
1
1
  import type { CheckMessage, CheckProjectContext } from "../../check/check.ts";
2
2
  import type {
3
3
  NormalizedCheck,
4
- SchedulerMeasurementHook
4
+ SchedulerTerminalEffect
5
5
  } from "../../project-definition/project-definition.ts";
6
6
  import type { ResourceUnitMapping } from "../../project-definition/resource-unit-mapping.ts";
7
7
  import { createCoreCheckSession } from "../../check-settlement/session.ts";
8
- import {
9
- diagnosticTags,
10
- summarizeDiagnosticValue,
11
- type DiagnosticLogger
12
- } from "../diagnostic-logging/logger.ts";
13
- import { prepareTaskGraph } from "../task-scheduler/graph.ts";
8
+ import type { DiagnosticLogger } from "../diagnostic-logging/logger.ts";
14
9
  import type { AdmissionSelectionPolicy } from "../task-scheduler/admission-selection-policy.ts";
15
- import { runTaskGraph } from "../task-scheduler/scheduler.ts";
10
+ import { prepareTaskGraph } from "../task-scheduler/graph.ts";
16
11
  import type { SchedulerPerformanceDiagnosticsInput } from "../task-scheduler/measurement/diagnostics.ts";
17
- import { executeCheckCallback } from "./callback.ts";
18
- import { artifactDirectoryForCheck, type ResolvedInvocationPaths } from "../invocation/paths.ts";
12
+ import type { ResolvedInvocationPaths } from "../invocation/paths.ts";
19
13
  import { runWithCheckConsoleRouter } from "./console-capture.ts";
20
- import { createCheckDependencies } from "./dependencies.ts";
21
14
  import {
22
- CheckExecutionInvariantFailure,
23
15
  recordSettledCheck,
24
- settleCallback,
25
16
  type CheckExecutionState,
26
- type CheckIdentity,
27
17
  type SettledCheckFacts
28
18
  } from "./execution-settlement.ts";
29
- import {
30
- checkIdentity,
31
- closeResolvedChecks,
32
- settleBlockedDependent,
33
- trustedFailure
34
- } from "./execution-finalization.ts";
35
- import type { CheckExecutionLifecycle } from "./lifecycle.ts";
19
+ import { checkIdentity, closeResolvedChecks } from "./execution-finalization.ts";
20
+ import type { CheckExecutionLifecycle, InvocationLifecycle } from "./lifecycle.ts";
36
21
  import { planStaticCheckGraph } from "./plan.ts";
37
22
  import {
38
23
  selectEffectiveCheckIds,
39
24
  resolveFlagControlSettlements,
40
25
  type FlagControlSettlement
41
26
  } from "./flag-controls.ts";
42
- import {
43
- prepareCheck,
44
- type CheckPreflightResolution,
45
- type ReadyCheckPreflightResolution
46
- } from "./preflight.ts";
27
+ import { runScheduledChecks } from "./scheduled-check-run.ts";
28
+ import type { CheckExecutionClock } from "./admitted-check-execution.ts";
47
29
  import type { ResolvedCheckExecution } from "./resolved-execution-result.ts";
48
30
 
49
- const INERT_SIGNAL = new AbortController().signal;
50
31
  const NO_CHECK_MESSAGES: readonly CheckMessage[] = Object.freeze([]);
51
- const DIRECT_EXECUTION_INVOCATION_ID = "invocation/v1:direct-check-execution";
52
- const SYSTEM_MONOTONIC_CLOCK: CheckExecutionClock = Object.freeze({
53
- now: () => performance.now()
54
- });
55
32
 
56
33
  /** Package-private monotonic clock seam for execution accounting. */
57
- export type CheckExecutionClock = Readonly<{ now(): number }>;
58
-
59
- interface ExecuteCheckInput extends CheckExecutionState {
60
- readonly check: NormalizedCheck;
61
- readonly clock: CheckExecutionClock;
62
- readonly onAdmittedCheck: ((check: NormalizedCheck) => void) | undefined;
63
- readonly invocationId: string;
64
- readonly paths: ResolvedInvocationPaths | undefined;
65
- readonly project: CheckProjectContext;
66
- readonly signal: AbortSignal;
67
- }
34
+ export type { CheckExecutionClock } from "./admitted-check-execution.ts";
68
35
 
69
- type ResolvedCheckExecutionInput = Readonly<{
36
+ export type ResolvedCheckExecutionInput = Readonly<{
70
37
  /** Complete prepared private policy handoff; public policy dispatch stays outside execution. */
71
38
  readonly admissionPolicy?: AdmissionSelectionPolicy;
72
39
  readonly checks: readonly NormalizedCheck[];
@@ -85,10 +52,11 @@ type ResolvedCheckExecutionInput = Readonly<{
85
52
  readonly schedulerDiagnosticLogger?: DiagnosticLogger;
86
53
  /** Explicit enabled-only diagnostics handoff from the invocation output owner. */
87
54
  readonly schedulerPerformanceDiagnostics?: SchedulerPerformanceDiagnosticsInput;
88
- readonly schedulerMeasurementHooks?: readonly SchedulerMeasurementHook[];
89
- readonly onSchedulerMeasurementHookFailure?: () => void;
90
- readonly onSchedulerMeasurementHooksSettled?: () => void;
91
- readonly lifecycle?: CheckExecutionLifecycle;
55
+ readonly schedulerTerminalEffects?: readonly SchedulerTerminalEffect[];
56
+ readonly onSchedulerTerminalEffectFailure?: () => void;
57
+ readonly onSchedulerTerminalEffectsSettled?: () => void;
58
+ readonly checkLifecycle?: CheckExecutionLifecycle;
59
+ readonly invocationLifecycle?: InvocationLifecycle;
92
60
  /** Provider-owned bounded learned admission diagnostics, delivered by invocation. */
93
61
  readonly onAdmittedCheck?: (check: NormalizedCheck) => void;
94
62
  }>;
@@ -112,76 +80,34 @@ async function executePreparedResolvedChecks(
112
80
  const state = createExecutionState({
113
81
  checks: input.checks,
114
82
  diagnosticLogger: input.diagnosticLogger,
115
- lifecycle: input.lifecycle
116
- });
117
- const flagControlSettlements = resolveFlagControlSettlements({
118
- checks: input.checks,
119
- diagnosticLogger: input.diagnosticLogger,
120
- effectiveCheckIds,
121
- signal: input.signal
83
+ lifecycle: input.checkLifecycle
122
84
  });
123
- for (const settlement of flagControlSettlements) {
124
- settleFlagControlOutcome(state, settlement);
125
- }
126
- input.lifecycle?.flagControlCompleted();
127
- const checksByCheckId = new Map(
128
- input.checks.map((check) => [check.definition.checkId, check] as const)
129
- );
130
- let graphRun: Awaited<ReturnType<typeof runTaskGraph<boolean>>>;
131
85
  try {
132
- graphRun = await runTaskGraph<boolean>({
133
- graph: planStaticCheckGraph(input.checks, input.resourceCapacities),
134
- admissionPolicy: input.admissionPolicy,
135
- maxParallel: input.maxParallel,
136
- diagnosticLogger: input.schedulerDiagnosticLogger ?? input.diagnosticLogger,
137
- performanceDiagnostics: input.schedulerPerformanceDiagnostics,
138
- measurementHooks: input.schedulerMeasurementHooks,
139
- onMeasurementHookFailure: input.onSchedulerMeasurementHookFailure,
140
- onMeasurementHooksSettled: input.onSchedulerMeasurementHooksSettled,
141
- preAdmissionTaskResults: Object.freeze(
142
- flagControlSettlements.map((settlement) =>
143
- Object.freeze({
144
- taskId: settlement.check.definition.checkId,
145
- value: false
146
- })
147
- )
148
- ),
149
- signal: input.signal,
150
- isPrerequisiteSatisfied: (satisfied) => satisfied,
151
- onTaskBlocked: (task, dependencyIds) => {
152
- const check = checksByCheckId.get(task.id);
153
- if (check === undefined) {
154
- throw new CheckExecutionInvariantFailure("Blocked Task has no normalized Check");
155
- }
156
- settleBlockedDependent({ check, dependencyIds, state });
157
- },
158
- execute: (task, context) => {
159
- const check = checksByCheckId.get(task.id);
160
- if (check === undefined) {
161
- throw new CheckExecutionInvariantFailure("Task graph has no normalized Check");
162
- }
163
- return executeAdmittedCheck({
164
- ...state,
165
- check,
166
- clock: input.clock ?? SYSTEM_MONOTONIC_CLOCK,
167
- onAdmittedCheck: input.onAdmittedCheck,
168
- invocationId: input.invocationId ?? DIRECT_EXECUTION_INVOCATION_ID,
169
- paths: input.paths,
170
- project: input.project,
171
- signal: context.signal ?? INERT_SIGNAL
172
- });
173
- }
86
+ const flagControlSettlements = resolveFlagControlSettlements({
87
+ checks: input.checks,
88
+ ...(input.diagnosticLogger === undefined ? {} : { diagnosticLogger: input.diagnosticLogger }),
89
+ effectiveCheckIds,
90
+ signal: input.signal
91
+ });
92
+ for (const settlement of flagControlSettlements) {
93
+ settleFlagControlOutcome(state, settlement);
94
+ }
95
+ input.invocationLifecycle?.selectionSettled();
96
+ const graphRun = await runScheduledChecks({
97
+ execution: input,
98
+ flagControlSettlements,
99
+ state
174
100
  });
175
- } catch (error) {
176
- throw trustedFailure(error);
177
- }
178
101
 
179
- return closeResolvedChecks({
180
- allChecks: input.checks,
181
- effectiveCheckIds,
182
- graphRun,
183
- state
184
- });
102
+ return closeResolvedChecks({
103
+ allChecks: input.checks,
104
+ effectiveCheckIds,
105
+ graphRun,
106
+ state
107
+ });
108
+ } finally {
109
+ state.handoffsByCheckId.clear();
110
+ }
185
111
  }
186
112
 
187
113
  function createExecutionState(
@@ -193,6 +119,7 @@ function createExecutionState(
193
119
  ): CheckExecutionState {
194
120
  return {
195
121
  diagnosticLogger: input.diagnosticLogger,
122
+ handoffsByCheckId: new Map(),
196
123
  settledFactsByCheckId: new Map<string, SettledCheckFacts>(),
197
124
  lifecycle: input.lifecycle,
198
125
  session: createCoreCheckSession(
@@ -216,109 +143,3 @@ function settleFlagControlOutcome(
216
143
  state
217
144
  });
218
145
  }
219
-
220
- function settleBlockedPreflight(
221
- state: CheckExecutionState,
222
- preflight: Extract<CheckPreflightResolution, { readonly kind: "blocked" }>
223
- ): void {
224
- const scope = state.session.openCheckScope(preflight.check.definition.checkId);
225
- const outcome = scope.settleProduct(preflight.outcome);
226
- recordSettledCheck({
227
- check: checkIdentity(preflight.check),
228
- durationMs: null,
229
- messages: preflight.check.preflightMessages,
230
- outcome,
231
- phase: "preflight",
232
- state
233
- });
234
- }
235
-
236
- async function executeAdmittedCheck(input: ExecuteCheckInput): Promise<boolean> {
237
- observeAdmittedCheck(input);
238
- const preflight = await prepareCheck({
239
- check: input.check,
240
- diagnosticLogger: input.diagnosticLogger,
241
- signal: input.signal
242
- });
243
- if (preflight.kind === "blocked") {
244
- settleBlockedPreflight(input, preflight);
245
- return false;
246
- }
247
- return executeReadyCheck({ ...input, preflight });
248
- }
249
-
250
- /** Diagnostic observation belongs to the invocation; it cannot revise admitted Task facts. */
251
- function observeAdmittedCheck(input: ExecuteCheckInput): void {
252
- try {
253
- input.onAdmittedCheck?.(input.check);
254
- } catch {
255
- // Learned diagnostic output is best-effort and has no execution consequence.
256
- }
257
- }
258
-
259
- async function executeReadyCheck(
260
- input: ExecuteCheckInput & Readonly<{ readonly preflight: ReadyCheckPreflightResolution }>
261
- ): Promise<boolean> {
262
- const check = input.preflight.check;
263
- const checkId = check.definition.checkId;
264
- const scope = input.session.openCheckScope(checkId);
265
- const identity = checkIdentity(check);
266
- input.diagnosticLogger?.observe({
267
- event: "check.started",
268
- tags: diagnosticTags(`CHECK:${checkId}`, "EXECUTION", "STARTED"),
269
- details: {
270
- dependencies: check.dependsOn,
271
- displayName: check.definition.displayName,
272
- options: summarizeDiagnosticValue(check.options)
273
- }
274
- });
275
- emitStarted(input.lifecycle, identity);
276
- const startedAt = input.clock.now();
277
- const callback = await executeCheckCallback({
278
- artifactDirectory:
279
- input.paths === undefined ? null : artifactDirectoryForCheck(input.paths, checkId),
280
- check,
281
- dependencies: createCheckDependencies({
282
- checkId,
283
- diagnosticLogger: input.diagnosticLogger,
284
- directRelationCheckIds: directRelationCheckIds(check),
285
- session: input.session
286
- }),
287
- diagnosticLogger: input.diagnosticLogger,
288
- invocationId: input.invocationId,
289
- project: input.project,
290
- scope,
291
- signal: input.signal
292
- });
293
- const settled = settleCallback({
294
- callback,
295
- checkId,
296
- diagnosticLogger: input.diagnosticLogger,
297
- preflightMessages: check.preflightMessages,
298
- scope
299
- });
300
- recordSettledCheck({
301
- check: identity,
302
- durationMs: durationSince(startedAt, input.clock),
303
- messages: settled.messages,
304
- outcome: settled.outcome,
305
- phase: "execution",
306
- state: input
307
- });
308
- return settled.outcome.status === "passed";
309
- }
310
-
311
- function directRelationCheckIds(
312
- check: Pick<NormalizedCheck, "dependsOn" | "observes">
313
- ): readonly string[] {
314
- return Object.freeze([...new Set([...check.dependsOn, ...check.observes])].sort());
315
- }
316
-
317
- function emitStarted(lifecycle: CheckExecutionLifecycle | undefined, check: CheckIdentity): void {
318
- lifecycle?.started(Object.freeze({ checkId: check.checkId, displayName: check.displayName }));
319
- }
320
-
321
- function durationSince(startedAt: number, clock: CheckExecutionClock): number {
322
- const elapsed = clock.now() - startedAt;
323
- return Number.isFinite(elapsed) && elapsed >= 0 ? elapsed : 0;
324
- }
@@ -0,0 +1,119 @@
1
+ /** Maps normalized Checks into the Scheduler's opaque Task execute contract. */
2
+
3
+ import type { NormalizedCheck } from "../../project-definition/project-definition.ts";
4
+ import { runTaskGraph, type RunTaskGraphOptions } from "../task-scheduler/scheduler.ts";
5
+ import {
6
+ CheckExecutionInvariantFailure,
7
+ type CheckExecutionState
8
+ } from "./execution-settlement.ts";
9
+ import { settleBlockedDependent, trustedFailure } from "./execution-finalization.ts";
10
+ import type { FlagControlSettlement } from "./flag-controls.ts";
11
+ import { planStaticCheckGraph } from "./plan.ts";
12
+ import {
13
+ executeAdmittedCheck,
14
+ type AdmittedCheckExecutionInput,
15
+ type CheckExecutionClock
16
+ } from "./admitted-check-execution.ts";
17
+ import type { ResolvedCheckExecutionInput } from "./resolved-checks.ts";
18
+
19
+ const INERT_SIGNAL = new AbortController().signal;
20
+ const DIRECT_EXECUTION_INVOCATION_ID = "invocation/v1:direct-check-execution";
21
+ const SYSTEM_MONOTONIC_CLOCK: CheckExecutionClock = Object.freeze({
22
+ now: () => performance.now()
23
+ });
24
+
25
+ export async function runScheduledChecks(
26
+ input: Readonly<{
27
+ readonly execution: ResolvedCheckExecutionInput;
28
+ readonly flagControlSettlements: readonly FlagControlSettlement[];
29
+ readonly state: CheckExecutionState;
30
+ }>
31
+ ): Promise<Awaited<ReturnType<typeof runTaskGraph<boolean>>>> {
32
+ try {
33
+ return await runTaskGraph(schedulerOptionsFor(input));
34
+ } catch (error) {
35
+ throw trustedFailure(error);
36
+ }
37
+ }
38
+
39
+ function schedulerOptionsFor(
40
+ input: Readonly<{
41
+ readonly execution: ResolvedCheckExecutionInput;
42
+ readonly flagControlSettlements: readonly FlagControlSettlement[];
43
+ readonly state: CheckExecutionState;
44
+ }>
45
+ ): RunTaskGraphOptions<boolean> {
46
+ const execution = input.execution;
47
+ const checksByCheckId = new Map(
48
+ execution.checks.map((check) => [check.definition.checkId, check] as const)
49
+ );
50
+ const schedulerDiagnosticLogger =
51
+ execution.schedulerDiagnosticLogger ?? execution.diagnosticLogger;
52
+ return {
53
+ graph: planStaticCheckGraph(execution.checks, execution.resourceCapacities),
54
+ ...(execution.admissionPolicy === undefined
55
+ ? {}
56
+ : { admissionPolicy: execution.admissionPolicy }),
57
+ maxParallel: execution.maxParallel,
58
+ ...(schedulerDiagnosticLogger === undefined
59
+ ? {}
60
+ : { diagnosticLogger: schedulerDiagnosticLogger }),
61
+ ...(execution.schedulerPerformanceDiagnostics === undefined
62
+ ? {}
63
+ : { performanceDiagnostics: execution.schedulerPerformanceDiagnostics }),
64
+ ...(execution.schedulerTerminalEffects === undefined
65
+ ? {}
66
+ : { terminalEffects: execution.schedulerTerminalEffects }),
67
+ ...(execution.onSchedulerTerminalEffectFailure === undefined
68
+ ? {}
69
+ : { onTerminalEffectFailure: execution.onSchedulerTerminalEffectFailure }),
70
+ ...(execution.onSchedulerTerminalEffectsSettled === undefined
71
+ ? {}
72
+ : { onTerminalEffectsSettled: execution.onSchedulerTerminalEffectsSettled }),
73
+ preAdmissionTaskResults: Object.freeze(
74
+ input.flagControlSettlements.map((settlement) =>
75
+ Object.freeze({ taskId: settlement.check.definition.checkId, value: false })
76
+ )
77
+ ),
78
+ ...(execution.signal === undefined ? {} : { signal: execution.signal }),
79
+ isPrerequisiteSatisfied: (satisfied) => satisfied,
80
+ onTaskBlocked: (task, dependencyIds) => {
81
+ settleBlockedDependent({
82
+ check: requiredNormalizedCheck(checksByCheckId, task, "Blocked Task"),
83
+ dependencyIds,
84
+ state: input.state
85
+ });
86
+ },
87
+ execute: (task, context) =>
88
+ executeAdmittedCheck({
89
+ ...input.state,
90
+ ...admittedExecutionFacts(execution),
91
+ check: requiredNormalizedCheck(checksByCheckId, task, "Task graph"),
92
+ signal: context.signal ?? INERT_SIGNAL
93
+ })
94
+ };
95
+ }
96
+
97
+ function requiredNormalizedCheck(
98
+ checksByCheckId: ReadonlyMap<string, NormalizedCheck>,
99
+ task: Readonly<{ readonly id: string }>,
100
+ owner: "Blocked Task" | "Task graph"
101
+ ): NormalizedCheck {
102
+ const check = checksByCheckId.get(task.id);
103
+ if (check === undefined) {
104
+ throw new CheckExecutionInvariantFailure(`${owner} has no normalized Check`);
105
+ }
106
+ return check;
107
+ }
108
+
109
+ function admittedExecutionFacts(
110
+ execution: ResolvedCheckExecutionInput
111
+ ): Omit<AdmittedCheckExecutionInput, keyof CheckExecutionState | "check" | "signal"> {
112
+ return {
113
+ clock: execution.clock ?? SYSTEM_MONOTONIC_CLOCK,
114
+ onAdmittedCheck: execution.onAdmittedCheck,
115
+ invocationId: execution.invocationId ?? DIRECT_EXECUTION_INVOCATION_ID,
116
+ paths: execution.paths,
117
+ project: execution.project
118
+ };
119
+ }
@@ -1,4 +1,5 @@
1
1
  import type { CheckMessage } from "../../check/check.ts";
2
+ import type { HandoffProviderIdentity } from "../../check/handoff-provider-identity.ts";
2
3
  import {
3
4
  hasRequiredAndOptionalRecordKeys,
4
5
  snapshotClosedRecord
@@ -11,10 +12,17 @@ import { parseCheckMessages } from "./messages.ts";
11
12
  * Core; this adapter never validates outcome data or reasons.
12
13
  */
13
14
  export interface ParsedCheckTerminalResult {
15
+ readonly handoff: ParsedCheckTerminalHandoff | undefined;
14
16
  readonly messages: readonly CheckMessage[];
15
17
  readonly result: StrippedTerminalResult;
16
18
  }
17
19
 
20
+ /** A validated reference held only until its owning Core terminal settlement accepts it. */
21
+ export interface ParsedCheckTerminalHandoff {
22
+ readonly identity: HandoffProviderIdentity;
23
+ readonly value: object;
24
+ }
25
+
18
26
  type StrippedTerminalResult =
19
27
  | Readonly<{ readonly status: "passed" | "failed"; readonly data: unknown }>
20
28
  | Readonly<{ readonly status: "not-applicable"; readonly reason?: unknown }>
@@ -25,50 +33,121 @@ type StrippedTerminalResult =
25
33
  * closed author result. Any malformed attachment rejects the whole value so a
26
34
  * valid prefix can never escape into lifecycle or Run result state.
27
35
  */
28
- export function parseCheckTerminalResult(value: unknown): ParsedCheckTerminalResult | undefined {
36
+ export function parseCheckTerminalResult(
37
+ value: unknown,
38
+ handoffIdentity: HandoffProviderIdentity | undefined
39
+ ): ParsedCheckTerminalResult | undefined {
29
40
  const terminal = snapshotClosedRecord(value);
30
41
  if (terminal === undefined || typeof terminal.status !== "string") return undefined;
31
42
 
32
- const result = strippedTerminalResult(terminal);
43
+ const result = strippedTerminalResult(terminal, handoffIdentity);
33
44
  if (result === undefined) return undefined;
34
45
  const messages = parseCheckMessages(terminal.messages);
35
- return messages === undefined ? undefined : Object.freeze({ messages, result });
46
+ const handoff = terminalHandoff(terminal, handoffIdentity);
47
+ return messages === undefined || handoff === null
48
+ ? undefined
49
+ : Object.freeze({ handoff, messages, result });
50
+ }
51
+
52
+ /**
53
+ * A declared provider result can contain an invocation-private reference. Diagnostics
54
+ * retain only its parsed terminal result, and represent malformed values as null.
55
+ */
56
+ export function diagnosticCallbackResult(
57
+ value: unknown,
58
+ handoffIdentity: HandoffProviderIdentity | undefined
59
+ ): unknown {
60
+ const terminal = snapshotClosedRecord(value);
61
+ if (
62
+ handoffIdentity === undefined &&
63
+ (terminal === undefined || !Object.hasOwn(terminal, "handoff"))
64
+ ) {
65
+ return value;
66
+ }
67
+ return parseCheckTerminalResult(value, handoffIdentity)?.result ?? null;
36
68
  }
37
69
 
38
70
  function strippedTerminalResult(
39
- terminal: Readonly<Record<string, unknown>>
71
+ terminal: Readonly<Record<string, unknown>>,
72
+ handoffIdentity: HandoffProviderIdentity | undefined
40
73
  ): StrippedTerminalResult | undefined {
41
74
  switch (terminal.status) {
42
75
  case "passed":
76
+ return strippedPassedTerminalResult(terminal, handoffIdentity);
43
77
  case "failed":
44
- return hasRequiredAndOptionalRecordKeys(terminal, {
45
- required: ["status", "data"],
46
- optional: ["messages"]
47
- })
48
- ? Object.freeze({ status: terminal.status, data: terminal.data })
49
- : undefined;
78
+ return strippedFailedTerminalResult(terminal);
50
79
  case "not-applicable":
51
- if (
52
- !hasRequiredAndOptionalRecordKeys(terminal, {
53
- required: ["status"],
54
- optional: ["reason", "messages"]
55
- })
56
- ) {
57
- return undefined;
58
- }
59
- return Object.freeze(
60
- Object.hasOwn(terminal, "reason")
61
- ? { status: "not-applicable", reason: terminal.reason }
62
- : { status: "not-applicable" }
63
- );
80
+ return strippedNotApplicableTerminalResult(terminal);
64
81
  case "unavailable":
65
- return hasRequiredAndOptionalRecordKeys(terminal, {
66
- required: ["status", "reason"],
67
- optional: ["messages"]
68
- })
69
- ? Object.freeze({ status: "unavailable", reason: terminal.reason })
70
- : undefined;
82
+ return strippedUnavailableTerminalResult(terminal);
71
83
  default:
72
84
  return undefined;
73
85
  }
74
86
  }
87
+
88
+ /** A declared provider can only publish its reference alongside a passed data result. */
89
+ function strippedPassedTerminalResult(
90
+ terminal: Readonly<Record<string, unknown>>,
91
+ handoffIdentity: HandoffProviderIdentity | undefined
92
+ ): StrippedTerminalResult | undefined {
93
+ const required =
94
+ handoffIdentity === undefined ? ["status", "data"] : ["status", "data", "handoff"];
95
+ return hasRequiredAndOptionalRecordKeys(terminal, { required, optional: ["messages"] })
96
+ ? Object.freeze({ status: "passed", data: terminal.data })
97
+ : undefined;
98
+ }
99
+
100
+ /** Failed results retain canonical data but never carry an invocation-private handoff. */
101
+ function strippedFailedTerminalResult(
102
+ terminal: Readonly<Record<string, unknown>>
103
+ ): StrippedTerminalResult | undefined {
104
+ return hasRequiredAndOptionalRecordKeys(terminal, {
105
+ required: ["status", "data"],
106
+ optional: ["messages"]
107
+ })
108
+ ? Object.freeze({ status: "failed", data: terminal.data })
109
+ : undefined;
110
+ }
111
+
112
+ function strippedNotApplicableTerminalResult(
113
+ terminal: Readonly<Record<string, unknown>>
114
+ ): StrippedTerminalResult | undefined {
115
+ if (
116
+ !hasRequiredAndOptionalRecordKeys(terminal, {
117
+ required: ["status"],
118
+ optional: ["reason", "messages"]
119
+ })
120
+ ) {
121
+ return undefined;
122
+ }
123
+ return Object.freeze(
124
+ Object.hasOwn(terminal, "reason")
125
+ ? { status: "not-applicable", reason: terminal.reason }
126
+ : { status: "not-applicable" }
127
+ );
128
+ }
129
+
130
+ function strippedUnavailableTerminalResult(
131
+ terminal: Readonly<Record<string, unknown>>
132
+ ): StrippedTerminalResult | undefined {
133
+ return hasRequiredAndOptionalRecordKeys(terminal, {
134
+ required: ["status", "reason"],
135
+ optional: ["messages"]
136
+ })
137
+ ? Object.freeze({ status: "unavailable", reason: terminal.reason })
138
+ : undefined;
139
+ }
140
+
141
+ function terminalHandoff(
142
+ terminal: Readonly<Record<string, unknown>>,
143
+ handoffIdentity: HandoffProviderIdentity | undefined
144
+ ): ParsedCheckTerminalHandoff | null | undefined {
145
+ if (handoffIdentity === undefined) return undefined;
146
+ if (terminal.status !== "passed") return undefined;
147
+ if (!isHandoffReference(terminal.handoff)) return null;
148
+ return Object.freeze({ identity: handoffIdentity, value: terminal.handoff });
149
+ }
150
+
151
+ function isHandoffReference(value: unknown): value is object {
152
+ return value !== null && (typeof value === "object" || typeof value === "function");
153
+ }
@@ -26,7 +26,7 @@ type OutcomeCounts = {
26
26
 
27
27
  /** Settled Check facts consumed by completion and output publication. */
28
28
  export type CoreExecution = Readonly<{
29
- readonly aggregate: CheckAggregate | null;
29
+ readonly aggregate: CheckAggregate;
30
30
  readonly checkDurations: readonly CheckDuration[];
31
31
  readonly checkMessages: readonly CheckRunMessage[];
32
32
  readonly snapshot: CoreSnapshot;
@@ -136,9 +136,23 @@ export function finalizeInvocation(
136
136
  return resolveFinalRunResult(candidate, invocation.outputs.value());
137
137
  }
138
138
 
139
+ /** Closes invocation-owned writers after aggregation rejects without fabricating a terminal Run result. */
140
+ export function closeAggregationFailure(invocation: Invocation): void {
141
+ try {
142
+ invocation.diagnosticLogging.close();
143
+ } catch {
144
+ // Cleanup must not replace the callback error returned to the caller.
145
+ }
146
+ try {
147
+ invocation.progressRendering.close();
148
+ } catch {
149
+ // Cleanup must not replace the callback error returned to the caller.
150
+ }
151
+ }
152
+
139
153
  function terminalStatusTag(candidate: NonConfigurationRunResult): string {
140
- if ("aggregate" in candidate && candidate.aggregate !== null)
141
- return candidate.aggregate.toUpperCase();
154
+ if (candidate.kind === "output") return "OUTPUT";
155
+ if ("aggregate" in candidate) return candidate.aggregate.toUpperCase();
142
156
  if (candidate.kind === "cancelled") return "CANCELLED";
143
157
  return candidate.kind.toUpperCase();
144
158
  }