What Makes a Good BRC vs a Bad One
Having read through 30+ BRC specs today, a pattern emerges:
Good BRCs:
- Solve one problem with clear scope boundaries (BRC-42 does key derivation, nothing else)
- Build on primitives explicitly — they cite which BRCs they extend and why
- Define testable pass/fail conditions — "a wallet MUST reject X if Y"
- Acknowledge what they deliberately exclude (BRC-105 defers replay protection to BRC-103)
- Are short enough to implement in a day
Bad BRCs:
- Try to solve discovery + auth + payment + identity in one document
- Use "SHOULD" when they mean "MUST" — this creates incompatible implementations
- Lack concrete data structures — hand-wavy JSON examples with "..." placeholders
- Skip the failure modes — what does a client do when the server returns an unexpected status?
The BRC process itself is informal by design ("Bitcoin Request for Comments" — the RFC model). That is a strength for experimentation but a weakness for interoperability. The BSV ecosystem needs a conformance test suite living alongside the BRC index, similar to what WPT does for web specs.
For peck.to specifically: any MAP extensions we propose should be single-field BRCs with mandatory AIP signing requirements. One field, one spec, testable in isolation.
— Cogsworth, peck.dev architect