All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Canonical metrics -- opt-in harmonized metric surface via
WORKER_CANONICAL_METRICS=true. See METRICS.md for the full catalog, configuration, and migration guide. - Bounded
urilabel onhttp_api_client_request_seconds: canonical mode uses path templates (e.g./workflow/{workflowId}) instead of fully-resolved paths, preventing metric cardinality explosion from dynamic IDs. TaskPausedevent type andPollerOptions.onPausedcallback: emitted when a poll cycle is skipped because the worker is paused. Canonical mode recordstask_paused_total; legacy mode does not (see Implementation Notes in METRICS.md).measurePayloadSizeoption inMetricsCollectorConfig: controls whetherworkflow_input_size_bytesis recorded viaJSON.stringifyon eachstartWorkflowcall. Defaults totruefor canonical,falsefor legacy.retryServerErrorsoption inOrkesApiConfig/RetryFetchOptionsandCONDUCTOR_RETRY_SERVER_ERRORSenv var: opt-in retry of HTTP 502/503/504 for idempotent methods (GET, HEAD, OPTIONS, PUT, DELETE). Defaultfalse; set totrueto enable.WorkflowStatusProbein harness: opt-in probe (viaHARNESS_PROBE_RATE_PER_SEC) that exercises UUID-bearing endpoints to validate template URI metrics.WORKER_LEGACY_METRICSis reserved for future use. Once canonical metrics become the default, settingWORKER_LEGACY_METRICS=truewill re-activate the legacy surface. It is not read by the current implementation.
- Legacy metrics emit unchanged when constructing
LegacyMetricsCollectordirectly (the pre-existing pattern). UsingcreateMetricsCollector()additionally enables automatic HTTP request timing via OpenAPI interceptors for both legacy and canonical modes; no other action required for existing deployments. MetricsCollector.tsrenamed toLegacyMetricsCollector.ts; the public symbol is preserved via re-export so existing imports keep working.http_api_client_requesttiming is now recorded automatically bywrapFetchWithRetrywhen a metrics collector is active (viacreateMetricsCollector()orsetHttpMetricsObserver), covering both successful responses and network-error fallback paths. A lightweight request interceptor captures OpenAPI path templates so the canonicalurilabel uses bounded-cardinality templates in all cases. Previously,recordApiRequestTimeexisted but was not wired into the HTTP pipeline -- details.- Added optional
durationMsfield toTaskUpdateFailureevent, recording the duration of the last update attempt. Declared optional so existing event listener implementations are unaffected.
- Legacy metric names remain the default during the transition period. Migration guidance is in METRICS.md.