+1 (non-binding) I reviewed the proposal and the implementation plan against the current code. The design is clean and fully backward compatible: adding a default process(Window<Record<X>>, WindowContext) overload keeps WindowFunction a valid @FunctionalInterface, existing lambdas and class implementations bind to the unchanged abstract method, and the executor's switch to passing the full Window view is behaviorally identical for anyone who doesn't override the new method.
I especially like that this dropped the earlier IncrementalWindowFunction approach -- reusing WindowFunction means no submit-time validation or type-inference changes are needed, which is a real reduction in surface area and risk. The lifetime/read-only-snapshot contracts are now spelled out on every getter, addressing the earlier review feedback on list mutability. Thanks for the iterations on this, Dream95. David
