@graphrefly/ts 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (333) hide show
  1. package/README.md +197 -117
  2. package/dist/actions-types-CH-XCU9O.d.cts +657 -0
  3. package/dist/actions-types-w2iPQTkv.d.ts +657 -0
  4. package/dist/adapters/index.cjs +5157 -2951
  5. package/dist/adapters/index.cjs.map +1 -1
  6. package/dist/adapters/index.d.cts +207 -70
  7. package/dist/adapters/index.d.ts +207 -70
  8. package/dist/adapters/index.js +3738 -1688
  9. package/dist/adapters/index.js.map +1 -1
  10. package/dist/adapters/nestjs/microservices.cjs +841 -0
  11. package/dist/adapters/nestjs/microservices.cjs.map +1 -0
  12. package/dist/adapters/nestjs/microservices.d.cts +45 -0
  13. package/dist/adapters/nestjs/microservices.d.ts +45 -0
  14. package/dist/adapters/nestjs/microservices.js +206 -0
  15. package/dist/adapters/nestjs/microservices.js.map +1 -0
  16. package/dist/adapters/nestjs/native.cjs +1391 -0
  17. package/dist/adapters/nestjs/native.cjs.map +1 -0
  18. package/dist/adapters/nestjs/native.d.cts +111 -0
  19. package/dist/adapters/nestjs/native.d.ts +111 -0
  20. package/dist/adapters/nestjs/native.js +577 -0
  21. package/dist/adapters/nestjs/native.js.map +1 -0
  22. package/dist/adapters/nestjs/websockets.cjs +924 -0
  23. package/dist/adapters/nestjs/websockets.cjs.map +1 -0
  24. package/dist/adapters/nestjs/websockets.d.cts +47 -0
  25. package/dist/adapters/nestjs/websockets.d.ts +47 -0
  26. package/dist/adapters/nestjs/websockets.js +286 -0
  27. package/dist/adapters/nestjs/websockets.js.map +1 -0
  28. package/dist/adapters/nestjs.cjs +1085 -0
  29. package/dist/adapters/nestjs.cjs.map +1 -0
  30. package/dist/adapters/nestjs.d.cts +385 -0
  31. package/dist/adapters/nestjs.d.ts +385 -0
  32. package/dist/adapters/nestjs.js +112 -0
  33. package/dist/adapters/nestjs.js.map +1 -0
  34. package/dist/adapters/observe-storage.d.cts +3 -3
  35. package/dist/adapters/observe-storage.d.ts +3 -3
  36. package/dist/adapters/observe-storage.js +4 -4
  37. package/dist/adapters/react.cjs.map +1 -1
  38. package/dist/adapters/react.d.cts +2 -2
  39. package/dist/adapters/react.d.ts +2 -2
  40. package/dist/adapters/react.js +1 -1
  41. package/dist/adapters/solid.cjs.map +1 -1
  42. package/dist/adapters/solid.d.cts +2 -2
  43. package/dist/adapters/solid.d.ts +2 -2
  44. package/dist/adapters/solid.js +1 -1
  45. package/dist/adapters/svelte.cjs.map +1 -1
  46. package/dist/adapters/svelte.d.cts +2 -2
  47. package/dist/adapters/svelte.d.ts +2 -2
  48. package/dist/adapters/svelte.js +1 -1
  49. package/dist/adapters/vue.cjs.map +1 -1
  50. package/dist/adapters/vue.d.cts +2 -2
  51. package/dist/adapters/vue.d.ts +2 -2
  52. package/dist/adapters/vue.js +1 -1
  53. package/dist/{agent-runtime-BesGDZcB.d.ts → agent-runtime-types-core-CKwrBDyi.d.ts} +171 -320
  54. package/dist/{agent-runtime-DZTJ3C-p.d.cts → agent-runtime-types-core-bfl4m0vM.d.cts} +171 -320
  55. package/dist/agent-runtime-types-tool-BLPV3azj.d.cts +695 -0
  56. package/dist/agent-runtime-types-tool-hwqvVqNt.d.ts +695 -0
  57. package/dist/agentic-memory-retention-CLwI76JK.d.ts +14 -0
  58. package/dist/agentic-memory-retention-Cz8GR6ie.d.cts +14 -0
  59. package/dist/{agentic-memory-DfuVZ-lY.d.cts → agentic-memory-types-JDr7MPhh.d.cts} +13 -57
  60. package/dist/{agentic-memory-BmRCvh0d.d.ts → agentic-memory-types-khYJgzKL.d.ts} +13 -57
  61. package/dist/{capability-admission-B0BzqAm5.d.cts → capability-admission-B8RNFyaZ.d.cts} +3 -3
  62. package/dist/{capability-admission-g0mn9hpq.d.ts → capability-admission-Dkw1Xz3r.d.ts} +3 -3
  63. package/dist/chunk-2KUAG2GZ.js +9693 -0
  64. package/dist/chunk-2KUAG2GZ.js.map +1 -0
  65. package/dist/{chunk-CZNV3VXM.js → chunk-3J7UPZL5.js} +11 -11
  66. package/dist/{chunk-HKK2JD7Z.js → chunk-3LYI6ADX.js} +12 -125
  67. package/dist/chunk-3LYI6ADX.js.map +1 -0
  68. package/dist/{chunk-YXMZ2N6J.js → chunk-4M37FH2I.js} +1071 -1025
  69. package/dist/chunk-4M37FH2I.js.map +1 -0
  70. package/dist/{chunk-YDSIVHRR.js → chunk-4NWSNI4K.js} +1598 -1584
  71. package/dist/chunk-4NWSNI4K.js.map +1 -0
  72. package/dist/{chunk-Z2ANQ6JW.js → chunk-4Q77MMJY.js} +2 -2
  73. package/dist/{chunk-SS2A464I.js → chunk-54WPEODM.js} +3 -3
  74. package/dist/chunk-54WPEODM.js.map +1 -0
  75. package/dist/chunk-6E76H4OU.js +132 -0
  76. package/dist/chunk-6E76H4OU.js.map +1 -0
  77. package/dist/chunk-7GOTIIQ7.js +819 -0
  78. package/dist/chunk-7GOTIIQ7.js.map +1 -0
  79. package/dist/{chunk-V7CIJE4B.js → chunk-DKFWDTVY.js} +92 -9
  80. package/dist/chunk-DKFWDTVY.js.map +1 -0
  81. package/dist/{chunk-FBUU43PM.js → chunk-E4QCH32M.js} +448 -446
  82. package/dist/chunk-E4QCH32M.js.map +1 -0
  83. package/dist/{chunk-XKXWK2KP.js → chunk-GXU6WFEJ.js} +1157 -1021
  84. package/dist/chunk-GXU6WFEJ.js.map +1 -0
  85. package/dist/{chunk-K3FXTC3I.js → chunk-HJACH5PU.js} +3 -3
  86. package/dist/{chunk-GTPCOEOZ.js → chunk-IDMLXLLG.js} +3 -3
  87. package/dist/{chunk-DKP56CSW.js → chunk-JKAYLDQV.js} +2 -2
  88. package/dist/{chunk-4VLAQHZI.js → chunk-K7FB3JTD.js} +17 -1
  89. package/dist/chunk-K7FB3JTD.js.map +1 -0
  90. package/dist/{chunk-43BKLFZU.js → chunk-KFURM6FM.js} +10 -10
  91. package/dist/{chunk-H75VXTGT.js → chunk-L6LDXRWE.js} +3 -3
  92. package/dist/{chunk-H75VXTGT.js.map → chunk-L6LDXRWE.js.map} +1 -1
  93. package/dist/chunk-MCOFHMUU.js +4131 -0
  94. package/dist/chunk-MCOFHMUU.js.map +1 -0
  95. package/dist/chunk-MQEQMS7B.js +1009 -0
  96. package/dist/chunk-MQEQMS7B.js.map +1 -0
  97. package/dist/chunk-MTELVIYR.js +1421 -0
  98. package/dist/chunk-MTELVIYR.js.map +1 -0
  99. package/dist/{chunk-3JR3EDB2.js → chunk-NNDIFUKX.js} +121 -115
  100. package/dist/chunk-NNDIFUKX.js.map +1 -0
  101. package/dist/{chunk-2747WN4Y.js → chunk-PUSRRALM.js} +3 -3
  102. package/dist/{chunk-QFY4AFY4.js → chunk-PVC7WDKI.js} +58 -52
  103. package/dist/chunk-PVC7WDKI.js.map +1 -0
  104. package/dist/{chunk-VTHLCFN4.js → chunk-RAHNUYA5.js} +2 -2
  105. package/dist/chunk-TQPCAIQI.js +612 -0
  106. package/dist/chunk-TQPCAIQI.js.map +1 -0
  107. package/dist/{chunk-IXZBUWSP.js → chunk-UEMN5URK.js} +2 -2
  108. package/dist/chunk-WOS7RJYZ.js +1320 -0
  109. package/dist/chunk-WOS7RJYZ.js.map +1 -0
  110. package/dist/{chunk-6PHB5CJS.js → chunk-ZLFRB6FI.js} +2 -2
  111. package/dist/composition/index.cjs +1228 -1076
  112. package/dist/composition/index.cjs.map +1 -1
  113. package/dist/composition/index.d.cts +3 -3
  114. package/dist/composition/index.d.ts +3 -3
  115. package/dist/composition/index.js +4 -4
  116. package/dist/core/index.cjs +1198 -1046
  117. package/dist/core/index.cjs.map +1 -1
  118. package/dist/core/index.d.cts +23 -2
  119. package/dist/core/index.d.ts +23 -2
  120. package/dist/core/index.js +2 -2
  121. package/dist/cqrs/index.d.cts +3 -3
  122. package/dist/cqrs/index.d.ts +3 -3
  123. package/dist/cqrs/messaging.d.cts +4 -4
  124. package/dist/cqrs/messaging.d.ts +4 -4
  125. package/dist/cqrs/work-queue.d.cts +5 -5
  126. package/dist/cqrs/work-queue.d.ts +5 -5
  127. package/dist/data-structures/index.cjs +1226 -1074
  128. package/dist/data-structures/index.cjs.map +1 -1
  129. package/dist/data-structures/index.d.cts +8 -7
  130. package/dist/data-structures/index.d.ts +8 -7
  131. package/dist/data-structures/index.js +6 -5
  132. package/dist/{describe-DYMw_l1C.d.cts → describe-BumQ-3_0.d.cts} +1 -1
  133. package/dist/{describe-BpyJuWkw.d.ts → describe-cYr_Z5zm.d.ts} +1 -1
  134. package/dist/executors/tool-provider-adapters.cjs +3091 -0
  135. package/dist/executors/tool-provider-adapters.cjs.map +1 -0
  136. package/dist/executors/tool-provider-adapters.d.cts +174 -0
  137. package/dist/executors/tool-provider-adapters.d.ts +174 -0
  138. package/dist/executors/tool-provider-adapters.js +1336 -0
  139. package/dist/executors/tool-provider-adapters.js.map +1 -0
  140. package/dist/executors/tool-provider-runtime.cjs +5178 -0
  141. package/dist/executors/tool-provider-runtime.cjs.map +1 -0
  142. package/dist/executors/tool-provider-runtime.d.cts +17 -0
  143. package/dist/executors/tool-provider-runtime.d.ts +17 -0
  144. package/dist/executors/tool-provider-runtime.js +15 -0
  145. package/dist/executors/tool-provider-runtime.js.map +1 -0
  146. package/dist/executors/tool-provider.cjs +6392 -0
  147. package/dist/executors/tool-provider.cjs.map +1 -0
  148. package/dist/executors/tool-provider.d.cts +60 -0
  149. package/dist/executors/tool-provider.d.ts +60 -0
  150. package/dist/executors/tool-provider.js +89 -0
  151. package/dist/executors/tool-provider.js.map +1 -0
  152. package/dist/executors/work-queue.d.cts +6 -6
  153. package/dist/executors/work-queue.d.ts +6 -6
  154. package/dist/graph/index.cjs +1499 -1341
  155. package/dist/graph/index.cjs.map +1 -1
  156. package/dist/graph/index.d.cts +9 -8
  157. package/dist/graph/index.d.ts +9 -8
  158. package/dist/graph/index.js +23 -22
  159. package/dist/{graph-DCEWh4T2.d.cts → graph-C1C-wb0L.d.cts} +266 -137
  160. package/dist/{graph-D-1-SQeC.d.ts → graph-CS0b4V9B.d.ts} +266 -137
  161. package/dist/{index-72VZC0-E.d.cts → index-DLrNopda.d.cts} +151 -10
  162. package/dist/{index-Bmxeu0nK.d.ts → index-DzJni3_6.d.ts} +151 -10
  163. package/dist/index.cjs +3397 -3140
  164. package/dist/index.cjs.map +1 -1
  165. package/dist/index.d.cts +12 -9
  166. package/dist/index.d.ts +12 -9
  167. package/dist/index.js +110 -109
  168. package/dist/inspection/boundary.d.cts +4 -4
  169. package/dist/inspection/boundary.d.ts +4 -4
  170. package/dist/measurements-BWAnochv.d.ts +294 -0
  171. package/dist/measurements-B_gJfD8h.d.cts +294 -0
  172. package/dist/messaging/index.cjs +57 -51
  173. package/dist/messaging/index.cjs.map +1 -1
  174. package/dist/messaging/index.d.cts +11 -276
  175. package/dist/messaging/index.d.ts +11 -276
  176. package/dist/messaging/index.js +1 -1
  177. package/dist/operators/index.cjs +1228 -1076
  178. package/dist/operators/index.cjs.map +1 -1
  179. package/dist/operators/index.d.cts +5 -5
  180. package/dist/operators/index.d.ts +5 -5
  181. package/dist/operators/index.js +5 -5
  182. package/dist/orchestration/index.cjs +8844 -6071
  183. package/dist/orchestration/index.cjs.map +1 -1
  184. package/dist/orchestration/index.d.cts +171 -224
  185. package/dist/orchestration/index.d.ts +171 -224
  186. package/dist/orchestration/index.js +42 -991
  187. package/dist/orchestration/index.js.map +1 -1
  188. package/dist/orchestration/messaging.d.cts +5 -8
  189. package/dist/orchestration/messaging.d.ts +5 -8
  190. package/dist/orchestration/work-queue.cjs +1243 -5
  191. package/dist/orchestration/work-queue.cjs.map +1 -1
  192. package/dist/orchestration/work-queue.d.cts +121 -10
  193. package/dist/orchestration/work-queue.d.ts +121 -10
  194. package/dist/orchestration/work-queue.js +1067 -4
  195. package/dist/orchestration/work-queue.js.map +1 -1
  196. package/dist/patterns/event-flow.cjs +6 -20
  197. package/dist/patterns/event-flow.cjs.map +1 -1
  198. package/dist/patterns/event-flow.d.cts +4 -4
  199. package/dist/patterns/event-flow.d.ts +4 -4
  200. package/dist/patterns/event-flow.js +2 -2
  201. package/dist/patterns/index.cjs +453 -465
  202. package/dist/patterns/index.cjs.map +1 -1
  203. package/dist/patterns/index.d.cts +6 -5
  204. package/dist/patterns/index.d.ts +6 -5
  205. package/dist/patterns/index.js +3 -3
  206. package/dist/process-types-BB7oRhX3.d.cts +200 -0
  207. package/dist/process-types-QNhyoYJ8.d.ts +200 -0
  208. package/dist/{reactive-collection-DNV0-gFi.d.cts → reactive-collection-BYlWvtnp.d.cts} +4 -34
  209. package/dist/{reactive-collection-BAmfrGjd.d.ts → reactive-collection-efOEdGFN.d.ts} +4 -34
  210. package/dist/{reactive-collection-storage-BNEldDyi.d.cts → reactive-collection-storage-BjoLsoiC.d.cts} +5 -5
  211. package/dist/{reactive-collection-storage-YZsAQsWK.d.ts → reactive-collection-storage-DwW6UuK_.d.ts} +5 -5
  212. package/dist/{reactive-map-DRD1LJ2H.d.cts → reactive-map-BHacbIqz.d.cts} +7 -2
  213. package/dist/{reactive-map-EsDiCmJk.d.ts → reactive-map-DN4Jyqnf.d.ts} +7 -2
  214. package/dist/render/index.d.cts +2 -2
  215. package/dist/render/index.d.ts +2 -2
  216. package/dist/scheduled-readiness-BmqXxnzX.d.ts +91 -0
  217. package/dist/scheduled-readiness-CYSw7KDE.d.cts +91 -0
  218. package/dist/semantic-memory-graph-B_LwbM-E.d.cts +30 -0
  219. package/dist/semantic-memory-graph-rsFNNhwn.d.ts +30 -0
  220. package/dist/{semantic-memory-graph-DKuNzuWw.d.cts → semantic-memory-graph-types-Y73bbwVI.d.cts} +2 -28
  221. package/dist/{semantic-memory-graph-uwbwJdhe.d.ts → semantic-memory-graph-types-safmPkuX.d.ts} +2 -28
  222. package/dist/solutions/index.cjs +6353 -6169
  223. package/dist/solutions/index.cjs.map +1 -1
  224. package/dist/solutions/index.d.cts +12 -10
  225. package/dist/solutions/index.d.ts +12 -10
  226. package/dist/solutions/index.js +5 -5
  227. package/dist/solutions/reactive-layout/browser/index.cjs +116 -108
  228. package/dist/solutions/reactive-layout/browser/index.cjs.map +1 -1
  229. package/dist/solutions/reactive-layout/browser/index.d.cts +4 -4
  230. package/dist/solutions/reactive-layout/browser/index.d.ts +4 -4
  231. package/dist/solutions/reactive-layout/browser/index.js +3 -3
  232. package/dist/solutions/reactive-layout/index.cjs +3578 -3350
  233. package/dist/solutions/reactive-layout/index.cjs.map +1 -1
  234. package/dist/solutions/reactive-layout/index.d.cts +32 -576
  235. package/dist/solutions/reactive-layout/index.d.ts +32 -576
  236. package/dist/solutions/reactive-layout/index.js +65 -5
  237. package/dist/solutions/reactive-layout/node-canvas/index.cjs +127 -117
  238. package/dist/solutions/reactive-layout/node-canvas/index.cjs.map +1 -1
  239. package/dist/solutions/reactive-layout/node-canvas/index.d.cts +4 -4
  240. package/dist/solutions/reactive-layout/node-canvas/index.d.ts +4 -4
  241. package/dist/solutions/reactive-layout/node-canvas/index.js +3 -3
  242. package/dist/solutions/reactive-layout/react-native/index.cjs +127 -117
  243. package/dist/solutions/reactive-layout/react-native/index.cjs.map +1 -1
  244. package/dist/solutions/reactive-layout/react-native/index.d.cts +4 -4
  245. package/dist/solutions/reactive-layout/react-native/index.d.ts +4 -4
  246. package/dist/solutions/reactive-layout/react-native/index.js +3 -3
  247. package/dist/solutions/reactive-layout/skia/index.cjs +127 -117
  248. package/dist/solutions/reactive-layout/skia/index.cjs.map +1 -1
  249. package/dist/solutions/reactive-layout/skia/index.d.cts +4 -4
  250. package/dist/solutions/reactive-layout/skia/index.d.ts +4 -4
  251. package/dist/solutions/reactive-layout/skia/index.js +3 -3
  252. package/dist/solutions/work-item/actions.cjs +1609 -1428
  253. package/dist/solutions/work-item/actions.cjs.map +1 -1
  254. package/dist/solutions/work-item/actions.d.cts +23 -184
  255. package/dist/solutions/work-item/actions.d.ts +23 -184
  256. package/dist/solutions/work-item/actions.js +1558 -934
  257. package/dist/solutions/work-item/actions.js.map +1 -1
  258. package/dist/solutions/work-item/scheduling.cjs +9181 -1838
  259. package/dist/solutions/work-item/scheduling.cjs.map +1 -1
  260. package/dist/solutions/work-item/scheduling.d.cts +1763 -328
  261. package/dist/solutions/work-item/scheduling.d.ts +1763 -328
  262. package/dist/solutions/work-item/scheduling.js +117 -3
  263. package/dist/solutions/work-item/work-queue.d.cts +7 -7
  264. package/dist/solutions/work-item/work-queue.d.ts +7 -7
  265. package/dist/sources/browser.cjs +1318 -1083
  266. package/dist/sources/browser.cjs.map +1 -1
  267. package/dist/sources/browser.d.cts +22 -6
  268. package/dist/sources/browser.d.ts +22 -6
  269. package/dist/sources/browser.js +4 -4
  270. package/dist/sources/browser.js.map +1 -1
  271. package/dist/sources/index.cjs +1318 -1083
  272. package/dist/sources/index.cjs.map +1 -1
  273. package/dist/sources/index.d.cts +4 -4
  274. package/dist/sources/index.d.ts +4 -4
  275. package/dist/sources/index.js +4 -4
  276. package/dist/sources/node.d.cts +3 -3
  277. package/dist/sources/node.d.ts +3 -3
  278. package/dist/storage/browser.cjs +16 -0
  279. package/dist/storage/browser.cjs.map +1 -1
  280. package/dist/storage/browser.js +3 -3
  281. package/dist/storage/index.cjs +16 -0
  282. package/dist/storage/index.cjs.map +1 -1
  283. package/dist/storage/index.d.cts +5 -4
  284. package/dist/storage/index.d.ts +5 -4
  285. package/dist/storage/index.js +6 -6
  286. package/dist/storage/node.cjs +16 -0
  287. package/dist/storage/node.cjs.map +1 -1
  288. package/dist/storage/node.js +3 -3
  289. package/dist/{store-C-joM4gh.d.ts → store-6_CHF6Ge.d.ts} +1 -1
  290. package/dist/{store-CNJwmT-h.d.cts → store-BljX8RkQ.d.cts} +1 -1
  291. package/dist/types-BAw2QVVE.d.cts +274 -0
  292. package/dist/types-BUbbbh4f.d.cts +34 -0
  293. package/dist/types-CMnzoL54.d.cts +457 -0
  294. package/dist/{types-CcPIn7sy.d.cts → types-CTN3XoMl.d.cts} +57 -108
  295. package/dist/types-CV_ohy5T.d.cts +357 -0
  296. package/dist/{types-BsJvElYZ.d.ts → types-DChxk1vK.d.ts} +57 -108
  297. package/dist/types-DRu7SnLV.d.ts +274 -0
  298. package/dist/types-DeID_FRl.d.ts +34 -0
  299. package/dist/types-IhKH0hGW.d.ts +357 -0
  300. package/dist/types-ePlD2uyT.d.ts +457 -0
  301. package/dist/{work-item-runtime-qaVgsL0T.d.cts → work-item-runtime-types-BTxLskN5.d.cts} +3 -93
  302. package/dist/{work-item-runtime-C3M79vE9.d.ts → work-item-runtime-types-DAsZbb2y.d.ts} +3 -93
  303. package/dist/work-queue/index.cjs +957 -953
  304. package/dist/work-queue/index.cjs.map +1 -1
  305. package/dist/work-queue/index.d.cts +9 -357
  306. package/dist/work-queue/index.d.ts +9 -357
  307. package/dist/work-queue/index.js +957 -953
  308. package/dist/work-queue/index.js.map +1 -1
  309. package/package.json +611 -513
  310. package/dist/chunk-3JR3EDB2.js.map +0 -1
  311. package/dist/chunk-4VLAQHZI.js.map +0 -1
  312. package/dist/chunk-6XAIOL3X.js +0 -2407
  313. package/dist/chunk-6XAIOL3X.js.map +0 -1
  314. package/dist/chunk-FBUU43PM.js.map +0 -1
  315. package/dist/chunk-HKK2JD7Z.js.map +0 -1
  316. package/dist/chunk-PC3BTTBE.js +0 -3217
  317. package/dist/chunk-PC3BTTBE.js.map +0 -1
  318. package/dist/chunk-QFY4AFY4.js.map +0 -1
  319. package/dist/chunk-SS2A464I.js.map +0 -1
  320. package/dist/chunk-V7CIJE4B.js.map +0 -1
  321. package/dist/chunk-XKXWK2KP.js.map +0 -1
  322. package/dist/chunk-YDSIVHRR.js.map +0 -1
  323. package/dist/chunk-YXMZ2N6J.js.map +0 -1
  324. /package/dist/{chunk-CZNV3VXM.js.map → chunk-3J7UPZL5.js.map} +0 -0
  325. /package/dist/{chunk-Z2ANQ6JW.js.map → chunk-4Q77MMJY.js.map} +0 -0
  326. /package/dist/{chunk-K3FXTC3I.js.map → chunk-HJACH5PU.js.map} +0 -0
  327. /package/dist/{chunk-GTPCOEOZ.js.map → chunk-IDMLXLLG.js.map} +0 -0
  328. /package/dist/{chunk-DKP56CSW.js.map → chunk-JKAYLDQV.js.map} +0 -0
  329. /package/dist/{chunk-43BKLFZU.js.map → chunk-KFURM6FM.js.map} +0 -0
  330. /package/dist/{chunk-2747WN4Y.js.map → chunk-PUSRRALM.js.map} +0 -0
  331. /package/dist/{chunk-VTHLCFN4.js.map → chunk-RAHNUYA5.js.map} +0 -0
  332. /package/dist/{chunk-IXZBUWSP.js.map → chunk-UEMN5URK.js.map} +0 -0
  333. /package/dist/{chunk-6PHB5CJS.js.map → chunk-ZLFRB6FI.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/solutions/work-item/actions.ts"],"sourcesContent":["/**\n * WorkItem domain action intake, admission, and application facts (D239/D333-D343).\n *\n * This focused solution subpath keeps action mutation data-first: proposals and\n * admissions are visible facts, and application lowers only to append-only\n * WorkItem authoring facts plus status/issue/audit projections. It does not\n * mutate WorkItem projections directly, run executors, claim queues, or install\n * hidden schedulers.\n */\n\nimport { type Ctx, depBatch } from \"../../ctx/types.js\";\nimport type { DataIssue } from \"../../data/index.js\";\nimport type { Graph } from \"../../graph/graph.js\";\nimport type { BoundaryCapabilityKind, BoundaryCapabilityRef } from \"../../inspection/boundary.js\";\nimport type { Node } from \"../../node/node.js\";\nimport type { AgentRuntimeAuditRecord, SourceRef } from \"../../orchestration/agent-runtime.js\";\nimport type {\n\tWorkItemDomainActionAdmission,\n\tWorkItemDomainActionAdmissionDecision,\n\tWorkItemDomainActionProposal,\n} from \"../../orchestration/work-item-runtime.js\";\nimport type { CapabilityAdmission, CapabilityAdmissionStatus } from \"../capability-admission.js\";\nimport {\n\ttype AcceptanceCriterion,\n\ttype VerificationPlan,\n\tvalidateAcceptanceCriteria,\n\tvalidateVerificationPlan,\n\ttype WorkItemAuthoringFact,\n\ttype WorkItemDraft,\n\ttype WorkItemPatch,\n\ttype WorkItemProjection,\n} from \"./scheduling.js\";\n\nexport type {\n\tWorkItemDomainActionAdmission,\n\tWorkItemDomainActionAdmissionDecision,\n\tWorkItemDomainActionAdmissionPolicy,\n\tWorkItemDomainActionAdmissionViews,\n\tWorkItemDomainActionProposal,\n\tWorkItemDomainActionProposalSpec,\n} from \"../../orchestration/work-item-runtime.js\";\nexport { workItemDomainActionAdmissionProjector } from \"../../orchestration/work-item-runtime.js\";\n\nexport type WorkItemDomainActionKind =\n\t| \"patch\"\n\t| \"mark-verified\"\n\t| \"require-review\"\n\t| \"spawn-proposed\"\n\t| \"spawn-child\"\n\t| (string & {});\n\nexport interface WorkItemDomainActionProposalIntake<TPayload = unknown> {\n\treadonly kind: \"work-item-domain-action-proposal-intake\";\n\treadonly proposalId: string;\n\treadonly workItemId: string;\n\treadonly actionKind: WorkItemDomainActionKind;\n\treadonly payload?: TPayload;\n\treadonly reason?: string;\n\treadonly policyId?: string;\n\treadonly effectRunId?: string;\n\treadonly effectRunResultId?: string;\n\treadonly evidenceId?: string;\n\treadonly proposedAtMs?: number;\n\treadonly sourceRefs?: readonly SourceRef[];\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport type WorkItemDomainActionProposalInput<TPayload = unknown> =\n\t| WorkItemDomainActionProposal<TPayload>\n\t| WorkItemDomainActionProposalIntake<TPayload>\n\t| unknown;\n\nexport type WorkItemDomainActionStatusState =\n\t| \"proposed\"\n\t| \"applied\"\n\t| \"rejected\"\n\t| \"deferred\"\n\t| \"duplicate\"\n\t| \"missing-policy\"\n\t| \"merged\"\n\t| \"policy-rejected\"\n\t| \"proposal-only\";\n\nexport interface WorkItemDomainActionStatus {\n\treadonly kind: \"work-item-domain-action-status\";\n\treadonly statusId: string;\n\treadonly workItemId?: string;\n\treadonly proposalId?: string;\n\treadonly admissionId?: string;\n\treadonly actionKind?: string;\n\treadonly state: WorkItemDomainActionStatusState;\n\treadonly code?: string;\n\treadonly message?: string;\n\treadonly sourceRefs?: readonly SourceRef[];\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface WorkItemPatchActionPayload<TInput = unknown> {\n\treadonly patch?: WorkItemPatch<TInput>;\n\treadonly acceptanceCriteria?: readonly AcceptanceCriterion[];\n\treadonly verificationPlan?: VerificationPlan<TInput>;\n\treadonly executionRelevantFields?: readonly string[];\n\treadonly authorId?: string;\n\treadonly eventId?: string;\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface WorkItemSpawnActionPayload<TInput = unknown> {\n\treadonly workItemId?: string;\n\treadonly childWorkItemId?: string;\n\treadonly draft?: WorkItemDraft<TInput>;\n\treadonly authorId?: string;\n\treadonly eventId?: string;\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface WorkItemDomainActionApplyPolicy {\n\treadonly kind: \"work-item-domain-action-apply-policy\";\n\treadonly policyId: string;\n\treadonly actionKinds?: readonly WorkItemDomainActionKind[];\n\treadonly patch?: {\n\t\treadonly allowedFields?: readonly string[];\n\t\treadonly executionRelevantFields?: readonly string[];\n\t\treadonly allowAcceptanceCriteria?: boolean;\n\t\treadonly allowVerificationPlan?: boolean;\n\t};\n\treadonly spawn?: {\n\t\treadonly create?: boolean;\n\t\treadonly linkParent?: boolean;\n\t\treadonly idempotencyKey?: string;\n\t\treadonly maxChildrenPerAdmission?: number;\n\t\treadonly childWorkItemId?: string;\n\t\treadonly childIdPrefix?: string;\n\t};\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface WorkItemDomainActionApplication {\n\treadonly kind: \"work-item-domain-action-application\";\n\treadonly applicationId: string;\n\treadonly admissionId: string;\n\treadonly proposalId: string;\n\treadonly workItemId: string;\n\treadonly actionKind: string;\n\treadonly state: Exclude<WorkItemDomainActionStatusState, \"proposed\">;\n\treadonly producedFactIds?: readonly string[];\n\treadonly reason?: string;\n\treadonly sourceRefs?: readonly SourceRef[];\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface WorkItemDomainActionIntakeOptions {\n\treadonly name?: string;\n\treadonly proposals: Node<WorkItemDomainActionProposalInput>;\n\treadonly now?: () => number;\n}\n\nexport interface WorkItemDomainActionIntakeBundle {\n\treadonly proposals: Node<WorkItemDomainActionProposal>;\n\treadonly status: Node<WorkItemDomainActionStatus>;\n\treadonly issues: Node<DataIssue>;\n\treadonly audit: Node<AgentRuntimeAuditRecord>;\n}\n\nexport interface WorkItemDomainActionApplicationOptions<TInput = unknown> {\n\treadonly name?: string;\n\treadonly proposals: Node<WorkItemDomainActionProposal>;\n\treadonly admissions: Node<WorkItemDomainActionAdmission>;\n\treadonly workItems: Node<WorkItemProjection<TInput>>;\n\treadonly applyPolicies?: Node<WorkItemDomainActionApplyPolicy>;\n}\n\nexport interface WorkItemDomainActionApplicationBundle<TInput = unknown> {\n\treadonly authoringFacts: Node<WorkItemAuthoringFact<TInput>>;\n\treadonly applications: Node<WorkItemDomainActionApplication>;\n\treadonly status: Node<WorkItemDomainActionStatus>;\n\treadonly issues: Node<DataIssue>;\n\treadonly audit: Node<AgentRuntimeAuditRecord>;\n}\n\n/**\n * Product-owned command capability policy (D357): maps WorkItem domain action\n * proposals to explicit boundary capability refs and admission subjects without\n * defining provider/security registry semantics or protocol status vocabulary.\n */\nexport interface WorkItemDomainActionCapabilityGuardPolicy {\n\treadonly kind: \"work-item-domain-action-capability-guard-policy\";\n\treadonly policyId: string;\n\treadonly actionKinds?: readonly WorkItemDomainActionKind[];\n\treadonly capabilityRefs: readonly BoundaryCapabilityRef[];\n\treadonly admissionSubjectIds: readonly string[];\n\treadonly metadata?: Record<string, unknown>;\n}\n\n/**\n * Visible DATA status for the capability guard (D357). Missing or mismatched\n * capability facts remain product issues/status, not protocol ERROR messages.\n */\nexport interface WorkItemDomainActionCapabilityGuardStatus {\n\treadonly kind: \"work-item-domain-action-capability-guard-status\";\n\treadonly statusId: string;\n\treadonly state: \"admitted\" | \"rejected\" | \"deferred\" | \"issue\";\n\treadonly workItemId?: string;\n\treadonly proposalId?: string;\n\treadonly actionKind?: string;\n\treadonly policyId?: string;\n\treadonly capabilityRefs?: readonly BoundaryCapabilityRef[];\n\treadonly admissionSubjectIds?: readonly string[];\n\treadonly admissionIds?: readonly string[];\n\treadonly issues?: readonly DataIssue[];\n\treadonly message?: string;\n\treadonly sourceRefs?: readonly SourceRef[];\n\treadonly metadata?: Record<string, unknown>;\n}\n\n/**\n * Inputs for the WorkItem domain-action capability guard. All dependencies are\n * ordinary solution/product DATA facts; the guard does not mutate WorkItems or\n * claim dispatch queues.\n */\nexport interface WorkItemDomainActionCapabilityGuardOptions {\n\treadonly name?: string;\n\treadonly proposals: Node<WorkItemDomainActionProposal>;\n\treadonly capabilityAdmissions: Node<CapabilityAdmission>;\n\treadonly guardPolicies: Node<WorkItemDomainActionCapabilityGuardPolicy>;\n\treadonly capabilityAdmissionStatus?: Node<CapabilityAdmissionStatus>;\n\treadonly now?: () => number;\n}\n\n/**\n * Output facts for product admission consumption. Decisions feed the existing\n * WorkItem domain-action admission path; status/issues/audit remain inspectable\n * product DATA.\n */\nexport interface WorkItemDomainActionCapabilityGuardBundle {\n\treadonly decisions: Node<WorkItemDomainActionAdmissionDecision>;\n\treadonly status: Node<WorkItemDomainActionCapabilityGuardStatus>;\n\treadonly issues: Node<DataIssue>;\n\treadonly audit: Node<AgentRuntimeAuditRecord>;\n}\n\ntype IntakeFact =\n\t| { readonly kind: \"proposal\"; readonly value: WorkItemDomainActionProposal }\n\t| { readonly kind: \"status\"; readonly value: WorkItemDomainActionStatus }\n\t| { readonly kind: \"issue\"; readonly value: DataIssue }\n\t| { readonly kind: \"audit\"; readonly value: AgentRuntimeAuditRecord };\n\ntype ApplicationFact<T> =\n\t| { readonly kind: \"authoring-fact\"; readonly value: WorkItemAuthoringFact<T> }\n\t| { readonly kind: \"application\"; readonly value: WorkItemDomainActionApplication }\n\t| { readonly kind: \"status\"; readonly value: WorkItemDomainActionStatus }\n\t| { readonly kind: \"issue\"; readonly value: DataIssue }\n\t| { readonly kind: \"audit\"; readonly value: AgentRuntimeAuditRecord };\n\ntype CapabilityGuardFact =\n\t| { readonly kind: \"decision\"; readonly value: WorkItemDomainActionAdmissionDecision }\n\t| { readonly kind: \"status\"; readonly value: WorkItemDomainActionCapabilityGuardStatus }\n\t| { readonly kind: \"issue\"; readonly value: DataIssue }\n\t| { readonly kind: \"audit\"; readonly value: AgentRuntimeAuditRecord };\n\ninterface IntakeState {\n\treadonly proposals: Set<string>;\n\tstatusSeq: number;\n\tauditSeq: number;\n}\n\ninterface ApplicationState<T> {\n\treadonly proposals: Map<string, WorkItemDomainActionProposal>;\n\treadonly admissions: Map<string, WorkItemDomainActionAdmission>;\n\treadonly workItems: Map<string, WorkItemProjection<T>>;\n\treadonly policies: Map<string, WorkItemDomainActionApplyPolicy>;\n\treadonly appliedAdmissions: Set<string>;\n\treadonly emittedFactIds: Set<string>;\n\treadonly issueKeys: Set<string>;\n\tstatusSeq: number;\n\tauditSeq: number;\n}\n\ninterface CapabilityGuardState {\n\treadonly proposals: Map<string, WorkItemDomainActionProposal>;\n\treadonly admissionsByCapability: Map<string, CapabilityAdmission[]>;\n\treadonly issueStatusesByCapability: Map<string, CapabilityAdmissionStatus[]>;\n\treadonly issueStatusesWithoutCapability: CapabilityAdmissionStatus[];\n\treadonly policies: Map<string, WorkItemDomainActionCapabilityGuardPolicy>;\n\treadonly emittedProposalDecisions: Set<string>;\n\treadonly emittedStatusKeys: Set<string>;\n\treadonly issueKeys: Set<string>;\n\tstatusSeq: number;\n\tauditSeq: number;\n}\n\nconst patchFieldKeys = new Set([\n\t\"summary\",\n\t\"detail\",\n\t\"detailRefs\",\n\t\"kind\",\n\t\"priority\",\n\t\"tags\",\n\t\"owner\",\n\t\"assignee\",\n\t\"deadlineMs\",\n\t\"customFields\",\n\t\"sourceRefs\",\n\t\"metadata\",\n]);\n\nexport function workItemDomainActionProposal(\n\tproposalId: string,\n\tworkItemId: string,\n\tactionKind: WorkItemDomainActionKind,\n\topts: Omit<\n\t\tPartial<WorkItemDomainActionProposal>,\n\t\t\"kind\" | \"proposalId\" | \"workItemId\" | \"actionKind\"\n\t> = {},\n): WorkItemDomainActionProposal {\n\treturn {\n\t\tkind: \"work-item-domain-action-proposal\",\n\t\tproposalId,\n\t\tworkItemId,\n\t\tactionKind,\n\t\teffectRunId: opts.effectRunId ?? `domain-action:${proposalId}:effect-run`,\n\t\teffectRunResultId: opts.effectRunResultId ?? `domain-action:${proposalId}:effect-run-result`,\n\t\tevidenceId: opts.evidenceId ?? `domain-action:${proposalId}:evidence`,\n\t\tpolicyId: opts.policyId ?? \"domain-action-proposal\",\n\t\tpayload: opts.payload,\n\t\treason: opts.reason,\n\t\tsourceRefs: opts.sourceRefs,\n\t\tproposedAtMs: opts.proposedAtMs,\n\t\tmetadata: opts.metadata,\n\t};\n}\n\nexport function workItemDomainActionProposalIntake<TPayload = unknown>(\n\tproposalId: string,\n\tworkItemId: string,\n\tactionKind: WorkItemDomainActionKind,\n\topts: Omit<\n\t\tPartial<WorkItemDomainActionProposalIntake<TPayload>>,\n\t\t\"kind\" | \"proposalId\" | \"workItemId\" | \"actionKind\"\n\t> = {},\n): WorkItemDomainActionProposalIntake<TPayload> {\n\treturn {\n\t\tkind: \"work-item-domain-action-proposal-intake\",\n\t\tproposalId,\n\t\tworkItemId,\n\t\tactionKind,\n\t\tpayload: opts.payload,\n\t\treason: opts.reason,\n\t\tpolicyId: opts.policyId,\n\t\teffectRunId: opts.effectRunId,\n\t\teffectRunResultId: opts.effectRunResultId,\n\t\tevidenceId: opts.evidenceId,\n\t\tproposedAtMs: opts.proposedAtMs,\n\t\tsourceRefs: opts.sourceRefs,\n\t\tmetadata: opts.metadata,\n\t};\n}\n\nexport function workItemDomainActionApplyPolicy(\n\tpolicyId: string,\n\topts: Omit<Partial<WorkItemDomainActionApplyPolicy>, \"kind\" | \"policyId\"> = {},\n): WorkItemDomainActionApplyPolicy {\n\treturn {\n\t\tkind: \"work-item-domain-action-apply-policy\",\n\t\tpolicyId,\n\t\tactionKinds: opts.actionKinds,\n\t\tpatch: opts.patch,\n\t\tspawn: opts.spawn,\n\t\tmetadata: opts.metadata,\n\t};\n}\n\nexport function workItemDomainActionProposalIntakeProjector(\n\tgraph: Graph,\n\topts: WorkItemDomainActionIntakeOptions,\n): WorkItemDomainActionIntakeBundle {\n\tconst name = opts.name ?? \"workItemDomainActionIntake\";\n\tconst now = opts.now ?? Date.now;\n\tconst runtime = graph.node<IntakeFact>(\n\t\t[opts.proposals],\n\t\t(ctx) => {\n\t\t\tconst state = ctx.state.get<IntakeState>() ?? {\n\t\t\t\tproposals: new Set(),\n\t\t\t\tstatusSeq: 0,\n\t\t\t\tauditSeq: 0,\n\t\t\t};\n\t\t\tfor (const raw of depBatch(ctx, 0) ?? []) reduceProposalIntake(ctx, state, raw, now());\n\t\t\tctx.state.set(state);\n\t\t},\n\t\t{\n\t\t\tname: `${name}/runtime`,\n\t\t\tfactory: \"workItemDomainActionProposalIntakeProjector\",\n\t\t\tpartial: true,\n\t\t\tcompleteWhenDepsComplete: false,\n\t\t\terrorWhenDepsError: false,\n\t\t},\n\t);\n\treturn {\n\t\tproposals: project(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/proposals`,\n\t\t\t\"workItemDomainActionProposals\",\n\t\t\t(fact) => (fact.kind === \"proposal\" ? fact.value : undefined),\n\t\t),\n\t\tstatus: project(graph, runtime, `${name}/status`, \"workItemDomainActionStatus\", (fact) =>\n\t\t\tfact.kind === \"status\" ? fact.value : undefined,\n\t\t),\n\t\tissues: project(graph, runtime, `${name}/issues`, \"workItemDomainActionIssues\", (fact) =>\n\t\t\tfact.kind === \"issue\" ? fact.value : undefined,\n\t\t),\n\t\taudit: project(graph, runtime, `${name}/audit`, \"workItemDomainActionAudit\", (fact) =>\n\t\t\tfact.kind === \"audit\" ? fact.value : undefined,\n\t\t),\n\t};\n}\n\nexport function workItemDomainActionApplicationProjector<TInput = unknown>(\n\tgraph: Graph,\n\topts: WorkItemDomainActionApplicationOptions<TInput>,\n): WorkItemDomainActionApplicationBundle<TInput> {\n\tconst name = opts.name ?? \"workItemDomainActionApplication\";\n\tconst deps =\n\t\topts.applyPolicies === undefined\n\t\t\t? [opts.proposals, opts.admissions, opts.workItems]\n\t\t\t: [opts.proposals, opts.admissions, opts.workItems, opts.applyPolicies];\n\tconst runtime = graph.node<ApplicationFact<TInput>>(\n\t\tdeps,\n\t\t(ctx) => {\n\t\t\tconst state = ctx.state.get<ApplicationState<TInput>>() ?? {\n\t\t\t\tproposals: new Map(),\n\t\t\t\tadmissions: new Map(),\n\t\t\t\tworkItems: new Map(),\n\t\t\t\tpolicies: new Map(),\n\t\t\t\tappliedAdmissions: new Set(),\n\t\t\t\temittedFactIds: new Set(),\n\t\t\t\tissueKeys: new Set(),\n\t\t\t\tstatusSeq: 0,\n\t\t\t\tauditSeq: 0,\n\t\t\t};\n\t\t\tfor (const raw of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst proposal = raw as WorkItemDomainActionProposal;\n\t\t\t\tif (state.proposals.has(proposal.proposalId)) {\n\t\t\t\t\temitApplicationIssue(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\t`duplicate-proposal:${proposal.proposalId}`,\n\t\t\t\t\t\t\"duplicate-suppressed\",\n\t\t\t\t\t\t`Duplicate WorkItem domain action proposal '${proposal.proposalId}' suppressed`,\n\t\t\t\t\t\tproposal.workItemId,\n\t\t\t\t\t\tproposal.sourceRefs,\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstate.proposals.set(proposal.proposalId, proposal);\n\t\t\t}\n\t\t\tfor (const raw of depBatch(ctx, 2) ?? []) {\n\t\t\t\tconst workItem = raw as WorkItemProjection<TInput>;\n\t\t\t\tstate.workItems.set(workItem.workItemId, workItem);\n\t\t\t}\n\t\t\tif (opts.applyPolicies !== undefined) {\n\t\t\t\tfor (const raw of depBatch(ctx, 3) ?? []) {\n\t\t\t\t\tconst policy = raw as WorkItemDomainActionApplyPolicy;\n\t\t\t\t\tstate.policies.set(policy.policyId, policy);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const raw of depBatch(ctx, 1) ?? []) {\n\t\t\t\tconst admission = raw as WorkItemDomainActionAdmission;\n\t\t\t\tif (state.admissions.has(admission.admissionId)) {\n\t\t\t\t\temitApplicationIssue(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\t`duplicate-admission:${admission.admissionId}`,\n\t\t\t\t\t\t\"duplicate-suppressed\",\n\t\t\t\t\t\t`Duplicate WorkItem domain action admission '${admission.admissionId}' suppressed`,\n\t\t\t\t\t\tadmission.workItemId,\n\t\t\t\t\t\tadmissionRefs(admission),\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstate.admissions.set(admission.admissionId, admission);\n\t\t\t}\n\t\t\tfor (const admission of state.admissions.values()) applyAdmission(ctx, state, admission);\n\t\t\tctx.state.set(state);\n\t\t},\n\t\t{\n\t\t\tname: `${name}/runtime`,\n\t\t\tfactory: \"workItemDomainActionApplicationProjector\",\n\t\t\tpartial: true,\n\t\t\tcompleteWhenDepsComplete: false,\n\t\t\terrorWhenDepsError: false,\n\t\t},\n\t);\n\treturn {\n\t\tauthoringFacts: project(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/authoringFacts`,\n\t\t\t\"workItemDomainActionAuthoringFacts\",\n\t\t\t(fact) => (fact.kind === \"authoring-fact\" ? fact.value : undefined),\n\t\t),\n\t\tapplications: project(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/applications`,\n\t\t\t\"workItemDomainActionApplications\",\n\t\t\t(fact) => (fact.kind === \"application\" ? fact.value : undefined),\n\t\t),\n\t\tstatus: project(graph, runtime, `${name}/status`, \"workItemDomainActionStatus\", (fact) =>\n\t\t\tfact.kind === \"status\" ? fact.value : undefined,\n\t\t),\n\t\tissues: project(graph, runtime, `${name}/issues`, \"workItemDomainActionIssues\", (fact) =>\n\t\t\tfact.kind === \"issue\" ? fact.value : undefined,\n\t\t),\n\t\taudit: project(graph, runtime, `${name}/audit`, \"workItemDomainActionAudit\", (fact) =>\n\t\t\tfact.kind === \"audit\" ? fact.value : undefined,\n\t\t),\n\t};\n}\n\n/**\n * Connects CapabilityAdmission facts to WorkItem domain-action admission as a\n * product-owned guard (D357), without adding protocol/boundary vocabulary or\n * treating AutoPanel display affordances as hard security enforcement.\n */\nexport function workItemDomainActionCapabilityGuardProjector(\n\tgraph: Graph,\n\topts: WorkItemDomainActionCapabilityGuardOptions,\n): WorkItemDomainActionCapabilityGuardBundle {\n\tconst name = opts.name ?? \"workItemDomainActionCapabilityGuard\";\n\tconst deps =\n\t\topts.capabilityAdmissionStatus === undefined\n\t\t\t? [opts.proposals, opts.capabilityAdmissions, opts.guardPolicies]\n\t\t\t: [\n\t\t\t\t\topts.proposals,\n\t\t\t\t\topts.capabilityAdmissions,\n\t\t\t\t\topts.guardPolicies,\n\t\t\t\t\topts.capabilityAdmissionStatus,\n\t\t\t\t];\n\tconst statusIndex = opts.capabilityAdmissionStatus === undefined ? -1 : 3;\n\tconst now = opts.now ?? Date.now;\n\tconst runtime = graph.node<CapabilityGuardFact>(\n\t\tdeps,\n\t\t(ctx) => {\n\t\t\tconst state: CapabilityGuardState = ctx.state.get<CapabilityGuardState>() ?? {\n\t\t\t\tproposals: new Map(),\n\t\t\t\tadmissionsByCapability: new Map(),\n\t\t\t\tissueStatusesByCapability: new Map(),\n\t\t\t\tissueStatusesWithoutCapability: [],\n\t\t\t\tpolicies: new Map(),\n\t\t\t\temittedProposalDecisions: new Set(),\n\t\t\t\temittedStatusKeys: new Set(),\n\t\t\t\tissueKeys: new Set(),\n\t\t\t\tstatusSeq: 0,\n\t\t\t\tauditSeq: 0,\n\t\t\t};\n\t\t\tfor (const raw of depBatch(ctx, 2) ?? []) {\n\t\t\t\tconst policyIssue = capabilityGuardPolicyIssue(raw);\n\t\t\t\tif (policyIssue !== undefined) {\n\t\t\t\t\temitCapabilityGuardIssue(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\t`malformed-policy:${recordString(raw, \"policyId\") ?? \"unknown\"}`,\n\t\t\t\t\t\tpolicyIssue,\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst policy = raw as WorkItemDomainActionCapabilityGuardPolicy;\n\t\t\t\tstate.policies.set(policy.policyId, policy);\n\t\t\t}\n\t\t\tfor (const raw of depBatch(ctx, 1) ?? []) {\n\t\t\t\tconst admissionIssue = capabilityAdmissionIssue(raw);\n\t\t\t\tif (admissionIssue !== undefined) {\n\t\t\t\t\temitCapabilityGuardIssue(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\t`malformed-admission:${recordString(raw, \"admissionId\") ?? \"unknown\"}`,\n\t\t\t\t\t\tadmissionIssue,\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst admission = raw as CapabilityAdmission;\n\t\t\t\tconst capabilityKey = capabilityBoundaryRefId(admission.capability);\n\t\t\t\tconst byCapability: CapabilityAdmission[] =\n\t\t\t\t\tstate.admissionsByCapability.get(capabilityKey) ?? [];\n\t\t\t\tif (!byCapability.some((item) => item.admissionId === admission.admissionId)) {\n\t\t\t\t\tstate.admissionsByCapability.set(capabilityKey, [...byCapability, admission]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (statusIndex >= 0) {\n\t\t\t\tfor (const raw of depBatch(ctx, statusIndex) ?? []) {\n\t\t\t\t\tconst statusIssue = capabilityAdmissionStatusIssue(raw);\n\t\t\t\t\tif (statusIssue !== undefined) {\n\t\t\t\t\t\temitCapabilityGuardIssue(\n\t\t\t\t\t\t\tctx,\n\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t`malformed-capability-status:${recordString(raw, \"statusId\") ?? \"unknown\"}`,\n\t\t\t\t\t\t\tstatusIssue,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tconst status = raw as CapabilityAdmissionStatus;\n\t\t\t\t\tif (status.state !== \"capability-admission-issue\") continue;\n\t\t\t\t\tconst capabilityId = status.capabilityId;\n\t\t\t\t\tconst capabilityKind = status.capabilityKind;\n\t\t\t\t\tif (capabilityId !== undefined && capabilityKind !== undefined) {\n\t\t\t\t\t\tconst capabilityKey = capabilityBoundaryRefId({\n\t\t\t\t\t\t\tid: capabilityId,\n\t\t\t\t\t\t\tkind: capabilityKind,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconst statuses: CapabilityAdmissionStatus[] =\n\t\t\t\t\t\t\tstate.issueStatusesByCapability.get(capabilityKey) ?? [];\n\t\t\t\t\t\tif (!statuses.some((item) => item.statusId === status.statusId)) {\n\t\t\t\t\t\t\tstate.issueStatusesByCapability.set(capabilityKey, [...statuses, status]);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (\n\t\t\t\t\t\t!state.issueStatusesWithoutCapability.some((item) => item.statusId === status.statusId)\n\t\t\t\t\t) {\n\t\t\t\t\t\tstate.issueStatusesWithoutCapability.push(status);\n\t\t\t\t\t}\n\t\t\t\t\tfor (const proposal of state.proposals.values())\n\t\t\t\t\t\temitCapabilityStatusIssueForProposal(ctx, state, proposal, status);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const raw of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst proposalIssue = capabilityGuardProposalIssue(raw);\n\t\t\t\tif (proposalIssue !== undefined) {\n\t\t\t\t\temitCapabilityGuardIssue(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\t`malformed-proposal:${recordString(raw, \"proposalId\") ?? \"unknown\"}`,\n\t\t\t\t\t\tproposalIssue,\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst proposal = raw as WorkItemDomainActionProposal;\n\t\t\t\tstate.proposals.set(proposal.proposalId, proposal);\n\t\t\t}\n\t\t\tfor (const proposal of state.proposals.values())\n\t\t\t\tevaluateCapabilityGuardProposal(ctx, state, proposal, now());\n\t\t\tctx.state.set(state);\n\t\t},\n\t\t{\n\t\t\tname: `${name}/runtime`,\n\t\t\tfactory: \"workItemDomainActionCapabilityGuardProjector\",\n\t\t\tpartial: true,\n\t\t\tcompleteWhenDepsComplete: false,\n\t\t\terrorWhenDepsError: false,\n\t\t},\n\t);\n\treturn {\n\t\tdecisions: project(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/decisions`,\n\t\t\t\"workItemDomainActionCapabilityGuardDecisions\",\n\t\t\t(fact) => (fact.kind === \"decision\" ? fact.value : undefined),\n\t\t),\n\t\tstatus: project(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/status`,\n\t\t\t\"workItemDomainActionCapabilityGuardStatus\",\n\t\t\t(fact) => (fact.kind === \"status\" ? fact.value : undefined),\n\t\t),\n\t\tissues: project(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/issues`,\n\t\t\t\"workItemDomainActionCapabilityGuardIssues\",\n\t\t\t(fact) => (fact.kind === \"issue\" ? fact.value : undefined),\n\t\t),\n\t\taudit: project(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/audit`,\n\t\t\t\"workItemDomainActionCapabilityGuardAudit\",\n\t\t\t(fact) => (fact.kind === \"audit\" ? fact.value : undefined),\n\t\t),\n\t};\n}\n\nfunction evaluateCapabilityGuardProposal(\n\tctx: Ctx,\n\tstate: CapabilityGuardState,\n\tproposal: WorkItemDomainActionProposal,\n\tdecidedAtMs: number,\n): void {\n\tif (state.emittedProposalDecisions.has(proposal.proposalId)) return;\n\tconst policy = selectCapabilityGuardPolicy(state, proposal);\n\tif (typeof policy === \"string\") {\n\t\temitCapabilityGuardIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`policy:${proposal.proposalId}:${policy}`,\n\t\t\tdataIssue(policy, capabilityGuardPolicyMessage(policy, proposal), {\n\t\t\t\tsubjectId: proposal.workItemId,\n\t\t\t\trefs: [ref(\"work-item-domain-action-proposal\", proposal.proposalId)],\n\t\t\t}),\n\t\t);\n\t\treturn;\n\t}\n\tfor (const status of state.issueStatusesWithoutCapability)\n\t\temitCapabilityStatusIssueForProposal(ctx, state, proposal, status);\n\tfor (const capabilityRef of policy.capabilityRefs) {\n\t\tfor (const status of state.issueStatusesByCapability.get(\n\t\t\tcapabilityBoundaryRefId(capabilityRef),\n\t\t) ?? [])\n\t\t\temitCapabilityStatusIssueForProposal(ctx, state, proposal, status);\n\t}\n\tconst admissions = policy.capabilityRefs.map((capabilityRef) =>\n\t\tlatestCapabilityAdmission(state, policy, capabilityRef),\n\t);\n\tconst missingCapabilityRefs = policy.capabilityRefs.filter(\n\t\t(_, index) => admissions[index] === undefined,\n\t);\n\tconst deferredCapabilityRefs = admissions\n\t\t.filter((admission): admission is CapabilityAdmission => admission !== undefined)\n\t\t.filter((admission) => admission.state === \"deferred\")\n\t\t.map((admission) => capabilityBoundaryRefId(admission.capability));\n\tif (missingCapabilityRefs.length > 0 || deferredCapabilityRefs.length > 0) {\n\t\temitCapabilityGuardStatusOnce(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`deferred:${proposal.proposalId}:${policy.policyId}:missing=${missingCapabilityRefs.map(capabilityBoundaryRefId).join(\",\")}:deferred=${deferredCapabilityRefs.join(\",\")}`,\n\t\t\t{\n\t\t\t\tstate: \"deferred\",\n\t\t\t\tworkItemId: proposal.workItemId,\n\t\t\t\tproposalId: proposal.proposalId,\n\t\t\t\tactionKind: proposal.actionKind,\n\t\t\t\tpolicyId: policy.policyId,\n\t\t\t\tcapabilityRefs: policy.capabilityRefs,\n\t\t\t\tadmissionSubjectIds: policy.admissionSubjectIds,\n\t\t\t\tmessage: \"WorkItem domain action is waiting for capability admission\",\n\t\t\t\tsourceRefs: capabilityGuardRefs(proposal, policy, admissions),\n\t\t\t\tmetadata: {\n\t\t\t\t\tmissingCapabilityRefs: missingCapabilityRefs.map(capabilityBoundaryRefId),\n\t\t\t\t\tdeferredCapabilityRefs,\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\t\treturn;\n\t}\n\tconst presentAdmissions = admissions.filter(\n\t\t(admission): admission is CapabilityAdmission => admission !== undefined,\n\t);\n\tconst blocked = presentAdmissions.filter((admission) => admission.state === \"blocked\");\n\tconst outcome: WorkItemDomainActionAdmissionDecision[\"outcome\"] =\n\t\tblocked.length === 0 ? \"admit\" : \"reject\";\n\tconst decision: WorkItemDomainActionAdmissionDecision = {\n\t\tkind: \"work-item-domain-action-admission-decision\",\n\t\tdecisionId: `capability-guard:${proposal.proposalId}:decision`,\n\t\tadmissionId: `capability-guard:${proposal.proposalId}:admission`,\n\t\tproposalId: proposal.proposalId,\n\t\toutcome,\n\t\treason:\n\t\t\tblocked.length === 0\n\t\t\t\t? \"Capability guard admitted required capabilities\"\n\t\t\t\t: \"Capability guard rejected blocked capabilities\",\n\t\tdecidedAtMs,\n\t\tsourceRefs: capabilityGuardRefs(proposal, policy, presentAdmissions),\n\t\tmetadata: {\n\t\t\tcapabilityGuardPolicyId: policy.policyId,\n\t\t\tcapabilityRefs: policy.capabilityRefs.map(capabilityBoundaryRefId),\n\t\t\tadmissionSubjectIds: policy.admissionSubjectIds,\n\t\t\tblockedCapabilityRefs: blocked.map((admission) =>\n\t\t\t\tcapabilityBoundaryRefId(admission.capability),\n\t\t\t),\n\t\t},\n\t};\n\tstate.emittedProposalDecisions.add(proposal.proposalId);\n\temitCapabilityGuard(ctx, \"decision\", decision);\n\temitCapabilityGuardStatus(ctx, state, {\n\t\tstate: outcome === \"admit\" ? \"admitted\" : \"rejected\",\n\t\tworkItemId: proposal.workItemId,\n\t\tproposalId: proposal.proposalId,\n\t\tactionKind: proposal.actionKind,\n\t\tpolicyId: policy.policyId,\n\t\tcapabilityRefs: policy.capabilityRefs,\n\t\tadmissionSubjectIds: policy.admissionSubjectIds,\n\t\tadmissionIds: presentAdmissions.map((admission) => admission.admissionId),\n\t\tsourceRefs: decision.sourceRefs,\n\t\tmetadata: { decisionId: decision.decisionId, admissionId: decision.admissionId },\n\t});\n}\n\nfunction capabilityGuardProposalIssue(proposal: unknown): DataIssue | undefined {\n\tif (\n\t\t!isRecord(proposal) ||\n\t\tproposal.kind !== \"work-item-domain-action-proposal\" ||\n\t\ttypeof proposal.proposalId !== \"string\" ||\n\t\tproposal.proposalId.length === 0 ||\n\t\ttypeof proposal.workItemId !== \"string\" ||\n\t\tproposal.workItemId.length === 0 ||\n\t\ttypeof proposal.actionKind !== \"string\" ||\n\t\tproposal.actionKind.length === 0 ||\n\t\t(proposal.sourceRefs !== undefined && !isSourceRefArray(proposal.sourceRefs))\n\t) {\n\t\treturn dataIssue(\n\t\t\t\"malformed-work-item-domain-action-capability-guard-proposal\",\n\t\t\t\"WorkItem domain action capability guard requires valid proposal DATA facts\",\n\t\t\t{ subjectId: recordString(proposal, \"workItemId\") },\n\t\t);\n\t}\n\treturn undefined;\n}\n\nfunction capabilityGuardPolicyIssue(policy: unknown): DataIssue | undefined {\n\tif (\n\t\t!isRecord(policy) ||\n\t\tpolicy.kind !== \"work-item-domain-action-capability-guard-policy\" ||\n\t\ttypeof policy.policyId !== \"string\" ||\n\t\tpolicy.policyId.length === 0 ||\n\t\t!Array.isArray(policy.capabilityRefs) ||\n\t\tpolicy.capabilityRefs.length === 0 ||\n\t\t!policy.capabilityRefs.every(isBoundaryCapabilityRef) ||\n\t\t!Array.isArray(policy.admissionSubjectIds) ||\n\t\tpolicy.admissionSubjectIds.length === 0 ||\n\t\t!policy.admissionSubjectIds.every((id) => typeof id === \"string\" && id.length > 0) ||\n\t\t(policy.actionKinds !== undefined &&\n\t\t\t(!Array.isArray(policy.actionKinds) ||\n\t\t\t\t!policy.actionKinds.every((kind) => typeof kind === \"string\" && kind.length > 0)))\n\t) {\n\t\treturn dataIssue(\n\t\t\t\"malformed-work-item-domain-action-capability-guard-policy\",\n\t\t\t\"WorkItem domain action capability guard policy requires policyId, capabilityRefs, and admissionSubjectIds\",\n\t\t\t{\n\t\t\t\tsubjectId: recordString(policy, \"policyId\"),\n\t\t\t},\n\t\t);\n\t}\n\treturn undefined;\n}\n\nfunction capabilityAdmissionIssue(admission: unknown): DataIssue | undefined {\n\tif (\n\t\t!isRecord(admission) ||\n\t\tadmission.kind !== \"capability-admission\" ||\n\t\ttypeof admission.admissionId !== \"string\" ||\n\t\tadmission.admissionId.length === 0 ||\n\t\ttypeof admission.proposalId !== \"string\" ||\n\t\tadmission.proposalId.length === 0 ||\n\t\ttypeof admission.subjectId !== \"string\" ||\n\t\tadmission.subjectId.length === 0 ||\n\t\t!isBoundaryCapabilityRef(admission.capability) ||\n\t\t!isCapabilityAdmissionState(admission.state) ||\n\t\ttypeof admission.decisionId !== \"string\" ||\n\t\tadmission.decisionId.length === 0 ||\n\t\t(admission.sourceRefs !== undefined && !isSourceRefArray(admission.sourceRefs))\n\t) {\n\t\treturn dataIssue(\n\t\t\t\"malformed-capability-admission\",\n\t\t\t\"WorkItem domain action capability guard requires valid CapabilityAdmission DATA facts\",\n\t\t\t{ subjectId: recordString(admission, \"subjectId\") },\n\t\t);\n\t}\n\treturn undefined;\n}\n\nfunction capabilityAdmissionStatusIssue(status: unknown): DataIssue | undefined {\n\tif (\n\t\t!isRecord(status) ||\n\t\tstatus.kind !== \"capability-admission-status\" ||\n\t\ttypeof status.statusId !== \"string\" ||\n\t\tstatus.statusId.length === 0 ||\n\t\t!isCapabilityAdmissionStatusState(status.state)\n\t) {\n\t\treturn dataIssue(\n\t\t\t\"malformed-capability-admission-status\",\n\t\t\t\"WorkItem domain action capability guard requires valid CapabilityAdmissionStatus DATA facts\",\n\t\t\t{ subjectId: recordString(status, \"subjectId\") },\n\t\t);\n\t}\n\tconst hasCapabilityId = status.capabilityId !== undefined;\n\tconst hasCapabilityKind = status.capabilityKind !== undefined;\n\tif (\n\t\thasCapabilityId !== hasCapabilityKind ||\n\t\t(hasCapabilityId &&\n\t\t\t(typeof status.capabilityId !== \"string\" ||\n\t\t\t\tstatus.capabilityId.length === 0 ||\n\t\t\t\t!isBoundaryCapabilityKind(status.capabilityKind))) ||\n\t\t(status.sourceRefs !== undefined && !isSourceRefArray(status.sourceRefs)) ||\n\t\t(status.issues !== undefined && !isDataIssueArray(status.issues))\n\t) {\n\t\treturn dataIssue(\n\t\t\t\"malformed-capability-admission-status\",\n\t\t\t\"WorkItem domain action capability guard requires valid CapabilityAdmissionStatus DATA facts\",\n\t\t\t{ subjectId: recordString(status, \"subjectId\") },\n\t\t);\n\t}\n\treturn undefined;\n}\n\nfunction isCapabilityAdmissionState(value: unknown): value is CapabilityAdmission[\"state\"] {\n\treturn value === \"allowed\" || value === \"blocked\" || value === \"deferred\";\n}\n\nfunction isCapabilityAdmissionStatusState(\n\tvalue: unknown,\n): value is CapabilityAdmissionStatus[\"state\"] {\n\treturn (\n\t\tvalue === \"capability-admission-allowed\" ||\n\t\tvalue === \"capability-admission-blocked\" ||\n\t\tvalue === \"capability-admission-deferred\" ||\n\t\tvalue === \"capability-admission-issue\"\n\t);\n}\n\nfunction isSourceRefArray(value: unknown): value is readonly SourceRef[] {\n\treturn (\n\t\tArray.isArray(value) &&\n\t\tvalue.every(\n\t\t\t(item) => isRecord(item) && typeof item.kind === \"string\" && typeof item.id === \"string\",\n\t\t)\n\t);\n}\n\nfunction isDataIssueArray(value: unknown): value is readonly DataIssue[] {\n\treturn Array.isArray(value) && value.every(isDataIssue);\n}\n\nfunction isDataIssue(value: unknown): value is DataIssue {\n\treturn (\n\t\tisRecord(value) &&\n\t\tvalue.kind === \"issue\" &&\n\t\ttypeof value.code === \"string\" &&\n\t\tvalue.code.length > 0 &&\n\t\ttypeof value.message === \"string\" &&\n\t\tvalue.message.length > 0\n\t);\n}\n\nfunction isBoundaryCapabilityRef(value: unknown): value is BoundaryCapabilityRef {\n\treturn (\n\t\tisRecord(value) &&\n\t\ttypeof value.id === \"string\" &&\n\t\tvalue.id.length > 0 &&\n\t\tisBoundaryCapabilityKind(value.kind) &&\n\t\ttypeof value.required === \"boolean\" &&\n\t\t(value.sourceRefs === undefined ||\n\t\t\t(Array.isArray(value.sourceRefs) &&\n\t\t\t\tvalue.sourceRefs.every((sourceRef) => typeof sourceRef === \"string\")))\n\t);\n}\n\nfunction isBoundaryCapabilityKind(value: unknown): value is BoundaryCapabilityKind {\n\treturn value === \"auth\" || value === \"permission\" || value === \"config\" || value === \"resource\";\n}\n\nfunction selectCapabilityGuardPolicy(\n\tstate: CapabilityGuardState,\n\tproposal: WorkItemDomainActionProposal,\n):\n\t| WorkItemDomainActionCapabilityGuardPolicy\n\t| \"missing-policy\"\n\t| \"unknown-work-item-domain-action-capability-guard-policy\"\n\t| \"policy-mismatch\" {\n\tconst explicitId =\n\t\tstringMetadata(proposal.metadata, \"capabilityGuardPolicyId\") ??\n\t\tproposal.sourceRefs?.find(\n\t\t\t(sourceRef) => sourceRef.kind === \"work-item-domain-action-capability-guard-policy\",\n\t\t)?.id;\n\tif (explicitId !== undefined)\n\t\treturn (\n\t\t\tstate.policies.get(explicitId) ?? \"unknown-work-item-domain-action-capability-guard-policy\"\n\t\t);\n\tconst matching = [...state.policies.values()].filter(\n\t\t(policy) =>\n\t\t\tpolicy.actionKinds === undefined || policy.actionKinds.includes(proposal.actionKind),\n\t);\n\tif (matching.length === 0) return \"missing-policy\";\n\tif (matching.length > 1) return \"policy-mismatch\";\n\treturn matching[0];\n}\n\nfunction latestCapabilityAdmission(\n\tstate: CapabilityGuardState,\n\tpolicy: WorkItemDomainActionCapabilityGuardPolicy,\n\tcapabilityRef: BoundaryCapabilityRef,\n): CapabilityAdmission | undefined {\n\tconst admissions = state.admissionsByCapability.get(capabilityBoundaryRefId(capabilityRef)) ?? [];\n\tfor (let index = admissions.length - 1; index >= 0; index -= 1) {\n\t\tconst admission = admissions[index];\n\t\tif (admission !== undefined && policy.admissionSubjectIds.includes(admission.subjectId))\n\t\t\treturn admission;\n\t}\n\treturn undefined;\n}\n\nfunction emitCapabilityStatusIssueForProposal(\n\tctx: Ctx,\n\tstate: CapabilityGuardState,\n\tproposal: WorkItemDomainActionProposal,\n\tstatus: CapabilityAdmissionStatus,\n): void {\n\tconst policy = selectCapabilityGuardPolicy(state, proposal);\n\tif (typeof policy === \"string\") return;\n\tif (status.subjectId !== undefined && !policy.admissionSubjectIds.includes(status.subjectId))\n\t\treturn;\n\tconst capabilityId = status.capabilityId;\n\tconst capabilityKind = status.capabilityKind;\n\tconst statusCapabilityKey =\n\t\tcapabilityId === undefined || capabilityKind === undefined\n\t\t\t? undefined\n\t\t\t: capabilityBoundaryRefId({ id: capabilityId, kind: capabilityKind });\n\tif (\n\t\tstatusCapabilityKey !== undefined &&\n\t\t!policy.capabilityRefs.some(\n\t\t\t(capabilityRef) => capabilityBoundaryRefId(capabilityRef) === statusCapabilityKey,\n\t\t)\n\t)\n\t\treturn;\n\tconst issue =\n\t\tstatus.issues?.[0] ??\n\t\tdataIssue(\n\t\t\t\"capability-admission-status-issue\",\n\t\t\t\"Capability admission status reported an issue\",\n\t\t\t{ subjectId: proposal.workItemId },\n\t\t);\n\temitCapabilityGuardIssue(\n\t\tctx,\n\t\tstate,\n\t\t`capability-status:${proposal.proposalId}:${status.statusId}`,\n\t\tdataIssue(issue.code, issue.message, {\n\t\t\tsubjectId: proposal.workItemId,\n\t\t\trefs: uniqueSourceRefs([\n\t\t\t\t...capabilityGuardRefs(proposal, policy),\n\t\t\t\t...(status.sourceRefs ?? []),\n\t\t\t]),\n\t\t\tmetadata: {\n\t\t\t\t...(statusCapabilityKey === undefined ? {} : { capabilityRef: statusCapabilityKey }),\n\t\t\t\tcapabilityAdmissionStatusId: status.statusId,\n\t\t\t},\n\t\t}),\n\t);\n}\n\nfunction capabilityGuardPolicyMessage(\n\tcode:\n\t\t| \"missing-policy\"\n\t\t| \"unknown-work-item-domain-action-capability-guard-policy\"\n\t\t| \"policy-mismatch\",\n\tproposal: WorkItemDomainActionProposal,\n): string {\n\tif (code === \"missing-policy\")\n\t\treturn `WorkItem domain action '${proposal.proposalId}' has no capability guard policy`;\n\tif (code === \"unknown-work-item-domain-action-capability-guard-policy\")\n\t\treturn `WorkItem domain action '${proposal.proposalId}' references a missing capability guard policy`;\n\treturn `WorkItem domain action '${proposal.proposalId}' matches multiple capability guard policies`;\n}\n\nfunction capabilityGuardRefs(\n\tproposal: WorkItemDomainActionProposal,\n\tpolicy: WorkItemDomainActionCapabilityGuardPolicy,\n\tadmissions: readonly (CapabilityAdmission | undefined)[] = [],\n): readonly SourceRef[] {\n\treturn uniqueSourceRefs([\n\t\tref(\"work-item\", proposal.workItemId),\n\t\tref(\"work-item-domain-action-proposal\", proposal.proposalId),\n\t\tref(\"work-item-domain-action-capability-guard-policy\", policy.policyId),\n\t\t...admissions\n\t\t\t.filter((admission): admission is CapabilityAdmission => admission !== undefined)\n\t\t\t.flatMap((admission) => [\n\t\t\t\tref(\"capability-admission\", admission.admissionId),\n\t\t\t\tref(\"capability-admission-proposal\", admission.proposalId),\n\t\t\t\tref(\"boundary-capability\", capabilityBoundaryRefId(admission.capability)),\n\t\t\t\t...(admission.sourceRefs ?? []),\n\t\t\t]),\n\t\t...(proposal.sourceRefs ?? []),\n\t]);\n}\n\nfunction capabilityBoundaryRefId(capability: Pick<BoundaryCapabilityRef, \"id\" | \"kind\">): string {\n\treturn `${capability.kind}:${capability.id}`;\n}\n\nfunction emitCapabilityGuardStatus(\n\tctx: Ctx,\n\tstate: CapabilityGuardState,\n\tstatus: Omit<WorkItemDomainActionCapabilityGuardStatus, \"kind\" | \"statusId\">,\n): void {\n\tstate.statusSeq += 1;\n\tconst statusFact: WorkItemDomainActionCapabilityGuardStatus = {\n\t\tkind: \"work-item-domain-action-capability-guard-status\",\n\t\tstatusId: `work-item-domain-action-capability-guard-status:${state.statusSeq}`,\n\t\t...status,\n\t};\n\temitCapabilityGuard(ctx, \"status\", statusFact);\n\tstate.auditSeq += 1;\n\temitCapabilityGuard(ctx, \"audit\", {\n\t\tid: `work-item-domain-action-capability-guard-status:${state.auditSeq}`,\n\t\tkind: \"work-item-domain-action-capability-guard-status\",\n\t\tsubjectId: status.workItemId,\n\t\tmessage: status.message,\n\t\tsourceRefs: status.sourceRefs,\n\t\tmetadata: {\n\t\t\tstatusId: statusFact.statusId,\n\t\t\tstate: status.state,\n\t\t\tproposalId: status.proposalId,\n\t\t\tpolicyId: status.policyId,\n\t\t\t...(status.metadata ?? {}),\n\t\t},\n\t});\n}\n\nfunction emitCapabilityGuardStatusOnce(\n\tctx: Ctx,\n\tstate: CapabilityGuardState,\n\tkey: string,\n\tstatus: Omit<WorkItemDomainActionCapabilityGuardStatus, \"kind\" | \"statusId\">,\n): void {\n\tif (state.emittedStatusKeys.has(key)) return;\n\tstate.emittedStatusKeys.add(key);\n\temitCapabilityGuardStatus(ctx, state, status);\n}\n\nfunction emitCapabilityGuardIssue(\n\tctx: Ctx,\n\tstate: CapabilityGuardState,\n\tkey: string,\n\tissue: DataIssue,\n): void {\n\tif (state.issueKeys.has(key)) return;\n\tstate.issueKeys.add(key);\n\temitCapabilityGuard(ctx, \"issue\", issue);\n\temitCapabilityGuardStatus(ctx, state, {\n\t\tstate: \"issue\",\n\t\tworkItemId: issue.subjectId,\n\t\tissues: [issue],\n\t\tmessage: issue.message,\n\t\tmetadata: { issueCode: issue.code },\n\t});\n}\n\nfunction emitCapabilityGuard<K extends CapabilityGuardFact[\"kind\"]>(\n\tctx: Ctx,\n\tkind: K,\n\tvalue: Extract<CapabilityGuardFact, { readonly kind: K }>[\"value\"],\n): void {\n\tctx.down([[\"DATA\", { kind, value } as unknown as CapabilityGuardFact]]);\n}\n\nfunction reduceProposalIntake(\n\tctx: Ctx,\n\tstate: IntakeState,\n\tinput: unknown,\n\tproposedAtMs: number,\n): void {\n\tconst proposal = normalizeProposal(input, proposedAtMs);\n\tif (typeof proposal === \"string\") {\n\t\tconst issue = dataIssue(\"malformed-domain-action-proposal\", proposal);\n\t\temitIntake(ctx, \"issue\", issue);\n\t\temitIntakeStatus(ctx, state, {\n\t\t\tstate: \"rejected\",\n\t\t\tcode: issue.code,\n\t\t\tmessage: issue.message,\n\t\t});\n\t\treturn;\n\t}\n\tif (state.proposals.has(proposal.proposalId)) {\n\t\temitIntakeStatus(ctx, state, {\n\t\t\tstate: \"duplicate\",\n\t\t\tcode: \"duplicate-suppressed\",\n\t\t\tworkItemId: proposal.workItemId,\n\t\t\tproposalId: proposal.proposalId,\n\t\t\tactionKind: proposal.actionKind,\n\t\t\tmessage: `Duplicate WorkItem domain action proposal '${proposal.proposalId}' suppressed`,\n\t\t});\n\t\treturn;\n\t}\n\tstate.proposals.add(proposal.proposalId);\n\temitIntake(ctx, \"proposal\", proposal);\n\temitIntakeStatus(ctx, state, {\n\t\tstate: \"proposed\",\n\t\tworkItemId: proposal.workItemId,\n\t\tproposalId: proposal.proposalId,\n\t\tactionKind: proposal.actionKind,\n\t\tsourceRefs: proposal.sourceRefs,\n\t});\n}\n\nfunction normalizeProposal(\n\tinput: unknown,\n\tproposedAtMs: number,\n): WorkItemDomainActionProposal | string {\n\tif (!isRecord(input)) return \"WorkItemDomainActionProposal intake must be an object\";\n\tif (\n\t\tinput.kind !== \"work-item-domain-action-proposal\" &&\n\t\tinput.kind !== \"work-item-domain-action-proposal-intake\"\n\t)\n\t\treturn \"WorkItemDomainActionProposal intake has unsupported kind\";\n\tif (typeof input.proposalId !== \"string\" || input.proposalId.trim() === \"\")\n\t\treturn \"WorkItemDomainActionProposal.proposalId is required\";\n\tif (typeof input.workItemId !== \"string\" || input.workItemId.trim() === \"\")\n\t\treturn \"WorkItemDomainActionProposal.workItemId is required\";\n\tif (typeof input.actionKind !== \"string\" || input.actionKind.trim() === \"\")\n\t\treturn \"WorkItemDomainActionProposal.actionKind is required\";\n\tif (input.kind === \"work-item-domain-action-proposal\") {\n\t\tif (typeof input.effectRunId !== \"string\")\n\t\t\treturn \"WorkItemDomainActionProposal.effectRunId is required\";\n\t\tif (typeof input.effectRunResultId !== \"string\")\n\t\t\treturn \"WorkItemDomainActionProposal.effectRunResultId is required\";\n\t\tif (typeof input.evidenceId !== \"string\")\n\t\t\treturn \"WorkItemDomainActionProposal.evidenceId is required\";\n\t\tif (typeof input.policyId !== \"string\")\n\t\t\treturn \"WorkItemDomainActionProposal.policyId is required\";\n\t\treturn input as unknown as WorkItemDomainActionProposal;\n\t}\n\treturn workItemDomainActionProposal(\n\t\tinput.proposalId,\n\t\tinput.workItemId,\n\t\tinput.actionKind as WorkItemDomainActionKind,\n\t\t{\n\t\t\tpayload: input.payload,\n\t\t\treason: typeof input.reason === \"string\" ? input.reason : undefined,\n\t\t\tpolicyId: typeof input.policyId === \"string\" ? input.policyId : undefined,\n\t\t\teffectRunId: typeof input.effectRunId === \"string\" ? input.effectRunId : undefined,\n\t\t\teffectRunResultId:\n\t\t\t\ttypeof input.effectRunResultId === \"string\" ? input.effectRunResultId : undefined,\n\t\t\tevidenceId: typeof input.evidenceId === \"string\" ? input.evidenceId : undefined,\n\t\t\tproposedAtMs: typeof input.proposedAtMs === \"number\" ? input.proposedAtMs : proposedAtMs,\n\t\t\tsourceRefs: sourceRefs(input.sourceRefs),\n\t\t\tmetadata: isRecord(input.metadata) ? input.metadata : undefined,\n\t\t},\n\t);\n}\n\nfunction applyAdmission<T>(\n\tctx: Ctx,\n\tstate: ApplicationState<T>,\n\tadmission: WorkItemDomainActionAdmission,\n): void {\n\tif (state.appliedAdmissions.has(admission.admissionId)) return;\n\tconst proposal = state.proposals.get(admission.proposalId);\n\tif (proposal === undefined) {\n\t\temitApplicationIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`missing-proposal:${admission.admissionId}:${admission.proposalId}`,\n\t\t\t\"dangling-ref\",\n\t\t\t`Admission '${admission.admissionId}' cannot apply without proposal '${admission.proposalId}'`,\n\t\t\tadmission.workItemId,\n\t\t\tadmissionRefs(admission),\n\t\t);\n\t\treturn;\n\t}\n\tif (admission.state !== \"admitted\") {\n\t\tstate.appliedAdmissions.add(admission.admissionId);\n\t\temitApplication(ctx, state, admission, proposal, admission.state, []);\n\t\treturn;\n\t}\n\tconst mismatch = admissionProposalMismatch(admission, proposal);\n\tif (mismatch !== undefined) {\n\t\tstate.appliedAdmissions.add(admission.admissionId);\n\t\temitApplicationIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`admission-proposal-mismatch:${admission.admissionId}:${mismatch.field}`,\n\t\t\t\"dangling-ref\",\n\t\t\tmismatch.message,\n\t\t\tadmission.workItemId,\n\t\t\tadmissionRefs(admission, proposal),\n\t\t\t{\n\t\t\t\tfield: mismatch.field,\n\t\t\t\tadmissionValue: mismatch.admissionValue,\n\t\t\t\tproposalValue: mismatch.proposalValue,\n\t\t\t},\n\t\t);\n\t\temitApplication(ctx, state, admission, proposal, \"rejected\", [], {\n\t\t\tcode: \"dangling-ref\",\n\t\t\tmessage: mismatch.message,\n\t\t});\n\t\treturn;\n\t}\n\tconst workItem = state.workItems.get(admission.workItemId);\n\tif (workItem === undefined) {\n\t\temitApplicationIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`missing-work-item:${admission.admissionId}:${admission.workItemId}`,\n\t\t\t\"dangling-ref\",\n\t\t\t`Admission '${admission.admissionId}' references unknown WorkItem '${admission.workItemId}'`,\n\t\t\tadmission.workItemId,\n\t\t\tadmissionRefs(admission, proposal),\n\t\t);\n\t\treturn;\n\t}\n\tconst metadataConflict = conflictingApplicationMetadata(proposal, admission);\n\tif (metadataConflict !== undefined) {\n\t\tstate.appliedAdmissions.add(admission.admissionId);\n\t\temitApplicationIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`metadata-conflict:${admission.admissionId}:${metadataConflict.field}`,\n\t\t\tmetadataConflict.code,\n\t\t\tmetadataConflict.message,\n\t\t\tadmission.workItemId,\n\t\t\tadmissionRefs(admission, proposal),\n\t\t\t{\n\t\t\t\tfield: metadataConflict.field,\n\t\t\t\tadmissionValue: metadataConflict.admissionValue,\n\t\t\t\tproposalValue: metadataConflict.proposalValue,\n\t\t\t},\n\t\t);\n\t\temitApplication(ctx, state, admission, proposal, \"rejected\", [], {\n\t\t\tcode: metadataConflict.code,\n\t\t\tmessage: metadataConflict.message,\n\t\t});\n\t\treturn;\n\t}\n\tconst stale = staleRevision(proposal, admission, workItem);\n\tif (stale !== undefined) {\n\t\tstate.appliedAdmissions.add(admission.admissionId);\n\t\temitApplicationIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`stale:${admission.admissionId}:${stale.kind}:${stale.expected}:${stale.current}`,\n\t\t\tstale.kind,\n\t\t\t`Admission '${admission.admissionId}' targets stale WorkItem revision`,\n\t\t\tadmission.workItemId,\n\t\t\tadmissionRefs(admission, proposal),\n\t\t\t{ expected: stale.expected, current: stale.current },\n\t\t);\n\t\temitApplication(ctx, state, admission, proposal, \"rejected\", [], {\n\t\t\tcode: stale.kind,\n\t\t\tmessage: \"Stale WorkItem revision\",\n\t\t});\n\t\treturn;\n\t}\n\tconst policyResult = selectApplyPolicy(state, proposal, admission);\n\tif (typeof policyResult === \"string\") {\n\t\temitApplicationIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`policy:${admission.admissionId}:${policyResult}`,\n\t\t\tpolicyResult,\n\t\t\tapplyPolicyMessage(policyResult, proposal, admission),\n\t\t\tadmission.workItemId,\n\t\t\tadmissionRefs(admission, proposal),\n\t\t);\n\t\treturn;\n\t}\n\tconst output = lowerAction(ctx, state, workItem, proposal, admission, policyResult);\n\tif (output === undefined) {\n\t\tstate.appliedAdmissions.add(admission.admissionId);\n\t\temitApplication(ctx, state, admission, proposal, \"rejected\", [], {\n\t\t\tcode: \"invalid-action\",\n\t\t\tmessage: \"WorkItem domain action application rejected; see emitted issues\",\n\t\t\tpolicyId: policyResult.policyId,\n\t\t});\n\t\treturn;\n\t}\n\tconst duplicateFactId = firstDuplicateFactId(state, output.facts);\n\tif (duplicateFactId !== undefined) {\n\t\tstate.appliedAdmissions.add(admission.admissionId);\n\t\temitApplicationIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`duplicate-authoring-fact:${admission.admissionId}:${duplicateFactId}`,\n\t\t\t\"duplicate-suppressed\",\n\t\t\t`WorkItem domain action application '${admission.admissionId}' would duplicate authoring fact '${duplicateFactId}'`,\n\t\t\tadmission.workItemId,\n\t\t\tadmissionRefs(admission, proposal, policyResult),\n\t\t\t{ eventId: duplicateFactId },\n\t\t);\n\t\temitApplication(ctx, state, admission, proposal, \"duplicate\", [], {\n\t\t\tcode: \"duplicate-suppressed\",\n\t\t\tmessage: \"Duplicate WorkItem authoring fact suppressed atomically\",\n\t\t\tpolicyId: policyResult.policyId,\n\t\t});\n\t\treturn;\n\t}\n\tstate.appliedAdmissions.add(admission.admissionId);\n\tfor (const fact of output.facts) claimFactId(state, fact.eventId);\n\tfor (const fact of output.facts) emitApplicationFact(ctx, \"authoring-fact\", fact);\n\temitApplication(ctx, state, admission, proposal, output.state, output.facts, {\n\t\tcode: output.code,\n\t\tmessage: output.message,\n\t\tpolicyId: policyResult.policyId,\n\t});\n}\n\nfunction lowerAction<T>(\n\tctx: Ctx,\n\tstate: ApplicationState<T>,\n\tworkItem: WorkItemProjection<T>,\n\tproposal: WorkItemDomainActionProposal,\n\tadmission: WorkItemDomainActionAdmission,\n\tpolicy: WorkItemDomainActionApplyPolicy,\n):\n\t| {\n\t\t\treadonly state: WorkItemDomainActionApplication[\"state\"];\n\t\t\treadonly facts: readonly WorkItemAuthoringFact<T>[];\n\t\t\treadonly code?: string;\n\t\t\treadonly message?: string;\n\t }\n\t| undefined {\n\tif (!policyAllowsAction(policy, proposal.actionKind)) {\n\t\temitApplicationIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`policy-action:${admission.admissionId}:${policy.policyId}:${proposal.actionKind}`,\n\t\t\t\"policy-mismatch\",\n\t\t\t`Apply policy '${policy.policyId}' does not allow actionKind '${proposal.actionKind}'`,\n\t\t\tproposal.workItemId,\n\t\t\tadmissionRefs(admission, proposal, policy),\n\t\t);\n\t\treturn { state: \"policy-rejected\", facts: [], code: \"policy-mismatch\" };\n\t}\n\tif (proposal.actionKind === \"patch\") {\n\t\tconst lowered = lowerPatchAction(ctx, state, workItem, proposal, admission, policy);\n\t\tif (lowered === undefined) return undefined;\n\t\treturn { state: \"applied\", facts: lowered };\n\t}\n\tif (proposal.actionKind === \"mark-verified\" || proposal.actionKind === \"require-review\") {\n\t\treturn {\n\t\t\tstate: \"proposal-only\",\n\t\t\tfacts: [],\n\t\t\tcode: \"domain-fact-unimplemented\",\n\t\t\tmessage: `Action '${proposal.actionKind}' recorded as visible application status only; no WorkItem domain mutation fact was emitted`,\n\t\t};\n\t}\n\tif (proposal.actionKind === \"spawn-proposed\" || proposal.actionKind === \"spawn-child\") {\n\t\treturn lowerSpawnAction(ctx, state, proposal, admission, policy);\n\t}\n\temitApplicationIssue(\n\t\tctx,\n\t\tstate,\n\t\t`unsupported-action:${admission.admissionId}:${proposal.actionKind}`,\n\t\t\"unsupported-effect-kind\",\n\t\t`Unsupported WorkItem domain actionKind '${proposal.actionKind}'`,\n\t\tproposal.workItemId,\n\t\tadmissionRefs(admission, proposal, policy),\n\t);\n\treturn { state: \"rejected\", facts: [], code: \"unsupported-effect-kind\" };\n}\n\nfunction lowerPatchAction<T>(\n\tctx: Ctx,\n\tstate: ApplicationState<T>,\n\tworkItem: WorkItemProjection<T>,\n\tproposal: WorkItemDomainActionProposal,\n\tadmission: WorkItemDomainActionAdmission,\n\tpolicy: WorkItemDomainActionApplyPolicy,\n): readonly WorkItemAuthoringFact<T>[] | undefined {\n\tconst payload = normalizePatchPayload<T>(proposal.payload);\n\tif (typeof payload === \"string\") {\n\t\temitApplicationIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`invalid-patch:${admission.admissionId}`,\n\t\t\t\"invalid-patch\",\n\t\t\tpayload,\n\t\t\tproposal.workItemId,\n\t\t\tadmissionRefs(admission, proposal, policy),\n\t\t);\n\t\treturn undefined;\n\t}\n\tconst splitPayload = splitDedicatedPatchFields(payload, workItem);\n\tconst facts: WorkItemAuthoringFact<T>[] = [];\n\tif (splitPayload.patch !== undefined) {\n\t\tconst invalid = invalidPatchKeys(splitPayload.patch, policy);\n\t\tif (invalid.length > 0) {\n\t\t\temitApplicationIssue(\n\t\t\t\tctx,\n\t\t\t\tstate,\n\t\t\t\t`invalid-patch-fields:${admission.admissionId}:${invalid.join(\",\")}`,\n\t\t\t\t\"invalid-patch\",\n\t\t\t\t`Patch action uses unsupported fields: ${invalid.join(\", \")}`,\n\t\t\t\tproposal.workItemId,\n\t\t\t\tadmissionRefs(admission, proposal, policy),\n\t\t\t\t{ invalidFields: invalid },\n\t\t\t);\n\t\t\treturn undefined;\n\t\t}\n\t\tfacts.push({\n\t\t\tkind: \"work-item-patched\",\n\t\t\teventId: splitPayload.eventId ?? `${admission.admissionId}:work-item-patched`,\n\t\t\tworkItemId: workItem.workItemId,\n\t\t\tpatch: splitPayload.patch,\n\t\t\texecutionRelevantFields:\n\t\t\t\tsplitPayload.executionRelevantFields ?? policy.patch?.executionRelevantFields,\n\t\t\tauthorId: splitPayload.authorId,\n\t\t\tsourceRefs: actionSourceRefs(admission, proposal, policy),\n\t\t\tmetadata: { ...(splitPayload.metadata ?? {}), actionKind: proposal.actionKind },\n\t\t});\n\t}\n\tif (splitPayload.acceptanceCriteria !== undefined) {\n\t\tif (!allowsAcceptanceCriteria(policy)) {\n\t\t\temitApplicationIssue(\n\t\t\t\tctx,\n\t\t\t\tstate,\n\t\t\t\t`ac-policy:${admission.admissionId}`,\n\t\t\t\t\"policy-mismatch\",\n\t\t\t\t`Apply policy '${policy.policyId}' does not allow acceptance criteria changes`,\n\t\t\t\tproposal.workItemId,\n\t\t\t\tadmissionRefs(admission, proposal, policy),\n\t\t\t);\n\t\t\treturn undefined;\n\t\t}\n\t\tconst issues = validateAcceptanceCriteria(splitPayload.acceptanceCriteria, {\n\t\t\tworkItemId: workItem.workItemId,\n\t\t});\n\t\tif (issues.length > 0) {\n\t\t\tfor (const item of issues) emitApplicationFact(ctx, \"issue\", item);\n\t\t\temitApplicationStatus(ctx, state, {\n\t\t\t\tstate: \"rejected\",\n\t\t\t\tcode: issues[0]?.code,\n\t\t\t\tmessage: issues[0]?.message,\n\t\t\t\tworkItemId: workItem.workItemId,\n\t\t\t\tproposalId: proposal.proposalId,\n\t\t\t\tadmissionId: admission.admissionId,\n\t\t\t\tactionKind: proposal.actionKind,\n\t\t\t\tsourceRefs: admissionRefs(admission, proposal, policy),\n\t\t\t});\n\t\t\treturn undefined;\n\t\t}\n\t\tfacts.push({\n\t\t\tkind: \"acceptance-criteria-changed\",\n\t\t\teventId: `${admission.admissionId}:acceptance-criteria-changed`,\n\t\t\tworkItemId: workItem.workItemId,\n\t\t\tacceptanceCriteria: splitPayload.acceptanceCriteria,\n\t\t\tauthorId: splitPayload.authorId,\n\t\t\tsourceRefs: actionSourceRefs(admission, proposal, policy),\n\t\t\tmetadata: { ...(splitPayload.metadata ?? {}), actionKind: proposal.actionKind },\n\t\t});\n\t}\n\tif (splitPayload.verificationPlan !== undefined) {\n\t\tif (!allowsVerificationPlan(policy)) {\n\t\t\temitApplicationIssue(\n\t\t\t\tctx,\n\t\t\t\tstate,\n\t\t\t\t`plan-policy:${admission.admissionId}`,\n\t\t\t\t\"policy-mismatch\",\n\t\t\t\t`Apply policy '${policy.policyId}' does not allow verification plan changes`,\n\t\t\t\tproposal.workItemId,\n\t\t\t\tadmissionRefs(admission, proposal, policy),\n\t\t\t);\n\t\t\treturn undefined;\n\t\t}\n\t\tconst issues = validateVerificationPlan(\n\t\t\tsplitPayload.verificationPlan,\n\t\t\tsplitPayload.acceptanceCriteria ?? workItem.acceptanceCriteria ?? [],\n\t\t\t{ workItemId: workItem.workItemId },\n\t\t);\n\t\tif (issues.length > 0) {\n\t\t\tfor (const item of issues) emitApplicationFact(ctx, \"issue\", item);\n\t\t\temitApplicationStatus(ctx, state, {\n\t\t\t\tstate: \"rejected\",\n\t\t\t\tcode: issues[0]?.code,\n\t\t\t\tmessage: issues[0]?.message,\n\t\t\t\tworkItemId: workItem.workItemId,\n\t\t\t\tproposalId: proposal.proposalId,\n\t\t\t\tadmissionId: admission.admissionId,\n\t\t\t\tactionKind: proposal.actionKind,\n\t\t\t\tsourceRefs: admissionRefs(admission, proposal, policy),\n\t\t\t});\n\t\t\treturn undefined;\n\t\t}\n\t\tfacts.push({\n\t\t\tkind: \"verification-plan-changed\",\n\t\t\teventId: `${admission.admissionId}:verification-plan-changed`,\n\t\t\tworkItemId: workItem.workItemId,\n\t\t\tverificationPlan: splitPayload.verificationPlan,\n\t\t\tauthorId: splitPayload.authorId,\n\t\t\tsourceRefs: actionSourceRefs(admission, proposal, policy),\n\t\t\tmetadata: { ...(splitPayload.metadata ?? {}), actionKind: proposal.actionKind },\n\t\t});\n\t}\n\tif (facts.length === 0) {\n\t\temitApplicationIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`empty-patch:${admission.admissionId}`,\n\t\t\t\"invalid-patch\",\n\t\t\t\"Patch action payload did not contain patch, acceptanceCriteria, or verificationPlan\",\n\t\t\tproposal.workItemId,\n\t\t\tadmissionRefs(admission, proposal, policy),\n\t\t);\n\t\treturn undefined;\n\t}\n\treturn facts;\n}\n\nfunction lowerSpawnAction<T>(\n\tctx: Ctx,\n\tstate: ApplicationState<T>,\n\tproposal: WorkItemDomainActionProposal,\n\tadmission: WorkItemDomainActionAdmission,\n\tpolicy: WorkItemDomainActionApplyPolicy,\n): {\n\treadonly state: WorkItemDomainActionApplication[\"state\"];\n\treadonly facts: readonly WorkItemAuthoringFact<T>[];\n\treadonly code?: string;\n\treadonly message?: string;\n} {\n\tif (policy.spawn?.create !== true) {\n\t\treturn {\n\t\t\tstate: \"proposal-only\",\n\t\t\tfacts: [],\n\t\t\tmessage: \"Spawn action remains proposal/admission only without explicit create policy\",\n\t\t};\n\t}\n\temitApplicationIssue(\n\t\tctx,\n\t\tstate,\n\t\t`spawn-create-policy:${admission.admissionId}:${policy.policyId}`,\n\t\t\"policy-mismatch\",\n\t\t`Spawn create policy '${policy.policyId}' is incomplete: child creation requires an explicit create/link/idempotency policy surface`,\n\t\tproposal.workItemId,\n\t\tadmissionRefs(admission, proposal, policy),\n\t\t{\n\t\t\trequires: [\"linkParent\", \"idempotencyKey\", \"maxChildrenPerAdmission\", \"link-fact-vocabulary\"],\n\t\t},\n\t);\n\treturn {\n\t\tstate: \"proposal-only\",\n\t\tfacts: [],\n\t\tcode: \"policy-mismatch\",\n\t\tmessage:\n\t\t\t\"Spawn action remains proposal/admission only until explicit create/link policy is available\",\n\t};\n}\n\nfunction normalizePatchPayload<T>(payload: unknown): WorkItemPatchActionPayload<T> | string {\n\tif (!isRecord(payload)) return \"Patch action payload must be an object\";\n\tif (\n\t\t\"patch\" in payload ||\n\t\t\"acceptanceCriteria\" in payload ||\n\t\t\"verificationPlan\" in payload ||\n\t\t\"executionRelevantFields\" in payload\n\t) {\n\t\tif (\"patch\" in payload && payload.patch !== undefined && !isRecord(payload.patch))\n\t\t\treturn \"Patch action payload.patch must be an object\";\n\t\tif (\n\t\t\t\"acceptanceCriteria\" in payload &&\n\t\t\tpayload.acceptanceCriteria !== undefined &&\n\t\t\t!Array.isArray(payload.acceptanceCriteria)\n\t\t)\n\t\t\treturn \"Patch action payload.acceptanceCriteria must be an array\";\n\t\tif (\n\t\t\t\"verificationPlan\" in payload &&\n\t\t\tpayload.verificationPlan !== undefined &&\n\t\t\t!isRecord(payload.verificationPlan)\n\t\t)\n\t\t\treturn \"Patch action payload.verificationPlan must be an object\";\n\t\tconst inlinePatch = inlinePatchFields<T>(payload);\n\t\tconst explicitPatch = isRecord(payload.patch) ? (payload.patch as WorkItemPatch<T>) : undefined;\n\t\tconst patch =\n\t\t\texplicitPatch === undefined\n\t\t\t\t? inlinePatch\n\t\t\t\t: ({ ...inlinePatch, ...explicitPatch } as WorkItemPatch<T>);\n\t\treturn {\n\t\t\t...(payload as unknown as WorkItemPatchActionPayload<T>),\n\t\t\tpatch: Object.keys(patch).length === 0 ? undefined : patch,\n\t\t};\n\t}\n\treturn { patch: payload as WorkItemPatch<T> };\n}\n\nfunction inlinePatchFields<T>(payload: Record<string, unknown>): WorkItemPatch<T> {\n\tconst patch: Record<string, unknown> = {};\n\tfor (const [key, value] of Object.entries(payload)) {\n\t\tif (key === \"metadata\") continue;\n\t\tif (patchFieldKeys.has(key)) patch[key] = value;\n\t}\n\treturn patch as WorkItemPatch<T>;\n}\n\nfunction splitDedicatedPatchFields<T>(\n\tpayload: WorkItemPatchActionPayload<T>,\n\tworkItem: WorkItemProjection<T>,\n): WorkItemPatchActionPayload<T> {\n\tif (!isRecord(payload.patch)) return payload;\n\tconst patchRecord = payload.patch as Record<string, unknown>;\n\tconst patch: Record<string, unknown> = {};\n\tfor (const [key, value] of Object.entries(patchRecord)) {\n\t\tif (key === \"acceptanceCriteria\" || key === \"verificationPlan\" || key === \"verificationSteps\")\n\t\t\tcontinue;\n\t\tpatch[key] = value;\n\t}\n\tconst acceptanceCriteria =\n\t\tpayload.acceptanceCriteria ??\n\t\t(Array.isArray(patchRecord.acceptanceCriteria)\n\t\t\t? (patchRecord.acceptanceCriteria as readonly AcceptanceCriterion[])\n\t\t\t: undefined);\n\tconst verificationPlan =\n\t\tpayload.verificationPlan ??\n\t\t(isRecord(patchRecord.verificationPlan)\n\t\t\t? (patchRecord.verificationPlan as unknown as VerificationPlan<T>)\n\t\t\t: Array.isArray(patchRecord.verificationSteps)\n\t\t\t\t? ({\n\t\t\t\t\t\t...(workItem.verificationPlan ?? { planId: \"default\" }),\n\t\t\t\t\t\tsteps: patchRecord.verificationSteps,\n\t\t\t\t\t} as VerificationPlan<T>)\n\t\t\t\t: undefined);\n\treturn {\n\t\t...payload,\n\t\tpatch: Object.keys(patch).length === 0 ? undefined : (patch as WorkItemPatch<T>),\n\t\tacceptanceCriteria,\n\t\tverificationPlan,\n\t};\n}\n\nfunction invalidPatchKeys<T>(\n\tpatch: WorkItemPatch<T>,\n\tpolicy: WorkItemDomainActionApplyPolicy,\n): readonly string[] {\n\tconst allowed = new Set(policy.patch?.allowedFields ?? Array.from(patchFieldKeys));\n\treturn Object.keys(patch).filter((key) => !patchFieldKeys.has(key) || !allowed.has(key));\n}\n\nfunction allowsAcceptanceCriteria(policy: WorkItemDomainActionApplyPolicy): boolean {\n\tif (policy.patch?.allowAcceptanceCriteria === false) return false;\n\tconst allowed = policy.patch?.allowedFields;\n\treturn (\n\t\tallowed === undefined ||\n\t\tallowed.includes(\"acceptanceCriteria\") ||\n\t\tpolicy.patch?.allowAcceptanceCriteria === true\n\t);\n}\n\nfunction allowsVerificationPlan(policy: WorkItemDomainActionApplyPolicy): boolean {\n\tif (policy.patch?.allowVerificationPlan === false) return false;\n\tconst allowed = policy.patch?.allowedFields;\n\treturn (\n\t\tallowed === undefined ||\n\t\tallowed.includes(\"verificationPlan\") ||\n\t\tallowed.includes(\"verificationSteps\") ||\n\t\tpolicy.patch?.allowVerificationPlan === true\n\t);\n}\n\nfunction selectApplyPolicy<T>(\n\tstate: ApplicationState<T>,\n\tproposal: WorkItemDomainActionProposal,\n\tadmission: WorkItemDomainActionAdmission,\n):\n\t| WorkItemDomainActionApplyPolicy\n\t| \"missing-policy\"\n\t| \"unknown-work-item-domain-action-apply-policy\"\n\t| \"policy-mismatch\" {\n\tconst explicitId = explicitApplyPolicyId(proposal, admission);\n\tif (explicitId !== undefined)\n\t\treturn state.policies.get(explicitId) ?? \"unknown-work-item-domain-action-apply-policy\";\n\tconst matching = Array.from(state.policies.values()).filter((policy) =>\n\t\tpolicyAllowsAction(policy, proposal.actionKind),\n\t);\n\tif (matching.length === 0) return \"missing-policy\";\n\tif (matching.length > 1) return \"policy-mismatch\";\n\treturn matching[0];\n}\n\nfunction explicitApplyPolicyId(\n\tproposal: WorkItemDomainActionProposal,\n\tadmission: WorkItemDomainActionAdmission,\n): string | undefined {\n\tconst metadataPolicy =\n\t\tstringMetadata(admission.metadata, \"applyPolicyId\") ??\n\t\tstringMetadata(proposal.metadata, \"applyPolicyId\");\n\tif (metadataPolicy !== undefined) return metadataPolicy;\n\treturn [...(admission.sourceRefs ?? []), ...(proposal.sourceRefs ?? [])].find(\n\t\t(sourceRef) => sourceRef.kind === \"work-item-domain-action-apply-policy\",\n\t)?.id;\n}\n\nfunction policyAllowsAction(policy: WorkItemDomainActionApplyPolicy, actionKind: string): boolean {\n\treturn policy.actionKinds === undefined || policy.actionKinds.includes(actionKind);\n}\n\nfunction admissionProposalMismatch(\n\tadmission: WorkItemDomainActionAdmission,\n\tproposal: WorkItemDomainActionProposal,\n):\n\t| {\n\t\t\treadonly field: \"workItemId\" | \"actionKind\";\n\t\t\treadonly admissionValue: string;\n\t\t\treadonly proposalValue: string;\n\t\t\treadonly message: string;\n\t }\n\t| undefined {\n\tif (admission.workItemId !== proposal.workItemId)\n\t\treturn {\n\t\t\tfield: \"workItemId\",\n\t\t\tadmissionValue: admission.workItemId,\n\t\t\tproposalValue: proposal.workItemId,\n\t\t\tmessage: `Admission '${admission.admissionId}' workItemId does not match proposal '${proposal.proposalId}'`,\n\t\t};\n\tif (admission.actionKind !== proposal.actionKind)\n\t\treturn {\n\t\t\tfield: \"actionKind\",\n\t\t\tadmissionValue: admission.actionKind,\n\t\t\tproposalValue: proposal.actionKind,\n\t\t\tmessage: `Admission '${admission.admissionId}' actionKind does not match proposal '${proposal.proposalId}'`,\n\t\t};\n\treturn undefined;\n}\n\nfunction conflictingApplicationMetadata(\n\tproposal: WorkItemDomainActionProposal,\n\tadmission: WorkItemDomainActionAdmission,\n):\n\t| {\n\t\t\treadonly field: \"authoringRevision\" | \"executionInputRevision\" | \"applyPolicyId\";\n\t\t\treadonly code: \"stale-revision\" | \"stale-execution-input\" | \"policy-mismatch\";\n\t\t\treadonly proposalValue: number | string;\n\t\t\treadonly admissionValue: number | string;\n\t\t\treadonly message: string;\n\t }\n\t| undefined {\n\tconst authoringRevision = conflictingMetadataNumber(proposal, admission, \"authoringRevision\");\n\tif (authoringRevision !== undefined)\n\t\treturn {\n\t\t\tfield: \"authoringRevision\",\n\t\t\tcode: \"stale-revision\",\n\t\t\t...authoringRevision,\n\t\t\tmessage: `Admission '${admission.admissionId}' carries conflicting authoringRevision metadata`,\n\t\t};\n\tconst executionInputRevision = conflictingMetadataNumber(\n\t\tproposal,\n\t\tadmission,\n\t\t\"executionInputRevision\",\n\t);\n\tif (executionInputRevision !== undefined)\n\t\treturn {\n\t\t\tfield: \"executionInputRevision\",\n\t\t\tcode: \"stale-execution-input\",\n\t\t\t...executionInputRevision,\n\t\t\tmessage: `Admission '${admission.admissionId}' carries conflicting executionInputRevision metadata`,\n\t\t};\n\tconst applyPolicyId = conflictingMetadataString(proposal, admission, \"applyPolicyId\");\n\tif (applyPolicyId !== undefined)\n\t\treturn {\n\t\t\tfield: \"applyPolicyId\",\n\t\t\tcode: \"policy-mismatch\",\n\t\t\t...applyPolicyId,\n\t\t\tmessage: `Admission '${admission.admissionId}' carries conflicting applyPolicyId metadata`,\n\t\t};\n\treturn undefined;\n}\n\nfunction conflictingMetadataNumber(\n\tproposal: WorkItemDomainActionProposal,\n\tadmission: WorkItemDomainActionAdmission,\n\tkey: string,\n): { readonly proposalValue: number; readonly admissionValue: number } | undefined {\n\tconst proposalValue = numberMetadata(proposal.metadata, key);\n\tconst admissionValue = numberMetadata(admission.metadata, key);\n\tif (\n\t\tproposalValue === undefined ||\n\t\tadmissionValue === undefined ||\n\t\tproposalValue === admissionValue\n\t)\n\t\treturn undefined;\n\treturn { proposalValue, admissionValue };\n}\n\nfunction conflictingMetadataString(\n\tproposal: WorkItemDomainActionProposal,\n\tadmission: WorkItemDomainActionAdmission,\n\tkey: string,\n): { readonly proposalValue: string; readonly admissionValue: string } | undefined {\n\tconst proposalValue = stringMetadata(proposal.metadata, key);\n\tconst admissionValue = stringMetadata(admission.metadata, key);\n\tif (\n\t\tproposalValue === undefined ||\n\t\tadmissionValue === undefined ||\n\t\tproposalValue === admissionValue\n\t)\n\t\treturn undefined;\n\treturn { proposalValue, admissionValue };\n}\n\nfunction staleRevision<T>(\n\tproposal: WorkItemDomainActionProposal,\n\tadmission: WorkItemDomainActionAdmission,\n\tworkItem: WorkItemProjection<T>,\n):\n\t| { readonly kind: \"stale-revision\"; readonly expected: number; readonly current: number }\n\t| { readonly kind: \"stale-execution-input\"; readonly expected: number; readonly current: number }\n\t| undefined {\n\tconst authoringRevision =\n\t\tnumberMetadata(admission.metadata, \"authoringRevision\") ??\n\t\tnumberMetadata(proposal.metadata, \"authoringRevision\");\n\tif (authoringRevision !== undefined && authoringRevision !== workItem.authoringRevision)\n\t\treturn {\n\t\t\tkind: \"stale-revision\",\n\t\t\texpected: authoringRevision,\n\t\t\tcurrent: workItem.authoringRevision,\n\t\t};\n\tconst executionInputRevision =\n\t\tnumberMetadata(admission.metadata, \"executionInputRevision\") ??\n\t\tnumberMetadata(proposal.metadata, \"executionInputRevision\");\n\tif (\n\t\texecutionInputRevision !== undefined &&\n\t\texecutionInputRevision !== workItem.executionInputRevision\n\t)\n\t\treturn {\n\t\t\tkind: \"stale-execution-input\",\n\t\t\texpected: executionInputRevision,\n\t\t\tcurrent: workItem.executionInputRevision,\n\t\t};\n\treturn undefined;\n}\n\nfunction applyPolicyMessage(\n\tcode: \"missing-policy\" | \"unknown-work-item-domain-action-apply-policy\" | \"policy-mismatch\",\n\tproposal: WorkItemDomainActionProposal,\n\tadmission: WorkItemDomainActionAdmission,\n): string {\n\tif (code === \"missing-policy\")\n\t\treturn `Admitted action '${admission.admissionId}' requires an explicit apply policy`;\n\tif (code === \"unknown-work-item-domain-action-apply-policy\")\n\t\treturn `Admitted action '${admission.admissionId}' references a missing apply policy`;\n\treturn `Admitted action '${proposal.proposalId}' matches multiple apply policies`;\n}\n\nfunction emitApplication<T>(\n\tctx: Ctx,\n\tstate: ApplicationState<T>,\n\tadmission: WorkItemDomainActionAdmission,\n\tproposal: WorkItemDomainActionProposal,\n\tapplicationState: WorkItemDomainActionApplication[\"state\"],\n\tfacts: readonly WorkItemAuthoringFact<T>[],\n\topts: { readonly code?: string; readonly message?: string; readonly policyId?: string } = {},\n): void {\n\tconst producedFactIds = facts.map((fact) => fact.eventId);\n\tconst application: WorkItemDomainActionApplication = {\n\t\tkind: \"work-item-domain-action-application\",\n\t\tapplicationId: `${admission.admissionId}:application`,\n\t\tadmissionId: admission.admissionId,\n\t\tproposalId: proposal.proposalId,\n\t\tworkItemId: proposal.workItemId,\n\t\tactionKind: proposal.actionKind,\n\t\tstate: applicationState,\n\t\tproducedFactIds,\n\t\treason: admission.reason ?? proposal.reason,\n\t\tsourceRefs: admissionRefs(admission, proposal),\n\t\tmetadata: { policyId: opts.policyId, code: opts.code },\n\t};\n\temitApplicationFact(ctx, \"application\", application);\n\temitApplicationStatus(ctx, state, {\n\t\tstate: applicationState,\n\t\tcode: opts.code,\n\t\tmessage: opts.message,\n\t\tworkItemId: proposal.workItemId,\n\t\tproposalId: proposal.proposalId,\n\t\tadmissionId: admission.admissionId,\n\t\tactionKind: proposal.actionKind,\n\t\tsourceRefs: application.sourceRefs,\n\t\tmetadata: { producedFactIds, policyId: opts.policyId },\n\t});\n}\n\nfunction emitApplicationIssue<T>(\n\tctx: Ctx,\n\tstate: ApplicationState<T>,\n\tkey: string,\n\tcode: string,\n\tmessage: string,\n\tworkItemId?: string,\n\tsourceRefs?: readonly SourceRef[],\n\tmetadata?: Record<string, unknown>,\n): void {\n\tif (state.issueKeys.has(key)) return;\n\tstate.issueKeys.add(key);\n\tconst item = dataIssue(code, message, { subjectId: workItemId, refs: sourceRefs, metadata });\n\temitApplicationFact(ctx, \"issue\", item);\n\temitApplicationStatus(ctx, state, {\n\t\tstate: code === \"missing-policy\" ? \"missing-policy\" : \"rejected\",\n\t\tcode,\n\t\tmessage,\n\t\tworkItemId,\n\t\tsourceRefs,\n\t\tmetadata,\n\t});\n}\n\nfunction emitIntakeStatus(\n\tctx: Ctx,\n\tstate: IntakeState,\n\tstatus: Omit<WorkItemDomainActionStatus, \"kind\" | \"statusId\">,\n): void {\n\tstate.statusSeq += 1;\n\tconst statusFact = {\n\t\tkind: \"work-item-domain-action-status\",\n\t\tstatusId: `work-item-domain-action-intake-status:${state.statusSeq}`,\n\t\t...status,\n\t} satisfies WorkItemDomainActionStatus;\n\temitIntake(ctx, \"status\", statusFact);\n\temitIntakeAudit(ctx, state, \"work-item-domain-action-intake-status\", statusFact);\n}\n\nfunction emitApplicationStatus<T>(\n\tctx: Ctx,\n\tstate: ApplicationState<T>,\n\tstatus: Omit<WorkItemDomainActionStatus, \"kind\" | \"statusId\">,\n): void {\n\tstate.statusSeq += 1;\n\tconst statusFact = {\n\t\tkind: \"work-item-domain-action-status\",\n\t\tstatusId: `work-item-domain-action-application-status:${state.statusSeq}`,\n\t\t...status,\n\t} satisfies WorkItemDomainActionStatus;\n\temitApplicationFact(ctx, \"status\", statusFact);\n\temitApplicationAudit(ctx, state, \"work-item-domain-action-application-status\", statusFact);\n}\n\nfunction emitIntakeAudit(\n\tctx: Ctx,\n\tstate: IntakeState,\n\tkind: string,\n\tstatus: WorkItemDomainActionStatus,\n): void {\n\tstate.auditSeq += 1;\n\temitIntake(ctx, \"audit\", auditRecord(kind, state.auditSeq, status));\n}\n\nfunction emitApplicationAudit<T>(\n\tctx: Ctx,\n\tstate: ApplicationState<T>,\n\tkind: string,\n\tstatus: WorkItemDomainActionStatus,\n): void {\n\tstate.auditSeq += 1;\n\temitApplicationFact(ctx, \"audit\", auditRecord(kind, state.auditSeq, status));\n}\n\nfunction auditRecord(\n\tkind: string,\n\tseq: number,\n\tstatus: WorkItemDomainActionStatus,\n): AgentRuntimeAuditRecord {\n\treturn {\n\t\tid: `${kind}:${seq}`,\n\t\tkind,\n\t\tsubjectId: status.workItemId,\n\t\tmessage: status.message,\n\t\tissueCode: status.code,\n\t\tsourceRefs: status.sourceRefs,\n\t\tmetadata: {\n\t\t\tstatusId: status.statusId,\n\t\t\tstate: status.state,\n\t\t\tproposalId: status.proposalId,\n\t\t\tadmissionId: status.admissionId,\n\t\t\tactionKind: status.actionKind,\n\t\t\t...(status.metadata ?? {}),\n\t\t},\n\t};\n}\n\nfunction emitIntake<K extends IntakeFact[\"kind\"]>(\n\tctx: Ctx,\n\tkind: K,\n\tvalue: Extract<IntakeFact, { kind: K }>[\"value\"],\n): void {\n\tctx.down([[\"DATA\", { kind, value } as IntakeFact]]);\n}\n\nfunction emitApplicationFact<T, K extends ApplicationFact<T>[\"kind\"]>(\n\tctx: Ctx,\n\tkind: K,\n\tvalue: Extract<ApplicationFact<T>, { kind: K }>[\"value\"],\n): void {\n\tctx.down([[\"DATA\", { kind, value } as ApplicationFact<T>]]);\n}\n\nfunction project<TFact, TSelected>(\n\tgraph: Graph,\n\truntime: Node<TFact>,\n\tname: string,\n\tfactory: string,\n\tselect: (fact: TFact) => TSelected | undefined,\n): Node<TSelected> {\n\treturn graph.node<TSelected>(\n\t\t[runtime],\n\t\t(ctx) => {\n\t\t\tfor (const raw of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst selected = select(raw as TFact);\n\t\t\t\tif (selected !== undefined) ctx.down([[\"DATA\", selected]]);\n\t\t\t}\n\t\t},\n\t\t{ name, factory, partial: true, completeWhenDepsComplete: false, errorWhenDepsError: false },\n\t);\n}\n\nfunction firstDuplicateFactId<T>(\n\tstate: ApplicationState<T>,\n\tfacts: readonly WorkItemAuthoringFact<T>[],\n): string | undefined {\n\tconst pending = new Set<string>();\n\tfor (const fact of facts) {\n\t\tif (state.emittedFactIds.has(fact.eventId) || pending.has(fact.eventId)) return fact.eventId;\n\t\tpending.add(fact.eventId);\n\t}\n\treturn undefined;\n}\n\nfunction claimFactId<T>(state: ApplicationState<T>, factId: string): boolean {\n\tif (state.emittedFactIds.has(factId)) return false;\n\tstate.emittedFactIds.add(factId);\n\treturn true;\n}\n\nfunction admissionRefs(\n\tadmission: WorkItemDomainActionAdmission,\n\tproposal?: WorkItemDomainActionProposal,\n\tpolicy?: WorkItemDomainActionApplyPolicy,\n): readonly SourceRef[] {\n\treturn uniqueSourceRefs([\n\t\tref(\"work-item-domain-action-admission\", admission.admissionId),\n\t\tref(\"work-item-domain-action-proposal\", admission.proposalId),\n\t\t...(proposal === undefined\n\t\t\t? []\n\t\t\t: [\n\t\t\t\t\tref(\"work-item\", proposal.workItemId),\n\t\t\t\t\tref(\"work-item-evidence\", proposal.evidenceId),\n\t\t\t\t\t...(proposal.sourceRefs ?? []),\n\t\t\t\t]),\n\t\t...(policy === undefined ? [] : [ref(\"work-item-domain-action-apply-policy\", policy.policyId)]),\n\t\t...(admission.sourceRefs ?? []),\n\t]);\n}\n\nfunction actionSourceRefs(\n\tadmission: WorkItemDomainActionAdmission,\n\tproposal: WorkItemDomainActionProposal,\n\tpolicy: WorkItemDomainActionApplyPolicy,\n): readonly SourceRef[] {\n\treturn admissionRefs(admission, proposal, policy);\n}\n\nfunction dataIssue(\n\tcode: string,\n\tmessage: string,\n\topts: {\n\t\treadonly subjectId?: string;\n\t\treadonly refs?: readonly SourceRef[];\n\t\treadonly metadata?: Record<string, unknown>;\n\t} = {},\n): DataIssue {\n\treturn {\n\t\tkind: \"issue\",\n\t\tcode,\n\t\tmessage,\n\t\tseverity: \"error\",\n\t\tsource: \"work-item-actions\",\n\t\tsubjectId: opts.subjectId,\n\t\trefs: opts.refs?.map((sourceRef) => `${sourceRef.kind}:${sourceRef.id}`),\n\t\tmetadata: opts.metadata,\n\t};\n}\n\nfunction uniqueSourceRefs(sourceRefs: readonly SourceRef[]): readonly SourceRef[] {\n\tconst seen = new Set<string>();\n\tconst out: SourceRef[] = [];\n\tfor (const sourceRef of sourceRefs) {\n\t\tconst key = `${sourceRef.kind}:${sourceRef.id}:${JSON.stringify(sourceRef.metadata ?? {})}`;\n\t\tif (seen.has(key)) continue;\n\t\tseen.add(key);\n\t\tout.push(sourceRef);\n\t}\n\treturn out;\n}\n\nfunction sourceRefs(value: unknown): readonly SourceRef[] | undefined {\n\tif (!Array.isArray(value)) return undefined;\n\treturn value.filter(\n\t\t(item): item is SourceRef =>\n\t\t\tisRecord(item) && typeof item.kind === \"string\" && typeof item.id === \"string\",\n\t);\n}\n\nfunction numberMetadata(\n\tmetadata: Record<string, unknown> | undefined,\n\tkey: string,\n): number | undefined {\n\tconst value = metadata?.[key];\n\treturn typeof value === \"number\" ? value : undefined;\n}\n\nfunction stringMetadata(\n\tmetadata: Record<string, unknown> | undefined,\n\tkey: string,\n): string | undefined {\n\tconst value = metadata?.[key];\n\treturn typeof value === \"string\" ? value : undefined;\n}\n\nfunction ref(kind: string, id: string): SourceRef {\n\treturn { kind, id };\n}\n\nfunction recordString(value: unknown, key: string): string | undefined {\n\treturn isRecord(value) && typeof value[key] === \"string\" ? value[key] : undefined;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn value !== null && typeof value === \"object\";\n}\n"],"mappings":"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","names":["sourceRefs"]}
