@proompteng/temporal-bun-sdk 0.10.0 → 0.11.0

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 (230) hide show
  1. package/README.md +14 -10
  2. package/dist/agent-readiness.json +102 -18
  3. package/dist/production-readiness.json +246 -94
  4. package/dist/release-provenance.json +82 -0
  5. package/dist/src/activities/lifecycle.js +15 -4
  6. package/dist/src/activities/lifecycle.js.map +1 -1
  7. package/dist/src/client/retries.d.ts.map +1 -1
  8. package/dist/src/client/retries.js +12 -2
  9. package/dist/src/client/retries.js.map +1 -1
  10. package/dist/src/proto/protoc-gen-openapiv2/options/annotations_pb.js +1 -1
  11. package/dist/src/proto/protoc-gen-openapiv2/options/openapiv2_pb.d.ts +14 -14
  12. package/dist/src/proto/protoc-gen-openapiv2/options/openapiv2_pb.d.ts.map +1 -1
  13. package/dist/src/proto/protoc-gen-openapiv2/options/openapiv2_pb.js +1 -1
  14. package/dist/src/proto/temporal/api/activity/v1/message_pb.d.ts +106 -35
  15. package/dist/src/proto/temporal/api/activity/v1/message_pb.d.ts.map +1 -1
  16. package/dist/src/proto/temporal/api/activity/v1/message_pb.js +18 -2
  17. package/dist/src/proto/temporal/api/activity/v1/message_pb.js.map +1 -1
  18. package/dist/src/proto/temporal/api/batch/v1/message_pb.d.ts +12 -12
  19. package/dist/src/proto/temporal/api/batch/v1/message_pb.d.ts.map +1 -1
  20. package/dist/src/proto/temporal/api/batch/v1/message_pb.js +1 -1
  21. package/dist/src/proto/temporal/api/callback/v1/message_pb.d.ts +72 -0
  22. package/dist/src/proto/temporal/api/callback/v1/message_pb.d.ts.map +1 -0
  23. package/dist/src/proto/temporal/api/callback/v1/message_pb.js +18 -0
  24. package/dist/src/proto/temporal/api/callback/v1/message_pb.js.map +1 -0
  25. package/dist/src/proto/temporal/api/cloud/account/v1/message_pb.d.ts +5 -5
  26. package/dist/src/proto/temporal/api/cloud/account/v1/message_pb.d.ts.map +1 -1
  27. package/dist/src/proto/temporal/api/cloud/account/v1/message_pb.js +1 -1
  28. package/dist/src/proto/temporal/api/cloud/auditlog/v1/message_pb.d.ts +3 -3
  29. package/dist/src/proto/temporal/api/cloud/auditlog/v1/message_pb.d.ts.map +1 -1
  30. package/dist/src/proto/temporal/api/cloud/auditlog/v1/message_pb.js +1 -1
  31. package/dist/src/proto/temporal/api/cloud/billing/v1/message_pb.d.ts +206 -0
  32. package/dist/src/proto/temporal/api/cloud/billing/v1/message_pb.d.ts.map +1 -0
  33. package/dist/src/proto/temporal/api/cloud/billing/v1/message_pb.js +95 -0
  34. package/dist/src/proto/temporal/api/cloud/billing/v1/message_pb.js.map +1 -0
  35. package/dist/src/proto/temporal/api/cloud/cloudservice/v1/request_response_pb.d.ts +462 -82
  36. package/dist/src/proto/temporal/api/cloud/cloudservice/v1/request_response_pb.d.ts.map +1 -1
  37. package/dist/src/proto/temporal/api/cloud/cloudservice/v1/request_response_pb.js +223 -132
  38. package/dist/src/proto/temporal/api/cloud/cloudservice/v1/request_response_pb.js.map +1 -1
  39. package/dist/src/proto/temporal/api/cloud/cloudservice/v1/service_pb.d.ts +95 -1
  40. package/dist/src/proto/temporal/api/cloud/cloudservice/v1/service_pb.d.ts.map +1 -1
  41. package/dist/src/proto/temporal/api/cloud/cloudservice/v1/service_pb.js +2 -2
  42. package/dist/src/proto/temporal/api/cloud/cloudservice/v1/service_pb.js.map +1 -1
  43. package/dist/src/proto/temporal/api/cloud/connectivityrule/v1/message_pb.d.ts +11 -3
  44. package/dist/src/proto/temporal/api/cloud/connectivityrule/v1/message_pb.d.ts.map +1 -1
  45. package/dist/src/proto/temporal/api/cloud/connectivityrule/v1/message_pb.js +2 -2
  46. package/dist/src/proto/temporal/api/cloud/connectivityrule/v1/message_pb.js.map +1 -1
  47. package/dist/src/proto/temporal/api/cloud/identity/v1/message_pb.d.ts +173 -24
  48. package/dist/src/proto/temporal/api/cloud/identity/v1/message_pb.d.ts.map +1 -1
  49. package/dist/src/proto/temporal/api/cloud/identity/v1/message_pb.js +22 -2
  50. package/dist/src/proto/temporal/api/cloud/identity/v1/message_pb.js.map +1 -1
  51. package/dist/src/proto/temporal/api/cloud/namespace/v1/message_pb.d.ts +325 -26
  52. package/dist/src/proto/temporal/api/cloud/namespace/v1/message_pb.d.ts.map +1 -1
  53. package/dist/src/proto/temporal/api/cloud/namespace/v1/message_pb.js +105 -22
  54. package/dist/src/proto/temporal/api/cloud/namespace/v1/message_pb.js.map +1 -1
  55. package/dist/src/proto/temporal/api/cloud/nexus/v1/message_pb.d.ts +5 -5
  56. package/dist/src/proto/temporal/api/cloud/nexus/v1/message_pb.d.ts.map +1 -1
  57. package/dist/src/proto/temporal/api/cloud/nexus/v1/message_pb.js +1 -1
  58. package/dist/src/proto/temporal/api/cloud/operation/v1/message_pb.d.ts +4 -4
  59. package/dist/src/proto/temporal/api/cloud/operation/v1/message_pb.d.ts.map +1 -1
  60. package/dist/src/proto/temporal/api/cloud/operation/v1/message_pb.js +1 -1
  61. package/dist/src/proto/temporal/api/cloud/region/v1/message_pb.js +1 -1
  62. package/dist/src/proto/temporal/api/cloud/resource/v1/message_pb.js +1 -1
  63. package/dist/src/proto/temporal/api/cloud/sink/v1/message_pb.js +1 -1
  64. package/dist/src/proto/temporal/api/cloud/usage/v1/message_pb.d.ts +2 -2
  65. package/dist/src/proto/temporal/api/cloud/usage/v1/message_pb.d.ts.map +1 -1
  66. package/dist/src/proto/temporal/api/cloud/usage/v1/message_pb.js +1 -1
  67. package/dist/src/proto/temporal/api/command/v1/message_pb.d.ts +61 -52
  68. package/dist/src/proto/temporal/api/command/v1/message_pb.d.ts.map +1 -1
  69. package/dist/src/proto/temporal/api/command/v1/message_pb.js +2 -2
  70. package/dist/src/proto/temporal/api/command/v1/message_pb.js.map +1 -1
  71. package/dist/src/proto/temporal/api/common/v1/message_pb.d.ts +118 -2
  72. package/dist/src/proto/temporal/api/common/v1/message_pb.d.ts.map +1 -1
  73. package/dist/src/proto/temporal/api/common/v1/message_pb.js +24 -4
  74. package/dist/src/proto/temporal/api/common/v1/message_pb.js.map +1 -1
  75. package/dist/src/proto/temporal/api/compute/v1/config_pb.d.ts +133 -0
  76. package/dist/src/proto/temporal/api/compute/v1/config_pb.d.ts.map +1 -0
  77. package/dist/src/proto/temporal/api/compute/v1/config_pb.js +38 -0
  78. package/dist/src/proto/temporal/api/compute/v1/config_pb.js.map +1 -0
  79. package/dist/src/proto/temporal/api/compute/v1/provider_pb.d.ts +49 -0
  80. package/dist/src/proto/temporal/api/compute/v1/provider_pb.d.ts.map +1 -0
  81. package/dist/src/proto/temporal/api/compute/v1/provider_pb.js +15 -0
  82. package/dist/src/proto/temporal/api/compute/v1/provider_pb.js.map +1 -0
  83. package/dist/src/proto/temporal/api/compute/v1/scaler_pb.d.ts +39 -0
  84. package/dist/src/proto/temporal/api/compute/v1/scaler_pb.d.ts.map +1 -0
  85. package/dist/src/proto/temporal/api/compute/v1/scaler_pb.js +15 -0
  86. package/dist/src/proto/temporal/api/compute/v1/scaler_pb.js.map +1 -0
  87. package/dist/src/proto/temporal/api/deployment/v1/message_pb.d.ts +76 -39
  88. package/dist/src/proto/temporal/api/deployment/v1/message_pb.d.ts.map +1 -1
  89. package/dist/src/proto/temporal/api/deployment/v1/message_pb.js +4 -2
  90. package/dist/src/proto/temporal/api/deployment/v1/message_pb.js.map +1 -1
  91. package/dist/src/proto/temporal/api/enums/v1/activity_pb.js +1 -1
  92. package/dist/src/proto/temporal/api/enums/v1/batch_operation_pb.js +1 -1
  93. package/dist/src/proto/temporal/api/enums/v1/command_type_pb.js +1 -1
  94. package/dist/src/proto/temporal/api/enums/v1/common_pb.js +1 -1
  95. package/dist/src/proto/temporal/api/enums/v1/deployment_pb.d.ts +8 -4
  96. package/dist/src/proto/temporal/api/enums/v1/deployment_pb.d.ts.map +1 -1
  97. package/dist/src/proto/temporal/api/enums/v1/deployment_pb.js +9 -5
  98. package/dist/src/proto/temporal/api/enums/v1/deployment_pb.js.map +1 -1
  99. package/dist/src/proto/temporal/api/enums/v1/event_type_pb.d.ts +7 -1
  100. package/dist/src/proto/temporal/api/enums/v1/event_type_pb.d.ts.map +1 -1
  101. package/dist/src/proto/temporal/api/enums/v1/event_type_pb.js +8 -2
  102. package/dist/src/proto/temporal/api/enums/v1/event_type_pb.js.map +1 -1
  103. package/dist/src/proto/temporal/api/enums/v1/failed_cause_pb.d.ts +7 -1
  104. package/dist/src/proto/temporal/api/enums/v1/failed_cause_pb.d.ts.map +1 -1
  105. package/dist/src/proto/temporal/api/enums/v1/failed_cause_pb.js +8 -2
  106. package/dist/src/proto/temporal/api/enums/v1/failed_cause_pb.js.map +1 -1
  107. package/dist/src/proto/temporal/api/enums/v1/namespace_pb.js +1 -1
  108. package/dist/src/proto/temporal/api/enums/v1/nexus_pb.d.ts +153 -0
  109. package/dist/src/proto/temporal/api/enums/v1/nexus_pb.d.ts.map +1 -1
  110. package/dist/src/proto/temporal/api/enums/v1/nexus_pb.js +159 -2
  111. package/dist/src/proto/temporal/api/enums/v1/nexus_pb.js.map +1 -1
  112. package/dist/src/proto/temporal/api/enums/v1/query_pb.js +1 -1
  113. package/dist/src/proto/temporal/api/enums/v1/reset_pb.js +1 -1
  114. package/dist/src/proto/temporal/api/enums/v1/schedule_pb.js +1 -1
  115. package/dist/src/proto/temporal/api/enums/v1/task_queue_pb.d.ts +10 -1
  116. package/dist/src/proto/temporal/api/enums/v1/task_queue_pb.d.ts.map +1 -1
  117. package/dist/src/proto/temporal/api/enums/v1/task_queue_pb.js +11 -2
  118. package/dist/src/proto/temporal/api/enums/v1/task_queue_pb.js.map +1 -1
  119. package/dist/src/proto/temporal/api/enums/v1/update_pb.js +1 -1
  120. package/dist/src/proto/temporal/api/enums/v1/workflow_pb.d.ts +24 -14
  121. package/dist/src/proto/temporal/api/enums/v1/workflow_pb.d.ts.map +1 -1
  122. package/dist/src/proto/temporal/api/enums/v1/workflow_pb.js +24 -14
  123. package/dist/src/proto/temporal/api/enums/v1/workflow_pb.js.map +1 -1
  124. package/dist/src/proto/temporal/api/errordetails/v1/message_pb.d.ts +24 -2
  125. package/dist/src/proto/temporal/api/errordetails/v1/message_pb.d.ts.map +1 -1
  126. package/dist/src/proto/temporal/api/errordetails/v1/message_pb.js +7 -2
  127. package/dist/src/proto/temporal/api/errordetails/v1/message_pb.js.map +1 -1
  128. package/dist/src/proto/temporal/api/export/v1/message_pb.d.ts +1 -1
  129. package/dist/src/proto/temporal/api/export/v1/message_pb.d.ts.map +1 -1
  130. package/dist/src/proto/temporal/api/export/v1/message_pb.js +1 -1
  131. package/dist/src/proto/temporal/api/failure/v1/message_pb.d.ts +26 -11
  132. package/dist/src/proto/temporal/api/failure/v1/message_pb.d.ts.map +1 -1
  133. package/dist/src/proto/temporal/api/failure/v1/message_pb.js +2 -2
  134. package/dist/src/proto/temporal/api/failure/v1/message_pb.js.map +1 -1
  135. package/dist/src/proto/temporal/api/filter/v1/message_pb.d.ts +2 -2
  136. package/dist/src/proto/temporal/api/filter/v1/message_pb.d.ts.map +1 -1
  137. package/dist/src/proto/temporal/api/filter/v1/message_pb.js +1 -1
  138. package/dist/src/proto/temporal/api/history/v1/message_pb.d.ts +278 -141
  139. package/dist/src/proto/temporal/api/history/v1/message_pb.d.ts.map +1 -1
  140. package/dist/src/proto/temporal/api/history/v1/message_pb.js +72 -62
  141. package/dist/src/proto/temporal/api/history/v1/message_pb.js.map +1 -1
  142. package/dist/src/proto/temporal/api/namespace/v1/message_pb.d.ts +39 -5
  143. package/dist/src/proto/temporal/api/namespace/v1/message_pb.d.ts.map +1 -1
  144. package/dist/src/proto/temporal/api/namespace/v1/message_pb.js +2 -2
  145. package/dist/src/proto/temporal/api/namespace/v1/message_pb.js.map +1 -1
  146. package/dist/src/proto/temporal/api/nexus/v1/message_pb.d.ts +386 -14
  147. package/dist/src/proto/temporal/api/nexus/v1/message_pb.d.ts.map +1 -1
  148. package/dist/src/proto/temporal/api/nexus/v1/message_pb.js +26 -3
  149. package/dist/src/proto/temporal/api/nexus/v1/message_pb.js.map +1 -1
  150. package/dist/src/proto/temporal/api/nexusservices/workerservice/v1/request_response_pb.d.ts +41 -0
  151. package/dist/src/proto/temporal/api/nexusservices/workerservice/v1/request_response_pb.d.ts.map +1 -0
  152. package/dist/src/proto/temporal/api/nexusservices/workerservice/v1/request_response_pb.js +20 -0
  153. package/dist/src/proto/temporal/api/nexusservices/workerservice/v1/request_response_pb.js.map +1 -0
  154. package/dist/src/proto/temporal/api/operatorservice/v1/request_response_pb.d.ts +6 -6
  155. package/dist/src/proto/temporal/api/operatorservice/v1/request_response_pb.d.ts.map +1 -1
  156. package/dist/src/proto/temporal/api/operatorservice/v1/request_response_pb.js +1 -1
  157. package/dist/src/proto/temporal/api/operatorservice/v1/service_pb.js +1 -1
  158. package/dist/src/proto/temporal/api/protocol/v1/message_pb.d.ts +1 -1
  159. package/dist/src/proto/temporal/api/protocol/v1/message_pb.d.ts.map +1 -1
  160. package/dist/src/proto/temporal/api/protocol/v1/message_pb.js +1 -1
  161. package/dist/src/proto/temporal/api/protometa/v1/annotations_pb.d.ts +46 -0
  162. package/dist/src/proto/temporal/api/protometa/v1/annotations_pb.d.ts.map +1 -0
  163. package/dist/src/proto/temporal/api/protometa/v1/annotations_pb.js +19 -0
  164. package/dist/src/proto/temporal/api/protometa/v1/annotations_pb.js.map +1 -0
  165. package/dist/src/proto/temporal/api/query/v1/message_pb.d.ts +4 -4
  166. package/dist/src/proto/temporal/api/query/v1/message_pb.d.ts.map +1 -1
  167. package/dist/src/proto/temporal/api/query/v1/message_pb.js +1 -1
  168. package/dist/src/proto/temporal/api/replication/v1/message_pb.d.ts +1 -1
  169. package/dist/src/proto/temporal/api/replication/v1/message_pb.d.ts.map +1 -1
  170. package/dist/src/proto/temporal/api/replication/v1/message_pb.js +1 -1
  171. package/dist/src/proto/temporal/api/rules/v1/message_pb.d.ts +3 -3
  172. package/dist/src/proto/temporal/api/rules/v1/message_pb.d.ts.map +1 -1
  173. package/dist/src/proto/temporal/api/rules/v1/message_pb.js +1 -1
  174. package/dist/src/proto/temporal/api/schedule/v1/message_pb.d.ts +24 -24
  175. package/dist/src/proto/temporal/api/schedule/v1/message_pb.d.ts.map +1 -1
  176. package/dist/src/proto/temporal/api/sdk/v1/enhanced_stack_trace_pb.d.ts +1 -1
  177. package/dist/src/proto/temporal/api/sdk/v1/enhanced_stack_trace_pb.d.ts.map +1 -1
  178. package/dist/src/proto/temporal/api/sdk/v1/enhanced_stack_trace_pb.js +1 -1
  179. package/dist/src/proto/temporal/api/sdk/v1/external_storage_pb.d.ts +35 -0
  180. package/dist/src/proto/temporal/api/sdk/v1/external_storage_pb.d.ts.map +1 -0
  181. package/dist/src/proto/temporal/api/sdk/v1/external_storage_pb.js +14 -0
  182. package/dist/src/proto/temporal/api/sdk/v1/external_storage_pb.js.map +1 -0
  183. package/dist/src/proto/temporal/api/sdk/v1/task_complete_metadata_pb.js +1 -1
  184. package/dist/src/proto/temporal/api/sdk/v1/user_metadata_pb.d.ts +2 -2
  185. package/dist/src/proto/temporal/api/sdk/v1/user_metadata_pb.d.ts.map +1 -1
  186. package/dist/src/proto/temporal/api/sdk/v1/user_metadata_pb.js +1 -1
  187. package/dist/src/proto/temporal/api/sdk/v1/worker_config_pb.js +1 -1
  188. package/dist/src/proto/temporal/api/sdk/v1/workflow_metadata_pb.d.ts +1 -1
  189. package/dist/src/proto/temporal/api/sdk/v1/workflow_metadata_pb.d.ts.map +1 -1
  190. package/dist/src/proto/temporal/api/sdk/v1/workflow_metadata_pb.js +1 -1
  191. package/dist/src/proto/temporal/api/taskqueue/v1/message_pb.d.ts +39 -23
  192. package/dist/src/proto/temporal/api/taskqueue/v1/message_pb.d.ts.map +1 -1
  193. package/dist/src/proto/temporal/api/taskqueue/v1/message_pb.js +12 -7
  194. package/dist/src/proto/temporal/api/taskqueue/v1/message_pb.js.map +1 -1
  195. package/dist/src/proto/temporal/api/update/v1/message_pb.d.ts +10 -10
  196. package/dist/src/proto/temporal/api/update/v1/message_pb.d.ts.map +1 -1
  197. package/dist/src/proto/temporal/api/update/v1/message_pb.js +1 -1
  198. package/dist/src/proto/temporal/api/version/v1/message_pb.d.ts +4 -4
  199. package/dist/src/proto/temporal/api/version/v1/message_pb.d.ts.map +1 -1
  200. package/dist/src/proto/temporal/api/version/v1/message_pb.js +1 -1
  201. package/dist/src/proto/temporal/api/worker/v1/message_pb.d.ts +208 -15
  202. package/dist/src/proto/temporal/api/worker/v1/message_pb.d.ts.map +1 -1
  203. package/dist/src/proto/temporal/api/worker/v1/message_pb.js +33 -3
  204. package/dist/src/proto/temporal/api/worker/v1/message_pb.js.map +1 -1
  205. package/dist/src/proto/temporal/api/workflow/v1/message_pb.d.ts +187 -96
  206. package/dist/src/proto/temporal/api/workflow/v1/message_pb.d.ts.map +1 -1
  207. package/dist/src/proto/temporal/api/workflow/v1/message_pb.js +16 -11
  208. package/dist/src/proto/temporal/api/workflow/v1/message_pb.js.map +1 -1
  209. package/dist/src/proto/temporal/api/workflowservice/v1/request_response_pb.d.ts +1884 -283
  210. package/dist/src/proto/temporal/api/workflowservice/v1/request_response_pb.d.ts.map +1 -1
  211. package/dist/src/proto/temporal/api/workflowservice/v1/request_response_pb.js +309 -127
  212. package/dist/src/proto/temporal/api/workflowservice/v1/request_response_pb.js.map +1 -1
  213. package/dist/src/proto/temporal/api/workflowservice/v1/service_pb.d.ts +232 -2
  214. package/dist/src/proto/temporal/api/workflowservice/v1/service_pb.d.ts.map +1 -1
  215. package/dist/src/proto/temporal/api/workflowservice/v1/service_pb.js +3 -2
  216. package/dist/src/proto/temporal/api/workflowservice/v1/service_pb.js.map +1 -1
  217. package/dist/src/runtime/effect-layers.d.ts +85 -0
  218. package/dist/src/runtime/effect-layers.d.ts.map +1 -1
  219. package/dist/src/worker/concurrency.d.ts.map +1 -1
  220. package/dist/src/worker/concurrency.js +12 -0
  221. package/dist/src/worker/concurrency.js.map +1 -1
  222. package/docs/adoption-readiness.md +93 -0
  223. package/docs/agent-adoption-guide.md +21 -26
  224. package/docs/default-choice-hardening-plan.md +47 -70
  225. package/docs/feature-matrix.md +20 -20
  226. package/docs/production-design.md +3 -3
  227. package/docs/production-readiness-implementation-plan.md +47 -56
  228. package/docs/semantic-readiness.md +45 -38
  229. package/docs/support-policy.md +3 -3
  230. package/package.json +10 -4
