Module extensions

Module extensions 

Source
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§

ExtensionsError
Shared error type for all extension traits.