Skip to content

feat(proto): add PAUSED phase, Signal RPC, and condition action updates#7248

Open
SVilgelm wants to merge 3 commits intov2from
svilgelm/condition-signal-proto
Open

feat(proto): add PAUSED phase, Signal RPC, and condition action updates#7248
SVilgelm wants to merge 3 commits intov2from
svilgelm/condition-signal-proto

Conversation

@SVilgelm
Copy link
Copy Markdown

@SVilgelm SVilgelm commented Apr 21, 2026

Summary

  • Add ACTION_PHASE_PAUSED = 9 to ActionPhase enum for condition actions awaiting an external signal
  • 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 (action_id + parent_action_name + core.Literal output) and SignalResponse
  • Add optional output field (core.Literal) to ActionUpdate in state_service.proto

Context

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: scope oneof (fields 2-4) removed from ConditionAction and ConditionActionMetadata. Field numbers are reserved to prevent reuse. Conditions are now scoped implicitly via Action.parent_action_name and ActionIdentifier.

Test plan

  • buf lint passes on all 4 changed files
  • buf build succeeds
  • Breaking changes are expected and documented (scope oneof removal)

🤖 Generated with Claude Code

  • main
    • Flyte 2 #6583
      • feat(proto): add PAUSED phase, Signal RPC, and condition action updates 👈

Copilot AI review requested due to automatic review settings April 21, 2026 17:49
@SVilgelm SVilgelm changed the base branch from main to v2 April 21, 2026 17:49
@github-actions
Copy link
Copy Markdown

🐳 Docker CI Image Built

The CI Docker image has been built and pushed for this PR!

Image: ghcr.io/flyteorg/flyte/ci:pr-7248

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>
@SVilgelm SVilgelm force-pushed the svilgelm/condition-signal-proto branch from a27ede1 to 07e9cb2 Compare April 21, 2026 17:51
@github-actions github-actions Bot mentioned this pull request Apr 21, 2026
3 tasks
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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-bundled workflow 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.

Comment thread cache_service/manager/manager_test.go
Comment thread dataproxy/cmd/main.go
Comment thread docker/demo-bundled/bootstrap/cmd/embedded-postgres/main.go
Comment thread docker/demo-bundled/bootstrap/cmd/embedded-postgres/main.go
Comment thread charts/flyte-demo/templates/storage/rustfs/deployment.yaml
Comment thread dataproxy/setup.go
Comment thread cache_service/repository/impl/reservation.go
Comment thread dataproxy/config/dataproxyconfig_flags_test.go
Comment thread boilerplate/flyte/pull_request_template/Readme.rst
Comment thread buf.yaml
Signed-off-by: Sergey Vilgelm <sergey@union.ai>
…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>
@SVilgelm SVilgelm requested review from EngHabu and kumare3 April 21, 2026 19:10

// 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];
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

value

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants