@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,4 +1,4 @@
1
- import type { CheckMessage, CheckOutcome, CheckVisibility } from "../../check/check.ts";
1
+ import type { CheckMessage, CheckOutcome } from "../../check/check.ts";
2
2
  import type { CoreRecord } from "../../check-settlement/facts.ts";
3
3
  import type { ResolvedProgressRenderingOutput } from "../../project-definition/project-definition.ts";
4
4
  import { resolveProgressRenderingOutput } from "../../project-definition/output-defaults.ts";
@@ -15,6 +15,7 @@ export interface ProgressWriter {
15
15
  export type ProgressFeedback = Readonly<
16
16
  | {
17
17
  readonly kind: "prepared";
18
+ readonly quietPassOmissionConfiguredCount: number;
18
19
  readonly totalChecks: number;
19
20
  }
20
21
  | {
@@ -24,6 +25,7 @@ export type ProgressFeedback = Readonly<
24
25
  readonly kind: "started";
25
26
  readonly checkId: string;
26
27
  readonly displayName: string;
28
+ readonly omitQuietPassedRow: boolean;
27
29
  }
28
30
  | {
29
31
  readonly kind: "settled";
@@ -31,7 +33,7 @@ export type ProgressFeedback = Readonly<
31
33
  readonly displayName: string;
32
34
  readonly outcome: CheckOutcome;
33
35
  readonly durationMs: number | null;
34
- readonly visibility: CheckVisibility;
36
+ readonly omitQuietPassedRow: boolean;
35
37
  readonly messages: readonly CheckMessage[];
36
38
  readonly records: readonly CoreRecord[];
37
39
  }
@@ -73,7 +75,11 @@ export function createProgressRenderer(
73
75
  const controller = new ProgressRendererController(writer, clock, progressRendering);
74
76
  return Object.freeze({
75
77
  refreshesRunningRegion: controller.refreshesRunningRegion,
76
- refresh: (): void => controller.refresh(),
77
- render: (feedback: ProgressFeedback): void => controller.render(feedback)
78
+ refresh: (): void => {
79
+ controller.refresh();
80
+ },
81
+ render: (feedback: ProgressFeedback): void => {
82
+ controller.render(feedback);
83
+ }
78
84
  });
79
85
  }
@@ -1,12 +1,16 @@
1
- import type { CheckProjectContext } from "../check/check.ts";
2
- import type { RunControls } from "./controls/contract.ts";
1
+ import type { CheckProjectContext, ProjectChanges } from "../check/check.ts";
3
2
  import type { ResolvedInvocationPaths } from "./invocation/paths.ts";
4
3
  /** Materializes only invocation-wide callback input; Check-local options own domain configuration. */
5
4
  export function createProjectContext(
6
- input: Readonly<{ readonly controls: RunControls; readonly paths: ResolvedInvocationPaths }>
5
+ input: Readonly<{
6
+ readonly changes?: ProjectChanges;
7
+ readonly flags: readonly string[];
8
+ readonly paths: ResolvedInvocationPaths;
9
+ }>
7
10
  ): CheckProjectContext {
8
11
  return Object.freeze({
9
- flags: Object.freeze([...(input.controls.flags ?? [])]),
12
+ ...(input.changes === undefined ? {} : { changes: input.changes }),
13
+ flags: input.flags,
10
14
  root: input.paths.projectRoot
11
15
  });
12
16
  }
@@ -41,8 +41,8 @@ export interface CheckRunMessage {
41
41
 
42
42
  /** 只有已形成 terminal Check facts 的 Run branch 才具备的完整结果 readback。 */
43
43
  export interface RunResultFacts {
44
- /** 调用方未配置 aggregation 时为 `null`;否则是选中 Check statuses 的 invocation-level conclusion。 */
45
- readonly aggregate: CheckAggregate | null;
44
+ /** 有完整 terminal Check facts 时,由有效 Check 列表形成的 invocation-level conclusion。 */
45
+ readonly aggregate: CheckAggregate;
46
46
  /** 按 canonical Check order 的 duration facts;未执行 Check 仍以 `null` 保留。 */
47
47
  readonly checkDurations: readonly CheckDuration[];
48
48
  /** 已接受的 author 与 console-capture messages,不决定 Check outcome。 */
@@ -122,7 +122,7 @@ export type RunResult = Readonly<
122
122
  | "machine-publication-failed"
123
123
  | "progress-rendering-failed"
124
124
  | "diagnostic-logging-failed"
125
- | "scheduler-measurement-hooks-failed";
125
+ | "scheduler-terminal-effects-failed";
126
126
  }>;
127
127
  readonly outputs: RunOutputStatuses;
128
128
  } & RunResultFacts)
