Symptom
Since 2026-07-06, the nightly real-app e2e workflow fails. flwr run never produces a crate, and validate_crate.py reports:
FAIL: crate not found at /tmp/flcrate_out/ro-crate/ro-crate-metadata.json (did the run produce one?)
The actual failure is earlier in the run — Flower's server can't start:
Starting local SuperLink on 127.0.0.1:39093...
╭─ Error ─────────────────────────────────────────────╮
│ Failed to start local SuperLink: `flower-superlink` │
│ exited with code 1. See logs at .../superlink.log. │
╰──────────────────────────────────────────────────────╯
(The job then hangs ~7.5 min on the crate-poll loop before failing, because flwr run ... || true swallows the SuperLink error.)
Root cause: grpcio 1.82.0
Diffing installed packages between the last green run (07-05) and a red run (07-07), the only change is grpcio:
| Package |
Green 07-05 |
Red 07-07 |
| grpcio |
1.81.1 |
1.82.0 |
| grpcio-health-checking |
1.81.1 |
1.82.0 |
| flwr |
1.32.1 |
1.32.1 |
| protobuf / ray / numpy / scikit-learn / … |
identical |
identical |
grpcio 1.82.0 was published 2026-07-06 04:20 UTC — every e2e run after that timestamp fails, every run before it passed. Flower's SuperLink is a gRPC server, so a grpcio regression taking it down is consistent. The e2e installs grpcio unpinned (via flwr), so it upgraded automatically.
This is not a flwrCrate bug — it's an upstream Flower/grpcio incompatibility. The per-push tests workflow (recorded fixtures, no live Flower) is unaffected and green.
Workaround (this issue)
Pin grpcio<1.82 in the e2e workflow so it keeps validating flwrCrate against a working stack.
Follow-ups
Symptom
Since 2026-07-06, the nightly
real-app e2eworkflow fails.flwr runnever produces a crate, andvalidate_crate.pyreports:The actual failure is earlier in the run — Flower's server can't start:
(The job then hangs ~7.5 min on the crate-poll loop before failing, because
flwr run ... || trueswallows the SuperLink error.)Root cause: grpcio 1.82.0
Diffing installed packages between the last green run (07-05) and a red run (07-07), the only change is grpcio:
grpcio 1.82.0 was published 2026-07-06 04:20 UTC — every e2e run after that timestamp fails, every run before it passed. Flower's SuperLink is a gRPC server, so a grpcio regression taking it down is consistent. The e2e installs grpcio unpinned (via
flwr), so it upgraded automatically.This is not a flwrCrate bug — it's an upstream Flower/grpcio incompatibility. The per-push
testsworkflow (recorded fixtures, no live Flower) is unaffected and green.Workaround (this issue)
Pin
grpcio<1.82in the e2e workflow so it keeps validating flwrCrate against a working stack.Follow-ups
flwr/flower-superlinkfails to start under grpcio 1.82.0).|| true).