Skip to content

Typed-IaC gRPC service registration missing — blocks all deploys against wfctl v0.27.7+ #91

Description

@intel352

Summary

`workflow-plugin-digitalocean` v0.14.3 (latest) doesn't register the `workflow.plugin.external.iac.IaCProviderRequired` gRPC service that wfctl v0.27.7+ demands as a strict-cutover gate (workflow PR #609, typed-IaC cutover).

Result: every `wfctl infra plan`/`apply`/`bootstrap` invocation fails immediately with:

```
error: plugin "digitalocean" does not register the required
"workflow.plugin.external.iac.IaCProviderRequired" gRPC service —
upgrade with: wfctl plugin update digitalocean
```

The advice in the error message can't actually be followed — there is no DO plugin release with the service registration.

Root cause

`go.mod` pins `github.com/GoCodeAlone/workflow v0.27.1`, which predates the typed-IaC SDK additions (PR #602/#603/#606/#610/#618 → v0.50.0). The plugin's `cmd/main.go` needs to:

  1. Bump workflow dep to v0.27.7+ (or v0.50.x).
  2. Switch from `sdk.ServePlugin` to whatever the new typed-IaC entry point is (`ServePluginFull` if it accepts an IaCProviderRequired arg, or a dedicated `ServeIaCProvider` helper).
  3. Declare the typed-IaC contract in plugin.contracts.json (or whatever the new mechanism is — see workflow#609 PR description).

Reproduction

BMW pilot deploy chain. Run 25634208295 on sha 68431cc5 (BMW PR 268 merge):

```
Plan staging infra

[external-plugins] starting plugin "digitalocean" (version v0.14.3)
[external-plugins] plugin "digitalocean" loaded successfully
[external-plugins] shutting down plugin "digitalocean"
error: plugin "digitalocean" does not register the required
"workflow.plugin.external.iac.IaCProviderRequired" gRPC service
```

The plugin connects, advertises capabilities, then gets rejected by the strict-cutover gate before any provider call lands.

Blast radius

This blocks every BMW deploy + every infra-touching CI pipeline that pins wfctl v0.27.7+. Workarounds are bad:

  • Pin wfctl ≤ v0.27.6 → loses workflow PR #620 (iac_provider/provider disambiguation) which is also required for BMW eventbus resources. No version of wfctl supports BMW today.
  • Run wfctl in a non-strict mode → no such mode exists per workflow PR #609 ("force-cutover, no compat" per the user mandate documented in memory `feedback_force_strict_contracts_no_compat`).

Both BMW (`workflow-plugin-eventbus issue #5` for non-cloud resources) and any other consumer pinning v0.27.7+ are blocked until this lands.

Recommendation

Cut a v0.15.0 (or v0.50.x to mirror workflow's major) of `workflow-plugin-digitalocean` with:

  • workflow dep bumped to v0.50.x
  • IaCProviderRequired gRPC service registered via the typed-IaC SDK
  • plugin.contracts.json updated to declare the contract

Related

  • workflow PR #609 (typed-IaC strict-cutover, in v0.27.7)
  • workflow PR #618 (typed-RPC capability discovery at 5 dispatch sites, in v0.50.0)
  • workflow PR #620 (iac_provider/provider disambiguation, in v0.50.1) — also needed
  • workflow-plugin-eventbus issue chore: bump version to 0.5.0 #5 (sister architectural gap on the eventbus side)
  • BMW PR #268 (https://github.com/GoCodeAlone/buymywishlist/pull/268) — got blocked at Plan step on this gap
  • BMW PR #267 rotate-spaces-credentials.yml — partial-success failure on this same gap during post-rotation cleanup

🤖 Filed by Claude Code on behalf of the BMW deploy debug chain

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions