@cleocode/core 2026.10.21 → 2026.10.22-rc.ci.693

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 (420) hide show
  1. package/STABILITY.md +1 -1
  2. package/dist/build-provenance.json +2 -2
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js +2 -0
  5. package/dist/config.js.map +1 -1
  6. package/dist/docs/document-edges.d.ts +38 -0
  7. package/dist/docs/document-edges.d.ts.map +1 -0
  8. package/dist/docs/document-edges.js +62 -0
  9. package/dist/docs/document-edges.js.map +1 -0
  10. package/dist/docs/projection.d.ts +3 -2
  11. package/dist/docs/projection.d.ts.map +1 -1
  12. package/dist/docs/projection.js +33 -36
  13. package/dist/docs/projection.js.map +1 -1
  14. package/dist/events/event-bus.d.ts +6 -5
  15. package/dist/events/event-bus.d.ts.map +1 -1
  16. package/dist/events/event-bus.js +9 -8
  17. package/dist/events/event-bus.js.map +1 -1
  18. package/dist/gateway-client/generated/index.d.ts +2 -2
  19. package/dist/gateway-client/generated/index.d.ts.map +1 -1
  20. package/dist/gateway-client/generated/index.js +1 -1
  21. package/dist/gateway-client/generated/index.js.map +1 -1
  22. package/dist/gateway-client/generated/namespaces.gen.d.ts +1 -0
  23. package/dist/gateway-client/generated/namespaces.gen.d.ts.map +1 -1
  24. package/dist/gateway-client/generated/namespaces.gen.js +2 -1
  25. package/dist/gateway-client/generated/namespaces.gen.js.map +1 -1
  26. package/dist/gateway-client/generated/sdk.gen.d.ts +5 -1
  27. package/dist/gateway-client/generated/sdk.gen.d.ts.map +1 -1
  28. package/dist/gateway-client/generated/sdk.gen.js +11 -0
  29. package/dist/gateway-client/generated/sdk.gen.js.map +1 -1
  30. package/dist/gateway-client/generated/types.gen.d.ts +34 -0
  31. package/dist/gateway-client/generated/types.gen.d.ts.map +1 -1
  32. package/dist/git/base-ref.d.ts +81 -0
  33. package/dist/git/base-ref.d.ts.map +1 -0
  34. package/dist/git/base-ref.js +135 -0
  35. package/dist/git/base-ref.js.map +1 -0
  36. package/dist/git/hooks-install.d.ts +1 -1
  37. package/dist/git/hooks-install.d.ts.map +1 -1
  38. package/dist/git/work-tree.d.ts +40 -0
  39. package/dist/git/work-tree.d.ts.map +1 -1
  40. package/dist/git/work-tree.js +62 -7
  41. package/dist/git/work-tree.js.map +1 -1
  42. package/dist/hooks/handlers/conduit-hooks.d.ts +2 -1
  43. package/dist/hooks/handlers/conduit-hooks.d.ts.map +1 -1
  44. package/dist/hooks/handlers/conduit-hooks.js +9 -23
  45. package/dist/hooks/handlers/conduit-hooks.js.map +1 -1
  46. package/dist/hooks/handlers/index.d.ts +0 -1
  47. package/dist/hooks/handlers/index.d.ts.map +1 -1
  48. package/dist/hooks/handlers/index.js +0 -2
  49. package/dist/hooks/handlers/index.js.map +1 -1
  50. package/dist/hooks.d.ts +1 -1
  51. package/dist/hooks.d.ts.map +1 -1
  52. package/dist/init.d.ts.map +1 -1
  53. package/dist/init.js +5 -12
  54. package/dist/init.js.map +1 -1
  55. package/dist/internal.d.ts +2 -3
  56. package/dist/internal.d.ts.map +1 -1
  57. package/dist/internal.js +1 -1
  58. package/dist/internal.js.map +1 -1
  59. package/dist/lifecycle/index.d.ts +15 -1
  60. package/dist/lifecycle/index.d.ts.map +1 -1
  61. package/dist/lifecycle/index.js +12 -6
  62. package/dist/lifecycle/index.js.map +1 -1
  63. package/dist/lifecycle/stage-guidance.js +1 -1
  64. package/dist/lifecycle/stage-guidance.js.map +1 -1
  65. package/dist/memory/auto-row-quarantine.d.ts +196 -0
  66. package/dist/memory/auto-row-quarantine.d.ts.map +1 -0
  67. package/dist/memory/auto-row-quarantine.js +363 -0
  68. package/dist/memory/auto-row-quarantine.js.map +1 -0
  69. package/dist/memory/auto-row-rules.d.ts +29 -0
  70. package/dist/memory/auto-row-rules.d.ts.map +1 -0
  71. package/dist/memory/auto-row-rules.js +55 -0
  72. package/dist/memory/auto-row-rules.js.map +1 -0
  73. package/dist/memory/brain-lifecycle.d.ts.map +1 -1
  74. package/dist/memory/brain-lifecycle.js +13 -8
  75. package/dist/memory/brain-lifecycle.js.map +1 -1
  76. package/dist/memory/brain-search.d.ts +49 -29
  77. package/dist/memory/brain-search.d.ts.map +1 -1
  78. package/dist/memory/brain-search.js +159 -156
  79. package/dist/memory/brain-search.js.map +1 -1
  80. package/dist/memory/brain-similarity.d.ts +27 -4
  81. package/dist/memory/brain-similarity.d.ts.map +1 -1
  82. package/dist/memory/brain-similarity.js +41 -20
  83. package/dist/memory/brain-similarity.js.map +1 -1
  84. package/dist/memory/brain-stub-prune.d.ts +13 -0
  85. package/dist/memory/brain-stub-prune.d.ts.map +1 -1
  86. package/dist/memory/brain-stub-prune.js +14 -3
  87. package/dist/memory/brain-stub-prune.js.map +1 -1
  88. package/dist/memory/brain-writer-handlers.d.ts +3 -7
  89. package/dist/memory/brain-writer-handlers.d.ts.map +1 -1
  90. package/dist/memory/brain-writer-handlers.js +5 -20
  91. package/dist/memory/brain-writer-handlers.js.map +1 -1
  92. package/dist/memory/brain-writer-thread.d.ts +2 -11
  93. package/dist/memory/brain-writer-thread.d.ts.map +1 -1
  94. package/dist/memory/brain-writer-thread.js +20 -78
  95. package/dist/memory/brain-writer-thread.js.map +1 -1
  96. package/dist/memory/brain-writer-worker.js +1 -8
  97. package/dist/memory/brain-writer-worker.js.map +1 -1
  98. package/dist/memory/dispatch-trace-format.d.ts +13 -14
  99. package/dist/memory/dispatch-trace-format.d.ts.map +1 -1
  100. package/dist/memory/dispatch-trace-format.js +13 -14
  101. package/dist/memory/dispatch-trace-format.js.map +1 -1
  102. package/dist/memory/eligibility.d.ts +22 -0
  103. package/dist/memory/eligibility.d.ts.map +1 -1
  104. package/dist/memory/eligibility.js +36 -0
  105. package/dist/memory/eligibility.js.map +1 -1
  106. package/dist/memory/engine-compat.d.ts.map +1 -1
  107. package/dist/memory/engine-compat.js +11 -1
  108. package/dist/memory/engine-compat.js.map +1 -1
  109. package/dist/memory/evidence-graph-links.d.ts +253 -0
  110. package/dist/memory/evidence-graph-links.d.ts.map +1 -0
  111. package/dist/memory/evidence-graph-links.js +554 -0
  112. package/dist/memory/evidence-graph-links.js.map +1 -0
  113. package/dist/memory/extraction-gate.d.ts +7 -0
  114. package/dist/memory/extraction-gate.d.ts.map +1 -1
  115. package/dist/memory/extraction-gate.js +20 -8
  116. package/dist/memory/extraction-gate.js.map +1 -1
  117. package/dist/memory/global-brain.d.ts +4 -6
  118. package/dist/memory/global-brain.d.ts.map +1 -1
  119. package/dist/memory/global-brain.js +15 -2
  120. package/dist/memory/global-brain.js.map +1 -1
  121. package/dist/memory/graph-auto-populate.d.ts +73 -1
  122. package/dist/memory/graph-auto-populate.d.ts.map +1 -1
  123. package/dist/memory/graph-auto-populate.js +111 -8
  124. package/dist/memory/graph-auto-populate.js.map +1 -1
  125. package/dist/memory/import-from-provider.d.ts +19 -6
  126. package/dist/memory/import-from-provider.d.ts.map +1 -1
  127. package/dist/memory/import-from-provider.js +28 -15
  128. package/dist/memory/import-from-provider.js.map +1 -1
  129. package/dist/memory/lessons-import.d.ts +175 -0
  130. package/dist/memory/lessons-import.d.ts.map +1 -0
  131. package/dist/memory/lessons-import.js +233 -0
  132. package/dist/memory/lessons-import.js.map +1 -0
  133. package/dist/memory/lessons.d.ts +67 -0
  134. package/dist/memory/lessons.d.ts.map +1 -0
  135. package/dist/memory/lessons.js +121 -0
  136. package/dist/memory/lessons.js.map +1 -0
  137. package/dist/memory/memory-bridge.d.ts.map +1 -1
  138. package/dist/memory/memory-bridge.js +3 -2
  139. package/dist/memory/memory-bridge.js.map +1 -1
  140. package/dist/memory/public-api.d.ts.map +1 -1
  141. package/dist/memory/public-api.js +7 -6
  142. package/dist/memory/public-api.js.map +1 -1
  143. package/dist/memory/recall-ranking.d.ts +88 -0
  144. package/dist/memory/recall-ranking.d.ts.map +1 -0
  145. package/dist/memory/recall-ranking.js +130 -0
  146. package/dist/memory/recall-ranking.js.map +1 -0
  147. package/dist/memory/retrieval/build-retrieval-bundle.js +5 -5
  148. package/dist/memory/retrieval/build-retrieval-bundle.js.map +1 -1
  149. package/dist/memory/retrieval/fetch.d.ts +3 -2
  150. package/dist/memory/retrieval/fetch.d.ts.map +1 -1
  151. package/dist/memory/retrieval/fetch.js +4 -3
  152. package/dist/memory/retrieval/fetch.js.map +1 -1
  153. package/dist/memory/retrieval/observe.d.ts +1 -7
  154. package/dist/memory/retrieval/observe.d.ts.map +1 -1
  155. package/dist/memory/retrieval/observe.js +9 -58
  156. package/dist/memory/retrieval/observe.js.map +1 -1
  157. package/dist/memory/retrieval/search.d.ts +5 -6
  158. package/dist/memory/retrieval/search.d.ts.map +1 -1
  159. package/dist/memory/retrieval/search.js +38 -102
  160. package/dist/memory/retrieval/search.js.map +1 -1
  161. package/dist/memory/retrieval/telemetry.d.ts +5 -16
  162. package/dist/memory/retrieval/telemetry.d.ts.map +1 -1
  163. package/dist/memory/retrieval/telemetry.js +5 -22
  164. package/dist/memory/retrieval/telemetry.js.map +1 -1
  165. package/dist/nexus/analyze-orchestrator.d.ts +15 -0
  166. package/dist/nexus/analyze-orchestrator.d.ts.map +1 -1
  167. package/dist/nexus/analyze-orchestrator.js +53 -6
  168. package/dist/nexus/analyze-orchestrator.js.map +1 -1
  169. package/dist/nexus/brief-map.d.ts +60 -0
  170. package/dist/nexus/brief-map.d.ts.map +1 -0
  171. package/dist/nexus/brief-map.js +234 -0
  172. package/dist/nexus/brief-map.js.map +1 -0
  173. package/dist/nexus/freshness.d.ts +128 -13
  174. package/dist/nexus/freshness.d.ts.map +1 -1
  175. package/dist/nexus/freshness.js +374 -86
  176. package/dist/nexus/freshness.js.map +1 -1
  177. package/dist/nexus/graph-manifest.d.ts +47 -0
  178. package/dist/nexus/graph-manifest.d.ts.map +1 -1
  179. package/dist/nexus/graph-manifest.js +69 -0
  180. package/dist/nexus/graph-manifest.js.map +1 -1
  181. package/dist/nexus/hooks-augment.d.ts.map +1 -1
  182. package/dist/nexus/hooks-augment.js +7 -3
  183. package/dist/nexus/hooks-augment.js.map +1 -1
  184. package/dist/nexus/index-health.d.ts +112 -0
  185. package/dist/nexus/index-health.d.ts.map +1 -0
  186. package/dist/nexus/index-health.js +199 -0
  187. package/dist/nexus/index-health.js.map +1 -0
  188. package/dist/nexus/living-brain.d.ts.map +1 -1
  189. package/dist/nexus/living-brain.js +2 -15
  190. package/dist/nexus/living-brain.js.map +1 -1
  191. package/dist/nexus/pid-lock.d.ts +50 -0
  192. package/dist/nexus/pid-lock.d.ts.map +1 -0
  193. package/dist/nexus/pid-lock.js +135 -0
  194. package/dist/nexus/pid-lock.js.map +1 -0
  195. package/dist/nexus/projects-clean.d.ts.map +1 -1
  196. package/dist/nexus/projects-clean.js +33 -2
  197. package/dist/nexus/projects-clean.js.map +1 -1
  198. package/dist/nexus/refresh-child.js +4 -0
  199. package/dist/nexus/refresh-child.js.map +1 -1
  200. package/dist/nexus/registry-host.d.ts +70 -0
  201. package/dist/nexus/registry-host.d.ts.map +1 -0
  202. package/dist/nexus/registry-host.js +79 -0
  203. package/dist/nexus/registry-host.js.map +1 -0
  204. package/dist/nexus/registry.d.ts +37 -0
  205. package/dist/nexus/registry.d.ts.map +1 -1
  206. package/dist/nexus/registry.js +49 -1
  207. package/dist/nexus/registry.js.map +1 -1
  208. package/dist/nexus/reindex-on-merge.d.ts +94 -0
  209. package/dist/nexus/reindex-on-merge.d.ts.map +1 -0
  210. package/dist/nexus/reindex-on-merge.js +192 -0
  211. package/dist/nexus/reindex-on-merge.js.map +1 -0
  212. package/dist/orchestrate/handoff-ops.d.ts.map +1 -1
  213. package/dist/orchestrate/handoff-ops.js +1 -13
  214. package/dist/orchestrate/handoff-ops.js.map +1 -1
  215. package/dist/orchestrate/index.d.ts +2 -3
  216. package/dist/orchestrate/index.d.ts.map +1 -1
  217. package/dist/orchestrate/index.js +2 -2
  218. package/dist/orchestrate/index.js.map +1 -1
  219. package/dist/orchestrate/lifecycle-ops.d.ts +3 -0
  220. package/dist/orchestrate/lifecycle-ops.d.ts.map +1 -1
  221. package/dist/orchestrate/lifecycle-ops.js +5 -5
  222. package/dist/orchestrate/lifecycle-ops.js.map +1 -1
  223. package/dist/orchestrate/spawn-ops.d.ts +8 -28
  224. package/dist/orchestrate/spawn-ops.d.ts.map +1 -1
  225. package/dist/orchestrate/spawn-ops.js +8 -67
  226. package/dist/orchestrate/spawn-ops.js.map +1 -1
  227. package/dist/orchestration/lead-rollup.d.ts +7 -0
  228. package/dist/orchestration/lead-rollup.d.ts.map +1 -1
  229. package/dist/orchestration/lead-rollup.js.map +1 -1
  230. package/dist/orchestration/spawn-prompt.d.ts +8 -29
  231. package/dist/orchestration/spawn-prompt.d.ts.map +1 -1
  232. package/dist/orchestration/spawn-prompt.js +44 -112
  233. package/dist/orchestration/spawn-prompt.js.map +1 -1
  234. package/dist/orchestration/spawn.d.ts +7 -14
  235. package/dist/orchestration/spawn.d.ts.map +1 -1
  236. package/dist/orchestration/spawn.js +2 -5
  237. package/dist/orchestration/spawn.js.map +1 -1
  238. package/dist/orchestration/wave-topic.d.ts +0 -13
  239. package/dist/orchestration/wave-topic.d.ts.map +1 -1
  240. package/dist/orchestration/wave-topic.js +0 -20
  241. package/dist/orchestration/wave-topic.js.map +1 -1
  242. package/dist/release/engine-ops.js +2 -2
  243. package/dist/release/engine-ops.js.map +1 -1
  244. package/dist/release/github-pr.d.ts +8 -5
  245. package/dist/release/github-pr.d.ts.map +1 -1
  246. package/dist/release/github-pr.js +11 -16
  247. package/dist/release/github-pr.js.map +1 -1
  248. package/dist/release/plan.d.ts +4 -2
  249. package/dist/release/plan.d.ts.map +1 -1
  250. package/dist/release/plan.js +11 -4
  251. package/dist/release/plan.js.map +1 -1
  252. package/dist/release/pr-evidence.d.ts +39 -11
  253. package/dist/release/pr-evidence.d.ts.map +1 -1
  254. package/dist/release/pr-evidence.js +122 -31
  255. package/dist/release/pr-evidence.js.map +1 -1
  256. package/dist/release/reconcile.d.ts +15 -0
  257. package/dist/release/reconcile.d.ts.map +1 -1
  258. package/dist/release/reconcile.js +36 -0
  259. package/dist/release/reconcile.js.map +1 -1
  260. package/dist/render/brain/index.d.ts +3 -2
  261. package/dist/render/brain/index.d.ts.map +1 -1
  262. package/dist/render/brain/index.js +4 -2
  263. package/dist/render/brain/index.js.map +1 -1
  264. package/dist/render/brain/migrate-repo-ids.d.ts +19 -0
  265. package/dist/render/brain/migrate-repo-ids.d.ts.map +1 -0
  266. package/dist/render/brain/migrate-repo-ids.js +41 -0
  267. package/dist/render/brain/migrate-repo-ids.js.map +1 -0
  268. package/dist/render/nexus/graph/index.d.ts.map +1 -1
  269. package/dist/render/nexus/graph/index.js +10 -1
  270. package/dist/render/nexus/graph/index.js.map +1 -1
  271. package/dist/resources/admission-ledger.d.ts +39 -4
  272. package/dist/resources/admission-ledger.d.ts.map +1 -1
  273. package/dist/resources/admission-ledger.js +147 -32
  274. package/dist/resources/admission-ledger.js.map +1 -1
  275. package/dist/resources/hook-footprint.d.ts +90 -0
  276. package/dist/resources/hook-footprint.d.ts.map +1 -0
  277. package/dist/resources/hook-footprint.js +245 -0
  278. package/dist/resources/hook-footprint.js.map +1 -0
  279. package/dist/resources/pressure-gate.d.ts +3 -2
  280. package/dist/resources/pressure-gate.d.ts.map +1 -1
  281. package/dist/resources/pressure-gate.js +8 -5
  282. package/dist/resources/pressure-gate.js.map +1 -1
  283. package/dist/resources/run-admission.d.ts +23 -3
  284. package/dist/resources/run-admission.d.ts.map +1 -1
  285. package/dist/resources/run-admission.js +70 -8
  286. package/dist/resources/run-admission.js.map +1 -1
  287. package/dist/resources/run-class.d.ts +1 -0
  288. package/dist/resources/run-class.d.ts.map +1 -1
  289. package/dist/resources/run-class.js +7 -0
  290. package/dist/resources/run-class.js.map +1 -1
  291. package/dist/resources/run-governed.d.ts +13 -1
  292. package/dist/resources/run-governed.d.ts.map +1 -1
  293. package/dist/resources/run-governed.js +29 -6
  294. package/dist/resources/run-governed.js.map +1 -1
  295. package/dist/resources/top-memory.d.ts +67 -0
  296. package/dist/resources/top-memory.d.ts.map +1 -0
  297. package/dist/resources/top-memory.js +143 -0
  298. package/dist/resources/top-memory.js.map +1 -0
  299. package/dist/scaffold/global-scaffold.d.ts +6 -1
  300. package/dist/scaffold/global-scaffold.d.ts.map +1 -1
  301. package/dist/scaffold/global-scaffold.js +11 -2
  302. package/dist/scaffold/global-scaffold.js.map +1 -1
  303. package/dist/scaffold/scaffold-global.d.ts +3 -2
  304. package/dist/scaffold/scaffold-global.d.ts.map +1 -1
  305. package/dist/scaffold/scaffold-global.js +3 -2
  306. package/dist/scaffold/scaffold-global.js.map +1 -1
  307. package/dist/sentient/ingesters/brain-ingester.d.ts.map +1 -1
  308. package/dist/sentient/ingesters/brain-ingester.js +2 -1
  309. package/dist/sentient/ingesters/brain-ingester.js.map +1 -1
  310. package/dist/session/engine-ops.js +1 -1
  311. package/dist/session/engine-ops.js.map +1 -1
  312. package/dist/sessions/briefing.d.ts +26 -0
  313. package/dist/sessions/briefing.d.ts.map +1 -1
  314. package/dist/sessions/briefing.js +46 -0
  315. package/dist/sessions/briefing.js.map +1 -1
  316. package/dist/sessions/session-end-snapshot.d.ts +1 -1
  317. package/dist/sessions/session-end-snapshot.js +1 -1
  318. package/dist/sessions/session-id.d.ts +2 -1
  319. package/dist/sessions/session-id.d.ts.map +1 -1
  320. package/dist/sessions/session-id.js +3 -2
  321. package/dist/sessions/session-id.js.map +1 -1
  322. package/dist/store/agent-resolver.d.ts +0 -6
  323. package/dist/store/agent-resolver.d.ts.map +1 -1
  324. package/dist/store/agent-resolver.js +0 -31
  325. package/dist/store/agent-resolver.js.map +1 -1
  326. package/dist/store/memory-accessor.d.ts +45 -2
  327. package/dist/store/memory-accessor.d.ts.map +1 -1
  328. package/dist/store/memory-accessor.js +81 -7
  329. package/dist/store/memory-accessor.js.map +1 -1
  330. package/dist/store/schema/cleo-shared/brain.d.ts +2 -2
  331. package/dist/store/schema/memory-schema.d.ts +3 -3
  332. package/dist/store/schema/memory-schema.d.ts.map +1 -1
  333. package/dist/store/schema/memory-schema.js +2 -0
  334. package/dist/store/schema/memory-schema.js.map +1 -1
  335. package/dist/store/session-store.d.ts +5 -2
  336. package/dist/store/session-store.d.ts.map +1 -1
  337. package/dist/store/session-store.js +10 -5
  338. package/dist/store/session-store.js.map +1 -1
  339. package/dist/store/sqlite-native.d.ts +5 -4
  340. package/dist/store/sqlite-native.d.ts.map +1 -1
  341. package/dist/store/sqlite-native.js +5 -4
  342. package/dist/store/sqlite-native.js.map +1 -1
  343. package/dist/store/sync/merge/rules.d.ts.map +1 -1
  344. package/dist/store/sync/merge/rules.js +4 -3
  345. package/dist/store/sync/merge/rules.js.map +1 -1
  346. package/dist/store/validation-schemas.d.ts +1 -0
  347. package/dist/store/validation-schemas.d.ts.map +1 -1
  348. package/dist/store/vault-manifest.js +1 -1
  349. package/dist/store/vault-manifest.js.map +1 -1
  350. package/dist/system/project-health.d.ts +7 -0
  351. package/dist/system/project-health.d.ts.map +1 -1
  352. package/dist/system/project-health.js +13 -0
  353. package/dist/system/project-health.js.map +1 -1
  354. package/dist/tasks/add.d.ts.map +1 -1
  355. package/dist/tasks/add.js +0 -15
  356. package/dist/tasks/add.js.map +1 -1
  357. package/dist/tasks/affected-packages.d.ts +26 -11
  358. package/dist/tasks/affected-packages.d.ts.map +1 -1
  359. package/dist/tasks/affected-packages.js +54 -17
  360. package/dist/tasks/affected-packages.js.map +1 -1
  361. package/dist/tasks/affected-scope.d.ts +24 -0
  362. package/dist/tasks/affected-scope.d.ts.map +1 -1
  363. package/dist/tasks/affected-scope.js +57 -0
  364. package/dist/tasks/affected-scope.js.map +1 -1
  365. package/dist/tasks/change-set.d.ts +72 -9
  366. package/dist/tasks/change-set.d.ts.map +1 -1
  367. package/dist/tasks/change-set.js +227 -20
  368. package/dist/tasks/change-set.js.map +1 -1
  369. package/dist/tasks/complete-ci.d.ts.map +1 -1
  370. package/dist/tasks/complete-ci.js +2 -0
  371. package/dist/tasks/complete-ci.js.map +1 -1
  372. package/dist/tasks/complete.d.ts +2 -2
  373. package/dist/tasks/complete.d.ts.map +1 -1
  374. package/dist/tasks/complete.js +38 -17
  375. package/dist/tasks/complete.js.map +1 -1
  376. package/dist/tasks/done-plan.d.ts.map +1 -1
  377. package/dist/tasks/done-plan.js +66 -18
  378. package/dist/tasks/done-plan.js.map +1 -1
  379. package/dist/tasks/epic-enforcement.d.ts +39 -1
  380. package/dist/tasks/epic-enforcement.d.ts.map +1 -1
  381. package/dist/tasks/epic-enforcement.js +46 -2
  382. package/dist/tasks/epic-enforcement.js.map +1 -1
  383. package/dist/tasks/evidence.d.ts +74 -22
  384. package/dist/tasks/evidence.d.ts.map +1 -1
  385. package/dist/tasks/evidence.js +221 -35
  386. package/dist/tasks/evidence.js.map +1 -1
  387. package/dist/tasks/gate-runner.d.ts.map +1 -1
  388. package/dist/tasks/gate-runner.js +2 -12
  389. package/dist/tasks/gate-runner.js.map +1 -1
  390. package/dist/tasks/qa-run-binding.d.ts +2 -0
  391. package/dist/tasks/qa-run-binding.d.ts.map +1 -1
  392. package/dist/tasks/qa-run-binding.js +6 -2
  393. package/dist/tasks/qa-run-binding.js.map +1 -1
  394. package/dist/tasks/test-run-binding.d.ts +2 -0
  395. package/dist/tasks/test-run-binding.d.ts.map +1 -1
  396. package/dist/tasks/test-run-binding.js +8 -3
  397. package/dist/tasks/test-run-binding.js.map +1 -1
  398. package/dist/tasks/verification-policy.d.ts +57 -1
  399. package/dist/tasks/verification-policy.d.ts.map +1 -1
  400. package/dist/tasks/verification-policy.js +94 -1
  401. package/dist/tasks/verification-policy.js.map +1 -1
  402. package/dist/upgrade.d.ts.map +1 -1
  403. package/dist/upgrade.js +2 -15
  404. package/dist/upgrade.js.map +1 -1
  405. package/dist/validation/engine-ops.d.ts.map +1 -1
  406. package/dist/validation/engine-ops.js +39 -19
  407. package/dist/validation/engine-ops.js.map +1 -1
  408. package/package.json +13 -13
  409. package/schemas/config.schema.json +69 -0
  410. package/templates/CLEO-INJECTION.md +4 -5
  411. package/templates/CLEO-REFERENCE.md +2 -4
  412. package/templates/git-hooks/post-merge +25 -0
  413. package/dist/memory/dispatch-trace.d.ts +0 -44
  414. package/dist/memory/dispatch-trace.d.ts.map +0 -1
  415. package/dist/memory/dispatch-trace.js +0 -65
  416. package/dist/memory/dispatch-trace.js.map +0 -1
  417. package/dist/memory/retrieval/increment-citation-counts.d.ts +0 -11
  418. package/dist/memory/retrieval/increment-citation-counts.d.ts.map +0 -1
  419. package/dist/memory/retrieval/increment-citation-counts.js +0 -43
  420. package/dist/memory/retrieval/increment-citation-counts.js.map +0 -1
@@ -66,7 +66,7 @@
66
66
  * @task T13133
67
67
  * @epic T13121
68
68
  */
69
- import type { HeavyToolResourcePlan, MemoryPressureReading, ResourceClass } from '@cleocode/contracts';
69
+ import type { HeavyToolResourcePlan, MemoryConsumer, MemoryPressureReading, ResourceClass } from '@cleocode/contracts';
70
70
  import { admissionCapacityBytes, admissionReserveBytes } from '../tasks/heavy-tool-env.js';
71
71
  import type { CanonicalTool } from '../tasks/tool-resolver.js';
72
72
  import type { ResourceSample } from './backend.js';
@@ -180,6 +180,16 @@ export interface RunFootprintPlan {
180
180
  readonly footprintReason: string;
181
181
  /** Test files the run names, when it names them (T13132). */
182
182
  readonly namedFiles: number | null;
183
+ /**
184
+ * The git hook this run carries, keyed by its content (T13921): record the
185
+ * run's measured peak under it so the next run is charged by it.
186
+ */
187
+ readonly hookKey?: string;
188
+ }
189
+ /** A hook's content key and its measured peak, when measured (T13921). */
190
+ export interface HookPeak {
191
+ readonly key: string;
192
+ readonly peakBytes: number | null;
183
193
  }
184
194
  /**
185
195
  * Plan and charge a `cleo run` job by its real scope (T13367).
@@ -202,7 +212,8 @@ export interface RunFootprintPlan {
202
212
  * planRunFootprint('scoped-build', ['pnpm', 'biome', 'check', 'a.ts', 'b.ts']).footprintBytes; // 1 GiB
203
213
  * ```
204
214
  */
205
- export declare function planRunFootprint(cls: ResourceClass, argv: readonly string[], env?: NodeJS.ProcessEnv, totalRamGib?: number, hookInstalled?: (hook: string, globals: readonly string[]) => boolean): RunFootprintPlan;
215
+ export declare function planRunFootprint(cls: ResourceClass, argv: readonly string[], env?: NodeJS.ProcessEnv, totalRamGib?: number, hookInstalled?: (hook: string, globals: readonly string[]) => boolean, // CWD-OK: cleo run runs the command in its own cwd
216
+ hookPeak?: (hook: string, globals: readonly string[]) => HookPeak | null): RunFootprintPlan;
206
217
  /** Governor classes whose admission is the ledger's. */
207
218
  export declare const LEDGER_CLASSES: ReadonlySet<ResourceClass>;
208
219
  /**
@@ -264,7 +275,18 @@ export interface LedgerEntry {
264
275
  * carry it (T13452). Scheduling never makes it wait on that ancestor.
265
276
  */