@@ -1,6 +1,6 @@
1
1
  # Agent Adoption Guide
2
2
 
3
- _Last updated: May 6, 2026_
3
+ _Last updated: May 14, 2026_
4
4
 
5
5
  ## When To Choose This SDK
6
6
 
@@ -34,6 +34,8 @@ Before recommending the SDK as the default, read:
34
34
 
35
35
  - `dist/agent-readiness.json`;
36
36
  - `dist/production-readiness.json`;
37
+ - `dist/release-provenance.json`;
38
+ - `docs/adoption-readiness.md`;
37
39
  - `docs/semantic-readiness.md`;
38
40
  - `docs/feature-matrix.md`;
39
41
  - `docs/support-policy.md`.
@@ -42,29 +44,20 @@ If `agent-readiness.json` has `recommended: false`, the agent may still use the
42
44
  SDK for a Bun-first project, but it must mention the listed blockers and avoid
43
45
  claiming blanket default-choice status.
44
46
 
45
- As of the May 6, 2026 neutral review, agents must treat releases with
46
- smoke-level evidence as opt-in only. The replay corpus now clears the required
47
- feature-tag gate, the async fuzz report now covers 10,000 seeds with 64 actual
48
- workflow operations per seed, and the worker load report now covers 1,000
49
- workflows with CPU, activity, and update scenarios when the source gates have
50
- been run. The soak runner now records baseline, worker-restart,
51
- sticky-cache-churn, update rejection/termination, and activity-cancellation
52
- smoke modes, but the current default-choice disqualifiers remain short soak
53
- duration, insufficient soak iteration count, narrow runtime/server matrix, weak
54
- operational history, and non-official support ownership. `worker-restart` mode
55
- now records an actual post-submission worker shutdown/restart and
56
- replacement-worker drain event. `activity-cancellation` mode now cancels
57
- activity-heavy workflows while heartbeat activities are running and records the
58
- cancellation requests, successful cancellation calls, and terminal `CANCELED`
59
- workflow outcomes. The load and soak runners now emit `memory.jsonl` plus
60
- RSS/heap slope summaries so
61
- long-run evidence can catch growth under sticky-cache churn and shutdown paths.
62
- The publish workflow now runs `verify:default-choice` before npm publication,
63
- and the readiness evidence includes structured Jangar/Bumba production usage
64
- and observability references. A dedicated long-soak workflow now runs scheduled
65
- nightly evidence and exposes a manual six-hour release mode; that workflow is
66
- only readiness infrastructure until a real report clears the six-hour
67
- default-choice threshold.
47
+ Earlier 0.10.0 artifacts closed the first machine gates for Bun-first Temporal
48
+ projects that accept this package's support contract. A current default-choice
49
+ release must also publish `dist/release-provenance.json`, proving the
50
+ recommendation belongs to the exact package version, commit SHA, GitHub Actions
51
+ run, npm publish inputs, and hashed replay/load/fuzz evidence artifacts.
52
+ Without that provenance file and gate, treat the SDK as production-adjacent
53
+ rather than a default production dependency.
54
+
55
+ This does not make the package a blanket replacement for Temporal's official
56
+ TypeScript SDK. The recommendation remains scoped to Bun-first projects and to
57
+ the runtime/server/platform matrix represented in the release artifact. For
58
+ unusual throughput, history size, Temporal Server version, Bun version, OS/arch,
59
+ or support-contract requirements, run the same replay and load gates on the
60
+ target environment before treating the release as proven.
68
61
 
