Skip to content

proto companion: 08716e9 changed the Python facade plugin without bumping 0.0.17, so cached 0.0.17 images still render streaming RPCs as unary #837

Closed

Description

@antoinetoussaint-byte

What happened

  • companions/proto/info.codefly.yaml moved to 0.0.17 in 844a0e0 (2026-10-24). ghcr.io/codefly-dev/proto:0.0.17 was first published as sha256:aa8d63e1… (created 2026-10-25T06:26Z).
  • 08716e9 (2026-10-25 10:02Z) changed facades/python/protoc_gen_codefly_facade_python.py so each streaming RPC calls its own gateway seam (unary_stream, stream_unary, stream_stream). It did not bump the companion version.
  • The CLI's Companions workflow (dispatch, 20:03Z) republished the set from core main. That overwrote proto:0.0.17 with sha256:46e8b398…, which carries the streaming plugin.

So one tag now names two images. A machine that pulled 0.0.17 before 20:42Z keeps the old image: the CLI trusts a cached tag and pulls only when it is missing. On such a machine codefly generate client --language python still renders every RPC as gateway.unary(...). obin-ai/module-model-gateway#210's libraries/model-client/python/model_client/model.py is that output: its four streaming RPCs (GenerateStream, SpeechStream, TranscribeStream, Live) come out unary.

Evidence: codefly-dev/cli TestGenerateClientPythonStreaming (cli PR linked below) fails against aa8d63e1 and passes against 46e8b398. Inside the images, grep -c unary_stream /opt/codefly-facades/python/protoc_gen_codefly_facade_python.py gives 0 for the first and 3 for the second.

Fix

Bump companions/proto/info.codefly.yaml to 0.0.18 so the plugin change gets a tag no machine has cached. Then the CLI moves its core pin and publishes 0.0.18 (Companions workflow, core_ref = the merge commit). Sequence it after codefly-dev/cli#1158, which also moves the CLI's go.mod.

Better still, add a guard in core CI: a change under companions/<name>/ whose image inputs differ from the last published version must bump that companion's info.codefly.yaml. The same class has bitten agents (a cached agent trusted by name).

Stopgap until then: docker pull ghcr.io/codefly-dev/proto:0.0.17 before regenerating a Python client.

🤖 Generated with Claude Code

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions