What caused what.
Every observable point - an action from the UI, a message sent to an actor,
its handling, background work and its result, a publication and each of its
deliveries, a reducer update, a navigation - is a [Record] with an id and
the id of the point that caused it. Following parent from any record
gives its provenance; following it the other way gives everything it set
off.
The cause is carried implicitly on the thread ([current]) and explicitly
wherever work crosses a queue or a thread: an actor's mailbox, a background
task, a hop back onto the UI thread. [Cause] is Copy + Send for that.
Records go to the observers on the thread that produced them (devtools),
and to tracing as one event each: the target names the kind of point,
guinea::send, and the fields carry id, parent and what the point
holds. guinea::tick=off silences one kind. [json] writes them, and the
application's own events with the point they happened under, as JSON
lines.