From 7a213beceb3d6b47d31e5dbdc47a8de63bfe1ace Mon Sep 17 00:00:00 2001 From: ChrisRackauckas-Claude Date: Mon, 17 Aug 2026 09:38:33 -0400 Subject: [PATCH 1/3] Restore package metadata before downgrade QA Co-Authored-By: Chris Rackauckas --- .github/workflows/downgrade.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/.github/workflows/downgrade.yml b/.github/workflows/downgrade.yml index a90d823..fd9f144 100644 --- a/.github/workflows/downgrade.yml +++ b/.github/workflows/downgrade.yml @@ -122,6 +122,19 @@ jobs: echo "Effective downgrade skip: $effective" echo "EFFECTIVE_SKIP=$effective" >> "$GITHUB_ENV" + - name: "Save project metadata for QA" + if: "${{ inputs.group == 'QA' }}" + shell: bash + run: | + save_dir="$RUNNER_TEMP/sciml-downgrade-original-projects" + mkdir -p "$save_dir" + IFS=',' read -ra dirs <<< "${{ inputs.projects }}" + for dir in "${dirs[@]}"; do + dir="$(echo "$dir" | xargs)" + [ -f "$dir/Project.toml" ] || continue + cp --parents "$dir/Project.toml" "$save_dir" + done + - uses: julia-actions/julia-downgrade-compat@v2 with: skip: "${{ env.EFFECTIVE_SKIP }}" @@ -139,6 +152,16 @@ jobs: with: project: "${{ inputs.project }}" + - name: "Restore project metadata before QA" + if: "${{ inputs.group == 'QA' }}" + shell: bash + run: | + save_dir="$RUNNER_TEMP/sciml-downgrade-original-projects" + while IFS= read -r -d '' saved; do + relative="${saved#"$save_dir/"}" + cp "$saved" "$relative" + done < <(find "$save_dir" -name Project.toml -print0) + - uses: julia-actions/julia-runtest@v1 with: project: "${{ inputs.project }}" From 7518048019eb79b1515e1c0258094492d5240351 Mon Sep 17 00:00:00 2001 From: ChrisRackauckas-Claude Date: Mon, 17 Aug 2026 10:10:13 -0400 Subject: [PATCH 2/3] Fix combined downgrade project testing Co-Authored-By: Chris Rackauckas --- .github/workflows/downgrade.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/.github/workflows/downgrade.yml b/.github/workflows/downgrade.yml index fd9f144..c5af024 100644 --- a/.github/workflows/downgrade.yml +++ b/.github/workflows/downgrade.yml @@ -142,6 +142,27 @@ jobs: mode: "${{ inputs.mode != '' && inputs.mode || 'deps' }}" no_promote: "${{ inputs.no_promote }}" + - name: "Remove secondary manifests before root test" + if: "${{ inputs.project == '@.' }}" + shell: bash + run: | + # A combined downgrade resolution writes the same merged manifest to + # every project directory. Pkg.test from the root project must resolve + # its test project against the root manifest, not merge two fixed + # manifests with potentially incompatible project metadata. + save_dir="$RUNNER_TEMP/sciml-downgrade-secondary-manifests" + mkdir -p "$save_dir" + IFS=',' read -ra dirs <<< "${{ inputs.projects }}" + for dir in "${dirs[@]}"; do + dir="$(echo "$dir" | xargs)" + [ -n "$dir" ] || continue + [ "$dir" = "." ] && continue + manifest="$dir/Manifest.toml" + [ -f "$manifest" ] || continue + mkdir -p "$save_dir/$dir" + mv "$manifest" "$save_dir/$manifest" + done + - name: "Install system packages" if: "${{ inputs.apt-packages != '' && runner.os == 'Linux' }}" run: | From 69d4b4db0c941012af3046caf287a1f68b617b57 Mon Sep 17 00:00:00 2001 From: ChrisRackauckas-Claude Date: Mon, 17 Aug 2026 10:13:13 -0400 Subject: [PATCH 3/3] Trim downgrade workflow comment Co-Authored-By: Chris Rackauckas --- .github/workflows/downgrade.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/downgrade.yml b/.github/workflows/downgrade.yml index c5af024..7339b5a 100644 --- a/.github/workflows/downgrade.yml +++ b/.github/workflows/downgrade.yml @@ -146,10 +146,7 @@ jobs: if: "${{ inputs.project == '@.' }}" shell: bash run: | - # A combined downgrade resolution writes the same merged manifest to - # every project directory. Pkg.test from the root project must resolve - # its test project against the root manifest, not merge two fixed - # manifests with potentially incompatible project metadata. + # Keep Pkg.test from merging two fixed manifests after combined resolution. save_dir="$RUNNER_TEMP/sciml-downgrade-secondary-manifests" mkdir -p "$save_dir" IFS=',' read -ra dirs <<< "${{ inputs.projects }}"