Seven partition-independence assertions fail on CI. All are pre-existing and none is caused by the PR that surfaced them (#561): measured at that PR's merge base with a single line changed — uncommenting tests/parallel/test_10*py in scripts/test.sh — the same seven fail with numbers identical to every digit.
| test |
serial vs np=2 |
relative |
test_1063::test_constrained_freeslip_partition_independent[iso] |
0.6194547793955 vs 0.6107410846031 |
1.4% |
test_1063::…[ti] |
0.3925981604039 vs 0.3937854671587 |
0.3% |
test_1063::test_constrained_raw_gauge_partition_independent |
0.6194547487092 vs 0.6194402844556 |
2.3e-05 |
test_1064::test_rotated_freeslip_annulus_partition_independent |
0.01897011154231 vs 0.01897329151624 |
1.7e-04 |
test_1064::test_rotated_freeslip_spherical3d_partition_independent |
0.004069689334228 vs 0.004074314572473 |
1.1e-03 |
test_1064::test_rotated_freeslip_spherical3d_topography_partition_independent |
0.4149689252074 vs 0.4125278837958 |
5.9e-03 |
test_1066::test_rotated_datum_prescribed_normal_partition_independent |
6.65602336 vs 6.6559607579 |
9.4e-06 |
Why this has been invisible
scripts/test.sh --p N ran only tests/parallel/test_075*py; the test_10*py line was commented out. test_1017 and test_1062–test_1068 have executed at no rank count in CI since they were written — the assertions that would have caught this were sitting dormant in the tree. PR #561 uncomments that line, which is why the failures appeared there first.
They also pass locally at np=2 and np=4 on macOS/arm64, so the dependence is partition- and geometry-specific rather than universal — CI's mesh and partitioning expose it.
Scope — wider than #495
#495 recorded this for Stokes_Constrained (the multiplier path) at 3.4%. The measurements above show the rotated free-slip path is affected too — annulus, spherical shell, and the prescribed wall-normal datum — which is a different code path entirely. #495 should be treated as one member of this family rather than the whole of it.
Notably the rotated cases here all pass an explicit analytic normal=, and their numbers are bit-identical before and after #560's nodal-normal fix, so this is not the #560 mechanism.
Severity
The spherical-shell topography case differs by 0.6% between rank counts, and 3-D spherical velocity by 0.1%. Anyone comparing a serial development run against a production run at scale gets different answers with no warning, and a benchmark validated at one rank count is not validated at another.
Suggested handling
The five still-failing assertions are xfail(strict=False) against this issue in #561 so the batch can stay enabled and the other twenty tests run — hiding them again by re-commenting the line would be the wrong trade. Fix order should start with the largest ([iso] at 1.4%) and with whichever path is shared, if any: establishing whether the constrained and rotated dependences have one root cause or two is the first question.
Related: #495 (the constrained-path instance), #560/#561 (surfaced it; not the cause).
Underworld development team with AI support from Claude Code
Seven partition-independence assertions fail on CI. All are pre-existing and none is caused by the PR that surfaced them (#561): measured at that PR's merge base with a single line changed — uncommenting
tests/parallel/test_10*pyinscripts/test.sh— the same seven fail with numbers identical to every digit.test_1063::test_constrained_freeslip_partition_independent[iso]test_1063::…[ti]test_1063::test_constrained_raw_gauge_partition_independenttest_1064::test_rotated_freeslip_annulus_partition_independenttest_1064::test_rotated_freeslip_spherical3d_partition_independenttest_1064::test_rotated_freeslip_spherical3d_topography_partition_independenttest_1066::test_rotated_datum_prescribed_normal_partition_independentWhy this has been invisible
scripts/test.sh --p Nran onlytests/parallel/test_075*py; thetest_10*pyline was commented out.test_1017andtest_1062–test_1068have executed at no rank count in CI since they were written — the assertions that would have caught this were sitting dormant in the tree. PR #561 uncomments that line, which is why the failures appeared there first.They also pass locally at np=2 and np=4 on macOS/arm64, so the dependence is partition- and geometry-specific rather than universal — CI's mesh and partitioning expose it.
Scope — wider than #495
#495 recorded this for
Stokes_Constrained(the multiplier path) at 3.4%. The measurements above show the rotated free-slip path is affected too — annulus, spherical shell, and the prescribed wall-normal datum — which is a different code path entirely. #495 should be treated as one member of this family rather than the whole of it.Notably the rotated cases here all pass an explicit analytic
normal=, and their numbers are bit-identical before and after #560's nodal-normal fix, so this is not the #560 mechanism.Severity
The spherical-shell topography case differs by 0.6% between rank counts, and 3-D spherical velocity by 0.1%. Anyone comparing a serial development run against a production run at scale gets different answers with no warning, and a benchmark validated at one rank count is not validated at another.
Suggested handling
The five still-failing assertions are
xfail(strict=False)against this issue in #561 so the batch can stay enabled and the other twenty tests run — hiding them again by re-commenting the line would be the wrong trade. Fix order should start with the largest ([iso]at 1.4%) and with whichever path is shared, if any: establishing whether the constrained and rotated dependences have one root cause or two is the first question.Related: #495 (the constrained-path instance), #560/#561 (surfaced it; not the cause).
Underworld development team with AI support from Claude Code