What happened is written once, read everywhere.
All capabilities · Running
The most valuable thing a system holds is not its features. It is the accumulated record of what happened, in a form that can still be read when the software that wrote it is gone. Unifyhub treats that record as the primary artifact and the services as the temporary part.
09:04workshop.member.joined
09:12workshop.session.scheduled
- context
- neighbourhood-workshop
- on behalf of
- jamie · coordinator
- trace
- 7f3c…a19
- schema
- session.scheduled v2
09:31inventory.part.reserved
read byautomationsearchanalyticsaudit
How a happening becomes a record
1. It is wrapped in a stated shape
Every event carries an envelope: what kind of thing happened, in which context, on whose behalf, with which trace, at what time. The envelope is versioned and public, so a consumer written years later still knows what it is reading.
2. It is validated against a registry
Record shapes live in a shared registry rather than inside the service that emits them. A producer cannot quietly change what a record means, and a consumer can check compatibility before it breaks.
3. It is published reliably
A service that changes its own state and announces the change must not be able to do one without the other. Publication is tied to the state change itself, so the record and the announcement cannot disagree.
4. It is consumed many times
The same event feeds automation, indexing, search, analytics, notification, and audit. Nothing has to ask a domain for permission to remember what it already announced.
The stores
Systems of record
Durable transactional stores where a domain's truth lives, owned by that domain and by nobody else.
Streams
The ordered log of what happened, which is what makes late consumers, replays, and new projections possible without asking the past to be re-run.
Analytical and search stores
Derived shapes for questions the transactional store should not be asked: aggregation, retrieval, similarity, time series, relationships.
Object storage
The place large artifacts live, referenced from records rather than copied into them.
The rule about derived data
Anything derived must stay derivable. Indexes, projections, caches, embeddings, and dashboards are rebuildable from the record, never a second source of truth. A community that loses a derived store loses time, and a community that loses the record loses itself.
Why this is a sovereignty question
Portability is decided here, long before anyone asks for an export. If events are typed, registered, and logged, a community can leave with a stream of what happened and reconstruct meaning elsewhere. If the record only exists as the private internals of one product's database, every export will be a lossy screenshot of a moment.