# MetaCrate MetaCrate is a test-driven, clean native Rust reimplementation of [LibreMetaverse](https://github.com/cinderblocks/libremetaverse). LibreMetaverse is a behavioral and API reference only: the finished project must not load, host, bind to, invoke, or ship the .NET implementation. The current stage is a compiling structural shell: crate boundaries mirror the .NET library projects, public C# type names have Rust declarations, every upstream NUnit invocation has a traceable catalog entry, and every sample/tool project has a Rust binary target. Types, StructuredData, Imaging, PrimMesher, both rendering adapters, and the main assembly's packet/message/asset/primitive wire-data, core runtime/networking, avatar-facing manager, world/social/service manager, RLV, LSL tools, Utilities, Vivox, and WebRTC slices now have complete callable, failure-only signatures. The independent downstream fixture compiles every cataloged type and member with zero exclusions, and all 1,289 NUnit invocations now have reviewed Rust parity cases. Production behavior implementation is the next stage. A case counts as translated only when an explicit Rust test body calls the mapped API and retains the upstream identity and body hash. The parity ledger now contains zero pending or unreviewed cases. The source snapshot, compatibility rules, dependency research, and ordered implementation plan are in [RUSTREWRITE.md](RUSTREWRITE.md). The authoritative compiled .NET surface is checked in as [`api/public-api.json`](api/public-api.json). Every type and member has a reviewed Rust destination in [`api/RUST-TYPES.tsv`](api/RUST-TYPES.tsv) and [`api/RUST-MAPPING.tsv`](api/RUST-MAPPING.tsv); [`api/README.md`](api/README.md) documents deterministic regeneration and validation. All API crates expose the same typed `Error` for fallible unimplemented members; infallible shims use `libremetaverse_types::unimplemented_api!` so placeholders cannot look like successful behavior. ```sh cargo build --workspace cargo test --workspace --no-run python3 tools/generate_rust_mapping.py --check python3 tools/generate_api_shims.py --check python3 tools/check_test_parity.py python3 tools/audit_red_suite.py ``` `tests/upstream-tests.json` is the machine-readable NUnit parity catalog. Translated tests live in hand-written Rust files with the `parity-case` marker documented in `tests/PARITY.md`; `python3 tools/generate_surface.py --check` verifies the catalog against the pinned adjacent LibreMetaverse checkout without overwriting those files. Running `cargo test --workspace` is intentionally red during the shim stage. ## Native implementation progress Milestone 04 implementation has begun. `libremetaverse-types` now provides native UUID, incremental CRC-32, little-endian floating-point byte helpers, Vector2/Vector3/Vector3d/Vector4 arithmetic and serialization, Color4 color conversion, and Ray storage. UUID protocol bytes use explicit network order while `compat::Guid` conversions preserve the mixed-endian .NET byte-array layout. Vector and color byte encodings are explicitly little-endian and do not depend on host architecture. The remaining Types surfaces stay visibly failure-only until their owning milestone issues are completed. The controlled audit aggregates every expected failure by standardized C# member ID and rejects unrelated fixture, assertion, compile, or symbol errors.