One line of a subject's activity - a projection of an envelope, not the envelope.
A pane asking "what happened to this task" wants what happened, when, who did it and which lines belong to one gesture. It does not want the device id, the profile id, the emitting session, the payload version or the journal's own append clock, all of which a [StoredEvent] carries. Sending the whole envelope would mean handing a rendering surface a device identity it has no use for, and every later field added to the envelope with it - so the row is enumerated here and the envelope stays the journal's shape.
No content, structurally. The only free-form thing an envelope holds is its attributes, and [AttrValue] has no free-string variant: a value is a reference, a time, a count, a flag, or a token from the vocabulary the registry declared for that key. So passing the map through whole cannot leak a title, a due date, a tag name or a line of text, and the pane gets the tokens it actually needs - reason on a lifecycle event, change and temporal_kind on a Due change, child on a structural one - without this type learning a field per event.
