# PM-77 native LDraw compatibility harness This directory is the native-only process boundary. The reusable `polymodel-ldraw-testkit` crate has no filesystem, process, archive, parser, or native dependencies and is wasm-checkable. ## Commands ```sh cargo run --manifest-path tools/ldraw-compat-harness/Cargo.toml -- validate cargo run --manifest-path tools/ldraw-compat-harness/Cargo.toml -- inventory cargo run --manifest-path tools/ldraw-compat-harness/Cargo.toml -- corpus cargo run --manifest-path tools/ldraw-compat-harness/Cargo.toml -- fuzz cargo run --manifest-path tools/ldraw-compat-harness/Cargo.toml -- differential ``` `differential` is deliberately fail-closed: it requires Nix, builds the pinned `.#ldraw-oracle` package, resolves that output with `nix path-info`, and runs the C++17 oracle over the complete evidenced inventory. It never invokes the Rust parser for the oracle result. The oracle emits `ldraw-oracle-v3`, and the harness compares the generated oracle projection against a fresh oracle run using the declared normalization rules. Expected records are generated by the standalone oracle generator from exact fixture bytes and the pinned LDParse output. Their provenance and versioned projection rules are checked in, while the Rust adapter is exercised separately as the candidate under test. Geometry, instances, transforms, winding, TEXMAP, points, explicit edges, and H-owned conditional-line classification remain covered by their declared field-authority rules when the pinned LDParse wrapper does not expose those surfaces.