Skip to content

Let the formatter float again, keeping the clean env that actually fixed it - #39

Merged
sotashimozono merged 1 commit into
mainfrom
unpin-formatter
Sep 13, 2026
Merged

sotashimozono merged 1 commit into
mainfrom
unpin-formatter

Conversation

@sotashimozono

@sotashimozono sotashimozono commented Sep 13, 2026 •

Copy link
Copy Markdown
Contributor

JF_VERSION: '2.10.1' was added when the check was still nondeterministic, on
the theory that a pin was what made it reproducible. The 2026-07-25 diagnosis
had already shown otherwise: the same commit resolved 2.3.2 on rosina and
2.10.1 on a laptop because Pkg.add was landing in the runner's shared depot,
whose compat bounds capped the resolve. Pkg.activate(; temp=true) fixed that,
and it stays. The pin rode along and has been standing debt in 27 callers since.

A pin also rots in a way this fleet cannot see: the pinned version is what
every repo is formatted against, so the longer it sits the larger the eventual
reflow. It has now sat from 2.10.1 to 2.14.0.

Measured before removing it, by resolving both versions in a temp env and
running format(dir; overwrite=false) over a shallow clone of all 27 callers:
26 are clean under the pin today, and 13 of those reflow under 2.14.0. So this
is not free, unlike the same change in QAtlasHub/.github where every caller was
already at 2.14.0.

The diff is redundant semicolons and nothing else. Classifying every removed
line across the thirteen: 654 are a trailing ; at end of statement
(sw = Sweeps(6); to sw = Sweeps(6)), and 61 are a bare ; alone on a line,
an empty statement 2.10.1 emitted itself. Nothing falls outside those two, which
is why the diffstats are not line-for-line. Largest is FibVUMPS at 97 files;
eight of the thirteen are under ten lines.

Order matters: this must merge before the reformats, or each reformat PR is
red against the pin it is meant to move past. The thirteen are
ComplexTimeEvolution, ComplexTimeExperiments, FibVUMPS, ITensorcMPS,
ITensorModels, OnoResponseMPS, ParaLinearAlgebra, ParameterizedITensor,
ParameterizedITensorMPS, ReducedEnvExperiments, SingleSiteDMRG,
StructuredITensors and ThermalMPS. AdiabaticPumpExperiments is red under both
and is a separate pre-existing failure.

Also asserts that the loaded JuliaFormatter is the one the temp project holds.
using falls back to the depot's default environment when the active project
does not declare the package, which has silently formatted this fleet at 2.4.0
twice, once from a throwaway env and once from a named @format env.

The failure message now names the resolved version and uses overwrite=true
with a retry loop, since overwrite=false is the check rather than the fix and
a single pass does not always converge.

Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com

…xed it

`JF_VERSION: '2.10.1'` was added when the check was still nondeterministic, on
the theory that a pin was what made it reproducible. The 2026-07-25 diagnosis
had already shown otherwise: the same commit resolved 2.3.2 on rosina and
2.10.1 on a laptop because `Pkg.add` was landing in the runner's shared depot,
whose compat bounds capped the resolve. `Pkg.activate(; temp=true)` fixed that,
and it stays. The pin rode along and has been standing debt in 27 callers since.

A pin also rots in a way this fleet cannot see: the pinned version is what
every repo is formatted against, so the longer it sits the larger the eventual
reflow. It has now sat from 2.10.1 to 2.14.0.

Measured before removing it, by resolving both versions in a temp env and
running `format(dir; overwrite=false)` over a shallow clone of all 27 callers:
26 are clean under the pin today, and 13 of those reflow under 2.14.0. So this
is not free, unlike the same change in QAtlasHub/.github where every caller was
already at 2.14.0.

The diff is redundant semicolons and nothing else. Classifying every removed
line across the thirteen: 654 are a trailing `;` at end of statement
(`sw = Sweeps(6);` to `sw = Sweeps(6)`), and 61 are a bare `;` alone on a line,
an empty statement 2.10.1 emitted itself. Nothing falls outside those two, which
is why the diffstats are not line-for-line. Largest is FibVUMPS at 97 files;
eight of the thirteen are under ten lines.

Order matters: this must merge before the reformats, or each reformat PR is
red against the pin it is meant to move past. The thirteen are
ComplexTimeEvolution, ComplexTimeExperiments, FibVUMPS, ITensorcMPS,
ITensorModels, OnoResponseMPS, ParaLinearAlgebra, ParameterizedITensor,
ParameterizedITensorMPS, ReducedEnvExperiments, SingleSiteDMRG,
StructuredITensors and ThermalMPS. AdiabaticPumpExperiments is red under both
and is a separate pre-existing failure.

Also asserts that the loaded JuliaFormatter is the one the temp project holds.
`using` falls back to the depot's default environment when the active project
does not declare the package, which has silently formatted this fleet at 2.4.0
twice, once from a throwaway env and once from a named `@format` env.

The failure message now names the resolved version and uses `overwrite=true`
with a retry loop, since `overwrite=false` is the check rather than the fix and
a single pass does not always converge.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@sotashimozono
sotashimozono merged commit dd154ea into main Sep 13, 2026
1 check passed
@sotashimozono
sotashimozono deleted the unpin-formatter branch September 13, 2026 13:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant