Skip to content

build(deps): follow the language to alpha.48 - #1456

Merged
FBumann merged 1 commit into
mainfrom
build/math-spec-alpha47
Aug 31, 2026
Merged

FBumann merged 1 commit into
mainfrom
build/math-spec-alpha47

Conversation

@FBumann

@FBumann FBumann commented Aug 31, 2026 •

Copy link
Copy Markdown
Collaborator

Prompt: "Please update to the latest mathspec and push as much work as possible to it." — and, once
math-spec#269 merged, "269 merged. […#270]"

Note

The following content was generated by AI.

math-spec v0.0.0-alpha.46 → v0.0.0-alpha.48, and the engine stops answering
a question about the language.

predicate_dims is deleted — 37 lines walking the closed WhereNode union
to say which dims a mask reads. Its own docstring said what owning it cost:

a predicate this function does not know. One that forgot to answer here would
silently mis-restrict or mislabel a model

That is a rule about the language stated in a consumer, and math-spec was
already answering it a second time in _check_where_dims. #269 gave it one
home as where_parser.dims_read, with the load-time frame check as a reader of
it. Both call sites here — PolarsCompiler.frame's semi-join and
labels._free_prefix — now ask the language.

The deletion also drops a branch the language never had: predicate_dims
treated a str right-hand side as possibly a parameter name, but
ParameterComparisonNode.value is a literal and a str there is a flag. A
model comparing a str parameter to a flag whose text collided with a declared
name would union that name's dims in. It widened the set rather than narrowing
it, so it cost a join-strategy fallback rather than an answer — but it was a
reading nothing licensed.

alpha.47 was docs-only (git diff v0.0.0-alpha.46 v0.0.0-alpha.47 -- src/
is empty), so it carries nothing of its own and this goes straight to .48.

⚠ CI is red until the release lands

v0.0.0-alpha.48 does not exist yet —
math-spec#270 is the
release-please PR that cuts it. Until that merges the pin cannot resolve and
every job here fails at install. Nothing in this branch is waiting on
review
; merging #270 and re-running is the whole of it.

Verified locally against the merged upstream instead, with
origin/main at 350b1ed (#269) on PYTHONPATH and this branch's code
unchanged: ruff check/format, pyrefly over src/ (0 errors),
pixi run pytest bench/test_harness.py (112 passed), and the full suite at
94 failed / 3434 passed — the failure set is main's on this machine, all
xpress, all the expired local licence, and the passing count is identical
either side of the deletion.

The sweep this came out of, and what stays

Everything else lpspec still owns was put to "would two consumers answering it
separately be a bug?", and the rest survives:

  • _certain_parameters — which names' absence alone falsifies a mask.
    Reads like a language rule and is not: its own docstring records that the two
    strategies differ only in where a row is dropped, so it is a join
    optimisation whose answer changes no model.
  • linopy/absence.py — rule 8 on the eager lane. Both lanes implement it
    because both execute; that is two implementations of one rule by design,
    held by the differential suite.
  • errors._SPELLED — sink-capability vocabulary, which is per sink and so
    cannot be the language's.
  • sources.py's ordering and one-row-per-coordinate rules, stated in
    docstrings. These are the language's, and
    math-spec#242 is the PR
    that takes them — unreleased, and its stack is nine releases behind main, so
    there is nothing to follow yet.

No mutation table: no correctness guard changes. The runtime
LanguageError fence predicate_dims carried is not replaced but upgraded —
dims_read's assert_never makes an unhandled predicate node a type error at
the commit that adds it, rather than a raise at the first model to use one.

@codspeed

codspeed Bot commented Aug 31, 2026 •

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 16 untouched benchmarks
⏩ 42 skipped benchmarks1


Comparing build/math-spec-alpha47 (ef13af8) with main (58e073f)2

Open in CodSpeed

Footnotes

  1. 42 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩

  2. No successful run was found on main (a56cf18) during the generation of this report, so 58e073f was used instead as the comparison base. There might be some changes unrelated to this pull request in this report. ↩

… stops answering it

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@FBumann
FBumann force-pushed the build/math-spec-alpha47 branch from 652fb5a to ef13af8 Compare August 31, 2026 07:59
@FBumann FBumann changed the title build(deps): follow the language to alpha.47 build(deps): the language says which dims a mask reads, so the engine stops answering it Aug 31, 2026
@FBumann FBumann changed the title build(deps): the language says which dims a mask reads, so the engine stops answering it build(deps): follow the language to alpha.48 Aug 31, 2026
@FBumann
FBumann merged commit 126f8c0 into main Aug 31, 2026
14 checks passed
@FBumann
FBumann deleted the build/math-spec-alpha47 branch August 31, 2026 08:14
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