net-lattice-platform 0.12.0

Generic provider traits and Capability contract between the model and platform backends. Depends only on net-lattice-core — never on net-lattice-model.
Documentation
# net-lattice-platform

Generic provider traits and runtime capability contracts between Net Lattice's
public facade and native platform backends.

## What it provides

- generic inspection and mutation provider traits using associated types,
  including `InterfaceMutator` for desired administrative-state and MTU
  patches;
- runtime `Capability` reporting;
- synchronous event sender/receiver contracts;
- optional native Tokio watcher contracts behind the `async` feature.

This crate intentionally depends on `net-lattice-core`, not
`net-lattice-model`. The facade binds provider associated types to the
workspace's concrete domain model. Application code normally uses
`net-lattice`; backend authors depend on this crate directly.

## Usage

```rust
use net_lattice_platform::{Capability, CapabilityProvider};

fn supports_route_monitoring<P: CapabilityProvider>(provider: &P) -> bool {
    provider.capabilities().contains(Capability::ROUTE_MONITORING)
}
```

## Contract notes

Capabilities report implemented runtime surfaces. They do not guarantee that
the current process has native privileges or that state cannot change between
validation and submission. In particular,
`Capability::INTERFACE_ADMIN_STATE` and `Capability::INTERFACE_MTU` gate a
backend's interface-configuration surface independently; a caller requesting
both settings must require both flags.

Monitoring is also domain-specific: `ROUTE_MONITORING`,
`INTERFACE_MONITORING`, `NEIGHBOR_MONITORING`, and `ADDRESS_MONITORING` each
mean that the backend has a native delivery path for that domain.
`MONITORING` is their all-domain aggregate, not merely proof that some watcher
can be constructed.