Skip to content

Commit e87efc1

Browse files
FBumannclaude
andcommitted
docs(arithmetics): track open-items.md; mark #744 resolved (#744)
Commit the v1-rollout checklist (previously untracked) as the shared status tracker, refreshed to the current state: the one open design decision (#744, MultiIndex storage) is resolved — v1 disallows MI — and the remaining work is organised by goals.md's three stages (opt-in / default / 1.0). The transition-surface-complete + changelog items are placed at stage 1, matching goals.md step 1 (warn on legacy, raise on v1). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 94a8a3c commit e87efc1

1 file changed

Lines changed: 22 additions & 14 deletions

File tree

arithmetics-design/open-items.md

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,29 @@ coordinate-alignment intro rules all have a v1 implementation. The high-level
66
schedule lives in [`goals.md`](goals.md) (opt-in → default → 1.0); this file
77
tracks the concrete items per stage.
88

9-
One open **design** decision remains — [#744] MultiIndex storage. No open
10-
arithmetic-rule questions.
9+
The one open **design** decision — [#744] MultiIndex storage — is **resolved**:
10+
v1 disallows first-class `pd.MultiIndex` (a flat dim + auxiliary level coords),
11+
implemented in [#803]. No open arithmetic-rule questions remain; everything left
12+
is rollout + cleanup.
1113

1214
## Stage 1 — release v1 (opt-in)
1315

1416
Legacy stays the default. The transition surface must already be **complete**
1517
here ([`goals.md`] step 1: *warn on legacy, raise on v1*).
1618

17-
- [ ] **Resolve [#744] — MultiIndex storage — before #717 merges.** First-class
18-
`pd.MultiIndex` vs. a flat dim + auxiliary level coords. §11's
19-
stacked-MultiIndex rule and the storage of a `snapshot`-style
20-
`(period, timestep)` dim both depend on it — and §11 **ships in #717**, so
21-
changing the model after v1 is released would change observable §11 behaviour.
22-
Must be locked (and its implementation in the same release cut) before #717
23-
ships v1, not deferred to the default flip.
19+
- [x] **Resolve [#744] — MultiIndex storage — before #717 merges.** Resolved:
20+
v1 disallows first-class `pd.MultiIndex` (flat dim + auxiliary level coords).
21+
§11's stacked-MultiIndex rule and the storage of a `snapshot`-style
22+
`(period, timestep)` dim both depend on this, and §11 **ships in #717** — so
23+
the implementation ([#803]) must land in the **same release cut** as #717,
24+
else released §11 behaviour would change when it lands.
2425
- [ ] Land [#717] (v1 semantics) → `master`
26+
- [ ] Land [#803] (v1 MultiIndex drop) with it — same cut, so §11 ships final
2527
- [ ] **Transition surface complete** — every behaviour-change site raises under
2628
v1 *and* warns under legacy (`warn_legacy`, naming the fix). This is the
2729
"no silent change" guarantee ([`goals.md`] transitioning goal #3): shipping v1
28-
with a gap would silently change any model that opts in.
30+
with a gap would silently change any model that opts in. Includes #803's
31+
MultiIndex rejects and the multi-key-`groupby`-flat change as new fork sites.
2932
- [ ] Changelog note — v1 available via `options['semantics'] = 'v1'`; legacy
3033
remains the default; link [`convention.md`].
3134

@@ -40,8 +43,9 @@ here ([`goals.md`] step 1: *warn on legacy, raise on v1*).
4043
- [ ] The **strip**: the concentrated MI machinery (the `alignment.py`
4144
level-projection subsystem, netcdf MI (de)serialize) *and* the scattered
4245
surface (`assign_multiindex_safe` ×39, `isinstance(MultiIndex)` guards, MI
43-
branches) — plus every other `grep "LEGACY: remove at 1.0"` marker.
44-
Dependency-ordered checklist in [`legacy-removal.md`].
46+
branches) — all kept live for legacy until now — plus every other
47+
`grep "LEGACY: remove at 1.0"` marker. Dependency-ordered checklist in
48+
[`legacy-removal.md`].
4549
- [ ] Reframe [`convention.md`] / [`goals.md`] — drop the "v1"/legacy framing
4650
once there is only one convention.
4751

@@ -55,15 +59,19 @@ here ([`goals.md`] step 1: *warn on legacy, raise on v1*).
5559

5660
## Decisions
5761

58-
- [ ] **[#744] — MultiIndex storage** — the one open design decision; gates the
59-
**v1 release** (§11 ships in #717 and depends on it), not just the default flip.
62+
- [x] **[#744] — MultiIndex storage** → v1 disallows MI (flat + aux coords),
63+
implemented in [#803]; must land in the same release cut as #717 (§11 depends
64+
on it).
65+
- [x] **Legacy warnings live from the opt-in release** → yes; the transition
66+
surface is complete at stage 1, not deferred.
6067
- [ ] **When v1 becomes the default** — pick the release; gated on the migration
6168
guide.
6269

6370
<!-- references -->
6471
[#744]: https://github.com/PyPSA/linopy/issues/744
6572
[#714]: https://github.com/PyPSA/linopy/issues/714
6673
[#717]: https://github.com/PyPSA/linopy/pull/717
74+
[#803]: https://github.com/PyPSA/linopy/pull/803
6775
[`goals.md`]: goals.md
6876
[`docs-plan.md`]: docs-plan.md
6977
[`legacy-removal.md`]: legacy-removal.md

0 commit comments

Comments
 (0)