possible clarifications:

- execute events fire before/after **any** code might be executed (interactive code, silent execution, widget interaction, comm messages).
- run_cell events fire only before/after explicit "regular" execution, e.g. shift-enter or interactive typing at the terminal.

For those interested in the internal implementation, this means that `silent=False` execution is the only circumstance to trigger run_cell events.  All potential execution triggers the execute events, so when run_cell fires, execute will also fire.