The shape of a block
Every block has the same shape so components can be composed, tested, and replaced safely.
- Inputs declared with schemas so that upstream changes are caught at the boundary.
- Outputs declared with schemas so that downstream consumers have a stable contract.
- Processing logic separated from I/O so that the core computation can be tested independently.
- Contract tests that verify input and output behavior across versions.
- Built-in observability that exposes health, throughput, and error rates without custom instrumentation.