apply: document buffer ownership rules across functions