1
+ {"version":3,"sources":["../../../src/orchestration/work-item-runtime-shared.ts","../../../src/orchestration/work-item-runtime-admission.ts","../../../src/solutions/work-item/actions-shared.ts","../../../src/solutions/work-item/actions-types.ts","../../../src/solutions/work-item/actions-application.ts","../../../src/solutions/work-item/actions-builders.ts","../../../src/solutions/work-item/actions-capability-guard.ts","../../../src/solutions/work-item/actions-intake.ts"],"sourcesContent":["import { type Ctx, depBatch } from \"../ctx/types.js\";\nimport type { DataIssue } from \"../data/index.js\";\nimport type { Graph } from \"../graph/graph.js\";\nimport type { Node } from \"../node/node.js\";\nimport type { AgentRuntimeAuditRecord, EffectRunResult, SourceRef } from \"./agent-runtime.js\";\nimport type {\n\tWorkItemDomainActionAdmission,\n\tWorkItemDomainActionAdmissionDecision,\n\tWorkItemDomainActionAdmissionFact,\n\tWorkItemDomainActionAdmissionPolicy,\n\tWorkItemDomainActionAdmissionStateInternal,\n\tWorkItemDomainActionAdmissionViews,\n\tWorkItemDomainActionAdmissionViewsState,\n\tWorkItemDomainActionProposal,\n\tWorkItemDomainActionProposalFact,\n\tWorkItemDomainActionProposalSpec,\n\tWorkItemDomainActionProposalState,\n\tWorkItemDomainActionProposalViews,\n\tWorkItemDomainActionProposalViewsState,\n\tWorkItemEffectMappingPolicy,\n\tWorkItemEffectRequested,\n\tWorkItemEffectRequestViews,\n\tWorkItemEffectRunFact,\n\tWorkItemEffectRunState,\n\tWorkItemEffectRunViewsState,\n\tWorkItemEvidenceMapperFact,\n\tWorkItemEvidenceRecorded,\n\tWorkItemEvidenceState,\n\tWorkItemEvidenceViews,\n\tWorkItemEvidenceViewsState,\n\tWorkItemSeed,\n\tWorkItemStatusRecord,\n} from \"./work-item-runtime-types.js\";\n\nexport function policyAppliesToRequest(\n\tpolicy: WorkItemEffectMappingPolicy,\n\teffectKind: string | undefined,\n): boolean {\n\treturn (\n\t\tpolicy.effectKinds === undefined ||\n\t\t(effectKind !== undefined && policy.effectKinds.includes(effectKind))\n\t);\n}\n\nexport function emitWorkItemEffectRunIssue(\n\tctx: Ctx,\n\tstate: WorkItemEffectRunState,\n\tkey: string,\n\tcode: string,\n\tmessage: string,\n\tsubjectId?: string,\n\tsourceRefs?: readonly SourceRef[],\n): void {\n\tif (state.issueKeys.has(key)) return;\n\tstate.issueKeys.add(key);\n\tstate.issueSeq += 1;\n\tstate.statusSeq += 1;\n\tstate.auditSeq += 1;\n\tconst issue = dataIssue(code, message, { subjectId, refs: sourceRefs });\n\tconst status: WorkItemStatusRecord = {\n\t\tkind: \"work-item-status\",\n\t\tstatusId: `${subjectId ?? \"work-item\"}:mapping-issue:${state.statusSeq}`,\n\t\tworkItemId: subjectId ?? \"unknown\",\n\t\tstate: \"mapping-issue\",\n\t\tsourceRefs,\n\t\tissues: [issue],\n\t};\n\tconst audit: AgentRuntimeAuditRecord = {\n\t\tid: `${subjectId ?? \"work-item\"}:${code}:${state.auditSeq}`,\n\t\tkind: \"work-item-effect-run-issue\",\n\t\tsubjectId,\n\t\tissueCode: code,\n\t\tmessage,\n\t\tsourceRefs,\n\t};\n\tstate.issues.push(issue);\n\tstate.audit.push(audit);\n\tctx.down([\n\t\t[\"DATA\", { kind: \"issue\", issue } satisfies WorkItemEffectRunFact],\n\t\t[\"DATA\", { kind: \"status\", status } satisfies WorkItemEffectRunFact],\n\t\t[\"DATA\", { kind: \"audit\", audit } satisfies WorkItemEffectRunFact],\n\t]);\n}\n\nexport function emitWorkItemEvidenceIssue(\n\tctx: Ctx,\n\tstate: WorkItemEvidenceState,\n\tkey: string,\n\tcode: string,\n\tmessage: string,\n\tsubjectId?: string,\n\tsourceRefs?: readonly SourceRef[],\n): void {\n\tif (state.issueKeys.has(key)) return;\n\tstate.issueKeys.add(key);\n\tstate.issueSeq += 1;\n\tstate.statusSeq += 1;\n\tstate.auditSeq += 1;\n\tconst issue = dataIssue(code, message, { subjectId, refs: sourceRefs });\n\tconst status: WorkItemStatusRecord = {\n\t\tkind: \"work-item-status\",\n\t\tstatusId: `${subjectId ?? \"work-item\"}:mapping-issue:${state.statusSeq}`,\n\t\tworkItemId: subjectId ?? \"unknown\",\n\t\tstate: \"mapping-issue\",\n\t\tsourceRefs,\n\t\tissues: [issue],\n\t};\n\tconst audit: AgentRuntimeAuditRecord = {\n\t\tid: `${subjectId ?? \"work-item\"}:${code}:${state.auditSeq}`,\n\t\tkind: \"work-item-evidence-mapping-issue\",\n\t\tsubjectId,\n\t\tissueCode: code,\n\t\tmessage,\n\t\tsourceRefs,\n\t};\n\tstate.issues.push(issue);\n\tstate.audit.push(audit);\n\tctx.down([\n\t\t[\"DATA\", { kind: \"issue\", issue } satisfies WorkItemEvidenceMapperFact],\n\t\t[\"DATA\", { kind: \"status\", status } satisfies WorkItemEvidenceMapperFact],\n\t\t[\"DATA\", { kind: \"audit\", audit } satisfies WorkItemEvidenceMapperFact],\n\t]);\n}\n\nexport function emitWorkItemActionProposalIssue(\n\tctx: Ctx,\n\tstate: WorkItemDomainActionProposalState,\n\tkey: string,\n\tcode: string,\n\tmessage: string,\n\tsubjectId?: string,\n\tsourceRefs?: readonly SourceRef[],\n): void {\n\tif (state.issueKeys.has(key)) return;\n\tstate.issueKeys.add(key);\n\tstate.issueSeq += 1;\n\tstate.statusSeq += 1;\n\tstate.auditSeq += 1;\n\tconst issue = dataIssue(code, message, { subjectId, refs: sourceRefs });\n\tconst status: WorkItemStatusRecord = {\n\t\tkind: \"work-item-status\",\n\t\tstatusId: `${subjectId ?? \"work-item\"}:mapping-issue:${state.statusSeq}`,\n\t\tworkItemId: subjectId ?? \"unknown\",\n\t\tstate: \"mapping-issue\",\n\t\tsourceRefs,\n\t\tissues: [issue],\n\t};\n\tconst audit: AgentRuntimeAuditRecord = {\n\t\tid: `${subjectId ?? \"work-item\"}:${code}:${state.auditSeq}`,\n\t\tkind: \"work-item-action-proposal-issue\",\n\t\tsubjectId,\n\t\tissueCode: code,\n\t\tmessage,\n\t\tsourceRefs,\n\t};\n\tctx.down([\n\t\t[\"DATA\", { kind: \"issue\", issue } satisfies WorkItemDomainActionProposalFact],\n\t\t[\"DATA\", { kind: \"status\", status } satisfies WorkItemDomainActionProposalFact],\n\t\t[\"DATA\", { kind: \"audit\", audit } satisfies WorkItemDomainActionProposalFact],\n\t]);\n}\n\nexport function emitWorkItemAdmissionIssue(\n\tctx: Ctx,\n\tstate: WorkItemDomainActionAdmissionStateInternal,\n\tkey: string,\n\tcode: string,\n\tmessage: string,\n\tsubjectId?: string,\n\tsourceRefs?: readonly SourceRef[],\n): void {\n\tif (state.issueKeys.has(key)) return;\n\tstate.issueKeys.add(key);\n\tstate.issueSeq += 1;\n\tstate.statusSeq += 1;\n\tstate.auditSeq += 1;\n\tconst issue = dataIssue(code, message, { subjectId, refs: sourceRefs });\n\tconst status: WorkItemStatusRecord = {\n\t\tkind: \"work-item-status\",\n\t\tstatusId: `${subjectId ?? \"work-item\"}:mapping-issue:${state.statusSeq}`,\n\t\tworkItemId: subjectId ?? \"unknown\",\n\t\tstate: \"mapping-issue\",\n\t\tsourceRefs,\n\t\tissues: [issue],\n\t};\n\tconst audit: AgentRuntimeAuditRecord = {\n\t\tid: `${subjectId ?? \"work-item\"}:${code}:${state.auditSeq}`,\n\t\tkind: \"work-item-domain-action-admission-issue\",\n\t\tsubjectId,\n\t\tissueCode: code,\n\t\tmessage,\n\t\tsourceRefs,\n\t};\n\tctx.down([\n\t\t[\"DATA\", { kind: \"issue\", issue } satisfies WorkItemDomainActionAdmissionFact],\n\t\t[\"DATA\", { kind: \"status\", status } satisfies WorkItemDomainActionAdmissionFact],\n\t\t[\"DATA\", { kind: \"audit\", audit } satisfies WorkItemDomainActionAdmissionFact],\n\t]);\n}\n\nexport function emptyWorkItemEffectRunState(): WorkItemEffectRunState {\n\treturn {\n\t\tworkItems: new Map<string, WorkItemSeed>(),\n\t\trequests: new Map<string, WorkItemEffectRequested>(),\n\t\teffectRunsByRequest: new Map<string, string>(),\n\t\tseededEffectRunIds: new Set<string>(),\n\t\tissues: [],\n\t\taudit: [],\n\t\tissueKeys: new Set<string>(),\n\t\tstatusSeq: 0,\n\t\tissueSeq: 0,\n\t\tauditSeq: 0,\n\t};\n}\n\nexport function emptyWorkItemEvidenceState(): WorkItemEvidenceState {\n\treturn {\n\t\tworkItems: new Map<string, WorkItemSeed>(),\n\t\teffectRuns: new Map<string, EffectRun>(),\n\t\teffectRunWorkItems: new Map<string, string>(),\n\t\tevidenceByWorkItem: new Map<string, WorkItemEvidenceRecorded[]>(),\n\t\tlatestEvidenceByEffectRun: new Map<string, WorkItemEvidenceRecorded>(),\n\t\tpendingEffectRequests: new Map<string, WorkItemEffectRequested>(),\n\t\trequestsByEffectRun: new Map<string, WorkItemEffectRequested>(),\n\t\tambiguousRequestsByEffectRun: new Map<string, WorkItemEffectRequested[]>(),\n\t\tpolicies: new Map<string, WorkItemEffectMappingPolicy>(),\n\t\tissues: [],\n\t\taudit: [],\n\t\tissueKeys: new Set<string>(),\n\t\tstatusSeq: 0,\n\t\tissueSeq: 0,\n\t\tauditSeq: 0,\n\t};\n}\n\nexport function emptyWorkItemDomainActionProposalState(): WorkItemDomainActionProposalState {\n\treturn {\n\t\tworkItems: new Map<string, WorkItemSeed>(),\n\t\tevidence: new Map<string, WorkItemEvidenceRecorded>(),\n\t\tresults: new Map<string, EffectRunResult>(),\n\t\tpolicies: new Map<string, WorkItemEffectMappingPolicy>(),\n\t\tproposedKeys: new Set<string>(),\n\t\tissueKeys: new Set<string>(),\n\t\tstatusSeq: 0,\n\t\tissueSeq: 0,\n\t\tauditSeq: 0,\n\t};\n}\n\nexport function emptyWorkItemDomainActionAdmissionState(): WorkItemDomainActionAdmissionStateInternal {\n\treturn {\n\t\tproposals: new Map<string, WorkItemDomainActionProposal>(),\n\t\tpolicies: new Map<string, WorkItemDomainActionAdmissionPolicy>(),\n\t\tdecisions: new Map<string, WorkItemDomainActionAdmissionDecision>(),\n\t\tadmissionsById: new Map<string, WorkItemDomainActionAdmission>(),\n\t\tadmissionsByProposal: new Map<string, WorkItemDomainActionAdmission>(),\n\t\tterminalDecisionIds: new Set<string>(),\n\t\tissueKeys: new Set<string>(),\n\t\tstatusSeq: 0,\n\t\tissueSeq: 0,\n\t\tauditSeq: 0,\n\t};\n}\n\nexport function freezeWorkItemEffectRequestViews(\n\tstate: WorkItemEffectRunViewsState,\n): WorkItemEffectRequestViews {\n\treturn {\n\t\tpendingEffectRequests: Object.freeze(Array.from(state.pendingEffectRequests.values())),\n\t\tissues: Object.freeze([...state.issues]),\n\t\taudit: Object.freeze([...state.audit]),\n\t};\n}\n\nexport function freezeWorkItemEvidenceViews(\n\tstate: WorkItemEvidenceViewsState,\n): WorkItemEvidenceViews {\n\treturn {\n\t\tevidenceByWorkItem: new Map(\n\t\t\tArray.from(state.evidenceByWorkItem, ([key, value]) => [key, Object.freeze([...value])]),\n\t\t),\n\t\tlatestEvidenceByEffectRun: new Map(state.latestEvidenceByEffectRun),\n\t\tissues: Object.freeze([...state.issues]),\n\t\taudit: Object.freeze([...state.audit]),\n\t\tpendingEffectRequests: Object.freeze(Array.from(state.pendingEffectRequests.values())),\n\t};\n}\n\nexport function freezeWorkItemDomainActionProposalViews(\n\tstate: WorkItemDomainActionProposalViewsState,\n): WorkItemDomainActionProposalViews {\n\treturn {\n\t\tproposalsByWorkItem: new Map(\n\t\t\tArray.from(state.proposalsByWorkItem, ([key, value]) => [key, Object.freeze([...value])]),\n\t\t),\n\t\tproposalsByEvidence: new Map(\n\t\t\tArray.from(state.proposalsByEvidence, ([key, value]) => [key, Object.freeze([...value])]),\n\t\t),\n\t\tissues: Object.freeze([...state.issues]),\n\t\taudit: Object.freeze([...state.audit]),\n\t};\n}\n\nexport function freezeWorkItemDomainActionAdmissionViews(\n\tstate: WorkItemDomainActionAdmissionViewsState,\n): WorkItemDomainActionAdmissionViews {\n\treturn {\n\t\tadmissionsByProposal: new Map(state.admissionsByProposal),\n\t\tadmissionsByWorkItem: new Map(\n\t\t\tArray.from(state.admissionsByWorkItem, ([key, value]) => [key, Object.freeze([...value])]),\n\t\t),\n\t\tissues: Object.freeze([...state.issues]),\n\t\taudit: Object.freeze([...state.audit]),\n\t};\n}\n\nexport function deletePendingWorkItemEffectRequest(\n\tstate: Pick<\n\t\tWorkItemEffectRunViewsState | WorkItemEvidenceViewsState,\n\t\t\"pendingEffectRequests\" | \"settledRequestIds\"\n\t>,\n\trefs: readonly string[] | undefined,\n): void {\n\tfor (const requestRef of refs?.filter((value) => value.startsWith(\"work-item-effect-request:\")) ??\n\t\t[]) {\n\t\tconst requestId = requestRef.slice(\"work-item-effect-request:\".length);\n\t\tstate.pendingEffectRequests.delete(requestId);\n\t\tstate.settledRequestIds.add(requestId);\n\t}\n}\n\nexport function workItemEffectRequestRefs(request: WorkItemEffectRequested): readonly SourceRef[] {\n\treturn [\n\t\tref(\"work-item\", request.workItemId),\n\t\tref(\"work-item-effect-request\", request.requestId),\n\t\t...(request.sourceRefs ?? []),\n\t];\n}\n\nexport function workItemResultRefs(result: EffectRunResult): readonly SourceRef[] {\n\treturn [\n\t\tref(\"effect-run\", result.effectRunId),\n\t\tref(\"effect-run-result\", result.resultId),\n\t\t...(result.sourceRefs ?? []),\n\t\t...(result.subjectRefs ?? []),\n\t];\n}\n\nexport function workItemActionProposalRefs(\n\tevidence: WorkItemEvidenceRecorded,\n\tresult: EffectRunResult,\n\tpolicy?: WorkItemEffectMappingPolicy,\n): readonly SourceRef[] {\n\treturn uniqueSourceRefs([\n\t\tref(\"work-item\", evidence.workItemId),\n\t\tref(\"effect-run\", evidence.effectRunId),\n\t\tref(\"effect-run-result\", evidence.effectRunResultId),\n\t\tref(\"work-item-evidence\", evidence.evidenceId),\n\t\t...(policy === undefined ? [] : [ref(\"work-item-effect-mapping-policy\", policy.policyId)]),\n\t\t...(evidence.sourceRefs ?? []),\n\t\t...(result.sourceRefs ?? []),\n\t\t...(result.subjectRefs ?? []),\n\t]);\n}\n\nexport function workItemAdmissionProposalRefs(\n\tproposal: WorkItemDomainActionProposal,\n): readonly SourceRef[] {\n\treturn uniqueSourceRefs([\n\t\tref(\"work-item\", proposal.workItemId),\n\t\tref(\"work-item-domain-action-proposal\", proposal.proposalId),\n\t\tref(\"effect-run\", proposal.effectRunId),\n\t\tref(\"effect-run-result\", proposal.effectRunResultId),\n\t\tref(\"work-item-evidence\", proposal.evidenceId),\n\t\tref(\"work-item-effect-mapping-policy\", proposal.policyId),\n\t\t...(proposal.sourceRefs ?? []),\n\t]);\n}\n\nexport function workItemAdmissionDecisionRefs(\n\tdecision: WorkItemDomainActionAdmissionDecision,\n\tproposal?: WorkItemDomainActionProposal,\n\tpolicy?: WorkItemDomainActionAdmissionPolicy,\n): readonly SourceRef[] {\n\treturn uniqueSourceRefs([\n\t\t...(proposal === undefined ? [] : workItemAdmissionProposalRefs(proposal)),\n\t\tref(\"work-item-domain-action-admission-decision\", decision.decisionId),\n\t\tref(\"work-item-domain-action-admission\", decision.admissionId),\n\t\tref(\"work-item-domain-action-proposal\", decision.proposalId),\n\t\t...(decision.policyId === undefined\n\t\t\t? []\n\t\t\t: [ref(\"work-item-domain-action-admission-policy\", decision.policyId)]),\n\t\t...(policy === undefined\n\t\t\t? []\n\t\t\t: [ref(\"work-item-domain-action-admission-policy\", policy.policyId)]),\n\t\t...(decision.targetProposalId === undefined\n\t\t\t? []\n\t\t\t: [ref(\"work-item-domain-action-proposal\", decision.targetProposalId)]),\n\t\t...(decision.targetAdmissionId === undefined\n\t\t\t? []\n\t\t\t: [ref(\"work-item-domain-action-admission\", decision.targetAdmissionId)]),\n\t\t...(decision.sourceRefs ?? []),\n\t]);\n}\n\nexport function workItemEvidenceOnlyRefs(evidence: WorkItemEvidenceRecorded): readonly SourceRef[] {\n\treturn uniqueSourceRefs([\n\t\tref(\"work-item\", evidence.workItemId),\n\t\tref(\"effect-run\", evidence.effectRunId),\n\t\tref(\"effect-run-result\", evidence.effectRunResultId),\n\t\tref(\"work-item-evidence\", evidence.evidenceId),\n\t\t...(evidence.sourceRefs ?? []),\n\t]);\n}\n\nexport function referencedWorkItemMappingPolicyIds(\n\tevidence: WorkItemEvidenceRecorded,\n): readonly string[] {\n\tconst refs = uniqueSourceRefs([...(evidence.sourceRefs ?? [])]);\n\treturn refs\n\t\t.filter((sourceRef) => sourceRef.kind === \"work-item-effect-mapping-policy\")\n\t\t.map((sourceRef) => sourceRef.id);\n}\n\nexport function effectKindFromMetadata(\n\tmetadata: Record<string, unknown> | undefined,\n): string | undefined {\n\tconst effectKind = metadata?.effectKind;\n\treturn typeof effectKind === \"string\" ? effectKind : undefined;\n}\n\nexport function workItemActionProposalPayload(\n\tspec: WorkItemDomainActionProposalSpec,\n\tevidence: WorkItemEvidenceRecorded,\n\tresult: EffectRunResult,\n): unknown {\n\tif (spec.payload !== undefined) return spec.payload;\n\tconst payloadFrom = spec.payloadFrom;\n\tif (payloadFrom === undefined) return undefined;\n\tif (payloadFrom === \"effect-run-result\")\n\t\treturn { kind: \"effect-run-result-ref\", resultId: result.resultId };\n\tif (payloadFrom === \"output\") return evidence.output;\n\treturn { kind: \"work-item-evidence-ref\", evidenceId: evidence.evidenceId };\n}\n\nexport function resultReason(result: EffectRunResult): string | undefined {\n\tif (result.status === \"canceled\" || result.status === \"waived\") return result.reason;\n\treturn undefined;\n}\n\nexport function workItemIdForEffectRunResult(\n\tstate: Pick<WorkItemDomainActionProposalState, \"evidence\">,\n\tresult: EffectRunResult,\n): string | undefined {\n\tfor (const evidence of state.evidence.values()) {\n\t\tif (\n\t\t\tevidence.effectRunResultId === result.resultId &&\n\t\t\tevidence.effectRunId === result.effectRunId\n\t\t)\n\t\t\treturn evidence.workItemId;\n\t}\n\treturn undefined;\n}\n\nexport function uniqueSourceRefs(sourceRefs: readonly SourceRef[]): readonly SourceRef[] {\n\tconst seen = new Set<string>();\n\tconst unique: SourceRef[] = [];\n\tfor (const sourceRef of sourceRefs) {\n\t\tconst key = sourceRefKey(sourceRef);\n\t\tif (seen.has(key)) continue;\n\t\tseen.add(key);\n\t\tunique.push(sourceRef);\n\t}\n\treturn unique;\n}\n\nexport function sourceRefKey(sourceRef: SourceRef): string {\n\treturn `${sourceRef.kind}:${sourceRef.id}:${JSON.stringify(sourceRef.metadata ?? {})}`;\n}\n\nexport function distinctWorkItemRefs(\n\tsourceRefs: readonly SourceRef[] | undefined,\n): readonly SourceRef[] {\n\tconst refs = new Map<string, SourceRef>();\n\tfor (const sourceRef of sourceRefs ?? []) {\n\t\tif (sourceRef.kind === \"work-item\") refs.set(sourceRef.id, sourceRef);\n\t}\n\treturn Array.from(refs.values());\n}\n\nexport function singleWorkItemRef(\n\tsourceRefs: readonly SourceRef[] | undefined,\n): SourceRef | undefined {\n\tconst matches = distinctWorkItemRefs(sourceRefs);\n\treturn matches.length === 1 ? matches[0] : undefined;\n}\n\nexport function projectRuntimeFact<T, TOut>(\n\tgraph: Graph,\n\truntime: Node<T>,\n\tname: string,\n\tfactory: string,\n\tpick: (fact: T) => TOut | undefined,\n): Node<TOut> {\n\treturn graph.node<TOut>(\n\t\t[runtime],\n\t\t(ctx) => {\n\t\t\tfor (const fact of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst typed = fact as T;\n\t\t\t\tconst value = pick(typed);\n\t\t\t\tif (value !== undefined) ctx.down([[\"DATA\", value]]);\n\t\t\t}\n\t\t},\n\t\t{ name, factory },\n\t);\n}\n\nexport function forEachPolicyDepBatch(\n\tctx: Ctx,\n\tstart: number,\n\tcount: number,\n\tfn: (value: unknown) => void,\n): void {\n\tfor (let i = 0; i < count; i += 1) {\n\t\tfor (const value of depBatch(ctx, start + i) ?? []) fn(value);\n\t}\n}\n\nexport function dataIssue(\n\tcode: string,\n\tmessage: string,\n\topts: {\n\t\treadonly subjectId?: string;\n\t\treadonly refs?: readonly SourceRef[];\n\t\treadonly severity?: DataIssue[\"severity\"];\n\t\treadonly details?: unknown;\n\t} = {},\n): DataIssue {\n\treturn {\n\t\tkind: \"issue\",\n\t\tcode,\n\t\tmessage,\n\t\tseverity: opts.severity ?? \"error\",\n\t\tsubjectId: opts.subjectId,\n\t\trefs: opts.refs?.map((r) => `${r.kind}:${r.id}`),\n\t\tdetails: opts.details,\n\t};\n}\n\nexport function ref(kind: string, id: string): SourceRef {\n\treturn { kind, id };\n}\n","import { type Ctx, depBatch } from \"../ctx/types.js\";\nimport type { Graph } from \"../graph/graph.js\";\nimport type { Node } from \"../node/node.js\";\nimport type { AgentRuntimeAuditRecord } from \"./agent-runtime.js\";\nimport {\n\temitWorkItemAdmissionIssue,\n\temptyWorkItemDomainActionAdmissionState,\n\tforEachPolicyDepBatch,\n\tfreezeWorkItemDomainActionAdmissionViews,\n\tprojectRuntimeFact,\n\tworkItemAdmissionDecisionRefs,\n\tworkItemAdmissionProposalRefs,\n} from \"./work-item-runtime-shared.js\";\nimport type {\n\tWorkItemDomainActionAdmission,\n\tWorkItemDomainActionAdmissionBundle,\n\tWorkItemDomainActionAdmissionDecision,\n\tWorkItemDomainActionAdmissionFact,\n\tWorkItemDomainActionAdmissionOutcome,\n\tWorkItemDomainActionAdmissionPolicy,\n\tWorkItemDomainActionAdmissionState,\n\tWorkItemDomainActionAdmissionStateInternal,\n\tWorkItemDomainActionAdmissionViews,\n\tWorkItemDomainActionAdmissionViewsState,\n\tWorkItemDomainActionProposal,\n\tWorkItemStatusRecord,\n} from \"./work-item-runtime-types.js\";\n\nexport function workItemDomainActionAdmissionProjector(\n\tgraph: Graph,\n\topts: {\n\t\treadonly name?: string;\n\t\treadonly proposals: Node<WorkItemDomainActionProposal>;\n\t\treadonly decisions: Node<WorkItemDomainActionAdmissionDecision>;\n\t\treadonly admissionPolicies?: readonly Node<WorkItemDomainActionAdmissionPolicy>[];\n\t\treadonly now?: () => number;\n\t},\n): WorkItemDomainActionAdmissionBundle {\n\tconst name = opts.name ?? \"workItemDomainActionAdmissions\";\n\tconst policyDeps = opts.admissionPolicies ?? [];\n\tconst policyStart = 2;\n\tconst now = opts.now ?? Date.now;\n\tconst runtime = graph.node<WorkItemDomainActionAdmissionFact>(\n\t\t[opts.proposals, opts.decisions, ...policyDeps],\n\t\t(ctx) => {\n\t\t\tconst state =\n\t\t\t\tctx.state.get<WorkItemDomainActionAdmissionStateInternal>() ??\n\t\t\t\temptyWorkItemDomainActionAdmissionState();\n\t\t\tfor (const raw of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst proposal = raw as WorkItemDomainActionProposal;\n\t\t\t\tif (state.proposals.has(proposal.proposalId)) {\n\t\t\t\t\temitWorkItemAdmissionIssue(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\t`duplicate-admission-proposal:${proposal.proposalId}`,\n\t\t\t\t\t\t\"duplicate-work-item-domain-action-proposal\",\n\t\t\t\t\t\t`WorkItemDomainActionProposal '${proposal.proposalId}' was already seen by the admission projector`,\n\t\t\t\t\t\tproposal.workItemId,\n\t\t\t\t\t\tworkItemAdmissionProposalRefs(proposal),\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstate.proposals.set(proposal.proposalId, proposal);\n\t\t\t}\n\t\t\tforEachPolicyDepBatch(ctx, policyStart, policyDeps.length, (raw) => {\n\t\t\t\tconst policy = raw as WorkItemDomainActionAdmissionPolicy;\n\t\t\t\tstate.policies.set(policy.policyId, policy);\n\t\t\t});\n\t\t\tfor (const raw of depBatch(ctx, 1) ?? []) {\n\t\t\t\tconst decision = raw as WorkItemDomainActionAdmissionDecision;\n\t\t\t\tif (state.decisions.has(decision.decisionId)) {\n\t\t\t\t\temitWorkItemAdmissionIssue(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\t`duplicate-admission-decision:${decision.decisionId}`,\n\t\t\t\t\t\t\"duplicate-work-item-domain-action-admission-decision\",\n\t\t\t\t\t\t`WorkItemDomainActionAdmissionDecision '${decision.decisionId}' was already seen by the admission projector`,\n\t\t\t\t\t\tdecision.proposalId,\n\t\t\t\t\t\tworkItemAdmissionDecisionRefs(decision),\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstate.decisions.set(decision.decisionId, decision);\n\t\t\t}\n\t\t\tevaluateWorkItemDomainActionAdmissions(ctx, state, now());\n\t\t\tctx.state.set(state);\n\t\t},\n\t\t{ name: `${name}/runtime`, factory: \"workItemDomainActionAdmissionProjector\", partial: true },\n\t);\n\treturn {\n\t\tadmissions: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/admissions`,\n\t\t\t\"workItemDomainActionAdmissions\",\n\t\t\t(fact) => (fact.kind === \"admission\" ? fact.admission : undefined),\n\t\t),\n\t\tstatus: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/status`,\n\t\t\t\"workItemDomainActionAdmissionStatus\",\n\t\t\t(fact) => (fact.kind === \"status\" ? fact.status : undefined),\n\t\t),\n\t\tissues: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/issues`,\n\t\t\t\"workItemDomainActionAdmissionIssues\",\n\t\t\t(fact) => (fact.kind === \"issue\" ? fact.issue : undefined),\n\t\t),\n\t\taudit: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/audit`,\n\t\t\t\"workItemDomainActionAdmissionAudit\",\n\t\t\t(fact) => (fact.kind === \"audit\" ? fact.audit : undefined),\n\t\t),\n\t\tviews: graph.node<WorkItemDomainActionAdmissionViews>(\n\t\t\t[runtime],\n\t\t\t(ctx) => {\n\t\t\t\tconst state = ctx.state.get<WorkItemDomainActionAdmissionViewsState>() ?? {\n\t\t\t\t\tadmissionsByProposal: new Map<string, WorkItemDomainActionAdmission>(),\n\t\t\t\t\tadmissionsByWorkItem: new Map<string, WorkItemDomainActionAdmission[]>(),\n\t\t\t\t\tissues: [],\n\t\t\t\t\taudit: [],\n\t\t\t\t};\n\t\t\t\tfor (const raw of depBatch(ctx, 0) ?? []) {\n\t\t\t\t\tconst fact = raw as WorkItemDomainActionAdmissionFact;\n\t\t\t\t\tif (fact.kind === \"admission\") {\n\t\t\t\t\t\tconst admission = fact.admission;\n\t\t\t\t\t\tstate.admissionsByProposal.set(admission.proposalId, admission);\n\t\t\t\t\t\tconst byWorkItem = state.admissionsByWorkItem.get(admission.workItemId) ?? [];\n\t\t\t\t\t\tbyWorkItem.push(admission);\n\t\t\t\t\t\tstate.admissionsByWorkItem.set(admission.workItemId, byWorkItem);\n\t\t\t\t\t} else if (fact.kind === \"issue\") state.issues.push(fact.issue);\n\t\t\t\t\telse if (fact.kind === \"audit\") state.audit.push(fact.audit);\n\t\t\t\t}\n\t\t\t\tctx.state.set(state);\n\t\t\t\tctx.down([[\"DATA\", freezeWorkItemDomainActionAdmissionViews(state)]]);\n\t\t\t},\n\t\t\t{ name: `${name}/views`, factory: \"workItemDomainActionAdmissionViews\" },\n\t\t),\n\t};\n}\n\nfunction evaluateWorkItemDomainActionAdmissions(\n\tctx: Ctx,\n\tstate: WorkItemDomainActionAdmissionStateInternal,\n\tadmittedAtMs: number,\n): void {\n\tlet emitted = true;\n\tlet passes = 0;\n\twhile (emitted && passes <= state.decisions.size) {\n\t\temitted = false;\n\t\tpasses += 1;\n\t\tfor (const decision of state.decisions.values()) {\n\t\t\tif (state.terminalDecisionIds.has(decision.decisionId)) continue;\n\t\t\temitted =\n\t\t\t\tevaluateWorkItemDomainActionAdmission(ctx, state, decision, admittedAtMs) || emitted;\n\t\t}\n\t}\n}\n\nfunction evaluateWorkItemDomainActionAdmission(\n\tctx: Ctx,\n\tstate: WorkItemDomainActionAdmissionStateInternal,\n\tdecision: WorkItemDomainActionAdmissionDecision,\n\tadmittedAtMs: number,\n): boolean {\n\tconst proposal = state.proposals.get(decision.proposalId);\n\tconst proposalRefs = workItemAdmissionDecisionRefs(decision, proposal);\n\tconst subjectId = proposal?.workItemId ?? decision.proposalId;\n\tif (proposal === undefined) {\n\t\temitWorkItemAdmissionIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`missing-admission-proposal:${decision.decisionId}:${decision.proposalId}`,\n\t\t\t\"missing-work-item-domain-action-admission-proposal\",\n\t\t\t`WorkItemDomainActionAdmissionDecision '${decision.decisionId}' references missing proposal '${decision.proposalId}'`,\n\t\t\tsubjectId,\n\t\t\tproposalRefs,\n\t\t);\n\t\treturn false;\n\t}\n\tconst staleProposalRef = (decision.sourceRefs ?? []).find(\n\t\t(sourceRef) =>\n\t\t\tsourceRef.kind === \"work-item-domain-action-proposal\" &&\n\t\t\tsourceRef.id !== decision.proposalId &&\n\t\t\tsourceRef.id !== decision.targetProposalId,\n\t);\n\tif (staleProposalRef !== undefined) {\n\t\temitWorkItemAdmissionIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`stale-admission-proposal-ref:${decision.decisionId}:${staleProposalRef.id}`,\n\t\t\t\"stale-work-item-domain-action-admission-proposal-ref\",\n\t\t\t`WorkItemDomainActionAdmissionDecision '${decision.decisionId}' carries stale proposal ref '${staleProposalRef.id}'`,\n\t\t\tproposal.workItemId,\n\t\t\tproposalRefs,\n\t\t);\n\t\tstate.terminalDecisionIds.add(decision.decisionId);\n\t\treturn false;\n\t}\n\tconst policy = admissionPolicyForDecision(state, decision);\n\tif (typeof policy === \"string\") {\n\t\temitWorkItemAdmissionIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`${policy}:${decision.decisionId}:${decision.policyId ?? \"missing\"}`,\n\t\t\tpolicy,\n\t\t\tadmissionPolicyIssueMessage(policy, decision),\n\t\t\tproposal.workItemId,\n\t\t\tproposalRefs,\n\t\t);\n\t\tif (policy === \"stale-work-item-domain-action-admission-policy-ref\")\n\t\t\tstate.terminalDecisionIds.add(decision.decisionId);\n\t\treturn false;\n\t}\n\tif (policy !== undefined) {\n\t\tconst policyIssue = validateWorkItemAdmissionPolicy(policy, decision, proposal);\n\t\tif (policyIssue !== undefined) {\n\t\t\temitWorkItemAdmissionIssue(\n\t\t\t\tctx,\n\t\t\t\tstate,\n\t\t\t\t`${policyIssue.code}:${decision.decisionId}:${policy.policyId}`,\n\t\t\t\tpolicyIssue.code,\n\t\t\t\tpolicyIssue.message,\n\t\t\t\tproposal.workItemId,\n\t\t\t\tworkItemAdmissionDecisionRefs(decision, proposal, policy),\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\t}\n\tconst mergeIssue = validateWorkItemAdmissionMergeTarget(state, decision);\n\tif (mergeIssue !== undefined) {\n\t\temitWorkItemAdmissionIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`${mergeIssue.code}:${decision.decisionId}:${decision.targetProposalId ?? \"\"}:${decision.targetAdmissionId ?? \"\"}`,\n\t\t\tmergeIssue.code,\n\t\t\tmergeIssue.message,\n\t\t\tproposal.workItemId,\n\t\t\tproposalRefs,\n\t\t);\n\t\tif (mergeIssue.code !== \"unknown-work-item-domain-action-admission-merge-target\")\n\t\t\tstate.terminalDecisionIds.add(decision.decisionId);\n\t\treturn false;\n\t}\n\tif (state.admissionsById.has(decision.admissionId)) {\n\t\temitWorkItemAdmissionIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`duplicate-admission-id:${decision.admissionId}`,\n\t\t\t\"duplicate-work-item-domain-action-admission\",\n\t\t\t`WorkItemDomainActionAdmission '${decision.admissionId}' was already emitted`,\n\t\t\tproposal.workItemId,\n\t\t\tproposalRefs,\n\t\t);\n\t\tstate.terminalDecisionIds.add(decision.decisionId);\n\t\treturn false;\n\t}\n\tif (state.admissionsByProposal.has(decision.proposalId)) {\n\t\temitWorkItemAdmissionIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`duplicate-admission-proposal-decision:${decision.proposalId}:${decision.decisionId}`,\n\t\t\t\"duplicate-work-item-domain-action-admission-proposal\",\n\t\t\t`WorkItemDomainActionProposal '${decision.proposalId}' already has an admission decision`,\n\t\t\tproposal.workItemId,\n\t\t\tproposalRefs,\n\t\t);\n\t\tstate.terminalDecisionIds.add(decision.decisionId);\n\t\treturn false;\n\t}\n\tconst admissionState = admissionStateForOutcome(decision.outcome);\n\tif (admissionState === undefined) {\n\t\temitWorkItemAdmissionIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`unsupported-admission-outcome:${decision.decisionId}:${String(decision.outcome)}`,\n\t\t\t\"unsupported-work-item-domain-action-admission-outcome\",\n\t\t\t`WorkItemDomainActionAdmissionDecision '${decision.decisionId}' uses unsupported outcome '${String(decision.outcome)}'`,\n\t\t\tproposal.workItemId,\n\t\t\tproposalRefs,\n\t\t);\n\t\tstate.terminalDecisionIds.add(decision.decisionId);\n\t\treturn false;\n\t}\n\tconst admission: WorkItemDomainActionAdmission = {\n\t\tkind: \"work-item-domain-action-admission\",\n\t\tadmissionId: decision.admissionId,\n\t\tproposalId: proposal.proposalId,\n\t\tworkItemId: proposal.workItemId,\n\t\tactionKind: proposal.actionKind,\n\t\tstate: admissionState,\n\t\tdecisionId: decision.decisionId,\n\t\tpolicyId: decision.policyId,\n\t\treason: decision.reason,\n\t\ttargetProposalId: decision.targetProposalId,\n\t\ttargetAdmissionId: decision.targetAdmissionId,\n\t\tsourceRefs: workItemAdmissionDecisionRefs(decision, proposal, policy),\n\t\tadmittedAtMs: decision.decidedAtMs ?? admittedAtMs,\n\t\tmetadata: {\n\t\t\t...(proposal.metadata ?? {}),\n\t\t\t...(policy?.metadata ?? {}),\n\t\t\t...(decision.metadata ?? {}),\n\t\t},\n\t};\n\tstate.admissionsById.set(admission.admissionId, admission);\n\tstate.admissionsByProposal.set(admission.proposalId, admission);\n\tstate.terminalDecisionIds.add(decision.decisionId);\n\tstate.statusSeq += 1;\n\tstate.auditSeq += 1;\n\tconst statusState = workItemAdmissionStatusState(admission.state);\n\tconst status: WorkItemStatusRecord = {\n\t\tkind: \"work-item-status\",\n\t\tstatusId: `${proposal.workItemId}:${statusState}:${state.statusSeq}`,\n\t\tworkItemId: proposal.workItemId,\n\t\tstate: statusState,\n\t\tsourceRefs: admission.sourceRefs,\n\t\teffectRunId: proposal.effectRunId,\n\t\tevidenceId: proposal.evidenceId,\n\t\tproposalId: proposal.proposalId,\n\t\tmetadata: {\n\t\t\tactionKind: proposal.actionKind,\n\t\t\tadmissionId: admission.admissionId,\n\t\t\tdecisionId: decision.decisionId,\n\t\t\tpolicyId: decision.policyId,\n\t\t},\n\t};\n\tconst audit: AgentRuntimeAuditRecord = {\n\t\tid: `${proposal.workItemId}:${statusState}:${state.auditSeq}`,\n\t\tkind: `work-item-domain-action-${admission.state}`,\n\t\tsubjectId: proposal.workItemId,\n\t\tsourceRefs: admission.sourceRefs,\n\t\tmetadata: {\n\t\t\tactionKind: proposal.actionKind,\n\t\t\tadmissionId: admission.admissionId,\n\t\t\tdecisionId: decision.decisionId,\n\t\t\tpolicyId: decision.policyId,\n\t\t\tproposalId: proposal.proposalId,\n\t\t},\n\t};\n\tctx.down([\n\t\t[\"DATA\", { kind: \"admission\", admission } satisfies WorkItemDomainActionAdmissionFact],\n\t\t[\"DATA\", { kind: \"status\", status } satisfies WorkItemDomainActionAdmissionFact],\n\t\t[\"DATA\", { kind: \"audit\", audit } satisfies WorkItemDomainActionAdmissionFact],\n\t]);\n\treturn true;\n}\n\nfunction admissionPolicyForDecision(\n\tstate: WorkItemDomainActionAdmissionStateInternal,\n\tdecision: WorkItemDomainActionAdmissionDecision,\n):\n\t| WorkItemDomainActionAdmissionPolicy\n\t| \"missing-work-item-domain-action-admission-policy\"\n\t| \"stale-work-item-domain-action-admission-policy-ref\"\n\t| undefined {\n\tif (decision.policyId === undefined) return undefined;\n\tconst stalePolicyRef = (decision.sourceRefs ?? []).find(\n\t\t(sourceRef) =>\n\t\t\tsourceRef.kind === \"work-item-domain-action-admission-policy\" &&\n\t\t\tsourceRef.id !== decision.policyId,\n\t);\n\tif (stalePolicyRef !== undefined) return \"stale-work-item-domain-action-admission-policy-ref\";\n\treturn (\n\t\tstate.policies.get(decision.policyId) ?? \"missing-work-item-domain-action-admission-policy\"\n\t);\n}\n\nfunction admissionPolicyIssueMessage(\n\tcode:\n\t\t| \"missing-work-item-domain-action-admission-policy\"\n\t\t| \"stale-work-item-domain-action-admission-policy-ref\",\n\tdecision: WorkItemDomainActionAdmissionDecision,\n): string {\n\tif (code === \"missing-work-item-domain-action-admission-policy\") {\n\t\treturn `WorkItemDomainActionAdmissionPolicy '${decision.policyId}' was referenced for WorkItem action admission but not present`;\n\t}\n\treturn `WorkItemDomainActionAdmissionDecision '${decision.decisionId}' carries a stale admission policy source ref`;\n}\n\nfunction validateWorkItemAdmissionPolicy(\n\tpolicy: WorkItemDomainActionAdmissionPolicy,\n\tdecision: WorkItemDomainActionAdmissionDecision,\n\tproposal: WorkItemDomainActionProposal,\n): { readonly code: string; readonly message: string } | undefined {\n\tif (policy.actionKinds !== undefined && !policy.actionKinds.includes(proposal.actionKind)) {\n\t\treturn {\n\t\t\tcode: \"work-item-domain-action-admission-policy-mismatch\",\n\t\t\tmessage: `WorkItemDomainActionAdmissionPolicy '${policy.policyId}' does not apply to actionKind '${proposal.actionKind}'`,\n\t\t};\n\t}\n\tif (policy.allowedOutcomes !== undefined && !policy.allowedOutcomes.includes(decision.outcome)) {\n\t\treturn {\n\t\t\tcode: \"unsupported-work-item-domain-action-admission-outcome\",\n\t\t\tmessage: `WorkItemDomainActionAdmissionPolicy '${policy.policyId}' does not allow outcome '${decision.outcome}'`,\n\t\t};\n\t}\n\treturn undefined;\n}\n\nfunction validateWorkItemAdmissionMergeTarget(\n\tstate: WorkItemDomainActionAdmissionStateInternal,\n\tdecision: WorkItemDomainActionAdmissionDecision,\n): { readonly code: string; readonly message: string } | undefined {\n\tconst hasTargetProposal = decision.targetProposalId !== undefined;\n\tconst hasTargetAdmission = decision.targetAdmissionId !== undefined;\n\tif (decision.outcome !== \"merge\") {\n\t\tif (hasTargetProposal || hasTargetAdmission) {\n\t\t\treturn {\n\t\t\t\tcode: \"ambiguous-work-item-domain-action-admission-merge-target\",\n\t\t\t\tmessage: `WorkItemDomainActionAdmissionDecision '${decision.decisionId}' carries a merge target for non-merge outcome '${decision.outcome}'`,\n\t\t\t};\n\t\t}\n\t\treturn undefined;\n\t}\n\tif (hasTargetProposal === hasTargetAdmission) {\n\t\treturn {\n\t\t\tcode: \"ambiguous-work-item-domain-action-admission-merge-target\",\n\t\t\tmessage: `WorkItemDomainActionAdmissionDecision '${decision.decisionId}' must reference exactly one merge target`,\n\t\t};\n\t}\n\tif (decision.targetProposalId === decision.proposalId) {\n\t\treturn {\n\t\t\tcode: \"ambiguous-work-item-domain-action-admission-merge-target\",\n\t\t\tmessage: `WorkItemDomainActionAdmissionDecision '${decision.decisionId}' cannot merge a proposal into itself`,\n\t\t};\n\t}\n\tif (decision.targetProposalId !== undefined && !state.proposals.has(decision.targetProposalId)) {\n\t\treturn {\n\t\t\tcode: \"unknown-work-item-domain-action-admission-merge-target\",\n\t\t\tmessage: `WorkItemDomainActionAdmissionDecision '${decision.decisionId}' references unknown target proposal '${decision.targetProposalId}'`,\n\t\t};\n\t}\n\tif (\n\t\tdecision.targetAdmissionId !== undefined &&\n\t\t!state.admissionsById.has(decision.targetAdmissionId)\n\t) {\n\t\treturn {\n\t\t\tcode: \"unknown-work-item-domain-action-admission-merge-target\",\n\t\t\tmessage: `WorkItemDomainActionAdmissionDecision '${decision.decisionId}' references unknown target admission '${decision.targetAdmissionId}'`,\n\t\t};\n\t}\n\treturn undefined;\n}\n\nfunction admissionStateForOutcome(\n\toutcome: WorkItemDomainActionAdmissionOutcome,\n): WorkItemDomainActionAdmissionState | undefined {\n\tif (outcome === \"admit\") return \"admitted\";\n\tif (outcome === \"reject\") return \"rejected\";\n\tif (outcome === \"defer\") return \"deferred\";\n\tif (outcome === \"merge\") return \"merged\";\n\treturn undefined;\n}\n\nfunction workItemAdmissionStatusState(\n\tstate: WorkItemDomainActionAdmissionState,\n): WorkItemStatusRecord[\"state\"] {\n\tif (state === \"admitted\") return \"domain-action-admitted\";\n\tif (state === \"rejected\") return \"domain-action-rejected\";\n\tif (state === \"deferred\") return \"domain-action-deferred\";\n\treturn \"domain-action-merged\";\n}\n","import { depBatch } from \"../../ctx/types.js\";\nimport type { DataIssue } from \"../../data/index.js\";\nimport type { Graph } from \"../../graph/graph.js\";\nimport type { Node } from \"../../node/node.js\";\nimport type { AgentRuntimeAuditRecord, SourceRef } from \"../../orchestration/agent-runtime.js\";\nimport type { WorkItemDomainActionStatus } from \"./actions-types.js\";\n\nexport function auditRecord(\n\tkind: string,\n\tseq: number,\n\tstatus: WorkItemDomainActionStatus,\n): AgentRuntimeAuditRecord {\n\treturn {\n\t\tid: `${kind}:${seq}`,\n\t\tkind,\n\t\tsubjectId: status.workItemId,\n\t\tmessage: status.message,\n\t\tissueCode: status.code,\n\t\tsourceRefs: status.sourceRefs,\n\t\tmetadata: {\n\t\t\tstatusId: status.statusId,\n\t\t\tstate: status.state,\n\t\t\tproposalId: status.proposalId,\n\t\t\tadmissionId: status.admissionId,\n\t\t\tactionKind: status.actionKind,\n\t\t\t...(status.metadata ?? {}),\n\t\t},\n\t};\n}\n\nexport function project<TFact, TSelected>(\n\tgraph: Graph,\n\truntime: Node<TFact>,\n\tname: string,\n\tfactory: string,\n\tselect: (fact: TFact) => TSelected | undefined,\n): Node<TSelected> {\n\treturn graph.node<TSelected>(\n\t\t[runtime],\n\t\t(ctx) => {\n\t\t\tfor (const raw of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst selected = select(raw as TFact);\n\t\t\t\tif (selected !== undefined) ctx.down([[\"DATA\", selected]]);\n\t\t\t}\n\t\t},\n\t\t{ name, factory, partial: true, completeWhenDepsComplete: false, errorWhenDepsError: false },\n\t);\n}\n\nexport function dataIssue(\n\tcode: string,\n\tmessage: string,\n\topts: {\n\t\treadonly subjectId?: string;\n\t\treadonly refs?: readonly SourceRef[];\n\t\treadonly metadata?: Record<string, unknown>;\n\t} = {},\n): DataIssue {\n\treturn {\n\t\tkind: \"issue\",\n\t\tcode,\n\t\tmessage,\n\t\tseverity: \"error\",\n\t\tsource: \"work-item-actions\",\n\t\tsubjectId: opts.subjectId,\n\t\trefs: opts.refs?.map((sourceRef) => `${sourceRef.kind}:${sourceRef.id}`),\n\t\tmetadata: opts.metadata,\n\t};\n}\n\nexport function uniqueSourceRefs(sourceRefs: readonly SourceRef[]): readonly SourceRef[] {\n\tconst seen = new Set<string>();\n\tconst out: SourceRef[] = [];\n\tfor (const sourceRef of sourceRefs) {\n\t\tconst key = `${sourceRef.kind}:${sourceRef.id}:${JSON.stringify(sourceRef.metadata ?? {})}`;\n\t\tif (seen.has(key)) continue;\n\t\tseen.add(key);\n\t\tout.push(sourceRef);\n\t}\n\treturn out;\n}\n\nexport function sourceRefs(value: unknown): readonly SourceRef[] | undefined {\n\tif (!Array.isArray(value)) return undefined;\n\treturn value.filter(\n\t\t(item): item is SourceRef =>\n\t\t\tisRecord(item) && typeof item.kind === \"string\" && typeof item.id === \"string\",\n\t);\n}\n\nexport function numberMetadata(\n\tmetadata: Record<string, unknown> | undefined,\n\tkey: string,\n): number | undefined {\n\tconst value = metadata?.[key];\n\treturn typeof value === \"number\" ? value : undefined;\n}\n\nexport function stringMetadata(\n\tmetadata: Record<string, unknown> | undefined,\n\tkey: string,\n): string | undefined {\n\tconst value = metadata?.[key];\n\treturn typeof value === \"string\" ? value : undefined;\n}\n\nexport function ref(kind: string, id: string): SourceRef {\n\treturn { kind, id };\n}\n\nexport function recordString(value: unknown, key: string): string | undefined {\n\treturn isRecord(value) && typeof value[key] === \"string\" ? value[key] : undefined;\n}\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n\treturn value !== null && typeof value === \"object\";\n}\n","import type { DataIssue } from \"../../data/index.js\";\nimport type { BoundaryCapabilityRef } from \"../../inspection/boundary.js\";\nimport type { Node } from \"../../node/node.js\";\nimport type { AgentRuntimeAuditRecord, SourceRef } from \"../../orchestration/agent-runtime.js\";\nimport type {\n\tWorkItemDomainActionAdmission,\n\tWorkItemDomainActionAdmissionDecision,\n\tWorkItemDomainActionProposal,\n} from \"../../orchestration/work-item-runtime.js\";\nimport type { CapabilityAdmission, CapabilityAdmissionStatus } from \"../capability-admission.js\";\nimport type {\n\tAcceptanceCriterion,\n\tVerificationPlan,\n\tWorkItemAuthoringFact,\n\tWorkItemDraft,\n\tWorkItemPatch,\n\tWorkItemProjection,\n} from \"./scheduling.js\";\n\nexport type {\n\tWorkItemDomainActionAdmission,\n\tWorkItemDomainActionAdmissionDecision,\n\tWorkItemDomainActionAdmissionPolicy,\n\tWorkItemDomainActionAdmissionViews,\n\tWorkItemDomainActionProposal,\n\tWorkItemDomainActionProposalSpec,\n} from \"../../orchestration/work-item-runtime.js\";\n\nexport type WorkItemDomainActionKind =\n\t| \"patch\"\n\t| \"mark-verified\"\n\t| \"require-review\"\n\t| \"spawn-proposed\"\n\t| \"spawn-child\"\n\t| (string & {});\n\nexport interface WorkItemDomainActionProposalIntake<TPayload = unknown> {\n\treadonly kind: \"work-item-domain-action-proposal-intake\";\n\treadonly proposalId: string;\n\treadonly workItemId: string;\n\treadonly actionKind: WorkItemDomainActionKind;\n\treadonly payload?: TPayload;\n\treadonly reason?: string;\n\treadonly policyId?: string;\n\treadonly effectRunId?: string;\n\treadonly effectRunResultId?: string;\n\treadonly evidenceId?: string;\n\treadonly proposedAtMs?: number;\n\treadonly sourceRefs?: readonly SourceRef[];\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport type WorkItemDomainActionProposalInput<TPayload = unknown> =\n\t| WorkItemDomainActionProposal<TPayload>\n\t| WorkItemDomainActionProposalIntake<TPayload>\n\t| unknown;\n\nexport type WorkItemDomainActionStatusState =\n\t| \"proposed\"\n\t| \"applied\"\n\t| \"rejected\"\n\t| \"deferred\"\n\t| \"duplicate\"\n\t| \"missing-policy\"\n\t| \"merged\"\n\t| \"policy-rejected\"\n\t| \"proposal-only\";\n\nexport interface WorkItemDomainActionStatus {\n\treadonly kind: \"work-item-domain-action-status\";\n\treadonly statusId: string;\n\treadonly workItemId?: string;\n\treadonly proposalId?: string;\n\treadonly admissionId?: string;\n\treadonly actionKind?: string;\n\treadonly state: WorkItemDomainActionStatusState;\n\treadonly code?: string;\n\treadonly message?: string;\n\treadonly sourceRefs?: readonly SourceRef[];\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface WorkItemPatchActionPayload<TInput = unknown> {\n\treadonly patch?: WorkItemPatch<TInput>;\n\treadonly acceptanceCriteria?: readonly AcceptanceCriterion[];\n\treadonly verificationPlan?: VerificationPlan<TInput>;\n\treadonly executionRelevantFields?: readonly string[];\n\treadonly authorId?: string;\n\treadonly eventId?: string;\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface WorkItemSpawnActionPayload<TInput = unknown> {\n\treadonly workItemId?: string;\n\treadonly childWorkItemId?: string;\n\treadonly draft?: WorkItemDraft<TInput>;\n\treadonly authorId?: string;\n\treadonly eventId?: string;\n\treadonly idempotencyKey?: string;\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface WorkItemDomainActionApplyPolicy {\n\treadonly kind: \"work-item-domain-action-apply-policy\";\n\treadonly policyId: string;\n\treadonly actionKinds?: readonly WorkItemDomainActionKind[];\n\treadonly patch?: {\n\t\treadonly allowedFields?: readonly string[];\n\t\treadonly executionRelevantFields?: readonly string[];\n\t\treadonly allowAcceptanceCriteria?: boolean;\n\t\treadonly allowVerificationPlan?: boolean;\n\t};\n\treadonly spawn?: {\n\t\treadonly create?: boolean;\n\t\treadonly linkParent?: boolean;\n\t\treadonly idempotencyKey?: string;\n\t\treadonly maxChildrenPerAdmission?: number;\n\t\treadonly childWorkItemId?: string;\n\t\treadonly childIdPrefix?: string;\n\t};\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface WorkItemDomainActionApplication {\n\treadonly kind: \"work-item-domain-action-application\";\n\treadonly applicationId: string;\n\treadonly admissionId: string;\n\treadonly proposalId: string;\n\treadonly workItemId: string;\n\treadonly actionKind: string;\n\treadonly state: Exclude<WorkItemDomainActionStatusState, \"proposed\">;\n\treadonly producedFactIds?: readonly string[];\n\treadonly reason?: string;\n\treadonly sourceRefs?: readonly SourceRef[];\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface WorkItemDomainActionIntakeOptions {\n\treadonly name?: string;\n\treadonly proposals: Node<WorkItemDomainActionProposalInput>;\n\treadonly now?: () => number;\n}\n\nexport interface WorkItemDomainActionIntakeBundle {\n\treadonly proposals: Node<WorkItemDomainActionProposal>;\n\treadonly status: Node<WorkItemDomainActionStatus>;\n\treadonly issues: Node<DataIssue>;\n\treadonly audit: Node<AgentRuntimeAuditRecord>;\n}\n\nexport interface WorkItemDomainActionApplicationOptions<TInput = unknown> {\n\treadonly name?: string;\n\treadonly proposals: Node<WorkItemDomainActionProposal>;\n\treadonly admissions: Node<WorkItemDomainActionAdmission>;\n\treadonly workItems: Node<WorkItemProjection<TInput>>;\n\treadonly applyPolicies?: Node<WorkItemDomainActionApplyPolicy>;\n}\n\nexport interface WorkItemDomainActionApplicationBundle<TInput = unknown> {\n\treadonly authoringFacts: Node<WorkItemAuthoringFact<TInput>>;\n\treadonly applications: Node<WorkItemDomainActionApplication>;\n\treadonly status: Node<WorkItemDomainActionStatus>;\n\treadonly issues: Node<DataIssue>;\n\treadonly audit: Node<AgentRuntimeAuditRecord>;\n}\n\n/**\n * Product-owned command capability policy (D357): maps WorkItem domain action\n * proposals to explicit boundary capability refs and admission subjects without\n * defining provider/security registry semantics or protocol status vocabulary.\n */\nexport interface WorkItemDomainActionCapabilityGuardPolicy {\n\treadonly kind: \"work-item-domain-action-capability-guard-policy\";\n\treadonly policyId: string;\n\treadonly actionKinds?: readonly WorkItemDomainActionKind[];\n\treadonly capabilityRefs: readonly BoundaryCapabilityRef[];\n\treadonly admissionSubjectIds: readonly string[];\n\treadonly metadata?: Record<string, unknown>;\n}\n\n/**\n * Visible DATA status for the capability guard (D357). Missing or mismatched\n * capability facts remain product issues/status, not protocol ERROR messages.\n */\nexport interface WorkItemDomainActionCapabilityGuardStatus {\n\treadonly kind: \"work-item-domain-action-capability-guard-status\";\n\treadonly statusId: string;\n\treadonly state: \"admitted\" | \"rejected\" | \"deferred\" | \"issue\";\n\treadonly workItemId?: string;\n\treadonly proposalId?: string;\n\treadonly actionKind?: string;\n\treadonly policyId?: string;\n\treadonly capabilityRefs?: readonly BoundaryCapabilityRef[];\n\treadonly admissionSubjectIds?: readonly string[];\n\treadonly admissionIds?: readonly string[];\n\treadonly issues?: readonly DataIssue[];\n\treadonly message?: string;\n\treadonly sourceRefs?: readonly SourceRef[];\n\treadonly metadata?: Record<string, unknown>;\n}\n\n/**\n * Inputs for the WorkItem domain-action capability guard. All dependencies are\n * ordinary solution/product DATA facts; the guard does not mutate WorkItems or\n * claim dispatch queues.\n */\nexport interface WorkItemDomainActionCapabilityGuardOptions {\n\treadonly name?: string;\n\treadonly proposals: Node<WorkItemDomainActionProposal>;\n\treadonly capabilityAdmissions: Node<CapabilityAdmission>;\n\treadonly guardPolicies: Node<WorkItemDomainActionCapabilityGuardPolicy>;\n\treadonly capabilityAdmissionStatus?: Node<CapabilityAdmissionStatus>;\n\treadonly now?: () => number;\n}\n\n/**\n * Output facts for product admission consumption. Decisions feed the existing\n * WorkItem domain-action admission path; status/issues/audit remain inspectable\n * product DATA.\n */\nexport interface WorkItemDomainActionCapabilityGuardBundle {\n\treadonly decisions: Node<WorkItemDomainActionAdmissionDecision>;\n\treadonly status: Node<WorkItemDomainActionCapabilityGuardStatus>;\n\treadonly issues: Node<DataIssue>;\n\treadonly audit: Node<AgentRuntimeAuditRecord>;\n}\n\nexport type IntakeFact =\n\t| { readonly kind: \"proposal\"; readonly value: WorkItemDomainActionProposal }\n\t| { readonly kind: \"status\"; readonly value: WorkItemDomainActionStatus }\n\t| { readonly kind: \"issue\"; readonly value: DataIssue }\n\t| { readonly kind: \"audit\"; readonly value: AgentRuntimeAuditRecord };\n\nexport type ApplicationFact<T> =\n\t| { readonly kind: \"authoring-fact\"; readonly value: WorkItemAuthoringFact<T> }\n\t| { readonly kind: \"application\"; readonly value: WorkItemDomainActionApplication }\n\t| { readonly kind: \"status\"; readonly value: WorkItemDomainActionStatus }\n\t| { readonly kind: \"issue\"; readonly value: DataIssue }\n\t| { readonly kind: \"audit\"; readonly value: AgentRuntimeAuditRecord };\n\nexport type CapabilityGuardFact =\n\t| { readonly kind: \"decision\"; readonly value: WorkItemDomainActionAdmissionDecision }\n\t| { readonly kind: \"status\"; readonly value: WorkItemDomainActionCapabilityGuardStatus }\n\t| { readonly kind: \"issue\"; readonly value: DataIssue }\n\t| { readonly kind: \"audit\"; readonly value: AgentRuntimeAuditRecord };\n\nexport interface IntakeState {\n\treadonly proposals: Set<string>;\n\tstatusSeq: number;\n\tauditSeq: number;\n}\n\nexport interface ApplicationState<T> {\n\treadonly proposals: Map<string, WorkItemDomainActionProposal>;\n\treadonly admissions: Map<string, WorkItemDomainActionAdmission>;\n\treadonly workItems: Map<string, WorkItemProjection<T>>;\n\treadonly policies: Map<string, WorkItemDomainActionApplyPolicy>;\n\treadonly appliedAdmissions: Set<string>;\n\treadonly emittedFactIds: Set<string>;\n\treadonly issueKeys: Set<string>;\n\tstatusSeq: number;\n\tauditSeq: number;\n}\n\nexport interface CapabilityGuardState {\n\treadonly proposals: Map<string, WorkItemDomainActionProposal>;\n\treadonly admissionsByCapability: Map<string, CapabilityAdmission[]>;\n\treadonly issueStatusesByCapability: Map<string, CapabilityAdmissionStatus[]>;\n\treadonly issueStatusesWithoutCapability: CapabilityAdmissionStatus[];\n\treadonly policies: Map<string, WorkItemDomainActionCapabilityGuardPolicy>;\n\treadonly emittedProposalDecisions: Set<string>;\n\treadonly emittedStatusKeys: Set<string>;\n\treadonly issueKeys: Set<string>;\n\tstatusSeq: number;\n\tauditSeq: number;\n}\n\nexport const patchFieldKeys = new Set([\n\t\"summary\",\n\t\"detail\",\n\t\"detailRefs\",\n\t\"kind\",\n\t\"priority\",\n\t\"tags\",\n\t\"owner\",\n\t\"assignee\",\n\t\"deadlineMs\",\n\t\"customFields\",\n\t\"sourceRefs\",\n\t\"metadata\",\n]);\n","import { type Ctx, depBatch } from \"../../ctx/types.js\";\nimport type { Graph } from \"../../graph/graph.js\";\nimport type { SourceRef } from \"../../orchestration/agent-runtime.js\";\nimport type {\n\tWorkItemDomainActionAdmission,\n\tWorkItemDomainActionProposal,\n} from \"../../orchestration/work-item-runtime.js\";\nimport {\n\tauditRecord,\n\tdataIssue,\n\tisRecord,\n\tnumberMetadata,\n\tproject,\n\tref,\n\tstringMetadata,\n\tuniqueSourceRefs,\n} from \"./actions-shared.js\";\nimport type {\n\tApplicationFact,\n\tApplicationState,\n\tWorkItemDomainActionApplication,\n\tWorkItemDomainActionApplicationBundle,\n\tWorkItemDomainActionApplicationOptions,\n\tWorkItemDomainActionApplyPolicy,\n\tWorkItemDomainActionStatus,\n\tWorkItemPatchActionPayload,\n\tWorkItemSpawnActionPayload,\n} from \"./actions-types.js\";\nimport { patchFieldKeys } from \"./actions-types.js\";\nimport {\n\ttype AcceptanceCriterion,\n\ttype VerificationPlan,\n\tvalidateAcceptanceCriteria,\n\tvalidateVerificationPlan,\n\tvalidateWorkItemDraft,\n\ttype WorkItemAuthoringFact,\n\ttype WorkItemCreated,\n\ttype WorkItemPatch,\n\ttype WorkItemProjection,\n} from \"./scheduling.js\";\n\nexport function workItemDomainActionApplicationProjector<TInput = unknown>(\n\tgraph: Graph,\n\topts: WorkItemDomainActionApplicationOptions<TInput>,\n): WorkItemDomainActionApplicationBundle<TInput> {\n\tconst name = opts.name ?? \"workItemDomainActionApplication\";\n\tconst deps =\n\t\topts.applyPolicies === undefined\n\t\t\t? [opts.proposals, opts.admissions, opts.workItems]\n\t\t\t: [opts.proposals, opts.admissions, opts.workItems, opts.applyPolicies];\n\tconst runtime = graph.node<ApplicationFact<TInput>>(\n\t\tdeps,\n\t\t(ctx) => {\n\t\t\tconst state = ctx.state.get<ApplicationState<TInput>>() ?? {\n\t\t\t\tproposals: new Map(),\n\t\t\t\tadmissions: new Map(),\n\t\t\t\tworkItems: new Map(),\n\t\t\t\tpolicies: new Map(),\n\t\t\t\tappliedAdmissions: new Set(),\n\t\t\t\temittedFactIds: new Set(),\n\t\t\t\tissueKeys: new Set(),\n\t\t\t\tstatusSeq: 0,\n\t\t\t\tauditSeq: 0,\n\t\t\t};\n\t\t\tfor (const raw of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst proposal = raw as WorkItemDomainActionProposal;\n\t\t\t\tif (state.proposals.has(proposal.proposalId)) {\n\t\t\t\t\temitApplicationIssue(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\t`duplicate-proposal:${proposal.proposalId}`,\n\t\t\t\t\t\t\"duplicate-suppressed\",\n\t\t\t\t\t\t`Duplicate WorkItem domain action proposal '${proposal.proposalId}' suppressed`,\n\t\t\t\t\t\tproposal.workItemId,\n\t\t\t\t\t\tproposal.sourceRefs,\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstate.proposals.set(proposal.proposalId, proposal);\n\t\t\t}\n\t\t\tfor (const raw of depBatch(ctx, 2) ?? []) {\n\t\t\t\tconst workItem = raw as WorkItemProjection<TInput>;\n\t\t\t\tstate.workItems.set(workItem.workItemId, workItem);\n\t\t\t}\n\t\t\tif (opts.applyPolicies !== undefined) {\n\t\t\t\tfor (const raw of depBatch(ctx, 3) ?? []) {\n\t\t\t\t\tconst policy = raw as WorkItemDomainActionApplyPolicy;\n\t\t\t\t\tstate.policies.set(policy.policyId, policy);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const raw of depBatch(ctx, 1) ?? []) {\n\t\t\t\tconst admission = raw as WorkItemDomainActionAdmission;\n\t\t\t\tif (state.admissions.has(admission.admissionId)) {\n\t\t\t\t\temitApplicationIssue(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\t`duplicate-admission:${admission.admissionId}`,\n\t\t\t\t\t\t\"duplicate-suppressed\",\n\t\t\t\t\t\t`Duplicate WorkItem domain action admission '${admission.admissionId}' suppressed`,\n\t\t\t\t\t\tadmission.workItemId,\n\t\t\t\t\t\tadmissionRefs(admission),\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstate.admissions.set(admission.admissionId, admission);\n\t\t\t}\n\t\t\tfor (const admission of state.admissions.values()) applyAdmission(ctx, state, admission);\n\t\t\tctx.state.set(state);\n\t\t},\n\t\t{\n\t\t\tname: `${name}/runtime`,\n\t\t\tfactory: \"workItemDomainActionApplicationProjector\",\n\t\t\tpartial: true,\n\t\t\tcompleteWhenDepsComplete: false,\n\t\t\terrorWhenDepsError: false,\n\t\t},\n\t);\n\treturn {\n\t\tauthoringFacts: project(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/authoringFacts`,\n\t\t\t\"workItemDomainActionAuthoringFacts\",\n\t\t\t(fact) => (fact.kind === \"authoring-fact\" ? fact.value : undefined),\n\t\t),\n\t\tapplications: project(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/applications`,\n\t\t\t\"workItemDomainActionApplications\",\n\t\t\t(fact) => (fact.kind === \"application\" ? fact.value : undefined),\n\t\t),\n\t\tstatus: project(graph, runtime, `${name}/status`, \"workItemDomainActionStatus\", (fact) =>\n\t\t\tfact.kind === \"status\" ? fact.value : undefined,\n\t\t),\n\t\tissues: project(graph, runtime, `${name}/issues`, \"workItemDomainActionIssues\", (fact) =>\n\t\t\tfact.kind === \"issue\" ? fact.value : undefined,\n\t\t),\n\t\taudit: project(graph, runtime, `${name}/audit`, \"workItemDomainActionAudit\", (fact) =>\n\t\t\tfact.kind === \"audit\" ? fact.value : undefined,\n\t\t),\n\t};\n}\n\nfunction applyAdmission<T>(\n\tctx: Ctx,\n\tstate: ApplicationState<T>,\n\tadmission: WorkItemDomainActionAdmission,\n): void {\n\tif (state.appliedAdmissions.has(admission.admissionId)) return;\n\tconst proposal = state.proposals.get(admission.proposalId);\n\tif (proposal === undefined) {\n\t\temitApplicationIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`missing-proposal:${admission.admissionId}:${admission.proposalId}`,\n\t\t\t\"dangling-ref\",\n\t\t\t`Admission '${admission.admissionId}' cannot apply without proposal '${admission.proposalId}'`,\n\t\t\tadmission.workItemId,\n\t\t\tadmissionRefs(admission),\n\t\t);\n\t\treturn;\n\t}\n\tif (admission.state !== \"admitted\") {\n\t\tstate.appliedAdmissions.add(admission.admissionId);\n\t\temitApplication(ctx, state, admission, proposal, admission.state, []);\n\t\treturn;\n\t}\n\tconst mismatch = admissionProposalMismatch(admission, proposal);\n\tif (mismatch !== undefined) {\n\t\tstate.appliedAdmissions.add(admission.admissionId);\n\t\temitApplicationIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`admission-proposal-mismatch:${admission.admissionId}:${mismatch.field}`,\n\t\t\t\"dangling-ref\",\n\t\t\tmismatch.message,\n\t\t\tadmission.workItemId,\n\t\t\tadmissionRefs(admission, proposal),\n\t\t\t{\n\t\t\t\tfield: mismatch.field,\n\t\t\t\tadmissionValue: mismatch.admissionValue,\n\t\t\t\tproposalValue: mismatch.proposalValue,\n\t\t\t},\n\t\t);\n\t\temitApplication(ctx, state, admission, proposal, \"rejected\", [], {\n\t\t\tcode: \"dangling-ref\",\n\t\t\tmessage: mismatch.message,\n\t\t});\n\t\treturn;\n\t}\n\tconst workItem = state.workItems.get(admission.workItemId);\n\tif (workItem === undefined) {\n\t\temitApplicationIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`missing-work-item:${admission.admissionId}:${admission.workItemId}`,\n\t\t\t\"dangling-ref\",\n\t\t\t`Admission '${admission.admissionId}' references unknown WorkItem '${admission.workItemId}'`,\n\t\t\tadmission.workItemId,\n\t\t\tadmissionRefs(admission, proposal),\n\t\t);\n\t\treturn;\n\t}\n\tconst metadataConflict = conflictingApplicationMetadata(proposal, admission);\n\tif (metadataConflict !== undefined) {\n\t\tstate.appliedAdmissions.add(admission.admissionId);\n\t\temitApplicationIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`metadata-conflict:${admission.admissionId}:${metadataConflict.field}`,\n\t\t\tmetadataConflict.code,\n\t\t\tmetadataConflict.message,\n\t\t\tadmission.workItemId,\n\t\t\tadmissionRefs(admission, proposal),\n\t\t\t{\n\t\t\t\tfield: metadataConflict.field,\n\t\t\t\tadmissionValue: metadataConflict.admissionValue,\n\t\t\t\tproposalValue: metadataConflict.proposalValue,\n\t\t\t},\n\t\t);\n\t\temitApplication(ctx, state, admission, proposal, \"rejected\", [], {\n\t\t\tcode: metadataConflict.code,\n\t\t\tmessage: metadataConflict.message,\n\t\t});\n\t\treturn;\n\t}\n\tconst stale = staleRevision(proposal, admission, workItem);\n\tif (stale !== undefined) {\n\t\tstate.appliedAdmissions.add(admission.admissionId);\n\t\temitApplicationIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`stale:${admission.admissionId}:${stale.kind}:${stale.expected}:${stale.current}`,\n\t\t\tstale.kind,\n\t\t\t`Admission '${admission.admissionId}' targets stale WorkItem revision`,\n\t\t\tadmission.workItemId,\n\t\t\tadmissionRefs(admission, proposal),\n\t\t\t{ expected: stale.expected, current: stale.current },\n\t\t);\n\t\temitApplication(ctx, state, admission, proposal, \"rejected\", [], {\n\t\t\tcode: stale.kind,\n\t\t\tmessage: \"Stale WorkItem revision\",\n\t\t});\n\t\treturn;\n\t}\n\tconst policyResult = selectApplyPolicy(state, proposal, admission);\n\tif (typeof policyResult === \"string\") {\n\t\temitApplicationIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`policy:${admission.admissionId}:${policyResult}`,\n\t\t\tpolicyResult,\n\t\t\tapplyPolicyMessage(policyResult, proposal, admission),\n\t\t\tadmission.workItemId,\n\t\t\tadmissionRefs(admission, proposal),\n\t\t);\n\t\treturn;\n\t}\n\tconst output = lowerAction(ctx, state, workItem, proposal, admission, policyResult);\n\tif (output === undefined) {\n\t\tstate.appliedAdmissions.add(admission.admissionId);\n\t\temitApplication(ctx, state, admission, proposal, \"rejected\", [], {\n\t\t\tcode: \"invalid-action\",\n\t\t\tmessage: \"WorkItem domain action application rejected; see emitted issues\",\n\t\t\tpolicyId: policyResult.policyId,\n\t\t});\n\t\treturn;\n\t}\n\tconst duplicateFactId = firstDuplicateFactId(state, output.facts);\n\tif (duplicateFactId !== undefined) {\n\t\tstate.appliedAdmissions.add(admission.admissionId);\n\t\temitApplicationIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`duplicate-authoring-fact:${admission.admissionId}:${duplicateFactId}`,\n\t\t\t\"duplicate-suppressed\",\n\t\t\t`WorkItem domain action application '${admission.admissionId}' would duplicate authoring fact '${duplicateFactId}'`,\n\t\t\tadmission.workItemId,\n\t\t\tadmissionRefs(admission, proposal, policyResult),\n\t\t\t{ eventId: duplicateFactId },\n\t\t);\n\t\temitApplication(ctx, state, admission, proposal, \"duplicate\", [], {\n\t\t\tcode: \"duplicate-suppressed\",\n\t\t\tmessage: \"Duplicate WorkItem authoring fact suppressed atomically\",\n\t\t\tpolicyId: policyResult.policyId,\n\t\t});\n\t\treturn;\n\t}\n\tstate.appliedAdmissions.add(admission.admissionId);\n\tfor (const fact of output.facts) claimFactId(state, fact.eventId);\n\tfor (const fact of output.facts) emitApplicationFact(ctx, \"authoring-fact\", fact);\n\temitApplication(ctx, state, admission, proposal, output.state, output.facts, {\n\t\tcode: output.code,\n\t\tmessage: output.message,\n\t\tpolicyId: policyResult.policyId,\n\t});\n}\n\nfunction lowerAction<T>(\n\tctx: Ctx,\n\tstate: ApplicationState<T>,\n\tworkItem: WorkItemProjection<T>,\n\tproposal: WorkItemDomainActionProposal,\n\tadmission: WorkItemDomainActionAdmission,\n\tpolicy: WorkItemDomainActionApplyPolicy,\n):\n\t| {\n\t\t\treadonly state: WorkItemDomainActionApplication[\"state\"];\n\t\t\treadonly facts: readonly WorkItemAuthoringFact<T>[];\n\t\t\treadonly code?: string;\n\t\t\treadonly message?: string;\n\t }\n\t| undefined {\n\tif (!policyAllowsAction(policy, proposal.actionKind)) {\n\t\temitApplicationIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`policy-action:${admission.admissionId}:${policy.policyId}:${proposal.actionKind}`,\n\t\t\t\"policy-mismatch\",\n\t\t\t`Apply policy '${policy.policyId}' does not allow actionKind '${proposal.actionKind}'`,\n\t\t\tproposal.workItemId,\n\t\t\tadmissionRefs(admission, proposal, policy),\n\t\t);\n\t\treturn { state: \"policy-rejected\", facts: [], code: \"policy-mismatch\" };\n\t}\n\tif (proposal.actionKind === \"patch\") {\n\t\tconst lowered = lowerPatchAction(ctx, state, workItem, proposal, admission, policy);\n\t\tif (lowered === undefined) return undefined;\n\t\treturn { state: \"applied\", facts: lowered };\n\t}\n\tif (proposal.actionKind === \"mark-verified\" || proposal.actionKind === \"require-review\") {\n\t\treturn {\n\t\t\tstate: \"proposal-only\",\n\t\t\tfacts: [],\n\t\t\tcode: \"domain-fact-unimplemented\",\n\t\t\tmessage: `Action '${proposal.actionKind}' recorded as visible application status only; no WorkItem domain mutation fact was emitted`,\n\t\t};\n\t}\n\tif (proposal.actionKind === \"spawn-proposed\" || proposal.actionKind === \"spawn-child\") {\n\t\treturn lowerSpawnAction(ctx, state, proposal, admission, policy);\n\t}\n\temitApplicationIssue(\n\t\tctx,\n\t\tstate,\n\t\t`unsupported-action:${admission.admissionId}:${proposal.actionKind}`,\n\t\t\"unsupported-effect-kind\",\n\t\t`Unsupported WorkItem domain actionKind '${proposal.actionKind}'`,\n\t\tproposal.workItemId,\n\t\tadmissionRefs(admission, proposal, policy),\n\t);\n\treturn { state: \"rejected\", facts: [], code: \"unsupported-effect-kind\" };\n}\n\nfunction lowerPatchAction<T>(\n\tctx: Ctx,\n\tstate: ApplicationState<T>,\n\tworkItem: WorkItemProjection<T>,\n\tproposal: WorkItemDomainActionProposal,\n\tadmission: WorkItemDomainActionAdmission,\n\tpolicy: WorkItemDomainActionApplyPolicy,\n): readonly WorkItemAuthoringFact<T>[] | undefined {\n\tconst payload = normalizePatchPayload<T>(proposal.payload);\n\tif (typeof payload === \"string\") {\n\t\temitApplicationIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`invalid-patch:${admission.admissionId}`,\n\t\t\t\"invalid-patch\",\n\t\t\tpayload,\n\t\t\tproposal.workItemId,\n\t\t\tadmissionRefs(admission, proposal, policy),\n\t\t);\n\t\treturn undefined;\n\t}\n\tconst splitPayload = splitDedicatedPatchFields(payload, workItem);\n\tconst facts: WorkItemAuthoringFact<T>[] = [];\n\tif (splitPayload.patch !== undefined) {\n\t\tconst invalid = invalidPatchKeys(splitPayload.patch, policy);\n\t\tif (invalid.length > 0) {\n\t\t\temitApplicationIssue(\n\t\t\t\tctx,\n\t\t\t\tstate,\n\t\t\t\t`invalid-patch-fields:${admission.admissionId}:${invalid.join(\",\")}`,\n\t\t\t\t\"invalid-patch\",\n\t\t\t\t`Patch action uses unsupported fields: ${invalid.join(\", \")}`,\n\t\t\t\tproposal.workItemId,\n\t\t\t\tadmissionRefs(admission, proposal, policy),\n\t\t\t\t{ invalidFields: invalid },\n\t\t\t);\n\t\t\treturn undefined;\n\t\t}\n\t\tfacts.push({\n\t\t\tkind: \"work-item-patched\",\n\t\t\teventId: splitPayload.eventId ?? `${admission.admissionId}:work-item-patched`,\n\t\t\tworkItemId: workItem.workItemId,\n\t\t\tpatch: splitPayload.patch,\n\t\t\texecutionRelevantFields:\n\t\t\t\tsplitPayload.executionRelevantFields ?? policy.patch?.executionRelevantFields,\n\t\t\tauthorId: splitPayload.authorId,\n\t\t\tsourceRefs: actionSourceRefs(admission, proposal, policy),\n\t\t\tmetadata: { ...(splitPayload.metadata ?? {}), actionKind: proposal.actionKind },\n\t\t});\n\t}\n\tif (splitPayload.acceptanceCriteria !== undefined) {\n\t\tif (!allowsAcceptanceCriteria(policy)) {\n\t\t\temitApplicationIssue(\n\t\t\t\tctx,\n\t\t\t\tstate,\n\t\t\t\t`ac-policy:${admission.admissionId}`,\n\t\t\t\t\"policy-mismatch\",\n\t\t\t\t`Apply policy '${policy.policyId}' does not allow acceptance criteria changes`,\n\t\t\t\tproposal.workItemId,\n\t\t\t\tadmissionRefs(admission, proposal, policy),\n\t\t\t);\n\t\t\treturn undefined;\n\t\t}\n\t\tconst issues = validateAcceptanceCriteria(splitPayload.acceptanceCriteria, {\n\t\t\tworkItemId: workItem.workItemId,\n\t\t});\n\t\tif (issues.length > 0) {\n\t\t\tfor (const item of issues) emitApplicationFact(ctx, \"issue\", item);\n\t\t\temitApplicationStatus(ctx, state, {\n\t\t\t\tstate: \"rejected\",\n\t\t\t\tcode: issues[0]?.code,\n\t\t\t\tmessage: issues[0]?.message,\n\t\t\t\tworkItemId: workItem.workItemId,\n\t\t\t\tproposalId: proposal.proposalId,\n\t\t\t\tadmissionId: admission.admissionId,\n\t\t\t\tactionKind: proposal.actionKind,\n\t\t\t\tsourceRefs: admissionRefs(admission, proposal, policy),\n\t\t\t});\n\t\t\treturn undefined;\n\t\t}\n\t\tfacts.push({\n\t\t\tkind: \"acceptance-criteria-changed\",\n\t\t\teventId: `${admission.admissionId}:acceptance-criteria-changed`,\n\t\t\tworkItemId: workItem.workItemId,\n\t\t\tacceptanceCriteria: splitPayload.acceptanceCriteria,\n\t\t\tauthorId: splitPayload.authorId,\n\t\t\tsourceRefs: actionSourceRefs(admission, proposal, policy),\n\t\t\tmetadata: { ...(splitPayload.metadata ?? {}), actionKind: proposal.actionKind },\n\t\t});\n\t}\n\tif (splitPayload.verificationPlan !== undefined) {\n\t\tif (!allowsVerificationPlan(policy)) {\n\t\t\temitApplicationIssue(\n\t\t\t\tctx,\n\t\t\t\tstate,\n\t\t\t\t`plan-policy:${admission.admissionId}`,\n\t\t\t\t\"policy-mismatch\",\n\t\t\t\t`Apply policy '${policy.policyId}' does not allow verification plan changes`,\n\t\t\t\tproposal.workItemId,\n\t\t\t\tadmissionRefs(admission, proposal, policy),\n\t\t\t);\n\t\t\treturn undefined;\n\t\t}\n\t\tconst issues = validateVerificationPlan(\n\t\t\tsplitPayload.verificationPlan,\n\t\t\tsplitPayload.acceptanceCriteria ?? workItem.acceptanceCriteria ?? [],\n\t\t\t{ workItemId: workItem.workItemId },\n\t\t);\n\t\tif (issues.length > 0) {\n\t\t\tfor (const item of issues) emitApplicationFact(ctx, \"issue\", item);\n\t\t\temitApplicationStatus(ctx, state, {\n\t\t\t\tstate: \"rejected\",\n\t\t\t\tcode: issues[0]?.code,\n\t\t\t\tmessage: issues[0]?.message,\n\t\t\t\tworkItemId: workItem.workItemId,\n\t\t\t\tproposalId: proposal.proposalId,\n\t\t\t\tadmissionId: admission.admissionId,\n\t\t\t\tactionKind: proposal.actionKind,\n\t\t\t\tsourceRefs: admissionRefs(admission, proposal, policy),\n\t\t\t});\n\t\t\treturn undefined;\n\t\t}\n\t\tfacts.push({\n\t\t\tkind: \"verification-plan-changed\",\n\t\t\teventId: `${admission.admissionId}:verification-plan-changed`,\n\t\t\tworkItemId: workItem.workItemId,\n\t\t\tverificationPlan: splitPayload.verificationPlan,\n\t\t\tauthorId: splitPayload.authorId,\n\t\t\tsourceRefs: actionSourceRefs(admission, proposal, policy),\n\t\t\tmetadata: { ...(splitPayload.metadata ?? {}), actionKind: proposal.actionKind },\n\t\t});\n\t}\n\tif (facts.length === 0) {\n\t\temitApplicationIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`empty-patch:${admission.admissionId}`,\n\t\t\t\"invalid-patch\",\n\t\t\t\"Patch action payload did not contain patch, acceptanceCriteria, or verificationPlan\",\n\t\t\tproposal.workItemId,\n\t\t\tadmissionRefs(admission, proposal, policy),\n\t\t);\n\t\treturn undefined;\n\t}\n\treturn facts;\n}\n\nfunction lowerSpawnAction<T>(\n\tctx: Ctx,\n\tstate: ApplicationState<T>,\n\tproposal: WorkItemDomainActionProposal,\n\tadmission: WorkItemDomainActionAdmission,\n\tpolicy: WorkItemDomainActionApplyPolicy,\n): {\n\treadonly state: WorkItemDomainActionApplication[\"state\"];\n\treadonly facts: readonly WorkItemAuthoringFact<T>[];\n\treadonly code?: string;\n\treadonly message?: string;\n} {\n\tif (policy.spawn?.create !== true) {\n\t\treturn {\n\t\t\tstate: \"proposal-only\",\n\t\t\tfacts: [],\n\t\t\tmessage: \"Spawn action remains proposal/admission only without explicit create policy\",\n\t\t};\n\t}\n\tconst policyIssue = validateSpawnCreatePolicy(policy, proposal);\n\tif (policyIssue !== undefined) {\n\t\temitApplicationIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`spawn-create-policy:${admission.admissionId}:${policy.policyId}:${policyIssue.field}`,\n\t\t\t\"policy-mismatch\",\n\t\t\tpolicyIssue.message,\n\t\t\tproposal.workItemId,\n\t\t\tadmissionRefs(admission, proposal, policy),\n\t\t\t{ field: policyIssue.field },\n\t\t);\n\t\treturn {\n\t\t\tstate: \"policy-rejected\",\n\t\t\tfacts: [],\n\t\t\tcode: \"policy-mismatch\",\n\t\t\tmessage: policyIssue.message,\n\t\t};\n\t}\n\tconst payload = normalizeSpawnPayload<T>(proposal.payload);\n\tif (typeof payload === \"string\") {\n\t\temitApplicationIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`invalid-spawn-payload:${admission.admissionId}`,\n\t\t\t\"invalid-patch\",\n\t\t\tpayload,\n\t\t\tproposal.workItemId,\n\t\t\tadmissionRefs(admission, proposal, policy),\n\t\t);\n\t\treturn { state: \"rejected\", facts: [], code: \"invalid-patch\", message: payload };\n\t}\n\tconst childWorkItemId =\n\t\tpayload.childWorkItemId ??\n\t\tpayload.workItemId ??\n\t\tpolicy.spawn.childWorkItemId ??\n\t\t(policy.spawn.childIdPrefix === undefined\n\t\t\t? undefined\n\t\t\t: `${policy.spawn.childIdPrefix}${admission.admissionId}`);\n\tif (childWorkItemId === undefined || childWorkItemId.trim() === \"\") {\n\t\tconst message = \"Spawn create action requires a childWorkItemId or create policy child id\";\n\t\temitApplicationIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`missing-spawn-child-id:${admission.admissionId}`,\n\t\t\t\"missing-required-field\",\n\t\t\tmessage,\n\t\t\tproposal.workItemId,\n\t\t\tadmissionRefs(admission, proposal, policy),\n\t\t);\n\t\treturn { state: \"rejected\", facts: [], code: \"missing-required-field\", message };\n\t}\n\tif (state.workItems.has(childWorkItemId)) {\n\t\tconst message = `Spawn create action would duplicate WorkItem '${childWorkItemId}'`;\n\t\temitApplicationIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`duplicate-spawn-child:${admission.admissionId}:${childWorkItemId}`,\n\t\t\t\"duplicate-id\",\n\t\t\tmessage,\n\t\t\tchildWorkItemId,\n\t\t\tadmissionRefs(admission, proposal, policy),\n\t\t);\n\t\treturn { state: \"duplicate\", facts: [], code: \"duplicate-id\", message };\n\t}\n\tif (payload.draft === undefined) {\n\t\tconst message = \"Spawn create action requires a draft payload\";\n\t\temitApplicationIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`missing-spawn-draft:${admission.admissionId}`,\n\t\t\t\"missing-required-field\",\n\t\t\tmessage,\n\t\t\tchildWorkItemId,\n\t\t\tadmissionRefs(admission, proposal, policy),\n\t\t);\n\t\treturn { state: \"rejected\", facts: [], code: \"missing-required-field\", message };\n\t}\n\tconst issues = validateWorkItemDraft(payload.draft, { workItemId: childWorkItemId });\n\tif (issues.length > 0) {\n\t\tfor (const item of issues) emitApplicationFact(ctx, \"issue\", item);\n\t\treturn {\n\t\t\tstate: \"rejected\",\n\t\t\tfacts: [],\n\t\t\tcode: issues[0]?.code,\n\t\t\tmessage: issues[0]?.message,\n\t\t};\n\t}\n\tconst metadata = {\n\t\t...(payload.metadata ?? {}),\n\t\tactionKind: proposal.actionKind,\n\t\tparentWorkItemId: policy.spawn.linkParent === true ? proposal.workItemId : undefined,\n\t\tsourceProposalId: proposal.proposalId,\n\t\tidempotencyKey: payload.idempotencyKey ?? policy.spawn.idempotencyKey,\n\t};\n\tconst created: WorkItemCreated<T> = {\n\t\tkind: \"work-item-created\",\n\t\teventId: payload.eventId ?? `${admission.admissionId}:work-item-created:${childWorkItemId}`,\n\t\tworkItemId: childWorkItemId,\n\t\tdraft: payload.draft,\n\t\tauthorId: payload.authorId,\n\t\tsourceRefs: actionSourceRefs(admission, proposal, policy),\n\t\tmetadata,\n\t};\n\treturn { state: \"applied\", facts: [created] };\n}\n\nfunction validateSpawnCreatePolicy(\n\tpolicy: WorkItemDomainActionApplyPolicy,\n\tproposal: WorkItemDomainActionProposal,\n): { readonly field: string; readonly message: string } | undefined {\n\tif (policy.spawn?.idempotencyKey === undefined || policy.spawn.idempotencyKey.trim() === \"\") {\n\t\treturn {\n\t\t\tfield: \"idempotencyKey\",\n\t\t\tmessage: `Spawn create policy '${policy.policyId}' requires an idempotencyKey`,\n\t\t};\n\t}\n\tif (\n\t\tpolicy.spawn.maxChildrenPerAdmission === undefined ||\n\t\tpolicy.spawn.maxChildrenPerAdmission < 1\n\t) {\n\t\treturn {\n\t\t\tfield: \"maxChildrenPerAdmission\",\n\t\t\tmessage: `Spawn create policy '${policy.policyId}' requires maxChildrenPerAdmission >= 1`,\n\t\t};\n\t}\n\tif (proposal.actionKind === \"spawn-child\" && policy.spawn.linkParent !== true) {\n\t\treturn {\n\t\t\tfield: \"linkParent\",\n\t\t\tmessage: `Spawn child create policy '${policy.policyId}' requires linkParent: true`,\n\t\t};\n\t}\n\treturn undefined;\n}\n\nfunction normalizeSpawnPayload<T>(payload: unknown): WorkItemSpawnActionPayload<T> | string {\n\tif (!isRecord(payload)) return \"Spawn action payload must be an object\";\n\tif (\"draft\" in payload && payload.draft !== undefined && !isRecord(payload.draft)) {\n\t\treturn \"Spawn action payload.draft must be an object\";\n\t}\n\tif (\"metadata\" in payload && payload.metadata !== undefined && !isRecord(payload.metadata)) {\n\t\treturn \"Spawn action payload.metadata must be an object\";\n\t}\n\treturn payload as WorkItemSpawnActionPayload<T>;\n}\n\nfunction normalizePatchPayload<T>(payload: unknown): WorkItemPatchActionPayload<T> | string {\n\tif (!isRecord(payload)) return \"Patch action payload must be an object\";\n\tif (\n\t\t\"patch\" in payload ||\n\t\t\"acceptanceCriteria\" in payload ||\n\t\t\"verificationPlan\" in payload ||\n\t\t\"executionRelevantFields\" in payload\n\t) {\n\t\tif (\"patch\" in payload && payload.patch !== undefined && !isRecord(payload.patch))\n\t\t\treturn \"Patch action payload.patch must be an object\";\n\t\tif (\n\t\t\t\"acceptanceCriteria\" in payload &&\n\t\t\tpayload.acceptanceCriteria !== undefined &&\n\t\t\t!Array.isArray(payload.acceptanceCriteria)\n\t\t)\n\t\t\treturn \"Patch action payload.acceptanceCriteria must be an array\";\n\t\tif (\n\t\t\t\"verificationPlan\" in payload &&\n\t\t\tpayload.verificationPlan !== undefined &&\n\t\t\t!isRecord(payload.verificationPlan)\n\t\t)\n\t\t\treturn \"Patch action payload.verificationPlan must be an object\";\n\t\tconst inlinePatch = inlinePatchFields<T>(payload);\n\t\tconst explicitPatch = isRecord(payload.patch) ? (payload.patch as WorkItemPatch<T>) : undefined;\n\t\tconst patch =\n\t\t\texplicitPatch === undefined\n\t\t\t\t? inlinePatch\n\t\t\t\t: ({ ...inlinePatch, ...explicitPatch } as WorkItemPatch<T>);\n\t\treturn {\n\t\t\t...(payload as unknown as WorkItemPatchActionPayload<T>),\n\t\t\tpatch: Object.keys(patch).length === 0 ? undefined : patch,\n\t\t};\n\t}\n\treturn { patch: payload as WorkItemPatch<T> };\n}\n\nfunction inlinePatchFields<T>(payload: Record<string, unknown>): WorkItemPatch<T> {\n\tconst patch: Record<string, unknown> = {};\n\tfor (const [key, value] of Object.entries(payload)) {\n\t\tif (key === \"metadata\") continue;\n\t\tif (patchFieldKeys.has(key)) patch[key] = value;\n\t}\n\treturn patch as WorkItemPatch<T>;\n}\n\nfunction splitDedicatedPatchFields<T>(\n\tpayload: WorkItemPatchActionPayload<T>,\n\tworkItem: WorkItemProjection<T>,\n): WorkItemPatchActionPayload<T> {\n\tif (!isRecord(payload.patch)) return payload;\n\tconst patchRecord = payload.patch as Record<string, unknown>;\n\tconst patch: Record<string, unknown> = {};\n\tfor (const [key, value] of Object.entries(patchRecord)) {\n\t\tif (key === \"acceptanceCriteria\" || key === \"verificationPlan\" || key === \"verificationSteps\")\n\t\t\tcontinue;\n\t\tpatch[key] = value;\n\t}\n\tconst acceptanceCriteria =\n\t\tpayload.acceptanceCriteria ??\n\t\t(Array.isArray(patchRecord.acceptanceCriteria)\n\t\t\t? (patchRecord.acceptanceCriteria as readonly AcceptanceCriterion[])\n\t\t\t: undefined);\n\tconst verificationPlan =\n\t\tpayload.verificationPlan ??\n\t\t(isRecord(patchRecord.verificationPlan)\n\t\t\t? (patchRecord.verificationPlan as unknown as VerificationPlan<T>)\n\t\t\t: Array.isArray(patchRecord.verificationSteps)\n\t\t\t\t? ({\n\t\t\t\t\t\t...(workItem.verificationPlan ?? { planId: \"default\" }),\n\t\t\t\t\t\tsteps: patchRecord.verificationSteps,\n\t\t\t\t\t} as VerificationPlan<T>)\n\t\t\t\t: undefined);\n\treturn {\n\t\t...payload,\n\t\tpatch: Object.keys(patch).length === 0 ? undefined : (patch as WorkItemPatch<T>),\n\t\tacceptanceCriteria,\n\t\tverificationPlan,\n\t};\n}\n\nfunction invalidPatchKeys<T>(\n\tpatch: WorkItemPatch<T>,\n\tpolicy: WorkItemDomainActionApplyPolicy,\n): readonly string[] {\n\tconst allowed = new Set(policy.patch?.allowedFields ?? Array.from(patchFieldKeys));\n\treturn Object.keys(patch).filter((key) => !patchFieldKeys.has(key) || !allowed.has(key));\n}\n\nfunction allowsAcceptanceCriteria(policy: WorkItemDomainActionApplyPolicy): boolean {\n\tif (policy.patch?.allowAcceptanceCriteria === false) return false;\n\tconst allowed = policy.patch?.allowedFields;\n\treturn (\n\t\tallowed === undefined ||\n\t\tallowed.includes(\"acceptanceCriteria\") ||\n\t\tpolicy.patch?.allowAcceptanceCriteria === true\n\t);\n}\n\nfunction allowsVerificationPlan(policy: WorkItemDomainActionApplyPolicy): boolean {\n\tif (policy.patch?.allowVerificationPlan === false) return false;\n\tconst allowed = policy.patch?.allowedFields;\n\treturn (\n\t\tallowed === undefined ||\n\t\tallowed.includes(\"verificationPlan\") ||\n\t\tallowed.includes(\"verificationSteps\") ||\n\t\tpolicy.patch?.allowVerificationPlan === true\n\t);\n}\n\nfunction selectApplyPolicy<T>(\n\tstate: ApplicationState<T>,\n\tproposal: WorkItemDomainActionProposal,\n\tadmission: WorkItemDomainActionAdmission,\n):\n\t| WorkItemDomainActionApplyPolicy\n\t| \"missing-policy\"\n\t| \"unknown-work-item-domain-action-apply-policy\"\n\t| \"policy-mismatch\" {\n\tconst explicitId = explicitApplyPolicyId(proposal, admission);\n\tif (explicitId !== undefined)\n\t\treturn state.policies.get(explicitId) ?? \"unknown-work-item-domain-action-apply-policy\";\n\tconst matching = Array.from(state.policies.values()).filter((policy) =>\n\t\tpolicyAllowsAction(policy, proposal.actionKind),\n\t);\n\tif (matching.length === 0) return \"missing-policy\";\n\tif (matching.length > 1) return \"policy-mismatch\";\n\treturn matching[0];\n}\n\nfunction explicitApplyPolicyId(\n\tproposal: WorkItemDomainActionProposal,\n\tadmission: WorkItemDomainActionAdmission,\n): string | undefined {\n\tconst metadataPolicy =\n\t\tstringMetadata(admission.metadata, \"applyPolicyId\") ??\n\t\tstringMetadata(proposal.metadata, \"applyPolicyId\");\n\tif (metadataPolicy !== undefined) return metadataPolicy;\n\treturn [...(admission.sourceRefs ?? []), ...(proposal.sourceRefs ?? [])].find(\n\t\t(sourceRef) => sourceRef.kind === \"work-item-domain-action-apply-policy\",\n\t)?.id;\n}\n\nfunction policyAllowsAction(policy: WorkItemDomainActionApplyPolicy, actionKind: string): boolean {\n\treturn policy.actionKinds === undefined || policy.actionKinds.includes(actionKind);\n}\n\nfunction admissionProposalMismatch(\n\tadmission: WorkItemDomainActionAdmission,\n\tproposal: WorkItemDomainActionProposal,\n):\n\t| {\n\t\t\treadonly field: \"workItemId\" | \"actionKind\";\n\t\t\treadonly admissionValue: string;\n\t\t\treadonly proposalValue: string;\n\t\t\treadonly message: string;\n\t }\n\t| undefined {\n\tif (admission.workItemId !== proposal.workItemId)\n\t\treturn {\n\t\t\tfield: \"workItemId\",\n\t\t\tadmissionValue: admission.workItemId,\n\t\t\tproposalValue: proposal.workItemId,\n\t\t\tmessage: `Admission '${admission.admissionId}' workItemId does not match proposal '${proposal.proposalId}'`,\n\t\t};\n\tif (admission.actionKind !== proposal.actionKind)\n\t\treturn {\n\t\t\tfield: \"actionKind\",\n\t\t\tadmissionValue: admission.actionKind,\n\t\t\tproposalValue: proposal.actionKind,\n\t\t\tmessage: `Admission '${admission.admissionId}' actionKind does not match proposal '${proposal.proposalId}'`,\n\t\t};\n\treturn undefined;\n}\n\nfunction conflictingApplicationMetadata(\n\tproposal: WorkItemDomainActionProposal,\n\tadmission: WorkItemDomainActionAdmission,\n):\n\t| {\n\t\t\treadonly field: \"authoringRevision\" | \"executionInputRevision\" | \"applyPolicyId\";\n\t\t\treadonly code: \"stale-revision\" | \"stale-execution-input\" | \"policy-mismatch\";\n\t\t\treadonly proposalValue: number | string;\n\t\t\treadonly admissionValue: number | string;\n\t\t\treadonly message: string;\n\t }\n\t| undefined {\n\tconst authoringRevision = conflictingMetadataNumber(proposal, admission, \"authoringRevision\");\n\tif (authoringRevision !== undefined)\n\t\treturn {\n\t\t\tfield: \"authoringRevision\",\n\t\t\tcode: \"stale-revision\",\n\t\t\t...authoringRevision,\n\t\t\tmessage: `Admission '${admission.admissionId}' carries conflicting authoringRevision metadata`,\n\t\t};\n\tconst executionInputRevision = conflictingMetadataNumber(\n\t\tproposal,\n\t\tadmission,\n\t\t\"executionInputRevision\",\n\t);\n\tif (executionInputRevision !== undefined)\n\t\treturn {\n\t\t\tfield: \"executionInputRevision\",\n\t\t\tcode: \"stale-execution-input\",\n\t\t\t...executionInputRevision,\n\t\t\tmessage: `Admission '${admission.admissionId}' carries conflicting executionInputRevision metadata`,\n\t\t};\n\tconst applyPolicyId = conflictingMetadataString(proposal, admission, \"applyPolicyId\");\n\tif (applyPolicyId !== undefined)\n\t\treturn {\n\t\t\tfield: \"applyPolicyId\",\n\t\t\tcode: \"policy-mismatch\",\n\t\t\t...applyPolicyId,\n\t\t\tmessage: `Admission '${admission.admissionId}' carries conflicting applyPolicyId metadata`,\n\t\t};\n\treturn undefined;\n}\n\nfunction conflictingMetadataNumber(\n\tproposal: WorkItemDomainActionProposal,\n\tadmission: WorkItemDomainActionAdmission,\n\tkey: string,\n): { readonly proposalValue: number; readonly admissionValue: number } | undefined {\n\tconst proposalValue = numberMetadata(proposal.metadata, key);\n\tconst admissionValue = numberMetadata(admission.metadata, key);\n\tif (\n\t\tproposalValue === undefined ||\n\t\tadmissionValue === undefined ||\n\t\tproposalValue === admissionValue\n\t)\n\t\treturn undefined;\n\treturn { proposalValue, admissionValue };\n}\n\nfunction conflictingMetadataString(\n\tproposal: WorkItemDomainActionProposal,\n\tadmission: WorkItemDomainActionAdmission,\n\tkey: string,\n): { readonly proposalValue: string; readonly admissionValue: string } | undefined {\n\tconst proposalValue = stringMetadata(proposal.metadata, key);\n\tconst admissionValue = stringMetadata(admission.metadata, key);\n\tif (\n\t\tproposalValue === undefined ||\n\t\tadmissionValue === undefined ||\n\t\tproposalValue === admissionValue\n\t)\n\t\treturn undefined;\n\treturn { proposalValue, admissionValue };\n}\n\nfunction staleRevision<T>(\n\tproposal: WorkItemDomainActionProposal,\n\tadmission: WorkItemDomainActionAdmission,\n\tworkItem: WorkItemProjection<T>,\n):\n\t| { readonly kind: \"stale-revision\"; readonly expected: number; readonly current: number }\n\t| { readonly kind: \"stale-execution-input\"; readonly expected: number; readonly current: number }\n\t| undefined {\n\tconst authoringRevision =\n\t\tnumberMetadata(admission.metadata, \"authoringRevision\") ??\n\t\tnumberMetadata(proposal.metadata, \"authoringRevision\");\n\tif (authoringRevision !== undefined && authoringRevision !== workItem.authoringRevision)\n\t\treturn {\n\t\t\tkind: \"stale-revision\",\n\t\t\texpected: authoringRevision,\n\t\t\tcurrent: workItem.authoringRevision,\n\t\t};\n\tconst executionInputRevision =\n\t\tnumberMetadata(admission.metadata, \"executionInputRevision\") ??\n\t\tnumberMetadata(proposal.metadata, \"executionInputRevision\");\n\tif (\n\t\texecutionInputRevision !== undefined &&\n\t\texecutionInputRevision !== workItem.executionInputRevision\n\t)\n\t\treturn {\n\t\t\tkind: \"stale-execution-input\",\n\t\t\texpected: executionInputRevision,\n\t\t\tcurrent: workItem.executionInputRevision,\n\t\t};\n\treturn undefined;\n}\n\nfunction applyPolicyMessage(\n\tcode: \"missing-policy\" | \"unknown-work-item-domain-action-apply-policy\" | \"policy-mismatch\",\n\tproposal: WorkItemDomainActionProposal,\n\tadmission: WorkItemDomainActionAdmission,\n): string {\n\tif (code === \"missing-policy\")\n\t\treturn `Admitted action '${admission.admissionId}' requires an explicit apply policy`;\n\tif (code === \"unknown-work-item-domain-action-apply-policy\")\n\t\treturn `Admitted action '${admission.admissionId}' references a missing apply policy`;\n\treturn `Admitted action '${proposal.proposalId}' matches multiple apply policies`;\n}\n\nfunction emitApplication<T>(\n\tctx: Ctx,\n\tstate: ApplicationState<T>,\n\tadmission: WorkItemDomainActionAdmission,\n\tproposal: WorkItemDomainActionProposal,\n\tapplicationState: WorkItemDomainActionApplication[\"state\"],\n\tfacts: readonly WorkItemAuthoringFact<T>[],\n\topts: { readonly code?: string; readonly message?: string; readonly policyId?: string } = {},\n): void {\n\tconst producedFactIds = facts.map((fact) => fact.eventId);\n\tconst application: WorkItemDomainActionApplication = {\n\t\tkind: \"work-item-domain-action-application\",\n\t\tapplicationId: `${admission.admissionId}:application`,\n\t\tadmissionId: admission.admissionId,\n\t\tproposalId: proposal.proposalId,\n\t\tworkItemId: proposal.workItemId,\n\t\tactionKind: proposal.actionKind,\n\t\tstate: applicationState,\n\t\tproducedFactIds,\n\t\treason: admission.reason ?? proposal.reason,\n\t\tsourceRefs: admissionRefs(admission, proposal),\n\t\tmetadata: { policyId: opts.policyId, code: opts.code },\n\t};\n\temitApplicationFact(ctx, \"application\", application);\n\temitApplicationStatus(ctx, state, {\n\t\tstate: applicationState,\n\t\tcode: opts.code,\n\t\tmessage: opts.message,\n\t\tworkItemId: proposal.workItemId,\n\t\tproposalId: proposal.proposalId,\n\t\tadmissionId: admission.admissionId,\n\t\tactionKind: proposal.actionKind,\n\t\tsourceRefs: application.sourceRefs,\n\t\tmetadata: { producedFactIds, policyId: opts.policyId },\n\t});\n}\n\nfunction emitApplicationIssue<T>(\n\tctx: Ctx,\n\tstate: ApplicationState<T>,\n\tkey: string,\n\tcode: string,\n\tmessage: string,\n\tworkItemId?: string,\n\tsourceRefs?: readonly SourceRef[],\n\tmetadata?: Record<string, unknown>,\n): void {\n\tif (state.issueKeys.has(key)) return;\n\tstate.issueKeys.add(key);\n\tconst item = dataIssue(code, message, { subjectId: workItemId, refs: sourceRefs, metadata });\n\temitApplicationFact(ctx, \"issue\", item);\n\temitApplicationStatus(ctx, state, {\n\t\tstate: code === \"missing-policy\" ? \"missing-policy\" : \"rejected\",\n\t\tcode,\n\t\tmessage,\n\t\tworkItemId,\n\t\tsourceRefs,\n\t\tmetadata,\n\t});\n}\n\nfunction emitApplicationStatus<T>(\n\tctx: Ctx,\n\tstate: ApplicationState<T>,\n\tstatus: Omit<WorkItemDomainActionStatus, \"kind\" | \"statusId\">,\n): void {\n\tstate.statusSeq += 1;\n\tconst statusFact = {\n\t\tkind: \"work-item-domain-action-status\",\n\t\tstatusId: `work-item-domain-action-application-status:${state.statusSeq}`,\n\t\t...status,\n\t} satisfies WorkItemDomainActionStatus;\n\temitApplicationFact(ctx, \"status\", statusFact);\n\temitApplicationAudit(ctx, state, \"work-item-domain-action-application-status\", statusFact);\n}\n\nfunction emitApplicationAudit<T>(\n\tctx: Ctx,\n\tstate: ApplicationState<T>,\n\tkind: string,\n\tstatus: WorkItemDomainActionStatus,\n): void {\n\tstate.auditSeq += 1;\n\temitApplicationFact(ctx, \"audit\", auditRecord(kind, state.auditSeq, status));\n}\n\nfunction emitApplicationFact<T, K extends ApplicationFact<T>[\"kind\"]>(\n\tctx: Ctx,\n\tkind: K,\n\tvalue: Extract<ApplicationFact<T>, { kind: K }>[\"value\"],\n): void {\n\tctx.down([[\"DATA\", { kind, value } as ApplicationFact<T>]]);\n}\n\nfunction firstDuplicateFactId<T>(\n\tstate: ApplicationState<T>,\n\tfacts: readonly WorkItemAuthoringFact<T>[],\n): string | undefined {\n\tconst pending = new Set<string>();\n\tfor (const fact of facts) {\n\t\tif (state.emittedFactIds.has(fact.eventId) || pending.has(fact.eventId)) return fact.eventId;\n\t\tpending.add(fact.eventId);\n\t}\n\treturn undefined;\n}\n\nfunction claimFactId<T>(state: ApplicationState<T>, factId: string): boolean {\n\tif (state.emittedFactIds.has(factId)) return false;\n\tstate.emittedFactIds.add(factId);\n\treturn true;\n}\n\nfunction admissionRefs(\n\tadmission: WorkItemDomainActionAdmission,\n\tproposal?: WorkItemDomainActionProposal,\n\tpolicy?: WorkItemDomainActionApplyPolicy,\n): readonly SourceRef[] {\n\treturn uniqueSourceRefs([\n\t\tref(\"work-item-domain-action-admission\", admission.admissionId),\n\t\tref(\"work-item-domain-action-proposal\", admission.proposalId),\n\t\t...(proposal === undefined\n\t\t\t? []\n\t\t\t: [\n\t\t\t\t\tref(\"work-item\", proposal.workItemId),\n\t\t\t\t\tref(\"work-item-evidence\", proposal.evidenceId),\n\t\t\t\t\t...(proposal.sourceRefs ?? []),\n\t\t\t\t]),\n\t\t...(policy === undefined ? [] : [ref(\"work-item-domain-action-apply-policy\", policy.policyId)]),\n\t\t...(admission.sourceRefs ?? []),\n\t]);\n}\n\nfunction actionSourceRefs(\n\tadmission: WorkItemDomainActionAdmission,\n\tproposal: WorkItemDomainActionProposal,\n\tpolicy: WorkItemDomainActionApplyPolicy,\n): readonly SourceRef[] {\n\treturn admissionRefs(admission, proposal, policy);\n}\n","import type { WorkItemDomainActionProposal } from \"../../orchestration/work-item-runtime.js\";\nimport type {\n\tWorkItemDomainActionApplyPolicy,\n\tWorkItemDomainActionKind,\n\tWorkItemDomainActionProposalIntake,\n} from \"./actions-types.js\";\n\nexport function workItemDomainActionProposal(\n\tproposalId: string,\n\tworkItemId: string,\n\tactionKind: WorkItemDomainActionKind,\n\topts: Omit<\n\t\tPartial<WorkItemDomainActionProposal>,\n\t\t\"kind\" | \"proposalId\" | \"workItemId\" | \"actionKind\"\n\t> = {},\n): WorkItemDomainActionProposal {\n\treturn {\n\t\tkind: \"work-item-domain-action-proposal\",\n\t\tproposalId,\n\t\tworkItemId,\n\t\tactionKind,\n\t\teffectRunId: opts.effectRunId ?? `domain-action:${proposalId}:effect-run`,\n\t\teffectRunResultId: opts.effectRunResultId ?? `domain-action:${proposalId}:effect-run-result`,\n\t\tevidenceId: opts.evidenceId ?? `domain-action:${proposalId}:evidence`,\n\t\tpolicyId: opts.policyId ?? \"domain-action-proposal\",\n\t\tpayload: opts.payload,\n\t\treason: opts.reason,\n\t\tsourceRefs: opts.sourceRefs,\n\t\tproposedAtMs: opts.proposedAtMs,\n\t\tmetadata: opts.metadata,\n\t};\n}\n\nexport function workItemDomainActionProposalIntake<TPayload = unknown>(\n\tproposalId: string,\n\tworkItemId: string,\n\tactionKind: WorkItemDomainActionKind,\n\topts: Omit<\n\t\tPartial<WorkItemDomainActionProposalIntake<TPayload>>,\n\t\t\"kind\" | \"proposalId\" | \"workItemId\" | \"actionKind\"\n\t> = {},\n): WorkItemDomainActionProposalIntake<TPayload> {\n\treturn {\n\t\tkind: \"work-item-domain-action-proposal-intake\",\n\t\tproposalId,\n\t\tworkItemId,\n\t\tactionKind,\n\t\tpayload: opts.payload,\n\t\treason: opts.reason,\n\t\tpolicyId: opts.policyId,\n\t\teffectRunId: opts.effectRunId,\n\t\teffectRunResultId: opts.effectRunResultId,\n\t\tevidenceId: opts.evidenceId,\n\t\tproposedAtMs: opts.proposedAtMs,\n\t\tsourceRefs: opts.sourceRefs,\n\t\tmetadata: opts.metadata,\n\t};\n}\n\nexport function workItemDomainActionApplyPolicy(\n\tpolicyId: string,\n\topts: Omit<Partial<WorkItemDomainActionApplyPolicy>, \"kind\" | \"policyId\"> = {},\n): WorkItemDomainActionApplyPolicy {\n\treturn {\n\t\tkind: \"work-item-domain-action-apply-policy\",\n\t\tpolicyId,\n\t\tactionKinds: opts.actionKinds,\n\t\tpatch: opts.patch,\n\t\tspawn: opts.spawn,\n\t\tmetadata: opts.metadata,\n\t};\n}\n","import { type Ctx, depBatch } from \"../../ctx/types.js\";\nimport type { DataIssue } from \"../../data/index.js\";\nimport type { Graph } from \"../../graph/graph.js\";\nimport type { BoundaryCapabilityKind, BoundaryCapabilityRef } from \"../../inspection/boundary.js\";\nimport type { SourceRef } from \"../../orchestration/agent-runtime.js\";\nimport type {\n\tWorkItemDomainActionAdmissionDecision,\n\tWorkItemDomainActionProposal,\n} from \"../../orchestration/work-item-runtime.js\";\nimport type { CapabilityAdmission, CapabilityAdmissionStatus } from \"../capability-admission.js\";\nimport {\n\tdataIssue,\n\tisRecord,\n\tproject,\n\trecordString,\n\tref,\n\tstringMetadata,\n\tuniqueSourceRefs,\n} from \"./actions-shared.js\";\nimport type {\n\tCapabilityGuardFact,\n\tCapabilityGuardState,\n\tWorkItemDomainActionCapabilityGuardBundle,\n\tWorkItemDomainActionCapabilityGuardOptions,\n\tWorkItemDomainActionCapabilityGuardPolicy,\n\tWorkItemDomainActionCapabilityGuardStatus,\n} from \"./actions-types.js\";\n\n/**\n * Connects CapabilityAdmission facts to WorkItem domain-action admission as a\n * product-owned guard (D357), without adding protocol/boundary vocabulary or\n * treating AutoPanel display affordances as hard security enforcement.\n */\nexport function workItemDomainActionCapabilityGuardProjector(\n\tgraph: Graph,\n\topts: WorkItemDomainActionCapabilityGuardOptions,\n): WorkItemDomainActionCapabilityGuardBundle {\n\tconst name = opts.name ?? \"workItemDomainActionCapabilityGuard\";\n\tconst deps =\n\t\topts.capabilityAdmissionStatus === undefined\n\t\t\t? [opts.proposals, opts.capabilityAdmissions, opts.guardPolicies]\n\t\t\t: [\n\t\t\t\t\topts.proposals,\n\t\t\t\t\topts.capabilityAdmissions,\n\t\t\t\t\topts.guardPolicies,\n\t\t\t\t\topts.capabilityAdmissionStatus,\n\t\t\t\t];\n\tconst statusIndex = opts.capabilityAdmissionStatus === undefined ? -1 : 3;\n\tconst now = opts.now ?? Date.now;\n\tconst runtime = graph.node<CapabilityGuardFact>(\n\t\tdeps,\n\t\t(ctx) => {\n\t\t\tconst state: CapabilityGuardState = ctx.state.get<CapabilityGuardState>() ?? {\n\t\t\t\tproposals: new Map(),\n\t\t\t\tadmissionsByCapability: new Map(),\n\t\t\t\tissueStatusesByCapability: new Map(),\n\t\t\t\tissueStatusesWithoutCapability: [],\n\t\t\t\tpolicies: new Map(),\n\t\t\t\temittedProposalDecisions: new Set(),\n\t\t\t\temittedStatusKeys: new Set(),\n\t\t\t\tissueKeys: new Set(),\n\t\t\t\tstatusSeq: 0,\n\t\t\t\tauditSeq: 0,\n\t\t\t};\n\t\t\tfor (const raw of depBatch(ctx, 2) ?? []) {\n\t\t\t\tconst policyIssue = capabilityGuardPolicyIssue(raw);\n\t\t\t\tif (policyIssue !== undefined) {\n\t\t\t\t\temitCapabilityGuardIssue(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\t`malformed-policy:${recordString(raw, \"policyId\") ?? \"unknown\"}`,\n\t\t\t\t\t\tpolicyIssue,\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst policy = raw as WorkItemDomainActionCapabilityGuardPolicy;\n\t\t\t\tstate.policies.set(policy.policyId, policy);\n\t\t\t}\n\t\t\tfor (const raw of depBatch(ctx, 1) ?? []) {\n\t\t\t\tconst admissionIssue = capabilityAdmissionIssue(raw);\n\t\t\t\tif (admissionIssue !== undefined) {\n\t\t\t\t\temitCapabilityGuardIssue(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\t`malformed-admission:${recordString(raw, \"admissionId\") ?? \"unknown\"}`,\n\t\t\t\t\t\tadmissionIssue,\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst admission = raw as CapabilityAdmission;\n\t\t\t\tconst capabilityKey = capabilityBoundaryRefId(admission.capability);\n\t\t\t\tconst byCapability: CapabilityAdmission[] =\n\t\t\t\t\tstate.admissionsByCapability.get(capabilityKey) ?? [];\n\t\t\t\tif (!byCapability.some((item) => item.admissionId === admission.admissionId)) {\n\t\t\t\t\tstate.admissionsByCapability.set(capabilityKey, [...byCapability, admission]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (statusIndex >= 0) {\n\t\t\t\tfor (const raw of depBatch(ctx, statusIndex) ?? []) {\n\t\t\t\t\tconst statusIssue = capabilityAdmissionStatusIssue(raw);\n\t\t\t\t\tif (statusIssue !== undefined) {\n\t\t\t\t\t\temitCapabilityGuardIssue(\n\t\t\t\t\t\t\tctx,\n\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t`malformed-capability-status:${recordString(raw, \"statusId\") ?? \"unknown\"}`,\n\t\t\t\t\t\t\tstatusIssue,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tconst status = raw as CapabilityAdmissionStatus;\n\t\t\t\t\tif (status.state !== \"capability-admission-issue\") continue;\n\t\t\t\t\tconst capabilityId = status.capabilityId;\n\t\t\t\t\tconst capabilityKind = status.capabilityKind;\n\t\t\t\t\tif (capabilityId !== undefined && capabilityKind !== undefined) {\n\t\t\t\t\t\tconst capabilityKey = capabilityBoundaryRefId({\n\t\t\t\t\t\t\tid: capabilityId,\n\t\t\t\t\t\t\tkind: capabilityKind,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconst statuses: CapabilityAdmissionStatus[] =\n\t\t\t\t\t\t\tstate.issueStatusesByCapability.get(capabilityKey) ?? [];\n\t\t\t\t\t\tif (!statuses.some((item) => item.statusId === status.statusId)) {\n\t\t\t\t\t\t\tstate.issueStatusesByCapability.set(capabilityKey, [...statuses, status]);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (\n\t\t\t\t\t\t!state.issueStatusesWithoutCapability.some((item) => item.statusId === status.statusId)\n\t\t\t\t\t) {\n\t\t\t\t\t\tstate.issueStatusesWithoutCapability.push(status);\n\t\t\t\t\t}\n\t\t\t\t\tfor (const proposal of state.proposals.values())\n\t\t\t\t\t\temitCapabilityStatusIssueForProposal(ctx, state, proposal, status);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const raw of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst proposalIssue = capabilityGuardProposalIssue(raw);\n\t\t\t\tif (proposalIssue !== undefined) {\n\t\t\t\t\temitCapabilityGuardIssue(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\t`malformed-proposal:${recordString(raw, \"proposalId\") ?? \"unknown\"}`,\n\t\t\t\t\t\tproposalIssue,\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst proposal = raw as WorkItemDomainActionProposal;\n\t\t\t\tstate.proposals.set(proposal.proposalId, proposal);\n\t\t\t}\n\t\t\tfor (const proposal of state.proposals.values())\n\t\t\t\tevaluateCapabilityGuardProposal(ctx, state, proposal, now());\n\t\t\tctx.state.set(state);\n\t\t},\n\t\t{\n\t\t\tname: `${name}/runtime`,\n\t\t\tfactory: \"workItemDomainActionCapabilityGuardProjector\",\n\t\t\tpartial: true,\n\t\t\tcompleteWhenDepsComplete: false,\n\t\t\terrorWhenDepsError: false,\n\t\t},\n\t);\n\treturn {\n\t\tdecisions: project(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/decisions`,\n\t\t\t\"workItemDomainActionCapabilityGuardDecisions\",\n\t\t\t(fact) => (fact.kind === \"decision\" ? fact.value : undefined),\n\t\t),\n\t\tstatus: project(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/status`,\n\t\t\t\"workItemDomainActionCapabilityGuardStatus\",\n\t\t\t(fact) => (fact.kind === \"status\" ? fact.value : undefined),\n\t\t),\n\t\tissues: project(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/issues`,\n\t\t\t\"workItemDomainActionCapabilityGuardIssues\",\n\t\t\t(fact) => (fact.kind === \"issue\" ? fact.value : undefined),\n\t\t),\n\t\taudit: project(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/audit`,\n\t\t\t\"workItemDomainActionCapabilityGuardAudit\",\n\t\t\t(fact) => (fact.kind === \"audit\" ? fact.value : undefined),\n\t\t),\n\t};\n}\n\nfunction evaluateCapabilityGuardProposal(\n\tctx: Ctx,\n\tstate: CapabilityGuardState,\n\tproposal: WorkItemDomainActionProposal,\n\tdecidedAtMs: number,\n): void {\n\tif (state.emittedProposalDecisions.has(proposal.proposalId)) return;\n\tconst policy = selectCapabilityGuardPolicy(state, proposal);\n\tif (typeof policy === \"string\") {\n\t\temitCapabilityGuardIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`policy:${proposal.proposalId}:${policy}`,\n\t\t\tdataIssue(policy, capabilityGuardPolicyMessage(policy, proposal), {\n\t\t\t\tsubjectId: proposal.workItemId,\n\t\t\t\trefs: [ref(\"work-item-domain-action-proposal\", proposal.proposalId)],\n\t\t\t}),\n\t\t);\n\t\treturn;\n\t}\n\tfor (const status of state.issueStatusesWithoutCapability)\n\t\temitCapabilityStatusIssueForProposal(ctx, state, proposal, status);\n\tfor (const capabilityRef of policy.capabilityRefs) {\n\t\tfor (const status of state.issueStatusesByCapability.get(\n\t\t\tcapabilityBoundaryRefId(capabilityRef),\n\t\t) ?? [])\n\t\t\temitCapabilityStatusIssueForProposal(ctx, state, proposal, status);\n\t}\n\tconst admissions = policy.capabilityRefs.map((capabilityRef) =>\n\t\tlatestCapabilityAdmission(state, policy, capabilityRef),\n\t);\n\tconst missingCapabilityRefs = policy.capabilityRefs.filter(\n\t\t(_, index) => admissions[index] === undefined,\n\t);\n\tconst deferredCapabilityRefs = admissions\n\t\t.filter((admission): admission is CapabilityAdmission => admission !== undefined)\n\t\t.filter((admission) => admission.state === \"deferred\")\n\t\t.map((admission) => capabilityBoundaryRefId(admission.capability));\n\tif (missingCapabilityRefs.length > 0 || deferredCapabilityRefs.length > 0) {\n\t\temitCapabilityGuardStatusOnce(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`deferred:${proposal.proposalId}:${policy.policyId}:missing=${missingCapabilityRefs.map(capabilityBoundaryRefId).join(\",\")}:deferred=${deferredCapabilityRefs.join(\",\")}`,\n\t\t\t{\n\t\t\t\tstate: \"deferred\",\n\t\t\t\tworkItemId: proposal.workItemId,\n\t\t\t\tproposalId: proposal.proposalId,\n\t\t\t\tactionKind: proposal.actionKind,\n\t\t\t\tpolicyId: policy.policyId,\n\t\t\t\tcapabilityRefs: policy.capabilityRefs,\n\t\t\t\tadmissionSubjectIds: policy.admissionSubjectIds,\n\t\t\t\tmessage: \"WorkItem domain action is waiting for capability admission\",\n\t\t\t\tsourceRefs: capabilityGuardRefs(proposal, policy, admissions),\n\t\t\t\tmetadata: {\n\t\t\t\t\tmissingCapabilityRefs: missingCapabilityRefs.map(capabilityBoundaryRefId),\n\t\t\t\t\tdeferredCapabilityRefs,\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\t\treturn;\n\t}\n\tconst presentAdmissions = admissions.filter(\n\t\t(admission): admission is CapabilityAdmission => admission !== undefined,\n\t);\n\tconst blocked = presentAdmissions.filter((admission) => admission.state === \"blocked\");\n\tconst outcome: WorkItemDomainActionAdmissionDecision[\"outcome\"] =\n\t\tblocked.length === 0 ? \"admit\" : \"reject\";\n\tconst decision: WorkItemDomainActionAdmissionDecision = {\n\t\tkind: \"work-item-domain-action-admission-decision\",\n\t\tdecisionId: `capability-guard:${proposal.proposalId}:decision`,\n\t\tadmissionId: `capability-guard:${proposal.proposalId}:admission`,\n\t\tproposalId: proposal.proposalId,\n\t\toutcome,\n\t\treason:\n\t\t\tblocked.length === 0\n\t\t\t\t? \"Capability guard admitted required capabilities\"\n\t\t\t\t: \"Capability guard rejected blocked capabilities\",\n\t\tdecidedAtMs,\n\t\tsourceRefs: capabilityGuardRefs(proposal, policy, presentAdmissions),\n\t\tmetadata: {\n\t\t\tcapabilityGuardPolicyId: policy.policyId,\n\t\t\tcapabilityRefs: policy.capabilityRefs.map(capabilityBoundaryRefId),\n\t\t\tadmissionSubjectIds: policy.admissionSubjectIds,\n\t\t\tblockedCapabilityRefs: blocked.map((admission) =>\n\t\t\t\tcapabilityBoundaryRefId(admission.capability),\n\t\t\t),\n\t\t},\n\t};\n\tstate.emittedProposalDecisions.add(proposal.proposalId);\n\temitCapabilityGuard(ctx, \"decision\", decision);\n\temitCapabilityGuardStatus(ctx, state, {\n\t\tstate: outcome === \"admit\" ? \"admitted\" : \"rejected\",\n\t\tworkItemId: proposal.workItemId,\n\t\tproposalId: proposal.proposalId,\n\t\tactionKind: proposal.actionKind,\n\t\tpolicyId: policy.policyId,\n\t\tcapabilityRefs: policy.capabilityRefs,\n\t\tadmissionSubjectIds: policy.admissionSubjectIds,\n\t\tadmissionIds: presentAdmissions.map((admission) => admission.admissionId),\n\t\tsourceRefs: decision.sourceRefs,\n\t\tmetadata: { decisionId: decision.decisionId, admissionId: decision.admissionId },\n\t});\n}\n\nfunction capabilityGuardProposalIssue(proposal: unknown): DataIssue | undefined {\n\tif (\n\t\t!isRecord(proposal) ||\n\t\tproposal.kind !== \"work-item-domain-action-proposal\" ||\n\t\ttypeof proposal.proposalId !== \"string\" ||\n\t\tproposal.proposalId.length === 0 ||\n\t\ttypeof proposal.workItemId !== \"string\" ||\n\t\tproposal.workItemId.length === 0 ||\n\t\ttypeof proposal.actionKind !== \"string\" ||\n\t\tproposal.actionKind.length === 0 ||\n\t\t(proposal.sourceRefs !== undefined && !isSourceRefArray(proposal.sourceRefs))\n\t) {\n\t\treturn dataIssue(\n\t\t\t\"malformed-work-item-domain-action-capability-guard-proposal\",\n\t\t\t\"WorkItem domain action capability guard requires valid proposal DATA facts\",\n\t\t\t{ subjectId: recordString(proposal, \"workItemId\") },\n\t\t);\n\t}\n\treturn undefined;\n}\n\nfunction capabilityGuardPolicyIssue(policy: unknown): DataIssue | undefined {\n\tif (\n\t\t!isRecord(policy) ||\n\t\tpolicy.kind !== \"work-item-domain-action-capability-guard-policy\" ||\n\t\ttypeof policy.policyId !== \"string\" ||\n\t\tpolicy.policyId.length === 0 ||\n\t\t!Array.isArray(policy.capabilityRefs) ||\n\t\tpolicy.capabilityRefs.length === 0 ||\n\t\t!policy.capabilityRefs.every(isBoundaryCapabilityRef) ||\n\t\t!Array.isArray(policy.admissionSubjectIds) ||\n\t\tpolicy.admissionSubjectIds.length === 0 ||\n\t\t!policy.admissionSubjectIds.every((id) => typeof id === \"string\" && id.length > 0) ||\n\t\t(policy.actionKinds !== undefined &&\n\t\t\t(!Array.isArray(policy.actionKinds) ||\n\t\t\t\t!policy.actionKinds.every((kind) => typeof kind === \"string\" && kind.length > 0)))\n\t) {\n\t\treturn dataIssue(\n\t\t\t\"malformed-work-item-domain-action-capability-guard-policy\",\n\t\t\t\"WorkItem domain action capability guard policy requires policyId, capabilityRefs, and admissionSubjectIds\",\n\t\t\t{\n\t\t\t\tsubjectId: recordString(policy, \"policyId\"),\n\t\t\t},\n\t\t);\n\t}\n\treturn undefined;\n}\n\nfunction capabilityAdmissionIssue(admission: unknown): DataIssue | undefined {\n\tif (\n\t\t!isRecord(admission) ||\n\t\tadmission.kind !== \"capability-admission\" ||\n\t\ttypeof admission.admissionId !== \"string\" ||\n\t\tadmission.admissionId.length === 0 ||\n\t\ttypeof admission.proposalId !== \"string\" ||\n\t\tadmission.proposalId.length === 0 ||\n\t\ttypeof admission.subjectId !== \"string\" ||\n\t\tadmission.subjectId.length === 0 ||\n\t\t!isBoundaryCapabilityRef(admission.capability) ||\n\t\t!isCapabilityAdmissionState(admission.state) ||\n\t\ttypeof admission.decisionId !== \"string\" ||\n\t\tadmission.decisionId.length === 0 ||\n\t\t(admission.sourceRefs !== undefined && !isSourceRefArray(admission.sourceRefs))\n\t) {\n\t\treturn dataIssue(\n\t\t\t\"malformed-capability-admission\",\n\t\t\t\"WorkItem domain action capability guard requires valid CapabilityAdmission DATA facts\",\n\t\t\t{ subjectId: recordString(admission, \"subjectId\") },\n\t\t);\n\t}\n\treturn undefined;\n}\n\nfunction capabilityAdmissionStatusIssue(status: unknown): DataIssue | undefined {\n\tif (\n\t\t!isRecord(status) ||\n\t\tstatus.kind !== \"capability-admission-status\" ||\n\t\ttypeof status.statusId !== \"string\" ||\n\t\tstatus.statusId.length === 0 ||\n\t\t!isCapabilityAdmissionStatusState(status.state)\n\t) {\n\t\treturn dataIssue(\n\t\t\t\"malformed-capability-admission-status\",\n\t\t\t\"WorkItem domain action capability guard requires valid CapabilityAdmissionStatus DATA facts\",\n\t\t\t{ subjectId: recordString(status, \"subjectId\") },\n\t\t);\n\t}\n\tconst hasCapabilityId = status.capabilityId !== undefined;\n\tconst hasCapabilityKind = status.capabilityKind !== undefined;\n\tif (\n\t\thasCapabilityId !== hasCapabilityKind ||\n\t\t(hasCapabilityId &&\n\t\t\t(typeof status.capabilityId !== \"string\" ||\n\t\t\t\tstatus.capabilityId.length === 0 ||\n\t\t\t\t!isBoundaryCapabilityKind(status.capabilityKind))) ||\n\t\t(status.sourceRefs !== undefined && !isSourceRefArray(status.sourceRefs)) ||\n\t\t(status.issues !== undefined && !isDataIssueArray(status.issues))\n\t) {\n\t\treturn dataIssue(\n\t\t\t\"malformed-capability-admission-status\",\n\t\t\t\"WorkItem domain action capability guard requires valid CapabilityAdmissionStatus DATA facts\",\n\t\t\t{ subjectId: recordString(status, \"subjectId\") },\n\t\t);\n\t}\n\treturn undefined;\n}\n\nfunction isCapabilityAdmissionState(value: unknown): value is CapabilityAdmission[\"state\"] {\n\treturn value === \"allowed\" || value === \"blocked\" || value === \"deferred\";\n}\n\nfunction isCapabilityAdmissionStatusState(\n\tvalue: unknown,\n): value is CapabilityAdmissionStatus[\"state\"] {\n\treturn (\n\t\tvalue === \"capability-admission-allowed\" ||\n\t\tvalue === \"capability-admission-blocked\" ||\n\t\tvalue === \"capability-admission-deferred\" ||\n\t\tvalue === \"capability-admission-issue\"\n\t);\n}\n\nfunction isSourceRefArray(value: unknown): value is readonly SourceRef[] {\n\treturn (\n\t\tArray.isArray(value) &&\n\t\tvalue.every(\n\t\t\t(item) => isRecord(item) && typeof item.kind === \"string\" && typeof item.id === \"string\",\n\t\t)\n\t);\n}\n\nfunction isDataIssueArray(value: unknown): value is readonly DataIssue[] {\n\treturn Array.isArray(value) && value.every(isDataIssue);\n}\n\nfunction isDataIssue(value: unknown): value is DataIssue {\n\treturn (\n\t\tisRecord(value) &&\n\t\tvalue.kind === \"issue\" &&\n\t\ttypeof value.code === \"string\" &&\n\t\tvalue.code.length > 0 &&\n\t\ttypeof value.message === \"string\" &&\n\t\tvalue.message.length > 0\n\t);\n}\n\nfunction isBoundaryCapabilityRef(value: unknown): value is BoundaryCapabilityRef {\n\treturn (\n\t\tisRecord(value) &&\n\t\ttypeof value.id === \"string\" &&\n\t\tvalue.id.length > 0 &&\n\t\tisBoundaryCapabilityKind(value.kind) &&\n\t\ttypeof value.required === \"boolean\" &&\n\t\t(value.sourceRefs === undefined ||\n\t\t\t(Array.isArray(value.sourceRefs) &&\n\t\t\t\tvalue.sourceRefs.every((sourceRef) => typeof sourceRef === \"string\")))\n\t);\n}\n\nfunction isBoundaryCapabilityKind(value: unknown): value is BoundaryCapabilityKind {\n\treturn value === \"auth\" || value === \"permission\" || value === \"config\" || value === \"resource\";\n}\n\nfunction selectCapabilityGuardPolicy(\n\tstate: CapabilityGuardState,\n\tproposal: WorkItemDomainActionProposal,\n):\n\t| WorkItemDomainActionCapabilityGuardPolicy\n\t| \"missing-policy\"\n\t| \"unknown-work-item-domain-action-capability-guard-policy\"\n\t| \"policy-mismatch\" {\n\tconst explicitId =\n\t\tstringMetadata(proposal.metadata, \"capabilityGuardPolicyId\") ??\n\t\tproposal.sourceRefs?.find(\n\t\t\t(sourceRef) => sourceRef.kind === \"work-item-domain-action-capability-guard-policy\",\n\t\t)?.id;\n\tif (explicitId !== undefined)\n\t\treturn (\n\t\t\tstate.policies.get(explicitId) ?? \"unknown-work-item-domain-action-capability-guard-policy\"\n\t\t);\n\tconst matching = [...state.policies.values()].filter(\n\t\t(policy) =>\n\t\t\tpolicy.actionKinds === undefined || policy.actionKinds.includes(proposal.actionKind),\n\t);\n\tif (matching.length === 0) return \"missing-policy\";\n\tif (matching.length > 1) return \"policy-mismatch\";\n\treturn matching[0];\n}\n\nfunction latestCapabilityAdmission(\n\tstate: CapabilityGuardState,\n\tpolicy: WorkItemDomainActionCapabilityGuardPolicy,\n\tcapabilityRef: BoundaryCapabilityRef,\n): CapabilityAdmission | undefined {\n\tconst admissions = state.admissionsByCapability.get(capabilityBoundaryRefId(capabilityRef)) ?? [];\n\tfor (let index = admissions.length - 1; index >= 0; index -= 1) {\n\t\tconst admission = admissions[index];\n\t\tif (admission !== undefined && policy.admissionSubjectIds.includes(admission.subjectId))\n\t\t\treturn admission;\n\t}\n\treturn undefined;\n}\n\nfunction emitCapabilityStatusIssueForProposal(\n\tctx: Ctx,\n\tstate: CapabilityGuardState,\n\tproposal: WorkItemDomainActionProposal,\n\tstatus: CapabilityAdmissionStatus,\n): void {\n\tconst policy = selectCapabilityGuardPolicy(state, proposal);\n\tif (typeof policy === \"string\") return;\n\tif (status.subjectId !== undefined && !policy.admissionSubjectIds.includes(status.subjectId))\n\t\treturn;\n\tconst capabilityId = status.capabilityId;\n\tconst capabilityKind = status.capabilityKind;\n\tconst statusCapabilityKey =\n\t\tcapabilityId === undefined || capabilityKind === undefined\n\t\t\t? undefined\n\t\t\t: capabilityBoundaryRefId({ id: capabilityId, kind: capabilityKind });\n\tif (\n\t\tstatusCapabilityKey !== undefined &&\n\t\t!policy.capabilityRefs.some(\n\t\t\t(capabilityRef) => capabilityBoundaryRefId(capabilityRef) === statusCapabilityKey,\n\t\t)\n\t)\n\t\treturn;\n\tconst issue =\n\t\tstatus.issues?.[0] ??\n\t\tdataIssue(\n\t\t\t\"capability-admission-status-issue\",\n\t\t\t\"Capability admission status reported an issue\",\n\t\t\t{ subjectId: proposal.workItemId },\n\t\t);\n\temitCapabilityGuardIssue(\n\t\tctx,\n\t\tstate,\n\t\t`capability-status:${proposal.proposalId}:${status.statusId}`,\n\t\tdataIssue(issue.code, issue.message, {\n\t\t\tsubjectId: proposal.workItemId,\n\t\t\trefs: uniqueSourceRefs([\n\t\t\t\t...capabilityGuardRefs(proposal, policy),\n\t\t\t\t...(status.sourceRefs ?? []),\n\t\t\t]),\n\t\t\tmetadata: {\n\t\t\t\t...(statusCapabilityKey === undefined ? {} : { capabilityRef: statusCapabilityKey }),\n\t\t\t\tcapabilityAdmissionStatusId: status.statusId,\n\t\t\t},\n\t\t}),\n\t);\n}\n\nfunction capabilityGuardPolicyMessage(\n\tcode:\n\t\t| \"missing-policy\"\n\t\t| \"unknown-work-item-domain-action-capability-guard-policy\"\n\t\t| \"policy-mismatch\",\n\tproposal: WorkItemDomainActionProposal,\n): string {\n\tif (code === \"missing-policy\")\n\t\treturn `WorkItem domain action '${proposal.proposalId}' has no capability guard policy`;\n\tif (code === \"unknown-work-item-domain-action-capability-guard-policy\")\n\t\treturn `WorkItem domain action '${proposal.proposalId}' references a missing capability guard policy`;\n\treturn `WorkItem domain action '${proposal.proposalId}' matches multiple capability guard policies`;\n}\n\nfunction capabilityGuardRefs(\n\tproposal: WorkItemDomainActionProposal,\n\tpolicy: WorkItemDomainActionCapabilityGuardPolicy,\n\tadmissions: readonly (CapabilityAdmission | undefined)[] = [],\n): readonly SourceRef[] {\n\treturn uniqueSourceRefs([\n\t\tref(\"work-item\", proposal.workItemId),\n\t\tref(\"work-item-domain-action-proposal\", proposal.proposalId),\n\t\tref(\"work-item-domain-action-capability-guard-policy\", policy.policyId),\n\t\t...admissions\n\t\t\t.filter((admission): admission is CapabilityAdmission => admission !== undefined)\n\t\t\t.flatMap((admission) => [\n\t\t\t\tref(\"capability-admission\", admission.admissionId),\n\t\t\t\tref(\"capability-admission-proposal\", admission.proposalId),\n\t\t\t\tref(\"boundary-capability\", capabilityBoundaryRefId(admission.capability)),\n\t\t\t\t...(admission.sourceRefs ?? []),\n\t\t\t]),\n\t\t...(proposal.sourceRefs ?? []),\n\t]);\n}\n\nfunction capabilityBoundaryRefId(capability: Pick<BoundaryCapabilityRef, \"id\" | \"kind\">): string {\n\treturn `${capability.kind}:${capability.id}`;\n}\n\nfunction emitCapabilityGuardStatus(\n\tctx: Ctx,\n\tstate: CapabilityGuardState,\n\tstatus: Omit<WorkItemDomainActionCapabilityGuardStatus, \"kind\" | \"statusId\">,\n): void {\n\tstate.statusSeq += 1;\n\tconst statusFact: WorkItemDomainActionCapabilityGuardStatus = {\n\t\tkind: \"work-item-domain-action-capability-guard-status\",\n\t\tstatusId: `work-item-domain-action-capability-guard-status:${state.statusSeq}`,\n\t\t...status,\n\t};\n\temitCapabilityGuard(ctx, \"status\", statusFact);\n\tstate.auditSeq += 1;\n\temitCapabilityGuard(ctx, \"audit\", {\n\t\tid: `work-item-domain-action-capability-guard-status:${state.auditSeq}`,\n\t\tkind: \"work-item-domain-action-capability-guard-status\",\n\t\tsubjectId: status.workItemId,\n\t\tmessage: status.message,\n\t\tsourceRefs: status.sourceRefs,\n\t\tmetadata: {\n\t\t\tstatusId: statusFact.statusId,\n\t\t\tstate: status.state,\n\t\t\tproposalId: status.proposalId,\n\t\t\tpolicyId: status.policyId,\n\t\t\t...(status.metadata ?? {}),\n\t\t},\n\t});\n}\n\nfunction emitCapabilityGuardStatusOnce(\n\tctx: Ctx,\n\tstate: CapabilityGuardState,\n\tkey: string,\n\tstatus: Omit<WorkItemDomainActionCapabilityGuardStatus, \"kind\" | \"statusId\">,\n): void {\n\tif (state.emittedStatusKeys.has(key)) return;\n\tstate.emittedStatusKeys.add(key);\n\temitCapabilityGuardStatus(ctx, state, status);\n}\n\nfunction emitCapabilityGuardIssue(\n\tctx: Ctx,\n\tstate: CapabilityGuardState,\n\tkey: string,\n\tissue: DataIssue,\n): void {\n\tif (state.issueKeys.has(key)) return;\n\tstate.issueKeys.add(key);\n\temitCapabilityGuard(ctx, \"issue\", issue);\n\temitCapabilityGuardStatus(ctx, state, {\n\t\tstate: \"issue\",\n\t\tworkItemId: issue.subjectId,\n\t\tissues: [issue],\n\t\tmessage: issue.message,\n\t\tmetadata: { issueCode: issue.code },\n\t});\n}\n\nfunction emitCapabilityGuard<K extends CapabilityGuardFact[\"kind\"]>(\n\tctx: Ctx,\n\tkind: K,\n\tvalue: Extract<CapabilityGuardFact, { readonly kind: K }>[\"value\"],\n): void {\n\tctx.down([[\"DATA\", { kind, value } as unknown as CapabilityGuardFact]]);\n}\n","import { type Ctx, depBatch } from \"../../ctx/types.js\";\nimport type { Graph } from \"../../graph/graph.js\";\nimport type { WorkItemDomainActionProposal } from \"../../orchestration/work-item-runtime.js\";\nimport { workItemDomainActionProposal } from \"./actions-builders.js\";\nimport { auditRecord, dataIssue, isRecord, project, sourceRefs } from \"./actions-shared.js\";\nimport type {\n\tIntakeFact,\n\tIntakeState,\n\tWorkItemDomainActionIntakeBundle,\n\tWorkItemDomainActionIntakeOptions,\n\tWorkItemDomainActionKind,\n\tWorkItemDomainActionStatus,\n} from \"./actions-types.js\";\n\nexport function workItemDomainActionProposalIntakeProjector(\n\tgraph: Graph,\n\topts: WorkItemDomainActionIntakeOptions,\n): WorkItemDomainActionIntakeBundle {\n\tconst name = opts.name ?? \"workItemDomainActionIntake\";\n\tconst now = opts.now ?? Date.now;\n\tconst runtime = graph.node<IntakeFact>(\n\t\t[opts.proposals],\n\t\t(ctx) => {\n\t\t\tconst state = ctx.state.get<IntakeState>() ?? {\n\t\t\t\tproposals: new Set(),\n\t\t\t\tstatusSeq: 0,\n\t\t\t\tauditSeq: 0,\n\t\t\t};\n\t\t\tfor (const raw of depBatch(ctx, 0) ?? []) reduceProposalIntake(ctx, state, raw, now());\n\t\t\tctx.state.set(state);\n\t\t},\n\t\t{\n\t\t\tname: `${name}/runtime`,\n\t\t\tfactory: \"workItemDomainActionProposalIntakeProjector\",\n\t\t\tpartial: true,\n\t\t\tcompleteWhenDepsComplete: false,\n\t\t\terrorWhenDepsError: false,\n\t\t},\n\t);\n\treturn {\n\t\tproposals: project(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/proposals`,\n\t\t\t\"workItemDomainActionProposals\",\n\t\t\t(fact) => (fact.kind === \"proposal\" ? fact.value : undefined),\n\t\t),\n\t\tstatus: project(graph, runtime, `${name}/status`, \"workItemDomainActionStatus\", (fact) =>\n\t\t\tfact.kind === \"status\" ? fact.value : undefined,\n\t\t),\n\t\tissues: project(graph, runtime, `${name}/issues`, \"workItemDomainActionIssues\", (fact) =>\n\t\t\tfact.kind === \"issue\" ? fact.value : undefined,\n\t\t),\n\t\taudit: project(graph, runtime, `${name}/audit`, \"workItemDomainActionAudit\", (fact) =>\n\t\t\tfact.kind === \"audit\" ? fact.value : undefined,\n\t\t),\n\t};\n}\n\nfunction reduceProposalIntake(\n\tctx: Ctx,\n\tstate: IntakeState,\n\tinput: unknown,\n\tproposedAtMs: number,\n): void {\n\tconst proposal = normalizeProposal(input, proposedAtMs);\n\tif (typeof proposal === \"string\") {\n\t\tconst issue = dataIssue(\"malformed-domain-action-proposal\", proposal);\n\t\temitIntake(ctx, \"issue\", issue);\n\t\temitIntakeStatus(ctx, state, {\n\t\t\tstate: \"rejected\",\n\t\t\tcode: issue.code,\n\t\t\tmessage: issue.message,\n\t\t});\n\t\treturn;\n\t}\n\tif (state.proposals.has(proposal.proposalId)) {\n\t\temitIntakeStatus(ctx, state, {\n\t\t\tstate: \"duplicate\",\n\t\t\tcode: \"duplicate-suppressed\",\n\t\t\tworkItemId: proposal.workItemId,\n\t\t\tproposalId: proposal.proposalId,\n\t\t\tactionKind: proposal.actionKind,\n\t\t\tmessage: `Duplicate WorkItem domain action proposal '${proposal.proposalId}' suppressed`,\n\t\t});\n\t\treturn;\n\t}\n\tstate.proposals.add(proposal.proposalId);\n\temitIntake(ctx, \"proposal\", proposal);\n\temitIntakeStatus(ctx, state, {\n\t\tstate: \"proposed\",\n\t\tworkItemId: proposal.workItemId,\n\t\tproposalId: proposal.proposalId,\n\t\tactionKind: proposal.actionKind,\n\t\tsourceRefs: proposal.sourceRefs,\n\t});\n}\n\nfunction normalizeProposal(\n\tinput: unknown,\n\tproposedAtMs: number,\n): WorkItemDomainActionProposal | string {\n\tif (!isRecord(input)) return \"WorkItemDomainActionProposal intake must be an object\";\n\tif (\n\t\tinput.kind !== \"work-item-domain-action-proposal\" &&\n\t\tinput.kind !== \"work-item-domain-action-proposal-intake\"\n\t)\n\t\treturn \"WorkItemDomainActionProposal intake has unsupported kind\";\n\tif (typeof input.proposalId !== \"string\" || input.proposalId.trim() === \"\")\n\t\treturn \"WorkItemDomainActionProposal.proposalId is required\";\n\tif (typeof input.workItemId !== \"string\" || input.workItemId.trim() === \"\")\n\t\treturn \"WorkItemDomainActionProposal.workItemId is required\";\n\tif (typeof input.actionKind !== \"string\" || input.actionKind.trim() === \"\")\n\t\treturn \"WorkItemDomainActionProposal.actionKind is required\";\n\tif (input.kind === \"work-item-domain-action-proposal\") {\n\t\tif (typeof input.effectRunId !== \"string\")\n\t\t\treturn \"WorkItemDomainActionProposal.effectRunId is required\";\n\t\tif (typeof input.effectRunResultId !== \"string\")\n\t\t\treturn \"WorkItemDomainActionProposal.effectRunResultId is required\";\n\t\tif (typeof input.evidenceId !== \"string\")\n\t\t\treturn \"WorkItemDomainActionProposal.evidenceId is required\";\n\t\tif (typeof input.policyId !== \"string\")\n\t\t\treturn \"WorkItemDomainActionProposal.policyId is required\";\n\t\treturn input as unknown as WorkItemDomainActionProposal;\n\t}\n\treturn workItemDomainActionProposal(\n\t\tinput.proposalId,\n\t\tinput.workItemId,\n\t\tinput.actionKind as WorkItemDomainActionKind,\n\t\t{\n\t\t\tpayload: input.payload,\n\t\t\treason: typeof input.reason === \"string\" ? input.reason : undefined,\n\t\t\tpolicyId: typeof input.policyId === \"string\" ? input.policyId : undefined,\n\t\t\teffectRunId: typeof input.effectRunId === \"string\" ? input.effectRunId : undefined,\n\t\t\teffectRunResultId:\n\t\t\t\ttypeof input.effectRunResultId === \"string\" ? input.effectRunResultId : undefined,\n\t\t\tevidenceId: typeof input.evidenceId === \"string\" ? input.evidenceId : undefined,\n\t\t\tproposedAtMs: typeof input.proposedAtMs === \"number\" ? input.proposedAtMs : proposedAtMs,\n\t\t\tsourceRefs: sourceRefs(input.sourceRefs),\n\t\t\tmetadata: isRecord(input.metadata) ? input.metadata : undefined,\n\t\t},\n\t);\n}\n\nfunction emitIntakeStatus(\n\tctx: Ctx,\n\tstate: IntakeState,\n\tstatus: Omit<WorkItemDomainActionStatus, \"kind\" | \"statusId\">,\n): void {\n\tstate.statusSeq += 1;\n\tconst statusFact = {\n\t\tkind: \"work-item-domain-action-status\",\n\t\tstatusId: `work-item-domain-action-intake-status:${state.statusSeq}`,\n\t\t...status,\n\t} satisfies WorkItemDomainActionStatus;\n\temitIntake(ctx, \"status\", statusFact);\n\temitIntakeAudit(ctx, state, \"work-item-domain-action-intake-status\", statusFact);\n}\n\nfunction emitIntakeAudit(\n\tctx: Ctx,\n\tstate: IntakeState,\n\tkind: string,\n\tstatus: WorkItemDomainActionStatus,\n): void {\n\tstate.auditSeq += 1;\n\temitIntake(ctx, \"audit\", auditRecord(kind, state.auditSeq, status));\n}\n\nfunction emitIntake<K extends IntakeFact[\"kind\"]>(\n\tctx: Ctx,\n\tkind: K,\n\tvalue: Extract<IntakeFact, { kind: K }>[\"value\"],\n): void {\n\tctx.down([[\"DATA\", { kind, value } as IntakeFact]]);\n}\n"],"mappings":"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","names":["sourceRefs","sourceRefs","dataIssue","uniqueSourceRefs","sourceRefs","ref","sourceRefs","dataIssue","uniqueSourceRefs","ref","dataIssue","ref","uniqueSourceRefs","dataIssue"]}