Architecture Decision Record

ADR-0013: Large Artifacts Are Stored Out-of-Band and Referenced by Facts

Status: Accepted · Date: 2026-03-06

Status: Accepted

Date: 2026-03-06

Context

BSFG fact streams are the durable semantic history of cross-zone communication. Large binaries such as PDFs, images, batch artifacts, archives, and generated documents have different operational characteristics from facts:

JetStream Object Store provides bucketed object storage using chunked transfer and retrieval, which makes it suitable for large files, while still living inside the zone-local JetStream estate.

Options Considered

Option Description Benefits Drawbacks
Inline binary in fact message Embed file bytes directly inside the fact payload or attachment body.

|

| | External storage outside zone estate | Store artifacts in a separate object system outside JetStream and reference them from facts. |

|

| | Zone-local object storage with fact references (Selected) | Store large artifacts in zone-local Object Store buckets, then append facts that reference them by metadata. |

|

|

Decision

BSFG will store large artifacts out-of-band in zone-local Object Store buckets. Facts will carry references to those artifacts rather than embedding large binary bodies inline.

PutObject(blob)   -> object store
AppendFact(ref)  -> fact stream

Artifact references must include enough metadata to make retrieval and integrity verification explicit, typically including:

Bucket layout is organized by subject kind, for example:

batch-files
asset-files
alarm-files
document-files
lot-files
recipe-files

Small payloads may still be carried inline when they are semantically part of the fact and operationally trivial, but this is the exception rather than the default.

Consequences

Benefits:

Tradeoffs: