Hello Alessandro,
The docu for Queries says:
Execute Function
The Execute function of a query returns a collection of
instances of the node to which the query is bound. Queries can be executed
directly with no further parameters specified. Usually, you provide selection
parameters to narrow down the result set as much as possible to the desired node
instances by defining appropriate filtering criteria. The instances returned by
the Execute function overwrites any unsaved changes
performed by script files before calling Execute.
The bold sentence explain that any data in the BO buffer modified in "countless UI loops" and "manifold ABSL snippets" by the data from the persistence.
BTW: I've had to read by myself to make myself familar with this behaviour
HTH,
Horst