From cc0b2c5bb78f318e769b66481f7dd9af13291759 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 25 Sep 2026 13:14:33 +0000 Subject: [PATCH 1/2] docs(sweeps): the sweep reference says how many sessions a sweep opens on a remote Gurobi Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01Xh3hYACgQXtysNr25ABr9F --- docs/reference/sweeps.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/sweeps.md b/docs/reference/sweeps.md index 5fb04035..156806d5 100644 --- a/docs/reference/sweeps.md +++ b/docs/reference/sweeps.md @@ -243,7 +243,7 @@ than the table. Only `scan_parquet` is a reference. | | | |---|---| | **a partition is a filter on the sources** | Not a narrower index: the containment check refuses parameter rows outside the declared coordinates, so the axis rewrites the rows and the index they are over in one mapping. | -| **one model, updated per slice** | A serial sweep builds once and [updates](api.md#re-solving-with-new-numbers), and a slice whose structure matches the last keeps the loaded solver. A sweep under `executor=` builds per slice, because a built model does not cross a process. | +| **one model, updated per slice** | A serial sweep builds once and [updates](api.md#re-solving-with-new-numbers), and a slice whose structure matches the last keeps the loaded solver. A sweep under `executor=` builds per slice, because a built model does not cross a process. The loaded solver holds Gurobi's environment, so a [remote Gurobi](api.md#choosing-a-solver), such as Instant Cloud, opens one session for a serial sweep unless `keep='nothing'`. It opens a new one at each slice that `sweep.metrics` marks `loaded`, and at every slice under `executor=`. | | **`keep=` reaches every slice, and the fold chooses none of them** | It defaults to `'solver'`, as [`solve`](api.md#how-much-of-the-session-a-solve-keeps) does. `keep='progress'` has something to carry, since consecutive slices differ by one step; whether that pays is a fact about the *model*. Under `executor=` every slice is a first solve and keeps `'nothing'`. | | **the model is asked before it is sliced** | The plan says what each axis can bear ([`separability`](https://mathspec.readthedocs.io/en/latest/reference/reading/#asking-whether-an-axis-can-be-cut)). `EachWindow` needs `into` *windowable*: it refuses a coupling by naming the declaration and the change that would lift it, reads an offset the data decides off the data, requires `length - step` to cover what the rows read ahead, and warns where a `position()` restarts per window. What the rows read *behind* is the rolling-horizon seed, met by the edge policy, and is not refused. `EachCoordinate` is not asked: the spec must not declare the column it slices, so the model never sees the axis. | | **the model is parsed once** | `solve_over` validates it up front, so a model outside the language fails before the data is touched. Every worker is handed the lowered [program](glossary.md#the-chain), in this process or across one, and none reads the YAML or lowers it again. | From 41fcbcc9b2f9468aa6cec2d3b31b35d5ba1889f3 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 25 Sep 2026 13:14:50 +0000 Subject: [PATCH 2/2] docs: add the changelog line Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01Xh3hYACgQXtysNr25ABr9F --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5136ff52..6fa5eeca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ it releases that version ([RELEASING.md](https://github.com/fluxopt/specsolve/bl ## Upcoming version +- docs(sweeps): the sweep reference says how many sessions a sweep opens on a remote Gurobi ([#1771](https://github.com/fluxopt/specsolve/pull/1771)) - docs: every link to the language's documentation points at mathspec.readthedocs.io ([#1764](https://github.com/fluxopt/specsolve/pull/1764)) - fix: the PyPI page links the docs, issues and changelog, and a stale saved answer says the layout moves before 1.0 ([#1763](https://github.com/fluxopt/specsolve/pull/1763))