@smthrs/engine-store 0.0.0-stage → 1.0.0-rc.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 (787) hide show
  1. package/CHANGELOG.md +247 -0
  2. package/LICENSE +21 -0
  3. package/README.md +146 -2
  4. package/dist/cjs/ArtifactGc.d.ts +235 -0
  5. package/dist/cjs/ArtifactGc.d.ts.map +1 -0
  6. package/dist/cjs/ArtifactGc.js +183 -0
  7. package/dist/cjs/ArtifactGc.js.map +7 -0
  8. package/dist/cjs/ArtifactSync.d.ts +164 -0
  9. package/dist/cjs/ArtifactSync.d.ts.map +1 -0
  10. package/dist/cjs/ArtifactSync.js +144 -0
  11. package/dist/cjs/ArtifactSync.js.map +7 -0
  12. package/dist/cjs/CacheSync.d.ts +112 -0
  13. package/dist/cjs/CacheSync.d.ts.map +1 -0
  14. package/dist/cjs/CacheSync.js +64 -0
  15. package/dist/cjs/CacheSync.js.map +7 -0
  16. package/dist/cjs/DeferredClockFold.d.ts +354 -0
  17. package/dist/cjs/DeferredClockFold.d.ts.map +1 -0
  18. package/dist/cjs/DeferredClockFold.js +335 -0
  19. package/dist/cjs/DeferredClockFold.js.map +7 -0
  20. package/dist/cjs/DisasterRecovery.d.ts +431 -0
  21. package/dist/cjs/DisasterRecovery.d.ts.map +1 -0
  22. package/dist/cjs/DisasterRecovery.js +453 -0
  23. package/dist/cjs/DisasterRecovery.js.map +7 -0
  24. package/dist/cjs/DurableEngineState.d.ts +776 -0
  25. package/dist/cjs/DurableEngineState.d.ts.map +1 -0
  26. package/dist/cjs/DurableEngineState.js +1536 -0
  27. package/dist/cjs/DurableEngineState.js.map +7 -0
  28. package/dist/cjs/EngineStore.d.ts +158 -0
  29. package/dist/cjs/EngineStore.d.ts.map +1 -0
  30. package/dist/cjs/EngineStore.js +398 -0
  31. package/dist/cjs/EngineStore.js.map +7 -0
  32. package/dist/cjs/EngineStoreMetrics.d.ts +276 -0
  33. package/dist/cjs/EngineStoreMetrics.d.ts.map +1 -0
  34. package/dist/cjs/EngineStoreMetrics.js +135 -0
  35. package/dist/cjs/EngineStoreMetrics.js.map +7 -0
  36. package/dist/cjs/Errors.d.ts +22 -0
  37. package/dist/cjs/Errors.d.ts.map +1 -0
  38. package/dist/cjs/Errors.js +39 -0
  39. package/dist/cjs/Errors.js.map +7 -0
  40. package/dist/cjs/EventTypes.d.ts +27 -0
  41. package/dist/cjs/EventTypes.d.ts.map +1 -0
  42. package/dist/cjs/EventTypes.js +37 -0
  43. package/dist/cjs/EventTypes.js.map +7 -0
  44. package/dist/cjs/ExecutionFacts.d.ts +59 -0
  45. package/dist/cjs/ExecutionFacts.d.ts.map +1 -0
  46. package/dist/cjs/ExecutionFacts.js +123 -0
  47. package/dist/cjs/ExecutionFacts.js.map +7 -0
  48. package/dist/cjs/ExecutionSnapshot.d.ts +117 -0
  49. package/dist/cjs/ExecutionSnapshot.d.ts.map +1 -0
  50. package/dist/cjs/ExecutionSnapshot.js +111 -0
  51. package/dist/cjs/ExecutionSnapshot.js.map +7 -0
  52. package/dist/cjs/Inconsistency.d.ts +154 -0
  53. package/dist/cjs/Inconsistency.d.ts.map +1 -0
  54. package/dist/cjs/Inconsistency.js +135 -0
  55. package/dist/cjs/Inconsistency.js.map +7 -0
  56. package/dist/cjs/Migrations.d.ts +56 -0
  57. package/dist/cjs/Migrations.d.ts.map +1 -0
  58. package/dist/cjs/Migrations.js +78 -0
  59. package/dist/cjs/Migrations.js.map +7 -0
  60. package/dist/cjs/OwnerIdentity.d.ts +91 -0
  61. package/dist/cjs/OwnerIdentity.d.ts.map +1 -0
  62. package/dist/cjs/OwnerIdentity.js +65 -0
  63. package/dist/cjs/OwnerIdentity.js.map +7 -0
  64. package/dist/cjs/PlanInputStore.d.ts +110 -0
  65. package/dist/cjs/PlanInputStore.d.ts.map +1 -0
  66. package/dist/cjs/PlanInputStore.js +224 -0
  67. package/dist/cjs/PlanInputStore.js.map +7 -0
  68. package/dist/cjs/PlanMergeStore.d.ts +113 -0
  69. package/dist/cjs/PlanMergeStore.d.ts.map +1 -0
  70. package/dist/cjs/PlanMergeStore.js +255 -0
  71. package/dist/cjs/PlanMergeStore.js.map +7 -0
  72. package/dist/cjs/PlanScheduler.d.ts +363 -0
  73. package/dist/cjs/PlanScheduler.d.ts.map +1 -0
  74. package/dist/cjs/PlanScheduler.js +1090 -0
  75. package/dist/cjs/PlanScheduler.js.map +7 -0
  76. package/dist/cjs/Reconciliation.d.ts +175 -0
  77. package/dist/cjs/Reconciliation.d.ts.map +1 -0
  78. package/dist/cjs/Reconciliation.js +119 -0
  79. package/dist/cjs/Reconciliation.js.map +7 -0
  80. package/dist/cjs/ReplayOnly.d.ts +91 -0
  81. package/dist/cjs/ReplayOnly.d.ts.map +1 -0
  82. package/dist/cjs/ReplayOnly.js +52 -0
  83. package/dist/cjs/ReplayOnly.js.map +7 -0
  84. package/dist/cjs/Retention.d.ts +113 -0
  85. package/dist/cjs/Retention.d.ts.map +1 -0
  86. package/dist/cjs/Retention.js +99 -0
  87. package/dist/cjs/Retention.js.map +7 -0
  88. package/dist/cjs/RunCatalogRead.d.ts +17 -0
  89. package/dist/cjs/RunCatalogRead.d.ts.map +1 -0
  90. package/dist/cjs/RunCatalogRead.js +33 -0
  91. package/dist/cjs/RunCatalogRead.js.map +7 -0
  92. package/dist/cjs/RunChangeFeed.d.ts +75 -0
  93. package/dist/cjs/RunChangeFeed.d.ts.map +1 -0
  94. package/dist/cjs/RunChangeFeed.js +96 -0
  95. package/dist/cjs/RunChangeFeed.js.map +7 -0
  96. package/dist/cjs/RunState.d.ts +116 -0
  97. package/dist/cjs/RunState.d.ts.map +1 -0
  98. package/dist/cjs/RunState.js +76 -0
  99. package/dist/cjs/RunState.js.map +7 -0
  100. package/dist/cjs/Selection.d.ts +495 -0
  101. package/dist/cjs/Selection.d.ts.map +1 -0
  102. package/dist/cjs/Selection.js +288 -0
  103. package/dist/cjs/Selection.js.map +7 -0
  104. package/dist/cjs/SelectionStore.d.ts +141 -0
  105. package/dist/cjs/SelectionStore.d.ts.map +1 -0
  106. package/dist/cjs/SelectionStore.js +229 -0
  107. package/dist/cjs/SelectionStore.js.map +7 -0
  108. package/dist/cjs/StepBoundary.d.ts +501 -0
  109. package/dist/cjs/StepBoundary.d.ts.map +1 -0
  110. package/dist/cjs/StepBoundary.js +619 -0
  111. package/dist/cjs/StepBoundary.js.map +7 -0
  112. package/dist/cjs/StepCacheFold.d.ts +148 -0
  113. package/dist/cjs/StepCacheFold.d.ts.map +1 -0
  114. package/dist/cjs/StepCacheFold.js +131 -0
  115. package/dist/cjs/StepCacheFold.js.map +7 -0
  116. package/dist/cjs/StepSandbox.d.ts +78 -0
  117. package/dist/cjs/StepSandbox.d.ts.map +1 -0
  118. package/dist/cjs/StepSandbox.js +75 -0
  119. package/dist/cjs/StepSandbox.js.map +7 -0
  120. package/dist/cjs/WakeBus.d.ts +116 -0
  121. package/dist/cjs/WakeBus.d.ts.map +1 -0
  122. package/dist/cjs/WakeBus.js +89 -0
  123. package/dist/cjs/WakeBus.js.map +7 -0
  124. package/dist/cjs/WorkspaceSandbox.d.ts +619 -0
  125. package/dist/cjs/WorkspaceSandbox.d.ts.map +1 -0
  126. package/dist/cjs/WorkspaceSandbox.js +711 -0
  127. package/dist/cjs/WorkspaceSandbox.js.map +7 -0
  128. package/dist/cjs/index.d.ts +157 -0
  129. package/dist/cjs/index.d.ts.map +1 -0
  130. package/dist/cjs/index.js +95 -0
  131. package/dist/cjs/index.js.map +7 -0
  132. package/dist/cjs/internal/ActionPersistence.d.ts +276 -0
  133. package/dist/cjs/internal/ActionPersistence.d.ts.map +1 -0
  134. package/dist/cjs/internal/ActionPersistence.js +1395 -0
  135. package/dist/cjs/internal/ActionPersistence.js.map +7 -0
  136. package/dist/cjs/internal/ArtifactRoots.d.ts +38 -0
  137. package/dist/cjs/internal/ArtifactRoots.d.ts.map +1 -0
  138. package/dist/cjs/internal/ArtifactRoots.js +89 -0
  139. package/dist/cjs/internal/ArtifactRoots.js.map +7 -0
  140. package/dist/cjs/internal/AttemptAdmission.d.ts +53 -0
  141. package/dist/cjs/internal/AttemptAdmission.d.ts.map +1 -0
  142. package/dist/cjs/internal/AttemptAdmission.js +52 -0
  143. package/dist/cjs/internal/AttemptAdmission.js.map +7 -0
  144. package/dist/cjs/internal/AttemptLifecycle.d.ts +245 -0
  145. package/dist/cjs/internal/AttemptLifecycle.d.ts.map +1 -0
  146. package/dist/cjs/internal/AttemptLifecycle.js +112 -0
  147. package/dist/cjs/internal/AttemptLifecycle.js.map +7 -0
  148. package/dist/cjs/internal/AttemptProbe.d.ts +53 -0
  149. package/dist/cjs/internal/AttemptProbe.d.ts.map +1 -0
  150. package/dist/cjs/internal/AttemptProbe.js +66 -0
  151. package/dist/cjs/internal/AttemptProbe.js.map +7 -0
  152. package/dist/cjs/internal/CacheAdmission.d.ts +79 -0
  153. package/dist/cjs/internal/CacheAdmission.d.ts.map +1 -0
  154. package/dist/cjs/internal/CacheAdmission.js +71 -0
  155. package/dist/cjs/internal/CacheAdmission.js.map +7 -0
  156. package/dist/cjs/internal/CacheAgeHistory.d.ts +27 -0
  157. package/dist/cjs/internal/CacheAgeHistory.d.ts.map +1 -0
  158. package/dist/cjs/internal/CacheAgeHistory.js +61 -0
  159. package/dist/cjs/internal/CacheAgeHistory.js.map +7 -0
  160. package/dist/cjs/internal/CacheAgeVerdicts.d.ts +15 -0
  161. package/dist/cjs/internal/CacheAgeVerdicts.d.ts.map +1 -0
  162. package/dist/cjs/internal/CacheAgeVerdicts.js +73 -0
  163. package/dist/cjs/internal/CacheAgeVerdicts.js.map +7 -0
  164. package/dist/cjs/internal/CacheOutputPolicy.d.ts +24 -0
  165. package/dist/cjs/internal/CacheOutputPolicy.d.ts.map +1 -0
  166. package/dist/cjs/internal/CacheOutputPolicy.js +75 -0
  167. package/dist/cjs/internal/CacheOutputPolicy.js.map +7 -0
  168. package/dist/cjs/internal/CachePublication.d.ts +97 -0
  169. package/dist/cjs/internal/CachePublication.d.ts.map +1 -0
  170. package/dist/cjs/internal/CachePublication.js +80 -0
  171. package/dist/cjs/internal/CachePublication.js.map +7 -0
  172. package/dist/cjs/internal/CallFacts.d.ts +15 -0
  173. package/dist/cjs/internal/CallFacts.d.ts.map +1 -0
  174. package/dist/cjs/internal/CallFacts.js +97 -0
  175. package/dist/cjs/internal/CallFacts.js.map +7 -0
  176. package/dist/cjs/internal/CopiedRecord.d.ts +61 -0
  177. package/dist/cjs/internal/CopiedRecord.d.ts.map +1 -0
  178. package/dist/cjs/internal/CopiedRecord.js +134 -0
  179. package/dist/cjs/internal/CopiedRecord.js.map +7 -0
  180. package/dist/cjs/internal/DeferredPersistence.d.ts +108 -0
  181. package/dist/cjs/internal/DeferredPersistence.d.ts.map +1 -0
  182. package/dist/cjs/internal/DeferredPersistence.js +270 -0
  183. package/dist/cjs/internal/DeferredPersistence.js.map +7 -0
  184. package/dist/cjs/internal/EffectRecords.d.ts +92 -0
  185. package/dist/cjs/internal/EffectRecords.d.ts.map +1 -0
  186. package/dist/cjs/internal/EffectRecords.js +63 -0
  187. package/dist/cjs/internal/EffectRecords.js.map +7 -0
  188. package/dist/cjs/internal/EngineJj.d.ts +30 -0
  189. package/dist/cjs/internal/EngineJj.d.ts.map +1 -0
  190. package/dist/cjs/internal/EngineJj.js +42 -0
  191. package/dist/cjs/internal/EngineJj.js.map +7 -0
  192. package/dist/cjs/internal/EngineStateSchema.d.ts +68 -0
  193. package/dist/cjs/internal/EngineStateSchema.d.ts.map +1 -0
  194. package/dist/cjs/internal/EngineStateSchema.js +58 -0
  195. package/dist/cjs/internal/EngineStateSchema.js.map +7 -0
  196. package/dist/cjs/internal/ExecutionSnapshotRead.d.ts +162 -0
  197. package/dist/cjs/internal/ExecutionSnapshotRead.d.ts.map +1 -0
  198. package/dist/cjs/internal/ExecutionSnapshotRead.js +199 -0
  199. package/dist/cjs/internal/ExecutionSnapshotRead.js.map +7 -0
  200. package/dist/cjs/internal/ExecutionSnapshotRelations.d.ts +39 -0
  201. package/dist/cjs/internal/ExecutionSnapshotRelations.d.ts.map +1 -0
  202. package/dist/cjs/internal/ExecutionSnapshotRelations.js +105 -0
  203. package/dist/cjs/internal/ExecutionSnapshotRelations.js.map +7 -0
  204. package/dist/cjs/internal/ExitEncoding.d.ts +180 -0
  205. package/dist/cjs/internal/ExitEncoding.d.ts.map +1 -0
  206. package/dist/cjs/internal/ExitEncoding.js +236 -0
  207. package/dist/cjs/internal/ExitEncoding.js.map +7 -0
  208. package/dist/cjs/internal/FileBoundarySnapshot.d.ts +14 -0
  209. package/dist/cjs/internal/FileBoundarySnapshot.d.ts.map +1 -0
  210. package/dist/cjs/internal/FileBoundarySnapshot.js +51 -0
  211. package/dist/cjs/internal/FileBoundarySnapshot.js.map +7 -0
  212. package/dist/cjs/internal/FileEnumeration.d.ts +127 -0
  213. package/dist/cjs/internal/FileEnumeration.d.ts.map +1 -0
  214. package/dist/cjs/internal/FileEnumeration.js +194 -0
  215. package/dist/cjs/internal/FileEnumeration.js.map +7 -0
  216. package/dist/cjs/internal/HostReflection.d.ts +80 -0
  217. package/dist/cjs/internal/HostReflection.d.ts.map +1 -0
  218. package/dist/cjs/internal/HostReflection.js +43 -0
  219. package/dist/cjs/internal/HostReflection.js.map +7 -0
  220. package/dist/cjs/internal/JournalRecords.d.ts +325 -0
  221. package/dist/cjs/internal/JournalRecords.d.ts.map +1 -0
  222. package/dist/cjs/internal/JournalRecords.js +122 -0
  223. package/dist/cjs/internal/JournalRecords.js.map +7 -0
  224. package/dist/cjs/internal/NodeJournal.d.ts +157 -0
  225. package/dist/cjs/internal/NodeJournal.d.ts.map +1 -0
  226. package/dist/cjs/internal/NodeJournal.js +192 -0
  227. package/dist/cjs/internal/NodeJournal.js.map +7 -0
  228. package/dist/cjs/internal/Ordering.d.ts +14 -0
  229. package/dist/cjs/internal/Ordering.d.ts.map +1 -0
  230. package/dist/cjs/internal/Ordering.js +25 -0
  231. package/dist/cjs/internal/Ordering.js.map +7 -0
  232. package/dist/cjs/internal/PlanInputs.d.ts +14 -0
  233. package/dist/cjs/internal/PlanInputs.d.ts.map +1 -0
  234. package/dist/cjs/internal/PlanInputs.js +78 -0
  235. package/dist/cjs/internal/PlanInputs.js.map +7 -0
  236. package/dist/cjs/internal/PlanMerges.d.ts +178 -0
  237. package/dist/cjs/internal/PlanMerges.d.ts.map +1 -0
  238. package/dist/cjs/internal/PlanMerges.js +125 -0
  239. package/dist/cjs/internal/PlanMerges.js.map +7 -0
  240. package/dist/cjs/internal/ProvenanceSlot.d.ts +30 -0
  241. package/dist/cjs/internal/ProvenanceSlot.d.ts.map +1 -0
  242. package/dist/cjs/internal/ProvenanceSlot.js +53 -0
  243. package/dist/cjs/internal/ProvenanceSlot.js.map +7 -0
  244. package/dist/cjs/internal/ResultEnvelope.d.ts +88 -0
  245. package/dist/cjs/internal/ResultEnvelope.d.ts.map +1 -0
  246. package/dist/cjs/internal/ResultEnvelope.js +90 -0
  247. package/dist/cjs/internal/ResultEnvelope.js.map +7 -0
  248. package/dist/cjs/internal/RetentionOps.d.ts +414 -0
  249. package/dist/cjs/internal/RetentionOps.d.ts.map +1 -0
  250. package/dist/cjs/internal/RetentionOps.js +354 -0
  251. package/dist/cjs/internal/RetentionOps.js.map +7 -0
  252. package/dist/cjs/internal/RunCatalogOps.d.ts +118 -0
  253. package/dist/cjs/internal/RunCatalogOps.d.ts.map +1 -0
  254. package/dist/cjs/internal/RunCatalogOps.js +85 -0
  255. package/dist/cjs/internal/RunCatalogOps.js.map +7 -0
  256. package/dist/cjs/internal/RunCoordinator.d.ts +78 -0
  257. package/dist/cjs/internal/RunCoordinator.d.ts.map +1 -0
  258. package/dist/cjs/internal/RunCoordinator.js +123 -0
  259. package/dist/cjs/internal/RunCoordinator.js.map +7 -0
  260. package/dist/cjs/internal/RunDriver.d.ts +192 -0
  261. package/dist/cjs/internal/RunDriver.d.ts.map +1 -0
  262. package/dist/cjs/internal/RunDriver.js +1584 -0
  263. package/dist/cjs/internal/RunDriver.js.map +7 -0
  264. package/dist/cjs/internal/RunLifecycle.d.ts +22 -0
  265. package/dist/cjs/internal/RunLifecycle.d.ts.map +1 -0
  266. package/dist/cjs/internal/RunLifecycle.js +63 -0
  267. package/dist/cjs/internal/RunLifecycle.js.map +7 -0
  268. package/dist/cjs/internal/RunListing.d.ts +78 -0
  269. package/dist/cjs/internal/RunListing.d.ts.map +1 -0
  270. package/dist/cjs/internal/RunListing.js +171 -0
  271. package/dist/cjs/internal/RunListing.js.map +7 -0
  272. package/dist/cjs/internal/RunListingError.d.ts +35 -0
  273. package/dist/cjs/internal/RunListingError.d.ts.map +1 -0
  274. package/dist/cjs/internal/RunListingError.js +47 -0
  275. package/dist/cjs/internal/RunListingError.js.map +7 -0
  276. package/dist/cjs/internal/RuntimeGraph.d.ts +73 -0
  277. package/dist/cjs/internal/RuntimeGraph.d.ts.map +1 -0
  278. package/dist/cjs/internal/RuntimeGraph.js +180 -0
  279. package/dist/cjs/internal/RuntimeGraph.js.map +7 -0
  280. package/dist/cjs/internal/SandboxedExecution.d.ts +80 -0
  281. package/dist/cjs/internal/SandboxedExecution.d.ts.map +1 -0
  282. package/dist/cjs/internal/SandboxedExecution.js +104 -0
  283. package/dist/cjs/internal/SandboxedExecution.js.map +7 -0
  284. package/dist/cjs/internal/StateTransaction.d.ts +44 -0
  285. package/dist/cjs/internal/StateTransaction.d.ts.map +1 -0
  286. package/dist/cjs/internal/StateTransaction.js +52 -0
  287. package/dist/cjs/internal/StateTransaction.js.map +7 -0
  288. package/dist/cjs/internal/StepFacts.d.ts +14 -0
  289. package/dist/cjs/internal/StepFacts.d.ts.map +1 -0
  290. package/dist/cjs/internal/StepFacts.js +58 -0
  291. package/dist/cjs/internal/StepFacts.js.map +7 -0
  292. package/dist/cjs/internal/TypedEvents.d.ts +14 -0
  293. package/dist/cjs/internal/TypedEvents.d.ts.map +1 -0
  294. package/dist/cjs/internal/TypedEvents.js +37 -0
  295. package/dist/cjs/internal/TypedEvents.js.map +7 -0
  296. package/dist/cjs/migrations/0001_initial.d.ts +17 -0
  297. package/dist/cjs/migrations/0001_initial.d.ts.map +1 -0
  298. package/dist/cjs/migrations/0001_initial.js +61 -0
  299. package/dist/cjs/migrations/0001_initial.js.map +7 -0
  300. package/dist/cjs/migrations/0002_selection_store.d.ts +15 -0
  301. package/dist/cjs/migrations/0002_selection_store.d.ts.map +1 -0
  302. package/dist/cjs/migrations/0002_selection_store.js +56 -0
  303. package/dist/cjs/migrations/0002_selection_store.js.map +7 -0
  304. package/dist/cjs/migrations/0003_plan_inputs.d.ts +13 -0
  305. package/dist/cjs/migrations/0003_plan_inputs.d.ts.map +1 -0
  306. package/dist/cjs/migrations/0003_plan_inputs.js +90 -0
  307. package/dist/cjs/migrations/0003_plan_inputs.js.map +7 -0
  308. package/dist/cjs/migrations/0004_plan_environment.d.ts +14 -0
  309. package/dist/cjs/migrations/0004_plan_environment.d.ts.map +1 -0
  310. package/dist/cjs/migrations/0004_plan_environment.js +56 -0
  311. package/dist/cjs/migrations/0004_plan_environment.js.map +7 -0
  312. package/dist/cjs/migrations/0005_plan_merges.d.ts +14 -0
  313. package/dist/cjs/migrations/0005_plan_merges.d.ts.map +1 -0
  314. package/dist/cjs/migrations/0005_plan_merges.js +82 -0
  315. package/dist/cjs/migrations/0005_plan_merges.js.map +7 -0
  316. package/dist/cjs/migrations/0006_execution_listing.d.ts +15 -0
  317. package/dist/cjs/migrations/0006_execution_listing.d.ts.map +1 -0
  318. package/dist/cjs/migrations/0006_execution_listing.js +101 -0
  319. package/dist/cjs/migrations/0006_execution_listing.js.map +7 -0
  320. package/dist/cjs/migrations/0007_run_parent_sequence.d.ts +15 -0
  321. package/dist/cjs/migrations/0007_run_parent_sequence.d.ts.map +1 -0
  322. package/dist/cjs/migrations/0007_run_parent_sequence.js +40 -0
  323. package/dist/cjs/migrations/0007_run_parent_sequence.js.map +7 -0
  324. package/dist/cjs/migrations/0008_deferred_consumption.d.ts +16 -0
  325. package/dist/cjs/migrations/0008_deferred_consumption.d.ts.map +1 -0
  326. package/dist/cjs/migrations/0008_deferred_consumption.js +45 -0
  327. package/dist/cjs/migrations/0008_deferred_consumption.js.map +7 -0
  328. package/dist/cjs/migrations/0009_deferred_clock_facts.d.ts +24 -0
  329. package/dist/cjs/migrations/0009_deferred_clock_facts.d.ts.map +1 -0
  330. package/dist/cjs/migrations/0009_deferred_clock_facts.js +141 -0
  331. package/dist/cjs/migrations/0009_deferred_clock_facts.js.map +7 -0
  332. package/dist/cjs/migrations/0010_pending_cancellation.d.ts +15 -0
  333. package/dist/cjs/migrations/0010_pending_cancellation.d.ts.map +1 -0
  334. package/dist/cjs/migrations/0010_pending_cancellation.js +41 -0
  335. package/dist/cjs/migrations/0010_pending_cancellation.js.map +7 -0
  336. package/dist/cjs/package.json +1 -0
  337. package/dist/cjs/test/TestStores.d.ts +89 -0
  338. package/dist/cjs/test/TestStores.d.ts.map +1 -0
  339. package/dist/cjs/test/TestStores.js +98 -0
  340. package/dist/cjs/test/TestStores.js.map +7 -0
  341. package/dist/esm/ArtifactGc.d.ts +235 -0
  342. package/dist/esm/ArtifactGc.d.ts.map +1 -0
  343. package/dist/esm/ArtifactGc.js +268 -0
  344. package/dist/esm/ArtifactGc.js.map +1 -0
  345. package/dist/esm/ArtifactSync.d.ts +164 -0
  346. package/dist/esm/ArtifactSync.d.ts.map +1 -0
  347. package/dist/esm/ArtifactSync.js +176 -0
  348. package/dist/esm/ArtifactSync.js.map +1 -0
  349. package/dist/esm/CacheSync.d.ts +112 -0
  350. package/dist/esm/CacheSync.d.ts.map +1 -0
  351. package/dist/esm/CacheSync.js +94 -0
  352. package/dist/esm/CacheSync.js.map +1 -0
  353. package/dist/esm/DeferredClockFold.d.ts +354 -0
  354. package/dist/esm/DeferredClockFold.d.ts.map +1 -0
  355. package/dist/esm/DeferredClockFold.js +472 -0
  356. package/dist/esm/DeferredClockFold.js.map +1 -0
  357. package/dist/esm/DisasterRecovery.d.ts +431 -0
  358. package/dist/esm/DisasterRecovery.d.ts.map +1 -0
  359. package/dist/esm/DisasterRecovery.js +523 -0
  360. package/dist/esm/DisasterRecovery.js.map +1 -0
  361. package/dist/esm/DurableEngineState.d.ts +776 -0
  362. package/dist/esm/DurableEngineState.d.ts.map +1 -0
  363. package/dist/esm/DurableEngineState.js +1648 -0
  364. package/dist/esm/DurableEngineState.js.map +1 -0
  365. package/dist/esm/EngineStore.d.ts +158 -0
  366. package/dist/esm/EngineStore.d.ts.map +1 -0
  367. package/dist/esm/EngineStore.js +403 -0
  368. package/dist/esm/EngineStore.js.map +1 -0
  369. package/dist/esm/EngineStoreMetrics.d.ts +276 -0
  370. package/dist/esm/EngineStoreMetrics.d.ts.map +1 -0
  371. package/dist/esm/EngineStoreMetrics.js +260 -0
  372. package/dist/esm/EngineStoreMetrics.js.map +1 -0
  373. package/dist/esm/Errors.d.ts +22 -0
  374. package/dist/esm/Errors.d.ts.map +1 -0
  375. package/dist/esm/Errors.js +22 -0
  376. package/dist/esm/Errors.js.map +1 -0
  377. package/dist/esm/EventTypes.d.ts +27 -0
  378. package/dist/esm/EventTypes.d.ts.map +1 -0
  379. package/dist/esm/EventTypes.js +27 -0
  380. package/dist/esm/EventTypes.js.map +1 -0
  381. package/dist/esm/ExecutionFacts.d.ts +59 -0
  382. package/dist/esm/ExecutionFacts.d.ts.map +1 -0
  383. package/dist/esm/ExecutionFacts.js +96 -0
  384. package/dist/esm/ExecutionFacts.js.map +1 -0
  385. package/dist/esm/ExecutionSnapshot.d.ts +117 -0
  386. package/dist/esm/ExecutionSnapshot.d.ts.map +1 -0
  387. package/dist/esm/ExecutionSnapshot.js +95 -0
  388. package/dist/esm/ExecutionSnapshot.js.map +1 -0
  389. package/dist/esm/Inconsistency.d.ts +154 -0
  390. package/dist/esm/Inconsistency.d.ts.map +1 -0
  391. package/dist/esm/Inconsistency.js +133 -0
  392. package/dist/esm/Inconsistency.js.map +1 -0
  393. package/dist/esm/Migrations.d.ts +56 -0
  394. package/dist/esm/Migrations.d.ts.map +1 -0
  395. package/dist/esm/Migrations.js +91 -0
  396. package/dist/esm/Migrations.js.map +1 -0
  397. package/dist/esm/OwnerIdentity.d.ts +91 -0
  398. package/dist/esm/OwnerIdentity.d.ts.map +1 -0
  399. package/dist/esm/OwnerIdentity.js +99 -0
  400. package/dist/esm/OwnerIdentity.js.map +1 -0
  401. package/dist/esm/PlanInputStore.d.ts +110 -0
  402. package/dist/esm/PlanInputStore.d.ts.map +1 -0
  403. package/dist/esm/PlanInputStore.js +207 -0
  404. package/dist/esm/PlanInputStore.js.map +1 -0
  405. package/dist/esm/PlanMergeStore.d.ts +113 -0
  406. package/dist/esm/PlanMergeStore.d.ts.map +1 -0
  407. package/dist/esm/PlanMergeStore.js +244 -0
  408. package/dist/esm/PlanMergeStore.js.map +1 -0
  409. package/dist/esm/PlanScheduler.d.ts +363 -0
  410. package/dist/esm/PlanScheduler.d.ts.map +1 -0
  411. package/dist/esm/PlanScheduler.js +1321 -0
  412. package/dist/esm/PlanScheduler.js.map +1 -0
  413. package/dist/esm/Reconciliation.d.ts +175 -0
  414. package/dist/esm/Reconciliation.d.ts.map +1 -0
  415. package/dist/esm/Reconciliation.js +175 -0
  416. package/dist/esm/Reconciliation.js.map +1 -0
  417. package/dist/esm/ReplayOnly.d.ts +91 -0
  418. package/dist/esm/ReplayOnly.d.ts.map +1 -0
  419. package/dist/esm/ReplayOnly.js +59 -0
  420. package/dist/esm/ReplayOnly.js.map +1 -0
  421. package/dist/esm/Retention.d.ts +113 -0
  422. package/dist/esm/Retention.d.ts.map +1 -0
  423. package/dist/esm/Retention.js +139 -0
  424. package/dist/esm/Retention.js.map +1 -0
  425. package/dist/esm/RunCatalogRead.d.ts +17 -0
  426. package/dist/esm/RunCatalogRead.d.ts.map +1 -0
  427. package/dist/esm/RunCatalogRead.js +17 -0
  428. package/dist/esm/RunCatalogRead.js.map +1 -0
  429. package/dist/esm/RunChangeFeed.d.ts +75 -0
  430. package/dist/esm/RunChangeFeed.d.ts.map +1 -0
  431. package/dist/esm/RunChangeFeed.js +81 -0
  432. package/dist/esm/RunChangeFeed.js.map +1 -0
  433. package/dist/esm/RunState.d.ts +116 -0
  434. package/dist/esm/RunState.d.ts.map +1 -0
  435. package/dist/esm/RunState.js +109 -0
  436. package/dist/esm/RunState.js.map +1 -0
  437. package/dist/esm/Selection.d.ts +495 -0
  438. package/dist/esm/Selection.d.ts.map +1 -0
  439. package/dist/esm/Selection.js +482 -0
  440. package/dist/esm/Selection.js.map +1 -0
  441. package/dist/esm/SelectionStore.d.ts +141 -0
  442. package/dist/esm/SelectionStore.d.ts.map +1 -0
  443. package/dist/esm/SelectionStore.js +215 -0
  444. package/dist/esm/SelectionStore.js.map +1 -0
  445. package/dist/esm/StepBoundary.d.ts +501 -0
  446. package/dist/esm/StepBoundary.d.ts.map +1 -0
  447. package/dist/esm/StepBoundary.js +919 -0
  448. package/dist/esm/StepBoundary.js.map +1 -0
  449. package/dist/esm/StepCacheFold.d.ts +148 -0
  450. package/dist/esm/StepCacheFold.d.ts.map +1 -0
  451. package/dist/esm/StepCacheFold.js +201 -0
  452. package/dist/esm/StepCacheFold.js.map +1 -0
  453. package/dist/esm/StepSandbox.d.ts +78 -0
  454. package/dist/esm/StepSandbox.d.ts.map +1 -0
  455. package/dist/esm/StepSandbox.js +70 -0
  456. package/dist/esm/StepSandbox.js.map +1 -0
  457. package/dist/esm/WakeBus.d.ts +116 -0
  458. package/dist/esm/WakeBus.d.ts.map +1 -0
  459. package/dist/esm/WakeBus.js +121 -0
  460. package/dist/esm/WakeBus.js.map +1 -0
  461. package/dist/esm/WorkspaceSandbox.d.ts +619 -0
  462. package/dist/esm/WorkspaceSandbox.d.ts.map +1 -0
  463. package/dist/esm/WorkspaceSandbox.js +985 -0
  464. package/dist/esm/WorkspaceSandbox.js.map +1 -0
  465. package/dist/esm/index.d.ts +157 -0
  466. package/dist/esm/index.d.ts.map +1 -0
  467. package/dist/esm/index.js +157 -0
  468. package/dist/esm/index.js.map +1 -0
  469. package/dist/esm/internal/ActionPersistence.d.ts +276 -0
  470. package/dist/esm/internal/ActionPersistence.d.ts.map +1 -0
  471. package/dist/esm/internal/ActionPersistence.js +2306 -0
  472. package/dist/esm/internal/ActionPersistence.js.map +1 -0
  473. package/dist/esm/internal/ArtifactRoots.d.ts +38 -0
  474. package/dist/esm/internal/ArtifactRoots.d.ts.map +1 -0
  475. package/dist/esm/internal/ArtifactRoots.js +76 -0
  476. package/dist/esm/internal/ArtifactRoots.js.map +1 -0
  477. package/dist/esm/internal/AttemptAdmission.d.ts +53 -0
  478. package/dist/esm/internal/AttemptAdmission.d.ts.map +1 -0
  479. package/dist/esm/internal/AttemptAdmission.js +52 -0
  480. package/dist/esm/internal/AttemptAdmission.js.map +1 -0
  481. package/dist/esm/internal/AttemptLifecycle.d.ts +245 -0
  482. package/dist/esm/internal/AttemptLifecycle.d.ts.map +1 -0
  483. package/dist/esm/internal/AttemptLifecycle.js +104 -0
  484. package/dist/esm/internal/AttemptLifecycle.js.map +1 -0
  485. package/dist/esm/internal/AttemptProbe.d.ts +53 -0
  486. package/dist/esm/internal/AttemptProbe.d.ts.map +1 -0
  487. package/dist/esm/internal/AttemptProbe.js +83 -0
  488. package/dist/esm/internal/AttemptProbe.js.map +1 -0
  489. package/dist/esm/internal/CacheAdmission.d.ts +79 -0
  490. package/dist/esm/internal/CacheAdmission.d.ts.map +1 -0
  491. package/dist/esm/internal/CacheAdmission.js +72 -0
  492. package/dist/esm/internal/CacheAdmission.js.map +1 -0
  493. package/dist/esm/internal/CacheAgeHistory.d.ts +27 -0
  494. package/dist/esm/internal/CacheAgeHistory.d.ts.map +1 -0
  495. package/dist/esm/internal/CacheAgeHistory.js +49 -0
  496. package/dist/esm/internal/CacheAgeHistory.js.map +1 -0
  497. package/dist/esm/internal/CacheAgeVerdicts.d.ts +15 -0
  498. package/dist/esm/internal/CacheAgeVerdicts.d.ts.map +1 -0
  499. package/dist/esm/internal/CacheAgeVerdicts.js +54 -0
  500. package/dist/esm/internal/CacheAgeVerdicts.js.map +1 -0
  501. package/dist/esm/internal/CacheOutputPolicy.d.ts +24 -0
  502. package/dist/esm/internal/CacheOutputPolicy.d.ts.map +1 -0
  503. package/dist/esm/internal/CacheOutputPolicy.js +73 -0
  504. package/dist/esm/internal/CacheOutputPolicy.js.map +1 -0
  505. package/dist/esm/internal/CachePublication.d.ts +97 -0
  506. package/dist/esm/internal/CachePublication.d.ts.map +1 -0
  507. package/dist/esm/internal/CachePublication.js +116 -0
  508. package/dist/esm/internal/CachePublication.js.map +1 -0
  509. package/dist/esm/internal/CallFacts.d.ts +15 -0
  510. package/dist/esm/internal/CallFacts.d.ts.map +1 -0
  511. package/dist/esm/internal/CallFacts.js +83 -0
  512. package/dist/esm/internal/CallFacts.js.map +1 -0
  513. package/dist/esm/internal/CopiedRecord.d.ts +61 -0
  514. package/dist/esm/internal/CopiedRecord.d.ts.map +1 -0
  515. package/dist/esm/internal/CopiedRecord.js +165 -0
  516. package/dist/esm/internal/CopiedRecord.js.map +1 -0
  517. package/dist/esm/internal/DeferredPersistence.d.ts +108 -0
  518. package/dist/esm/internal/DeferredPersistence.d.ts.map +1 -0
  519. package/dist/esm/internal/DeferredPersistence.js +240 -0
  520. package/dist/esm/internal/DeferredPersistence.js.map +1 -0
  521. package/dist/esm/internal/EffectRecords.d.ts +92 -0
  522. package/dist/esm/internal/EffectRecords.d.ts.map +1 -0
  523. package/dist/esm/internal/EffectRecords.js +94 -0
  524. package/dist/esm/internal/EffectRecords.js.map +1 -0
  525. package/dist/esm/internal/EngineJj.d.ts +30 -0
  526. package/dist/esm/internal/EngineJj.d.ts.map +1 -0
  527. package/dist/esm/internal/EngineJj.js +29 -0
  528. package/dist/esm/internal/EngineJj.js.map +1 -0
  529. package/dist/esm/internal/EngineStateSchema.d.ts +68 -0
  530. package/dist/esm/internal/EngineStateSchema.d.ts.map +1 -0
  531. package/dist/esm/internal/EngineStateSchema.js +53 -0
  532. package/dist/esm/internal/EngineStateSchema.js.map +1 -0
  533. package/dist/esm/internal/ExecutionSnapshotRead.d.ts +162 -0
  534. package/dist/esm/internal/ExecutionSnapshotRead.d.ts.map +1 -0
  535. package/dist/esm/internal/ExecutionSnapshotRead.js +218 -0
  536. package/dist/esm/internal/ExecutionSnapshotRead.js.map +1 -0
  537. package/dist/esm/internal/ExecutionSnapshotRelations.d.ts +39 -0
  538. package/dist/esm/internal/ExecutionSnapshotRelations.d.ts.map +1 -0
  539. package/dist/esm/internal/ExecutionSnapshotRelations.js +81 -0
  540. package/dist/esm/internal/ExecutionSnapshotRelations.js.map +1 -0
  541. package/dist/esm/internal/ExitEncoding.d.ts +180 -0
  542. package/dist/esm/internal/ExitEncoding.d.ts.map +1 -0
  543. package/dist/esm/internal/ExitEncoding.js +361 -0
  544. package/dist/esm/internal/ExitEncoding.js.map +1 -0
  545. package/dist/esm/internal/FileBoundarySnapshot.d.ts +14 -0
  546. package/dist/esm/internal/FileBoundarySnapshot.d.ts.map +1 -0
  547. package/dist/esm/internal/FileBoundarySnapshot.js +29 -0
  548. package/dist/esm/internal/FileBoundarySnapshot.js.map +1 -0
  549. package/dist/esm/internal/FileEnumeration.d.ts +127 -0
  550. package/dist/esm/internal/FileEnumeration.d.ts.map +1 -0
  551. package/dist/esm/internal/FileEnumeration.js +236 -0
  552. package/dist/esm/internal/FileEnumeration.js.map +1 -0
  553. package/dist/esm/internal/HostReflection.d.ts +80 -0
  554. package/dist/esm/internal/HostReflection.d.ts.map +1 -0
  555. package/dist/esm/internal/HostReflection.js +98 -0
  556. package/dist/esm/internal/HostReflection.js.map +1 -0
  557. package/dist/esm/internal/JournalRecords.d.ts +325 -0
  558. package/dist/esm/internal/JournalRecords.d.ts.map +1 -0
  559. package/dist/esm/internal/JournalRecords.js +306 -0
  560. package/dist/esm/internal/JournalRecords.js.map +1 -0
  561. package/dist/esm/internal/NodeJournal.d.ts +157 -0
  562. package/dist/esm/internal/NodeJournal.d.ts.map +1 -0
  563. package/dist/esm/internal/NodeJournal.js +298 -0
  564. package/dist/esm/internal/NodeJournal.js.map +1 -0
  565. package/dist/esm/internal/Ordering.d.ts +14 -0
  566. package/dist/esm/internal/Ordering.d.ts.map +1 -0
  567. package/dist/esm/internal/Ordering.js +14 -0
  568. package/dist/esm/internal/Ordering.js.map +1 -0
  569. package/dist/esm/internal/PlanInputs.d.ts +14 -0
  570. package/dist/esm/internal/PlanInputs.d.ts.map +1 -0
  571. package/dist/esm/internal/PlanInputs.js +57 -0
  572. package/dist/esm/internal/PlanInputs.js.map +1 -0
  573. package/dist/esm/internal/PlanMerges.d.ts +178 -0
  574. package/dist/esm/internal/PlanMerges.d.ts.map +1 -0
  575. package/dist/esm/internal/PlanMerges.js +113 -0
  576. package/dist/esm/internal/PlanMerges.js.map +1 -0
  577. package/dist/esm/internal/ProvenanceSlot.d.ts +30 -0
  578. package/dist/esm/internal/ProvenanceSlot.d.ts.map +1 -0
  579. package/dist/esm/internal/ProvenanceSlot.js +39 -0
  580. package/dist/esm/internal/ProvenanceSlot.js.map +1 -0
  581. package/dist/esm/internal/ResultEnvelope.d.ts +88 -0
  582. package/dist/esm/internal/ResultEnvelope.d.ts.map +1 -0
  583. package/dist/esm/internal/ResultEnvelope.js +83 -0
  584. package/dist/esm/internal/ResultEnvelope.js.map +1 -0
  585. package/dist/esm/internal/RetentionOps.d.ts +414 -0
  586. package/dist/esm/internal/RetentionOps.d.ts.map +1 -0
  587. package/dist/esm/internal/RetentionOps.js +576 -0
  588. package/dist/esm/internal/RetentionOps.js.map +1 -0
  589. package/dist/esm/internal/RunCatalogOps.d.ts +118 -0
  590. package/dist/esm/internal/RunCatalogOps.d.ts.map +1 -0
  591. package/dist/esm/internal/RunCatalogOps.js +120 -0
  592. package/dist/esm/internal/RunCatalogOps.js.map +1 -0
  593. package/dist/esm/internal/RunCoordinator.d.ts +78 -0
  594. package/dist/esm/internal/RunCoordinator.d.ts.map +1 -0
  595. package/dist/esm/internal/RunCoordinator.js +115 -0
  596. package/dist/esm/internal/RunCoordinator.js.map +1 -0
  597. package/dist/esm/internal/RunDriver.d.ts +192 -0
  598. package/dist/esm/internal/RunDriver.d.ts.map +1 -0
  599. package/dist/esm/internal/RunDriver.js +2334 -0
  600. package/dist/esm/internal/RunDriver.js.map +1 -0
  601. package/dist/esm/internal/RunLifecycle.d.ts +22 -0
  602. package/dist/esm/internal/RunLifecycle.d.ts.map +1 -0
  603. package/dist/esm/internal/RunLifecycle.js +49 -0
  604. package/dist/esm/internal/RunLifecycle.js.map +1 -0
  605. package/dist/esm/internal/RunListing.d.ts +78 -0
  606. package/dist/esm/internal/RunListing.d.ts.map +1 -0
  607. package/dist/esm/internal/RunListing.js +146 -0
  608. package/dist/esm/internal/RunListing.js.map +1 -0
  609. package/dist/esm/internal/RunListingError.d.ts +35 -0
  610. package/dist/esm/internal/RunListingError.d.ts.map +1 -0
  611. package/dist/esm/internal/RunListingError.js +27 -0
  612. package/dist/esm/internal/RunListingError.js.map +1 -0
  613. package/dist/esm/internal/RuntimeGraph.d.ts +73 -0
  614. package/dist/esm/internal/RuntimeGraph.d.ts.map +1 -0
  615. package/dist/esm/internal/RuntimeGraph.js +182 -0
  616. package/dist/esm/internal/RuntimeGraph.js.map +1 -0
  617. package/dist/esm/internal/SandboxedExecution.d.ts +80 -0
  618. package/dist/esm/internal/SandboxedExecution.d.ts.map +1 -0
  619. package/dist/esm/internal/SandboxedExecution.js +107 -0
  620. package/dist/esm/internal/SandboxedExecution.js.map +1 -0
  621. package/dist/esm/internal/StateTransaction.d.ts +44 -0
  622. package/dist/esm/internal/StateTransaction.d.ts.map +1 -0
  623. package/dist/esm/internal/StateTransaction.js +54 -0
  624. package/dist/esm/internal/StateTransaction.js.map +1 -0
  625. package/dist/esm/internal/StepFacts.d.ts +14 -0
  626. package/dist/esm/internal/StepFacts.d.ts.map +1 -0
  627. package/dist/esm/internal/StepFacts.js +35 -0
  628. package/dist/esm/internal/StepFacts.js.map +1 -0
  629. package/dist/esm/internal/TypedEvents.d.ts +14 -0
  630. package/dist/esm/internal/TypedEvents.d.ts.map +1 -0
  631. package/dist/esm/internal/TypedEvents.js +14 -0
  632. package/dist/esm/internal/TypedEvents.js.map +1 -0
  633. package/dist/esm/migrations/0001_initial.d.ts +17 -0
  634. package/dist/esm/migrations/0001_initial.d.ts.map +1 -0
  635. package/dist/esm/migrations/0001_initial.js +41 -0
  636. package/dist/esm/migrations/0001_initial.js.map +1 -0
  637. package/dist/esm/migrations/0002_selection_store.d.ts +15 -0
  638. package/dist/esm/migrations/0002_selection_store.d.ts.map +1 -0
  639. package/dist/esm/migrations/0002_selection_store.js +34 -0
  640. package/dist/esm/migrations/0002_selection_store.js.map +1 -0
  641. package/dist/esm/migrations/0003_plan_inputs.d.ts +13 -0
  642. package/dist/esm/migrations/0003_plan_inputs.d.ts.map +1 -0
  643. package/dist/esm/migrations/0003_plan_inputs.js +70 -0
  644. package/dist/esm/migrations/0003_plan_inputs.js.map +1 -0
  645. package/dist/esm/migrations/0004_plan_environment.d.ts +14 -0
  646. package/dist/esm/migrations/0004_plan_environment.d.ts.map +1 -0
  647. package/dist/esm/migrations/0004_plan_environment.js +33 -0
  648. package/dist/esm/migrations/0004_plan_environment.js.map +1 -0
  649. package/dist/esm/migrations/0005_plan_merges.d.ts +14 -0
  650. package/dist/esm/migrations/0005_plan_merges.d.ts.map +1 -0
  651. package/dist/esm/migrations/0005_plan_merges.js +59 -0
  652. package/dist/esm/migrations/0005_plan_merges.js.map +1 -0
  653. package/dist/esm/migrations/0006_execution_listing.d.ts +15 -0
  654. package/dist/esm/migrations/0006_execution_listing.d.ts.map +1 -0
  655. package/dist/esm/migrations/0006_execution_listing.js +81 -0
  656. package/dist/esm/migrations/0006_execution_listing.js.map +1 -0
  657. package/dist/esm/migrations/0007_run_parent_sequence.d.ts +15 -0
  658. package/dist/esm/migrations/0007_run_parent_sequence.d.ts.map +1 -0
  659. package/dist/esm/migrations/0007_run_parent_sequence.js +18 -0
  660. package/dist/esm/migrations/0007_run_parent_sequence.js.map +1 -0
  661. package/dist/esm/migrations/0008_deferred_consumption.d.ts +16 -0
  662. package/dist/esm/migrations/0008_deferred_consumption.d.ts.map +1 -0
  663. package/dist/esm/migrations/0008_deferred_consumption.js +24 -0
  664. package/dist/esm/migrations/0008_deferred_consumption.js.map +1 -0
  665. package/dist/esm/migrations/0009_deferred_clock_facts.d.ts +24 -0
  666. package/dist/esm/migrations/0009_deferred_clock_facts.d.ts.map +1 -0
  667. package/dist/esm/migrations/0009_deferred_clock_facts.js +127 -0
  668. package/dist/esm/migrations/0009_deferred_clock_facts.js.map +1 -0
  669. package/dist/esm/migrations/0010_pending_cancellation.d.ts +15 -0
  670. package/dist/esm/migrations/0010_pending_cancellation.d.ts.map +1 -0
  671. package/dist/esm/migrations/0010_pending_cancellation.js +19 -0
  672. package/dist/esm/migrations/0010_pending_cancellation.js.map +1 -0
  673. package/dist/esm/test/TestStores.d.ts +89 -0
  674. package/dist/esm/test/TestStores.d.ts.map +1 -0
  675. package/dist/esm/test/TestStores.js +103 -0
  676. package/dist/esm/test/TestStores.js.map +1 -0
  677. package/docs/README.md +113 -0
  678. package/docs/api.md +1494 -0
  679. package/docs/concepts/attempts-and-replay.md +149 -0
  680. package/docs/concepts/cache-admission.md +265 -0
  681. package/docs/concepts/call-facts.md +86 -0
  682. package/docs/concepts/durable-waits.md +175 -0
  683. package/docs/concepts/execution-facts.md +90 -0
  684. package/docs/concepts/ownership-and-fencing.md +128 -0
  685. package/docs/concepts/step-boundaries.md +148 -0
  686. package/docs/concepts/workspace-transactions.md +199 -0
  687. package/docs/event-types.md +14 -0
  688. package/docs/guides/back-up-and-restore.md +164 -0
  689. package/docs/guides/collect-unreferenced-artifacts.md +128 -0
  690. package/docs/guides/compose-a-durable-engine.md +146 -0
  691. package/docs/guides/coordinate-two-processes.md +120 -0
  692. package/docs/guides/defer-work-with-selection.md +171 -0
  693. package/docs/guides/delete-old-run-history.md +154 -0
  694. package/docs/guides/drive-a-plan.md +314 -0
  695. package/docs/guides/observe-engine-metrics.md +98 -0
  696. package/docs/guides/observe-executions.md +187 -0
  697. package/docs/guides/reclaim-runs-from-a-dead-host.md +133 -0
  698. package/docs/guides/share-a-cache-across-machines.md +134 -0
  699. package/docs/guides/testing.md +123 -0
  700. package/docs/installation.md +102 -0
  701. package/docs/quickstart.md +215 -0
  702. package/docs/troubleshooting.md +347 -0
  703. package/package.json +438 -3
  704. package/src/ArtifactGc.ts +408 -0
  705. package/src/ArtifactSync.ts +278 -0
  706. package/src/CacheSync.ts +131 -0
  707. package/src/DeferredClockFold.ts +586 -0
  708. package/src/DisasterRecovery.ts +888 -0
  709. package/src/DurableEngineState.ts +2656 -0
  710. package/src/EngineStore.ts +656 -0
  711. package/src/EngineStoreMetrics.ts +331 -0
  712. package/src/Errors.ts +28 -0
  713. package/src/EventTypes.ts +27 -0
  714. package/src/ExecutionFacts.ts +125 -0
  715. package/src/ExecutionSnapshot.ts +186 -0
  716. package/src/Inconsistency.ts +253 -0
  717. package/src/Migrations.ts +95 -0
  718. package/src/OwnerIdentity.ts +125 -0
  719. package/src/PlanInputStore.ts +292 -0
  720. package/src/PlanMergeStore.ts +330 -0
  721. package/src/PlanScheduler.ts +1806 -0
  722. package/src/Reconciliation.ts +224 -0
  723. package/src/ReplayOnly.ts +95 -0
  724. package/src/Retention.ts +214 -0
  725. package/src/RunCatalogRead.ts +27 -0
  726. package/src/RunChangeFeed.ts +125 -0
  727. package/src/RunState.ts +137 -0
  728. package/src/Selection.ts +683 -0
  729. package/src/SelectionStore.ts +353 -0
  730. package/src/StepBoundary.ts +1165 -0
  731. package/src/StepCacheFold.ts +244 -0
  732. package/src/StepSandbox.ts +110 -0
  733. package/src/WakeBus.ts +167 -0
  734. package/src/WorkspaceSandbox.ts +1604 -0
  735. package/src/index.ts +185 -0
  736. package/src/internal/ActionPersistence.ts +2687 -0
  737. package/src/internal/ArtifactRoots.ts +92 -0
  738. package/src/internal/AttemptAdmission.ts +76 -0
  739. package/src/internal/AttemptLifecycle.ts +163 -0
  740. package/src/internal/AttemptProbe.ts +90 -0
  741. package/src/internal/CacheAdmission.ts +133 -0
  742. package/src/internal/CacheAgeHistory.ts +58 -0
  743. package/src/internal/CacheAgeVerdicts.ts +61 -0
  744. package/src/internal/CacheOutputPolicy.ts +82 -0
  745. package/src/internal/CachePublication.ts +153 -0
  746. package/src/internal/CallFacts.ts +87 -0
  747. package/src/internal/CopiedRecord.ts +201 -0
  748. package/src/internal/DeferredPersistence.ts +459 -0
  749. package/src/internal/EffectRecords.ts +136 -0
  750. package/src/internal/EngineJj.ts +30 -0
  751. package/src/internal/EngineStateSchema.ts +92 -0
  752. package/src/internal/ExecutionSnapshotRead.ts +298 -0
  753. package/src/internal/ExecutionSnapshotRelations.ts +121 -0
  754. package/src/internal/ExitEncoding.ts +453 -0
  755. package/src/internal/FileBoundarySnapshot.ts +39 -0
  756. package/src/internal/FileEnumeration.ts +334 -0
  757. package/src/internal/HostReflection.ts +128 -0
  758. package/src/internal/JournalRecords.ts +396 -0
  759. package/src/internal/NodeJournal.ts +340 -0
  760. package/src/internal/Ordering.ts +14 -0
  761. package/src/internal/PlanInputs.ts +62 -0
  762. package/src/internal/PlanMerges.ts +123 -0
  763. package/src/internal/ProvenanceSlot.ts +52 -0
  764. package/src/internal/ResultEnvelope.ts +118 -0
  765. package/src/internal/RetentionOps.ts +865 -0
  766. package/src/internal/RunCatalogOps.ts +174 -0
  767. package/src/internal/RunCoordinator.ts +215 -0
  768. package/src/internal/RunDriver.ts +3152 -0
  769. package/src/internal/RunLifecycle.ts +53 -0
  770. package/src/internal/RunListing.ts +210 -0
  771. package/src/internal/RunListingError.ts +37 -0
  772. package/src/internal/RuntimeGraph.ts +253 -0
  773. package/src/internal/SandboxedExecution.ts +165 -0
  774. package/src/internal/StateTransaction.ts +71 -0
  775. package/src/internal/StepFacts.ts +36 -0
  776. package/src/internal/TypedEvents.ts +29 -0
  777. package/src/migrations/0001_initial.ts +51 -0
  778. package/src/migrations/0002_selection_store.ts +38 -0
  779. package/src/migrations/0003_plan_inputs.ts +75 -0
  780. package/src/migrations/0004_plan_environment.ts +34 -0
  781. package/src/migrations/0005_plan_merges.ts +60 -0
  782. package/src/migrations/0006_execution_listing.ts +86 -0
  783. package/src/migrations/0007_run_parent_sequence.ts +19 -0
  784. package/src/migrations/0008_deferred_consumption.ts +27 -0
  785. package/src/migrations/0009_deferred_clock_facts.ts +163 -0
  786. package/src/migrations/0010_pending_cancellation.ts +20 -0
  787. package/src/test/TestStores.ts +145 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlanScheduler.js","sourceRoot":"","sources":["../../src/PlanScheduler.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Drives a persisted plan: the node scheduler.\n *\n * `@smthrs/plan` makes the plan a value; this makes it run. The scheduler\n * walks the persisted graph, dispatches ready nodes through the same\n * `internal/ActionPersistence` seam every action uses — so the shared step\n * cache, the workspace sandbox's execute→materialize transaction, attempt\n * rows, and the fenced journal all apply unchanged — and records an\n * evaluation outcome per node.\n *\n * ## What it is, and what it is not\n *\n * Skyframe's `AbstractParallelEvaluator` is the prior art for the state\n * machine (`CHECK_DEPENDENCIES → VERIFIED_CLEAN | NEEDS_REBUILDING →\n * REBUILDING → DONE`) and `EvaluationProgressReceiver` for the outcome\n * vocabulary. Two deliberate deviations:\n *\n * 1. **No cache-invalidating node visitor.** Content addressing governs\n * reuse. Private reverse indexes propagate settled outcomes and readiness,\n * never dirty bits. Dispatch-time content measurement still decides\n * whether a recorded result can serve the node.\n * 2. **Completion-driven, without Skyframe restarts.** Skyframe atomically\n * signals reverse dependencies when one node settles. Our dependencies are\n * declared in the plan before anything runs, so one coordinator can make\n * the equivalent decision from the plan, settled state, and scheduling\n * permits: every completion is reconciled and immediately opens another\n * admission pass. Giving up the wavefront barrier also gives up its\n * trivially serialized reconciliation; draining and applying the durable\n * deviation journal after each settlement, before reevaluating downstream\n * readiness, restores that ordering without holding unrelated ready cones.\n * The coordinator is the sole writer of scheduling state, which keeps every\n * admission decision deterministic without the `DeterministicHelper` the\n * vault rejected.\n *\n * ## The three limits\n *\n * The same number must never\n * stand in for graph width, scheduler admission, and provider capacity. This\n * module owns the middle one only: `concurrency.steps` is the leaf-execution\n * cap, and `concurrency.agents` is the subset cap an agent node consumes in\n * addition. Structural width is whatever the plan says; seats belong to\n * `Agent Adapters` and are not modelled here.\n *\n * Under contention, ready work is ordered by effective priority — declared\n * `priority` plus one point per capacity-constrained admission pass. A ready\n * node gains a point exactly when a pass considers it but cannot give it the\n * required permits. Aging is what lets priority change latency without\n * permitting starvation; equal effective priorities preserve deterministic\n * plan order.\n *\n * ## Observing the world exactly once\n *\n * The torn-run rule: never re-observe the\n * world mid-run. Reads with no preceding writer are **source** inputs; their\n * digests and glob membership are durably recorded before dispatch and restored\n * on reopening. Preceding producers' outputs are measured after settlement —\n * observing our own output, not the world. Later and self-writes are not source\n * producers. New generations retain prior pins and record new observations.\n *\n * @since 0.1.0\n */\n\nimport { Sha256 } from \"@smthrs/crypto\"\nimport { FlowEngine } from \"@smthrs/engine\"\nimport type { FileBoundary } from \"@smthrs/flow/FileBoundary\"\nimport { Journal, type JournalEvent } from \"@smthrs/journal\"\nimport type { Jj } from \"@smthrs/kernel\"\nimport { Plan, Scheduling, StepKey } from \"@smthrs/plan\"\nimport { PlanStore } from \"@smthrs/plan-store\"\nimport * as FileSet from \"@smthrs/plan/FileSet\"\nimport { AttemptStore, type Ownership, type RunStore } from \"@smthrs/run-store\"\nimport type { CacheStore } from \"@smthrs/step-cache\"\nimport * as Cause from \"effect/Cause\"\nimport * as Clock from \"effect/Clock\"\nimport * as Context from \"effect/Context\"\nimport type * as Crypto from \"effect/Crypto\"\nimport * as Effect from \"effect/Effect\"\nimport * as Exit from \"effect/Exit\"\nimport * as FileSystem from \"effect/FileSystem\"\nimport * as Layer from \"effect/Layer\"\nimport * as Metric from \"effect/Metric\"\nimport * as Option from \"effect/Option\"\nimport * as Queue from \"effect/Queue\"\nimport * as Ref from \"effect/Ref\"\nimport * as Result from \"effect/Result\"\nimport * as Schema from \"effect/Schema\"\nimport * as EngineStoreMetrics from \"./EngineStoreMetrics.ts\"\nimport * as ActionPersistence from \"./internal/ActionPersistence.ts\"\nimport * as AttemptAdmission from \"./internal/AttemptAdmission.ts\"\nimport * as CacheAgeVerdicts from \"./internal/CacheAgeVerdicts.ts\"\nimport * as FileEnumeration from \"./internal/FileEnumeration.ts\"\nimport * as JournalRecords from \"./internal/JournalRecords.ts\"\nimport { compareText } from \"./internal/Ordering.ts\"\nimport * as PlanInputs from \"./internal/PlanInputs.ts\"\nimport * as PlanMerges from \"./internal/PlanMerges.ts\"\nimport * as RuntimeGraph from \"./internal/RuntimeGraph.ts\"\nimport * as PlanInputStore from \"./PlanInputStore.ts\"\nimport * as PlanMergeStore from \"./PlanMergeStore.ts\"\nimport * as Reconciliation from \"./Reconciliation.ts\"\nimport * as ReplayOnly from \"./ReplayOnly.ts\"\nimport * as Selection from \"./Selection.ts\"\nimport * as StepBoundary from \"./StepBoundary.ts\"\nimport * as WorkspaceSandbox from \"./WorkspaceSandbox.ts\"\n\n/**\n * The evaluation outcomes: Skyframe's `EvaluationState` adapted to a\n * content-addressed store, plus the selection debt.\n *\n * - `built` — the node executed (`SUCCESS_VERSION_CHANGED`).\n * - `clean` — a recorded result served it and no executor ran. This includes\n * same-run durable attempt replay for every tier, and shared-cache hits for\n * eligible sealed work (`SUCCESS_VERSION_UNCHANGED`). It does not assert\n * cross-run cache eligibility.\n * - `failed` — the node executed and failed, or reconciliation failed it.\n * - `skipped` — its cone prevented dispatch, or `stop-merge` stopped a\n * conflicted attempt in favour of a merge node. The latter has nonzero\n * attempts; skipped does not imply that its executor never ran. Skyframe\n * splits failure by version instead; a content-addressed store never serves\n * a failure from cache, so that split has no meaning here and this one does.\n * - `deferred`: a selection guess postponed this sink\n * (`docs/guides/defer-work-with-selection.md`). It never dispatched,\n * wrote no cache row, and is journaled as a debt for a later guess-free\n * pass. Distinct from `skipped` — the work was runnable, a guess postponed\n * it — and never reported as passed.\n *\n * @since 0.1.0\n * @category models\n */\nexport type Outcome = \"built\" | \"clean\" | \"failed\" | \"skipped\" | \"deferred\"\n\n/**\n * One material `Ref` input, resolved: the settled output of `from` projected\n * along `path` — for sealed work, the value whose digest the dispatch key folds.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface ResolvedInput {\n readonly from: string\n readonly path: ReadonlyArray<string>\n readonly value: unknown\n}\n\n/**\n * What the scheduler hands a node's executor.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface NodeInput {\n readonly node: Plan.PlanNode\n readonly attempt: number\n /** The measured boundary; folded into sealed keys, diagnostic context for other tiers. */\n readonly boundary: FileBoundary\n /**\n * The node's material `Ref` inputs, resolved through the same projection the\n * dispatch key digests for sealed work. Ordering (`Pending`) dependencies\n * and unprojected sibling fields are deliberately absent. This preserves\n * the consumed-data contract for every tier and prevents a sealed cache hit\n * from serving an execution that consumed different data.\n */\n readonly inputs: ReadonlyArray<ResolvedInput>\n}\n\n/**\n * The DI seam that turns a plan node into work.\n *\n * The scheduler owns identity, admission, caching, and journaling; it\n * deliberately owns nothing about what a node *means*. A flow runtime, a test,\n * or a remote host each supply their own executor.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Executor {\n readonly execute: (input: NodeInput) => Effect.Effect<unknown, unknown>\n}\n\n/**\n * Service tag for the node executor.\n *\n * @since 0.1.0\n * @category services\n */\nexport class NodeExecutor extends Context.Service<NodeExecutor, Executor>()(\"@smthrs/engine-store/NodeExecutor\") {}\n\n/**\n * Provides a plain {@link Executor} value as the {@link NodeExecutor} service.\n *\n * This is the whole wiring story for the scheduler's one open seam: a flow\n * runtime, a test double, or a remote dispatcher each become a layer by\n * passing themselves here.\n *\n * @since 0.1.0\n * @category layers\n */\nexport const layerExecutor = (executor: Executor): Layer.Layer<NodeExecutor> => Layer.succeed(NodeExecutor, executor)\n\n/**\n * How one node ended.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Settlement {\n readonly nodeId: string\n /** The plan-time key: a pure function of declarations. */\n readonly planKey: string\n /** The execution key: content-derived for sealed work; run/plan/node/declaration-scoped for other tiers. */\n readonly dispatchKey: string\n readonly outcome: Outcome\n readonly attempts: number\n readonly rebases: number\n}\n\n/**\n * What a run of a plan produced.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Report {\n readonly planId: string\n readonly digest: string\n readonly settlements: ReadonlyArray<Settlement>\n readonly results: Readonly<Record<string, unknown>>\n readonly verdicts: ReadonlyArray<{ readonly nodeId: string; readonly verdict: Reconciliation.Verdict }>\n /** Merge nodes a `stop-merge` conflict appended to the plan. */\n readonly appended: ReadonlyArray<string>\n}\n\n/**\n * Scheduler construction options.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Options {\n readonly runId: string\n readonly owner: Ownership.OwnerId\n readonly sourceId: string\n /**\n * Engine-resolved identity, copied at scheduler construction and durably\n * bound before dispatch. A changed identity cannot resume the same run.\n * Omitting it preserves existing action keys but is itself a distinct binding.\n */\n readonly environment?: StepKey.EnvironmentIdentity | undefined\n /**\n * The admission caps. Both default to unbounded, because a cap the caller\n * did not declare is not the scheduler's to invent — `aspects.ts` owns the\n * policy and narrows it. Explicit caps must be positive safe integers;\n * zero is refused rather than silently clamped or allowed to deadlock.\n */\n readonly concurrency?: Scheduling.Concurrency | undefined\n /**\n * How many times a `delay-rebase` node may re-measure and re-key against a\n * newly recorded base before reconciliation is asked. Bounded on purpose: an\n * unbounded rebase loop is a livelock with good manners.\n */\n readonly rebaseLimit?: number | undefined\n /**\n * Probabilistic selection input for this run (`Selection`). Every field is\n * optional because every default is inert: no changed paths and no beliefs\n * admit everything, so a caller that never opted in runs exactly as today.\n * `full: true` is the run-level override — every verdict is treated as\n * `Admit` and the override is journaled, the way `--fresh` ignores the\n * cache.\n */\n readonly selection?: {\n /** Changed paths the belief edges are matched against. */\n readonly changed?: ReadonlyArray<string> | undefined\n /** The belief snapshot pinned before planning. */\n readonly beliefs?: Selection.BeliefSnapshot | undefined\n /** Deferral policy; `deferBelow` defaults to zero, which defers nothing. */\n readonly policy?: Selection.Policy | undefined\n /** Force full selection: treat every verdict as `Admit`, journaled. */\n readonly full?: boolean | undefined\n } | undefined\n}\n\n/**\n * Everything driving a plan needs from the composition.\n *\n * @since 0.1.0\n * @category models\n */\nexport type Requirements =\n | PlanMergeStore.PlanMergeStore\n | AttemptStore.AttemptStore\n | CacheStore.CacheStore\n | Crypto.Crypto\n | Jj.Jj\n | Journal.Journal\n | NodeExecutor\n | PlanStore.PlanStore\n | PlanInputStore.PlanInputStore\n | RunStore.RunStore\n | StepBoundary.Service\n\n/**\n * A refusal the scheduler itself raises. A node's own failure is an outcome,\n * not one of these — the run continues and the report says `failed`.\n *\n * @since 0.1.0\n * @category errors\n */\nexport class SchedulerError extends Schema.TaggedError<SchedulerError>()(\"@smthrs/engine-store/SchedulerError\", {\n code: Schema.Literals([\n \"invalid_plan\",\n \"boundary_unavailable\",\n \"key_uncomputable\",\n \"elaboration_failed\",\n \"store_failed\"\n ]),\n message: Schema.String,\n cause: Schema.optional(Schema.Unknown),\n /** Failures while settling siblings after the primary scheduler failure. */\n cleanupErrors: Schema.optional(Schema.Array(Schema.Unknown))\n}) {}\n\n/**\n * Plan-driving operations.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Service {\n /** Persists generation 0 and journals `plan-recorded`. */\n readonly record: (\n plan: Plan.Plan\n ) => Effect.Effect<PlanStore.RecordResult, SchedulerError, PlanStore.PlanStore | Journal.Journal | Crypto.Crypto>\n /** Persists the newest generation and journals `subgraph-appended`. */\n readonly append: (\n plan: Plan.Plan\n ) => Effect.Effect<void, SchedulerError, PlanStore.PlanStore | Journal.Journal | Crypto.Crypto>\n /** Drives the plan to completion and reports every node's outcome. */\n readonly run: (plan: Plan.Plan) => Effect.Effect<Report, SchedulerError, Requirements>\n}\n\n/**\n * Service tag for the plan scheduler.\n *\n * @since 0.1.0\n * @category services\n */\nexport class PlanScheduler extends Context.Service<PlanScheduler, Service>()(\"@smthrs/engine-store/PlanScheduler\") {}\n\n/**\n * The declared digest handed to `StepBoundary.prepare` when the scheduler is\n * *asking* what a path holds rather than asserting it. Prepare measures every\n * declared read regardless of what the declaration claims, so any placeholder\n * works; a self-describing one can never be mistaken for a real digest.\n *\n * @private\n */\n/**\n * The tag a plan node dispatches, when its material names one.\n *\n * A material body is opaque to the compiler by design, so this reads it\n * defensively and answers nothing rather than guessing: a merge node, a body\n * an elaborator shaped differently, and a node whose tag is not a string all\n * carry no tag at all. @private\n */\nconst actionOf = (node: Plan.PlanNode): string | undefined => {\n const body = node.material.body\n if (typeof body !== \"object\" || body === null) return undefined\n const fields = body as Record<string, unknown>\n const named = typeof fields[\"action\"] === \"string\" ? fields[\"action\"] : fields[\"flow\"]\n return typeof named === \"string\" && named !== \"\" ? named : undefined\n}\n\n/**\n * One node of a plan, as a journal record carries it.\n *\n * The same shape the interpreter writes, so a reader folds both executors\n * with one decoder. `effects` and `key` are the plan's own; there is no\n * declaration site here, because a plan node is compiled from a draft and the\n * draft's author frame is not something the compiler keeps. @private\n */\nconst nodeSummary = (node: Plan.PlanNode) => {\n const action = actionOf(node)\n return {\n id: node.id,\n kind: node.kind,\n dependsOn: node.dependsOn,\n tier: node.material.kind,\n key: node.key,\n generation: node.generation,\n ...(action === undefined ? {} : { action })\n }\n}\n\nconst unmeasured = \"unmeasured\"\n\n/** @private */\nconst isConflict = (cause: Cause.Cause<unknown>): boolean =>\n cause.reasons.some((reason) => Cause.isFailReason(reason) && WorkspaceSandbox.isMaterializationConflict(reason.error))\n\n/** @private */\nconst DeviationPayload = Schema.Struct({\n stepKeyDigest: Schema.NonEmptyString,\n attempt: Schema.Int,\n paths: Schema.Array(Schema.String),\n diffIdentity: Schema.String\n})\n\nconst decodeDeviation = Schema.decodeUnknownOption(DeviationPayload)\n\nconst digestOf = Schema.decodeUnknownEffect(Sha256)\n\n/** @private */\ninterface DispatchStart {\n readonly dispatchKey: string\n readonly attempts: number\n readonly rebases: number\n readonly waited: number\n readonly results: ReadonlyMap<string, unknown>\n readonly inputs: ReadonlyArray<ResolvedInput>\n}\n\n/** @private */\ninterface ObservedRead {\n readonly entry: FileSet.ReadEntry\n /** Source members observed when this declaration entered the run. */\n readonly sourcePaths: ReadonlyArray<string>\n}\n\n/** @private */\ninterface DispatchProgress {\n readonly dispatchKey: string\n readonly attempts: number\n readonly rebases: number\n}\n\n/** @private */\ninterface CompletedDispatch extends DispatchProgress {\n readonly outcome: \"built\" | \"clean\"\n readonly result: unknown\n}\n\n/** @private */\ninterface FailedDispatch extends DispatchProgress {\n readonly outcome: \"failed\"\n}\n\n/** @private */\ninterface ConflictedDispatch extends DispatchProgress {\n readonly outcome: \"conflicted\"\n readonly strategy: Plan.RuntimeStrategy\n}\n\n/** @private */\ntype Dispatched = CompletedDispatch | FailedDispatch | ConflictedDispatch\n\n/** @private */\ninterface DispatchSettlementEvent {\n readonly _tag: \"DispatchSettled\"\n readonly node: Plan.PlanNode\n readonly exit: Exit.Exit<Dispatched, SchedulerError>\n}\n\n/** @private */\ntype CoordinatorEvent =\n | { readonly _tag: \"AttemptKeyed\"; readonly nodeId: string; readonly digest: string }\n | DispatchSettlementEvent\n\nconst storeFailure = (message: string) => (cause: unknown) =>\n new SchedulerError({ code: \"store_failed\", message, cause })\n\nconst nonNegativeSafeInteger = (name: string, value: number): number => {\n if (!Number.isSafeInteger(value) || value < 0) {\n throw new RangeError(`${name} must be a non-negative safe integer`)\n }\n return value\n}\n\n/**\n * Constructs a scheduler bound to one run.\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const make = (options: Options): Service => {\n const admission = AttemptAdmission.makeUnsafe()\n const cacheAgeVerdict = CacheAgeVerdicts.make(options.runId)\n const rebaseLimit = nonNegativeSafeInteger(\"rebaseLimit\", options.rebaseLimit ?? 3)\n const scheduling = Scheduling.make(options.concurrency)\n // Capture before the first async boundary. Callers can retain and mutate\n // their options, but cannot change this scheduler's identity after admission.\n const capturedEnvironment = Result.try(() =>\n Schema.decodeUnknownSync(Schema.UndefinedOr(StepKey.EnvironmentIdentity))(\n options.environment,\n { onExcessProperty: \"error\" }\n )\n )\n\n // Every scheduler record addresses the run's root lineage, so a frame can\n // reach it (`apps/site/src/content/docs/docs/concepts/time-travel.mdx`).\n const lineageId = FlowEngine.Lineage.root(options.runId)\n const source = (suffix: string) => ({ runId: options.runId, sourceId: `${options.sourceId}/${suffix}`, lineageId })\n\n /**\n * Scheduler records take the journal's durable, owner-fenced channel: a plan\n * digest binds an approval, so it may never ride the lossy queue. A zombie\n * that lost the run self-interrupts on `fence_lost`, exactly as\n * `internal/ActionPersistence` does — a scheduler that kept dispatching\n * after losing ownership is the failure mode fencing exists to prevent.\n */\n const emit = (record: JournalEvent.Input) =>\n Effect.flatMap(Journal.Journal, (journal) => journal.emitDurable(record, options.owner)).pipe(\n Effect.catch((error) =>\n error.code === \"fence_lost\"\n ? Effect.interrupt\n : Effect.fail(storeFailure(\"the scheduler could not journal a record\")(error))\n )\n )\n\n const atomically = <A, E, R>(message: string, effect: Effect.Effect<A, E, R>) =>\n Effect.flatMap(Journal.Journal, (journal) => journal.transact(effect)).pipe(\n Effect.mapError((error) => error instanceof SchedulerError ? error : storeFailure(message)(error))\n )\n\n const verifyPlan = (candidate: Plan.Plan) =>\n Plan.verify(candidate).pipe(\n Effect.mapError((cause) =>\n new SchedulerError({ code: \"invalid_plan\", message: \"the scheduler requires a verified plan\", cause })\n )\n )\n\n const record: Service[\"record\"] = Effect.fn(\"PlanScheduler.record\")((candidate) =>\n Effect.gen(function*() {\n const plan = yield* verifyPlan(candidate)\n yield* Effect.annotateCurrentSpan({\n runId: options.runId,\n planId: plan.planId,\n digest: plan.digest,\n generation: plan.generation\n })\n const store = yield* PlanStore.PlanStore\n const now = yield* Clock.currentTimeMillis.pipe(Effect.map(Math.floor))\n const outcome = yield* atomically(\n \"could not atomically record the plan\",\n Effect.gen(function*() {\n const recorded = yield* store.record(plan, now).pipe(\n Effect.mapError(storeFailure(\"could not record the plan\"))\n )\n yield* emit(JournalRecords.planRecorded(source(`plan/${plan.planId}`), {\n planId: plan.planId,\n flow: plan.flow,\n digest: plan.digest,\n baseDigest: plan.baseDigest,\n generation: plan.generation,\n nodes: plan.nodes.length,\n outcome: recorded._tag,\n // The graph itself, beside the count it has always carried. A\n // reader that only knows how MANY nodes ran cannot show which\n // ones, and the count stays because the CLI's run progress reads\n // it as a number.\n graph: { nodes: plan.nodes.map(nodeSummary) }\n }))\n return recorded\n })\n )\n yield* Effect.annotateCurrentSpan({ outcome: outcome._tag })\n return outcome\n })\n )\n\n const append: Service[\"append\"] = Effect.fn(\"PlanScheduler.append\")((candidate) =>\n Effect.gen(function*() {\n const plan = yield* verifyPlan(candidate)\n yield* Effect.annotateCurrentSpan({\n runId: options.runId,\n planId: plan.planId,\n digest: plan.digest,\n generation: plan.generation\n })\n const store = yield* PlanStore.PlanStore\n yield* atomically(\n \"could not atomically append the subgraph\",\n Effect.gen(function*() {\n yield* store.append(plan).pipe(Effect.mapError(storeFailure(\"could not append the subgraph\")))\n yield* emit(JournalRecords.subgraphAppended(source(`plan/${plan.planId}/${plan.generation}`), {\n planId: plan.planId,\n digest: plan.digest,\n baseDigest: plan.baseDigest,\n generation: plan.generation,\n nodeIds: Plan.generationNodes(plan).map((node) => node.id),\n graph: { nodes: Plan.generationNodes(plan).map(nodeSummary) }\n }))\n })\n )\n yield* Effect.annotateCurrentSpan({ outcome: \"appended\" })\n })\n )\n\n const run: Service[\"run\"] = Effect.fn(\"PlanScheduler.run\")((candidate) =>\n Effect.gen(function*() {\n if (Result.isFailure(capturedEnvironment)) {\n return yield* Effect.fail(\n new SchedulerError({\n code: \"key_uncomputable\",\n message: \"the scheduler requires a valid execution environment identity\"\n })\n )\n }\n const environment = capturedEnvironment.success\n const environmentDigest = yield* StepKey.environmentIdentity(environment).pipe(Effect.mapError((cause) =>\n new SchedulerError({ code: \"key_uncomputable\", message: \"could not bind the execution environment\", cause })\n ))\n const initial = yield* verifyPlan(candidate)\n yield* Effect.annotateCurrentSpan({\n runId: options.runId,\n planId: initial.planId,\n digest: initial.digest,\n nodes: initial.nodes.length\n })\n const boundaries = yield* StepBoundary.StepBoundary\n const fileSystem = yield* Effect.serviceOption(FileSystem.FileSystem)\n const executor = yield* NodeExecutor\n const journal = yield* Journal.Journal\n const inputStore = yield* PlanInputStore.PlanInputStore\n const mergeStore = yield* PlanMergeStore.PlanMergeStore\n const mergeIdentity = {\n runId: options.runId,\n planId: initial.planId,\n baseDigest: initial.baseDigest,\n environmentDigest\n }\n const mergeFailure = (cause: PlanMergeStore.PlanMergeError) =>\n cause.code === \"fence_lost\"\n ? Effect.interrupt :\n Effect.fail(storeFailure(\"could not recover or persist the plan's merge decisions\")(cause))\n const recoveredMerges = yield* mergeStore.list(mergeIdentity, options.owner).pipe(Effect.catch(mergeFailure))\n const reconciler = Option.getOrElse(\n yield* Effect.serviceOption(Reconciliation.Reconciliation),\n Reconciliation.makeDefault\n )\n const selector = Option.getOrElse(\n yield* Effect.serviceOption(Selection.Selection),\n Selection.makeNoop\n )\n // A verifier composes the scheduler replay-only, as it does the engine:\n // a recorded node replays and a node that would run its body stops.\n const replayOnly = Option.getOrUndefined(yield* Effect.serviceOption(ReplayOnly.ReplayOnly))\n yield* Effect.logDebug(\"scheduler run started\", {\n digest: initial.digest,\n nodes: initial.nodes.length\n })\n\n // Only a coordinator failure makes interrupted siblings terminal here.\n // Parking, external cancellation and fence loss retain their established\n // recovery semantics. The flag is set before the child scope closes.\n let abortedForFailure = false\n const cleanupErrors: Array<unknown> = []\n let plan = yield* PlanMerges.recover(initial, recoveredMerges).pipe(Effect.catch(mergeFailure))\n const graph = RuntimeGraph.make(plan.nodes)\n const states = graph.states\n const results = new Map<string, unknown>()\n const digestMemo = StepKey.makeDigestMemo()\n const verdicts: Array<{ nodeId: string; verdict: Reconciliation.Verdict }> = []\n const appended: Array<string> = []\n const digestToNode = new Map<string, Array<string>>()\n const deviationSignatures = new Map<string, string>()\n const writers = new Map<string, string>()\n const writerEntries: Array<{ readonly entry: FileSet.Entry; readonly nodeId: string }> = []\n const nodesById = new Map<string, Plan.PlanNode>()\n let cursor: number | undefined = undefined\n const events = yield* Queue.unbounded<CoordinatorEvent>()\n\n const stateOf = (node: Plan.PlanNode): RuntimeGraph.NodeState =>\n states.get(node.id)!\n\n /**\n * Reconciliation's first declared owner of each path. Read version\n * selection is different: only a reader's predecessors produce its\n * inputs, never the reader itself or an explicitly later writer.\n */\n const indexWriters = (nodes: ReadonlyArray<Plan.PlanNode>) => {\n for (const node of nodes) {\n nodesById.set(node.id, node)\n for (const entry of [...FileSet.expand(node.effects.writes), ...node.effects.removes ?? []]) {\n writerEntries.push({ entry, nodeId: node.id })\n if (typeof entry === \"string\" && !writers.has(entry)) {\n writers.set(entry, node.id)\n }\n }\n }\n }\n indexWriters(plan.nodes)\n\n const writerFor = (path: string): string | undefined =>\n writers.get(path) ?? writerEntries.find(({ entry }) => FileSet.overlaps(entry, path))?.nodeId\n\n // One bounded traversal per observation/dispatch, not an eager matrix\n // of every node's transitive ancestors. Shared ancestors are visited\n // once, and the temporary set is released after this reader's work.\n const writerScopesBefore = (node: Plan.PlanNode): ReadonlyArray<FileSet.Entry> => {\n const scopes: Array<FileSet.Entry> = []\n graph.visitAncestors(node, (predecessor) => {\n scopes.push(...FileSet.expand(predecessor.effects.writes), ...predecessor.effects.removes ?? [])\n })\n return scopes\n }\n\n const expandReads = (entries: ReadonlyArray<FileSet.ReadEntry>, what: string) =>\n Effect.gen(function*() {\n const expanded: Array<{ readonly entry: FileSet.ReadEntry; readonly paths: ReadonlyArray<string> }> = []\n for (const entry of entries) {\n if (typeof entry === \"string\") {\n expanded.push({ entry, paths: [entry] })\n continue\n }\n if (Option.isNone(fileSystem)) {\n return yield* Effect.fail(\n new SchedulerError({\n code: \"boundary_unavailable\",\n message: `the host cannot expand ${what} without a FileSystem`\n })\n )\n }\n // Through `FileEnumeration`, never the host `glob`: host results\n // are absolute under the kernel FileSystem and skip dotfiles, so\n // a workspace-relative pattern silently expanded to nothing.\n const matches = yield* FileEnumeration.expandGlob(fileSystem.value, entry).pipe(\n Effect.mapError((cause) =>\n new SchedulerError({\n code: \"boundary_unavailable\",\n message: `the host could not expand ${what}`,\n cause\n })\n )\n )\n expanded.push({ entry, paths: matches })\n }\n return expanded\n })\n\n const prepare = (paths: ReadonlyArray<string>, what: string) =>\n boundaries.prepare({\n readSet: [...new Set(paths)].sort().map((path) => ({ path, digest: unmeasured })),\n writeSet: [],\n boundaryMode: \"hard\"\n }).pipe(\n Effect.mapError((cause) =>\n new SchedulerError({\n code: \"boundary_unavailable\",\n message: `the host could not measure ${what}`,\n cause\n })\n )\n )\n\n const expandProducedMatches = (\n glob: FileSet.Glob,\n writerScopes: ReadonlyArray<FileSet.Entry>,\n what: string\n ) =>\n Effect.gen(function*() {\n const scopes = writerScopes.filter((entry) => FileSet.overlaps(glob, entry))\n if (scopes.length === 0) return []\n if (Option.isNone(fileSystem)) {\n return yield* Effect.fail(\n new SchedulerError({\n code: \"boundary_unavailable\",\n message: `the host cannot expand ${what} without a FileSystem`\n })\n )\n }\n const paths = new Set<string>()\n for (const entry of scopes) {\n if (typeof entry === \"string\") {\n // One host call: `stat` reports both whether the producer's\n // output is there yet and what kind of thing it is, so the\n // `exists` probe that used to precede it only doubled the cost.\n // On the confined host each call is one CPython fork\n // (`@smthrs/platform-node/AtomicFileSystem`).\n const info = yield* fileSystem.value.stat(entry).pipe(\n Effect.catchReason(\"PlatformError\", \"NotFound\", () => Effect.succeed(undefined)),\n Effect.mapError((cause) =>\n new SchedulerError({\n code: \"boundary_unavailable\",\n message: `the host could not expand ${what}`,\n cause\n })\n )\n )\n // Exact writer declarations name files; directory outputs use\n // `TreeArtifact`, and only files are members of a read glob. A\n // producer that has not written yet is simply not a candidate.\n if (info?.type === \"File\") paths.add(entry)\n continue\n }\n const matches = FileSet.isGlob(entry)\n ? yield* FileEnumeration.expandGlob(fileSystem.value, entry).pipe(\n Effect.mapError((cause) =>\n new SchedulerError({\n code: \"boundary_unavailable\",\n message: `the host could not expand ${what}`,\n cause\n })\n )\n )\n : yield* FileEnumeration.filesUnder(fileSystem.value, entry.path).pipe(\n Effect.mapError((cause) =>\n new SchedulerError({\n code: \"boundary_unavailable\",\n message: `the host could not expand ${what}`,\n cause\n })\n )\n )\n for (const path of matches) {\n if (FileSet.matchesGlob(glob, path)) paths.add(path)\n }\n }\n return [...paths].sort()\n })\n\n // A read declaration is observed only when its node enters this run:\n // generation zero here, or one newly appended generation below. Paths\n // already pinned by an earlier declaration reuse that digest; measuring\n // them again would tear the run. A new source path is measured now,\n // which is its first observation in this run.\n const pinned = new Map<string, string>()\n const observedReads = new Map<string, ReadonlyArray<ObservedRead>>()\n const inputFailure = (cause: PlanInputStore.PlanInputError) =>\n cause.code === \"fence_lost\"\n ? Effect.interrupt\n : Effect.fail(storeFailure(\"could not recover or persist the plan's source observations\")(cause))\n const observeReads = (\n nodes: ReadonlyArray<Plan.PlanNode>,\n generation: number,\n what: string,\n commit?: (\n snapshot: PlanInputStore.Snapshot\n ) => Effect.Effect<\n PlanInputStore.Snapshot,\n SchedulerError,\n PlanStore.PlanStore | Journal.Journal | Crypto.Crypto\n >\n ) =>\n Effect.gen(function*() {\n const address = {\n runId: options.runId,\n planId: initial.planId,\n baseDigest: initial.baseDigest,\n environmentDigest,\n generation\n }\n const stored = yield* inputStore.get(address, options.owner).pipe(Effect.catch(inputFailure))\n let snapshot: PlanInputStore.Snapshot\n if (Option.isSome(stored)) {\n snapshot = stored.value\n } else {\n const unpinned = new Set<string>()\n const observedNodes: Array<PlanInputStore.Snapshot[\"nodes\"][number]> = []\n for (const node of nodes) {\n const observed: Array<ObservedRead> = []\n const reads = FileSet.expandReads(node.effects.reads)\n const writerScopes = reads.length === 0 ? [] : writerScopesBefore(node)\n for (const { entry, paths } of yield* expandReads(reads, what)) {\n const sourcePaths = paths.filter((path) => !writerScopes.some((scope) => FileSet.overlaps(scope, path)))\n for (const path of sourcePaths) {\n if (!pinned.has(path)) unpinned.add(path)\n }\n observed.push({ entry, sourcePaths })\n }\n observedNodes.push({ id: node.id, key: node.key, reads: observed })\n }\n const pins = unpinned.size === 0 ? [] : (yield* prepare([...unpinned], what)).readSnapshot\n const measured: PlanInputStore.Snapshot = {\n version: 1,\n generation,\n nodes: observedNodes,\n pins\n }\n yield* PlanInputs.validate(measured, nodes, pinned, writerScopesBefore).pipe(Effect.catch(inputFailure))\n snapshot = commit === undefined\n ? yield* inputStore.record(address, measured, options.owner).pipe(Effect.catch(inputFailure))\n : measured\n }\n if (commit !== undefined) snapshot = yield* commit(snapshot)\n // Do not publish speculative measurements. A competing observation\n // wins durably, and every recovered declaration must still describe\n // this verified plan before it can influence an execution key.\n const nextPins = yield* PlanInputs.validate(snapshot, nodes, pinned, writerScopesBefore).pipe(\n Effect.catch(inputFailure)\n )\n for (const node of snapshot.nodes) observedReads.set(node.id, node.reads)\n for (const [path, digest] of nextPins) pinned.set(path, digest)\n })\n\n // Recover each generation before any dispatch. Existing observations\n // never enumerate or measure the host again, even after process restart.\n for (let generation = 0; generation <= plan.generation; generation++) {\n yield* observeReads(\n plan.nodes.filter((node) => node.generation === generation),\n generation,\n \"the plan's source inputs\"\n )\n }\n // A merge intent is authoritative scheduler state, not a failed-action\n // cache entry or a convention inferred from an arbitrary node's body.\n for (const { intent } of recoveredMerges) {\n const state = stateOf(nodesById.get(intent.nodeId)!)\n graph.stage(intent.nodeId, \"skipped\")\n state.dispatchKey = intent.dispatchKey\n state.attempts = intent.attempts\n state.rebases = intent.rebases\n }\n graph.reconcile()\n\n const measure = (node: Plan.PlanNode) =>\n Effect.gen(function*() {\n const measured = new Map<string, string>()\n const produced = new Set<string>()\n const observed = observedReads.get(node.id)!\n const writerScopes = observed.length === 0 ? [] : writerScopesBefore(node)\n for (const read of observed) {\n if (typeof read.entry === \"string\") {\n if (read.sourcePaths.length === 0) produced.add(read.entry)\n else measured.set(read.entry, pinned.get(read.entry)!)\n continue\n }\n for (const path of read.sourcePaths) measured.set(path, pinned.get(path)!)\n // A glob's source membership is frozen above. Dispatch may only\n // add paths derived from preceding writer scopes. Neither an\n // unproduced arrival nor a future writer widens the source world.\n for (const path of yield* expandProducedMatches(read.entry, writerScopes, `the inputs of ${node.id}`)) {\n produced.add(path)\n }\n }\n if (produced.size > 0) {\n // Produced paths are our own outputs, so measuring them once their\n // producer has settled is not re-observing the world.\n const prepared = yield* prepare([...produced], `the inputs of ${node.id}`)\n for (const entry of prepared.readSnapshot) measured.set(entry.path, entry.digest)\n }\n return {\n readSet: [...measured].sort(([left], [right]) => compareText(left, right)).map(([path, digest]) => ({\n path,\n digest\n })),\n writeSet: FileSet.expand(node.effects.writes),\n // Declared removals travel with the boundary: they are what makes\n // an absent declared output legitimate rather than a defect.\n ...(node.effects.removes === undefined ? {} : { removes: node.effects.removes }),\n boundaryMode: node.effects.boundaryMode\n } satisfies FileBoundary\n })\n\n /**\n * Non-sealed work uses a stable run-local structural scope: it replays\n * durable attempts but never reuses an effect from another invocation.\n * For sealed work:\n *\n * The key a dispatch is recorded under: the node's own declaration\n * folded with the CONTENT of everything it consumes — the digests the\n * host just measured for its files, and the digest of each upstream\n * node's settled output value.\n *\n * Not the plan key. That key folds every upstream key transitively, so\n * an edit anywhere upstream re-ran everything below it even when the\n * edited node's output value was byte-identical. Bazel's\n * `ActionCacheChecker` stops invalidation at unchanged content, and\n * `StepKey.dispatchIdentity` is how this does.\n *\n * The plan key alone could never have been it either: two runs whose\n * input files differ declare the same graph, and serving one the other's\n * result is exactly the staleness the boundary exists to prevent.\n */\n const dispatchKeyFor = (\n node: Plan.PlanNode,\n boundary: FileBoundary,\n settledResults: ReadonlyMap<string, unknown>\n ) =>\n (node.material.kind === \"sealed\" ?\n StepKey.dispatchIdentity({\n material: node.material,\n results: Object.fromEntries(\n node.material.inputs.flatMap((input) =>\n input._tag === \"Ref\" ? [[input.from, settledResults.get(input.from)] as const] : []\n )\n ),\n digestMemo,\n environment,\n hermetic: {\n ...boundary,\n readSet: StepBoundary.exactReads(boundary)\n }\n }) :\n StepKey.ordinal({\n runId: options.runId,\n // Stable structural scope, never admission order. The declaration\n // fingerprint prevents a changed plan from reusing an old attempt.\n parentScope: JSON.stringify([\"plan-node/v1\", initial.planId, node.id, node.key]),\n ordinal: 0,\n tier: node.material.kind\n })).pipe(\n /* v8 ignore next 3 -- verified plans have serializable material, admission resolves every dependency, and successful upstream values already crossed durable serialization; key derivation still exposes its honest failure channel */\n Effect.mapError((cause) =>\n new SchedulerError({ code: \"key_uncomputable\", message: `could not key ${node.id}`, cause })\n )\n )\n\n const runtimeStrategyOf = (node: Plan.PlanNode): Plan.RuntimeStrategy =>\n node.conflicts.some((conflict) => conflict.runtime === \"stop-merge\") ? \"stop-merge\" : node.runtime\n\n const markSettled = (node: Plan.PlanNode, outcome: Outcome): void => {\n graph.stage(node.id, outcome)\n }\n\n const emitSettlement = (node: Plan.PlanNode, sourceSeq?: number) =>\n Effect.gen(function*() {\n const state = stateOf(node)\n const action = actionOf(node)\n yield* emit(JournalRecords.nodeSettled({ ...source(`node/${node.id}/settled`), sourceSeq }, {\n planId: plan.planId,\n nodeId: node.id,\n planKey: node.key,\n dispatchKey: state.dispatchKey,\n outcome: state.outcome,\n attempts: state.attempts,\n rebases: state.rebases,\n ...(action === undefined ? {} : { action })\n }))\n yield* Metric.update(EngineStoreMetrics.node[state.outcome], 1)\n })\n\n const settle = (node: Plan.PlanNode, outcome: Outcome) => {\n markSettled(node, outcome)\n graph.reconcile()\n return emitSettlement(node)\n }\n\n const applyVerdict = (nodeId: string, verdict: Reconciliation.Verdict, trigger: string) =>\n Effect.gen(function*() {\n verdicts.push({ nodeId, verdict })\n yield* emit(JournalRecords.nodeReconciled(source(`node/${nodeId}/reconciled/${verdicts.length}`), {\n planId: plan.planId,\n nodeId,\n trigger,\n verdict\n }))\n if (verdict._tag === \"Fail\") {\n // The scheduler chooses the node it asks about, so a verdict always\n // names one it is tracking.\n graph.stage(nodeId, \"failed\")\n results.delete(nodeId)\n return\n }\n if (verdict._tag === \"Reorder\") {\n // Re-plan with the discovered dependency made explicit. It binds\n // work that has not dispatched yet — the deviating node already\n // ran, and rewriting history is what append-only forbids.\n // Persisting the edge is the caller's next elaboration; the\n // verdict is journaled so it can be.\n graph.reorder(nodeId, verdict.dependsOn)\n }\n // `FactorOut` needs no graph surgery: two identical extracted steps\n // collapse to one key by themselves, so the second is a `clean`.\n })\n\n const dispatch: (\n node: Plan.PlanNode,\n start: DispatchStart\n ) => Effect.Effect<Dispatched, SchedulerError, Requirements> = Effect.fn(\n \"PlanScheduler.dispatch\"\n )(function*(node: Plan.PlanNode, start: DispatchStart) {\n return yield* Effect.gen(function*() {\n yield* Effect.annotateCurrentSpan({\n runId: options.runId,\n planId: plan.planId,\n nodeId: node.id,\n kind: node.kind,\n planKey: node.key\n })\n // Attempt bookkeeping is local to this fiber. The coordinator owns\n // the durable scheduler state and applies this progress only when it\n // processes the terminal event.\n let dispatchKey = start.dispatchKey\n let attempts = start.attempts\n let rebases = start.rebases\n while (true) {\n const boundary = yield* measure(node)\n const measuredKey = yield* dispatchKeyFor(node, boundary, start.results)\n if (dispatchKey !== \"\" && dispatchKey !== measuredKey) {\n yield* emit(JournalRecords.nodeInvalidated(source(`node/${node.id}/${attempts}/invalidated`), {\n planId: plan.planId,\n nodeId: node.id,\n planKey: node.key,\n from: dispatchKey,\n to: measuredKey,\n reason: \"measured-inputs-changed\"\n }))\n }\n dispatchKey = measuredKey\n attempts = attempts + 1\n yield* Effect.annotateCurrentSpan({ dispatchKey, attempt: attempts })\n const action = actionOf(node)\n yield* emit(JournalRecords.nodeScheduled(source(`node/${node.id}/${attempts}`), {\n planId: plan.planId,\n nodeId: node.id,\n kind: node.kind,\n planKey: node.key,\n dispatchKey,\n attempt: attempts,\n priority: node.priority,\n waited: start.waited,\n ...(action === undefined ? {} : { action })\n }))\n const dispatchDigest = yield* Effect.orDie(digestOf(dispatchKey))\n yield* Queue.offer(events, { _tag: \"AttemptKeyed\", nodeId: node.id, digest: dispatchDigest })\n const ran = yield* Ref.make(false)\n const exit = yield* ActionPersistence.make({\n runId: options.runId,\n owner: options.owner,\n admission,\n cacheAgeVerdict,\n replayOnly,\n sourceId: `${options.sourceId}/node/${node.id}`,\n execute: () =>\n Ref.set(ran, true).pipe(\n Effect.andThen(executor.execute({ node, attempt: attempts, boundary, inputs: start.inputs }))\n )\n })({\n action: {},\n attempt: attempts,\n key: dispatchKey,\n tier: node.material.kind,\n nondeterministic: node.material.nondeterministic,\n metadata: boundary\n }).pipe(\n Effect.onInterrupt(() =>\n abortedForFailure\n ? atomically(\n \"could not settle a sibling aborted by scheduler failure\",\n Effect.gen(function*() {\n const store = yield* AttemptStore.AttemptStore\n const finishedAtMs = yield* Clock.currentTimeMillis.pipe(Effect.map(Math.floor))\n const identity = { runId: options.runId, stepKeyDigest: dispatchDigest, attempt: attempts }\n const finished = yield* store.finish({\n ...identity,\n state: \"failed\",\n finishedAtMs,\n error: { code: \"scheduler_aborted\", message: \"A scheduler failure interrupted this attempt\" }\n }, options.owner)\n // A terminal attempt or a replacement owner already decides\n // the row. Never overwrite it or emit a contradictory fact.\n if (finished._tag === \"Finished\") {\n yield* emit(JournalRecords.attemptFinished(source(`node/${node.id}/${attempts}/aborted`), {\n ...identity,\n state: \"failed\",\n reason: \"scheduler_aborted\"\n }))\n }\n })\n ).pipe(Effect.catch((cause) =>\n Effect.sync(() => {\n cleanupErrors.push(cause)\n })\n ))\n : Effect.void\n ),\n Effect.exit\n )\n if (Exit.isSuccess(exit)) {\n return {\n outcome: (yield* Ref.get(ran)) ? \"built\" : \"clean\",\n result: exit.value,\n dispatchKey,\n attempts,\n rebases\n } as const\n }\n // Losing a fence self-interrupts `ActionPersistence`. An\n // interrupted dispatch is the run losing ownership, never a node\n // failure that the scheduler may report and continue past.\n if (Cause.hasInterrupts(exit.cause)) return yield* Effect.interrupt\n // The generic executor supplies no irreversible idempotency or\n // reconciliation contract. A conflict is not proof the effect\n // never happened; neither a retry nor a freshly keyed merge may\n // blindly execute more work after that uncertain result.\n if (!isConflict(exit.cause) || node.material.kind === \"irreversible\") {\n return { outcome: \"failed\", dispatchKey, attempts, rebases } as const\n }\n const strategy = runtimeStrategyOf(node)\n if (strategy === \"delay-rebase\" && rebases < rebaseLimit) {\n // Hold the dependents — they are not ready while this node is in\n // flight — and re-execute against the newly recorded base. The\n // next turn of the loop re-measures, which re-keys, which is a\n // new attempt rather than a retry of the old identity.\n rebases = rebases + 1\n continue\n }\n return { outcome: \"conflicted\", strategy, dispatchKey, attempts, rebases } as const\n }\n }).pipe(\n Effect.tap((result) => Effect.annotateCurrentSpan({ outcome: result.outcome }))\n )\n })\n\n /**\n * `stop-merge`: the losing action is stopped and both lanes are routed\n * through an explicit merge node appended to the SAME plan, as an\n * ordinary elaboration. The merge critical section uses this module's\n * restart-or-fail landing contract, so the merge node carries no rebase\n * budget of its own: it lands, or the run has a failed node. There is no\n * worktree-lane surface; that design was removed.\n */\n const appendMerge = (intent: PlanMergeStore.Intent) =>\n Effect.gen(function*() {\n const node = yield* PlanMerges.validateIntent(plan, intent).pipe(Effect.catch(mergeFailure))\n const winners = intent.peers.filter((id) => results.has(id))\n const mergeId = PlanMerges.allocateId(plan, node.id)\n const parentDigest = plan.digest\n const grown = yield* Plan.append(plan, [PlanMerges.draft(node, mergeId, winners)]).pipe(\n Effect.mapError((cause) =>\n new SchedulerError({\n code: \"elaboration_failed\",\n message: `could not append the merge node for ${node.id}`,\n cause\n })\n )\n )\n // `appendMerge` copies the stopped node's effects byte-for-byte, so\n // re-indexing adds no new writer coverage and cannot turn an\n // already-pinned source path into a producer. The new generation's\n // read declarations have not themselves been observed, however:\n // expand them once now and pin only source paths this run has never\n // measured. Existing pins are always reused.\n yield* observeReads(\n Plan.generationNodes(grown),\n grown.generation,\n `generation ${grown.generation}'s source inputs`,\n (snapshot) =>\n atomically(\n \"could not atomically commit the merge extension\",\n Effect.gen(function*() {\n const recorded = yield* inputStore.record(\n { ...mergeIdentity, generation: grown.generation },\n snapshot,\n options.owner\n )\n .pipe(Effect.catch(inputFailure))\n yield* append(grown)\n yield* mergeStore.complete(mergeIdentity, intent.nodeId, {\n version: 1,\n generation: grown.generation,\n parentDigest,\n planDigest: grown.digest,\n mergeId,\n mergeKey: Plan.generationNodes(grown)[0]!.key,\n winners\n }, options.owner).pipe(Effect.catch(mergeFailure))\n return recorded\n })\n )\n )\n // No asynchronous boundary may expose only part of this admission.\n // Frozen generations preserve the indexed prefix and its state.\n const suffix = Plan.generationNodes(grown)\n graph.append(suffix)\n plan = grown\n indexWriters(suffix)\n appended.push(mergeId)\n })\n\n const pendingSettlements: Array<DispatchSettlementEvent> = []\n const registerAttempt = (event: Extract<CoordinatorEvent, { readonly _tag: \"AttemptKeyed\" }>) => {\n const dispatchedUnder = digestToNode.get(event.digest)\n if (dispatchedUnder === undefined) {\n digestToNode.set(event.digest, [event.nodeId])\n } else if (!dispatchedUnder.includes(event.nodeId)) {\n digestToNode.set(event.digest, [...dispatchedUnder, event.nodeId])\n }\n }\n /**\n * Absorbs every report already offered without processing another node's\n * settlement. Attempt-key reports update attribution state immediately;\n * terminal reports stay ordered in `pendingSettlements` for the one-at-a-\n * time coordinator. A deviation can appear in a journal page only after\n * its attempt-key report was offered, so calling this after each page\n * closes the journal/queue observation race without a shared mutable map.\n */\n const drainReportedEvents = Effect.gen(function*() {\n while (true) {\n const next = yield* Queue.poll(events)\n if (Option.isNone(next)) return\n if (next.value._tag === \"AttemptKeyed\") registerAttempt(next.value)\n else pendingSettlements.push(next.value)\n }\n })\n\n const nextSettlement = Effect.gen(function*() {\n const pending = pendingSettlements.shift()\n if (pending !== undefined) return pending\n while (true) {\n const event = yield* Queue.take(events)\n if (event._tag === \"DispatchSettled\") return event\n registerAttempt(event)\n }\n })\n\n /**\n * The first consumer `flows.engine.expected-set-deviation` has ever had.\n * The events are read from the journal rather than from the attempt row\n * on purpose: a deviation is a durable, replayable fact, and consuming\n * the fact keeps this seam usable by anything else that reads the\n * journal.\n *\n * Two properties the drain owes the reconciler, both of them about not\n * letting arrival order decide a verdict:\n *\n * 1. **Attribute the whole page before judging any of it.** Deviating on\n * the same paths is a *symmetric* fact — two steps that both ran\n * `npm install` — so registering each signature as the entry was\n * judged answered the same situation two different ways: the first\n * node saw no peer and was failed, and only the second was factored\n * out. Every deviation on the page is attributed first, so both sides\n * of a pair see each other.\n * 2. **Drain the journal, not one page of it.** Concurrent dispatches can\n * journal more records than one page holds, and the final completion\n * is the one that matters: nothing follows it to pick up what a single\n * page left behind, so a deviation past the cursor would never reach\n * the seam.\n */\n const pendingDeviations: Array<{\n readonly nodeId: string\n readonly signature: string\n readonly payload: typeof DeviationPayload.Type\n }> = []\n const drainDeviations = Effect.gen(function*() {\n let hasMore = true\n while (hasMore) {\n const page = yield* journal.entries({\n runId: options.runId as JournalEvent.RunId,\n ...(cursor === undefined ? {} : { after: cursor as JournalEvent.Seq }),\n limit: 512\n }).pipe(Effect.mapError(storeFailure(\"could not read the run's journal\")))\n // Every deviation in this page causally follows its attempt-key\n // report. Absorb those reports now, after the journal read, so even\n // an in-flight sibling can be attributed without dispatch fibers\n // mutating coordinator state.\n yield* drainReportedEvents\n const attributed: Array<{ nodeId: string; signature: string; payload: typeof DeviationPayload.Type }> = []\n for (const entry of page.entries) {\n cursor = entry.seq\n if (entry.eventType !== \"flows.engine.expected-set-deviation\") continue\n const payload = decodeDeviation(entry.payload)\n if (Option.isNone(payload)) continue\n const nodeIds = digestToNode.get(payload.value.stepKeyDigest)\n if (nodeIds === undefined) continue\n // The attempt belongs to an executing node by construction. If\n // its built settlement is absent from current bookkeeping — the\n // record arrived first, or is being durably replayed into an\n // all-clean invocation — preserve first dispatch order.\n const nodeId = nodeIds.find((candidate) => states.get(candidate)!.outcome === \"built\") ?? nodeIds[0]!\n const signature = JSON.stringify([\n \"expected-set-deviation/v1\",\n [...new Set(payload.value.paths)].sort(compareText)\n ])\n deviationSignatures.set(nodeId, signature)\n attributed.push({ nodeId, signature, payload: payload.value })\n }\n pendingDeviations.push(...attributed)\n for (let index = 0; index < pendingDeviations.length;) {\n const { nodeId, payload, signature } = pendingDeviations[index]!\n // A concurrent dispatch can durably journal its deviation before\n // its terminal event reaches the head of the coordinator queue.\n // Its signature participates in symmetric attribution now, but\n // its verdict waits until that node's settlement is processed.\n if (states.get(nodeId)?.status !== \"settled\") {\n index = index + 1\n continue\n }\n const alsoDeviatedBy = [...deviationSignatures.entries()]\n .filter(([other, otherSignature]) => other !== nodeId && otherSignature === signature)\n .map(([other]) => other)\n // Null prototype: a reconciler's lookup of a path named `toString` must miss.\n const declaredBy: Record<string, string> = Object.assign(\n Object.create(null),\n Object.fromEntries(\n payload.paths.flatMap((path) => {\n const owner = writerFor(path)\n return owner === undefined ? [] : [[path, owner] as const]\n })\n )\n )\n const verdict = yield* reconciler.onDeviation({\n nodeId,\n keyDigest: payload.stepKeyDigest,\n attempt: payload.attempt,\n paths: payload.paths,\n diffIdentity: payload.diffIdentity,\n declaredBy,\n alsoDeviatedBy\n })\n yield* applyVerdict(nodeId, verdict, \"deviation\")\n pendingDeviations.splice(index, 1)\n }\n hasMore = page.hasMore\n }\n })\n\n /**\n * The selection consult, once per run, against the initial plan and the\n * pinned belief snapshot (`docs/guides/defer-work-with-selection.md`). Only sinks,\n * nodes nothing in the plan depends on,\n * are offered, because deferring a node something consumes would block\n * or corrupt its consumers. A verdict may postpone or propose, never\n * remove: `Admit` is a no-op, a `Defer` marks the sink for the loop\n * below, a `Propose` is journaled and nothing more (v1 never\n * auto-appends), and a Defer naming a non-sink — or a Propose naming\n * anything the plan already accounts for, its flow included — is\n * ignored and journaled as an inconsistency observation, against the\n * same `present` set the layer was shown. The `full` override skips\n * the consult entirely: nothing is deferred and nothing is proposed\n * under it, and the override record is what makes that visible.\n * Elaboration cannot\n * invalidate the marks: an appended merge node depends only on nodes\n * that produced results, and a deferred node never executes, so a\n * deferred sink can never gain a dependent mid-run.\n */\n const deferrals = new Map<string, { edge: Selection.SuspectedEdge; likelihood: number }>()\n if (options.selection?.full === true) {\n yield* emit(JournalRecords.selectionOverridden(source(\"selection/override\"), {\n planId: plan.planId,\n mode: \"full\"\n }))\n } else {\n const dependedOn = new Set(plan.nodes.flatMap((node) => node.dependsOn))\n const sinks = plan.nodes.filter((node) => !dependedOn.has(node.id))\n const present = new Set([plan.flow, ...plan.nodes.map((node) => node.id)])\n const sinkIds = new Set(sinks.map((node) => node.id))\n const selected = yield* selector.select({\n changed: options.selection?.changed ?? [],\n sinks: sinks.map((node) => ({ nodeId: node.id, planKey: node.key })),\n present: [...present],\n beliefs: options.selection?.beliefs ?? { pinnedAtMs: 0, edges: [] },\n policy: options.selection?.policy ?? { deferBelow: 0 }\n })\n for (let index = 0; index < selected.length; index++) {\n const { nodeId, verdict } = selected[index]!\n if (verdict._tag === \"Admit\") continue\n if (verdict._tag === \"Defer\" && sinkIds.has(nodeId)) {\n deferrals.set(nodeId, { edge: verdict.edge, likelihood: verdict.likelihood })\n continue\n }\n if (verdict._tag === \"Propose\" && !present.has(nodeId)) {\n yield* emit(JournalRecords.selectionProposed(source(`selection/proposed/${index}`), {\n planId: plan.planId,\n flow: verdict.flow,\n edge: verdict.edge,\n confidence: verdict.confidence\n }))\n continue\n }\n yield* emit(JournalRecords.selectionInconsistent(source(`selection/inconsistent/${index}`), {\n planId: plan.planId,\n nodeId,\n verdict: verdict._tag,\n reason: verdict._tag === \"Defer\" ? \"not-a-deferrable-sink\" : \"proposes-a-present-node\"\n }))\n }\n }\n\n const passiveSettlements = Effect.gen(function*() {\n while (true) {\n const blocked = graph.blocked()\n // Halt, not continue-on-failure: a dependent of failed work never\n // dispatches. Repeating this pass makes the skip cascade settle in\n // dependency order before any newly exposed work is admitted.\n for (const node of blocked) yield* settle(node, \"skipped\")\n if (blocked.length > 0) continue\n // A deferral is a postponement, never a removal, and it only takes\n // effect on work that was genuinely runnable: a marked sink whose\n // cone failed settled `skipped` above instead, because work that\n // could not have run is not a debt. The debt record precedes the\n // settlement so `Selection.debt` reads them in cause-then-effect\n // order.\n const ready = graph.ready()\n const postponed = ready.filter((node) => deferrals.has(node.id))\n for (const node of postponed) {\n const debt = deferrals.get(node.id)!\n yield* emit(JournalRecords.selectionDeferred(source(`node/${node.id}/selection-deferred`), {\n planId: plan.planId,\n nodeId: node.id,\n planKey: node.key,\n edge: debt.edge,\n likelihood: debt.likelihood\n }))\n yield* settle(node, \"deferred\")\n }\n if (postponed.length > 0) continue\n return ready\n }\n })\n\n const dispatchStart = (node: Plan.PlanNode): DispatchStart => {\n const state = stateOf(node)\n const settledResults = new Map<string, unknown>()\n const inputs: Array<ResolvedInput> = []\n for (const input of node.material.inputs) {\n if (input._tag !== \"Ref\") continue\n const value = results.get(input.from)\n settledResults.set(input.from, value)\n // Admission proved every dependency settled successfully; `settle`\n // records even an `undefined` result in the map, so every material\n // Ref has a value to project here.\n inputs.push({ from: input.from, path: input.path, value: StepKey.project(value, input.path) })\n }\n return {\n dispatchKey: state.dispatchKey,\n attempts: state.attempts,\n rebases: state.rebases,\n waited: state.waited,\n results: settledResults,\n inputs\n }\n }\n\n let admissions = 0\n yield* Effect.scoped(\n Effect.gen(function*() {\n let inFlightSteps = 0\n let inFlightAgents = 0\n const pendingMerges: Array<PlanMergeStore.Intent> = recoveredMerges\n .filter((decision) => decision.completion === undefined).map((decision) => decision.intent)\n\n const appendReadyMerges = Effect.gen(function*() {\n for (let index = 0; index < pendingMerges.length;) {\n const pending = pendingMerges[index]!\n if (pending.peers.some((peer) => states.get(peer)?.status !== \"settled\")) {\n index = index + 1\n continue\n }\n yield* appendMerge(pending)\n pendingMerges.splice(index, 1)\n }\n })\n\n // Passive failure/selection propagation can settle the last peer of\n // a recovered intent without a dispatch event. Recheck merges until\n // neither propagation nor an append exposes more scheduling work.\n const advance = Effect.gen(function*() {\n while (true) {\n const ready = yield* passiveSettlements\n const before = plan.generation\n yield* appendReadyMerges\n if (plan.generation === before) return ready\n }\n })\n\n const admit = (ready: ReadonlyArray<Plan.PlanNode>) =>\n Effect.gen(function*() {\n const decision = scheduling.admit(\n graph.candidates(ready),\n { steps: inFlightSteps, agents: inFlightAgents }\n )\n const admitted = decision.admitted.map(({ node }) => node)\n // Event-driven aging: this admission pass considered every ready\n // node, and only capacity can leave one behind.\n for (const { node, waited } of decision.deferred) {\n stateOf(node).waited = waited\n }\n if (admitted.length > 0) {\n admissions = admissions + 1\n yield* Effect.annotateCurrentSpan({ admissions })\n yield* Metric.update(EngineStoreMetrics.schedulerAdmissions, 1)\n yield* Effect.logDebug(\"scheduler admission launched\", {\n admission: admissions,\n ready: ready.length,\n admitted: admitted.length,\n agents: decision.agents,\n inFlightSteps,\n inFlightAgents\n })\n }\n const launches = admitted.map((node) => {\n const start = dispatchStart(node)\n graph.start(node.id)\n inFlightSteps = inFlightSteps + 1\n if (node.kind === \"agent\") inFlightAgents = inFlightAgents + 1\n return { node, start }\n })\n for (const { node, start } of launches) {\n yield* dispatch(node, start).pipe(\n Effect.trackDuration(EngineStoreMetrics.schedulerDispatchDuration),\n Effect.exit,\n Effect.flatMap((exit) => Queue.offer(events, { _tag: \"DispatchSettled\", node, exit })),\n Effect.asVoid,\n Effect.forkScoped({ startImmediately: true })\n )\n }\n })\n\n // Repair a settlement missing after a crash without appending the\n // same stopped decision again when its original record survived.\n for (const { intent } of recoveredMerges) yield* emitSettlement(nodesById.get(intent.nodeId)!, 0)\n yield* Effect.flatMap(advance, admit)\n while (graph.remaining > 0) {\n // Compiled plans are acyclic, inferred edges refuse cycle closure,\n // and discovered edges point only from undispatched nodes to the\n // already-settled node whose verdict added them, so pending work\n // with nothing in flight cannot have an empty ready set. If an\n // invariant breaks anyway, fail loudly: returning here would\n // report unsettled nodes with their initial outcome as success.\n /* v8 ignore next 7 -- unreachable while the invariants above hold */\n if (inFlightSteps === 0) {\n return yield* Effect.die(\n new Error(\n `PlanScheduler invariant broken: ${graph.remaining} nodes are pending and nothing is in flight`\n )\n )\n }\n const event = yield* nextSettlement\n if (Exit.isFailure(event.exit)) return yield* Effect.failCause(event.exit.cause)\n\n const node = event.node\n const result = event.exit.value\n const state = stateOf(node)\n inFlightSteps = inFlightSteps - 1\n if (node.kind === \"agent\") inFlightAgents = inFlightAgents - 1\n state.dispatchKey = result.dispatchKey\n state.attempts = result.attempts\n state.rebases = result.rebases\n\n switch (result.outcome) {\n case \"built\":\n case \"clean\":\n results.set(node.id, result.result)\n markSettled(node, result.outcome)\n break\n case \"failed\":\n markSettled(node, \"failed\")\n break\n case \"conflicted\": {\n if (result.strategy === \"stop-merge\") {\n const intent = yield* atomically(\n \"could not persist the stopped-attempt decision\",\n Effect.gen(function*() {\n const intent = yield* mergeStore.intend(mergeIdentity, {\n version: 1,\n nodeId: node.id,\n nodeKey: node.key,\n dispatchKey: state.dispatchKey,\n attempts: state.attempts,\n rebases: state.rebases,\n peers: node.conflicts.map((conflict) => conflict.with)\n .filter((peer) => states.get(peer)?.status === \"running\" || results.has(peer))\n }, options.owner).pipe(Effect.catch(mergeFailure))\n yield* PlanMerges.validateIntent(plan, intent).pipe(Effect.catch(mergeFailure))\n return intent\n })\n )\n markSettled(node, \"skipped\")\n // The former dispatch barrier guaranteed that every\n // conflicting sibling admitted beside this node had reported\n // its result before `appendMerge` selected winners. Preserve\n // that semantic boundary only for those already-running\n // peers; unrelated work never holds the merge cone.\n state.dispatchKey = intent.dispatchKey\n state.attempts = intent.attempts\n state.rebases = intent.rebases\n pendingMerges.push(intent)\n break\n }\n const verdict = yield* reconciler.onConflict({\n nodeId: node.id,\n keyDigest: state.dispatchKey,\n attempt: state.attempts,\n rebases: state.rebases,\n strategy: result.strategy,\n conflictsWith: node.conflicts.map((conflict) => conflict.with)\n })\n markSettled(node, \"failed\")\n yield* applyVerdict(node.id, verdict, \"materialization-conflict\")\n break\n }\n }\n\n yield* appendReadyMerges\n\n // The dispatch durably journalled every deviation before its event.\n // Apply those verdicts before consulting downstream readiness.\n yield* drainDeviations\n // A dispatch outcome is provisional until its deviations have been\n // reconciled. Persist exactly one terminal fact, after a Fail\n // verdict has had the chance to replace built with failed.\n yield* emitSettlement(node)\n graph.reconcile()\n // Process terminal events already observed by the journal drain\n // before opening more permits. This preserves fail-fast behavior for\n // an already-failed sibling while still admitting immediately when\n // unrelated work is genuinely still in flight.\n const ready = yield* advance\n if (pendingSettlements.length === 0) yield* admit(ready)\n }\n }).pipe(Effect.onError((cause) =>\n Effect.sync(() => {\n abortedForFailure = cause.reasons.some((reason) => reason._tag === \"Fail\")\n })\n ))\n ).pipe(Effect.catch((error) =>\n Effect.fail(\n cleanupErrors.length === 0 ? error : new SchedulerError({\n code: error.code,\n message: error.message,\n cause: error.cause,\n cleanupErrors\n })\n )\n ))\n\n const settlements = plan.nodes.map((node) => {\n const state = stateOf(node)\n return {\n nodeId: node.id,\n planKey: node.key,\n dispatchKey: state.dispatchKey,\n outcome: state.outcome,\n attempts: state.attempts,\n rebases: state.rebases\n }\n })\n yield* Effect.logDebug(\"scheduler run completed\", {\n admissions,\n built: settlements.filter((settlement) => settlement.outcome === \"built\").length,\n clean: settlements.filter((settlement) => settlement.outcome === \"clean\").length,\n failed: settlements.filter((settlement) => settlement.outcome === \"failed\").length,\n skipped: settlements.filter((settlement) => settlement.outcome === \"skipped\").length,\n deferred: settlements.filter((settlement) => settlement.outcome === \"deferred\").length\n })\n return {\n planId: plan.planId,\n digest: plan.digest,\n settlements,\n results: Object.fromEntries(results),\n verdicts,\n appended\n }\n }).pipe(\n Effect.annotateSpans({ runId: options.runId }),\n Effect.annotateLogs({ runId: options.runId }),\n Effect.onExit((exit) => Effect.annotateCurrentSpan({ outcome: EngineStoreMetrics.exitTag(exit).toLowerCase() }))\n )\n )\n\n return { record, append, run }\n}\n\n/**\n * Provides a scheduler bound to one run.\n *\n * @since 0.1.0\n * @category layers\n */\nexport const layer = (options: Options): Layer.Layer<PlanScheduler> => Layer.succeed(PlanScheduler, make(options))\n\n/**\n * What {@link recertify} returns: the repaying run's id, its report, and the\n * deferring run's remaining debt after the repayment is counted.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface RecertifyResult {\n readonly runId: string\n readonly report: Report\n readonly remaining: ReadonlyArray<Selection.DebtEntry>\n}\n\n/**\n * The recertification driver: re-drives a compiled plan under a fresh,\n * caller-supplied run with the `full` selection override — guess-free by\n * construction — then reports the deferring run's remaining debt via\n * `Selection.debt(deferringRunId, { repaidBy: [options.runId] })`.\n *\n * The design draft placed this beside the other Selection helpers; it lives\n * here because it constructs a scheduler, and `Selection` must stay\n * type-only toward this module to keep the dependency graph acyclic. The\n * deferring run's journal is never written — repayment is a read-side join.\n * Scheduling the cadence (nightly, per-merge) stays a product concern; this\n * is only the primitive one pass runs.\n *\n * @since 0.1.0\n * @category combinators\n */\nexport const recertify = Effect.fn(\"PlanScheduler.recertify\")(\n (input: {\n readonly plan: Plan.Plan\n readonly deferringRunId: string\n readonly options: Options\n }) =>\n Effect.gen(function*() {\n const scheduler = make({\n ...input.options,\n selection: { ...input.options.selection, full: true }\n })\n const report = yield* scheduler.run(input.plan)\n const remaining = yield* Selection.debt(input.deferringRunId, { repaidBy: [input.options.runId] })\n return { runId: input.options.runId, report, remaining } satisfies RecertifyResult\n })\n)\n"]}