@@ -159,8 +159,8 @@ function outputDiagnosticCode(
159
159
  return "progress-rendering-failed";
160
160
  case "diagnosticLogging":
161
161
  return "diagnostic-logging-failed";
162
- case "measurementHooks":
163
- return "scheduler-measurement-hooks-failed";
162
+ case "terminalEffects":
163
+ return "scheduler-terminal-effects-failed";
164
164
  }
165
165
  }
166
166
 
@@ -15,7 +15,7 @@ export type { RunDiagnostic, RunResult } from "./result.ts";
15
15
  * @param controls - 本次 invocation context 与 outputs 使用的闭合控制值。
16
16
  * @returns ordinary configuration、planning、execution、cancellation 与 output failures 通过 `RunResult`
17
17
  * 返回;调用方先按 `kind` narrow。
18
- * @remarks Definition validation 关闭 authoring grammar;可选 Check preflight 在其 Task 通过直接 relation
18
+ * @remarks Definition validation 关闭 authoring grammar;可选 Check preparation 在其 Task 通过直接 relation
19
19
  * readiness 后被 Scheduler admission 时运行,并先于该 Check 自己的 execution callback。它受该 Task 的
20
20
  * mutex、capacity、priority 与 cancellation 约束,而不是 invocation-wide barrier。`output` branch 同时提供
21
21
  * 完整 final snapshot 与 output failure diagnostic。
@@ -0,0 +1,71 @@
1
+ /** Required accessors for compiler-owned dense slot indexes. */
2
+
3
+ import type { PlannedTask } from "../graph.ts";
4
+ import type { CompiledAdmissionGraph } from "./compiled-graph.ts";
5
+
6
+ export function requiredTaskForCompiled(
7
+ compiled: CompiledAdmissionGraph,
8
+ taskSlot: number
9
+ ): PlannedTask {
10
+ const task = compiled.graph.tasks[taskSlot];
11
+ if (task === undefined) throw new Error(`admission core task slot is unknown: ${taskSlot}`);
12
+ return task;
13
+ }
14
+
15
+ export function requiredTaskMutexSlotsForCompiled(
16
+ compiled: CompiledAdmissionGraph,
17
+ taskSlot: number
18
+ ): CompiledAdmissionGraph["taskMutexSlots"][number] {
19
+ const slots = compiled.taskMutexSlots[taskSlot];
20
+ if (slots === undefined) throw new Error(`admission core task slot is unknown: ${taskSlot}`);
21
+ return slots;
22
+ }
23
+
24
+ export function requiredTaskResourceClaimsForCompiled(
25
+ compiled: CompiledAdmissionGraph,
26
+ taskSlot: number
27
+ ): CompiledAdmissionGraph["taskResourceClaims"][number] {
28
+ const claims = compiled.taskResourceClaims[taskSlot];
29
+ if (claims === undefined) throw new Error(`admission core task slot is unknown: ${taskSlot}`);
30
+ return claims;
31
+ }
32
+
33
+ export function requiredReverseDependenciesForCompiled(
34
+ compiled: CompiledAdmissionGraph,
35
+ taskSlot: number
36
+ ): CompiledAdmissionGraph["relationIndexes"]["reverseDependencies"][number] {
37
+ const dependencies = compiled.relationIndexes.reverseDependencies[taskSlot];
38
+ if (dependencies === undefined)
39
+ throw new Error(`admission core task slot is unknown: ${taskSlot}`);
40
+ return dependencies;
41
+ }
42
+
43
+ export function requiredReverseObservationsForCompiled(
44
+ compiled: CompiledAdmissionGraph,
45
+ taskSlot: number
46
+ ): CompiledAdmissionGraph["relationIndexes"]["reverseObservations"][number] {
47
+ const observations = compiled.relationIndexes.reverseObservations[taskSlot];
48
+ if (observations === undefined)
49
+ throw new Error(`admission core task slot is unknown: ${taskSlot}`);
50
+ return observations;
51
+ }
52
+
53
+ export function requiredReverseMutexOccurrencesForCompiled(
54
+ compiled: CompiledAdmissionGraph,
55
+ mutexSlot: number
56
+ ): CompiledAdmissionGraph["relationIndexes"]["reverseMutexOccurrences"][number] {
57
+ const occurrences = compiled.relationIndexes.reverseMutexOccurrences[mutexSlot];
58
+ if (occurrences === undefined) {
59
+ throw new Error(`admission core mutex slot is unknown: ${mutexSlot}`);
60
+ }
61
+ return occurrences;
62
+ }
63
+
64
+ export function requiredScopeTerminalSlotsForCompiled(
65
+ compiled: CompiledAdmissionGraph,
66
+ taskSlot: number
67
+ ): CompiledAdmissionGraph["scopeSlotsByTerminalTaskSlot"][number] {
68
+ const scopeSlots = compiled.scopeSlotsByTerminalTaskSlot[taskSlot];
69
+ if (scopeSlots === undefined) throw new Error(`admission core task slot is unknown: ${taskSlot}`);
70
+ return scopeSlots;
71
+ }
@@ -252,12 +252,17 @@ function compilePublicTaskOrder(
252
252
  graph: PlannedTaskGraph,
253
253
  taskSlotsById: ReadonlyMap<string, number>
254
254
  ): PublicTaskOrder {
255
+ const taskIdsInPublicOrder = Object.freeze(graph.tasks.map((task) => task.id).sort(compareText));
255
256
  return {
256
- taskIdsInPublicOrder: Object.freeze(graph.tasks.map((task) => task.id).sort(compareText)),
257
+ taskIdsInPublicOrder,
257
258
  taskSlotsInPublicOrder: Object.freeze(
258
- graph.tasks
259
- .map((task) => taskSlotsById.get(task.id)!)
260
- .sort((left, right) => compareText(graph.tasks[left].id, graph.tasks[right].id))
259
+ taskIdsInPublicOrder.map((taskId) => {
260
+ const taskSlot = taskSlotsById.get(taskId);
261
+ if (taskSlot === undefined) {
262
+ throw new Error(`admission core task is missing from public order: ${taskId}`);
263
+ }
264
+ return taskSlot;
265
+ })
261
266
  )
262
267
  };
263
268
  }
