Skip to content

ci: stop one duplicate wheel from cancelling every other platform - #456

Merged
theGreatHerrLebert merged 2 commits into
mainfrom
fix/connector-publish-matrix
Sep 11, 2026
Merged

theGreatHerrLebert merged 2 commits into
mainfrom
fix/connector-publish-matrix

Conversation

@theGreatHerrLebert

Copy link
Copy Markdown
Owner

What happened

The v0.4.2 release published Linux 3.11–3.13 and macOS arm64 3.12/3.13, then stopped. All three Windows jobs and macOS 3.11 were cancelled, so those platforms have no 0.4.2 wheel.

Because every imspy package in this release now requires imspy-connector>=0.4.2, installing the stack on Windows currently fails to resolve. Linux is fully covered, so the original report that prompted the release is unblocked.

Why

Two workflow bugs combined.

1. A guaranteed duplicate. macos-14 and macos-15 are both arm64, and both built with --target aarch64-apple-darwin — so they produce byte-identical wheel names. Whichever uploads second is always rejected:

Failed to upload "imspy_connector-0.4.2-cp312-cp312-macosx_11_0_arm64.whl" (6.6 MiB)
  Caused by: File already exists ('imspy_connector-0.4.2-cp312-cp312-macosx_11_0_arm64.whl' …)

2. Default fail-fast. That guaranteed-failing job then cancelled every platform still building. Windows takes longest, so Windows always loses.

This isn't new — the same signature appears on the models-v0.6.0 release back in May, which also shows Rust Binding: failure. It's been silently costing platforms wheels for months; it only became visible now because the pins make the connector mandatory.

Fix

  • Drop the duplicate macOS runner (macos-15), keeping one arm64 builder.
  • fail-fast: false — platforms publish independently; one failure can't cost another platform its wheel.
  • maturin publish --no-sdist --skip-existing — an already-uploaded wheel is skipped instead of failing the job.
  • Add workflow_dispatch, so a partially-published version can be completed by re-running against the same ref rather than cutting a new release. --skip-existing makes that safe to repeat.

Publishing the missing v0.4.2 wheels

A re-run of the existing release run would use the workflow as it was at the tag, so it would hit the same bug. Once this merges, the missing Windows and macOS-3.11 wheels can be published by dispatching this workflow against main — the connector source there is identical to the v0.4.2 tag, and --skip-existing will skip the wheels PyPI already has.

I have not dispatched anything; that's your call.

Note

No Intel macOS (x86_64) wheels are produced — before or after this change, the matrix is arm64-only. Flagging rather than changing it, since adding macos-13 is a separate decision.

https://claude.ai/code/session_01532ckxwR1fUorKF7CN66uA

The v0.4.2 release published Linux wheels for 3.11-3.13 and macOS arm64 for
3.12/3.13, then stopped: all three Windows jobs and macOS 3.11 were cancelled,
so those platforms have no 0.4.2 wheel at all. Since every imspy package in
this release requires imspy-connector>=0.4.2, installing the stack on Windows
currently fails to resolve.

Two workflow bugs combined:

macos-14 and macos-15 are both arm64, and both built with
--target aarch64-apple-darwin, so they produce byte-identical wheel names
(macosx_11_0_arm64). The second one to upload is always rejected:

    Failed to upload "imspy_connector-0.4.2-cp312-cp312-macosx_11_0_arm64.whl"
    Caused by: File already exists

The matrix then ran with the default fail-fast, so that guaranteed-duplicate
job cancelled every platform still building — Windows among them. The same
signature appears on the models-v0.6.0 release, so this has been failing for a
while rather than being new.

Fixes: drop the duplicate macOS runner, set fail-fast: false so platforms
publish independently, and pass --skip-existing so an already-uploaded wheel is
skipped rather than failing the job.

Also adds workflow_dispatch, so a partially-published version can be completed
by re-running against the same ref instead of cutting a new release —
--skip-existing makes that safe to repeat.

Note: no Intel macOS (x86_64) wheels are produced, before or after this change;
the matrix is arm64-only. Worth a separate decision.

Claude-Session: https://claude.ai/code/session_01532ckxwR1fUorKF7CN66uA
@theGreatHerrLebert
theGreatHerrLebert enabled auto-merge (squash) September 11, 2026 08:36
@theGreatHerrLebert
theGreatHerrLebert merged commit 0e8f0fe into main Sep 11, 2026
5 checks passed
@theGreatHerrLebert
theGreatHerrLebert deleted the fix/connector-publish-matrix branch September 11, 2026 09:10
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.

1 participant