Skip to content
rsb.sh

Decisions

Every load-bearing decision in RSB is recorded here as an Architecture Decision Record: the context that forced it, the decision itself, its consequences, and the alternatives that lost. Unless marked otherwise, a decision governs all RSB code — every crate, and every application built from them, Lab first among them. A decision that binds a single application carries its scope tag. Accepted ADRs carry a stable number and drive the standards that released code cites.

Accepted
1
Deprecated
0
Drafts
4

Reversibility

Every decision also carries a reversibility tag, kept separate from its status. Status says where a decision sits in its life — draft, accepted, deprecated. Reversibility says something different: how forced the decision was, and how costly it would be to undo. The two are deliberately orthogonal — an accepted decision can still be reversible, and a superseded one may have been bedrock in its time.

Tracking them apart keeps the strength of a decision explicit instead of buried in its prose, so a reader can tell at a glance whether they are looking at settled bedrock or a reasonable default that could still change.

Tag What it means
bedrock Over-determined — reversing it is a re-architecture, not a tweak. The decision was effectively forced, so it is treated as settled ground the rest of the work builds on.
hard to reverse A real commitment that can be undone, but expensively. Changing it later means unwinding work that was built on top of it.
reversible A reasonable default that could change cheaply if a concrete need appears. Recorded so the reasoning is kept, not because it is hard to move.

Scope

Most decisions carry no scope tag: they are universal, governing every crate and every application RSB builds. A decision that binds a single application names it, and standards inherit their reach from the decision that drives them.

Tag What it means
lab Binds Lab alone. A future application is free to decide the same question differently.