Public SPI traits for osproxy.
This is the contract implementers compile against (docs/02). It depends
only on [osproxy_core] (plus serde_json for body values) so the surface
stays tiny and fast.
Two layers:
- [
RoutingSpi], low-level, full control over the [RouteDecision]. - [
TenancySpi], high-level, declarative tenancy rules;osproxy-tenancyadapts it into a [RoutingSpi].
Supporting vocabulary is grouped by concern: [Principal] identity,
[RequestCtx] inputs, [RouteDecision] outputs, declarative [rules], and
[Placement] results. Every public item carries an example, per NFR-Q3.