other: resolve latest compiler version from Obedients nightly build - #632
Merged
Conversation
The auto compiler update workflow picked the "latest" prod version by PEP 440-sorting the package registry's version strings. rebel-compiler's `.devN` segment is the commit distance from the last tag, which resets across branches, so a chronologically newer build can have a smaller N (e.g. dev branch build 0.11.1.dev351 < a side-branch 0.11.1.dev501). Sorting then pins optimum-rbln to a stale side-branch build and never advances to the real latest dev build. Resolve the version from the latest passed `nightly` build on `dev` instead, reading VERSION_PROD from its `compiler-nightly-version` artifact. This tracks the actual dev HEAD and filters out side-branch prod uploads via branch=dev&state=passed. Also log both versions so a skipped create-pr is explainable from the run output. Requires new repo secrets: OBEDIENTS_API_TOKEN, OBEDIENTS_API_URL. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The dev/passed build list also contains nightly-build-AArch64 (ARM) and nixl-triggered builds; the latter carry no compiler-nightly-version artifact. Taking the newest build of any flavor could pick a build with no manifest (breaking the run) or the ARM variant. Filter by message=="nightly-build" to select the canonical amd64 prod nightly, and fail loudly if the build, artifact, or VERSION_PROD is missing. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
`(.items // .)` errors on a bare-array response because indexing an
array with a string key is a hard error in jq, not null, so `//` never
catches it. Use an explicit type check so the step works whether the
Obedients API returns a bare array or an {items:[...]} envelope.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
rebel-jongho
approved these changes
Jul 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The auto compiler update workflow (
auto_compiler_update_impl.yaml) picked the "latest" prod compiler version by PEP 440-sorting the package registry's version strings viaparsing_latest_version.py.rebel-compiler uses
setuptools_scm-style versions where the.devNsegment is the commit distance from the last tag. That count resets across branches, so a chronologically newer build can have a smaller N. Concretely:8b9056e90.11.1.dev501+g8b9056e9.prod6beed8a00.11.1.dev351+g6beed8a0.prodBecause
dev351 < dev501under PEP 440, the workflow pinneddevto the older side-branch build and would never advance to the real latest dev build (e.g. run 29361990709 skippedcreate-pr).Fix
Resolve the version from the latest passed
nightlybuild ondevin Obedients, readingVERSION_PRODfrom itscompiler-nightly-versionartifact:GET /pipelines/nightly/builds?branch=dev&state=passed&per_page=1-> latest build (newest-first)compiler-nightly-versionartifact of that buildVERSION_PRODfrom it (download URL is pre-signed)This tracks the actual dev HEAD, and
branch=dev&state=passedfilters out side-branch prod uploads. Both versions are now logged so a skippedcreate-pris explainable from the run output.Follows the Obedients API pattern from #630.
Required before merge
OBEDIENTS_API_TOKENsecret (already added)OBEDIENTS_API_URLsecret (Obedients API origin)Notes
parsing_latest_version.pyandDEV_PKG_URLare left in place -- still used bybc_latest_tag.yamlandrbln_optimum_pytest.yamlrespectively.(.items // .).🤖 Generated with Claude Code