I am just uncomfortable with modifying past events. I see the event stream as a set of things that happened at a particular time. At 12:07 you started a squarewave bolus that was scheduled to last for 30 min. At 12:20 you cancelled it; it doesn't change what happened at 12:07. 

I would rather see us with a "bolus start" event at 12:07 and a "bolus cancelled" event at 12:20 that refers to the event at 12:07. Maybe this is me being inconsistent, but if you really want/need a single event with everything in the database (as opposed to putting the work on the client) I'd rather have us reach back and create an "actual bolus" event at 12:07.001 that includes the actual duration than to modify the "bolus start" event. The fact that your completion event contains the contents of an event that you've now changed feels really weird to me.

I'll also point out that in a world where events are uploaded as they happen, you've just required the upload endpoint to be doing meaningful processing on certain types of events, rather than storing them as they occur. On receipt of a completion event, the uploader app needs to do a query, find the start event, modify it, and then store the completion event.

I think I've said my piece. If you're not bothered by what I just said, I'll accept it.