Core Concepts
Streams, Facts, and Bundles
Audience: Integration Engineers / Technical Architects
Understanding Horizon's data model is essential for effective integration.
Streams
A stream is a timeline of related facts. You define the stream_id; Horizon imposes no business semantics.
| Property | Description |
|---|---|
| stream_id | Client-provided identifier (e.g., "incident-2024-01-26") |
| tenant_id | Scoping identifier for multi-tenant isolation |
| Created implicitly | When first fact is sealed |
Facts
A fact is an immutable record sealed at a specific moment. Once sealed, it cannot be modified or deleted.
| Property | Description |
|---|---|
| fact_id | Unique identifier assigned by Horizon |
| actor | Who declared this fact (your identifier) |
| sealed_at_ms | Authoritative timestamp from Horizon |
| custom_payload | Your opaque business data |
| fact_hash | SHA-256 of canonical representation |
| prev_hash | Link to previous fact in chain |
Bundles
A bundle is an exportable, self-contained proof package. It contains all facts, their hashes, chain linkage, and Horizon's signature.
| Property | Description |
|---|---|
| Self-contained | All data needed for verification |
| Signed | Ed25519 signature by Horizon |
| Portable | Works in any system, any jurisdiction |
| Independent | Verifiable without Horizon access |
"Horizon records what you declare. The meaning of your declarations is yours to define."