@askexenow/exe-os 0.9.383 → 0.9.384

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 (430) hide show
  1. package/delivery/catalog.json +1254 -0
  2. package/deploy/compose/generate-env.ts +65 -9
  3. package/deploy/compose/setup.sh +205 -7
  4. package/dist/.dist-verified.json +3 -3
  5. package/dist/{active-agent-LFY5P5EX.js → active-agent-F5V4E4UL.js} +4 -4
  6. package/dist/{active-agent-BV4OE3GI.js → active-agent-YTBB4ZQM.js} +4 -4
  7. package/dist/{agent-defs-generator-IC2DVSI4.js → agent-defs-generator-7TFISIJQ.js} +3 -3
  8. package/dist/{agent-loop-GSUZJZBJ.js → agent-loop-EZ7LDAGD.js} +1 -1
  9. package/dist/{agentic-ontology-V3PFEFVZ.js → agentic-ontology-XVTUVV7W.js} +1 -1
  10. package/dist/{artifact-backup-EXBY3YQS.js → artifact-backup-TF6YWQT2.js} +3 -3
  11. package/dist/{backfill-metadata-NTCC7EMS.js → backfill-metadata-J6MXIDCW.js} +8 -8
  12. package/dist/{backup-verify-D3RU5JXC.js → backup-verify-6DVBQMDP.js} +1 -1
  13. package/dist/{behavior-injection-GWRLUR34.js → behavior-injection-XDA7ZCYN.js} +14 -13
  14. package/dist/{behavior-promotion-YSEL7K5K.js → behavior-promotion-4VLQ7LXK.js} +13 -12
  15. package/dist/{behaviors-FHQKACTI.js → behaviors-SCCZP7RZ.js} +12 -11
  16. package/dist/bin/agentic-ontology-backfill.js +9 -9
  17. package/dist/bin/agentic-reflection-backfill.js +10 -10
  18. package/dist/bin/agentic-semantic-label.js +9 -9
  19. package/dist/bin/backfill-conversations.js +10 -9
  20. package/dist/bin/backfill-responses.js +10 -9
  21. package/dist/bin/backfill-vectors.js +11 -10
  22. package/dist/bin/bulk-sync-postgres.js +20 -19
  23. package/dist/bin/cc-doctor.js +11 -10
  24. package/dist/bin/cleanup-stale-review-tasks.js +21 -20
  25. package/dist/bin/cli.js +27 -22
  26. package/dist/bin/deferred-daemon-restart.js +105 -104
  27. package/dist/bin/exe-agent-config.js +3 -3
  28. package/dist/bin/exe-agent.js +9 -9
  29. package/dist/bin/exe-assign.js +12 -11
  30. package/dist/bin/exe-boot.js +42 -41
  31. package/dist/bin/exe-call.js +5 -5
  32. package/dist/bin/exe-cloud.js +21 -20
  33. package/dist/bin/exe-config-dump.js +3 -3
  34. package/dist/bin/exe-dispatch.js +22 -21
  35. package/dist/bin/exe-doctor.js +7 -7
  36. package/dist/bin/exe-export-behaviors.js +16 -15
  37. package/dist/bin/exe-forget.js +11 -11
  38. package/dist/bin/exe-gateway.js +9 -9
  39. package/dist/bin/exe-grant.js +6 -6
  40. package/dist/bin/exe-healthcheck.js +11 -10
  41. package/dist/bin/exe-heartbeat.js +33 -27
  42. package/dist/bin/exe-kill.js +27 -26
  43. package/dist/bin/exe-launch-agent.js +34 -33
  44. package/dist/bin/exe-mcp.js +5 -5
  45. package/dist/bin/exe-memory-reads.js +8 -8
  46. package/dist/bin/exe-new-employee.js +9 -9
  47. package/dist/bin/exe-os-mcp-proxy.js +5 -5
  48. package/dist/bin/exe-pending-messages.js +22 -21
  49. package/dist/bin/exe-pending-notifications.js +21 -20
  50. package/dist/bin/exe-pending-reviews.js +22 -21
  51. package/dist/bin/exe-preflight.js +1 -1
  52. package/dist/bin/exe-rename.js +5 -5
  53. package/dist/bin/exe-review.js +26 -25
  54. package/dist/bin/exe-search.js +10 -10
  55. package/dist/bin/exe-session-cleanup.js +27 -26
  56. package/dist/bin/exe-settings.js +20 -19
  57. package/dist/bin/exe-start-codex.js +23 -22
  58. package/dist/bin/exe-start-opencode.js +20 -19
  59. package/dist/bin/exe-status.js +23 -22
  60. package/dist/bin/exe-support.js +3 -3
  61. package/dist/bin/exe-team.js +5 -5
  62. package/dist/bin/exe-watchdog.js +1 -1
  63. package/dist/bin/git-sweep.js +22 -21
  64. package/dist/bin/graph-backfill.js +9 -9
  65. package/dist/bin/graph-export.js +9 -9
  66. package/dist/bin/hooks-cli.js +1 -1
  67. package/dist/bin/import-history.js +12 -12
  68. package/dist/bin/install.js +107 -106
  69. package/dist/bin/intercom-check.js +11 -7
  70. package/dist/bin/mcp-sessions.js +2 -2
  71. package/dist/bin/orchestration-metrics.js +5 -5
  72. package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
  73. package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
  74. package/dist/bin/reconcile-backlog.js +2 -2
  75. package/dist/bin/registry-proxy.js +1 -1
  76. package/dist/bin/repair-document-chunks.js +8 -8
  77. package/dist/bin/scan-tasks.js +22 -21
  78. package/dist/bin/setup.js +2 -2
  79. package/dist/bin/shard-migrate.js +9 -9
  80. package/dist/bin/stack-update.js +622 -30
  81. package/dist/bin/verify-stack.js +1 -1
  82. package/dist/bin/vps-health-gate.js +1 -1
  83. package/dist/{boot-generation-OKYUBE3G.js → boot-generation-Q7LGQ3AO.js} +4 -4
  84. package/dist/{boot-review-sections-KFHON3GW.js → boot-review-sections-G5774FR5.js} +20 -19
  85. package/dist/build-manifest.json +1104 -1084
  86. package/dist/{capability-cards-WQHJXAC3.js → capability-cards-I3RHCF4F.js} +3 -3
  87. package/dist/{capacity-monitor-N2NCT6UR.js → capacity-monitor-7I7GDONU.js} +22 -21
  88. package/dist/{catchup-brief-WDEELMAD.js → catchup-brief-3T5PARIR.js} +31 -28
  89. package/dist/{check-image-pullability-5LAYCKW3.js → check-image-pullability-2AIVB4BX.js} +32 -0
  90. package/dist/{chunk-5LRIZHMH.js → chunk-2FKU4ZEO.js} +30 -22
  91. package/dist/{chunk-AH4X72T6.js → chunk-2PZTMSMG.js} +5 -5
  92. package/dist/{chunk-GK6V6AZ3.js → chunk-3B6FLNLV.js} +1 -1
  93. package/dist/{chunk-NY6SBR4O.js → chunk-3FGBBJYM.js} +15 -3
  94. package/dist/{chunk-O5LDG2AV.js → chunk-3OX34OC3.js} +22 -14
  95. package/dist/{chunk-LPBWEQOY.js → chunk-3RGTLZNO.js} +12 -12
  96. package/dist/{chunk-AITTVLVQ.js → chunk-3SUPEE6H.js} +3 -3
  97. package/dist/{chunk-IPA6VOZE.js → chunk-46VSBDUW.js} +2 -2
  98. package/dist/{chunk-642NFHVO.js → chunk-4AAMFWJT.js} +2 -2
  99. package/dist/{chunk-AYOCLUGP.js → chunk-4AR5XKCH.js} +1 -1
  100. package/dist/{chunk-GLQEJOXE.js → chunk-5MVKTNZP.js} +57 -0
  101. package/dist/{chunk-CZKDWW76.js → chunk-5U2IJBFV.js} +197 -27
  102. package/dist/{chunk-NRHFYGQH.js → chunk-6BJCDWSM.js} +1 -1
  103. package/dist/{chunk-WVY5SSAG.js → chunk-6FIC57PH.js} +1 -1
  104. package/dist/{chunk-S6STQE5T.js → chunk-6YDY6ZTD.js} +3 -3
  105. package/dist/{chunk-FPAPXMJA.js → chunk-72V3S44T.js} +12 -9
  106. package/dist/{chunk-DV6W44ZY.js → chunk-7J2ZQ4XN.js} +1 -1
  107. package/dist/{chunk-EYZKJY7K.js → chunk-7UHZBVP3.js} +53 -40
  108. package/dist/{chunk-ZE2GXNVJ.js → chunk-AGC2V7JS.js} +25 -12
  109. package/dist/{chunk-NUAVPYBH.js → chunk-AHESD3KW.js} +1 -1
  110. package/dist/{chunk-2MA6TC4L.js → chunk-ALRHGEAJ.js} +1 -1
  111. package/dist/{chunk-V3F4FWDN.js → chunk-ANVHWV2X.js} +1 -1
  112. package/dist/{chunk-WSEI3KH4.js → chunk-APL7HUE3.js} +15 -12
  113. package/dist/{chunk-PWYSCKTX.js → chunk-AZSTIAVL.js} +137 -15
  114. package/dist/chunk-AZXMR25O.js +545 -0
  115. package/dist/{chunk-XK352OKY.js → chunk-B7AMNZTC.js} +2 -2
  116. package/dist/{chunk-5AVXGIMQ.js → chunk-BPVFZ6Q4.js} +2 -2
  117. package/dist/{chunk-XTQ7R2PA.js → chunk-BV2IET6B.js} +73 -17
  118. package/dist/{chunk-3W3PXRTN.js → chunk-CH7BUBP3.js} +7 -7
  119. package/dist/{chunk-KHJAE3DF.js → chunk-CHIUS5QB.js} +10 -10
  120. package/dist/{chunk-HBMATN75.js → chunk-CM7N5MBY.js} +5 -5
  121. package/dist/{chunk-ZGTA4TXQ.js → chunk-CYCIX7AW.js} +2 -2
  122. package/dist/{chunk-RLIZUOTN.js → chunk-D3LXVAIQ.js} +2 -2
  123. package/dist/{chunk-7M2HH4BN.js → chunk-DMUOTCDN.js} +1 -1
  124. package/dist/{chunk-W67YI7WP.js → chunk-DYVLEMKS.js} +1 -1
  125. package/dist/{chunk-4LYVULBC.js → chunk-E3ZM32LF.js} +8 -8
  126. package/dist/{chunk-RXA2LNTL.js → chunk-E7C2WNR5.js} +4 -4
  127. package/dist/{chunk-DCEHRV3W.js → chunk-EGOEB42T.js} +3 -3
  128. package/dist/{chunk-L2PBBNKH.js → chunk-EIOGV75A.js} +2 -2
  129. package/dist/{chunk-F5DBJXTB.js → chunk-ELCRJGCH.js} +2 -2
  130. package/dist/{chunk-RJXOPNXY.js → chunk-ELEGH4DX.js} +115 -13
  131. package/dist/{chunk-AB3WZ2LC.js → chunk-EOTZSAQL.js} +1 -1
  132. package/dist/{chunk-UW22NW2B.js → chunk-EUGEFBGV.js} +3 -3
  133. package/dist/{chunk-36PEAE2S.js → chunk-EYMFVITZ.js} +1 -1
  134. package/dist/{chunk-4KNZKUDK.js → chunk-F4BBMIPG.js} +1 -1
  135. package/dist/{chunk-MCFEV74P.js → chunk-FHIFTSPL.js} +1 -1
  136. package/dist/{chunk-ZU5RWVNU.js → chunk-FMIYFHLE.js} +2 -2
  137. package/dist/{chunk-VTN2S7NH.js → chunk-FVLNNNH6.js} +3 -3
  138. package/dist/{chunk-ZVPVLYBG.js → chunk-GL47M7NY.js} +27 -8
  139. package/dist/{chunk-USRMWZHH.js → chunk-GSLFH4AI.js} +24 -12
  140. package/dist/{chunk-ZYXFGAIV.js → chunk-HA63SH5W.js} +1 -1
  141. package/dist/{chunk-7I4PNLNR.js → chunk-HU3VD4MQ.js} +1 -1
  142. package/dist/{chunk-36Y3O44B.js → chunk-I5XIW2BP.js} +7 -7
  143. package/dist/{chunk-JGNEGWQD.js → chunk-IGJMS7C5.js} +2 -2
  144. package/dist/{chunk-ZJDTQFY6.js → chunk-JA3Y5TV6.js} +1 -1
  145. package/dist/{chunk-YSNN626O.js → chunk-JDDM6C57.js} +1 -1
  146. package/dist/{chunk-BZSV52YR.js → chunk-JFJP6ATJ.js} +1 -1
  147. package/dist/{chunk-3LKQDDJ3.js → chunk-JFTUAV4J.js} +1 -1
  148. package/dist/{chunk-YWHLC4VZ.js → chunk-JJTPPAZY.js} +2513 -373
  149. package/dist/{chunk-PYMLQINV.js → chunk-KILR4FBR.js} +4 -4
  150. package/dist/{chunk-ECQ6KVVW.js → chunk-KTKIFXIP.js} +1 -1
  151. package/dist/{chunk-W6BFHT5C.js → chunk-KXYKSLW4.js} +11 -11
  152. package/dist/{chunk-YVVD25YI.js → chunk-L3VUW5M4.js} +1 -1
  153. package/dist/{chunk-NDN3ZMCW.js → chunk-L63V25HS.js} +6 -5
  154. package/dist/{chunk-BZ3YF6MG.js → chunk-LFBLQE2P.js} +1 -1
  155. package/dist/{chunk-2NIURKEP.js → chunk-LKTN22L6.js} +58 -22
  156. package/dist/{chunk-6BBFHDY3.js → chunk-LR5O2XWZ.js} +5 -5
  157. package/dist/{chunk-3KPJ5URE.js → chunk-LSNBTGW4.js} +1 -1
  158. package/dist/{chunk-KHGFI43T.js → chunk-MB47DRF5.js} +2 -2
  159. package/dist/{chunk-T3KBSR4O.js → chunk-MC4IM2CC.js} +12 -9
  160. package/dist/{chunk-4JF42BVF.js → chunk-MFAOAIUE.js} +4 -1
  161. package/dist/{chunk-T7EM74XC.js → chunk-MKM6D7JM.js} +9 -6
  162. package/dist/{chunk-2XBBXQLT.js → chunk-MOANZQXF.js} +1 -1
  163. package/dist/{chunk-CCUUMZXU.js → chunk-MPZ2AVNS.js} +2 -2
  164. package/dist/{chunk-SVFKV7QN.js → chunk-MROSARM5.js} +1 -1
  165. package/dist/{chunk-WHQQT5XN.js → chunk-MUAWCFW6.js} +5 -1
  166. package/dist/{chunk-MKDZQ5ZA.js → chunk-NF5FOSLD.js} +1 -1
  167. package/dist/{chunk-BKUEPHLH.js → chunk-NKEFYE4R.js} +1 -1
  168. package/dist/{chunk-NKNAKGTM.js → chunk-NVFNADTX.js} +12 -8
  169. package/dist/{chunk-6MILT557.js → chunk-NYLJQ2M2.js} +4 -4
  170. package/dist/{chunk-RNECR5Z6.js → chunk-OBBO6EJR.js} +1 -1
  171. package/dist/{chunk-CMADI6WN.js → chunk-P2UY34XE.js} +5 -5
  172. package/dist/{chunk-UGV5PUQR.js → chunk-P3QQ52QK.js} +2 -2
  173. package/dist/{chunk-6H4SQGT4.js → chunk-P3UX5EH4.js} +4 -4
  174. package/dist/{chunk-DJFM6JCJ.js → chunk-P4PIZOL2.js} +3 -3
  175. package/dist/{chunk-SC2TRT6S.js → chunk-P4XLIPB7.js} +1 -1
  176. package/dist/{chunk-2TPBLZBO.js → chunk-PL4CFSQ7.js} +1 -1
  177. package/dist/{chunk-LLZNPOGB.js → chunk-PLII76NJ.js} +58 -0
  178. package/dist/{chunk-YFP7LPOG.js → chunk-PRDDPQLC.js} +4 -4
  179. package/dist/{chunk-BZ546I4Q.js → chunk-PUBA5B4M.js} +24 -0
  180. package/dist/{chunk-6ODN2IXS.js → chunk-PWC3C5ME.js} +4 -4
  181. package/dist/{chunk-Z5QBRLWR.js → chunk-QFAFKEB5.js} +4 -4
  182. package/dist/{chunk-CL4J4757.js → chunk-QH5ZQ5SJ.js} +26 -0
  183. package/dist/{chunk-XP6ZSSZ6.js → chunk-QNZ4562V.js} +1 -1
  184. package/dist/{chunk-QHMIXDIA.js → chunk-QPTSA4PP.js} +1 -1
  185. package/dist/{chunk-TNUTMT3J.js → chunk-R5E7WNAC.js} +3 -3
  186. package/dist/{chunk-5LZYZGRD.js → chunk-RB3J2WYQ.js} +1 -1
  187. package/dist/{chunk-HPJ5PHDG.js → chunk-RDWIKDMY.js} +2 -2
  188. package/dist/{chunk-TLXFEIBQ.js → chunk-RVO5O5SR.js} +6 -6
  189. package/dist/{chunk-EWGUFJ7F.js → chunk-RZN2LEAK.js} +3 -3
  190. package/dist/{chunk-Q5O2ER4U.js → chunk-S26CV7BE.js} +57 -13
  191. package/dist/{chunk-S5OL3HXO.js → chunk-SDYWZRPN.js} +1 -1
  192. package/dist/{chunk-BOQZXNAW.js → chunk-T5FEAQES.js} +1 -1
  193. package/dist/{chunk-XU57KFD6.js → chunk-T5SM4RXY.js} +5 -1
  194. package/dist/{chunk-S3XJ2C44.js → chunk-TKAU7IJ2.js} +1 -1
  195. package/dist/{chunk-DZ3VKZ3C.js → chunk-TKS5GMYA.js} +1 -1
  196. package/dist/{chunk-TTLPYAM7.js → chunk-TNS63ATU.js} +1 -1
  197. package/dist/{chunk-53YKDX7M.js → chunk-UOPCVFVR.js} +16 -16
  198. package/dist/{chunk-ZHWE25YW.js → chunk-UX2EO653.js} +1 -1
  199. package/dist/{chunk-ERF6YZQA.js → chunk-UXN4BICC.js} +1 -1
  200. package/dist/{chunk-ZTOBDVKB.js → chunk-VF2KRROX.js} +1 -1
  201. package/dist/{chunk-HU36JAK4.js → chunk-VF3BZOZK.js} +5 -2
  202. package/dist/{chunk-BEIYEBTU.js → chunk-VHHX4UCP.js} +1 -1
  203. package/dist/{chunk-S3G7LJDK.js → chunk-VJEJ7JNB.js} +1 -1
  204. package/dist/{chunk-KG3SL2VF.js → chunk-VLBHZ6TF.js} +2 -2
  205. package/dist/{chunk-AOFW3H6S.js → chunk-VOVFUKEB.js} +5 -5
  206. package/dist/{chunk-R3SPFIPE.js → chunk-VROK4X2L.js} +1 -1
  207. package/dist/{chunk-K4BA46H4.js → chunk-W3KPQE7H.js} +4 -4
  208. package/dist/{chunk-6PAFSV4N.js → chunk-W6BZ4UGA.js} +1 -1
  209. package/dist/{chunk-WY7K2GNY.js → chunk-XEBKIWI7.js} +8 -8
  210. package/dist/{chunk-R5PL432W.js → chunk-XSUALA32.js} +2 -2
  211. package/dist/{chunk-SQ7QYLO3.js → chunk-XUZK23V7.js} +11 -6
  212. package/dist/{chunk-ZXQ2SLCZ.js → chunk-YLB365YX.js} +148 -5
  213. package/dist/{chunk-GOOLWD2J.js → chunk-YLFCH3VA.js} +21 -13
  214. package/dist/{chunk-ETIVP2P6.js → chunk-YRQ26MNP.js} +4 -4
  215. package/dist/chunk-YRUZK2QA.js +35 -0
  216. package/dist/{chunk-RQBGLL3Z.js → chunk-ZAEUEDTN.js} +1 -1
  217. package/dist/{chunk-QZW4T3GM.js → chunk-ZBPZDADW.js} +313 -43
  218. package/dist/{chunk-ZLPS3GR7.js → chunk-ZJQ56DZZ.js} +42 -1
  219. package/dist/{chunk-7TDDSOJQ.js → chunk-ZOTTYCP5.js} +3 -3
  220. package/dist/{chunk-PJ2ZJUM2.js → chunk-ZPP63JSQ.js} +1 -1
  221. package/dist/{chunk-XD6D4RNQ.js → chunk-ZT4LFTUJ.js} +1 -1
  222. package/dist/{cleanup-graph-garbage-YZOQQLJI.js → cleanup-graph-garbage-VQAJ2RBT.js} +9 -9
  223. package/dist/{cloud-sync-command-L4P7TIIR.js → cloud-sync-command-J7NEFUY7.js} +2 -2
  224. package/dist/{cloud-sync-db-init-IR3S4ZYH.js → cloud-sync-db-init-KWEMNMGA.js} +1 -1
  225. package/dist/{cloud-sync-shutdown-K46O655Z.js → cloud-sync-shutdown-P63AUTUI.js} +3 -3
  226. package/dist/{co-activation-ZPW3K6F3.js → co-activation-7IHRPBZN.js} +3 -3
  227. package/dist/{co-occurrence-HD7N27HR.js → co-occurrence-R5AG4OAU.js} +7 -7
  228. package/dist/{code-context-index-SQQMEGNQ.js → code-context-index-WFLLZBVB.js} +3 -2
  229. package/dist/{code-context-watcher-SHRFZ3GC.js → code-context-watcher-3QAPHO7N.js} +3 -2
  230. package/dist/{consent-passphrase-BQUOHQGM.js → consent-passphrase-5ZBDJ5G7.js} +2 -2
  231. package/dist/{content-extractor-5FBHNJBI.js → content-extractor-ZLXC6GNR.js} +2 -2
  232. package/dist/{conversation-entity-extractor-NDZS5U3J.js → conversation-entity-extractor-7FRKLLBD.js} +4 -4
  233. package/dist/{crdt-sync-BXDOLDB3.js → crdt-sync-IFRZOEIS.js} +4 -4
  234. package/dist/{crm-webhook-LV3TX3LT.js → crm-webhook-L2S63ASV.js} +2 -2
  235. package/dist/{cto-delegation-gate-DDQRFK4C.js → cto-delegation-gate-3WU7OHX7.js} +20 -19
  236. package/dist/{daemon-orchestration-DKGZA6VZ.js → daemon-orchestration-3VQYKLOR.js} +25 -24
  237. package/dist/{daemon-ready-R6M5FCNV.js → daemon-ready-VZ6ZHA2C.js} +1 -1
  238. package/dist/{dispatch-ack-X4DXUSKP.js → dispatch-ack-UYEAKON5.js} +2 -1
  239. package/dist/{doc-graph-extractor-3QULZX7K.js → doc-graph-extractor-YIR5E7OF.js} +7 -7
  240. package/dist/{documents-PXMQ655U.js → documents-QEHPTYIY.js} +12 -11
  241. package/dist/{dreaming-YDN6SB5W.js → dreaming-LNFE7DTN.js} +26 -25
  242. package/dist/{employee-boot-brief-6A4GLZLX.js → employee-boot-brief-ZTXDYNWM.js} +31 -30
  243. package/dist/{entity-boost-LY5IKPD5.js → entity-boost-R5N6JWXD.js} +1 -1
  244. package/dist/{exe-drift-4GUGVTPD.js → exe-drift-WYSJVZFO.js} +4 -4
  245. package/dist/{exe-export-LNYMMWJ6.js → exe-export-GOLNAEAV.js} +13 -12
  246. package/dist/{exe-import-FAZDYRI2.js → exe-import-U4BSI6OH.js} +13 -12
  247. package/dist/{exe-key-QRLCCKNV.js → exe-key-V42G3NGO.js} +105 -104
  248. package/dist/{exe-org-RQFTK3C2.js → exe-org-U4GLQ6OP.js} +24 -24
  249. package/dist/{exe-snapshot-PAHOT277.js → exe-snapshot-U7ONBYNY.js} +30 -29
  250. package/dist/{fast-db-init-UO7KLV35.js → fast-db-init-W3NGKAEU.js} +1 -1
  251. package/dist/{founder-context-OEB2OB3U.js → founder-context-ZSIBRVDM.js} +2 -2
  252. package/dist/{founder-monitor-envelope-73NOAFUE.js → founder-monitor-envelope-L3IWZLFY.js} +4 -4
  253. package/dist/gateway/index.js +15 -14
  254. package/dist/{gateway-client-YZ62NOC3.js → gateway-client-DJFCVIPT.js} +1 -1
  255. package/dist/{git-staleness-XZ4YA242.js → git-staleness-OF24QXFZ.js} +3 -3
  256. package/dist/{global-procedures-KUXA6TJS.js → global-procedures-WSIOWO43.js} +4 -4
  257. package/dist/{graph-auto-extract-B2ICIL4E.js → graph-auto-extract-IEVVN3L3.js} +7 -7
  258. package/dist/{graph-query-33NOX4G4.js → graph-query-JDZWAVCU.js} +1 -1
  259. package/dist/{graph-rag-YPCBTGO7.js → graph-rag-BKAD2XQA.js} +4 -4
  260. package/dist/{hook-integrity-OKADQMF3.js → hook-integrity-TPWDGX2M.js} +1 -1
  261. package/dist/{hook-prefetch-CULOQNP7.js → hook-prefetch-FD6VGJJA.js} +21 -20
  262. package/dist/hooks/bug-report-worker.js +25 -24
  263. package/dist/hooks/codex-stop-task-finalizer.js +27 -26
  264. package/dist/hooks/commit-complete.js +32 -28
  265. package/dist/hooks/error-recall.js +12 -12
  266. package/dist/hooks/exe-heartbeat-hook.js +5 -5
  267. package/dist/hooks/ingest-worker.js +12 -11
  268. package/dist/hooks/ingest.js +14 -14
  269. package/dist/hooks/instructions-loaded.js +7 -7
  270. package/dist/hooks/manifest.json +20 -20
  271. package/dist/hooks/notification.js +6 -6
  272. package/dist/hooks/post-compact.js +5 -5
  273. package/dist/hooks/post-tool-combined.js +15 -15
  274. package/dist/hooks/pre-compact.js +24 -23
  275. package/dist/hooks/pre-tool-use.js +2 -2
  276. package/dist/hooks/prompt-submit.js +43 -42
  277. package/dist/hooks/session-end.js +29 -28
  278. package/dist/hooks/session-start.js +22 -19
  279. package/dist/hooks/stop.js +30 -29
  280. package/dist/hooks/subagent-stop.js +26 -25
  281. package/dist/hooks/summary-worker.js +29 -28
  282. package/dist/index.js +34 -33
  283. package/dist/{installer-YDH5HHYZ.js → installer-NMOBSEZ2.js} +7 -7
  284. package/dist/{installer-DLXN6MIE.js → installer-OTI5SA43.js} +7 -7
  285. package/dist/{installer-YFNGAHNG.js → installer-SRJGE4GU.js} +7 -7
  286. package/dist/{intercom-queue-2O5ANKO2.js → intercom-queue-4FFXCBHO.js} +20 -19
  287. package/dist/lib/cloud-sync.js +20 -19
  288. package/dist/lib/consolidation.js +10 -10
  289. package/dist/lib/crypto.js +3 -3
  290. package/dist/lib/database.js +3 -3
  291. package/dist/lib/db-backup.js +3 -1
  292. package/dist/lib/db-daemon-client.js +4 -3
  293. package/dist/lib/db-write-worker.js +4 -4
  294. package/dist/lib/db.js +3 -3
  295. package/dist/lib/delivery-catalog.js +431 -0
  296. package/dist/lib/delivery-schemas.js +31 -503
  297. package/dist/lib/device-registry.js +1 -1
  298. package/dist/lib/embedder.js +3 -2
  299. package/dist/lib/employee-templates.js +5 -5
  300. package/dist/lib/employees.js +3 -3
  301. package/dist/lib/exe-daemon-client.js +2 -1
  302. package/dist/lib/exe-daemon.js +162 -97
  303. package/dist/lib/hybrid-search.js +10 -10
  304. package/dist/lib/identity.js +3 -3
  305. package/dist/lib/keychain.js +13 -1
  306. package/dist/lib/license.js +2 -2
  307. package/dist/lib/messaging.js +31 -22
  308. package/dist/lib/post-tool-memory.js +7 -7
  309. package/dist/lib/registry-proxy.js +1 -1
  310. package/dist/lib/reminders.js +4 -4
  311. package/dist/lib/schedules.js +9 -9
  312. package/dist/lib/session-registry.js +5 -5
  313. package/dist/lib/skill-learning.js +13 -12
  314. package/dist/lib/status-brief.js +2 -1
  315. package/dist/lib/store.js +8 -8
  316. package/dist/lib/task-router.js +4 -4
  317. package/dist/lib/tasks.js +22 -21
  318. package/dist/lib/tmux-routing.js +20 -19
  319. package/dist/lib/tmux-status.js +3 -1
  320. package/dist/lib/token-spend.js +4 -4
  321. package/dist/lib/ws-client.js +1 -1
  322. package/dist/{license-gate-2MXPY5DA.js → license-gate-R4JWTWM4.js} +3 -3
  323. package/dist/{license-recheck-7LRDLWFK.js → license-recheck-3MBJ4IJX.js} +1 -1
  324. package/dist/{license-sync-LQ4MVJCQ.js → license-sync-BVSG3WMW.js} +2 -2
  325. package/dist/{local-secret-inventory-3Z36XK6Q.js → local-secret-inventory-JWNBHZZ4.js} +6 -4
  326. package/dist/mailbox-inbox-MTAT4MXX.js +13 -0
  327. package/dist/{mailbox-outbox-DNDDP2HW.js → mailbox-outbox-OY4IU6S4.js} +2 -1
  328. package/dist/mcp/register-tools.js +104 -103
  329. package/dist/mcp/server.js +106 -105
  330. package/dist/mcp/tools/complete-reminder.js +5 -5
  331. package/dist/mcp/tools/create-reminder.js +5 -5
  332. package/dist/mcp/tools/create-task.js +26 -23
  333. package/dist/mcp/tools/deactivate-behavior.js +14 -13
  334. package/dist/mcp/tools/list-reminders.js +5 -5
  335. package/dist/mcp/tools/list-tasks.js +24 -23
  336. package/dist/mcp/tools/send-message.js +23 -22
  337. package/dist/mcp/tools/update-task.js +23 -22
  338. package/dist/{mcp-health-B5EKRCZG.js → mcp-health-4ZHU67LM.js} +9 -3
  339. package/dist/{mcp-http-config-E63VUDME.js → mcp-http-config-VUMSFWFH.js} +5 -5
  340. package/dist/{mcp-session-identity-TFNTAJR7.js → mcp-session-identity-DZHWEJRV.js} +20 -19
  341. package/dist/{memory-cards-T7EX4BGP.js → memory-cards-JVXTMSAT.js} +8 -8
  342. package/dist/{memory-graph-extractor-5BU6M7M2.js → memory-graph-extractor-PPBJMYFJ.js} +8 -8
  343. package/dist/{memory-poisoning-defense-37DM3TAR.js → memory-poisoning-defense-K5Q74XQ4.js} +3 -3
  344. package/dist/{memory-pressure-watchdog-RQV6HOQ4.js → memory-pressure-watchdog-YMJH5CSA.js} +21 -20
  345. package/dist/{memory-queue-client-UKBDOEIU.js → memory-queue-client-4G7HVRSX.js} +3 -2
  346. package/dist/{memory-reflection-PBIAI2RZ.js → memory-reflection-7BZWIHRE.js} +8 -8
  347. package/dist/{monitor-grants-JMKMPLSU.js → monitor-grants-Q7X3MYQP.js} +3 -3
  348. package/dist/{monitor-identity-ENPAVY4O.js → monitor-identity-ZQB4IXEE.js} +2 -2
  349. package/dist/{notification-ledger-X4QCCYEB.js → notification-ledger-XRAXL5OI.js} +24 -21
  350. package/dist/{notifications-CFWVEJ3C.js → notifications-JE3PX55X.js} +20 -19
  351. package/dist/{orchestration-events-Z3AIQATS.js → orchestration-events-JCQ5F5IJ.js} +4 -4
  352. package/dist/{orchestrator-UERD2XBD.js → orchestrator-X65INDTR.js} +22 -21
  353. package/dist/{org-brief-session-KCSOXIO6.js → org-brief-session-3PQ22UIX.js} +16 -15
  354. package/dist/{org-consent-policy-SHTWNGJ7.js → org-consent-policy-VGELJ7K7.js} +7 -6
  355. package/dist/{org-join-6DMHADPH.js → org-join-6TO5ZYUZ.js} +9 -9
  356. package/dist/{org-key-admin-BE5V64ES.js → org-key-admin-XHYVRRAZ.js} +9 -9
  357. package/dist/{org-key-pin-GZ4UH5VE.js → org-key-pin-TTTYGTQL.js} +3 -3
  358. package/dist/{org-membership-BNRVQVP7.js → org-membership-Y7T2BS57.js} +4 -4
  359. package/dist/{org-partner-config-UNXA6DXG.js → org-partner-config-OP4NEUNF.js} +7 -7
  360. package/dist/{org-partner-runtime-JBW5FWJG.js → org-partner-runtime-YNVUNT2R.js} +17 -16
  361. package/dist/{org-row-visibility-YDH3H5HS.js → org-row-visibility-JBBXNYXD.js} +1 -1
  362. package/dist/{pipeline-router-W2NECWQD.js → pipeline-router-EIBB7QNG.js} +4 -4
  363. package/dist/{plan-limits-Y74NOVVZ.js → plan-limits-MEWXYLEN.js} +6 -6
  364. package/dist/{pre-tool-use-impl-WNJJTS7I.js → pre-tool-use-impl-C6KJY22W.js} +35 -34
  365. package/dist/{project-name-RJDSE5O6.js → project-name-UYORSNGE.js} +4 -4
  366. package/dist/{projection-worker-6RGZZLY3.js → projection-worker-WYFDWS57.js} +2 -2
  367. package/dist/{prospective-memory-LTCFFWNL.js → prospective-memory-E6XBQFJA.js} +3 -3
  368. package/dist/{push-notifications-OSA4WUZF.js → push-notifications-M7YU63FY.js} +21 -20
  369. package/dist/{reproject-worktree-memories-3FEBUMTB.js → reproject-worktree-memories-B5XMGJSD.js} +20 -19
  370. package/dist/{reranker-AF7NH7EZ.js → reranker-SRA4BR7N.js} +1 -1
  371. package/dist/{retrieval-health-VKRILNSN.js → retrieval-health-P2JPZUPV.js} +1 -1
  372. package/dist/{review-polling-TFLN4T7C.js → review-polling-KQPN7IQE.js} +21 -20
  373. package/dist/runtime/index.js +25 -24
  374. package/dist/{session-events-SEVCMVVC.js → session-events-6LDDKKY3.js} +21 -20
  375. package/dist/{session-kill-telemetry-XSZB3KWR.js → session-kill-telemetry-5DSRGWCL.js} +21 -20
  376. package/dist/{session-scope-4UGYWAFG.js → session-scope-XG5R3P3D.js} +20 -19
  377. package/dist/{setup-wizard-5N5SZHCB.js → setup-wizard-7QFLZIKT.js} +2 -2
  378. package/dist/{shard-manager-UKWAOC2Y.js → shard-manager-HHHHV2KZ.js} +1 -1
  379. package/dist/{skill-refinement-26YAEXKO.js → skill-refinement-I5RMAHSC.js} +4 -4
  380. package/dist/{stack-generate-manifest-C77FJO5G.js → stack-generate-manifest-AKMZ3AUX.js} +6 -5
  381. package/dist/stack-init-5VKL5PL5.js +136 -0
  382. package/dist/{stack-promote-PV43IV5C.js → stack-promote-34CE2HHF.js} +5 -4
  383. package/dist/{stack-release-43QHVZ3L.js → stack-release-5PGWV5D4.js} +6 -5
  384. package/dist/{stack-update-6BHMJEK4.js → stack-update-ZQQ5YYPJ.js} +18 -3
  385. package/dist/{steward-gate-C6CVSMT7.js → steward-gate-AQJ6KT2C.js} +4 -4
  386. package/dist/{subagent-brief-injection-RUU3DVUH.js → subagent-brief-injection-3GU7YAWY.js} +33 -32
  387. package/dist/{support-inbox-D2P4JESB.js → support-inbox-NY5TB3FN.js} +9 -9
  388. package/dist/{support-outbox-7QGJK3LD.js → support-outbox-KNI3FR3G.js} +3 -2
  389. package/dist/{task-enforcement-MI5NESRP.js → task-enforcement-CAA6D2MH.js} +21 -20
  390. package/dist/{task-request-inbox-ZEFX5V2F.js → task-request-inbox-QBZVU66E.js} +9 -6
  391. package/dist/{task-scope-TTMFQBED.js → task-scope-NHXB4ZRN.js} +22 -19
  392. package/dist/{tasks-crud-3BGB5I55.js → tasks-crud-JHSWL5NM.js} +20 -19
  393. package/dist/{tasks-notify-XMBQWAOM.js → tasks-notify-7PBE4U7T.js} +21 -20
  394. package/dist/{tasks-review-7B2YNLOB.js → tasks-review-PPPVEE62.js} +20 -19
  395. package/dist/{telemetry-upload-M37GZK5Y.js → telemetry-upload-YU2VRNHX.js} +8 -8
  396. package/dist/{token-budget-CQATVFOK.js → token-budget-QCMWKG3K.js} +4 -4
  397. package/dist/{tool-capability-index-RGCEDV44.js → tool-capability-index-7AWQAJRP.js} +1 -1
  398. package/dist/{tool-gates-VXITVRFQ.js → tool-gates-5Q3RSQEG.js} +1 -1
  399. package/dist/{tool-gates-JWVSAYTW.js → tool-gates-QD26D2NE.js} +1 -1
  400. package/dist/{tool-telemetry-4JZ7FOJB.js → tool-telemetry-LTOIC64I.js} +1 -1
  401. package/dist/tui/App.js +30 -29
  402. package/dist/{tui-data-WYTAUJGH.js → tui-data-NDBXD6U7.js} +24 -23
  403. package/dist/{update-support-677WC3GL.js → update-support-BMJM4NG7.js} +17 -16
  404. package/dist/{whatsapp-4BSW74A2.js → whatsapp-QQLDAHUX.js} +2 -2
  405. package/dist/{wiki-acl-OGMGHBOL.js → wiki-acl-W6WDCVCP.js} +1 -1
  406. package/dist/{work-claims-5BS242P4.js → work-claims-6DM32MGO.js} +4 -4
  407. package/dist/{work-state-heartbeat-5ZA3IO24.js → work-state-heartbeat-HG7D4AWJ.js} +1 -1
  408. package/dist/{workflow-engine-OBEVRGMJ.js → workflow-engine-ZWC6CCXE.js} +2 -2
  409. package/dist/{worktree-XC4RBKKR.js → worktree-EMQCPGFE.js} +5 -5
  410. package/dist/{worktree-sweep-IXU4LYC5.js → worktree-sweep-XVUJZBXV.js} +6 -6
  411. package/package.json +13 -6
  412. package/release-notes.json +37 -41
  413. package/dist/mailbox-inbox-XE72D3AX.js +0 -10
  414. /package/dist/{chunk-AD3BEMDA.js → chunk-2KY7WZZF.js} +0 -0
  415. /package/dist/{chunk-VAXC5I2H.js → chunk-2Q2CD6CD.js} +0 -0
  416. /package/dist/{chunk-GEEWKHA4.js → chunk-AJK2PVQW.js} +0 -0
  417. /package/dist/{chunk-XTREZV4R.js → chunk-AWWDKF22.js} +0 -0
  418. /package/dist/{chunk-3SWW7CHT.js → chunk-DN3ZR3UE.js} +0 -0
  419. /package/dist/{chunk-4WU2UNXL.js → chunk-DZN7SDY2.js} +0 -0
  420. /package/dist/{chunk-TBPJ2GNW.js → chunk-GIRD7O5X.js} +0 -0
  421. /package/dist/{chunk-7C33VMAN.js → chunk-JRIH6I7D.js} +0 -0
  422. /package/dist/{chunk-FSI7PM76.js → chunk-M4XY4JRK.js} +0 -0
  423. /package/dist/{chunk-VK3MMYBD.js → chunk-P2VVMGMI.js} +0 -0
  424. /package/dist/{chunk-OBFAJFYQ.js → chunk-Q46NYJ77.js} +0 -0
  425. /package/dist/{chunk-Q7ESNZFY.js → chunk-U2D6PJ5T.js} +0 -0
  426. /package/dist/{chunk-VIDAIUVD.js → chunk-XDVOGDBC.js} +0 -0
  427. /package/dist/{core-memory-E2PKUID3.js → core-memory-O6D5UC3T.js} +0 -0
  428. /package/dist/{memory-isolation-PUONYUJ4.js → memory-isolation-EBFFC6HF.js} +0 -0
  429. /package/dist/{oauth-server-6LCX2VHS.js → oauth-server-ZKBUHDFI.js} +0 -0
  430. /package/dist/{project-boot-AFWDFRTX.js → project-boot-VEYFCCSL.js} +0 -0
