fmf_contract/lib.rs
1//! fmf-contract — the machine-readable single source of the engine contract
2//! (ADR-0018). The prose canon is docs/ARCHITECTURE.md; this crate is its
3//! executable form, and every consumer radiates from here:
4//!
5//! ```text
6//! app(C#: Engine/Generated/EngineContract.g.cs ← gen-contract)
7//! → IEngineClient → (fmf-ffi | fmf-service → fmf-proto) → fmf-core → fmf-contract
8//! ```
9//!
10//! Allowed contents — constants, `#[repr]` types, layout assertions, and
11//! pure byte conversions. **No logic** (no I/O, no engine types, no serde):
12//! that hard line is what keeps `[dependencies]` empty, and the empty
13//! dependency list is what lets the cdylib and every rlib share one
14//! definition instead of pinned copies.
15//!
16//! Section map (ARCHITECTURE.md → here):
17//! - Error code table → [`codes`]
18//! - Pipe opcode table → [`opcodes`]
19//! - Events (FFI kind 1..=6) → [`events`]
20//! - `FmfQueryOptions` enum values → [`options`]
21//! - POD layout (`FmfRow` etc.) → [`pod`]
22//! - Volume label 16B packing → [`volume`]
23//! - ABI/protocol versions, pipe name → [`versions`]
24//! - Limits (16MiB, 64 entries etc.) → [`limits`]
25
26pub mod codes;
27pub mod counters;
28pub mod events;
29pub mod limits;
30pub mod opcodes;
31pub mod options;
32pub mod pod;
33pub mod versions;
34pub mod volume;