feat(proto): add PAUSED phase, Signal RPC, and condition action updates#7248
Open
feat(proto): add PAUSED phase, Signal RPC, and condition action updates#7248
Conversation
🐳 Docker CI Image BuiltThe CI Docker image has been built and pushed for this PR! Image: This image will be automatically used by CI workflows in this PR. To test locally: make gen DOCKER_CI_IMAGE=ghcr.io/flyteorg/flyte/ci:pr-7248 |
- Add ACTION_PHASE_PAUSED = 9 to ActionPhase enum for condition actions - Update ConditionAction: remove scope oneof (reserved fields 2-4), add prompt_type, timeout, webhook fields - Add ConditionPromptType enum and ConditionWebhook message - Add Signal RPC to ActionsService with SignalRequest/SignalResponse - Add optional output field (core.Literal) to ActionUpdate Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Sergey Vilgelm <sergey@union.ai>
a27ede1 to
07e9cb2
Compare
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
This PR introduces a bundled “flyte-demo” sandbox environment (K3s + Helm/Kustomize + preloaded images + embedded Postgres), adds/extends several backend services (DataProxy, Cache Service, Actions, Internal App), and updates build/CI/boilerplate scaffolding.
Changes:
- Add a new
docker/demo-bundledworkflow for building/running a local demo cluster (manifests, preloaded images, embedded Postgres). - Add/extend Go services and supporting libraries (DataProxy setup/validation, Cache Service repo+migrations, Actions setup/config, internal App setup).
- Add/adjust repo tooling and CI files (Buf configs, generation workflows, boilerplate sync, CODEOWNERS, docs).
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 15 comments.
Show a summary per file
| File | Description |
|---|---|
| docker/demo-bundled/kustomize/namespace.yaml | Adds a flyte namespace manifest for demo kustomizations |
| docker/demo-bundled/kustomize/minio-patch.yaml | Patches MinIO deployment command/init behavior for demo |
| docker/demo-bundled/kustomize/embedded-postgres-service.yaml | Exposes embedded Postgres via Service+Endpoints with node IP templating |
| docker/demo-bundled/kustomize/dev/kustomization.yaml | Dev kustomization using Helm chart + embedded Postgres service |
| docker/demo-bundled/kustomize/complete/kustomization.yaml | “Complete” kustomization with DB wait-for loop and embedded Postgres |
| docker/demo-bundled/images/preload | Script to pre-pull/save container images for air-gapped demo |
| docker/demo-bundled/images/manifest.txt | Image list and optional retags for preloading |
| docker/demo-bundled/bootstrap/internal/utils/testdata/foo | Test fixture for checksum utility |
| docker/demo-bundled/bootstrap/internal/utils/testdata/bar | Test fixture for checksum utility |
| docker/demo-bundled/bootstrap/internal/utils/patch_test.go | Tests for YAML patch marshalling/sanitization |
| docker/demo-bundled/bootstrap/internal/utils/patch.go | Adds patch marshaling + nil/empty filtering |
| docker/demo-bundled/bootstrap/internal/utils/checksum_test.go | Tests for file checksum utilities |
| docker/demo-bundled/bootstrap/internal/utils/checksum.go | Adds file and file-collection checksum helpers |
| docker/demo-bundled/bootstrap/internal/transform/transformer_test.go | Tests chained transform plugin behavior |
| docker/demo-bundled/bootstrap/internal/transform/transformer.go | Adds transformer applying a sequence of plugins |
| docker/demo-bundled/bootstrap/internal/transform/plugins/vars/vars_test.go | Tests variable substitution plugin |
| docker/demo-bundled/bootstrap/internal/transform/plugins/vars/vars.go | Adds vars replacement plugin using strings.NewReplacer |
| docker/demo-bundled/bootstrap/internal/transform/plugins/config/testdata/happy/config.yaml | Test fixture for config loader |
| docker/demo-bundled/bootstrap/internal/transform/plugins/config/testdata/happy/cluster-resource-templates/resource.yaml | Test fixture for cluster resource templates loader |
| docker/demo-bundled/bootstrap/internal/transform/plugins/config/testdata/base.yaml | Base manifest fixture for loader tests |
| docker/demo-bundled/bootstrap/internal/transform/plugins/config/loader_test.go | Tests for config/CRT loader and checksum annotations |
| docker/demo-bundled/bootstrap/internal/transform/plugins/config/loader.go | Implements config loader using kustomize in temp dir |
| docker/demo-bundled/bootstrap/internal/transform/plugins/config/configuration.go | Implements config map generator + deployment checksum patch |
| docker/demo-bundled/bootstrap/internal/transform/plugins/config/cluster_resource_templates.go | Implements CRT configmap patch + deployment checksum patch |
| docker/demo-bundled/bootstrap/go.mod | New Go module for demo bootstrap binaries |
| docker/demo-bundled/bootstrap/cmd/embedded-postgres/main_test.go | Tests/constants for embedded Postgres bootstrapper |
| docker/demo-bundled/bootstrap/cmd/embedded-postgres/main.go | Embedded Postgres runner with privilege drop + remote access config |
| docker/demo-bundled/bootstrap/cmd/bootstrap/main_test.go | Tests helper IP selection logic |
| docker/demo-bundled/bootstrap/cmd/bootstrap/main.go | Demo bootstrapper that templates manifests + optional config overlay |
| docker/demo-bundled/bootstrap/Makefile | Adds fmt/lint/test targets for bootstrap module |
| docker/demo-bundled/Makefile | Builds demo image/manifests, starts/stops demo container, merges kubeconfig |
| docker/demo-bundled/Dockerfile | Builds demo image with preloaded images + bootstrap binaries + pg cache |
| docker/demo-bundled/.gitignore | Ignores demo local artifacts |
| dataproxy/test/scripts/create_upload_location.sh | Adds script to call CreateUploadLocation via buf curl |
| dataproxy/setup.go | Wires DataProxy and Cluster services into mux + ready check |
| dataproxy/service/validation_test.go | Adds tests for upload request validation |
| dataproxy/service/validation.go | Adds upload request validation rules (expires/size + required fields) |
| dataproxy/service/cluster_service.go | Adds ClusterService connect handler returning request host |
| dataproxy/logs/log_streamer.go | Adds log streamer abstraction + helper for primary pod/container |
| dataproxy/config/dataproxyconfig_flags_test.go | Generated tests for DataProxyConfig flags |
| dataproxy/config/dataproxyconfig_flags.go | Generated pflags for DataProxyConfig |
| dataproxy/config/config.go | Adds DataProxy config defaults and types |
| dataproxy/config/config.example.yaml | Adds example YAML config for DataProxy + storage |
| dataproxy/cmd/main.go | Adds standalone DataProxy service main using flytestdlib app framework |
| dataproxy/README.md | Adds DataProxy documentation and configuration guide |
| config/k3d/cluster.yaml | Adds k3d cluster definition with host alias injection |
| charts/flyte-demo/values.yaml | Demo chart values for registry, flyte-binary, rustfs, postgres, console |
| charts/flyte-demo/templates/storage/rustfs/service.yaml | Adds RustFS NodePort service |
| charts/flyte-demo/templates/storage/rustfs/secret.yaml | Adds RustFS credentials secret |
| charts/flyte-demo/templates/storage/rustfs/pvc.yaml | Adds RustFS PVC |
| charts/flyte-demo/templates/storage/rustfs/pv.yaml | Adds RustFS PV (hostPath) |
| charts/flyte-demo/templates/storage/rustfs/deployment.yaml | Adds RustFS deployment + init permissions container |
| charts/flyte-demo/templates/proxy/traefik-config.yaml | Configures Traefik NodePort and read timeout |
| charts/flyte-demo/templates/proxy/ingress.yaml | Adds ingress routing for API paths and console |
| charts/flyte-demo/templates/local/service.yaml | Adds local dev headless service when flyte-binary disabled |
| charts/flyte-demo/templates/local/endpoint.yaml | Adds endpoints templated to host gateway ip for local dev |
| charts/flyte-demo/templates/console/service.yaml | Adds console service |
| charts/flyte-demo/templates/console/deployment.yaml | Adds console deployment |
| charts/flyte-demo/templates/config/configuration-inline-configmap.yaml | Adds inline configmap stub for flyte-binary |
| charts/flyte-demo/templates/config/cluster-resource-template-inline-configmap.yaml | Adds inline CRT configmap stub for flyte-binary |
| charts/flyte-demo/templates/_helpers.tpl | Adds helper templates for names/labels/persistence/services |
| charts/flyte-demo/Chart.yaml | Adds Flyte demo Helm chart with dependencies |
| charts/flyte-demo/.helmignore | Adds Helm ignore patterns |
| charts/flyte-binary/templates/serviceaccount.yaml | Adds service account template (namespaced) |
| charts/flyte-binary/templates/service/webhook.yaml | Adds webhook service template |
| charts/flyte-binary/templates/service/http.yaml | Adds http/grpc service template |
| charts/flyte-binary/templates/ingress/grpc.yaml | Adds separate grpc ingress template |
| charts/flyte-binary/templates/configmap.yaml | Adds flyte-binary configmap template |
| charts/flyte-binary/templates/config-secret.yaml | Adds flyte-binary secrets template |
| charts/flyte-binary/templates/clusterrolebinding.yaml | Adds cluster role binding template |
| charts/flyte-binary/templates/clusterrole.yaml | Adds cluster role template (pods/events/taskactions/webhooks/secrets) |
| charts/flyte-binary/templates/auth-client-secret.yaml | Adds auth client secret template |
| charts/flyte-binary/templates/admin-auth-secret.yaml | Adds admin auth secret template |
| charts/flyte-binary/defaults/cluster-resource-templates/namespace.yaml | Adds default CRT namespace template |
| charts/flyte-binary/Makefile | Adds helm templating targets for binary and demo |
| charts/flyte-binary/Chart.yaml | Adds flyte-binary chart metadata |
| charts/flyte-binary/.helmignore | Adds Helm ignore patterns |
| charts/flyte-binary/.gitignore | Ignores generated manifests dir |
| charts/.gitignore | Ignores nested chart dependency directories |
| cache_service/setup.go | Adds cache service setup wiring + ready checks + migrations |
| cache_service/repository/repository.go | Adds repository aggregator implementation |
| cache_service/repository/models/reservation.go | Adds Reservation DB model |
| cache_service/repository/models/cached_output.go | Adds CachedOutput DB model |
| cache_service/repository/interfaces/reservation.go | Adds ReservationRepo interface |
| cache_service/repository/interfaces/repository.go | Adds Repository interface |
| cache_service/repository/interfaces/cached_output.go | Adds CachedOutputRepo interface |
| cache_service/repository/impl/reservation.go | Implements reservation DB operations |
| cache_service/repository/impl/cached_output.go | Implements cached output DB operations |
| cache_service/repository/errors/errors.go | Adds typed repository errors + helpers |
| cache_service/migrations/sql/20260408110000_init_schema.sql | Adds initial cache_service schema migration |
| cache_service/migrations/migrations.go | Adds embedded migrations runner |
| cache_service/manager/manager_test.go | Adds manager tests for cache put/get and reservation ownership |
| cache_service/manager/main_test.go | Adds TestMain to run migrations against embedded test DB |
| cache_service/config/config.go | Adds cache service configuration + defaults |
| cache_service/cmd/main.go | Adds standalone cache service main |
| buf.yaml | Updates Buf module/exclude/deps/lint ignore rules |
| buf.gen.ts.yaml | Adds managed buf TS codegen config |
| buf.gen.rust.yaml | Adds managed buf Rust codegen config |
| buf.gen.python.yaml | Adds managed buf Python codegen config |
| buf.gen.go.yaml | Adds managed buf Go codegen config |
| boilerplate/update.sh | Adds/updates boilerplate sync script |
| boilerplate/flyte/pull_request_template/update.sh | Adds boilerplate updater for PR template |
| boilerplate/flyte/pull_request_template/pull_request_template.md | Adds PR template |
| boilerplate/flyte/pull_request_template/Readme.rst | Adds readme for PR template boilerplate |
| boilerplate/flyte/precommit/update.sh | Adds precommit hook installer |
| boilerplate/flyte/precommit/hooks/prepare-commit-msg | Adds DCO signoff hook |
| boilerplate/flyte/precommit/hooks/pre-push | Adds DCO enforcement pre-push hook |
| boilerplate/flyte/precommit/Makefile | Adds make target to install precommit hooks |
| boilerplate/flyte/golangci_file/update.sh | Adds boilerplate sync for golangci config |
| boilerplate/flyte/golangci_file/Readme.rst | Adds readme for golangci boilerplate |
| boilerplate/flyte/golangci_file/.golangci.yml | Adds default golangci-lint configuration |
| boilerplate/flyte/golang_test_targets/go-gen.sh | Adds go generate helper |
| boilerplate/flyte/golang_test_targets/download_tooling.sh | Adds Go tooling installer script |
| boilerplate/flyte/golang_test_targets/Readme.rst | Adds readme for Go test targets boilerplate |
| boilerplate/flyte/golang_test_targets/Makefile | Adds common Go test/lint/generate make targets |
| boilerplate/flyte/golang_support_tools/tools.go | Adds tools module imports for Go tooling |
| boilerplate/flyte/github_workflows/update.sh | Adds boilerplate workflow updater |
| boilerplate/flyte/github_workflows/stale.yml | Adds stale PR configuration |
| boilerplate/flyte/github_workflows/pull_request.yml | Adds boilerplate PR workflow |
| boilerplate/flyte/github_workflows/master.yml | Adds boilerplate master workflow |
| boilerplate/flyte/github_workflows/boilerplate_automation.yml | Adds boilerplate auto-update workflow |
| boilerplate/flyte/github_workflows/Readme.rst | Adds readme for workflow boilerplate |
| boilerplate/flyte/flyte_golang_compile/update.sh | Adds boilerplate compilation script generator |
| boilerplate/flyte/flyte_golang_compile/flyte_golang_compile.Template | Adds compile script template |
| boilerplate/flyte/flyte_golang_compile/Readme.rst | Adds readme for compile boilerplate |
| boilerplate/flyte/end2end/functional-test-config.yaml | Adds end2end test config |
| boilerplate/flyte/end2end/conftest.py | Adds pytest config for end2end tests |
| boilerplate/flyte/end2end/Makefile | Adds boilerplate end2end make target |
| boilerplate/flyte/docker_build/docker_build.sh | Adds boilerplate docker build/push helper |
| boilerplate/flyte/docker_build/Readme.rst | Adds readme for docker_build boilerplate |
| boilerplate/flyte/docker_build/Makefile | Adds make targets for docker build/push |
| boilerplate/flyte/code_of_conduct/update.sh | Adds boilerplate sync for CODE_OF_CONDUCT |
| boilerplate/flyte/code_of_conduct/README.rst | Adds boilerplate readme for CoC |
| boilerplate/flyte/code_of_conduct/CODE_OF_CONDUCT.md | Adds CODE_OF_CONDUCT content |
| app/internal/setup.go | Adds internal app service setup mounted under /internal |
| app/config/config.go | Adds AppConfig for app deployment controller |
| actions/setup.go | Wires ActionsService and watcher lifecycle into mux |
| actions/service/interfaces.go | Adds ActionsClientInterface abstraction |
| actions/service/actions_service_test.go | Adds unit tests for ActionsService handlers |
| actions/config/config.go | Adds actions service config defaults |
| actions/cmd/main.go | Adds standalone actions service main |
| README.md | Updates root README to Flyte 2 messaging and quickstart |
| Dockerfile | Adds root build image for backend Go binary |
| DOCKER_QUICK_START.md | Adds docker-based development quickstart doc |
| CODEOWNERS | Adds default and flyteidl2 ownership rules |
| BACKEND_README.md | Adds backend-focused repository overview and instructions |
| .mockery.yaml | Configures mockery packages, including ActionsClientInterface |
| .github/workflows/update_site.yml | Adds workflow to dispatch release version to flyte.org site |
| .github/workflows/selfassign.yml | Adds self-assign-by-comment workflow |
| .github/workflows/regenerate-on-comment.yml | Adds regenerate-on-command workflow |
| .github/workflows/publish-rust.yml | Adds Rust publish workflow |
| .github/workflows/publish-python.yml | Adds Python publish workflow |
| .github/workflows/publish-npm.yml | Adds npm publish workflow |
| .github/workflows/go-tests.yml | Adds componentized Go tests workflow w/ coverage artifacts |
| .github/workflows/git_town.yml | Adds workflow to display PR branch stack |
| .github/workflows/check-generate.yml | Adds generated-files verification workflows using CI image |
| .github/workflows/build-ci-image.yml | Adds CI image build/publish workflow + PR comment |
| .github/actions/setup-python-env/action.yml | Adds composite action to set up uv-based python env |
| .github/PULL_REQUEST_TEMPLATE.md | Adds repo PR template |
| .gitattributes | Marks generated code/mocks as linguist-generated |
| .dockerignore | Adds dockerignore patterns for repo build contexts |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…ated mock The Signal RPC added to ActionsServiceClient broke the hand-written mock in runs/service tests. Replace it with a mockery-generated mock that automatically stays in sync with the interface. - Add actionsconnect to .mockery.yaml - Generate ActionsServiceClient mock via mockery - Update run_service_test.go, abort_reconciler_test.go, and get_action_details_test.go to use the generated mock Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Sergey Vilgelm <sergey@union.ai>
kumare3
reviewed
Apr 21, 2026
|
|
||
| // The output literal to signal the condition with. Must match the | ||
| // ConditionAction.type declared at enqueue time. | ||
| flyteidl2.core.Literal output = 3 [(buf.validate.field).required = true]; |
kumare3
approved these changes
Apr 21, 2026
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.
Summary
ACTION_PHASE_PAUSED = 9toActionPhaseenum for condition actions awaiting an external signalConditionAction: removescopeoneof (reserved fields 2-4), addprompt_type,timeout,webhookfields. AddConditionPromptTypeenum andConditionWebhookmessageSignalRPC toActionsServicewithSignalRequest(action_id+parent_action_name+core.Literal output) andSignalResponseoutputfield (core.Literal) toActionUpdateinstate_service.protoContext
Phase 1 of the condition actions implementation plan. These proto changes are required before the actions service implementation (signal handler, condition-aware abort, cascade abort) can proceed in the cloud repo.
Breaking change:
scopeoneof (fields 2-4) removed fromConditionActionandConditionActionMetadata. Field numbers are reserved to prevent reuse. Conditions are now scoped implicitly viaAction.parent_action_nameandActionIdentifier.Test plan
buf lintpasses on all 4 changed filesbuf buildsucceeds🤖 Generated with Claude Code
main