Architecture Decision Record

ADR-0010: Boundary API Uses Connect RPC

Status: Accepted · Date: 2026-03-06

Status: Accepted

Date: 2026-03-06

Context

BSFG requires a narrow, typed boundary API for AppendFact, FetchFacts, ConfirmReceipt, and PutObject. The API must remain maintainable as an appliance surface, support protobuf contracts, work well with ordinary HTTP infrastructure, and avoid unnecessary transport ceremony.

The design target is not a general-purpose service mesh. It is a small, explicit boundary protocol layered over zone-local durable logs.

Options Considered

Option Description Benefits Drawbacks
gRPC Use protobuf contracts over the gRPC protocol.

|

| | Connect RPC (Selected) | Use protobuf contracts over the Connect protocol. |

|

| | Plain JSON/HTTP | Use ad hoc JSON endpoints without protobuf RPC contracts. |

|

| | Custom TCP protocol | Define a bespoke wire protocol for BSFG operations. |

|

|

Decision

BSFG will expose its boundary API using Connect RPC.

The protobuf service surface remains the canonical contract:

AppendFact
FetchFacts
ConfirmReceipt
PutObject

FetchFacts uses unary paged pull rather than long-lived streaming. Connect RPC therefore serves as a typed, maintainable control plane over the underlying JetStream-based fact log.

Consequences

Benefits:

Tradeoffs: