record_call
Return out carrying what a call to patch_func records.
The history string and the two ids, in one new attrs object: an operation should cost one new patch, not one per thing it stamps.
Public because what an operation records must not depend on how it was carried out: a spool which pushes a selection into the read still has to record the select it then skips.