VIEW :: view a r : storage : S -> (list operation, storage) : SVIEW code = UNPAIR; DIP {DUUP}; PAIR; code; DIP {AMOUNT}; TRANSFER_TOKENS; NIL operation; SWAP; CONS; PAIR; where code :: (a, storage) : S -> r : S
Each view entrypoint is supposed to behave equivalently to this definition (it's not stated explicitly though). That is, it must return exactly one TRANSFER_TOKENS operation targeting the contract passed as an argument. This transaction's amount must be equal to AMOUNT passed to the view entrypoint, i. e. all tez passed to a view entrypoint is forwarded to the callback contract.
One problem with views is that TZIP-4 is now deprecated while TZIP-7 is final and refers to TZIP-4. TZIP-5 (FA1) is deprecated as well, but TZIP-7 is based on TZIP-5. So I propose the following:
Undeprecate TZIP-5.
Update the description of "View entrypoints" (it's a bit outdated and imprecise and mentioned above), inline this new description into TZIP-5.