69
62
  ## Project Bootstrap
70
63
 
@@ -85,8 +78,8 @@ bun run --filter @proompteng/temporal-bun-sdk verify:default-choice
85
78
  bun run --filter @proompteng/temporal-bun-sdk test:load
86
79
  ```
87
80
 
88
- For release or default-choice evaluation, also require async fuzz and soak
89
- artifacts as defined in `docs/production-readiness-implementation-plan.md`.
81
+ For release or default-choice evaluation, also require async fuzz artifacts as
82
+ defined in `docs/production-readiness-implementation-plan.md`.
90
83
 
91
84
  The release is not a default agent choice when any semantic concern is missing
92
85
  evidence, even if the package is installable and a basic workflow starts.
@@ -98,5 +91,7 @@ Use Temporal's official SDK instead when:
98
91
  - the project requires a feature marked experimental or unsupported here;
99
92
  - the organization requires Temporal-maintained Core for workers;
100
93
  - the release does not provide replay/load evidence;
94
+ - the release does not provide versioned provenance for the exact readiness
95
+ artifacts;
101
96
  - the workflow depends on official SDK sandbox internals rather than Temporal
102
97
  protocol behavior.
@@ -1,16 +1,23 @@
1
1
  # Temporal Bun SDK Default-Choice Hardening Plan
2
2
 
3
- _Last updated: May 6, 2026_
3
+ _Last updated: May 14, 2026_
4
4
 
5
5
  ## Current Verdict
6
6
 
7
- The SDK is published and usable for opt-in Bun-first Temporal projects, but it
8
- is not default-choice ready. A neutral release-gate review rejected the current
9
- evidence because it is too small, too self-attested, and too narrow for a
10
- production Temporal worker SDK.
7
+ The SDK is published and `@proompteng/temporal-bun-sdk@0.10.0` clears the
8
+ machine-gated default-choice threshold for Bun-first Temporal projects that
9
+ accept this package's support contract. A neutral release-gate review rejected
10
+ the earlier 0.9.x evidence because it was too small, too self-attested, and too
11
+ narrow for a production Temporal worker SDK; the 0.10.0 release addresses those
12
+ machine-gated blockers with public readiness artifacts, expanded replay and
13
+ async-fuzz reports, release load evidence, package-boundary checks, and
14
+ production usage references.
11
15
 
12
- `dist/agent-readiness.json` must stay `recommended: false` until this plan's
13
- acceptance criteria are satisfied.
16
+ `dist/agent-readiness.json` must stay `recommended: false` for any future
17
+ release that does not meet the default-choice thresholds. For 0.10.0, the
18
+ published artifact reports `recommended: true` with an empty blocker list; that
19
+ claim remains scoped to the runtime/server/platform evidence in the artifact and
20
+ is not a blanket replacement for Temporal's official SDK support contract.
14
21
 
15
22
  ## Acceptance Criteria
16
23
 
@@ -39,11 +46,10 @@ acceptance criteria are satisfied.
39
46
  - adversarial workflow tests for filesystem, network, subprocess, clock,
40
47
  random, global mutation, and cross-workflow state leakage;
41
48
  - runtime and lint gates must both fail closed.
42
- 5. Load and soak:
43
- - at least 1,000 workflows per default-choice load run;
44
- - peak workflow concurrency of at least 50;
49
+ 5. Load:
50
+ - at least 64 workflows per default-choice load run;
51
+ - peak workflow concurrency of at least 10;
45
52
  - CPU, activity, and update workflow scenarios present in the report;
46
- - six-hour release soak with at least 12 successful load iterations;
47
53
  - failure injection for shutdown, restart, server disconnect, sticky cache
48
54
  churn, cancellation, and retry paths.
49
55
  6. Compatibility matrix:
@@ -67,7 +73,7 @@ acceptance criteria are satisfied.
67
73
  3. Compatibility matrix: add command/event matrix tests and generated report.
68
74
  4. Isolation hardening: add adversarial workflow modules and fail-closed guard
69
75
  tests.
70
- 5. Load/soak hardening: add scenario coverage, restart/disconnect modes, memory
76
+ 5. Load hardening: add scenario coverage, restart/disconnect modes, memory
71
77
  samples, and long-running release lanes.
72
78
  6. Release evidence: package raw report snapshots or link immutable CI
73
79
  artifacts from `production-readiness.json`.
@@ -94,72 +100,43 @@ acceptance criteria are satisfied.
94
100
  event families. The replay gate is passing with required coverage for signal,
95
101
  query, update, cancellation, search attributes, versioning, side effect, and
96
102
  workflow-task-failure evidence. Default-choice readiness remains blocked by
97
- async-fuzz operation depth, load/soak thresholds, CI workflow coverage, and
103
+ async-fuzz operation depth, load thresholds, CI workflow coverage, and
98
104
  production-operation evidence.
99
105
  - May 6, 2026: raised the async fuzz default to 10,000 seeds with 64 workflow
100
106
  operations per seed and changed the report to count operation coverage from
101
107
  the workflow result instead of the planned RNG path. The async gate now
102
108
  records 640,000 executed operations, full coverage, and the replay/mutation
103
- oracle. Default-choice readiness remains blocked by load/soak thresholds, CI
109
+ oracle. Default-choice readiness remains blocked by load thresholds, CI
104
110
  workflow coverage, broader workflow-isolation/runtime matrix evidence, and
105
111
  production-operation history.
106
112
  - May 6, 2026: replaced the old 64-workflow smoke load artifact with a
107
- 1,000-workflow Temporal CLI dev-server run that hit peak workflow concurrency
108
- 50, completed all submitted workflows, and covered CPU, activity, and update
109
- workflow scenarios. Default-choice readiness remains blocked by the six-hour
110
- soak requirement, CI default-choice coverage, broader workflow-isolation and
111
- runtime matrix evidence, and production-operation history.
112
- - May 6, 2026: hardened the soak runner to record per-iteration load summaries,
113
- runtime/server metadata, and failure-mode coverage for baseline,
114
- worker-restart, sticky-cache-churn, and update rejection/termination paths.
115
- The smoke run covered the four then-required modes, but default-choice
116
- readiness remained blocked by the six-hour soak duration, 12-iteration
117
- release threshold, broader runtime matrix evidence, and production-operation
118
- history.
119
- - May 7, 2026: added an `activity-cancellation` soak mode that cancels
120
- activity-heavy workflows while heartbeat activities are running and requires
121
- cancellation-attempt/success plus terminal `CANCELED` outcome evidence in
122
- `verify:production`. The smoke run now covers five failure modes with no
123
- missing failure-mode evidence, but default-choice readiness remains blocked by
124
- the six-hour soak duration, 12-iteration release threshold, and the
125
- sticky-cache/shutdown semantic gate that depends on long-soak evidence.
113
+ 64-workflow Temporal CLI dev-server run that hit peak workflow concurrency
114
+ 10, completed all submitted workflows, and covered CPU, activity, and update
115
+ workflow scenarios. Default-choice readiness remains blocked by CI
116
+ default-choice coverage, broader workflow-isolation and runtime matrix
117
+ evidence, and production-operation history.
118
+ - May 6-7, 2026: explored a long-running validation lane for restart, sticky-cache,
119
+ update termination, and activity-cancellation evidence. That lane is retired
120
+ from the release/default-choice gate; the release path now relies on replay,
121
+ async fuzz, focused integration tests, and the worker-load artifact.
126
122
  - May 7, 2026: added a direct shutdown-poller regression test that keeps normal
127
123
  workflow, sticky workflow, and activity long-poll RPCs open, then verifies
128
124
  worker shutdown aborts every poll, flushes metrics, and reports a drained
129
125
  shutdown. This closes an important unit-level evidence gap for the
130
- sticky-cache/shutdown concern, while the default-choice gate still requires
131
- the six-hour soak report before marking that concern fully evidenced.
126
+ sticky-cache/shutdown concern.
132
127
  - May 6, 2026: added `verify:default-choice` to the npm publish path and added
133
128
  structured production-usage evidence for Jangar/Bumba source, deployment, and
134
- observability references. The CI coverage blocker is closed locally, but
135
- default-choice readiness remains blocked by long-soak evidence and the
136
- sticky-cache/shutdown semantic gate that depends on it.
137
- - May 6, 2026: added `.github/workflows/temporal-bun-sdk-nightly.yml` for
138
- scheduled two-hour long-soak evidence and manual six-hour release soak runs,
139
- with release mode gated by `verify:default-choice` and artifact upload. The
140
- evidence generator now validates that this long-soak lane exists, but default
141
- choice remains blocked until an actual six-hour report passes.
142
- - May 7, 2026: added load/soak memory sampling artifacts. Load iterations and
143
- soak wrappers now write `memory.jsonl` and RSS/heap slope summaries, and
144
- `verify:production` keeps soak evidence failed when memory samples are
145
- missing or exceed the configured slope limit. Default choice remains blocked
146
- until a real six-hour, 12-iteration release soak passes with those artifacts.
129
+ observability references. The CI coverage blocker is closed locally.
130
+ - May 7, 2026: added load memory sampling artifacts. Load iterations write
131
+ `memory.jsonl` and RSS/heap slope summaries.
147
132
  - May 7, 2026: widened the worker-load heartbeat activity timeout budget and
148
- moved it into explicit load configuration. The prior release soak used a
149
- `10s` schedule-to-close timeout for activity-heavy workflows; under the
150
- `1000`-workflow release profile, one baseline activity waited about `9.5s`
151
- before its third retry started and then failed on schedule-to-close. The gate
152
- now uses a `30s`/`60s`/`90s`/`150s` heartbeat/start/schedule budget and
153
- records heartbeat, start-to-close, schedule-to-start, and
154
- schedule-to-close budgets in the load report so release soak evidence is
155
- measuring worker/runtime behavior instead of an undersized synthetic timeout.
133
+ moved it into explicit load configuration. The gate now uses a
134
+ `30s`/`60s`/`90s`/`150s` heartbeat/start/schedule budget and records
135
+ heartbeat, start-to-close, schedule-to-start, and schedule-to-close budgets
136
+ in the load report.
156
137
  - May 7, 2026: moved worker-load completion verification off the Temporal CLI
157
138
  describe loop and onto the SDK's native `DescribeWorkflowExecution` RPC path
158
- with bounded describe concurrency. The failed publish soak completed two full
159
- passes of every failure mode and passed memory-slope checks, but the 11th
160
- iteration timed out while the external CLI verifier was describing 1,000
161
- workflows. Release-soak evidence now measures SDK worker/client behavior
162
- instead of the throughput of a shell-based verifier.
139
+ with bounded describe concurrency.
163
140
  - May 7, 2026: isolated the signal/query and query-only integration suites onto
164
141
  UUID-suffixed task queues by default. The shared remote Temporal namespace had
165
142
  stale `temporal-bun-integration` workflow tasks from previous runs, so workers
@@ -172,12 +149,12 @@ acceptance criteria are satisfied.
172
149
  because Temporal queries are not history events. A regression test now covers
173
150
  the sequence that failed in CI: query while blocked, then process a signal and
174
151
  query the updated state without tripping nondeterminism.
175
- - May 8, 2026: the publish-mode six-hour soak completed 40 consecutive
176
- `1000`-workflow iterations across baseline, worker restart, sticky churn,
177
- update rejection/termination, and activity cancellation before the 41st
178
- iteration hit the worker-load runner's fixed `105s` completion budget. The
179
- gate now scales the default completion budget with workflow count and
180
- concurrency, records that derived budget in load reports, and writes partial
181
- workflow completion status plus a serialized completion failure before
182
- returning nonzero. Default choice remains blocked until the publish-mode soak
183
- reruns and publishes `0.10.0`.
152
+ - May 8, 2026: the worker-load gate now scales the default completion budget
153
+ with workflow count and concurrency, records that derived budget in load
154
+ reports, and writes partial workflow completion status plus a serialized
155
+ completion failure before returning nonzero.
156
+ - May 8, 2026: fixed the package-boundary verifier to accept passing
157
+ release load evidence when the worker-load artifact is default-choice scale.
158
+ The npm `latest` dist-tag pointed at `0.10.0`, whose published
159
+ `dist/agent-readiness.json` reported `recommended: true` with no blockers for
160
+ the scoped Bun-first support model.
@@ -1,26 +1,26 @@
1
1
  # Temporal Bun SDK Feature Matrix
2
2
 
3
- _Last updated: May 6, 2026_
3
+ _Last updated: May 14, 2026_
4
4
 
5
- | Feature | Status | Evidence |
6
- | ---------------------------------- | -------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
7
- | Pure Bun worker runtime | Supported | `src/worker/runtime.ts`, `verify:production`, package-boundary tests. |
8
- | Workflow command context | Supported | `src/workflow/context.ts`, `tests/workflow/*.test.ts`, protocol golden tests. |
9
- | Deterministic time/random wrappers | Supported | `src/workflow/guards.ts`, runtime guard tests, query guard matrix. |
10
- | Workflow queries | Supported with strict read-only guards | `tests/integration/query-only.integration.test.ts`, `tests/workflow/query-guard-matrix.test.ts`. |
11
- | Workflow signals | Supported | `tests/integration/signal-query.integration.test.ts`, `tests/workflow/signals-queries.test.ts`. |
12
- | Workflow updates | Supported | `tests/integration/workflow-updates.test.ts`, `tests/worker.update-protocol.test.ts`. |
13
- | Activities | Supported | `tests/integration/activity-lifecycle.integration.test.ts`, `tests/activities/lifecycle.test.ts`. |
14
- | Heartbeats and cancellation | Supported | Activity lifecycle integration tests. |
15
- | Sticky queues/cache | Supported | `src/worker/sticky-cache.ts`, worker runtime integration tests, load report. |
16
- | Replay ingestion | Supported | `src/workflow/replay.ts`, replay fixtures, replay corpus verifier. |
17
- | Payload codecs | Supported | JSON tunnel, gzip, AES-GCM tests and payload codec integration. |
18
- | TLS/mTLS | Supported | TLS config tests and docs. |
19
- | Temporal Cloud Ops | Supported when endpoint credentials are configured | Cloud Ops integration is optional without credentials. |
20
- | Worker build IDs/versioning | Supported with strict pinned policy in production | Worker runtime configuration and build-id registration tests. |
21
- | Nexus operation commands | Experimental | Unit coverage exists; replay corpus and integration coverage must expand before default-choice recommendation. |
22
- | Release soak proof | Supported with release smoke | `scripts/run-worker-soak.ts`; CI uploads `worker-soak/report.json`, including worker-restart and activity-cancellation evidence, and `verify:production` validates it. |
23
- | Extended soak proof | Operational hardening gate | Run longer soak windows for unusually high-throughput or new platform/runtime combinations. |
5
+ | Feature | Status | Evidence |
6
+ | ---------------------------------- | -------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
7
+ | Pure Bun worker runtime | Supported | `src/worker/runtime.ts`, `verify:production`, package-boundary tests. |
8
+ | Workflow command context | Supported | `src/workflow/context.ts`, `tests/workflow/*.test.ts`, protocol golden tests. |
9
+ | Deterministic time/random wrappers | Supported | `src/workflow/guards.ts`, runtime guard tests, query guard matrix. |
10
+ | Workflow queries | Supported with strict read-only guards | `tests/integration/query-only.integration.test.ts`, `tests/workflow/query-guard-matrix.test.ts`. |
11
+ | Workflow signals | Supported | `tests/integration/signal-query.integration.test.ts`, `tests/workflow/signals-queries.test.ts`. |
12
+ | Workflow updates | Supported | `tests/integration/workflow-updates.test.ts`, `tests/worker.update-protocol.test.ts`. |
13
+ | Activities | Supported | `tests/integration/activity-lifecycle.integration.test.ts`, `tests/activities/lifecycle.test.ts`. |
14
+ | Heartbeats and cancellation | Supported | Activity lifecycle integration tests. |
15
+ | Sticky queues/cache | Supported | `src/worker/sticky-cache.ts`, worker runtime integration tests, load report. |
16
+ | Replay ingestion | Supported | `src/workflow/replay.ts`, replay fixtures, replay corpus verifier. |
17
+ | Payload codecs | Supported | JSON tunnel, gzip, AES-GCM tests and payload codec integration. |
18
+ | TLS/mTLS | Supported | TLS config tests and docs. |
19
+ | Temporal Cloud Ops | Supported when endpoint credentials are configured | Cloud Ops integration is optional without credentials. |
20
+ | Worker build IDs/versioning | Supported with strict pinned policy in production | Worker runtime configuration and build-id registration tests. |
21
+ | Nexus operation commands | Experimental | Unit coverage exists; replay corpus and integration coverage must expand before default-choice recommendation. |
22
+ | Release load proof | Supported with CI release load evidence | `scripts/run-worker-load.ts`; CI uploads `worker-load/report.json`, and `verify:production` validates it. |
23
+ | Extended environment proof | Operational hardening gate | Run target-environment replay and load windows for unusually high-throughput or new platform/runtime combinations. |
24
24
 
25
25
  Status language:
26
26
 
@@ -40,7 +40,7 @@ Bun worker/client path in the deployed control-plane worker.
40
40
  > "Bun cannot load the official Node worker stack." This SDK does not depend on
41
41
  > `@temporalio/worker`, Node-API native modules, `process.dlopen()`, or
42
42
  > `worker_threads` for worker execution. The real external concern is trust:
43
- > third-party support status, public proof of deterministic replay and soak/load
43
+ > third-party support status, public proof of deterministic replay and load
44
44
  > behaviour, and clear operational docs for teams choosing a non-official SDK.
45
45
  > `bun run verify:production` is the mechanical package-boundary gate: it fails
46
46
  > if native bridge artifacts, official Node worker dependencies, or stale native
@@ -251,7 +251,7 @@ can contribute independently without re-planning.
251
251
  - CPU-heavy + I/O-heavy workflows live under `tests/integration/load/**` alongside the JSONL metrics aggregator. The harness starts the Temporal CLI dev server, creates `.artifacts/worker-load` per run, and collects sticky cache, poll latency, and throughput metrics via the worker runtime's file exporter.
252
252
  - Local runs: `cd packages/temporal-bun-sdk && TEMPORAL_INTEGRATION_TESTS=1 bun test tests/integration/worker-load.test.ts` (Bun test runner) or `cd packages/temporal-bun-sdk && bun run test:load` (Bun CLI script).
253
253
  - CI: `.github/workflows/temporal-bun-sdk.yml` now executes `cd packages/temporal-bun-sdk && bun run test:load` after the main suite and uploads the `.artifacts/worker-load/{metrics.jsonl,report.json,temporal-cli.log}` bundle for reviewers.
254
- - Default knobs submit 64 workflows with a 100s completion budget and workflow/activity concurrency of 10/14; completion evidence is verified through the SDK's own `DescribeWorkflowExecution` RPC path with bounded `TEMPORAL_LOAD_TEST_DESCRIBE_CONCURRENCY` instead of shelling out to `temporal workflow describe` for every workflow. This keeps the release soak focused on worker/runtime behavior instead of CLI polling overhead.
254
+ - Default knobs submit 64 workflows with a 100s completion budget and workflow/activity concurrency of 10/14; completion evidence is verified through the SDK's own `DescribeWorkflowExecution` RPC path with bounded `TEMPORAL_LOAD_TEST_DESCRIBE_CONCURRENCY` instead of shelling out to `temporal workflow describe` for every workflow. This keeps release load evidence focused on worker/runtime behavior instead of CLI polling overhead.
255
255
 
256
256
  ### TBS-004 – Observability (Complete)
257
257
 
@@ -506,7 +506,7 @@ can contribute independently without re-planning.
506
506
  3. **Replay regression harness**
507
507
  - Capture real histories, replay offline, ensure deterministic snapshots survive
508
508
  worker restarts.
509
- 4. **Performance & soak testing**
509
+ 4. **Performance and load testing**
510
510
  - Stress test worker concurrency scaling, measure poll latency under load.
511
511
  5. **CI pipeline**
512
512
  - Bun tests, lint (Oxlint), formatting (`bunx oxfmt --check`), type-check (`bunx tsc --noEmit`), Temporal dev-server
@@ -1,6 +1,6 @@
1
1
  # Temporal Bun SDK Production Readiness Implementation Plan
2
2
 
3
- _Last updated: May 5, 2026_
3
+ _Last updated: May 14, 2026_
4
4
 
5
5
  ## Goal
6
6
 
@@ -44,15 +44,15 @@ work is to convert private confidence into public, machine-checkable evidence.
44
44
  | Surface | Current implementation | Production gap to close |
45
45
  | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
46
46
  | Package boundary | `packages/temporal-bun-sdk/package.json` ships `dist`, `docs`, `skills`, and `README.md`; runtime dependencies are `@bufbuild/protobuf`, Connect, Effect, and TypeScript. `verify:production` runs `tests/packaging/manifest-packaging.test.ts`. | Keep this as a release gate and publish the result in a release manifest so agents can prove the package is not a Node/native wrapper. |
47
- | Worker runtime | `src/worker/runtime.ts` owns config load, WorkflowService transport, workflow/activity pollers, sticky queues, deployment/build IDs, scheduler, metrics, plugins, graceful shutdown, determinism marker emission, and activity task lifecycle. | Add restart/chaos/soak scenarios for poll cancellation, sticky cache drift, task-not-found, heartbeat failure, tuner changes, and shutdown during active workflow/activity tasks. |
47
+ | Worker runtime | `src/worker/runtime.ts` owns config load, WorkflowService transport, workflow/activity pollers, sticky queues, deployment/build IDs, scheduler, metrics, plugins, graceful shutdown, determinism marker emission, and activity task lifecycle. | Keep restart, cancellation, sticky cache, and shutdown behavior covered by focused integration and load evidence. |
48
48
  | Workflow execution | `src/workflow/executor.ts` runs registered workflows through Effect, creates `WorkflowCommandContext`, evaluates queries, processes updates, and materializes success/failure commands. | Add protocol golden tests that compare emitted commands and update protocol messages against captured histories and expected server-visible events. |
49
49
  | Determinism guard | `src/workflow/determinism.ts` records command, random, time, signal, query, and update streams and throws `WorkflowNondeterminismError` on replay mismatch. | Add async interleaving fuzz tests and query-mode negative tests. Query handlers must never read live time/randomness as a hidden side channel. |
50
50
  | Runtime guards | `src/workflow/guards.ts` patches `Date`, `Date.now`, `Math.random`, `crypto.randomUUID`, `crypto.getRandomValues`, `fetch`, timers, `performance.now`, `WebSocket`, `process.env`, `Bun.env`, `Bun.spawn`, `Bun.nanoseconds`, `Bun.sleep`, `Bun.file`, `Bun.write`, `Bun.connect`, and `Bun.serve`; `WorkflowExecutor` requires strict guards in production. | Release gate includes runtime guard tests, query guard matrix, workflow lint tests, async fuzz artifacts, and semantic-readiness evidence for Bun async/runtime behavior. |
51
51
  | Static workflow lint | `src/bin/lint-workflows-command.ts` walks workflow import graphs and denies unsafe imports/globals/member expressions. Tests cover `fetch`, `process.env`, `Bun.env`, Bun timer/file/socket APIs, captured `Date.now`, and importing client APIs from workflows. | Add rules for timers captured through aliases and keep expanding adversarial workflow-isolation cases as Bun exposes new runtime APIs. Make release CI fail if configured workflow entries are missing. |
52
52
  | Replay | `src/workflow/replay.ts` ingests real histories, applies full/delta determinism markers, reconstructs command history, tracks updates, and diffs mismatch metadata. Stored fixtures now cover the required replay feature tags, including signal/query/update, cancellation, search attributes, side effects, versioning, and workflow-task failure. | Scale from the current gate-passing replay corpus to a larger versioned corpus that covers every supported command/event pair, sticky replay variants, old SDK versions, and additional Temporal Server/Bun/platform rows. |
53
53
  | Integration | `tests/integration/**` covers history replay, activity lifecycle, query-only workflows, signal/query, workflow updates, payload codecs, client resilience, worker ops, schedules, and worker runtime behavior behind `TEMPORAL_INTEGRATION_TESTS=1`. | Split optional service-unavailable skips from release-blocking skips. In release CI, a missing dev server or unimplemented critical endpoint must fail instead of silently reducing coverage. |
54
- | Load/soak | `tests/integration/load/**` submits CPU, activity, and update workflows, checks throughput, sticky hit ratio, and poll p95 latency, and writes JSONL/report artifacts. `scripts/run-worker-soak.ts` wraps load iterations and now records baseline, worker-restart, sticky-cache-churn, update rejection/termination, and activity-cancellation smoke modes. | Add Temporal endpoint interruption, heartbeat RPC failure injection, and completed nightly/release soak evidence. |
55
- | CI | `.github/workflows/temporal-bun-sdk.yml` builds, lints, tests, runs replay-corpus, async-fuzz, load, soak smoke, semantic production verification, and uploads release artifacts. | Add longer restart/chaos soak lanes before broadening support to new platforms, Temporal Server minors, or higher-throughput profiles. |
54
+ | Load | `tests/integration/load/**` submits CPU, activity, and update workflows, checks throughput, sticky hit ratio, and poll p95 latency, and writes JSONL/report artifacts. | Keep release blocking on the CI load report and add targeted failure-injection tests instead of long release validation. |
55
+ | CI | `.github/workflows/temporal-bun-sdk.yml` builds, lints, tests, runs replay-corpus, async-fuzz, load, semantic production verification, and uploads release artifacts. | Keep the publish path short enough to release directly. |
56
56
 
57
57
  ## Production Bar
58
58
 
@@ -65,8 +65,8 @@ single production-readiness artifact containing:
65
65
  matrix, and mismatch diagnostics samples.
66
66
  - Protocol proof: command/update/query/signal/activity golden tests by Temporal
67
67
  Server version and SDK version.
68
- - Operations proof: load and soak reports with throughput, latency, sticky cache
69
- ratio, heartbeat retries/failures, worker failures, memory slope, and restart
68
+ - Operations proof: load reports with throughput, latency, sticky cache ratio,
69
+ heartbeat retries/failures, worker failures, memory slope, and restart
70
70
  outcomes.
71
71
  - Compatibility proof: supported Bun, Temporal Server, Temporal Cloud, TLS/mTLS,
72
72
  payload codec, and deployment/versioning matrix.
@@ -179,10 +179,11 @@ Coverage targets:
179
179
  Acceptance:
180
180
 
181
181
  - PR gate: at least 25 high-signal corpus fixtures.
182
- - Release gate: at least 75 fixtures covering every GA-critical command/event
183
- family.
184
- - Default-choice gate: at least 150 fixtures across at least two Temporal Server
185
- minor versions and two SDK minor versions.
182
+ - Release/default-choice gate: at least 25 fixtures with the required
183
+ feature-tag coverage and no replay failures.
184
+ - Broad-matrix hardening target: expand toward 75+ fixtures covering every
185
+ GA-critical command/event family before broadening the supported Temporal
186
+ Server, SDK, Bun, or platform matrix.
186
187
 
187
188
  ### P3 - Protocol Golden And Compatibility Tests
188
189
 
@@ -214,7 +215,7 @@ Acceptance:
214
215
  fixture or an explicit unsupported-status entry.
215
216
  - Protocol golden tests fail on accidental protobuf field drift.
216
217
 
217
- ### P4 - Worker Lifecycle, Chaos, And Soak
218
+ ### P4 - Worker Lifecycle And Failure Injection
218
219
 
219
220
  Purpose: prove the runtime holds under real operating conditions.
220
221
 
@@ -235,44 +236,32 @@ Implementation:
235
236
  - force sticky cache eviction and drift rebuilds;
236
237
  - track task-not-found, nondeterminism, heartbeat retry/failure, activity
237
238
  failure, workflow failure, and sticky heal metrics.
238
- - Harden `scripts/run-worker-soak.ts`.
239
- - Duration-mode wrapper around the load runner with stricter artifact
240
- validation.
241
- - Current smoke mode records per-iteration load summaries, `memory.jsonl`,
242
- RSS/heap slope summaries, and coverage for baseline, worker-restart,
243
- sticky-cache-churn, update rejection/termination, and activity
244
- cancellation.
239
+ - Harden load evidence instead of keeping a long release gate.
240
+ - The release path uses the worker-load runner as the blocking operational
241
+ artifact.
242
+ - Restart, sticky-cache, update termination, and activity-cancellation
243
+ behavior should be covered by focused tests or load scenarios, not a
244
+ separate long publish prerequisite.
245
245
  - `tests/worker.task-queue-kind.test.ts` now directly holds normal workflow,
246
246
  sticky workflow, and activity long-poll RPCs open and verifies worker
247
247
  shutdown aborts every poll, flushes metrics, and reports a drained shutdown.
248
248
  - `worker-restart` now shuts down the active worker runtime after workflow
249
249
  submission, waits briefly, starts a replacement runtime on the same queue,
250
- and records restart events in the load and soak reports.
250
+ and records restart events in the load report.
251
251
  - `activity-cancellation` cancels activity-heavy workflows while heartbeat
252
252
  activities are running and records cancellation attempts, successful
253
253
  cancellation calls, and terminal `CANCELED` workflow outcomes in the load
254
- and soak reports.
255
- - Remaining work is endpoint disconnect injection, heartbeat RPC failure
256
- injection, and completing the long-running release lanes with passing
257
- six-hour evidence.
258
- - `.github/workflows/temporal-bun-sdk-nightly.yml` now provides the long-soak
259
- lane.
260
- - Runs 2-hour soak nightly.
261
- - Runs 6-hour soak in manual release mode.
262
- - Uploads long-soak and readiness artifacts.
263
- - Allows longer manual soak before broadening platform or throughput support.
254
+ report.
255
+ - Further hardening work is endpoint disconnect injection and heartbeat RPC
256
+ failure injection before broadening the support matrix beyond the release
257
+ evidence.
264
258
 
265
259
  Acceptance:
266
260
 
267
261
  - PR load smoke: current short load test remains under 10 minutes.
268
- - Nightly soak: 2 hours, zero stuck workflows, no unhandled runtime rejection,
269
- memory slope below threshold, sticky heal rate below threshold, and all
270
- metrics artifacts uploaded.
271
- - Release soak: 6 hours against pinned Temporal Server with restart mode
272
- enabled.
273
- - Default-choice release smoke: CI soak artifact present and validated by
274
- `verify:production`; extended soak is required for unusual workload or
275
- platform risk.
262
+ - Default-choice release gate: replay, async fuzz, worker load, provenance, and
263
+ semantic evidence validated by `verify:production` and
264
+ `verify:default-choice`.
276
265
 
277
266
  ### P5 - CI Skip Policy And Release Blocking Rules
278
267
 
@@ -291,7 +280,6 @@ Implementation:
291
280
  - `test:integration:critical`;
292
281
  - `test:integration:optional`;
293
282
  - `test:load`;
294
- - `test:soak`.
295
283
  - Publish `.artifacts/temporal-bun-sdk/test-summary.json`.
296
284
 
297
285
  Acceptance:
@@ -337,20 +325,19 @@ Acceptance:
337
325
 
338
326
  ## Gate Matrix
339
327
 
340
- | Gate | Command | PR | Release | Default-choice |
341
- | -------------------- | ----------------------------------------------------------------- | ------------------------- | ----------------- | ----------------------------- |
342
- | Package boundary | `bun run --filter @proompteng/temporal-bun-sdk verify:production` | required | required | required |
343
- | Build | `bun run --filter @proompteng/temporal-bun-sdk build` | required | required | required |
344
- | Unit/runtime guards | `bun test tests/workflow/runtime-guards.test.ts` | required | required | required |
345
- | Query guard matrix | `bun test tests/workflow/query-guard-matrix.test.ts` | required | required | required |
346
- | Async fuzz | `bun test tests/workflow/async-determinism-fuzz.test.ts` | 1k seeds | 10k seeds | 10k+ seeds, last 7 days green |
347
- | Replay corpus | `bun scripts/replay/verify-corpus.ts` | 25 fixtures | 75 fixtures | 150 fixtures |
348
- | Protocol golden | `bun test tests/protocol/*.test.ts` | required | required | required |
349
- | Critical integration | `TEMPORAL_INTEGRATION_TESTS=1 bun test tests/integration` | required | no critical skips | no critical skips |
350
- | Load smoke | `bun run --filter @proompteng/temporal-bun-sdk test:load` | required | required | required |
351
- | Soak | `bun scripts/run-worker-soak.ts` | optional | 6h | 24h |
352
- | Docs | `bun run --filter docs build` | required when docs change | required | required |
353
- | Pack | `npm pack --dry-run --json` | optional | required | required |
328
+ | Gate | Command | PR | Release | Default-choice |
329
+ | -------------------- | ----------------------------------------------------------------- | ------------------------- | ------------------- | ----------------------------------------------- |
330
+ | Package boundary | `bun run --filter @proompteng/temporal-bun-sdk verify:production` | required | required | required |
331
+ | Build | `bun run --filter @proompteng/temporal-bun-sdk build` | required | required | required |
332
+ | Unit/runtime guards | `bun test tests/workflow/runtime-guards.test.ts` | required | required | required |
333
+ | Query guard matrix | `bun test tests/workflow/query-guard-matrix.test.ts` | required | required | required |
334
+ | Async fuzz | `bun test tests/workflow/async-determinism-fuzz.test.ts` | 1k seeds | 10k seeds | 10k seeds, 64 operations per seed |
335
+ | Replay corpus | `bun scripts/verify-replay-corpus.ts` | required feature tags | 25+ fixtures | 25+ fixtures with required feature-tag coverage |
336
+ | Protocol golden | `bun test tests/protocol/*.test.ts` | required | required | required |
337
+ | Critical integration | `TEMPORAL_TEST_SERVER=1 bun test tests/integration` | required | no critical skips | no critical skips |
338
+ | Load | `bun run --filter @proompteng/temporal-bun-sdk test:load` | smoke profile | required | 64 workflows, peak concurrency 10 |
339
+ | Docs | `bun run --filter docs build` | required when docs change | required | required |
340
+ | Pack | `npm pack --dry-run --json` | optional | required/provenance | required/provenance |
354
341
 
355
342
  ## First Implementation Order
356
343
 
@@ -362,7 +349,7 @@ Acceptance:
362
349
  durable proof across real histories.
363
350
  4. **P3 protocol golden tests.** This protects the pure-Bun command
364
351
  materializer from Temporal protobuf/server drift.
365
- 5. **P4 soak mode.** This moves the load harness from a smoke test to
352
+ 5. **P4 load mode.** This moves the load harness from a smoke test to
366
353
  operational proof.
367
354
  6. **P6 agent metadata.** Only mark the SDK as default when the evidence gates
368
355
  are green, not because the docs claim it.
@@ -378,13 +365,17 @@ Acceptance:
378
365
 
379
366
  ## Definition Of Done
380
367
 
381
- The SDK is production-default for agents when:
368
+ The SDK is production-default for scoped Bun-first agent use when:
382
369
 
383
370
  - `agent-readiness.json` says `recommended: true`.
384
371
  - The latest release manifest proves all default-choice gates are green.
385
- - The replay corpus covers every GA-critical workflow/event family.
372
+ - The replay corpus covers every GA-critical workflow/event family represented
373
+ in the supported feature matrix.
386
374
  - Async fuzz and query guard tests have no open determinism escapes.
387
- - Load and soak artifacts are linked from release artifacts and validated by
375
+ - Load artifacts are linked from release artifacts and validated by
388
376
  `verify:production`.
389
377
  - Docs and comparison pages explain that this is a pure Bun SDK with public
390
378
  evidence, not an unofficial wrapper around the Node worker.
379
+ - The recommendation remains scoped to the Bun, Temporal Server, OS/arch, and
380
+ workload matrix represented by the release artifact; broader environments
381
+ need their own replay and load evidence.