From 5331a93d4cb7b87e8b32ab9295dffced43a76782 Mon Sep 17 00:00:00 2001 From: Vyncint Ng Date: Thu, 3 Sep 2026 10:59:49 +0700 Subject: [PATCH] ci(release): publish autograd, nn and optim before the GPU backends cargo publish resolves versioned dev-dependencies against the registry, and oxmera-metal/oxmera-cuda now have oxmera-nn and oxmera-optim as dev-dependencies for the fused-optimizer parity tests. The 0.3.0 run published core, tensor, ops and cpu and stopped at metal with 'failed to select a version for oxmera-nn = ^0.3.0'; the resumable loop skips what is already on the registry, so a workflow_dispatch from main finishes it. Signed-off-by: Vyncint Ng --- .github/workflows/release.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a1427ab..7422fe4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -71,7 +71,12 @@ jobs: set -euo pipefail version="${TAG#v}" ua="oxmera-release (github.com/${GITHUB_REPOSITORY})" - crates="oxmera-core oxmera-tensor oxmera-ops oxmera-cpu oxmera-metal oxmera-cuda oxmera-runtime oxmera-autograd oxmera-nn oxmera-optim oxmera oxmera-cli" + # Dependency order INCLUDING versioned dev-dependencies: cargo + # resolves those against the registry at publish time, so a crate + # whose tests depend on oxmera-nn/oxmera-optim (the GPU backends' + # fused-optimizer parity tests) must come after them. 0.3.0's first + # run stopped at oxmera-metal for exactly this reason. + crates="oxmera-core oxmera-tensor oxmera-ops oxmera-cpu oxmera-autograd oxmera-nn oxmera-optim oxmera-metal oxmera-cuda oxmera-runtime oxmera oxmera-cli" for crate in $crates; do # Skip versions already on the registry: that is what makes a