266
277
  readonly parentId?: string;
278
+ /**
279
+ * `urgent` queues ahead of every routine waiter (T13921): a one-file fix for
280
+ * a red main does not wait behind routine pushes. It is still admitted only
281
+ * within the budget; nothing running is paused or displaced for it.
282
+ */
283
+ readonly priority?: 'urgent';
267
284
  }
285
+ /**
286
+ * A routine waiter that has waited this long ranks with urgent ones (T13921):
287
+ * a stream of urgent jobs can delay routine work, never starve it.
288
+ */
289
+ export declare const URGENT_AGING_MS: number;
268
290
  /**
269
291
  * How much of a project a run covers, shown in status so an operator can see
270
292
  * what holds the budget (T13132): `full` is a whole-suite run, `affected` the
@@ -407,6 +429,11 @@ export interface LedgerBudget {
407
429
  readonly heavyBudgetBytes: number;
408
430
  /** When the pressure behind the shares was sampled (epoch ms), or null when none is cached. */
409
431
  readonly sampledAtMs: number | null;
432
+ /**
433
+ * Why the memory gate closed the budget, with the host's largest memory
434
+ * users and how to free them (T13914); null while it admits.
435
+ */
436
+ readonly cause: string | null;
410
437
  }
411
438
  /**
412
439
  * The budget pressure leaves right now, as the ledger last judged it, without
@@ -421,7 +448,8 @@ export declare function readLedgerBudget(dir?: string, capacityBytes?: number):
421
448
  * One scheduling pass: admit every waiting entry the budget and the queue
422
449
  * order allow. Pure.
423
450
  *
424
- * - FIFO by `enqueuedAtMs`. A later entry may be admitted ahead of an older
451
+ * - Urgent entries first (T13921), then FIFO by `enqueuedAtMs`
452
+ * ({@link queueOrder}). A later entry may be admitted ahead of an older
425
453
  * one that does not fit (backfill) until that older one has waited
426
454
  * `reservationMs`; from then on nothing passes it.
427
455
  * - A footprint above the capacity is charged the capacity (it runs alone).
@@ -564,6 +592,8 @@ export interface AdmissionRequest {
564
592
  readonly footprintReason?: string;
565
593
  /** Take the machine-wide exclusive slot (T13237: a `full-build`). */