@@ -1,5 +1,9 @@
1
1
  import type { AdmissionSelectionRejectionReason } from "../../../project-definition/scheduler-policy.ts";
2
2
  import type { CompiledAdmissionGraph } from "./compiled-graph.ts";
3
+ import {
4
+ requiredTaskForCompiled,
5
+ requiredTaskResourceClaimsForCompiled
6
+ } from "./compiled-graph-lookup.ts";
3
7
  import {
4
8
  numberFor,
5
9
  statusForSelection,
@@ -32,9 +36,7 @@ export function isCoreComplete(state: SelectionCoreState): boolean {
32
36
  }
33
37
 
34
38
  export function requiredTaskForCore(state: SelectionCoreState, taskSlot: number): PlannedTask {
35
- const task = state.compiled.graph.tasks[taskSlot];
36
- if (task === undefined) throw new Error(`admission core task slot is unknown: ${taskSlot}`);
37
- return task;
39
+ return requiredTaskForCompiled(state.compiled, taskSlot);
38
40
  }
39
41
 
40
42
  export function requiredTaskSlotForCore(state: SelectionCoreState, taskId: string): number {
@@ -165,7 +167,7 @@ function resourceCapacityRejectionFor(
165
167
  AdmissionSelectionRejectionReason,
166
168
  { readonly kind: "resource-capacity-insufficient" }
167
169
  >["resources"][number][] = [];
168
- for (const claim of state.compiled.taskResourceClaims[taskSlot]) {
170
+ for (const claim of requiredTaskResourceClaimsForCompiled(state.compiled, taskSlot)) {
169
171
  const capacity = state.compiled.resourceCapacityBySlot[claim.resourceSlot];
170
172
  const inUse = numberFor(state.selection.resourceInUse, claim.resourceSlot);
171
173
  if (capacity === undefined) {
@@ -1,4 +1,8 @@
1
1
  import type { CompiledAdmissionGraph } from "./compiled-graph.ts";
2
+ import {
3
+ requiredTaskMutexSlotsForCompiled,
4
+ requiredTaskResourceClaimsForCompiled
5
+ } from "./compiled-graph-lookup.ts";
2
6
  import {
3
7
  forcedQueueFromTaskSlots,
4
8
  freezeSelectionIndex,
@@ -68,9 +72,11 @@ function seedTaskCounters(
68
72
  if (status.kind === "pending" || status.kind === "running") remainingTaskCount += 1;
69
73
  if (status.kind === "running") {
70
74
  runningTotal += 1;
71
- for (const mutexSlot of compiled.taskMutexSlots[taskSlot]) mutexHolders[mutexSlot] += 1;
72
- for (const claim of compiled.taskResourceClaims[taskSlot]) {
73
- resourceInUse[claim.resourceSlot] += claim.units;
75
+ for (const mutexSlot of requiredTaskMutexSlotsForCompiled(compiled, taskSlot)) {
76
+ incrementCounter(mutexHolders, mutexSlot, 1, "mutex holder");
77
+ }
78
+ for (const claim of requiredTaskResourceClaimsForCompiled(compiled, taskSlot)) {
79
+ incrementCounter(resourceInUse, claim.resourceSlot, claim.units, "resource usage");
74
80
  }
75
81
  }
76
82
  appendDependencyCountsForSeed(
@@ -140,14 +146,38 @@ function heldMutexBlockersForSeed(
140
146
  const blockers = compiled.graph.tasks.map(() => 0);
141
147
  const legacyHeldMutexes = new Set(legacyRunningMutexes);
142
148
  for (const [taskSlot, task] of compiled.graph.tasks.entries()) {
143
- for (const [mutexOccurrence, mutexSlot] of compiled.taskMutexSlots[taskSlot].entries()) {
144
- blockers[taskSlot] += mutexHolders[mutexSlot];
145
- if (legacyHeldMutexes.has(task.mutex[mutexOccurrence])) blockers[taskSlot] += 1;
149
+ for (const [mutexOccurrence, mutexSlot] of requiredTaskMutexSlotsForCompiled(
150
+ compiled,
151
+ taskSlot
152
+ ).entries()) {
153
+ const holderCount = mutexHolders[mutexSlot];
154
+ if (holderCount === undefined) {
155
+ throw new Error(`admission core mutex slot is unknown: ${mutexSlot}`);
156
+ }
157
+ incrementCounter(blockers, taskSlot, holderCount, "mutex blocker");
158
+ const mutexId = task.mutex[mutexOccurrence];
159
+ if (mutexId === undefined) {
160
+ throw new Error(`admission core mutex occurrence is unknown: ${mutexOccurrence}`);
161
+ }
162
+ if (legacyHeldMutexes.has(mutexId)) incrementCounter(blockers, taskSlot, 1, "mutex blocker");
146
163
  }
147
164
  }
148
165
  return blockers;
149
166
  }
150
167
 
168
+ function incrementCounter(
169
+ values: number[],
170
+ slot: number,
171
+ amount: number,
172
+ counterName: string
173
+ ): void {
174
+ const current = values[slot];
175
+ if (current === undefined) {
176
+ throw new Error(`admission core ${counterName} slot is unknown: ${slot}`);
177
+ }
178
+ values[slot] = current + amount;
179
+ }
180
+
151
181
  function seedActiveScopes(
152
182
  compiled: CompiledAdmissionGraph,
153
183
  activeScopeIds: readonly string[] | undefined
@@ -1,4 +1,12 @@
1
1
  import type { CompiledAdmissionGraph } from "./compiled-graph.ts";
2
+ import {
3
+ requiredReverseDependenciesForCompiled,
4
+ requiredReverseMutexOccurrencesForCompiled,
5
+ requiredReverseObservationsForCompiled,
6
+ requiredScopeTerminalSlotsForCompiled,
7
+ requiredTaskMutexSlotsForCompiled,
8
+ requiredTaskResourceClaimsForCompiled
9
+ } from "./compiled-graph-lookup.ts";
2
10
  import {
3
11
  enqueueForcedTaskSlots,
4
12
  freezeSelectionIndex,
@@ -124,7 +132,7 @@ function withResourceClaimDelta(
124
132
  ): NumberStore {
125
133
  return withNumberDeltas(
126
134
  resourceInUse,
127
- compiled.taskResourceClaims[taskSlot].map(
135
+ requiredTaskResourceClaimsForCompiled(compiled, taskSlot).map(
128
136
  ({ resourceSlot, units }) => [resourceSlot, direction * units] as const
129
137
  )
130
138
  );
@@ -138,7 +146,9 @@ function withMutexHolderDelta(
138
146
  ): NumberStore {
139
147
  return withNumberDeltas(
140
148
  mutexHolders,
141
- compiled.taskMutexSlots[taskSlot].map((mutexSlot) => [mutexSlot, delta] as const)
149
+ requiredTaskMutexSlotsForCompiled(compiled, taskSlot).map(
150
+ (mutexSlot) => [mutexSlot, delta] as const
151
+ )
142
152
  );
143
153
  }
144
154
 
@@ -157,9 +167,8 @@ function mutexBlockerDeltasFor(
157
167
  delta: 1 | -1
158
168
  ): readonly (readonly [number, number])[] {
159
169
  const deltas: [number, number][] = [];
160
- for (const mutexSlot of compiled.taskMutexSlots[taskSlot]) {
161
- for (const blockedTaskSlot of compiled.relationIndexes.reverseMutexOccurrences[mutexSlot] ??
162
- []) {
170
+ for (const mutexSlot of requiredTaskMutexSlotsForCompiled(compiled, taskSlot)) {
171
+ for (const blockedTaskSlot of requiredReverseMutexOccurrencesForCompiled(compiled, mutexSlot)) {
163
172
  deltas.push([blockedTaskSlot, delta]);
164
173
  }
165
174
  }
@@ -173,7 +182,7 @@ function applySettlementRelationDelta(
173
182
  ): void {
174
183
  const { previous, status, taskSlot } = facts;
175
184
  if (previous.kind === "settled" || status.kind !== "settled") return;
176
- const reverseDependencies = compiled.relationIndexes.reverseDependencies[taskSlot];
185
+ const reverseDependencies = requiredReverseDependenciesForCompiled(compiled, taskSlot);
177
186
  facts.pendingDependencies = withNumberDeltas(
178
187
  facts.pendingDependencies,
179
188
  reverseDependencies.map((dependentSlot) => [dependentSlot, -1] as const)
@@ -186,7 +195,7 @@ function applySettlementRelationDelta(
186
195
  }
187
196
  facts.pendingObservations = withNumberDeltas(
188
197
  facts.pendingObservations,
189
- compiled.relationIndexes.reverseObservations[taskSlot].map(
198
+ requiredReverseObservationsForCompiled(compiled, taskSlot).map(
190
199
  (observerSlot) => [observerSlot, -1] as const
191
200
  )
192
201
  );
@@ -228,7 +237,7 @@ function applyScopeLifecycleDelta(
228
237
  );
229
238
  }
230
239
  if (previous.kind === "settled" || status.kind !== "settled") return;
231
- for (const scopeSlot of compiled.scopeSlotsByTerminalTaskSlot[taskSlot]) {
240
+ for (const scopeSlot of requiredScopeTerminalSlotsForCompiled(compiled, taskSlot)) {
232
241
  facts.activeScopeSlots = Object.freeze(
233
242
  facts.activeScopeSlots.filter((candidate) => candidate !== scopeSlot)
234
243
  );
@@ -1,6 +1,6 @@
1
1
  import type {
2
2
  SchedulerMeasurementContext,
3
- SchedulerMeasurementHook
3
+ SchedulerTerminalEffect
4
4
  } from "../../project-definition/project-definition.ts";
5
5
  import type { PlannedTask, PlannedTaskGraph, PlannedTaskScope, TaskGraph } from "./graph.ts";
6
6
  import {
@@ -63,9 +63,9 @@ export interface RunTaskGraphOptions<TResult> {
63
63
  /** Explicit enabled-only handoff; no Scheduler behavior is inferred from a logger shape. */
64
64
  readonly performanceDiagnostics?: SchedulerPerformanceDiagnosticsInput;
65
65
  /** Runtime-only terminal consumers; their context is formed after Scheduler drain. */
66
- readonly measurementHooks?: readonly SchedulerMeasurementHook[];
67
- readonly onMeasurementHookFailure?: () => void;
68
- readonly onMeasurementHooksSettled?: () => void;
66
+ readonly terminalEffects?: readonly SchedulerTerminalEffect[];
67
+ readonly onTerminalEffectFailure?: () => void;
68
+ readonly onTerminalEffectsSettled?: () => void;
69
69
  /** Product-private test observer; no package consumer can supply this through `run`. */
70
70
  readonly onAdmissionCoreEffect?: (effect: SchedulerAdmissionCoreEffect) => void;
71
71
  readonly graph: TaskGraph;
@@ -3,7 +3,7 @@ import type {
3
3
  SchedulerDecisionMeasurementCumulative,
4
4
  SchedulerMeasurementAdmission,
5
5
  SchedulerMeasurementEffect,
6
- SchedulerMeasurementHook,
6
+ SchedulerTerminalEffect,
7
7
  SchedulerRawMeasurement
8
8
  } from "../../../project-definition/project-definition.ts";
9
9
  import { diagnosticTags, type DiagnosticLogger } from "../../diagnostic-logging/logger.ts";
@@ -75,7 +75,10 @@ export class SchedulerPerformanceDiagnostics {
75
75
  const boundary = this.#timing.boundary();
76
76
  if (boundary === undefined) return;
77
77
  const admissionDelay = this.#timing.takeAdmissionDelay(taskId);
78
- if (admissionDelay === undefined) return this.#timing.invalidate("integral-invalid");
78
+ if (admissionDelay === undefined) {
79
+ this.#timing.invalidate("integral-invalid");
80
+ return;
81
+ }
79
82
  this.#chronologyByTaskId.set(taskId, {
80
83
  admissionDelay,
81
84
  admittedAt: boundary,
@@ -97,7 +100,10 @@ export class SchedulerPerformanceDiagnostics {
97
100
  if (boundary === undefined) return;
98
101
  this.#timing.closeAcceptedWait(boundary);
99
102
  const chronology = this.#chronologyByTaskId.get(taskId);
100
- if (chronology === undefined) return this.#timing.invalidate("integral-invalid");
103
+ if (chronology === undefined) {
104
+ this.#timing.invalidate("integral-invalid");
105
+ return;
106
+ }
101
107
  chronology.settledAt = boundary;
102
108
  }
103
109
 
@@ -141,7 +147,7 @@ export class SchedulerPerformanceDiagnostics {
141
147
  }
142
148
 
143
149
  /** Internal default terminal hook; it contains writer failure without runner special-casing. */
144
- public defaultSummaryHook(): SchedulerMeasurementHook | undefined {
150
+ public defaultSummaryHook(): SchedulerTerminalEffect | undefined {
145
151
  if (this.#logger === undefined) return undefined;
146
152
  const logger = this.#logger;
147
153
  return (context) => {
@@ -27,7 +27,7 @@ export class SchedulerPerformanceTiming {
27
27
  readonly #clock: Readonly<{ now(): number }>;
28
28
  readonly #integrals = new SchedulerPerformanceIntegrals();
29
29
  #lastBoundaryAt: number | undefined;
30
- #startedAt: number | undefined;
30
+ readonly #startedAt: number | undefined;
31
31
  #lastState: SchedulerPerformanceState;
32
32
  #timing: SchedulerMeasurementTiming = Object.freeze({ availability: "available" });
33
33
  #controlPathMs = 0;
@@ -137,13 +137,18 @@ export class SchedulerPerformanceTiming {
137
137
  if (this.#timing.availability === "unavailable") return undefined;
138
138
  try {
139
139
  const now = this.#clock.now();
140
- if (!Number.isFinite(now)) return this.#unavailable("clock-non-finite");
140
+ if (!Number.isFinite(now)) {
141
+ this.#unavailable("clock-non-finite");
142
+ return undefined;
143
+ }
141
144
  if (this.#lastBoundaryAt !== undefined && now < this.#lastBoundaryAt) {
142
- return this.#unavailable("clock-backward");
145
+ this.#unavailable("clock-backward");
146
+ return undefined;
143
147
  }
144
148
  return now;
145
149
  } catch {
146
- return this.#unavailable("clock-threw");
150
+ this.#unavailable("clock-threw");
151
+ return undefined;
147
152
  }
148
153
  }
149
154
 
@@ -154,7 +159,10 @@ export class SchedulerPerformanceTiming {
154
159
  ): void {
155
160
  if (startedAt === undefined || endedAt === undefined) return;
156
161
  const elapsedMs = endedAt - startedAt;
157
- if (!validElapsed(elapsedMs)) return this.#markUnavailable("interval-invalid");
162
+ if (!validElapsed(elapsedMs)) {
163
+ this.#markUnavailable("interval-invalid");
164
+ return;
165
+ }
158
166
  if (kind === "control") this.#controlPathMs += elapsedMs;
159
167
  else this.#decisionObservationMs += elapsedMs;
160
168
  if (!Number.isFinite(this.#controlPathMs) || !Number.isFinite(this.#decisionObservationMs)) {
@@ -36,7 +36,9 @@ export function observeSchedulerDecision<TResult>(
36
36
  tags: schedulerDecisionTags(decision),
37
37
  details: schedulerDecisionDetails(decision)
38
38
  };
39
- const observe = () => observeSchedulerDiagnostic(state, observation);
39
+ const observe = () => {
40
+ observeSchedulerDiagnostic(state, observation);
41
+ };
40
42
  if (diagnostics === undefined) observe();
41
43
  else diagnostics.observeDecision(observe);
42
44
  }
@@ -1,6 +1,6 @@
1
1
  import type {
2
2
  SchedulerMeasurementContext,
3
- SchedulerMeasurementHook,
3
+ SchedulerTerminalEffect,
4
4
  SchedulerRawMeasurement
5
5
  } from "../../project-definition/project-definition.ts";
6
6
  import { diagnosticTags } from "../diagnostic-logging/logger.ts";
@@ -8,7 +8,7 @@ import type { RunTaskGraphOptions, SchedulerState } from "./execution-state.ts";
8
8
  import type { SchedulerPerformanceDiagnostics } from "./measurement/diagnostics.ts";
9
9
  import { observeSchedulerDiagnostic } from "./scheduler-observation.ts";
10
10
 
11
- /** Delivers the terminal measurement to the internal summary and caller hooks exactly once. */
11
+ /** Delivers the terminal measurement to the internal summary and caller effects exactly once. */
12
12
  export async function observeTerminalMeasurement<TResult>(
13
13
  input: Readonly<{
14
14
  readonly diagnostics: SchedulerPerformanceDiagnostics;
@@ -22,32 +22,34 @@ export async function observeTerminalMeasurement<TResult>(
22
22
  input.diagnostics.admittedTaskIds(),
23
23
  input.diagnostics.rawMeasurement()
24
24
  );
25
- const callerHooks = input.options.measurementHooks ?? [];
26
- let callerHookFailed = false;
27
- const callerFailure = () => {
28
- callerHookFailed = true;
25
+ const callerEffects = input.options.terminalEffects ?? [];
26
+ let callerEffectFailed = false;
27
+ const reportCallerEffectFailure = () => {
28
+ callerEffectFailed = true;
29
29
  observeSchedulerDiagnostic(input.state, {
30
- event: "scheduler.measurement-hook-failed",
31
- tags: diagnosticTags("MEASUREMENT_HOOK_FAILED"),
30
+ event: "scheduler.terminal-effect-failed",
31
+ tags: diagnosticTags("TERMINAL_EFFECT_FAILED"),
32
32
  details: Object.freeze({})
33
33
  });
34
34
  try {
35
- input.options.onMeasurementHookFailure?.();
35
+ input.options.onTerminalEffectFailure?.();
36
36
  } catch {
37
37
  // A failure-reporting seam cannot revise terminal Scheduler facts either.
38
38
  }
39
39
  };
40
- const defaultHook = input.diagnostics.defaultSummaryHook();
41
- const deliveries: readonly TerminalMeasurementDelivery[] = Object.freeze([
42
- ...(defaultHook === undefined
40
+ const defaultSummaryEffect = input.diagnostics.defaultSummaryHook();
41
+ const deliveries: readonly TerminalEffectDelivery[] = Object.freeze([
42
+ ...(defaultSummaryEffect === undefined
43
43
  ? []
44
- : [Object.freeze({ hook: defaultHook, onFailure: () => undefined })]),
45
- ...callerHooks.map((hook) => Object.freeze({ hook, onFailure: callerFailure }))
44
+ : [Object.freeze({ effect: defaultSummaryEffect, onFailure: () => undefined })]),
45
+ ...callerEffects.map((effect) =>
46
+ Object.freeze({ effect, onFailure: reportCallerEffectFailure })
47
+ )
46
48
  ]);
47
- await deliverTerminalMeasurementHooks(deliveries, context);
48
- if (callerHooks.length > 0 && !callerHookFailed) {
49
+ await deliverTerminalEffects(deliveries, context);
50
+ if (callerEffects.length > 0 && !callerEffectFailed) {
49
51
  try {
50
- input.options.onMeasurementHooksSettled?.();
52
+ input.options.onTerminalEffectsSettled?.();
51
53
  } catch {
52
54
  // A success-reporting seam cannot revise terminal Scheduler facts either.
53
55
  }
@@ -55,18 +57,18 @@ export async function observeTerminalMeasurement<TResult>(
55
57
  return context;
56
58
  }
57
59
 
58
- type TerminalMeasurementDelivery = Readonly<{
59
- readonly hook: SchedulerMeasurementHook;
60
+ type TerminalEffectDelivery = Readonly<{
61
+ readonly effect: SchedulerTerminalEffect;
60
62
  readonly onFailure: () => void;
61
63
  }>;
62
64
 
63
- async function deliverTerminalMeasurementHooks(
64
- deliveries: readonly TerminalMeasurementDelivery[],
65
+ async function deliverTerminalEffects(
66
+ deliveries: readonly TerminalEffectDelivery[],
65
67
  context: SchedulerMeasurementContext
66
68
  ): Promise<void> {
67
69
  for (const delivery of deliveries) {
68
70
  try {
69
- await delivery.hook(context);
71
+ await delivery.effect(context);
70
72
  } catch {
71
73
  delivery.onFailure();
72
74
  }
@@ -99,7 +99,10 @@ export async function runTaskGraph<TResult>(
99
99
  state.admissionCore = cancellation.state;
100
100
  diagnostics?.beforePendingSettlement(state.pending.map((task) => task.id));
101
101
  if (diagnostics === undefined) applyAdmissionPolicyFault(state, error);
102
- else diagnostics.measureControlPath(() => applyAdmissionPolicyFault(state, error));
102
+ else
103
+ diagnostics.measureControlPath(() => {
104
+ applyAdmissionPolicyFault(state, error);
105
+ });
103
106
  diagnostics?.captureState(performanceState(state));
104
107
  observeAdmissionPolicyFault(state, error);
105
108
  trigger = Object.freeze({ kind: "cancellation-applied" });
@@ -116,7 +119,9 @@ export async function runTaskGraph<TResult>(
116
119
  const lifecycleFault = new AdmissionPolicyFault("lifecycle-invalid-select");
117
120
  if (diagnostics === undefined) applyAdmissionPolicyFault(state, lifecycleFault);
118
121
  else
119
- diagnostics.measureControlPath(() => applyAdmissionPolicyFault(state, lifecycleFault));
122
+ diagnostics.measureControlPath(() => {
123
+ applyAdmissionPolicyFault(state, lifecycleFault);
124
+ });
120
125
  diagnostics?.captureState(performanceState(state));
121
126
  observeAdmissionPolicyFault(state, lifecycleFault);
122
127
  trigger = Object.freeze({ kind: "cancellation-applied" });
@@ -133,7 +138,10 @@ export async function runTaskGraph<TResult>(
133
138
  state.admissionCore = selection.transition.state;
134
139
  diagnostics?.beforeAdmission(decision.taskId, [...state.runningById.keys()]);
135
140
  if (diagnostics === undefined) applyAdmission(state, decision);
136
- else diagnostics.measureControlPath(() => applyAdmission(state, decision));
141
+ else
142
+ diagnostics.measureControlPath(() => {
143
+ applyAdmission(state, decision);
144
+ });
137
145
  diagnostics?.captureState(performanceState(state));
138
146
  if (state.admissionPolicy.requiresMeasurement === true) {
139
147
  diagnostics?.beginSelectedPolicyAction(decision.taskId);
@@ -146,7 +154,10 @@ export async function runTaskGraph<TResult>(
146
154
  case "settle-blocked":
147
155
  diagnostics?.beforePendingSettlement([decision.taskId]);
148
156
  if (diagnostics === undefined) applyBlockedSettlement(state, decision);
149
- else diagnostics.measureControlPath(() => applyBlockedSettlement(state, decision));
157
+ else
158
+ diagnostics.measureControlPath(() => {
159
+ applyBlockedSettlement(state, decision);
160
+ });
150
161
  diagnostics?.captureState(performanceState(state));
151
162
  diagnostics?.recordEffect(
152
163
  Object.freeze({
@@ -164,7 +175,10 @@ export async function runTaskGraph<TResult>(
164
175
  state.admissionCore = cancelPendingAdmissionCore(state.admissionCore).state;
165
176
  diagnostics?.beforePendingSettlement(decision.taskIds);
166
177
  if (diagnostics === undefined) applyCancellation(state, decision);
167
- else diagnostics.measureControlPath(() => applyCancellation(state, decision));
178
+ else
179
+ diagnostics.measureControlPath(() => {
180
+ applyCancellation(state, decision);
181
+ });
168
182
  diagnostics?.captureState(performanceState(state));
169
183
  for (const taskId of decision.taskIds) {
170
184
  diagnostics?.recordEffect(
@@ -187,7 +201,10 @@ export async function runTaskGraph<TResult>(
187
201
  const completion = await nextRunningSettlement(state);
188
202
  diagnostics?.beforeRunningSettlement(completion.taskId);
189
203
  if (diagnostics === undefined) settleRunningTask(state, completion);
190
- else diagnostics.measureControlPath(() => settleRunningTask(state, completion));
204
+ else
205
+ diagnostics.measureControlPath(() => {
206
+ settleRunningTask(state, completion);
207
+ });
191
208
  const settlementKind = completion.settlement.kind;
192
209
  if (
193
210
  settlementKind !== "completed" &&