Workflow import silently drops addons: imported services deploy with no Ingress and 404

Symptom

A workflow imported into Studio is valid and reports Deployed, the pod runs — and no Ingress is ever created. Every URL answers 404. Studio shows no error, because from its point of view nothing failed.

Reported against 26.9.0.

Root cause — confirmed in the code

studio/ryax/studio/infrastructure/packaging/packaging_import.py:268 builds each action with an explicit field list that omits both addon fields:

workflow_action = WorkflowAction(
    id=..., name=..., technical_name=..., description=..., kind=...,
    version=..., has_dynamic_outputs=..., position_x=..., position_y=...,
    inputs=[...], outputs=[...], action_id=...,
    deployment_status=WorkflowActionDeployStatus.NONE,
    resources=WorkflowActionResources(...),
)

Both fields exist on the entity and default to empty (studio/ryax/studio/domain/workflow/entities/workflow_action.py):

addons_inputs: list[WorkflowActionAddonInput] = field(default_factory=list)   # :77
addons: Dict[str, dict] = field(default_factory=dict)                          # :87

grep -n addon packaging_import.py returns nothing. The importer has never known about addons.

No addon means no HTTP addon, which is what creates the Ingress — hence a running pod with no route to it.

Why it is worse than it looks

It is silent. The workflow validates, deploys and reports success; the only evidence is a 404 at a URL Studio does not display. It also poisons what comes after: the action definition the Runner stores at this first deploy has no addon inputs, and that definition is never updated — see the companion issue.

Reproduction

  1. Export a workflow containing an action with the HTTP addon.
  2. Import it (or import any workflow whose action needs an addon).
  3. Deploy. Status is Deployed, the pod runs, kubectl get ingress is empty, the URL 404s.

Workaround in place

The demo builds workflows through the UI APIs instead of importing them.

Acceptance criteria

  • An imported workflow round-trips its addons: export → import → export is stable with respect to addons and addons_inputs.
  • A test covers the round trip; the export side lives beside the importer in studio/ryax/studio/infrastructure/packaging/.

Found while migrating the CAPE demo to Ryax 26.9.0: ryax-tech/public/cape-tools/cape-agentic-infra#2 (comment 3905714558)