Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions src/principles.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
# Principles

- **Hardware behind traits.** SCDC transport and PHY control are injected, so all protocol
logic is testable without hardware.
- **Policy at the right layer.** Parsing layers make no judgements. The negotiation layer is
explicitly opinionated but configurable. Hardware layers implement specification, not policy.
- **Modular: pick, combine, replace.** Every layer can be used on its own, combined with
the others, or replaced by an implementation of the trait the layer above defines
- **Extensible without forking.** Every library in the stack is designed to be customized
and configured without modifying its source.
- **Diagnostics are first-class.** Structured reasoning traces and typed warnings instead of
logs. Rejected candidates are explained; nothing fails silently.
- **Spec-complete, judgment-free lower layers.** Parsing and protocol crates implement the
spec in full; policy lives in the negotiation layer, and you can override it.
- **`no_std` where it matters**, async companions where they help.
- **Hardware behind traits.** SCDC transport and PHY control are injected, so all protocol
logic is testable without hardware.
- **No unsafe code.** `#![forbid(unsafe_code)]` across the stack.
- **Stable output types.** Consumer-facing structs are `#[non_exhaustive]`, so new fields do
not break you.
Expand Down
Loading