Expand description
Extension points: the OSS/Ent edition boundary as a type boundary (DW-004).
dwara is open-core. The five traits in this module (rate_limiter::RateLimiter,
config_source::ConfigSource, cache::CacheStore,
analytics::AnalyticsSink, secrets::SecretSource) are the swappable
state backend contracts. The OSS edition ships the local in-memory /
file / env implementations that live alongside each trait; additional
backends may be provided separately in future editions and must
implement the same traits and slot in
via dyn injection WITHOUT changing trait signatures or call sites.
Because every trait is used as Arc<dyn Trait> at runtime, all of them
are dyn-compatible (object safe). They are async via the async-trait
crate: native RPITIT is not yet dyn-compatible on stable Rust, and
dyn-compatibility is the load-bearing requirement here.
§Failure model
All trait methods share one error type, ExtensionsError. It is
non-exhaustive and carries a human-readable message; the variants map to
failure classes (I/O, invalid data, backend failure) rather than to
per-trait taxonomies, so a new backend can express its failures without
a breaking change to the shared enum. Transient-vs-permanent and retry
expectations are documented per trait.
Modules§
- analytics
- Analytics sink extension point.
- cache
- Cache store extension point.
- config_
source - Configuration source extension point.
- licensing
- Enterprise licensing gate (DW-032).
- rate_
limiter - Rate limiting extension point.
- secrets
- Secret source extension point.
Enums§
- Extensions
Error - Shared error type for all extension traits.