refactor(program): a grouped position carries the walk it counts within, and a walk naming two columns over one dimension is refused - #444
Merged
FBumann merged 2 commits intoSep 9, 2026
Conversation
`DimensionPositionNode` carries its partition as a `Walk`, as `Translate` and `Window` do, in place of the lookup name, the walked column, the group columns and the joined dimensions, so a consumer reads every partition one way. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014JPeAmePdhNTDaNH2Q1CDr
A `from=` or `into=` list naming two columns over one dimension was accepted and lowered to an operand consuming that dimension twice; it is refused at resolution, naming the columns and the dimension. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014JPeAmePdhNTDaNH2Q1CDr
FBumann
pushed a commit
to fluxopt/specsolve
that referenced
this pull request
Sep 9, 2026
…ls/mathspec#444 stacks on it Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014JPeAmePdhNTDaNH2Q1CDr
Documentation build overview
23 files changed ·
|
FBumann
marked this pull request as ready for review
September 9, 2026 20:51
FBumann
pushed a commit
to fluxopt/specsolve
that referenced
this pull request
Sep 9, 2026
…energy-models/mathspec#444 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014JPeAmePdhNTDaNH2Q1CDr
FBumann
added a commit
that referenced
this pull request
Sep 10, 2026
…in, and a walk naming two columns over one dimension is refused (#444) * refactor(program): a grouped position carries the walk it counts within `DimensionPositionNode` carries its partition as a `Walk`, as `Translate` and `Window` do, in place of the lookup name, the walked column, the group columns and the joined dimensions, so a consumer reads every partition one way. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014JPeAmePdhNTDaNH2Q1CDr * fix(language): a walk naming two columns over one dimension is refused A `from=` or `into=` list naming two columns over one dimension was accepted and lowered to an operand consuming that dimension twice; it is refused at resolution, naming the columns and the dimension. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014JPeAmePdhNTDaNH2Q1CDr --------- Co-authored-by: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Note
The following content was generated by AI. Stacked on #437, from implementing it in lpspec on both lanes.
What this changes
Two commits, separable.
DimensionPositionNodecarriespartition: Walk | Nonein place ofby,walked,groupanddims.TranslateandWindowalready carry their partition as aWalk, so a consumer now reads every partition one way; lpspec dropped a second derivation of the group with it. The typesetter, exclusivity and_atom_dimsread the walk.from=orinto=list naming two columns over one dimension is refused at resolution. Before,sum(x, by=pair, from=[bus0, bus1], into=line)was accepted and lowered withover=('bus', 'bus'), which no operand can carry.Why
Both came out of consuming the program on the other side. The first is the one place the plan still handed a partition to a consumer as loose fields; the second is a walk the dim rules let through because a set hid the duplicate.
Verified
uv venv on Python 3.12 with the pinned ruff and pyrefly, since pixi is not on this box.
pytest -q -n auto: 1206 passed, 5 skipped.ruff check,ruff format --check: clean.pyrefly check: the three pre-existingyamlstub errors and nothing else. Not run:docs-build,compile-tex, the generators (no generated file is touched).lpspec is built against this head on branch
claude/mathspec-feature-impl-4llmyi: 3776 passed, 251 skipped, 1 xfailed across both lanes.🤖 Generated with Claude Code
https://claude.ai/code/session_014JPeAmePdhNTDaNH2Q1CDr
Generated by Claude Code