test(lowering): a where atom reaches the program as the file wrote it - #288
Merged
FabianHofmann merged 1 commit intoAug 31, 2026
Merged
Conversation
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01P5CbcWjp4KCK5RcCEy7RZ3
Documentation build overview
18 files changed ·
|
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 #283. A
whereatom is the program's predicate — no lowering case rewrites one — which is why #283 needs nolowering.pychange. Nothing asserted that, so this does, for all four left-hand kindsinaccepts.The three suites #283 already has each stop short of it: resolution proves the node is built, the walk and golden tests prove it prints. Neither asks whether it survives the pass in between, and a node dropped there fails silently — the mask becomes
None, the declaration builds every row, and the model solves the wrong problem.Verified with
pixi run cion56593c5— lint clean,869 passed(865 + 4), docs--strict, 26 documents compiled. Nothing skipped.Delete-the-guard
Made resolution drop a membership atom on the way to the program:
That is the failure this pins: not an error, a silently unmasked declaration.
Why here and not a row in `test_where_lowering`
test_where_loweringreadsresolution.where_ofdirectly, so a row there would re-assert what #283'stest_validation.pycases already cover.test_lower_program_structureis the one that goes throughlower_programand reads.whereoff the built declaration — this follows that, overSMALL_MODEL, which already carries a parameter, two dimensions, a groupable lookup and a label space.