There's no unambiguous semantic meaning for "truncate" on a filtered stream, unless it's a per-archetype truncation, because the full size of the filtered set can't really be known as it is passed on to the underlying Query.
The user may expect truncation over the filtered set, not the entire query.
How to fix
Either remove the function from (all) Streams, or change the semantics accordingly.
Fixed by removing the forwarded call from the decendant's API, use the Stream.Query.Truncate(int) instead. (this was what it was doing all along, but now there is no ambiguity about the Stream's filter state)
What
There's no unambiguous semantic meaning for "truncate" on a filtered stream, unless it's a per-archetype truncation, because the full size of the filtered set can't really be known as it is passed on to the underlying Query.
The user may expect truncation over the filtered set, not the entire query.
How to fix
Either remove the function from (all) Streams, or change the semantics accordingly.