chore(ci): build a dedicated experiments recalculation worker image#67261
Merged
rodrigoi merged 1 commit intoJul 3, 2026
Merged
Conversation
Member
Author
This stack of pull requests is managed by Graphite. Learn more about stacking. |
2 tasks
Contributor
|
Reviews (1): Last reviewed commit: "chore(experiments): update container ima..." | Re-trigger Greptile |
979b719 to
d2df627
Compare
305b12a to
9d166a7
Compare
d2df627 to
792af5f
Compare
Contributor
|
Reviews (2): Last reviewed commit: "chore(experiments): update container ima..." | Re-trigger Greptile |
9d166a7 to
a2a9cf2
Compare
792af5f to
4853846
Compare
jurajmajerik
approved these changes
Jul 3, 2026
gantoine
approved these changes
Jul 3, 2026
Base automatically changed from
experiments/recalculation-workflow-experiments-tasks-queue
to
master
July 3, 2026 16:25
…eriments temporal worker`
4853846 to
75c577f
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Problem
The stacked PR routes experiment metrics recalculation to a dedicated
experiments-recalculation-task-queueserved by its own worker. That worker needs its image state kept current inPostHog/charts, but the CD pipeline has no dispatch for it, so its deploy state would never advance past the seeded value.Changes
Wires the new
temporal-worker-experiments-recalculationrelease into the container-images CD pipeline. There is no new image build; every temporal worker shares theposthog-cloudimage, and each worker just gets arepository-dispatchtoPostHog/chartsthat writes the freshly built digest into its own release state.Adds a change-detection step scoped to the recalc worker's paths and a matching dispatch for its release. The recalc temporal path moves off the general-purpose worker's change filter, since recalc no longer runs on that worker.
.github/workflows/container-images-cd.ymlRollback
Revert this PR. The worker keeps running on whatever image its charts state already points at; only automatic image tracking for this release stops.
Deploy order
Stacked on top of the queue-routing PR. Order within the stack does not matter for correctness: until the dedicated worker exists in charts, this dispatch simply updates a release nothing consumes yet. It becomes load-bearing once the charts worker is live.
How did you test this code?
Agent-run: validated that the workflow YAML parses and that the new change-detection step, its
ifgate, and the release dispatch are consistent. CI exercises the dispatch on merge.python3 -c "import yaml; yaml.safe_load(open('.github/workflows/container-images-cd.yml'))"Automatic notifications
Docs update
🤖 Agent context
Autonomy: Human-driven (agent-assisted)
Model: Opus 4.8
Manually refactored: no
Skills used:
Relevant decisions:
ifgate,repository-dispatchwith a per-release name) rather than introducing a new image build, since all temporal workers share theposthog-cloudimage and differ only by dispatched release.products/experiments/backend/temporal/from the general-purpose worker's change filter; recalc was the only general-registered code under that path, so leaving it would rebuild the general image on every recalc change for no reason.