` for a borrowed, zero-copy view into an existing
//! buffer (e.g. a frame from a DMA ring).
use core::mem;
diff --git a/limen-core/src/node.rs b/limen-core/src/node.rs
index 395eefe..8545618 100644
--- a/limen-core/src/node.rs
+++ b/limen-core/src/node.rs
@@ -15,9 +15,9 @@
//! Submodules:
//! - [`source`] — [`SourceNode`](source::SourceNode) trait for 0-input nodes.
//! - [`sink`] — [`SinkNode`](sink::SinkNode) trait for 0-output nodes.
-//! - [`model`] — [`ModelNode`](model::ModelNode) trait for inference nodes.
-//! - [`link`] — [`NodeLink`] and [`NodeDescriptor`](link::NodeDescriptor) wiring helpers.
-//! - [`bench`] — test nodes (`bench` / `test` feature).
+//! - [`model`] — [`InferenceModel`](model::InferenceModel) adapter for inference nodes.
+//! - [`link`] — [`NodeLink`](link::NodeLink) and [`NodeDescriptor`](link::NodeDescriptor) wiring helpers.
+//! - `bench` — test nodes (`bench` / `test` feature).
pub mod link;
pub mod model;
diff --git a/limen-core/src/prelude.rs b/limen-core/src/prelude.rs
index 8e1c9f1..9229fbe 100644
--- a/limen-core/src/prelude.rs
+++ b/limen-core/src/prelude.rs
@@ -3,12 +3,13 @@
//! Importing `limen_core::prelude::*` brings all public surface into scope,
//! gated by the same feature flags as the source modules:
//!
-//! - (default / `no_std`) — [`Edge`], [`SpscArrayQueue`], [`StaticMemoryManager`],
-//! [`Tensor`], [`Batch`], [`Node`], [`GraphApi`], [`PlatformClock`], policy types, etc.
-//! - `alloc` — [`HeapMemoryManager`], [`SpscVecDeque`].
-//! - `std` — [`ConcurrentMemoryManager`], [`ConcurrentEdge`], [`ScopedEdge`],
-//! [`ScopedGraphApi`], concurrent telemetry.
-//! - `spsc_raw` — [`SpscRawQueue`].
+//! - (default / `no_std`) — [`Edge`], [`StaticRing`], [`StaticMemoryManager`],
+//! [`Tensor`], [`Batch`], [`Node`], [`GraphApi`],
+//! [`PlatformClock`], policy types, etc.
+//! - `alloc` — `HeapMemoryManager`, `HeapRing`.
+//! - `std` — `ConcurrentMemoryManager`, `ConcurrentEdge`, `ScopedEdge`,
+//! `ScopedGraphApi`, concurrent telemetry.
+//! - `spsc_raw` — `SpscAtomicRing`.
//! - `bench` / `test` — test nodes, test edges, test graph, test runtime.
pub use crate::edge::{
diff --git a/limen-core/src/runtime.rs b/limen-core/src/runtime.rs
index ecfb41f..91a7f11 100644
--- a/limen-core/src/runtime.rs
+++ b/limen-core/src/runtime.rs
@@ -4,7 +4,7 @@
//! It owns a clock and telemetry after [`LimenRuntime::init`] and drives
//! execution through [`LimenRuntime::step`] / [`LimenRuntime::run`].
//!
-//! [`RuntimeStopHandle`] (`std` only) allows cooperative stop requests from
+//! `RuntimeStopHandle` (`std` only) allows cooperative stop requests from
//! outside the runtime loop (e.g. from another thread).
#[cfg(any(test, feature = "bench"))]
diff --git a/limen-core/src/telemetry/event_message.rs b/limen-core/src/telemetry/event_message.rs
index 774a4c4..bf3c59e 100644
--- a/limen-core/src/telemetry/event_message.rs
+++ b/limen-core/src/telemetry/event_message.rs
@@ -6,7 +6,7 @@
//! newline characters. Violations detected in a `const` context produce
//! compile-time errors.
//!
-//! The accompanying [`event_message!`] macro guarantees that all validation
+//! The accompanying `event_message!` macro guarantees that all validation
//! happens during compilation, even when invoked inside non-const functions.
//! When compiled successfully, an `EventMessage` is represented and used at
//! runtime with **no overhead**, making it as efficient as a bare `&'static str`.
@@ -27,7 +27,7 @@
/// - The message must not exceed [`EventMessage::MAX_LEN`] bytes.
/// - The message must not contain newline characters (`'\n'` or `'\r'`).
///
-/// When constructed using the accompanying [`event_message!`] macro, all
+/// When constructed using the accompanying `event_message!` macro, all
/// validation is **guaranteed to occur at compile time**, ensuring:
///
/// - **Zero runtime cost** (no loops, no checks, no panics).
@@ -52,9 +52,9 @@
/// - Using `EventMessage::new` inside a `const` context performs validation at
/// compile time.
/// - Using `EventMessage::new` at runtime may incur runtime checking cost.
-/// - Using the [`event_message!`] macro **always** validates at compile time.
+/// - Using the `event_message!` macro **always** validates at compile time.
///
-/// Prefer [`event_message!`] for maximal performance and strictness.
+/// Prefer `event_message!` for maximal performance and strictness.
///
/// # Examples
///
@@ -129,7 +129,7 @@ impl EventMessage {
/// - Validation executes at runtime.
/// - Violations cause a runtime panic.
///
- /// For most usage, the [`event_message!`] macro ensures compile-time
+ /// For most usage, the `event_message!` macro ensures compile-time
/// validation in all cases.
pub const fn new(s: &'static str) -> Self {
let bytes = s.as_bytes();
diff --git a/limen-core/src/types.rs b/limen-core/src/types.rs
index 18cecc9..cbb02e9 100644
--- a/limen-core/src/types.rs
+++ b/limen-core/src/types.rs
@@ -251,7 +251,7 @@ impl EdgeIndex {
// ***** Memory *****
-/// A lightweight handle to a message stored in a [`MemoryManager`].
+/// A lightweight handle to a message stored in a [`MemoryManager`](crate::memory::manager::MemoryManager).
///
/// Edges carry `MessageToken` values instead of full `Message` payloads.
/// The token is an index into a manager's slot array. Tokens are `Copy`,
diff --git a/limen-examples/Cargo.toml b/limen-examples/Cargo.toml
index 28a4a14..b845dcf 100644
--- a/limen-examples/Cargo.toml
+++ b/limen-examples/Cargo.toml
@@ -3,8 +3,8 @@ name = "limen-examples"
description = "Limen examples and integration tests."
version = "0.1.0-alpha.1"
edition.workspace = true
+rust-version.workspace = true
license.workspace = true
-license-file.workspace = true
repository.workspace = true
authors.workspace = true
diff --git a/limen-node/Cargo.toml b/limen-node/Cargo.toml
index bdcc1dc..54841e3 100644
--- a/limen-node/Cargo.toml
+++ b/limen-node/Cargo.toml
@@ -3,10 +3,19 @@ name = "limen-node"
description = "Limen node implementations."
version = "0.1.0-alpha.1"
edition.workspace = true
+rust-version.workspace = true
license.workspace = true
-license-file.workspace = true
repository.workspace = true
+homepage.workspace = true
+documentation = "https://docs.rs/limen-node"
+readme.workspace = true
authors.workspace = true
+keywords.workspace = true
+categories.workspace = true
+
+[package.metadata.docs.rs]
+all-features = true
+rustdoc-args = ["--cfg", "docsrs"]
[features]
default = []
diff --git a/limen-platform/Cargo.toml b/limen-platform/Cargo.toml
index 2de0c6e..dc34c7e 100644
--- a/limen-platform/Cargo.toml
+++ b/limen-platform/Cargo.toml
@@ -3,10 +3,19 @@ name = "limen-platform"
description = "Platform adapters for Limen."
version = "0.1.0-alpha.1"
edition.workspace = true
+rust-version.workspace = true
license.workspace = true
-license-file.workspace = true
repository.workspace = true
+homepage.workspace = true
+documentation = "https://docs.rs/limen-platform"
+readme.workspace = true
authors.workspace = true
+keywords.workspace = true
+categories.workspace = true
+
+[package.metadata.docs.rs]
+all-features = true
+rustdoc-args = ["--cfg", "docsrs"]
[features]
alloc = ["limen-core/alloc"]
diff --git a/limen-runtime/Cargo.toml b/limen-runtime/Cargo.toml
index 10a7029..26bb315 100644
--- a/limen-runtime/Cargo.toml
+++ b/limen-runtime/Cargo.toml
@@ -3,10 +3,19 @@ name = "limen-runtime"
description = "Limen runtime implementations and schedulers."
version = "0.1.0-alpha.1"
edition.workspace = true
+rust-version.workspace = true
license.workspace = true
-license-file.workspace = true
repository.workspace = true
+homepage.workspace = true
+documentation = "https://docs.rs/limen-runtime"
+readme.workspace = true
authors.workspace = true
+keywords.workspace = true
+categories.workspace = true
+
+[package.metadata.docs.rs]
+all-features = true
+rustdoc-args = ["--cfg", "docsrs"]
[features]
default = []