@@ -0,0 +1,175 @@
1
+ /**
2
+ * The reconciliation seam: what happens when the world disagrees with the
3
+ * declaration.
4
+ *
5
+ * `docs/guides/drive-a-plan.md` ("Install a reconciler") describes expected sets as the soft
6
+ * mode: going outside them is allowed, journaled, and "triggers a
7
+ * **reconciliation flow** — pluggable, a flow like everything else". The
8
+ * deviation events have been emitted since the isolated-execution lane landed
9
+ * (`internal/ActionPersistence.ts`, both `expectedSetDeviation` sites) and
10
+ * had **no consumer at all**. This is the consumer, and
11
+ * `PlanScheduler` is what feeds it.
12
+ *
13
+ * Pluggability is dependency injection at the owning seam, per the repository's
14
+ * extension doctrine — there is no hook kernel. {@link layerDefault} installs a
15
+ * deterministic verdict function; a model-backed reconciler is a different
16
+ * `Layer` and lives in the agent packages. This package has no model
17
+ * dependency and must not grow one.
18
+ *
19
+ * The three verdicts are exactly the vault's: **fail** the step where the
20
+ * deviation is genuinely wrong, **reorder** — re-plan with the discovered
21
+ * dependency made explicit — and **factor out** a shared step, where content
22
+ * addressing does the heavy lifting because identical extracted steps collapse
23
+ * to one key automatically.
24
+ *
25
+ * @since 0.1.0
26
+ */
27
+ import * as Context from "effect/Context";
28
+ import * as Effect from "effect/Effect";
29
+ import * as Layer from "effect/Layer";
30
+ import * as Schema from "effect/Schema";
31
+ /**
32
+ * A journaled `flows.engine.expected-set-deviation`, resolved against the plan
33
+ * the scheduler is driving.
34
+ *
35
+ * @since 0.1.0
36
+ * @category schemas
37
+ */
38
+ export declare const Deviation: Schema.Struct<{
39
+ readonly nodeId: Schema.NonEmptyString;
40
+ readonly keyDigest: Schema.NonEmptyString;
41
+ readonly attempt: Schema.Int;
42
+ /** Paths the execution touched that its declaration did not predict. */
43
+ readonly paths: Schema.$Array<Schema.String>;
44
+ readonly diffIdentity: Schema.String;
45
+ /**
46
+ * For each undeclared path, the OTHER plan node that declares it as a write
47
+ * — the discovered dependency, resolved by the scheduler because only it
48
+ * holds the plan.
49
+ */
50
+ readonly declaredBy: Schema.$Record<Schema.String, Schema.NonEmptyString>;
51
+ /** Other nodes in this run whose deviation named exactly the same paths. */
52
+ readonly alsoDeviatedBy: Schema.$Array<Schema.NonEmptyString>;
53
+ }>;
54
+ /**
55
+ * The value form of {@link Deviation}.
56
+ *
57
+ * @since 0.1.0
58
+ * @category models
59
+ */
60
+ export type Deviation = typeof Deviation.Type;
61
+ /**
62
+ * A `WorkspaceSandbox.MaterializationConflict` the runtime strategy could not
63
+ * absorb: the delay/rebase budget is spent, or the merge itself conflicted.
64
+ *
65
+ * @since 0.1.0
66
+ * @category schemas
67
+ */
68
+ export declare const Conflict: Schema.Struct<{
69
+ readonly nodeId: Schema.NonEmptyString;
70
+ readonly keyDigest: Schema.NonEmptyString;
71
+ readonly attempt: Schema.Int;
72
+ /** How many times the scheduler rebased before giving up. */
73
+ readonly rebases: Schema.Int;
74
+ readonly strategy: Schema.Literals<readonly ["delay-rebase", "stop-merge"]>;
75
+ /** The plan nodes this one was annotated as conflicting with. */
76
+ readonly conflictsWith: Schema.$Array<Schema.NonEmptyString>;
77
+ }>;
78
+ /**
79
+ * The value form of {@link Conflict}.
80
+ *
81
+ * @since 0.1.0
82
+ * @category models
83
+ */
84
+ export type Conflict = typeof Conflict.Type;
85
+ /**
86
+ * What reconciliation decided.
87
+ *
88
+ * @since 0.1.0
89
+ * @category schemas
90
+ */
91
+ export declare const Verdict: Schema.Union<readonly [Schema.TaggedStruct<"Fail", {
92
+ readonly reason: Schema.String;
93
+ }>, Schema.TaggedStruct<"Reorder", {
94
+ readonly dependsOn: Schema.$Array<Schema.NonEmptyString>;
95
+ readonly reason: Schema.String;
96
+ }>, Schema.TaggedStruct<"FactorOut", {
97
+ readonly paths: Schema.$Array<Schema.String>;
98
+ readonly reason: Schema.String;
99
+ }>]>;
100
+ /**
101
+ * The value form of {@link Verdict}.
102
+ *
103
+ * @since 0.1.0
104
+ * @category models
105
+ */
106
+ export type Verdict = typeof Verdict.Type;
107
+ /**
108
+ * The pluggable reconciler.
109
+ *
110
+ * @since 0.1.0
111
+ * @category models
112
+ */
113
+ export interface Service {
114
+ readonly onDeviation: (deviation: Deviation) => Effect.Effect<Verdict>;
115
+ readonly onConflict: (conflict: Conflict) => Effect.Effect<Verdict>;
116
+ }
117
+ declare const Reconciliation_base: Context.ServiceClass<Reconciliation, "@smthrs/engine-store/Reconciliation", Service>;
118
+ /**
119
+ * Service tag for the reconciliation seam.
120
+ *
121
+ * @since 0.1.0
122
+ * @category services
123
+ */
124
+ export declare class Reconciliation extends Reconciliation_base {
125
+ }
126
+ /**
127
+ * Names a {@link Service} implementation as a reconciler.
128
+ *
129
+ * It is the identity function: the value is checked against the interface at
130
+ * its definition site, which is where a wrong-shaped reconciler should be
131
+ * reported rather than at whichever layer eventually provides it.
132
+ *
133
+ * @since 0.1.0
134
+ * @category constructors
135
+ */
136
+ export declare const make: (service: Service) => Service;
137
+ /**
138
+ * Provides a {@link Service} as the {@link Reconciliation} seam, replacing the
139
+ * deterministic default.
140
+ *
141
+ * @since 0.1.0
142
+ * @category layers
143
+ */
144
+ export declare const layer: (service: Service) => Layer.Layer<Reconciliation>;
145
+ /**
146
+ * The deterministic default, in the vault's order of preference.
147
+ *
148
+ * 1. **Reorder** when every undeclared path is a path some *other* plan node
149
+ * declares it writes. That is a real dependency the declaration missed, and
150
+ * making it explicit is strictly better than failing.
151
+ * 2. **Factor out** when another node in the same run deviated on exactly the
152
+ * same paths — two parallel steps that both ran `npm install`. No graph
153
+ * surgery follows: content addressing collapses two identical extracted
154
+ * steps to one key by itself, so the verdict is a record and a hint.
155
+ * 3. **Fail** otherwise. The default is deliberately conservative — a
156
+ * deviation nobody can explain is the case the vault says is "genuinely
157
+ * wrong", and guessing is what the model-backed reconciler is for.
158
+ *
159
+ * A conflict the runtime strategy could not absorb always fails here: choosing
160
+ * a winner between two landings is a semantic judgement this default does not
161
+ * have the material to make.
162
+ *
163
+ * @since 0.1.0
164
+ * @category constructors
165
+ */
166
+ export declare const makeDefault: () => Service;
167
+ /**
168
+ * Installs the deterministic default reconciler.
169
+ *
170
+ * @since 0.1.0
171
+ * @category layers
172
+ */
173
+ export declare const layerDefault: Layer.Layer<Reconciliation>;
174
+ export {};
175
+ //# sourceMappingURL=Reconciliation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Reconciliation.d.ts","sourceRoot":"","sources":["../../src/Reconciliation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC;;;;;;GAMG;AACH,eAAO,MAAM,SAAS;;;;IAIpB,wEAAwE;;;IAGxE;;;;OAIG;;IAEH,4EAA4E;;EAE5E,CAAA;AAEF;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,CAAA;AAE7C;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ;;;;IAInB,6DAA6D;;;IAG7D,iEAAiE;;EAEjE,CAAA;AAEF;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAA;AAE3C;;;;;GAKG;AACH,eAAO,MAAM,OAAO;;;;;;;;IAIlB,CAAA;AAEF;;;;;GAKG;AACH,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAEzC;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACtE,QAAQ,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;CACpE;;AAED;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,mBAAiF;CAAG;AAExH;;;;;;;;;GASG;AACH,eAAO,MAAM,IAAI,GAAI,SAAS,OAAO,KAAG,OAAkB,CAAA;AAE1D;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,GAAI,SAAS,OAAO,KAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CAA2C,CAAA;AAE9G;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,WAAW,QAAO,OA4C7B,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,cAAc,CAA2C,CAAA"}