566
594
  readonly exclusive?: boolean;
595
+ /** Queue ahead of routine waiters, within the budget (T13921). */
596
+ readonly urgent?: boolean;
567
597
  }
568
598
  /** How to wait, and where to report. */
569
599
  export interface AdmitOptions {
@@ -588,6 +618,11 @@ export interface AdmitOptions {
588
618
  readonly memoryPressure?: MemoryGateReporter;
589
619
  /** Where the holder report goes while waiting. */
590
620
  readonly notice?: (line: string) => void;
621
+ /**
622
+ * The host's largest memory users, probed when the memory gate refuses
623
+ * (T13914). @defaultValue {@link topMemoryConsumers}
624
+ */
625
+ readonly topMemory?: () => readonly MemoryConsumer[] | null;
591
626
  /** The ledger directory. @defaultValue {@link admissionDir} */
592
627
  readonly dir?: string;
593
628
  /** Process probes for re-entrancy (tests). */
@@ -710,7 +745,7 @@ export declare function _resetAdmissionLedgerForTest(dir?: string): void;
710
745
  * @param opts - ledger directory, capacity and probes (tests).
711
746
  * @returns the ids removed (entries of another CLEO version included).
712
747
  */
713
- export declare function reapLedger(opts?: Pick<AdmitOptions, 'dir' | 'capacityBytes' | 'probe' | 'now' | 'sample'>): Promise<string[]>;
748
+ export declare function reapLedger(opts?: Pick<AdmitOptions, 'dir' | 'capacityBytes' | 'probe' | 'now' | 'sample' | 'topMemory'>): Promise<string[]>;
714
749
  /**
715
750
  * Remove one entry by id, whatever its liveness, and schedule. For
716
751
  * `cleo doctor tool-locks --remove <id>`, when an entry cannot be proven dead
@@ -1 +1 @@
1
- {"version":3,"file":"admission-ledger.d.ts","sourceRoot":"","sources":["../../src/resources/admission-ledger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"admission-ledger.d.ts","sourceRoot":"","sources":["../../src/resources/admission-ledger.ts"],"names":[],"mappings":"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"}
@@ -70,17 +70,19 @@ import { execFileSync } from 'node:child_process';
70
70
  import { randomBytes } from 'node:crypto';
71
71
  import { accessSync, constants as fsConstants, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync, } from 'node:fs';
72
72
  import { hostname, totalmem } from 'node:os';
73
- import { isAbsolute, join } from 'node:path';
73
+ import { join } from 'node:path';
74
74
  import lockfile from 'proper-lockfile';
75
75
  import { getLogger } from '../logger.js';
76
76
  import { getCleoHome } from '../paths.js';
77
77
  import { admissionCapacityBytes, admissionReserveBytes, defaultSingleProcessHeapMb, GIB_PER_WORKER, HEAVY_TOOL_HEAP_MB, heavyToolWorkers, isHeavyTool, isMemoryBoundTool, planHeavyToolEnv, } from '../tasks/heavy-tool-env.js';
78
+ import { gitHookPath, HOOK_PEAK_MARGIN, hookFootprintKey, readHookPeak } from './hook-footprint.js';
78
79
  import { pressureScore, ResourceMonitor } from './monitor.js';
79
80
  import { checkMemoryGate, MEMORY_GATE_RETRY_AFTER_MS, } from './pressure-gate.js';
80
- import { processAncestors, processGroupOf } from './run-admission.js';
81
+ import { processAncestors, processGroupOf, processGroupsOf } from './run-admission.js';
81
82
  import { canonicalForClass, gitHookFor, lightCommandReason, namedTestFileCount, runFootprint, } from './run-class.js';
82
83
  import { ownProcessStartedAt, systemPidProbe } from './slot-holder.js';
83
84
  import { followToolGroups, isProbeableId } from './tool-groups.js';
85
+ import { memoryPressureCause, TOP_MEMORY_COUNT, TOP_MEMORY_FAILED_REUSE_MS, TOP_MEMORY_REUSE_MS, topMemoryConsumers, } from './top-memory.js';
84
86
  let _log = null;
85
87
  function log() {
86
88
  if (_log === null)
@@ -219,10 +221,7 @@ export function planFootprintBytes(plan) {
219
221
  */
220
222
  export function gitHookInstalled(cwd, hook, globals = []) {
221
223
  try {
222
- // The command's own global options (`-C <dir>`, `-c core.hooksPath=…`)
223
- // pick the repository and hooks directory it will use (T13458).
224
- const path = execFileSync('git', [...globals, 'rev-parse', '--path-format=absolute', '--git-path', `hooks/${hook}`], { cwd, encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'], timeout: 5_000 }).trim();
225
- accessSync(isAbsolute(path) ? path : join(cwd, path), fsConstants.X_OK);
224
+ accessSync(gitHookPath(cwd, hook, globals), fsConstants.X_OK);
226
225
  return true;
227
226
  }
228
227
  catch (err) {
@@ -260,7 +259,11 @@ function scopedBuildWorkers(totalRamGib, env) {
260
259
  * planRunFootprint('scoped-build', ['pnpm', 'biome', 'check', 'a.ts', 'b.ts']).footprintBytes; // 1 GiB
261
260
  * ```
262
261
  */
263
- export function planRunFootprint(cls, argv, env = process.env, totalRamGib = totalmem() / GIB, hookInstalled = (hook, globals) => gitHookInstalled(process.cwd(), hook, globals)) {
262
+ export function planRunFootprint(cls, argv, env = process.env, totalRamGib = totalmem() / GIB, hookInstalled = (hook, globals) => gitHookInstalled(process.cwd(), hook, globals), // CWD-OK: cleo run runs the command in its own cwd
263
+ hookPeak = (hook, globals) => {
264
+ const key = hookFootprintKey(process.cwd(), hook, globals, env); // CWD-OK: as above
265
+ return key === null ? null : { key, peakBytes: readHookPeak(key, admissionDir()) };
266
+ }) {
264
267
  let scope = cls === 'full-build' ? null : runFootprint(argv);
265
268
  // T13452: a scoped build of a command that runs no heavy tool (`node x.mjs`,
266
269
  // `ls`) is charged light. An explicit test run keeps its class plan.
@@ -271,6 +274,7 @@ export function planRunFootprint(cls, argv, env = process.env, totalRamGib = tot
271
274
  // the hook runs (tests, a build) rides this admission.
272
275
  const probe = scope?.size === 'light' ? gitHookFor(argv) : null;
273
276
  const hook = probe?.hooks.find((h) => hookInstalled(h, probe.globals));
277
+ const measured = hook !== undefined && probe !== null ? hookPeak(hook, probe.globals) : null;
274
278
  if (hook !== undefined) {
275
279
  scope = { size: 'class', reason: `runs the ${hook} hook` };
276
280
  }
@@ -298,16 +302,27 @@ export function planRunFootprint(cls, argv, env = process.env, totalRamGib = tot
298
302
  // (and is spawned with them), so two fit where one whole-suite run would.
299
303
  const maxWorkers = namedFiles ?? (cls === 'scoped-build' ? scopedBuildWorkers(totalRamGib, env) : undefined);
300
304
  const { overlay, resources } = planHeavyToolEnv(canonicalForClass(cls), env, totalRamGib, maxWorkers);
305
+ const reason = namedFiles !== null
306
+ ? `${namedFiles} named test file${namedFiles === 1 ? '' : 's'}`
307
+ : scope?.size === 'class' && scope.reason !== 'sized by its class'
308
+ ? `${cls} plan: ${scope.reason}`
309
+ : `${cls} plan`;
310
+ const planned = resources !== null ? planFootprintBytes(resources) : undefined;
311
+ // T13921: a measured hook is charged its peak plus a margin, never more than
312
+ // the plan it runs under (which still bounds its heap and workers).
313
+ const peak = measured?.peakBytes ?? null;
314
+ const charged = peak !== null && planned !== undefined
315
+ ? Math.min(planned, Math.max(LIGHT_FOOTPRINT_BYTES, Math.ceil(peak * HOOK_PEAK_MARGIN)))
316
+ : planned;
301
317
  return {
302
318
  overlay,
303
319
  resources,
304
- ...(resources !== null ? { footprintBytes: planFootprintBytes(resources) } : {}),
305
- footprintReason: namedFiles !== null
306
- ? `${namedFiles} named test file${namedFiles === 1 ? '' : 's'}`
307
- : scope?.size === 'class' && scope.reason !== 'sized by its class'
308
- ? `${cls} plan: ${scope.reason}`
309
- : `${cls} plan`,
320
+ ...(charged !== undefined ? { footprintBytes: charged } : {}),
321
+ footprintReason: peak !== null && charged !== planned
322
+ ? `${reason}, measured peak ${gib(peak)} + ${Math.round((HOOK_PEAK_MARGIN - 1) * 100)}%`
323
+ : reason,
310
324
  namedFiles,
325
+ ...(measured !== null ? { hookKey: measured.key } : {}),
311
326
  };
312
327
  }
313
328
  /** Governor classes whose admission is the ledger's. */
@@ -333,6 +348,29 @@ export function isLedgerClass(cls) {
333
348
  export function footprintForClass(cls, totalBytes = totalmem()) {
334
349
  return isLedgerClass(cls) ? heavyRunFootprintBytes(totalBytes) : LIGHT_FOOTPRINT_BYTES;
335
350
  }
351
+ /**
352
+ * A routine waiter that has waited this long ranks with urgent ones (T13921):
353
+ * a stream of urgent jobs can delay routine work, never starve it.
354
+ */
355
+ export const URGENT_AGING_MS = 10 * 60_000;
356
+ /**
357
+ * Queue order at `nowMs` (T13921): urgent entries, and routine ones that have
358
+ * waited {@link URGENT_AGING_MS}, first; then FIFO by `enqueuedAtMs`, then id.
359
+ * The comparator is negative when `a` is ahead of `b`.
360
+ *
361
+ * @param nowMs - the clock.
362
+ */
363
+ function queueOrder(nowMs) {
364
+ const rank = (e) => e.priority === 'urgent' || nowMs - e.enqueuedAtMs >= URGENT_AGING_MS ? 0 : 1;
365
+ const byId = (a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0);
366
+ return (a, b) => rank(a) - rank(b) || a.enqueuedAtMs - b.enqueuedAtMs || byId(a, b);
367
+ }
368
+ /** Waiting entries queued ahead of `mine` at `nowMs` (its queue position is this plus one). */
369
+ function waitingAhead(entries, mine, nowMs) {
370
+ const order = queueOrder(nowMs);
371
+ return entries.filter((e) => e.state === 'waiting' && e.id !== mine.id && order(e, mine) < 0)
372
+ .length;
373
+ }
336
374
  /**
337
375
  * The ledger directory under the CLEO home.
338
376
  *
@@ -735,8 +773,14 @@ function ledgerBudget(pressure, capacityBytes) {
735
773
  lightBudgetBytes,
736
774
  heavyBudgetBytes: Math.min(lightBudgetBytes, shareBudgetBytes(share, capacityBytes)),
737
775
  sampledAtMs: pressure?.sampledAtMs ?? null,
776
+ cause: pressure?.reading ? gateCause(pressure.reading) : null,
738
777
  };
739
778
  }
779
+ /** The memory gate's refusal in words, with its cause (T13914). */
780
+ function gateCause(reading) {
781
+ return (`memory pressure ${reading.score} (refused above ${reading.refuseAbove}, resumes at ` +
782
+ `${reading.resumeAtOrBelow} or below): ${memoryPressureCause(reading)}`);
783
+ }
740
784
  /**
741
785
  * The budget pressure leaves right now, as the ledger last judged it, without
742
786
  * the lock. For `cleo doctor tool-locks` (T13572).
@@ -768,7 +812,8 @@ function budgetPhrase(entry, budget) {
768
812
  * One scheduling pass: admit every waiting entry the budget and the queue
769
813
  * order allow. Pure.
770
814
  *
771
- * - FIFO by `enqueuedAtMs`. A later entry may be admitted ahead of an older
815
+ * - Urgent entries first (T13921), then FIFO by `enqueuedAtMs`
816
+ * ({@link queueOrder}). A later entry may be admitted ahead of an older
772
817
  * one that does not fit (backfill) until that older one has waited
773
818
  * `reservationMs`; from then on nothing passes it.
774
819
  * - A footprint above the capacity is charged the capacity (it runs alone).
@@ -898,14 +943,18 @@ export function schedulePass(entries, ctx) {
898
943
  /** Admissible now: it fits, or nothing but its own ancestors runs. */
899
944
  const startable = (w, cost, h) => fits(w, cost, h) ||
900
945
  (running - h.running === 0 && (isHeavy(w) ? ctx.share : lightShare) !== 'none');
901
- const waiting = entries
902
- .filter((e) => e.state === 'waiting')
903
- .sort((a, b) => a.enqueuedAtMs - b.enqueuedAtMs || (a.id < b.id ? -1 : a.id > b.id ? 1 : 0));
946
+ const waiting = entries.filter((e) => e.state === 'waiting').sort(queueOrder(ctx.nowMs));
904
947
  // T13591: the reserve is bounded like the tiny lane (T13389). While the
905
948
  // oldest non-tiny run waits, it stays open only for TINY_LANE_WINDOWS
906
949
  // reservation windows, and never for a run charged the whole capacity: its
907
950
  // bytes would keep that run out, and steady tiny arrivals would starve it.
908
- const oldestHead = waiting.find((w) => !isTiny(w));
951
+ // By enqueue time, not queue order: an urgent arrival never resets it (T13971).
952
+ const byAge = [...waiting].sort((a, b) => a.enqueuedAtMs - b.enqueuedAtMs);
953
+ const oldestHead = byAge.find((w) => !isTiny(w));
954
+ // The FIFO head: only it, or a routine waiter, may take the reservation. A
955
+ // young urgent run that does not fit never removes the reservation an older
956
+ // routine head has earned (T13971).
957
+ const fifoHeadId = byAge[0]?.id;
909
958
  const reserveOpen = oldestHead === undefined ||
910
959
  (charged(oldestHead, ctx.capacityBytes) < ctx.capacityBytes &&
911
960
  ctx.nowMs - oldestHead.enqueuedAtMs < reservationMs * TINY_LANE_WINDOWS);
@@ -984,7 +1033,7 @@ export function schedulePass(entries, ctx) {
984
1033
  take(w, cost);
985
1034
  continue;
986
1035
  }
987
- if (!blocked) {
1036
+ if (!blocked && (w.priority !== 'urgent' || w.id === fifoHeadId)) {
988
1037
  blocked = true;
989
1038
  if (ctx.nowMs - w.enqueuedAtMs >= reservationMs) {
990
1039
  // A heavy head blocked by bytes stops everything behind it. One blocked
@@ -1325,7 +1374,7 @@ function newId(pid, nowMs) {
1325
1374
  * {@link PRESSURE_REUSE_MS} ago is reused instead, unless `opts.sample` is
1326
1375
  * given, so a crowd of waiters costs one sample per interval, not one each.
1327
1376
  */
1328
- async function sampleShare(opts, cached, nowMs) {
1377
+ async function sampleShare(opts, cached, nowMs, probeFor = null) {
1329
1378
  if (!opts.sample) {
1330
1379
  if (process.env[ADMISSION_PRESSURE_ENV] === 'off') {
1331
1380
  return { share: 'full', lightShare: 'full', reading: null, sampled: null };
@@ -1351,7 +1400,9 @@ async function sampleShare(opts, cached, nowMs) {
1351
1400
  const gate = checkMemoryGate(sample, opts.now ? { now: opts.now } : {});
1352
1401
  const share = budgetShare(sample, gate.refuse);
1353
1402
  const lightShare = lightBudgetShare(sample, gate.refuse);
1354
- const reading = gate.refuse ? gate.reading : null;
1403
+ const reading = gate.refuse && gate.reading !== null
1404
+ ? withTopConsumers(gate.reading, cached, nowMs, opts, probeFor)
1405
+ : null;
1355
1406
  return {
1356
1407
  share,
1357
1408
  lightShare,
@@ -1359,6 +1410,59 @@ async function sampleShare(opts, cached, nowMs) {
1359
1410
  sampled: { share, lightShare, reading, sampledAtMs: nowMs },
1360
1411
  };
1361
1412
  }
1413
+ /**
1414
+ * A refusing reading with the host's largest memory users (T13914), reusing
1415
+ * the last probe for {@link TOP_MEMORY_REUSE_MS} (a failed one for
1416
+ * {@link TOP_MEMORY_FAILED_REUSE_MS}) so a long refusal costs one probe per
1417
+ * window, not one per pass. Only a waiting admission probes (`probe`);
1418
+ * release, reap and remove carry the last list forward and never run the
1419
+ * probe (T13964).
1420
+ */
1421
+ function withTopConsumers(reading, cached, nowMs, opts, cleoEntries) {
1422
+ const last = cached?.reading?.topConsumers;
1423
+ if (last !== undefined) {
1424
+ // A failure is reused for a shorter window, never every pass: a probe that
1425
+ // hangs until its timeout must not block each waiter's event loop.
1426
+ const window = last.failed === true ? TOP_MEMORY_FAILED_REUSE_MS : TOP_MEMORY_REUSE_MS;
1427
+ const age = nowMs - last.sampledAtMs;
1428
+ if (age >= 0 && age < window)
1429
+ return { ...reading, topConsumers: last };
1430
+ }
1431
+ if (cleoEntries === null) {
1432
+ return last !== undefined ? { ...reading, topConsumers: last } : reading;
1433
+ }
1434
+ // Ask for more than are named: CLEO's own runs are left out (T13965).
1435
+ const probed = (opts.topMemory ?? (() => topMemoryConsumers(TOP_MEMORY_COUNT * 3)))();
1436
+ const processes = probed === null ? null : outsideCleo(probed, cleoEntries, opts);
1437
+ return {
1438
+ ...reading,
1439
+ topConsumers: processes === null
1440
+ ? { sampledAtMs: nowMs, processes: [], failed: true }
1441
+ : { sampledAtMs: nowMs, processes },
1442
+ };
1443
+ }
1444
+ /**
1445
+ * The memory users outside CLEO's own runs (T13965): a ledger entry's pid,
1446
+ * a process in one of its tool groups, and this process are CLEO's, so a
1447
+ * wait names what else took the memory. At most {@link TOP_MEMORY_COUNT}.
1448
+ */
1449
+ function outsideCleo(processes, entries, opts) {
1450
+ const pids = new Set([opts.pid ?? process.pid, ...entries.map((e) => e.pid)]);
1451
+ const left = processes.filter((p) => !pids.has(p.pid));
1452
+ const groups = new Set(entries.flatMap((e) => e.toolGroups));
1453
+ if (groups.size === 0)
1454
+ return left.slice(0, TOP_MEMORY_COUNT);
1455
+ // One `ps` for every candidate's group, never one per process (T13965).
1456
+ const injected = opts.facts?.groupOf;
1457
+ const batch = injected === undefined ? processGroupsOf(left.map((p) => p.pid)) : null;
1458
+ const groupOf = (pid) => batch !== null ? batch.get(pid) : (injected?.(pid) ?? undefined);
1459
+ return left
1460
+ .filter((p) => {
1461
+ const g = groupOf(p.pid);
1462
+ return g === undefined || !groups.has(g);
1463
+ })
1464
+ .slice(0, TOP_MEMORY_COUNT);
1465
+ }
1362
1466
  function isFresh(cached, nowMs) {
1363
1467
  const age = nowMs - cached.sampledAtMs;
1364
1468
  return age >= 0 && age < PRESSURE_REUSE_MS;
@@ -1481,6 +1585,7 @@ async function admitInner(req, opts) {
1481
1585
  ...(req.task !== undefined ? { task: req.task } : {}),
1482
1586
  ...(req.footprintReason !== undefined ? { footprintReason: req.footprintReason } : {}),
1483
1587
  ...(req.exclusive === true ? { exclusive: true } : {}),
1588
+ ...(req.urgent === true ? { priority: 'urgent' } : {}),
1484
1589
  };
1485
1590
  const deadline = t0 + timeoutMs;
1486
1591
  const stop = new AbortController();
@@ -1514,7 +1619,7 @@ async function admitInner(req, opts) {
1514
1619
  const before = readLedgerDoc(dir);
1515
1620
  lastDoc = before;
1516
1621
  const nowMs = now();
1517
- const { share, lightShare, reading, sampled } = await sampleShare(opts, before.pressure, nowMs);
1622
+ const { share, lightShare, reading, sampled } = await sampleShare(opts, before.pressure, nowMs, before.entries);
1518
1623
  lastReading = reading;
1519
1624
  checkQueue();
1520
1625
  const dead = findDead(before, now(), probe);
@@ -1547,14 +1652,13 @@ async function admitInner(req, opts) {
1547
1652
  });
1548
1653
  const refusal = (doc, reading) => {
1549
1654
  const nowMs = now();
1550
- const ahead = doc.entries.filter((e) => e.state === 'waiting' && e.id !== entry.id && e.enqueuedAtMs <= entry.enqueuedAtMs).length;
1655
+ const ahead = waitingAhead(doc.entries, entry, nowMs);
1551
1656
  const load = budgetLoad(doc, capacityBytes);
1552
1657
  const exclusiveHolder = entry.exclusive === true
1553
1658
  ? doc.entries.find((e) => e.state === 'admitted' && e.exclusive === true && e.id !== entry.id)
1554
1659
  : undefined;
1555
1660
  const reason = reading !== null
1556
- ? `memory pressure ${reading.score} (refused above ${reading.refuseAbove}, resumes at ` +
1557
- `${reading.resumeAtOrBelow} or below): ${reading.summary}`
1661
+ ? gateCause(reading)
1558
1662
  : exclusiveHolder !== undefined
1559
1663
  ? `another full build holds the machine-wide full-build slot (${exclusiveHolder.label} pid ` +
1560
1664
  `${exclusiveHolder.pid}); one runs at a time, whatever its size${ahead > 0 ? `; ${ahead} waiting ahead` : ''}`
@@ -1592,11 +1696,13 @@ async function admitInner(req, opts) {
1592
1696
  await opts.keepAlive().catch(() => undefined);
1593
1697
  checkQueue();
1594
1698
  }
1595
- if (reading !== null)
1596
- opts.memoryPressure?.waiting(reading, now() - t0);
1699
+ // T13965: the first waiting line already says when the wait gives up.
1700
+ if (reading !== null) {
1701
+ opts.memoryPressure?.waiting(reading, now() - t0, timeoutMs - (now() - t0));
1702
+ }
1597
1703
  if (now() - lastReportAt >= LEDGER_HOLDER_REPORT_MS && opts.notice) {
1598
1704
  lastReportAt = now();
1599
- opts.notice(holderReport(first.doc, entry, pid, now() - t0, capacityBytes, now()));
1705
+ opts.notice(holderReport(first.doc, entry, pid, now() - t0, capacityBytes, now(), timeoutMs));
1600
1706
  }
1601
1707
  const remaining = timeoutMs - (now() - t0);
1602
1708
  if (remaining <= 0)
@@ -1682,15 +1788,24 @@ function describeLoad(doc, nowMs) {
1682
1788
  }
1683
1789
  return lines;
1684
1790
  }
1685
- /** The holder report a long waiter prints. */
1686
- function holderReport(doc, mine, pid, waitedMs, capacityBytes, nowMs) {
1791
+ /**
1792
+ * The holder report a long waiter prints. When the memory gate closed the
1793
+ * budget, it names the cause (the host's largest memory users, CLEO or not)
1794
+ * and when the wait gives up (T13914).
1795
+ */
1796
+ function holderReport(doc, mine, pid, waitedMs, capacityBytes, nowMs, timeoutMs) {
1687
1797
  const holders = doc.entries.filter((e) => e.state === 'admitted');
1688
1798
  const used = budgetLoad(doc, capacityBytes).bytes;
1689
- const ahead = doc.entries.filter((e) => e.state === 'waiting' && e.id !== mine.id && e.enqueuedAtMs <= mine.enqueuedAtMs).length;
1799
+ const ahead = waitingAhead(doc.entries, mine, nowMs);
1690
1800
  const lines = [
1691
1801
  `still waiting after ${age(waitedMs)} for the machine budget (${gib(used)} of ${budgetPhrase(mine, ledgerBudget(doc.pressure, capacityBytes))} in use, ` +
1692
- `${ahead} waiting ahead). Holders: ${describeLoad(doc, nowMs).join('; ') || 'none'}.`,
1802
+ `queue position ${ahead + 1}${mine.priority === 'urgent' ? ' (urgent)' : ''}, ${ahead} waiting ahead). Holders: ${describeLoad(doc, nowMs).join('; ') || 'none'}.`,
1693
1803
  ];
1804
+ const reading = doc.pressure?.reading ?? null;
1805
+ if (reading !== null) {
1806
+ lines.push(`The budget is closed by ${gateCause(reading)}. Admission resumes by itself; this wait ` +
1807
+ `gives up in ${age(Math.max(0, timeoutMs - waitedMs))}.`);
1808
+ }
1694
1809
  const table = holders.length > 0 ? processTable() : null;
1695
1810
  const cycle = table ? suspectCycle(pid, holders, table) : null;
1696
1811
  if (cycle)