@@ -0,0 +1,1254 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "contract": "ARC-1",
4
+ "note": "THE canonical inventory of every first-party source repository and artifact. Master plan exe/output/cicd-master-plan-2026-09-08.md section 6.1. src/lib/delivery-catalog.ts derives the three legacy hand-maintained lists from this file; scripts/check-delivery-catalog.mjs fails when they disagree in a way not recorded under legacyDivergences. This file carries NO timestamps: an unchanged inventory must hash identically so a no-op reconciliation cannot mint a new composition.",
5
+ "registryAliases": [
6
+ {
7
+ "canonical": "ghcr.io/askexe/exe-os",
8
+ "alias": "ghcr.io/askexe/exed",
9
+ "role": "commit-tag",
10
+ "reason": "release-stack-image.yml pushes the VERSION tag to ghcr.io/askexe/exe-os and the commit-addressed sha-<commit> tag to ghcr.io/askexe/exed from the same build. Master plan sequence 2 requires this be an explicit catalog mapping, not an implicit commit-tag lookup that silently resolves nothing."
11
+ },
12
+ {
13
+ "canonical": "ghcr.io/askexe/exe-os",
14
+ "alias": "update.askexe.com/askexe/exe-os",
15
+ "role": "pull-through",
16
+ "reason": "The customer stack pulls through update.askexe.com. A digest is registry-independent, so the bytes are identical; only the source registry carries the tags and labels that prove provenance."
17
+ }
18
+ ],
19
+ "repositories": [
20
+ {
21
+ "id": 1181656281,
22
+ "name": "AskExe/exe-os",
23
+ "defaultBranch": "main",
24
+ "releaseAdapter": "container",
25
+ "ownerRole": "cto",
26
+ "compatibilityGroup": "stack-0.9",
27
+ "deployable": true,
28
+ "requiredSuites": [
29
+ "ci",
30
+ "typecheck",
31
+ "unit",
32
+ "image-identity",
33
+ "scan"
34
+ ],
35
+ "workflows": [
36
+ {
37
+ "path": ".github/workflows/release-stack-image.yml",
38
+ "workflowId": 274190265,
39
+ "name": "Release stack image",
40
+ "state": "active",
41
+ "purpose": "release"
42
+ },
43
+ {
44
+ "path": ".github/workflows/publish.yml",
45
+ "name": "Publish to npm",
46
+ "state": "active",
47
+ "purpose": "release"
48
+ },
49
+ {
50
+ "path": ".github/workflows/release-dashboard-image.yml",
51
+ "workflowId": 338670900,
52
+ "name": "Release dashboard image",
53
+ "state": "active",
54
+ "purpose": "release"
55
+ },
56
+ {
57
+ "path": ".github/workflows/release-service.yml",
58
+ "workflowId": 338790318,
59
+ "name": "Shared release contract (reusable)",
60
+ "state": "active",
61
+ "purpose": "reusable-lane"
62
+ }
63
+ ],
64
+ "note": "Publishes FOUR distinct release artifacts through THREE different workflows. The legacy lists record one workflow for the whole repository, which is why the npm tarball and the dashboard image have no traceable producer in any of them."
65
+ },
66
+ {
67
+ "id": 1218739164,
68
+ "name": "AskExe/exe-gateway",
69
+ "defaultBranch": "main",
70
+ "releaseAdapter": "container",
71
+ "ownerRole": "cto",
72
+ "compatibilityGroup": "stack-0.9",
73
+ "deployable": true,
74
+ "requiredSuites": [
75
+ "ci",
76
+ "image-identity",
77
+ "health-probe",
78
+ "scan"
79
+ ],
80
+ "workflows": [
81
+ {
82
+ "path": ".github/workflows/release-image.yml",
83
+ "workflowId": 274020481,
84
+ "name": "Release image",
85
+ "state": "disabled_manually",
86
+ "purpose": "release"
87
+ }
88
+ ],
89
+ "note": "ARC-1 pilot (plan sequence 1). Producer is named 'Release image', not 'Release stack image' like its siblings — a name pattern would not match it. Its live tags are calendar-stamped (v2026.08.07-<sha>-stamped) and cannot be ordered against askexe-vX.Y.Z; they map to a legacy epoch."
90
+ },
91
+ {
92
+ "id": 1210246600,
93
+ "name": "AskExe/exe-crm",
94
+ "defaultBranch": "main",
95
+ "releaseAdapter": "container",
96
+ "ownerRole": "cto",
97
+ "compatibilityGroup": "stack-0.9",
98
+ "deployable": true,
99
+ "requiredSuites": [
100
+ "ci",
101
+ "image-identity",
102
+ "health-probe",
103
+ "scan"
104
+ ],
105
+ "workflows": [
106
+ {
107
+ "path": ".github/workflows/release-stack-image.yml",
108
+ "workflowId": 274190278,
109
+ "name": "Release stack image",
110
+ "state": "active",
111
+ "purpose": "release"
112
+ }
113
+ ],
114
+ "note": "PROVEN UNTRUSTWORTHY PROVENANCE: image tag v0.9.54 was built from a different commit than git tag v0.9.54. No existing tag may be reused when this repo adopts ARC-1."
115
+ },
116
+ {
117
+ "id": 1257169247,
118
+ "name": "AskExe/exe-erp",
119
+ "defaultBranch": "main",
120
+ "releaseAdapter": "container",
121
+ "ownerRole": "cto",
122
+ "compatibilityGroup": "stack-0.9",
123
+ "deployable": true,
124
+ "requiredSuites": [
125
+ "ci",
126
+ "image-identity",
127
+ "health-probe",
128
+ "scan",
129
+ "migration-safety"
130
+ ],
131
+ "workflows": [
132
+ {
133
+ "path": ".github/workflows/release-stack-image.yml",
134
+ "workflowId": 290691457,
135
+ "name": "Release stack image",
136
+ "state": "active",
137
+ "purpose": "release"
138
+ }
139
+ ],
140
+ "note": "Native amd64 only (plan sequence 7). One image runs four roles; irreversible migrations must never trigger generic auto-rollback."
141
+ },
142
+ {
143
+ "id": 1204431392,
144
+ "name": "AskExe/exe-wiki",
145
+ "defaultBranch": "master",
146
+ "releaseAdapter": "container",
147
+ "ownerRole": "cto",
148
+ "compatibilityGroup": "stack-0.9",
149
+ "deployable": true,
150
+ "requiredSuites": [
151
+ "ci",
152
+ "image-identity",
153
+ "health-probe",
154
+ "scan"
155
+ ],
156
+ "workflows": [
157
+ {
158
+ "path": ".github/workflows/release-stack-image.yml",
159
+ "workflowId": 274190292,
160
+ "name": "Release stack image",
161
+ "state": "active",
162
+ "purpose": "release"
163
+ }
164
+ ],
165
+ "note": "DEFAULT BRANCH IS master, verified against the GitHub API, not main. An Outline fork carrying inherited upstream tags that must never enter ARC-1 selection."
166
+ },
167
+ {
168
+ "id": 1233587946,
169
+ "name": "AskExe/exe-monitor",
170
+ "defaultBranch": "main",
171
+ "releaseAdapter": "container",
172
+ "ownerRole": "cto",
173
+ "compatibilityGroup": "stack-0.9",
174
+ "deployable": true,
175
+ "requiredSuites": [
176
+ "ci",
177
+ "image-identity",
178
+ "scan"
179
+ ],
180
+ "workflows": [
181
+ {
182
+ "path": ".github/workflows/release-stack-images.yml",
183
+ "workflowId": 274190320,
184
+ "name": "Release stack images",
185
+ "state": "disabled_manually",
186
+ "purpose": "release"
187
+ }
188
+ ],
189
+ "note": "Filename is release-stack-imageS.yml (plural) and the workflow is DISABLED — verified via the GitHub API. One workflow publishes both the hub and the agent image; one failed artifact blocks the release of both."
190
+ },
191
+ {
192
+ "id": 1240250368,
193
+ "name": "AskExe/exe-build",
194
+ "defaultBranch": "main",
195
+ "releaseAdapter": "binary",
196
+ "ownerRole": "cto",
197
+ "compatibilityGroup": "control-plane",
198
+ "deployable": true,
199
+ "requiredSuites": [
200
+ "ci",
201
+ "checksum",
202
+ "platform-matrix"
203
+ ],
204
+ "workflows": [
205
+ {
206
+ "path": ".github/workflows/release.yml",
207
+ "workflowId": 277639479,
208
+ "name": "Release",
209
+ "state": "active",
210
+ "purpose": "release"
211
+ },
212
+ {
213
+ "path": ".github/workflows/docker.yml",
214
+ "workflowId": 290422039,
215
+ "name": "Docker Build",
216
+ "state": "active",
217
+ "purpose": "release"
218
+ }
219
+ ],
220
+ "note": "Removed from the customer stack; runs on askexe-control-plane. Ships six binary targets plus an npm package and an image."
221
+ },
222
+ {
223
+ "id": 1273247286,
224
+ "name": "AskExe/exe-auth",
225
+ "defaultBranch": "main",
226
+ "releaseAdapter": "container",
227
+ "ownerRole": "cto",
228
+ "compatibilityGroup": "stack-0.9",
229
+ "deployable": true,
230
+ "requiredSuites": [
231
+ "ci",
232
+ "image-identity",
233
+ "health-probe",
234
+ "scan",
235
+ "sso-contract"
236
+ ],
237
+ "workflows": [
238
+ {
239
+ "path": ".github/workflows/ci.yml",
240
+ "workflowId": 298190652,
241
+ "name": "CI",
242
+ "state": "active",
243
+ "purpose": "release"
244
+ }
245
+ ],
246
+ "note": "Has NO dedicated release workflow — it publishes from ci.yml on a push:tags trigger. Verified via the GitHub API. Publishes ONLY to update.askexe.com; it is not mirrored to GHCR, so provenance is read from the one registry the artifact exists in."
247
+ },
248
+ {
249
+ "id": 1340595948,
250
+ "name": "AskExe/exe-dashboard",
251
+ "defaultBranch": "main",
252
+ "releaseAdapter": "internal",
253
+ "ownerRole": "cto",
254
+ "compatibilityGroup": "none",
255
+ "deployable": false,
256
+ "nonDeployableReason": "Extraction from exe-os dashboard-page/ is INCOMPLETE: this repository has ZERO Actions workflows (verified via the GitHub API), so it publishes nothing and cannot. The single active source of the dashboard image is AskExe/exe-os via .github/workflows/release-dashboard-image.yml. Registered explicitly, per plan sequence 8 and 11, so that 'both repos might publish the same package' is answered on the record rather than by silence. Flip this entry to a container adapter in the same PR that moves the caller workflow — never before, and never leaving both wired.",
257
+ "requiredSuites": [
258
+ "ci"
259
+ ],
260
+ "workflows": []
261
+ },
262
+ {
263
+ "id": 1259904143,
264
+ "name": "AskExe/exe-chat",
265
+ "defaultBranch": "main",
266
+ "releaseAdapter": "desktop",
267
+ "ownerRole": "cto",
268
+ "compatibilityGroup": "standalone",
269
+ "deployable": true,
270
+ "requiredSuites": [
271
+ "ci",
272
+ "signing",
273
+ "updater-manifest"
274
+ ],
275
+ "workflows": [
276
+ {
277
+ "path": ".github/workflows/tauri-release.yml",
278
+ "workflowId": 290180062,
279
+ "name": "Tauri Release",
280
+ "state": "disabled_manually",
281
+ "purpose": "release"
282
+ },
283
+ {
284
+ "path": ".github/workflows/release-readiness.yml",
285
+ "workflowId": 333252217,
286
+ "name": "Release Readiness",
287
+ "state": "disabled_manually",
288
+ "purpose": "gate"
289
+ }
290
+ ],
291
+ "note": "Both release lanes are DISABLED. macOS signing/notarization credentials belong to a separate trusted packaging service, distinct from the stack signing key."
292
+ },
293
+ {
294
+ "id": 1134969150,
295
+ "name": "AskExe/exe-create",
296
+ "defaultBranch": "main",
297
+ "releaseAdapter": "internal",
298
+ "ownerRole": "cto",
299
+ "compatibilityGroup": "none",
300
+ "deployable": false,
301
+ "nonDeployableReason": "No distributable exists and none is expected today: the repository has only ci.yml (verified via the GitHub API). Registered explicitly rather than omitted, per plan sequence 11 — silent omission is the defect this catalog removes. CI remains enforced. Adding a real customer artifact requires adding the appropriate adapter here in the same change.",
302
+ "requiredSuites": [
303
+ "ci"
304
+ ],
305
+ "workflows": [
306
+ {
307
+ "path": ".github/workflows/ci.yml",
308
+ "workflowId": 229613863,
309
+ "name": "CI",
310
+ "state": "active",
311
+ "purpose": "ci"
312
+ }
313
+ ]
314
+ }
315
+ ],
316
+ "artifacts": [
317
+ {
318
+ "componentId": "exe-os-npm",
319
+ "repository": "AskExe/exe-os",
320
+ "type": "npm-package",
321
+ "origin": "first-party",
322
+ "packageName": "@askexenow/exe-os",
323
+ "registry": "https://registry.npmjs.org",
324
+ "releaseWorkflow": ".github/workflows/publish.yml",
325
+ "environments": [
326
+ "customer-cli"
327
+ ],
328
+ "platforms": [],
329
+ "requiredSuites": [
330
+ "ci",
331
+ "typecheck",
332
+ "unit"
333
+ ],
334
+ "healthProbe": {
335
+ "type": "cli-version",
336
+ "command": "exe-os --version --json"
337
+ },
338
+ "legacy": {
339
+ "stackServiceKey": null,
340
+ "stackReleaseServiceKey": null,
341
+ "contractServiceId": null,
342
+ "manifestService": null
343
+ },
344
+ "note": "The npm tarball is a first-class release artifact and appears in NONE of the three legacy lists. Its producer is publish.yml, not release-stack-image.yml — no legacy list records that. Per plan section 6.3 the stable dist-tag moves only after the corresponding stable promotion succeeds."
345
+ },
346
+ {
347
+ "componentId": "exe-os-core-image",
348
+ "repository": "AskExe/exe-os",
349
+ "type": "oci-image",
350
+ "origin": "first-party",
351
+ "publishRepository": "ghcr.io/askexe/exe-os",
352
+ "commitRepository": "ghcr.io/askexe/exed",
353
+ "pullRepository": "update.askexe.com/askexe/exe-os",
354
+ "releaseWorkflow": ".github/workflows/release-stack-image.yml",
355
+ "platforms": [
356
+ "linux/amd64"
357
+ ],
358
+ "environments": [
359
+ "customer-stack",
360
+ "askexe-update-service"
361
+ ],
362
+ "deployments": [
363
+ {
364
+ "environment": "customer-stack",
365
+ "composeService": "exe-os",
366
+ "role": "daemon",
367
+ "envVar": "EXE_OS_SERVER_IMAGE_TAG"
368
+ },
369
+ {
370
+ "environment": "customer-stack",
371
+ "composeService": "exe-update",
372
+ "role": "updater",
373
+ "envVar": "EXE_OS_IMAGE_TAG"
374
+ },
375
+ {
376
+ "environment": "askexe-update-service",
377
+ "host": "update.askexe.com",
378
+ "role": "update-service"
379
+ }
380
+ ],
381
+ "envVar": "EXE_OS_IMAGE_TAG",
382
+ "required": true,
383
+ "requiredSuites": [
384
+ "ci",
385
+ "image-identity",
386
+ "health-probe",
387
+ "scan"
388
+ ],
389
+ "healthProbe": {
390
+ "type": "http",
391
+ "url": "http://127.0.0.1:8765/health",
392
+ "verified": true
393
+ },
394
+ "legacy": {
395
+ "stackServiceKey": "exe-os",
396
+ "stackReleaseServiceKey": "exe-os",
397
+ "contractServiceId": "exe-os",
398
+ "manifestService": "exe-os",
399
+ "primary": true
400
+ },
401
+ "note": "One image, three deployments. The update service is a DEPLOYMENT of these bytes, not a separate artifact — inventing a fourth component would be the same duplication this catalog removes."
402
+ },
403
+ {
404
+ "componentId": "exe-os-worker-image",
405
+ "repository": "AskExe/exe-os",
406
+ "type": "oci-image",
407
+ "origin": "first-party",
408
+ "publishRepository": "ghcr.io/askexe/exe-os-worker",
409
+ "pullRepository": "update.askexe.com/askexe/exe-os-worker",
410
+ "releaseWorkflow": ".github/workflows/release-stack-image.yml",
411
+ "platforms": [
412
+ "linux/amd64"
413
+ ],
414
+ "environments": [
415
+ "customer-stack"
416
+ ],
417
+ "deployments": [
418
+ {
419
+ "environment": "customer-stack",
420
+ "composeService": "exe-os-worker",
421
+ "role": "worker",
422
+ "envVar": "EXE_OS_WORKER_IMAGE_TAG"
423
+ }
424
+ ],
425
+ "envVar": "EXE_OS_WORKER_IMAGE_TAG",
426
+ "required": false,
427
+ "requiredSuites": [
428
+ "ci",
429
+ "image-identity",
430
+ "scan"
431
+ ],
432
+ "healthProbe": {
433
+ "type": "none",
434
+ "gap": "The worker exposes no liveness endpoint; compose has no healthcheck for it. Recorded as a gap, not waived."
435
+ },
436
+ "legacy": {
437
+ "stackServiceKey": "exe-os",
438
+ "stackReleaseServiceKey": "exe-os",
439
+ "contractServiceId": "exe-os",
440
+ "manifestService": "exe-os"
441
+ },
442
+ "note": "docker-compose.yml pins exe-os-worker from its OWN variable, EXE_OS_WORKER_IMAGE_TAG, which no legacy list carries — STACK_SERVICE_SPECS folds exe-os-worker into the core image's single EXE_OS_IMAGE_TAG pin. A separately-built worker image with no separate pin is the exact shape of the dashboard incident."
443
+ },
444
+ {
445
+ "componentId": "exe-dashboard-image",
446
+ "repository": "AskExe/exe-os",
447
+ "type": "oci-image",
448
+ "origin": "first-party",
449
+ "publishRepository": "ghcr.io/askexe/exe-dashboard",
450
+ "pullRepository": "ghcr.io/askexe/exe-dashboard",
451
+ "releaseWorkflow": ".github/workflows/release-dashboard-image.yml",
452
+ "platforms": [
453
+ "linux/amd64"
454
+ ],
455
+ "environments": [
456
+ "customer-stack"
457
+ ],
458
+ "deployments": [
459
+ {
460
+ "environment": "customer-stack",
461
+ "composeService": "exe-dashboard",
462
+ "role": "web",
463
+ "envVar": "DASHBOARD_IMAGE_TAG"
464
+ }
465
+ ],
466
+ "envVar": "DASHBOARD_IMAGE_TAG",
467
+ "required": false,
468
+ "requiredSuites": [
469
+ "ci",
470
+ "image-identity",
471
+ "health-probe",
472
+ "scan"
473
+ ],
474
+ "healthProbe": {
475
+ "type": "none",
476
+ "gap": "No real JSON health route exists yet; an SPA fallback must not be allowed to pass health (plan sequence 8)."
477
+ },
478
+ "legacy": {
479
+ "stackServiceKey": "dashboard",
480
+ "stackReleaseServiceKey": null,
481
+ "contractServiceId": "dashboard",
482
+ "manifestService": "dashboard"
483
+ },
484
+ "note": "THE INCIDENT THIS CATALOG EXISTS FOR: built from exe-os dashboard-page/, absent from stack-release-repos.mjs entirely, and production ran a four-builds-stale image traceable only by luck. Source repository is AskExe/exe-os — NOT AskExe/exe-dashboard, which has no workflows at all."
485
+ },
486
+ {
487
+ "componentId": "exe-gateway-image",
488
+ "repository": "AskExe/exe-gateway",
489
+ "type": "oci-image",
490
+ "origin": "first-party",
491
+ "publishRepository": "ghcr.io/askexe/exe-gateway",
492
+ "pullRepository": "update.askexe.com/askexe/exe-gateway",
493
+ "releaseWorkflow": ".github/workflows/release-image.yml",
494
+ "platforms": [
495
+ "linux/amd64"
496
+ ],
497
+ "environments": [
498
+ "customer-stack"
499
+ ],
500
+ "deployments": [
501
+ {
502
+ "environment": "customer-stack",
503
+ "composeService": "exe-gateway",
504
+ "role": "web",
505
+ "envVar": "GATEWAY_IMAGE_TAG"
506
+ }
507
+ ],
508
+ "envVar": "GATEWAY_IMAGE_TAG",
509
+ "required": false,
510
+ "requiredSuites": [
511
+ "ci",
512
+ "image-identity",
513
+ "health-probe",
514
+ "scan"
515
+ ],
516
+ "healthProbe": {
517
+ "type": "http",
518
+ "url": "http://127.0.0.1:3100/health",
519
+ "verified": true
520
+ },
521
+ "legacy": {
522
+ "stackServiceKey": "gateway",
523
+ "stackReleaseServiceKey": "gateway",
524
+ "contractServiceId": "gateway",
525
+ "manifestService": "gateway"
526
+ }
527
+ },
528
+ {
529
+ "componentId": "exe-crm-image",
530
+ "repository": "AskExe/exe-crm",
531
+ "type": "oci-image",
532
+ "origin": "first-party",
533
+ "publishRepository": "ghcr.io/askexe/exe-crm",
534
+ "pullRepository": "update.askexe.com/askexe/exe-crm",
535
+ "releaseWorkflow": ".github/workflows/release-stack-image.yml",
536
+ "platforms": [
537
+ "linux/amd64"
538
+ ],
539
+ "environments": [
540
+ "customer-stack"
541
+ ],
542
+ "deployments": [
543
+ {
544
+ "environment": "customer-stack",
545
+ "composeService": "exe-crm",
546
+ "role": "web",
547
+ "envVar": "CRM_IMAGE_TAG"
548
+ },
549
+ {
550
+ "environment": "customer-stack",
551
+ "composeService": "exe-crm-worker",
552
+ "role": "worker",
553
+ "envVar": "CRM_IMAGE_TAG"
554
+ }
555
+ ],
556
+ "envVar": "CRM_IMAGE_TAG",
557
+ "required": false,
558
+ "requiredSuites": [
559
+ "ci",
560
+ "image-identity",
561
+ "health-probe",
562
+ "scan"
563
+ ],
564
+ "healthProbe": {
565
+ "type": "http",
566
+ "url": "http://127.0.0.1:3000/healthz",
567
+ "verified": true
568
+ },
569
+ "legacy": {
570
+ "stackServiceKey": "crm",
571
+ "stackReleaseServiceKey": "crm",
572
+ "contractServiceId": "crm",
573
+ "manifestService": "crm"
574
+ }
575
+ },
576
+ {
577
+ "componentId": "exe-erp-image",
578
+ "repository": "AskExe/exe-erp",
579
+ "type": "oci-image",
580
+ "origin": "first-party",
581
+ "publishRepository": "ghcr.io/askexe/exe-erp",
582
+ "pullRepository": "update.askexe.com/askexe/exe-erp",
583
+ "releaseWorkflow": ".github/workflows/release-stack-image.yml",
584
+ "platforms": [
585
+ "linux/amd64"
586
+ ],
587
+ "environments": [
588
+ "customer-stack"
589
+ ],
590
+ "deployments": [
591
+ {
592
+ "environment": "customer-stack",
593
+ "composeService": "exe-erp",
594
+ "role": "web",
595
+ "envVar": "ERP_IMAGE_TAG"
596
+ },
597
+ {
598
+ "environment": "customer-stack",
599
+ "composeService": "exe-erp-websocket",
600
+ "role": "websocket",
601
+ "envVar": "ERP_IMAGE_TAG"
602
+ },
603
+ {
604
+ "environment": "customer-stack",
605
+ "composeService": "exe-erp-queue",
606
+ "role": "worker",
607
+ "envVar": "ERP_IMAGE_TAG"
608
+ },
609
+ {
610
+ "environment": "customer-stack",
611
+ "composeService": "exe-erp-scheduler",
612
+ "role": "scheduler",
613
+ "envVar": "ERP_IMAGE_TAG"
614
+ }
615
+ ],
616
+ "envVar": "ERP_IMAGE_TAG",
617
+ "required": false,
618
+ "requiredSuites": [
619
+ "ci",
620
+ "image-identity",
621
+ "health-probe",
622
+ "scan",
623
+ "migration-safety"
624
+ ],
625
+ "healthProbe": {
626
+ "type": "http",
627
+ "url": "http://127.0.0.1:8069/api/method/ping",
628
+ "host": "erp.askexe.com",
629
+ "statusField": "message",
630
+ "verified": true
631
+ },
632
+ "legacy": {
633
+ "stackServiceKey": "erp",
634
+ "stackReleaseServiceKey": "erp",
635
+ "contractServiceId": "erp",
636
+ "manifestService": "erp"
637
+ },
638
+ "note": "FOUR compose services share these bytes; the health probe targets the web role only. exe-erp-nginx does NOT run this image — it runs upstream nginx and is registered under upstream-nginx."
639
+ },
640
+ {
641
+ "componentId": "exe-wiki-image",
642
+ "repository": "AskExe/exe-wiki",
643
+ "type": "oci-image",
644
+ "origin": "first-party",
645
+ "publishRepository": "ghcr.io/askexe/exe-wiki",
646
+ "pullRepository": "update.askexe.com/askexe/exe-wiki",
647
+ "releaseWorkflow": ".github/workflows/release-stack-image.yml",
648
+ "platforms": [
649
+ "linux/amd64"
650
+ ],
651
+ "environments": [
652
+ "customer-stack"
653
+ ],
654
+ "deployments": [
655
+ {
656
+ "environment": "customer-stack",
657
+ "composeService": "exe-wiki",
658
+ "role": "web",
659
+ "envVar": "WIKI_IMAGE_TAG"
660
+ }
661
+ ],
662
+ "envVar": "WIKI_IMAGE_TAG",
663
+ "required": false,
664
+ "requiredSuites": [
665
+ "ci",
666
+ "image-identity",
667
+ "health-probe",
668
+ "scan"
669
+ ],
670
+ "healthProbe": {
671
+ "type": "http",
672
+ "url": "http://127.0.0.1:3001/api/ping",
673
+ "verified": true
674
+ },
675
+ "legacy": {
676
+ "stackServiceKey": "wiki",
677
+ "stackReleaseServiceKey": "wiki",
678
+ "contractServiceId": "wiki",
679
+ "manifestService": "wiki"
680
+ }
681
+ },
682
+ {
683
+ "componentId": "exe-monitor-hub-image",
684
+ "repository": "AskExe/exe-monitor",
685
+ "type": "oci-image",
686
+ "origin": "first-party",
687
+ "publishRepository": "ghcr.io/askexe/exe-monitor-hub",
688
+ "pullRepository": "update.askexe.com/askexe/exe-monitor-hub",
689
+ "releaseWorkflow": ".github/workflows/release-stack-images.yml",
690
+ "platforms": [
691
+ "linux/amd64"
692
+ ],
693
+ "environments": [
694
+ "customer-stack"
695
+ ],
696
+ "deployments": [
697
+ {
698
+ "environment": "customer-stack",
699
+ "composeService": "exe-monitor-hub",
700
+ "role": "hub",
701
+ "envVar": "MONITOR_HUB_IMAGE_TAG"
702
+ }
703
+ ],
704
+ "envVar": "MONITOR_HUB_IMAGE_TAG",
705
+ "required": false,
706
+ "requiredSuites": [
707
+ "ci",
708
+ "image-identity",
709
+ "health-probe",
710
+ "scan"
711
+ ],
712
+ "healthProbe": {
713
+ "type": "http",
714
+ "path": "/api/health",
715
+ "verified": false,
716
+ "gap": "Declared by the release contract but absent from the stack manifest, so no port is asserted here. A path with no observed probe is recorded as unverified, never as passing."
717
+ },
718
+ "legacy": {
719
+ "stackServiceKey": "monitorHub",
720
+ "stackReleaseServiceKey": "monitor-hub",
721
+ "contractServiceId": "monitor-hub",
722
+ "manifestService": "monitorHub"
723
+ },
724
+ "note": "Everything at or below v0.9.5 is provenance-unknown: v0.9.4 and v0.9.5 were hand-built from a workstation and v0.9.4 carries no labels at all. Those tags are never re-stamped."
725
+ },
726
+ {
727
+ "componentId": "exe-monitor-agent-image",
728
+ "repository": "AskExe/exe-monitor",
729
+ "type": "oci-image",
730
+ "origin": "first-party",
731
+ "publishRepository": "ghcr.io/askexe/exe-monitor-agent",
732
+ "pullRepository": "update.askexe.com/askexe/exe-monitor-agent",
733
+ "releaseWorkflow": ".github/workflows/release-stack-images.yml",
734
+ "platforms": [
735
+ "linux/amd64"
736
+ ],
737
+ "environments": [
738
+ "customer-stack"
739
+ ],
740
+ "deployments": [
741
+ {
742
+ "environment": "customer-stack",
743
+ "composeService": "exe-monitor-agent",
744
+ "role": "agent",
745
+ "envVar": "MONITOR_AGENT_IMAGE_TAG"
746
+ }
747
+ ],
748
+ "envVar": "MONITOR_AGENT_IMAGE_TAG",
749
+ "required": false,
750
+ "requiredSuites": [
751
+ "ci",
752
+ "image-identity",
753
+ "scan"
754
+ ],
755
+ "healthProbe": {
756
+ "type": "none",
757
+ "gap": "Genuinely absent. The agent exposes no liveness endpoint and cannot safely expose HTTP; an authenticated heartbeat or CLI readiness check must be added before it can be marked conforming. Reported, never waived — 'it is only an agent' is the reasoning that left the dashboard unpinned."
758
+ },
759
+ "legacy": {
760
+ "stackServiceKey": "monitorAgent",
761
+ "stackReleaseServiceKey": "monitor-agent",
762
+ "contractServiceId": "monitor-agent",
763
+ "manifestService": "monitorAgent"
764
+ },
765
+ "note": "Second image out of the SAME repository and the SAME workflow as the hub. Hub and agent release together; one failed artifact blocks both."
766
+ },
767
+ {
768
+ "componentId": "exe-auth-image",
769
+ "repository": "AskExe/exe-auth",
770
+ "type": "oci-image",
771
+ "origin": "first-party",
772
+ "publishRepository": "update.askexe.com/askexe/exe-auth",
773
+ "pullRepository": "update.askexe.com/askexe/exe-auth",
774
+ "releaseWorkflow": ".github/workflows/ci.yml",
775
+ "platforms": [
776
+ "linux/amd64"
777
+ ],
778
+ "environments": [
779
+ "customer-stack"
780
+ ],
781
+ "deployments": [
782
+ {
783
+ "environment": "customer-stack",
784
+ "composeService": "exe-auth",
785
+ "role": "web",
786
+ "envVar": "AUTH_IMAGE_TAG"
787
+ }
788
+ ],
789
+ "envVar": "AUTH_IMAGE_TAG",
790
+ "required": false,
791
+ "requiredSuites": [
792
+ "ci",
793
+ "image-identity",
794
+ "health-probe",
795
+ "scan",
796
+ "sso-contract"
797
+ ],
798
+ "healthProbe": {
799
+ "type": "http",
800
+ "url": "http://127.0.0.1:3300/",
801
+ "verified": true,
802
+ "note": "NOT /api/health — nginx.conf 404s that path deliberately so GoTrue's version string is not exposed. Probing /api/health cost a full production rollback on 2026-09-08."
803
+ },
804
+ "legacy": {
805
+ "stackServiceKey": "auth",
806
+ "stackReleaseServiceKey": null,
807
+ "contractServiceId": "auth",
808
+ "manifestService": "auth"
809
+ },
810
+ "note": "The ONLY first-party image with no GHCR mirror: publish and pull are the same private registry. Absent from STACK_RELEASE_REPO_CONFIGS; it survives only via the STACK_RECONCILE_APP_IMAGE_REPOS escape list."
811
+ },
812
+ {
813
+ "componentId": "exe-build-image",
814
+ "repository": "AskExe/exe-build",
815
+ "type": "oci-image",
816
+ "origin": "first-party",
817
+ "publishRepository": "ghcr.io/askexe/exe-build",
818
+ "pullRepository": "update.askexe.com/askexe/exe-build",
819
+ "releaseWorkflow": ".github/workflows/docker.yml",
820
+ "platforms": [
821
+ "linux/amd64"
822
+ ],
823
+ "environments": [
824
+ "askexe-control-plane"
825
+ ],
826
+ "deployments": [
827
+ {
828
+ "environment": "askexe-control-plane",
829
+ "host": "askexe-control-plane",
830
+ "role": "runtime"
831
+ }
832
+ ],
833
+ "envVar": "EXE_BUILD_IMAGE_TAG",
834
+ "required": false,
835
+ "requiredSuites": [
836
+ "ci",
837
+ "image-identity",
838
+ "scan"
839
+ ],
840
+ "healthProbe": {
841
+ "type": "none",
842
+ "gap": "Control-plane only; no customer-facing endpoint. No probe defined."
843
+ },
844
+ "legacy": {
845
+ "stackServiceKey": "exe-build",
846
+ "stackReleaseServiceKey": "exe-build",
847
+ "contractServiceId": null,
848
+ "manifestService": null
849
+ },
850
+ "note": "Removed from the customer stack. Its producer is docker.yml, NOT the release.yml that ships the binaries — the legacy lists name a single workflow per repo and so cannot express a repo with two producers."
851
+ },
852
+ {
853
+ "componentId": "exe-build-binaries",
854
+ "repository": "AskExe/exe-build",
855
+ "type": "binary",
856
+ "origin": "first-party",
857
+ "releaseAssetPrefix": "exe-",
858
+ "releaseWorkflow": ".github/workflows/release.yml",
859
+ "platforms": [
860
+ "linux/amd64",
861
+ "linux/arm64",
862
+ "darwin/arm64",
863
+ "darwin/amd64"
864
+ ],
865
+ "unverifiedPlatforms": [
866
+ {
867
+ "platform": "windows/amd64",
868
+ "reason": "Built on a GitHub-hosted windows-latest runner. The hardware list contains no owned Windows machine, so this is not native execution testing on owned hardware and must not be advertised as verified coverage."
869
+ },
870
+ {
871
+ "platform": "windows/arm64",
872
+ "reason": "Built on a GitHub-hosted windows-11-arm runner with reduced features (--no-default-features --features pdf). Same accounting as windows/amd64."
873
+ }
874
+ ],
875
+ "environments": [
876
+ "customer-cli"
877
+ ],
878
+ "requiredSuites": [
879
+ "ci",
880
+ "checksum",
881
+ "platform-matrix"
882
+ ],
883
+ "healthProbe": {
884
+ "type": "cli-version",
885
+ "command": "exe --version --json"
886
+ },
887
+ "legacy": {
888
+ "stackServiceKey": null,
889
+ "stackReleaseServiceKey": null,
890
+ "contractServiceId": null,
891
+ "manifestService": null
892
+ },
893
+ "note": "Six advertised targets. Listed as verified only for the four built on owned or genuinely native lanes; the two Windows targets are recorded as advertised-but-unverified rather than dropped or silently promoted."
894
+ },
895
+ {
896
+ "componentId": "exe-chat-desktop",
897
+ "repository": "AskExe/exe-chat",
898
+ "type": "desktop-bundle",
899
+ "origin": "first-party",
900
+ "releaseAssetPrefix": "exe-chat-",
901
+ "releaseWorkflow": ".github/workflows/tauri-release.yml",
902
+ "platforms": [
903
+ "darwin/arm64",
904
+ "darwin/amd64"
905
+ ],
906
+ "unverifiedPlatforms": [
907
+ {
908
+ "platform": "linux/amd64",
909
+ "reason": "Advertised by the Tauri matrix but not validated on owned hardware."
910
+ },
911
+ {
912
+ "platform": "windows/amd64",
913
+ "reason": "No owned Windows host exists. A workflow name is not proof of a supported target."
914
+ }
915
+ ],
916
+ "environments": [
917
+ "customer-desktop"
918
+ ],
919
+ "requiredSuites": [
920
+ "ci",
921
+ "signing",
922
+ "updater-manifest"
923
+ ],
924
+ "healthProbe": {
925
+ "type": "none",
926
+ "gap": "Desktop bundle; readiness is installer and updater verification, not an endpoint."
927
+ },
928
+ "signed": true,
929
+ "legacy": {
930
+ "stackServiceKey": null,
931
+ "stackReleaseServiceKey": null,
932
+ "contractServiceId": null,
933
+ "manifestService": null
934
+ },
935
+ "note": "Release lane is currently DISABLED. macOS signing/notarization credentials live in a separate trusted packaging service, never with the stack signing key."
936
+ },
937
+ {
938
+ "componentId": "upstream-pgvector",
939
+ "repository": null,
940
+ "type": "oci-image",
941
+ "origin": "upstream-pinned",
942
+ "pullRepository": "update.askexe.com/askexe/pgvector",
943
+ "pinnedImage": "update.askexe.com/askexe/pgvector:0.8.0-pg16@sha256:a132765ec351c65111b5b675928a3a0515a466a40f97277329db8b8209ad8bc9",
944
+ "platforms": [
945
+ "linux/amd64"
946
+ ],
947
+ "environments": [
948
+ "customer-stack"
949
+ ],
950
+ "deployments": [
951
+ {
952
+ "environment": "customer-stack",
953
+ "composeService": "exe-db",
954
+ "role": "database",
955
+ "envVar": "EXE_DB_IMAGE"
956
+ },
957
+ {
958
+ "environment": "customer-stack",
959
+ "composeService": "exe-wiki-schema-guard",
960
+ "role": "migration-guard",
961
+ "envVar": "EXE_DB_IMAGE"
962
+ }
963
+ ],
964
+ "envVar": "EXE_DB_IMAGE",
965
+ "required": true,
966
+ "requiredSuites": [
967
+ "dependency-policy"
968
+ ],
969
+ "legacy": {
970
+ "stackServiceKey": "exe-db",
971
+ "stackReleaseServiceKey": null,
972
+ "contractServiceId": null,
973
+ "manifestService": "exe-db"
974
+ }
975
+ },
976
+ {
977
+ "componentId": "upstream-gotrue",
978
+ "repository": null,
979
+ "type": "oci-image",
980
+ "origin": "upstream-pinned",
981
+ "pullRepository": "update.askexe.com/askexe/gotrue",
982
+ "pinnedImage": "update.askexe.com/askexe/gotrue:v2.172.1@sha256:b0dd7aa28dd1f9a8bd31f136c8b912661f701d9b863171e5843cb08f18f49de4",
983
+ "platforms": [
984
+ "linux/amd64"
985
+ ],
986
+ "environments": [
987
+ "customer-stack"
988
+ ],
989
+ "deployments": [
990
+ {
991
+ "environment": "customer-stack",
992
+ "composeService": "gotrue",
993
+ "role": "auth",
994
+ "envVar": null
995
+ }
996
+ ],
997
+ "required": false,
998
+ "requiredSuites": [
999
+ "dependency-policy"
1000
+ ],
1001
+ "healthProbe": {
1002
+ "type": "http",
1003
+ "url": "http://127.0.0.1:9999/health",
1004
+ "verified": true
1005
+ },
1006
+ "legacy": {
1007
+ "stackServiceKey": "gotrue",
1008
+ "stackReleaseServiceKey": null,
1009
+ "contractServiceId": null,
1010
+ "manifestService": "gotrue"
1011
+ }
1012
+ },
1013
+ {
1014
+ "componentId": "upstream-redis",
1015
+ "repository": null,
1016
+ "type": "oci-image",
1017
+ "origin": "upstream-pinned",
1018
+ "pullRepository": "update.askexe.com/askexe/redis",
1019
+ "pinnedImage": "update.askexe.com/askexe/redis:7.4-alpine@sha256:6ab0b6e7381779332f97b8ca76193e45b0756f38d4c0dcda72dbb3c32061ab99",
1020
+ "platforms": [
1021
+ "linux/amd64"
1022
+ ],
1023
+ "environments": [
1024
+ "customer-stack"
1025
+ ],
1026
+ "deployments": [
1027
+ {
1028
+ "environment": "customer-stack",
1029
+ "composeService": "redis",
1030
+ "role": "cache",
1031
+ "envVar": null
1032
+ }
1033
+ ],
1034
+ "required": false,
1035
+ "requiredSuites": [
1036
+ "dependency-policy"
1037
+ ],
1038
+ "legacy": {
1039
+ "stackServiceKey": "redis",
1040
+ "stackReleaseServiceKey": null,
1041
+ "contractServiceId": null,
1042
+ "manifestService": "redis"
1043
+ }
1044
+ },
1045
+ {
1046
+ "componentId": "upstream-clickhouse",
1047
+ "repository": null,
1048
+ "type": "oci-image",
1049
+ "origin": "upstream-pinned",
1050
+ "pullRepository": "update.askexe.com/askexe/clickhouse-server",
1051
+ "pinnedImage": "update.askexe.com/askexe/clickhouse-server:24.8.4.13-alpine@sha256:88a45f9e328549b2579256c46ee38e5c0e25ae58303d9eb6d9c7ed8d6d2bbf3c",
1052
+ "platforms": [
1053
+ "linux/amd64"
1054
+ ],
1055
+ "environments": [
1056
+ "customer-stack"
1057
+ ],
1058
+ "deployments": [
1059
+ {
1060
+ "environment": "customer-stack",
1061
+ "composeService": "clickhouse",
1062
+ "role": "analytics",
1063
+ "envVar": null
1064
+ }
1065
+ ],
1066
+ "required": false,
1067
+ "requiredSuites": [
1068
+ "dependency-policy"
1069
+ ],
1070
+ "legacy": {
1071
+ "stackServiceKey": "clickhouse",
1072
+ "stackReleaseServiceKey": null,
1073
+ "contractServiceId": null,
1074
+ "manifestService": "clickhouse"
1075
+ }
1076
+ },
1077
+ {
1078
+ "componentId": "upstream-cloudflared",
1079
+ "repository": null,
1080
+ "type": "oci-image",
1081
+ "origin": "upstream-pinned",
1082
+ "pullRepository": "update.askexe.com/askexe/cloudflared",
1083
+ "pinnedImage": "update.askexe.com/askexe/cloudflared:2026-07@sha256:ba461b8aa9c042156dbd39c38657fe7431bafa063220eab8d5330a523863da9f",
1084
+ "platforms": [
1085
+ "linux/amd64"
1086
+ ],
1087
+ "environments": [
1088
+ "customer-stack"
1089
+ ],
1090
+ "deployments": [
1091
+ {
1092
+ "environment": "customer-stack",
1093
+ "composeService": "cloudflared",
1094
+ "role": "ingress",
1095
+ "envVar": null
1096
+ }
1097
+ ],
1098
+ "required": false,
1099
+ "requiredSuites": [
1100
+ "dependency-policy"
1101
+ ],
1102
+ "legacy": {
1103
+ "stackServiceKey": "cloudflared",
1104
+ "stackReleaseServiceKey": null,
1105
+ "contractServiceId": null,
1106
+ "manifestService": "cloudflared"
1107
+ }
1108
+ },
1109
+ {
1110
+ "componentId": "upstream-nginx",
1111
+ "repository": null,
1112
+ "type": "oci-image",
1113
+ "origin": "upstream-pinned",
1114
+ "pullRepository": "update.askexe.com/askexe/nginx",
1115
+ "pinnedImage": "update.askexe.com/askexe/nginx:alpine@sha256:20316569d8f81a160065d7d2a5eeffc7ca97d79022462ee255fd23fa103a6b5c",
1116
+ "platforms": [
1117
+ "linux/amd64"
1118
+ ],
1119
+ "environments": [
1120
+ "customer-stack"
1121
+ ],
1122
+ "deployments": [
1123
+ {
1124
+ "environment": "customer-stack",
1125
+ "composeService": "exe-sso-edge",
1126
+ "role": "edge-proxy",
1127
+ "envVar": null
1128
+ },
1129
+ {
1130
+ "environment": "customer-stack",
1131
+ "composeService": "exe-erp-nginx",
1132
+ "role": "erp-proxy",
1133
+ "envVar": null
1134
+ }
1135
+ ],
1136
+ "required": false,
1137
+ "requiredSuites": [
1138
+ "dependency-policy"
1139
+ ],
1140
+ "legacy": {
1141
+ "stackServiceKey": "exe-sso-edge",
1142
+ "stackReleaseServiceKey": null,
1143
+ "contractServiceId": null,
1144
+ "manifestService": "exe-sso-edge"
1145
+ },
1146
+ "note": "TWO compose services run these identical upstream bytes. STACK_SERVICE_SPECS lists exe-erp-nginx under the ERP entry, which makes ERP's coverage look complete while attributing an upstream nginx container to a first-party image. Recorded under legacyDivergences."
1147
+ },
1148
+ {
1149
+ "componentId": "upstream-otel-collector",
1150
+ "repository": null,
1151
+ "type": "oci-image",
1152
+ "origin": "upstream-pinned",
1153
+ "pullRepository": "update.askexe.com/askexe/otel-collector-contrib",
1154
+ "pinnedImage": "update.askexe.com/askexe/otel-collector-contrib:0.114.0@sha256:37fa87091cfaaec7234a27e4e395a40c31c2bfaea97a349a4afef6d9e9681197",
1155
+ "platforms": [
1156
+ "linux/amd64"
1157
+ ],
1158
+ "environments": [
1159
+ "customer-stack"
1160
+ ],
1161
+ "deployments": [
1162
+ {
1163
+ "environment": "customer-stack",
1164
+ "composeService": "exe-otel-collector",
1165
+ "role": "telemetry",
1166
+ "envVar": "OTEL_COLLECTOR_IMAGE"
1167
+ }
1168
+ ],
1169
+ "envVar": "OTEL_COLLECTOR_IMAGE",
1170
+ "required": false,
1171
+ "requiredSuites": [
1172
+ "dependency-policy"
1173
+ ],
1174
+ "legacy": {
1175
+ "stackServiceKey": "exe-otel-collector",
1176
+ "stackReleaseServiceKey": null,
1177
+ "contractServiceId": null,
1178
+ "manifestService": "exe-otel-collector"
1179
+ }
1180
+ }
1181
+ ],
1182
+ "legacyDivergences": [
1183
+ {
1184
+ "list": "STACK_SERVICE_SPECS",
1185
+ "subject": "auth",
1186
+ "field": "healthUrl",
1187
+ "reason": "STACK_SERVICE_SPECS still probes /api/health. exe-auth 404s that path DELIBERATELY — nginx.conf adds an exact location so GoTrue version strings are not exposed — and probing it triggered the all-or-nothing production rollback of 2026-09-08 that reverted ERP, CRM, wiki and exe-os along with auth. CONTRACT_SERVICES was corrected to / ; STACK_SERVICE_SPECS was not. The catalog carries the verified value (/ -> 200).",
1188
+ "retiredBy": "ARC-1 Track: retire STACK_SERVICE_SPECS in favour of deriveStackServiceSpecs(). Until then this list is stale and the catalog is authoritative."
1189
+ },
1190
+ {
1191
+ "list": "STACK_SERVICE_SPECS",
1192
+ "subject": "erp",
1193
+ "field": "composeServices",
1194
+ "reason": "STACK_SERVICE_SPECS attributes exe-erp-nginx to the ERP image. Compose runs it from upstream nginx:alpine pinned inline, not from ERP_IMAGE_TAG. The legacy attribution makes ERP coverage look complete while an upstream container is counted as first-party bytes.",
1195
+ "retiredBy": "Same retirement as above; the catalog registers exe-erp-nginx under upstream-nginx where it actually belongs."
1196
+ },
1197
+ {
1198
+ "list": "STACK_SERVICE_SPECS",
1199
+ "subject": "exe-sso-edge",
1200
+ "field": "composeServices",
1201
+ "reason": "The mirror of the erp divergence: two compose services (exe-sso-edge and exe-erp-nginx) run the identical upstream nginx bytes, and only one is listed. A single dependency-policy bump must move both.",
1202
+ "retiredBy": "Same retirement as above."
1203
+ },
1204
+ {
1205
+ "list": "STACK_SERVICE_SPECS",
1206
+ "subject": "exe-build",
1207
+ "field": "releaseWorkflowFile",
1208
+ "reason": "STACK_SERVICE_SPECS names release.yml as the producer of the exe-build IMAGE. Verified via the GitHub API and the workflow source: release.yml builds the six binary targets, and docker.yml (line 153) is what pushes ghcr.io/askexe/exe-build. The legacy shape allows one workflow per repository and so cannot express a repository with two producers.",
1209
+ "retiredBy": "Same retirement as above; the catalog splits exe-build-image and exe-build-binaries."
1210
+ },
1211
+ {
1212
+ "list": "STACK_SERVICE_SPECS",
1213
+ "subject": "exe-build",
1214
+ "field": "sourceImageName",
1215
+ "reason": "The legacy entry carries no sourceImageName, so provenance would be read from the pull-through proxy rather than from ghcr.io where the build actually published and where the tags and labels live. Verified in docker.yml line 153.",
1216
+ "retiredBy": "Same retirement as above."
1217
+ },
1218
+ {
1219
+ "list": "STACK_RELEASE_REPO_CONFIGS",
1220
+ "subject": "monitor-hub",
1221
+ "field": "releaseWorkflow",
1222
+ "reason": "The file is release-stack-imageS.yml (plural, workflow id 274190320, currently disabled_manually) — verified via the GitHub API. STACK_RELEASE_REPO_CONFIGS names the singular release-stack-image.yml, which does not exist in AskExe/exe-monitor, so any gate querying it resolves nothing and cannot fail loudly.",
1223
+ "retiredBy": "ARC-1 Track: retire STACK_RELEASE_REPO_CONFIGS in favour of deriveStackReleaseRepoConfigs()."
1224
+ },
1225
+ {
1226
+ "list": "STACK_RELEASE_REPO_CONFIGS",
1227
+ "subject": "monitor-agent",
1228
+ "field": "releaseWorkflow",
1229
+ "reason": "Same wrong filename as monitor-hub; both images come from the same plural-named workflow.",
1230
+ "retiredBy": "Same retirement as monitor-hub."
1231
+ },
1232
+ {
1233
+ "list": "STACK_RELEASE_REPO_CONFIGS",
1234
+ "subject": "exe-build",
1235
+ "field": "releaseWorkflow",
1236
+ "reason": "STACK_RELEASE_REPO_CONFIGS names release-stack-image.yml, which does not exist in AskExe/exe-build at all (its workflows are ci.yml, docker.yml, release.yml, python-smoke.yml, windows-smoke.yml, auto-retry-classified.yml — verified via the GitHub API). The image producer is docker.yml.",
1237
+ "retiredBy": "Same retirement as monitor-hub."
1238
+ },
1239
+ {
1240
+ "list": "CONTRACT_SERVICES",
1241
+ "subject": "dashboard",
1242
+ "field": "ghRepo",
1243
+ "reason": "CONTRACT_SERVICES points dashboard at AskExe/exe-dashboard on the assumption the extraction completed. It has not: that repository has ZERO Actions workflows (verified via the GitHub API), so it publishes nothing. The single active source is AskExe/exe-os via release-dashboard-image.yml. Plan sequence 8 requires exactly one active source and forbids two publishers for one package; the catalog states which one it is.",
1244
+ "retiredBy": "Plan sequence 8: flip the catalog repository entry and this field together in the PR that moves the caller workflow to AskExe/exe-dashboard — never separately."
1245
+ },
1246
+ {
1247
+ "list": "CONTRACT_SERVICES",
1248
+ "subject": "dashboard",
1249
+ "field": "healthPath",
1250
+ "reason": "CONTRACT_SERVICES declares /health, but no real JSON health route exists yet — plan sequence 8 lists baking one as outstanding work, and warns an SPA fallback must not be allowed to pass health. A declared path with nothing behind it is what lets a stale dashboard look healthy, so the catalog records the gap instead.",
1251
+ "retiredBy": "Plan sequence 8: set healthProbe when the JSON health route ships."
1252
+ }
1253
+ ]
1254
+ }