Files
improvise/prolog-sessions
Edward Langley f448c651ce feat(axis): add Axis::Filter for drill-fixed coordinates
Drilling into a cell fixed its coordinates on Axis::Page, which put them
in the tile bar and under [ and ] as if the user could move them. They
are constraints of the drill, not dimensions to page through. They now
land on Axis::Filter.

The variant splits one question into two, and picking the wrong one is
the trap this introduces. "What data is visible" is View::filtering_cats
-- Page and Filter both constrain -- and GridLayout and add-record-row
ask it. "What can the user act on" is categories_on(Axis::Page) for [/]
and View::tileable_cats for the three tile-select sites. Both predicates
are named on Axis (filters_data, is_user_assignable) rather than left as
tests against the variant, so a third variant does not silently join the
wrong side.

Axis::next maps Filter to itself and no navigable axis rotates into it,
so neither tile select nor cycle-axis can hand out a Filter assignment.

The .improv grammar gains a filter keyword and round-trips a selection
with it. Filter only ever occurs in the _Drill view, which is never
written -- but the alternative to supporting it was silently writing a
Filter axis out as some other axis.

Worth recording: adding the variant produced exactly one compile error
outside axis.rs. improvise-rml had already collapsed the four scattered
display matches into one file, so the consolidation paid for itself on
the very next ticket.

Closes improvise-dz8

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V69PGQfMJuGRmtSWpfVAqn
2026-08-31 22:45:00 -07:00
..