@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.
- package/README.md +14 -10
- package/dist/agent-readiness.json +102 -18
- package/dist/production-readiness.json +246 -94
- package/dist/release-provenance.json +82 -0
- package/dist/src/activities/lifecycle.js +15 -4
- package/dist/src/activities/lifecycle.js.map +1 -1
- package/dist/src/client/retries.d.ts.map +1 -1
- package/dist/src/client/retries.js +12 -2
- package/dist/src/client/retries.js.map +1 -1
- package/dist/src/proto/protoc-gen-openapiv2/options/annotations_pb.js +1 -1
- package/dist/src/proto/protoc-gen-openapiv2/options/openapiv2_pb.d.ts +14 -14
- package/dist/src/proto/protoc-gen-openapiv2/options/openapiv2_pb.d.ts.map +1 -1
- package/dist/src/proto/protoc-gen-openapiv2/options/openapiv2_pb.js +1 -1
- package/dist/src/proto/temporal/api/activity/v1/message_pb.d.ts +106 -35
- package/dist/src/proto/temporal/api/activity/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/activity/v1/message_pb.js +18 -2
- package/dist/src/proto/temporal/api/activity/v1/message_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/batch/v1/message_pb.d.ts +12 -12
- package/dist/src/proto/temporal/api/batch/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/batch/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/callback/v1/message_pb.d.ts +72 -0
- package/dist/src/proto/temporal/api/callback/v1/message_pb.d.ts.map +1 -0
- package/dist/src/proto/temporal/api/callback/v1/message_pb.js +18 -0
- package/dist/src/proto/temporal/api/callback/v1/message_pb.js.map +1 -0
- package/dist/src/proto/temporal/api/cloud/account/v1/message_pb.d.ts +5 -5
- package/dist/src/proto/temporal/api/cloud/account/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/cloud/account/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/cloud/auditlog/v1/message_pb.d.ts +3 -3
- package/dist/src/proto/temporal/api/cloud/auditlog/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/cloud/auditlog/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/cloud/billing/v1/message_pb.d.ts +206 -0
- package/dist/src/proto/temporal/api/cloud/billing/v1/message_pb.d.ts.map +1 -0
- package/dist/src/proto/temporal/api/cloud/billing/v1/message_pb.js +95 -0
- package/dist/src/proto/temporal/api/cloud/billing/v1/message_pb.js.map +1 -0
- package/dist/src/proto/temporal/api/cloud/cloudservice/v1/request_response_pb.d.ts +462 -82
- package/dist/src/proto/temporal/api/cloud/cloudservice/v1/request_response_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/cloud/cloudservice/v1/request_response_pb.js +223 -132
- package/dist/src/proto/temporal/api/cloud/cloudservice/v1/request_response_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/cloud/cloudservice/v1/service_pb.d.ts +95 -1
- package/dist/src/proto/temporal/api/cloud/cloudservice/v1/service_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/cloud/cloudservice/v1/service_pb.js +2 -2
- package/dist/src/proto/temporal/api/cloud/cloudservice/v1/service_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/cloud/connectivityrule/v1/message_pb.d.ts +11 -3
- package/dist/src/proto/temporal/api/cloud/connectivityrule/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/cloud/connectivityrule/v1/message_pb.js +2 -2
- package/dist/src/proto/temporal/api/cloud/connectivityrule/v1/message_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/cloud/identity/v1/message_pb.d.ts +173 -24
- package/dist/src/proto/temporal/api/cloud/identity/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/cloud/identity/v1/message_pb.js +22 -2
- package/dist/src/proto/temporal/api/cloud/identity/v1/message_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/cloud/namespace/v1/message_pb.d.ts +325 -26
- package/dist/src/proto/temporal/api/cloud/namespace/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/cloud/namespace/v1/message_pb.js +105 -22
- package/dist/src/proto/temporal/api/cloud/namespace/v1/message_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/cloud/nexus/v1/message_pb.d.ts +5 -5
- package/dist/src/proto/temporal/api/cloud/nexus/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/cloud/nexus/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/cloud/operation/v1/message_pb.d.ts +4 -4
- package/dist/src/proto/temporal/api/cloud/operation/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/cloud/operation/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/cloud/region/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/cloud/resource/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/cloud/sink/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/cloud/usage/v1/message_pb.d.ts +2 -2
- package/dist/src/proto/temporal/api/cloud/usage/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/cloud/usage/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/command/v1/message_pb.d.ts +61 -52
- package/dist/src/proto/temporal/api/command/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/command/v1/message_pb.js +2 -2
- package/dist/src/proto/temporal/api/command/v1/message_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/common/v1/message_pb.d.ts +118 -2
- package/dist/src/proto/temporal/api/common/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/common/v1/message_pb.js +24 -4
- package/dist/src/proto/temporal/api/common/v1/message_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/compute/v1/config_pb.d.ts +133 -0
- package/dist/src/proto/temporal/api/compute/v1/config_pb.d.ts.map +1 -0
- package/dist/src/proto/temporal/api/compute/v1/config_pb.js +38 -0
- package/dist/src/proto/temporal/api/compute/v1/config_pb.js.map +1 -0
- package/dist/src/proto/temporal/api/compute/v1/provider_pb.d.ts +49 -0
- package/dist/src/proto/temporal/api/compute/v1/provider_pb.d.ts.map +1 -0
- package/dist/src/proto/temporal/api/compute/v1/provider_pb.js +15 -0
- package/dist/src/proto/temporal/api/compute/v1/provider_pb.js.map +1 -0
- package/dist/src/proto/temporal/api/compute/v1/scaler_pb.d.ts +39 -0
- package/dist/src/proto/temporal/api/compute/v1/scaler_pb.d.ts.map +1 -0
- package/dist/src/proto/temporal/api/compute/v1/scaler_pb.js +15 -0
- package/dist/src/proto/temporal/api/compute/v1/scaler_pb.js.map +1 -0
- package/dist/src/proto/temporal/api/deployment/v1/message_pb.d.ts +76 -39
- package/dist/src/proto/temporal/api/deployment/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/deployment/v1/message_pb.js +4 -2
- package/dist/src/proto/temporal/api/deployment/v1/message_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/enums/v1/activity_pb.js +1 -1
- package/dist/src/proto/temporal/api/enums/v1/batch_operation_pb.js +1 -1
- package/dist/src/proto/temporal/api/enums/v1/command_type_pb.js +1 -1
- package/dist/src/proto/temporal/api/enums/v1/common_pb.js +1 -1
- package/dist/src/proto/temporal/api/enums/v1/deployment_pb.d.ts +8 -4
- package/dist/src/proto/temporal/api/enums/v1/deployment_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/enums/v1/deployment_pb.js +9 -5
- package/dist/src/proto/temporal/api/enums/v1/deployment_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/enums/v1/event_type_pb.d.ts +7 -1
- package/dist/src/proto/temporal/api/enums/v1/event_type_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/enums/v1/event_type_pb.js +8 -2
- package/dist/src/proto/temporal/api/enums/v1/event_type_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/enums/v1/failed_cause_pb.d.ts +7 -1
- package/dist/src/proto/temporal/api/enums/v1/failed_cause_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/enums/v1/failed_cause_pb.js +8 -2
- package/dist/src/proto/temporal/api/enums/v1/failed_cause_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/enums/v1/namespace_pb.js +1 -1
- package/dist/src/proto/temporal/api/enums/v1/nexus_pb.d.ts +153 -0
- package/dist/src/proto/temporal/api/enums/v1/nexus_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/enums/v1/nexus_pb.js +159 -2
- package/dist/src/proto/temporal/api/enums/v1/nexus_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/enums/v1/query_pb.js +1 -1
- package/dist/src/proto/temporal/api/enums/v1/reset_pb.js +1 -1
- package/dist/src/proto/temporal/api/enums/v1/schedule_pb.js +1 -1
- package/dist/src/proto/temporal/api/enums/v1/task_queue_pb.d.ts +10 -1
- package/dist/src/proto/temporal/api/enums/v1/task_queue_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/enums/v1/task_queue_pb.js +11 -2
- package/dist/src/proto/temporal/api/enums/v1/task_queue_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/enums/v1/update_pb.js +1 -1
- package/dist/src/proto/temporal/api/enums/v1/workflow_pb.d.ts +24 -14
- package/dist/src/proto/temporal/api/enums/v1/workflow_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/enums/v1/workflow_pb.js +24 -14
- package/dist/src/proto/temporal/api/enums/v1/workflow_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/errordetails/v1/message_pb.d.ts +24 -2
- package/dist/src/proto/temporal/api/errordetails/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/errordetails/v1/message_pb.js +7 -2
- package/dist/src/proto/temporal/api/errordetails/v1/message_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/export/v1/message_pb.d.ts +1 -1
- package/dist/src/proto/temporal/api/export/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/export/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/failure/v1/message_pb.d.ts +26 -11
- package/dist/src/proto/temporal/api/failure/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/failure/v1/message_pb.js +2 -2
- package/dist/src/proto/temporal/api/failure/v1/message_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/filter/v1/message_pb.d.ts +2 -2
- package/dist/src/proto/temporal/api/filter/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/filter/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/history/v1/message_pb.d.ts +278 -141
- package/dist/src/proto/temporal/api/history/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/history/v1/message_pb.js +72 -62
- package/dist/src/proto/temporal/api/history/v1/message_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/namespace/v1/message_pb.d.ts +39 -5
- package/dist/src/proto/temporal/api/namespace/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/namespace/v1/message_pb.js +2 -2
- package/dist/src/proto/temporal/api/namespace/v1/message_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/nexus/v1/message_pb.d.ts +386 -14
- package/dist/src/proto/temporal/api/nexus/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/nexus/v1/message_pb.js +26 -3
- package/dist/src/proto/temporal/api/nexus/v1/message_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/nexusservices/workerservice/v1/request_response_pb.d.ts +41 -0
- package/dist/src/proto/temporal/api/nexusservices/workerservice/v1/request_response_pb.d.ts.map +1 -0
- package/dist/src/proto/temporal/api/nexusservices/workerservice/v1/request_response_pb.js +20 -0
- package/dist/src/proto/temporal/api/nexusservices/workerservice/v1/request_response_pb.js.map +1 -0
- package/dist/src/proto/temporal/api/operatorservice/v1/request_response_pb.d.ts +6 -6
- package/dist/src/proto/temporal/api/operatorservice/v1/request_response_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/operatorservice/v1/request_response_pb.js +1 -1
- package/dist/src/proto/temporal/api/operatorservice/v1/service_pb.js +1 -1
- package/dist/src/proto/temporal/api/protocol/v1/message_pb.d.ts +1 -1
- package/dist/src/proto/temporal/api/protocol/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/protocol/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/protometa/v1/annotations_pb.d.ts +46 -0
- package/dist/src/proto/temporal/api/protometa/v1/annotations_pb.d.ts.map +1 -0
- package/dist/src/proto/temporal/api/protometa/v1/annotations_pb.js +19 -0
- package/dist/src/proto/temporal/api/protometa/v1/annotations_pb.js.map +1 -0
- package/dist/src/proto/temporal/api/query/v1/message_pb.d.ts +4 -4
- package/dist/src/proto/temporal/api/query/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/query/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/replication/v1/message_pb.d.ts +1 -1
- package/dist/src/proto/temporal/api/replication/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/replication/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/rules/v1/message_pb.d.ts +3 -3
- package/dist/src/proto/temporal/api/rules/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/rules/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/schedule/v1/message_pb.d.ts +24 -24
- package/dist/src/proto/temporal/api/schedule/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/sdk/v1/enhanced_stack_trace_pb.d.ts +1 -1
- package/dist/src/proto/temporal/api/sdk/v1/enhanced_stack_trace_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/sdk/v1/enhanced_stack_trace_pb.js +1 -1
- package/dist/src/proto/temporal/api/sdk/v1/external_storage_pb.d.ts +35 -0
- package/dist/src/proto/temporal/api/sdk/v1/external_storage_pb.d.ts.map +1 -0
- package/dist/src/proto/temporal/api/sdk/v1/external_storage_pb.js +14 -0
- package/dist/src/proto/temporal/api/sdk/v1/external_storage_pb.js.map +1 -0
- package/dist/src/proto/temporal/api/sdk/v1/task_complete_metadata_pb.js +1 -1
- package/dist/src/proto/temporal/api/sdk/v1/user_metadata_pb.d.ts +2 -2
- package/dist/src/proto/temporal/api/sdk/v1/user_metadata_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/sdk/v1/user_metadata_pb.js +1 -1
- package/dist/src/proto/temporal/api/sdk/v1/worker_config_pb.js +1 -1
- package/dist/src/proto/temporal/api/sdk/v1/workflow_metadata_pb.d.ts +1 -1
- package/dist/src/proto/temporal/api/sdk/v1/workflow_metadata_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/sdk/v1/workflow_metadata_pb.js +1 -1
- package/dist/src/proto/temporal/api/taskqueue/v1/message_pb.d.ts +39 -23
- package/dist/src/proto/temporal/api/taskqueue/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/taskqueue/v1/message_pb.js +12 -7
- package/dist/src/proto/temporal/api/taskqueue/v1/message_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/update/v1/message_pb.d.ts +10 -10
- package/dist/src/proto/temporal/api/update/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/update/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/version/v1/message_pb.d.ts +4 -4
- package/dist/src/proto/temporal/api/version/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/version/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/worker/v1/message_pb.d.ts +208 -15
- package/dist/src/proto/temporal/api/worker/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/worker/v1/message_pb.js +33 -3
- package/dist/src/proto/temporal/api/worker/v1/message_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/workflow/v1/message_pb.d.ts +187 -96
- package/dist/src/proto/temporal/api/workflow/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/workflow/v1/message_pb.js +16 -11
- package/dist/src/proto/temporal/api/workflow/v1/message_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/workflowservice/v1/request_response_pb.d.ts +1884 -283
- package/dist/src/proto/temporal/api/workflowservice/v1/request_response_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/workflowservice/v1/request_response_pb.js +309 -127
- package/dist/src/proto/temporal/api/workflowservice/v1/request_response_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/workflowservice/v1/service_pb.d.ts +232 -2
- package/dist/src/proto/temporal/api/workflowservice/v1/service_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/workflowservice/v1/service_pb.js +3 -2
- package/dist/src/proto/temporal/api/workflowservice/v1/service_pb.js.map +1 -1
- package/dist/src/runtime/effect-layers.d.ts +85 -0
- package/dist/src/runtime/effect-layers.d.ts.map +1 -1
- package/dist/src/worker/concurrency.d.ts.map +1 -1
- package/dist/src/worker/concurrency.js +12 -0
- package/dist/src/worker/concurrency.js.map +1 -1
- package/docs/adoption-readiness.md +93 -0
- package/docs/agent-adoption-guide.md +21 -26
- package/docs/default-choice-hardening-plan.md +47 -70
- package/docs/feature-matrix.md +20 -20
- package/docs/production-design.md +3 -3
- package/docs/production-readiness-implementation-plan.md +47 -56
- package/docs/semantic-readiness.md +45 -38
- package/docs/support-policy.md +3 -3
- package/package.json +10 -4
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Agent Adoption Guide
|
|
2
2
|
|
|
3
|
-
_Last updated: May
|
|
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
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
|
89
|
-
|
|
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
|
|
3
|
+
_Last updated: May 14, 2026_
|
|
4
4
|
|
|
5
5
|
## Current Verdict
|
|
6
6
|
|
|
7
|
-
The SDK is published and
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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`
|
|
13
|
-
|
|
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
|
|
43
|
-
- at least
|
|
44
|
-
- peak workflow concurrency of at least
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
108
|
-
|
|
109
|
-
workflow scenarios. Default-choice readiness remains blocked by
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
- May 6, 2026:
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
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
|
|
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
|
|
135
|
-
|
|
136
|
-
|
|
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
|
|
149
|
-
`
|
|
150
|
-
|
|
151
|
-
|
|
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.
|
|
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
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
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.
|
package/docs/feature-matrix.md
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
# Temporal Bun SDK Feature Matrix
|
|
2
2
|
|
|
3
|
-
_Last updated: May
|
|
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
|
|
23
|
-
| Extended
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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. |
|
|
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
|
|
55
|
-
| CI | `.github/workflows/temporal-bun-sdk.yml` builds, lints, tests, runs replay-corpus, async-fuzz, load,
|
|
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
|
|
69
|
-
|
|
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
|
|
183
|
-
|
|
184
|
-
-
|
|
185
|
-
|
|
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
|
|
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
|
|
239
|
-
-
|
|
240
|
-
|
|
241
|
-
-
|
|
242
|
-
|
|
243
|
-
|
|
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
|
|
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
|
-
|
|
255
|
-
-
|
|
256
|
-
injection
|
|
257
|
-
|
|
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
|
-
-
|
|
269
|
-
|
|
270
|
-
|
|
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
|
|
341
|
-
| -------------------- | ----------------------------------------------------------------- | ------------------------- |
|
|
342
|
-
| Package boundary | `bun run --filter @proompteng/temporal-bun-sdk verify:production` | required | required
|
|
343
|
-
| Build | `bun run --filter @proompteng/temporal-bun-sdk build` | required | required
|
|
344
|
-
| Unit/runtime guards | `bun test tests/workflow/runtime-guards.test.ts` | required | required
|
|
345
|
-
| Query guard matrix | `bun test tests/workflow/query-guard-matrix.test.ts` | required | required
|
|
346
|
-
| Async fuzz | `bun test tests/workflow/async-determinism-fuzz.test.ts` | 1k seeds | 10k seeds
|
|
347
|
-
| Replay corpus | `bun scripts/
|
|
348
|
-
| Protocol golden | `bun test tests/protocol/*.test.ts` | required | required
|
|
349
|
-
| Critical integration | `
|
|
350
|
-
| Load
|
|
351
|
-
|
|
|
352
|
-
|
|
|
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
|
|
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
|
|
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
|
|
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.
|