Add no_promote: exclude a currently-unresolvable backend (Mooncake) from the merged promotion#52
Merged
ChrisRackauckas merged 1 commit intoJul 4, 2026
Conversation
This was referenced Jul 3, 2026
Closed
Closed
Closed
Closed
Closed
…motion Merged resolution (old-style [extras]/[targets].test) promotes every weakdep test-extra into one merged [deps] and floor-resolves them together. That joint floor-test is correct -- the extensions all coexist in a single test environment. The only problem is a backend that is currently unresolvable on its own: Mooncake, whose dependency graph Resolver.jl cannot --min-resolve (StefanKarpinski/ Resolver.jl#24) though Pkg resolves it fine. Add a `no_promote` input (comma-separated; new 5th script arg / action input, default empty): a test-extra that is also a [weakdeps] entry AND named in `no_promote` is kept as a weakdep instead of being promoted, so it installs at latest and is never force-min-resolved. Every other weakdep extension is still promoted and floor-tested jointly. This is the minimal, most conservative way to green the Downgrade lane for one bugged backend. Threaded through create_merged_project (both the old-style and workspace-merge paths). Test: the otherwise-unsatisfiable JSON="0.999" extension fails the joint resolve when promoted, and succeeds (kept as a weakdep, absent from resolved deps) when named in no_promote. Suite 105/105. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
3352194 to
6bd3f8e
Compare
no_promote: exclude a currently-unresolvable backend (Mooncake) from the merged promotion
ChrisRackauckas
added a commit
to SciML/.github
that referenced
this pull request
Jul 4, 2026
…or-check) Adds a `no_promote` input (passed to julia-actions/julia-downgrade-compat) that keeps named weakdep extensions as weakdeps instead of floor-checking them. Defaults to `Mooncake`, whose dependency graph Resolver.jl cannot --min-resolve (StefanKarpinski/Resolver.jl#24) and which is registry-fragile, so its floor-check is skipped fleet-wide while every other weakdep extension is still floor-checked. Callers can override (e.g. add Reactant, or set empty to floor-check Mooncake). NOTE: inert until julia-actions/julia-downgrade-compat#52 (which adds the `no_promote` action input) merges and v2 is retagged; the currently-released v2 ignores the unknown `with:` key, so this is safe to land ahead of that. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
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
In merged resolution (old-style
[extras]+[targets].test), the action promotes every weakdep test-extra into one merged[deps]and floor-resolves them together withResolver.jl --min. That joint floor-test is correct — the extensions all coexist in a single test environment, so they should be resolved together.The only real problem is one backend that is currently unresolvable on its own: Mooncake, whose dependency graph
Resolver.jlcannot--min-resolve at all (StefanKarpinski/Resolver.jl#24 — Pkg resolves the identical graph fine). When Mooncake is in the joint resolve, the whole merged--minerrorsUnsatisfiable(and it's registry-fragile — the same commit flipsUNSAT↔SATas packages release). This is the fleet-wide SciML Downgrade red.Fix (minimal, conservative)
Add a
no_promoteinput (comma-separated; new 5th script arg / action input, default empty). A test-extra that is also a[weakdeps]entry and named inno_promoteis kept as a weakdep instead of being promoted — it installs at latest during instantiate and is never force-min-resolved. Every other weakdep extension is still promoted and floor-tested jointly, exactly as before.So
no_promote: Mooncakedrops just Mooncake from the joint resolve → it succeeds → the Downgrade lane goes green, while every other extension's floor is still exercised together. It's the smallest possible change that greens the lane, and it's opt-in per repo.Threaded through
create_merged_project(both the old-style and the workspace-merge paths).Validation
JSON = "0.999"extension fails the joint resolve when promoted (stock behavior), and succeeds — kept as a weakdep, absent from the resolved[deps]— when named inno_promote.Sits on top of current
main(includes #51). Companion: SciML/.github#106 wiresno_promote: Mooncakeas the reusabledowngrade.ymldefault so the whole SciML fleet goes green once this releases.Draft — ignore until reviewed by @ChrisRackauckas.