## What changed? Properly close SQLite connection and database. ## Why SQLite previously retained one shared connection pool per DSN for the entire process. Each SQL factory now owns an initial reference while its stores borrow additional references. Closing the final factory releases the connection pool without losing an in-memory database when shorter-live
A `sent` event records that a task went out, not *what it carried* — and that can't be recovered afterwards. `LastUpdateVersionedTransition` stamps are overwritten by later transitions, and the replication progress cache that supplies the lower bound of both the state diff and the event range is in-memory and per `(run, target)`. Seven sent-only fields: - `t
## What changed? _Describe what has changed in this PR._ ## Why? _Tell your future self why have you made these changes._ ## How did you test it? - [ ] built - [ ] run locally and tested manually - [ ] covered by existing tests - [ ] added new unit test(s) - [ ] added new functional test(s) ## Potential risks _Any change is risky. Identify all risks you are
## What changed? Refactoring Nexus frontend interceptors ## Why? https://temporalio.atlassian.net/browse/NEXUS-504 ## How did you test it? - [x] built - [x] run locally and tested manually - [x] covered by existing tests - [x] added new unit test(s) - [ ] added new functional test(s) ## Potential risks - [ ] Medium risk of regression, will be covered through
## Summary - give every testcore.NewEnv test a fresh cluster and tear it down with the test - bound concurrently live clusters to GOMAXPROCS by default, configurable with TEMPORAL_TEST_LIVE_CLUSTERS - preseed the primary and external namespaces for each cluster before server startup - preserve bounded legacy suite-owned cluster paths and suite-level worker-s
## What changed? Added TEMPORAL_JWT_AUDIENCE to the embedded and Docker configuration templates, mapping the environment variable to global.authorization.audience. ## Why? JWT audience validation needs to be configurable in environment-based deployments, consistent with the existing JWT authorization settings. ## How did you test it? - [x] built - [ ] run lo
## What Emits `source_cluster`, `source_shard`, and `source_task_id` on the `executing` and `applied` phases of the `replication_lifecycle` wide event, not just `sent`. ## Why `source_task_id` was already on the wire (`ReplicationTask.source_task_id`, populated at every `raw_task_converter.go` conversion site) and already stored on the task as `ExecutableTas
## What Skip worker commands task queues (`temporal-sys/worker-commands/...`) when checking for missing task queues during version promotion (SetCurrent / SetRamping). ## Why An SDK bug caused version attributes to be set on worker commands queues, registering them in a deployment version. These queues are ephemeral and don't support versioning, so `IsVersio
## What changed? When trying to clean up some PRs for worker callbacks, I noticed some unnecessary duplication and cruft in our testcases for completion handlers. Essentially it's this: <img width="567" height="216" alt="image" src="https://github.com/user-attachments/assets/c64b759c-c5be-4fc3-a346-92cf77e1f6db" /> Rather than having N places where we constr
## What changed? Reuse a single persistence factory during server initialization. ## Why? Server initialization previously constructed and closed a separate persistence factory for each bootstrap operation. This also helps with https://github.com/temporalio/temporal/pull/11458 as this change ensures there's uninterrupted ownership of the sqlite database.
Separates diagnostic parsing and timeout parsing into focused files without changing behavior. Existing comments and tests move with their implementations so the later canonical conversion is a semantic diff instead of a delete-and-add rewrite. Stack: depends on #11512. The canonical result model follows in #11514.
Converts test output analysis to package-aware canonical diagnostics and failure evidence. The existing runner reaches the new implementation through a temporary compatibility adapter, so there is still one parser implementation while the production cutover remains isolated. Stack: depends on #11514. The Go test JSON recorder follows in #11515.
## What changed? Adding support for a gradual connection period for globalized namespaces. This determines the start, step, and duration for ramp-up, during which a diminishing percentage of replication traffic will be shed (to be filled in via manual force-replicate at the end). ## Why? There are currently issues with clusters becoming overloaded during lar
## What changed? A worker reporting a schedule-to-start/close timeout via RespondActivityTaskFailed[ById] now closes a standalone (CHASM) activity as TIMED_OUT instead of FAILED, mirroring the timer-queue path and the workflow-activity behavior. The reported failure's Cause, if present, is preserved on the timeout outcome, otherwise prior attempt's failure i
## What changed? - updated batch administration operations to run in the system namespace while continuing to use per-namespace task queues and workers. - allow batch activities running in the system namespace operating on other target namespaces - add ns to jobID and print all previous changes in tdbg prompts ## Why? to run refresh tasks in passive clusters
## Summary - Enable automated Claude PR reviews for members of `temporalio/oss-matching`. ## Impact Members of the OSS Matching team will receive automated Claude reviews after the workflow's existing organization membership, repository permission, and label checks pass. ## Validation - `git diff --check` - Confirmed the branch contains a single workflow-onl
## What changed? Updated the activity code to use a CHASM context API that was added after the original code was written. ## Why? Prevent this pattern from being copied to other libraries.
## What changed? - unregister process-global gRPC resolver and OpenTelemetry logger state during lifecycle shutdown - close the test matching client RPC factory and clear removed test references - let object checks wait for asynchronous shutdown cleanup while avoiding tiny-allocation false positives - remove every `WithExpected` entry from `objectLeakOpts` #
## What changed? Add process-lifetime baselines to `objectleak`, ignore tiny pointer-free allocations that the runtime cannot track individually, and allow asynchronous cleanup the full settle timeout. ## Why? Make object leak reports actionable by distinguishing process-lifetime objects from leaks and avoiding runtime-induced false positives. Replaces #1131
## What changed? Reuse a single persistence factory during server initialization and expose it to the root Fx graph as `BootstrapPersistenceFactory`. The named interface encodes the startup-only lifecycle without tags, bridges, or adapters. The factory is closed exactly once after startup, on failed construction, or during `Stop` when the server was never st
## What changed? Properly close SQLite connections and databases. ## Why? SQLite previously retained one shared connection pool per DSN for the entire process. Each SQL factory now owns an initial reference while its stores borrow additional references. Closing the final factory releases the connection pool without losing an in-memory database when shorter-l
## What changed? - Unregister process-global gRPC resolver and OpenTelemetry logger state during lifecycle shutdown. - Close the test matching client RPC factory and clear removed test references. - Remove every `WithExpected` entry from `objectLeakOpts`. ## Why? The leak test was suppressing the cluster graph instead of enforcing that cluster-owned objects
## What changed? 1. updated batch administration operations to run in the system namespace while continuing to use per-namespace task queues and workers. 2. allow batch activities running in the system namespace operating on other target namespaces 3. add ns to jobID and print all previous changes in tdbg prompts ## Why? to run refresh tasks in passive clust
Test summary details are truncated to byte budgets before being written to Markdown and JSON. Ensure the retained head and tail start at UTF-8 rune boundaries so multibyte failure output remains valid after truncation. The regression test uses multibyte input whose previous tail boundary split a rune.
Strengthens shared JUnit reads and writes. Reads reject trailing XML and include the source path in errors. Writes validate counters and atomically replace the destination so interrupted writes cannot corrupt an existing report. This is the bottom of the testrunner reporting stack.
Defines the package-aware canonical attempt model and its queries for failed leaves, incomplete executions, package aborts, runtime failures, process failures, and retry safety. Tests construct results directly and pin these invariants before production uses the model. Stack: depends on #11487. Scoped canonical diagnostics follow in #11488.
Runs Go tests directly with JSON output and records package-aware canonical attempt results. The recorder owns event attribution, build failures, diagnostics, timeouts, console output, process state, and coverage-path handling, with focused unit and subprocess tests. Stack: depends on #11488. Retry policy follows in #11516.
⚠️ This is part of a stacked PR set, to be merged into `chrsmith/wc-add-worker-cb-variant`. This will not go directly into `main`. This was originally sent out as https://github.com/temporalio/temporal/pull/11413, which also persisted the terminal failure of CHASM Callback components. This new version does not do that, and instead just includes the various r
## What changed? - Add a fan-in job to the test workflow after unit, integration, and functional tests. - Download the current attempt's per-job JUnit artifacts and upload them as one `flaky-report-input--<run-id>--<run-attempt>` artifact. - Include the fan-in job in the aggregate test status. This PR only produces the rollup artifact; it does not change the
## What changed? - Replace the `gh api` subprocesses used by `flakereport` with a shared Go HTTP client. - Rate-limit GitHub API requests to 10 RPS by default; allow an explicit `--rps` override. - Stream artifact downloads to temporary files while preserving the existing 60-second download deadline and artifact worker pool. ## Why? The report performs a Git
## What Skip the versioning attribution logic when computing stats for sticky queues. Otherwise, we end up with 0 value for add and dispatch rates. This breaks poller autoscaling for sticky queues: 0/0 = NaN, and NaN > threshold is always false, so no +1 scaling signals are ever emitted. Background DescribeTaskQueue returns stats like add_rate and dispatch_r
## What changed? Added TEMPORAL_JWT_AUDIENCE to the embedded and Docker configuration templates, mapping the environment variable to global.authorization.audience. ## Why? JWT audience validation needs to be configurable in environment-based deployments, consistent with the existing JWT authorization settings. ## How did you test it? - [x] built - [ ] run lo
## Summary - include an existing deferred BUFFER_ONE start in overlap resolution - prevent a later occurrence from becoming a second buffered start - add a focused regression test with one running, one deferred, and one new occurrence ## Production replay evidence The representative V1 history changed from 5,355 V1 actions versus 4,961 CHASM actions to 5,355
## Summary - add the offline Schedule V1 history to CHASM replay harness and production sampling tools - associate captured V1 starts with their workflow-task completion - detect an update signal delivered after workflow-task scheduling but before workflow-task start - classify input differences at this boundary as inconclusive rather than a significant V2 d
## Summary - characterize V1 resolution of an explicit zero catchup window to the 10-second minimum - prove migration currently preserves the explicit zero value - pair these tests with existing CHASM coverage where zero resolves to the one-year default ## Finding This is a genuine migration compatibility difference. In the representative history, all 15 CHA
## What changed? Added more state-effecting API calls to the forwarding list. ## Why? The intent is for passive to always forward those APIs it cannot handle locally. ## How did you test it? - [x] built - [ ] run locally and tested manually - [x] covered by existing tests - [ ] added new unit test(s) - [ ] added new functional test(s) <!-- CURSOR_SUMMARY -->
## What changed? - Decode partial counter parameter JSON over `counter.DefaultCounterParams`. - Return a validation error when `-partitions` is zero or negative. - Add regression tests for partial counter overrides and invalid partition counts. ## Why? The README documents partial overrides such as `{"CMS":{"W":100}}`, but the simulator decoded them into a z
## What changed? Clamp the dynamic-config fallback for matching read partition count to at least one, and cover zero and negative configured values with unit tests. ## Why? Before a matching client has cached server-provided partition counts, `PickReadPartition` falls back to `matching.numTaskqueueReadPartitions`. A non-positive configured value reaches `mat
## What changed? - count reader stuck attempts per slice and per owning reader instead of per wall clock second (`SetReaderWatermark` -> `SetSliceReadWatermark`) - report each stuck window once, and only when the alert was actually queued - track read progress for every reader rather than only the default one, and stop creating readers at `MaxReaderCount` -
## What changed? Remove the final `FunctionalTestBase.testCluster.testBase*` expectation. `objectLeakOpts` now contains only the protobuf traversal prune and no expected leaks. ## Why? The preceding stack releases shared-test and process-global references. Together with the persistence ownership fixes in #11506 and #11507, functional test clusters become ful