Skip to content

feat(render): S5e + Extract-free — GPU frame in the unified scheduler - #10

Merged
kemperrrrr merged 15 commits into
masterfrom
arena/01a07b19-ornis
Sep 8, 2026
Merged

kemperrrrr merged 15 commits into
masterfrom
arena/01a07b19-ornis

Conversation

@arena-ai-coding-agent

@arena-ai-coding-agent arena-ai-coding-agent Bot commented Sep 7, 2026 •

Copy link
Copy Markdown

Closes the final phase of the Unified Scheduler roadmap (docs/rendering/unified-scheduler.md): the S5e + Extract-free decomposition.

Main part — S5e + Extract-free (E1–E2, X1–X4, E3)

  • E1 — frame passes as core Schedule systems: schedule_bridge mirrors every enabled pass into a typed-access twin (disabled passes drop with their edges); render_schedule renders by the projected levels; level parity is debug-asserted every frame.
  • E2 — encoder context as frame data: per-pass encoders land in FrameCommandBuffers in registration order, one ordered submit+present in RenderFlush; render_to_buffers(BufferRenderContext).
  • X1 — RenderSubmit reads the TransformDesc/MeshDesc/MaterialDesc lanes directly through the shared extract_render_data canon — no more Mutex<RenderExtracted> clone.
  • X2 — GpuMesh resource + RenderMesh system: the sphere is re-created when max_mesh_params moves (floor 32×24); GpuFrameState keeps only renderer + frame3d.
  • X3 — RenderLights resource (ambient + directionals, published by the scene loader; the default reproduces the legacy hardcoded rig bit-for-bit).
  • X4 — RenderExtracted → FrameUpload: the snapshot system and resource are deleted; wasm and the root showcase migrated to direct lane reads; the render side now registers zero scheduled systems.
  • E3 — confirmed no-op (pool stays render-side, golden tests unchanged).

Gates: ~15 new (pixel parity ×3, canon-tie, tessellation probe, light probe, scheduler parity, unit tests). CI Quality 13/13 green; ratchet improved — quality 15.9→17.9%, IOSP 92.2→92.4%, findings 1813→1807, violations 128 (flat). Baseline re-pinned to the new metrics.

Prerequisite — unblocking the Quality gate

  • Vendor rustpython-vm 0.5.0 + the upstream libc fix (RustPython#8343): the published crate does not compile against libc ≥ 0.2.187 (POSIX_SPAWN_SETSID became c_short), and the outdated stage forbids pinning libc back.
  • Gate gpu_resources off on wasm32 (wasm-check): wgpu web types are !Send/!Sync.

…#8343)

Quality gate red on clippy/test: rustpython-vm 0.5.0 (latest published)
does not compile against libc >= 0.2.187 — POSIX_SPAWN_SETSID on linux-gnu
became c_short (i16) while nix 0.30 PosixSpawnFlags is a c_int bitflags:

  error[E0308]: mismatched types (expected i32, found i16)
  rustpython-vm-0.5.0/src/stdlib/posix.rs:1812

The outdated stage is a hard gate (all deps latest), so pinning libc back
is not an option; no patched rustpython-vm release exists (0.5.0 is
max_version, 2026-03-31) and main's fix rides on an unpublished refactor.

Fix: vendor the published 0.5.0 sources (RustPython tag 0.5.0,
39a6486) into third_party/rustpython-vm with exactly the upstream fix
from RustPython#8343 applied (.into() on POSIX_SPAWN_SETSID) — diff vs
tag is that one hunk. Wired via [patch.crates-io] path source (deny.toml
allows path deps, allow-git = []; cargo-outdated/audit skip path deps).
Workspace exclude prevents auto-membership (clippy -D warnings / fmt /
test stay off third-party code); rustqual.toml excludes third_party/**
from the ratchet; Cargo.lock swaps the entry to a path source.

Delete third_party/rustpython-vm + the patch section when a compatible
rustpython-vm release is published (README there has the checklist).

Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown

❌ Quality gate failed on arena/01a07b19-ornis (run 34105797358).

📊 QUALITY SUMMARY

╔════════════ QUALITY SUMMARY ════════════╗
  fmt                    PASS
  clippy                 PASS
  rustqual               PASS
  smoke (editor-only)    PASS
  test                   PASS
  test (physics gpu)     PASS
  clippy (physics gpu)   PASS
  audit                  PASS
  deny                   PASS
  outdated               PASS
  upgrade-check          SKIP (cargo-upgrade not installed)
  doc                    PASS
  wasm-check             FAIL (exit status: 101)
╚═════════════════════════════════════════╝

📜 Tail of log (200 lines)

    �[1m�[94m--> �[0m/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/wgpu-30.0.1/src/backend/webgpu.rs:1269:12
     �[1m�[94m|�[0m
�[1m�[94m1269�[0m �[1m�[94m|�[0m pub struct WebDevice {
     �[1m�[94m|�[0m            �[1m�[92m^^^^^^^^^�[0m
�[1m�[92mnote�[0m: required because it appears within the type `wgpu::dispatch::DispatchDevice`
    �[1m�[94m--> �[0m/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/wgpu-30.0.1/src/dispatch.rs:1000:27
     �[1m�[94m|�[0m
�[1m�[94m1000�[0m �[1m�[94m|�[0m dispatch_types! {ref type DispatchDevice: DeviceInterface = CoreDevice, WebDevice, DynDevice}
     �[1m�[94m|�[0m                           �[1m�[92m^^^^^^^^^^^^^^�[0m
�[1m�[92mnote�[0m: required because it appears within the type `Device`
    �[1m�[94m--> �[0m/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/wgpu-30.0.1/src/api/device.rs:20:12
     �[1m�[94m|�[0m
�[1m�[94m  20�[0m �[1m�[94m|�[0m pub struct Device {
     �[1m�[94m|�[0m            �[1m�[92m^^^^^^�[0m
�[1m�[92mnote�[0m: required because it appears within the type `gpu_resources::GpuDevice`
    �[1m�[94m--> �[0mcrates/render/src/gpu_resources.rs:42:12
     �[1m�[94m|�[0m
�[1m�[94m  42�[0m �[1m�[94m|�[0m pub struct GpuDevice(pub wgpu::Device);
     �[1m�[94m|�[0m            �[1m�[92m^^^^^^^^^�[0m
�[1m�[92mnote�[0m: required by a bound in `Resources::get`
    �[1m�[94m--> �[0mcrates/core/src/schedule.rs:130:32
     �[1m�[94m|�[0m
�[1m�[94m 130�[0m �[1m�[94m|�[0m     pub fn get<R: Any + Send + Sync>(&self) -> Option<&R> {
     �[1m�[94m|�[0m                                �[1m�[92m^^^^�[0m �[1m�[92mrequired by this bound in `Resources::get`�[0m

�[1m�[91merror[E0277]�[0m�[1m: `(dyn wgpu::WindowHandle + 'static)` cannot be sent between threads safely�[0m
   �[1m�[94m--> �[0mcrates/render/src/gpu_resources.rs:239:45
    �[1m�[94m|�[0m
�[1m�[94m239�[0m �[1m�[94m|�[0m         let Some(surface) = resources.get::<GpuSurface>() else {
    �[1m�[94m|�[0m                                       �[1m�[94m---�[0m   �[1m�[91m^^^^^^^^^^�[0m �[1m�[91m`(dyn wgpu::WindowHandle + 'static)` cannot be sent between threads safely�[0m
    �[1m�[94m|�[0m                                       �[1m�[94m|�[0m
    �[1m�[94m|�[0m                                       �[1m�[94mrequired by a bound introduced by this call�[0m
    �[1m�[94m|�[0m
    �[1m�[94m= �[0m�[1mhelp�[0m: the trait `Send` is not implemented for `(dyn wgpu::WindowHandle + 'static)`
    �[1m�[94m= �[0m�[1mnote�[0m: required for `std::ptr::Unique<(dyn wgpu::WindowHandle + 'static)>` to implement `Send`
�[1m�[92mnote�[0m: required because it appears within the type `Box<(dyn wgpu::WindowHandle + 'static)>`
   �[1m�[94m--> �[0m/rustc/8bab26f4f68e0e26f0bb7960be334d5b520ea452/library/alloc/src/boxed.rs:234:11
�[1m�[92mnote�[0m: required because it appears within the type `std::option::Option<Box<(dyn wgpu::WindowHandle + 'static)>>`
   �[1m�[94m--> �[0m/rustc/8bab26f4f68e0e26f0bb7960be334d5b520ea452/library/core/src/option.rs:597:9
�[1m�[92mnote�[0m: required because it appears within the type `Surface<'static>`
   �[1m�[94m--> �[0m/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/wgpu-30.0.1/src/api/surface.rs:28:12
    �[1m�[94m|�[0m
�[1m�[94m 28�[0m �[1m�[94m|�[0m pub struct Surface<'window> {
    �[1m�[94m|�[0m            �[1m�[92m^^^^^^^�[0m
    �[1m�[94m= �[0m�[1mnote�[0m: required for `std::sync::Mutex<Surface<'static>>` to implement `Send`
�[1m�[92mnote�[0m: required because it appears within the type `GpuSurface`
   �[1m�[94m--> �[0mcrates/render/src/gpu_resources.rs:60:12
    �[1m�[94m|�[0m
�[1m�[94m 60�[0m �[1m�[94m|�[0m pub struct GpuSurface(pub Mutex<wgpu::Surface<'static>>);
    �[1m�[94m|�[0m            �[1m�[92m^^^^^^^^^^�[0m
�[1m�[92mnote�[0m: required by a bound in `Resources::get`
   �[1m�[94m--> �[0mcrates/core/src/schedule.rs:130:25
    �[1m�[94m|�[0m
�[1m�[94m130�[0m �[1m�[94m|�[0m     pub fn get<R: Any + Send + Sync>(&self) -> Option<&R> {
    �[1m�[94m|�[0m                         �[1m�[92m^^^^�[0m �[1m�[92mrequired by this bound in `Resources::get`�[0m

�[1m�[91merror[E0277]�[0m�[1m: `Rc<RefCell<wgpu::backend::webgpu::WebBufferMapState>>` cannot be sent between threads safely�[0m
    �[1m�[94m--> �[0mcrates/render/src/gpu_resources.rs:248:49
     �[1m�[94m|�[0m
�[1m�[94m 248�[0m �[1m�[94m|�[0m         let Some(frame_state) = resources.get::<Mutex<GpuFrameState>>() else {
     �[1m�[94m|�[0m                                           �[1m�[94m---�[0m   �[1m�[91m^^^^^^^^^^^^^^^^^^^^�[0m �[1m�[91m`Rc<RefCell<wgpu::backend::webgpu::WebBufferMapState>>` cannot be sent between threads safely�[0m
     �[1m�[94m|�[0m                                           �[1m�[94m|�[0m
     �[1m�[94m|�[0m                                           �[1m�[94mrequired by a bound introduced by this call�[0m
     �[1m�[94m|�[0m
     �[1m�[94m= �[0m�[1mhelp�[0m: within `GpuFrameState`, the trait `Send` is not implemented for `Rc<RefCell<wgpu::backend::webgpu::WebBufferMapState>>`
�[1m�[92mnote�[0m: required because it appears within the type `wgpu::backend::webgpu::WebBuffer`
    �[1m�[94m--> �[0m/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/wgpu-30.0.1/src/backend/webgpu.rs:1327:12
     �[1m�[94m|�[0m
�[1m�[94m1327�[0m �[1m�[94m|�[0m pub struct WebBuffer {
     �[1m�[94m|�[0m            �[1m�[92m^^^^^^^^^�[0m
�[1m�[92mnote�[0m: required because it appears within the type `wgpu::dispatch::DispatchBuffer`
    �[1m�[94m--> �[0m/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/wgpu-30.0.1/src/dispatch.rs:1007:27
     �[1m�[94m|�[0m
�[1m�[94m1007�[0m �[1m�[94m|�[0m dispatch_types! {ref type DispatchBuffer: BufferInterface = CoreBuffer, WebBuffer, DynBuffer}
     �[1m�[94m|�[0m                           �[1m�[92m^^^^^^^^^^^^^^�[0m
�[1m�[92mnote�[0m: required because it appears within the type `wgpu::Buffer`
    �[1m�[94m--> �[0m/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/wgpu-30.0.1/src/api/buffer.rs:222:12
     �[1m�[94m|�[0m
�[1m�[94m 222�[0m �[1m�[94m|�[0m pub struct Buffer {
     �[1m�[94m|�[0m            �[1m�[92m^^^^^^�[0m
�[1m�[92mnote�[0m: required because it appears within the type `Renderer3D`
    �[1m�[94m--> �[0mcrates/render/src/renderer.rs:217:12
     �[1m�[94m|�[0m
�[1m�[94m 217�[0m �[1m�[94m|�[0m pub struct Renderer3D {
     �[1m�[94m|�[0m            �[1m�[92m^^^^^^^^^^�[0m
�[1m�[92mnote�[0m: required because it appears within the type `GpuFrameState`
    �[1m�[94m--> �[0mcrates/render/src/gpu_resources.rs:89:12
     �[1m�[94m|�[0m
�[1m�[94m  89�[0m �[1m�[94m|�[0m pub struct GpuFrameState {
     �[1m�[94m|�[0m            �[1m�[92m^^^^^^^^^^^^^�[0m
     �[1m�[94m= �[0m�[1mnote�[0m: required for `std::sync::Mutex<GpuFrameState>` to implement `Send`
�[1m�[92mnote�[0m: required by a bound in `Resources::get`
    �[1m�[94m--> �[0mcrates/core/src/schedule.rs:130:25
     �[1m�[94m|�[0m
�[1m�[94m 130�[0m �[1m�[94m|�[0m     pub fn get<R: Any + Send + Sync>(&self) -> Option<&R> {
     �[1m�[94m|�[0m                         �[1m�[92m^^^^�[0m �[1m�[92mrequired by this bound in `Resources::get`�[0m

�[1m�[91merror[E0277]�[0m�[1m: `Rc<wgpu::backend::webgpu::DropGuard>` cannot be sent between threads safely�[0m
    �[1m�[94m--> �[0mcrates/render/src/gpu_resources.rs:248:49
     �[1m�[94m|�[0m
�[1m�[94m 248�[0m �[1m�[94m|�[0m         let Some(frame_state) = resources.get::<Mutex<GpuFrameState>>() else {
     �[1m�[94m|�[0m                                           �[1m�[94m---�[0m   �[1m�[91m^^^^^^^^^^^^^^^^^^^^�[0m �[1m�[91m`Rc<wgpu::backend::webgpu::DropGuard>` cannot be sent between threads safely�[0m
     �[1m�[94m|�[0m                                           �[1m�[94m|�[0m
     �[1m�[94m|�[0m                                           �[1m�[94mrequired by a bound introduced by this call�[0m
     �[1m�[94m|�[0m
     �[1m�[94m= �[0m�[1mhelp�[0m: within `GpuFrameState`, the trait `Send` is not implemented for `Rc<wgpu::backend::webgpu::DropGuard>`
�[1m�[92mnote�[0m: required because it appears within the type `std::option::Option<Rc<wgpu::backend::webgpu::DropGuard>>`
    �[1m�[94m--> �[0m/rustc/8bab26f4f68e0e26f0bb7960be334d5b520ea452/library/core/src/option.rs:597:9
�[1m�[92mnote�[0m: required because it appears within the type `wgpu::backend::webgpu::WebTexture`
    �[1m�[94m--> �[0m/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/wgpu-30.0.1/src/backend/webgpu.rs:1381:12
     �[1m�[94m|�[0m
�[1m�[94m1381�[0m �[1m�[94m|�[0m pub struct WebTexture {
     �[1m�[94m|�[0m            �[1m�[92m^^^^^^^^^^�[0m
�[1m�[92mnote�[0m: required because it appears within the type `wgpu::dispatch::DispatchTexture`
    �[1m�[94m--> �[0m/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/wgpu-30.0.1/src/dispatch.rs:1008:27
     �[1m�[94m|�[0m
�[1m�[94m1008�[0m �[1m�[94m|�[0m dispatch_types! {ref type DispatchTexture: TextureInterface = CoreTexture, WebTexture, DynTexture}
     �[1m�[94m|�[0m                           �[1m�[92m^^^^^^^^^^^^^^^�[0m
�[1m�[92mnote�[0m: required because it appears within the type `wgpu::Texture`
    �[1m�[94m--> �[0m/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/wgpu-30.0.1/src/api/texture.rs:12:12
     �[1m�[94m|�[0m
�[1m�[94m  12�[0m �[1m�[94m|�[0m pub struct Texture {
     �[1m�[94m|�[0m            �[1m�[92m^^^^^^^�[0m
�[1m�[92mnote�[0m: required because it appears within the type `Renderer3D`
    �[1m�[94m--> �[0mcrates/render/src/renderer.rs:217:12
     �[1m�[94m|�[0m
�[1m�[94m 217�[0m �[1m�[94m|�[0m pub struct Renderer3D {
     �[1m�[94m|�[0m            �[1m�[92m^^^^^^^^^^�[0m
�[1m�[92mnote�[0m: required because it appears within the type `GpuFrameState`
    �[1m�[94m--> �[0mcrates/render/src/gpu_resources.rs:89:12
     �[1m�[94m|�[0m
�[1m�[94m  89�[0m �[1m�[94m|�[0m pub struct GpuFrameState {
     �[1m�[94m|�[0m            �[1m�[92m^^^^^^^^^^^^^�[0m
     �[1m�[94m= �[0m�[1mnote�[0m: required for `std::sync::Mutex<GpuFrameState>` to implement `Send`
�[1m�[92mnote�[0m: required by a bound in `Resources::get`
    �[1m�[94m--> �[0mcrates/core/src/schedule.rs:130:25
     �[1m�[94m|�[0m
�[1m�[94m 130�[0m �[1m�[94m|�[0m     pub fn get<R: Any + Send + Sync>(&self) -> Option<&R> {
     �[1m�[94m|�[0m                         �[1m�[92m^^^^�[0m �[1m�[92mrequired by this bound in `Resources::get`�[0m

�[1mFor more information about this error, try `rustc --explain E0277`.�[0m
�[1m�[91merror�[0m: could not compile `ornis-render` (lib) due to 26 previous errors
── wasm-check: FAIL (exit exit status: 101) ──
::error title=quality-wasm-check::note: required because it appears within the type `wgpu::backend::webgpu::WebTexture`
::error title=quality-wasm-check::note: required because it appears within the type `wgpu::dispatch::DispatchTexture`
::error title=quality-wasm-check::note: required because it appears within the type `wgpu::Texture`
::error title=quality-wasm-check::note: required because it appears within the type `Renderer3D`
::error title=quality-wasm-check::note: required because it appears within the type `GpuFrameState`
::error title=quality-wasm-check::note: required by a bound in `SystemAccess::writes`
::error title=quality-wasm-check::error[E0277]: `Rc<Cell<u32>>` cannot be sent between threads safely
::error title=quality-wasm-check::note: required because it appears within the type `wgpu::backend::webgpu::WebDevice`
::error title=quality-wasm-check::note: required because it appears within the type `wgpu::dispatch::DispatchDevice`
::error title=quality-wasm-check::note: required because it appears within the type `Device`
::error title=quality-wasm-check::note: required because it appears within the type `gpu_resources::GpuDevice`
::error title=quality-wasm-check::note: required by a bound in `Resources::get`
::error title=quality-wasm-check::error[E0277]: `Rc<Cell<u32>>` cannot be shared between threads safely
::error title=quality-wasm-check::note: required because it appears within the type `wgpu::backend::webgpu::WebDevice`
::error title=quality-wasm-check::note: required because it appears within the type `wgpu::dispatch::DispatchDevice`
::error title=quality-wasm-check::note: required because it appears within the type `Device`
::error title=quality-wasm-check::note: required because it appears within the type `gpu_resources::GpuDevice`
::error title=quality-wasm-check::note: required by a bound in `Resources::get`
::error title=quality-wasm-check::error[E0277]: `(dyn wgpu::WindowHandle + 'static)` cannot be sent between threads safely
::error title=quality-wasm-check::note: required because it appears within the type `Box<(dyn wgpu::WindowHandle + 'static)>`
::error title=quality-wasm-check::note: required because it appears within the type `std::option::Option<Box<(dyn wgpu::WindowHandle + 'static)>>`
::error title=quality-wasm-check::note: required because it appears within the type `Surface<'static>`
::error title=quality-wasm-check::note: required because it appears within the type `GpuSurface`
::error title=quality-wasm-check::note: required by a bound in `Resources::get`
::error title=quality-wasm-check::error[E0277]: `Rc<RefCell<wgpu::backend::webgpu::WebBufferMapState>>` cannot be sent between threads safely
::error title=quality-wasm-check::note: required because it appears within the type `wgpu::backend::webgpu::WebBuffer`
::error title=quality-wasm-check::note: required because it appears within the type `wgpu::dispatch::DispatchBuffer`
::error title=quality-wasm-check::note: required because it appears within the type `wgpu::Buffer`
::error title=quality-wasm-check::note: required because it appears within the type `Renderer3D`
::error title=quality-wasm-check::note: required because it appears within the type `GpuFrameState`
::error title=quality-wasm-check::note: required by a bound in `Resources::get`
::error title=quality-wasm-check::error[E0277]: `Rc<wgpu::backend::webgpu::DropGuard>` cannot be sent between threads safely
::error title=quality-wasm-check::note: required because it appears within the type `std::option::Option<Rc<wgpu::backend::webgpu::DropGuard>>`
::error title=quality-wasm-check::note: required because it appears within the type `wgpu::backend::webgpu::WebTexture`
::error title=quality-wasm-check::note: required because it appears within the type `wgpu::dispatch::DispatchTexture`
::error title=quality-wasm-check::note: required because it appears within the type `wgpu::Texture`
::error title=quality-wasm-check::note: required because it appears within the type `Renderer3D`
::error title=quality-wasm-check::note: required because it appears within the type `GpuFrameState`
::error title=quality-wasm-check::note: required by a bound in `Resources::get`
::error title=quality-wasm-check::error: could not compile `ornis-render` (lib) due to 26 previous errors

╔════════════ QUALITY SUMMARY ════════════╗
  fmt                    PASS
  clippy                 PASS
  rustqual               PASS
  smoke (editor-only)    PASS
  test                   PASS
  test (physics gpu)     PASS
  clippy (physics gpu)   PASS
  audit                  PASS
  deny                   PASS
  outdated               PASS
  upgrade-check          SKIP (cargo-upgrade not installed)
  doc                    PASS
  wasm-check             FAIL (exit status: 101)
╚═════════════════════════════════════════╝
::error title=quality-summary-wasm-check::stage FAIL (exit status: 101)

Full logs are in the quality-log artifact of this run.

@github-actions

github-actions Bot commented Sep 7, 2026 •

Copy link
Copy Markdown
Full quality.log (run 34149520691) — part 1/6
   Compiling xtask v0.1.0 (/home/runner/work/ornis/ornis/xtask)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.58s
     Running `target/debug/xtask quality --ci`

═══ [1/13] fmt: cargo fmt --all -- --check ═══
Diff in /home/runner/work/ornis/ornis/crates/render/tests/mesh_resource.rs:74:
     common::with_headless_scene(|scene| {
         let device = &scene.device;
         let mut world = RenderWorld::from_scene(&probe_scene(&[(48, 32)]));
-        let _ = world.engine_mut().world_mut().insert(GpuDevice(device.clone()));
+        let _ = world
+            .engine_mut()
+            .world_mut()
+            .insert(GpuDevice(device.clone()));
         // Start at the floor tessellation — the probe scenes must move it.
         let initial = GpuMesh {
             mesh: create_sphere(device, 1.0, 32, 24),
── fmt: FAIL (exit exit status: 1) ──
::error title=quality-fmt::Diff in /home/runner/work/ornis/ornis/crates/render/tests/mesh_resource.rs:74: ⏎ -        let _ = world.engine_mut().world_mut().insert(GpuDevice(device.clone())); ⏎ +        let _ = world ⏎ +            .engine_mu

═══ [2/13] clippy: cargo clippy --workspace --all-targets -- -D warnings ═══
    Checking ornis-schedule v0.1.0 (/home/runner/work/ornis/ornis/crates/schedule)
   Compiling ornis-macros v0.1.0 (/home/runner/work/ornis/ornis/crates/macros)
   Compiling rustpython-vm v0.5.0 (/home/runner/work/ornis/ornis/third_party/rustpython-vm)
    Checking editor-backend v0.1.0 (/home/runner/work/ornis/ornis/crates/editor-backend)
    Checking ornis-core v0.1.0 (/home/runner/work/ornis/ornis/crates/core)
    Checking ornis-rhai v0.1.0 (/home/runner/work/ornis/ornis/crates/rhai)
    Checking ornis-rune v0.1.0 (/home/runner/work/ornis/ornis/crates/rune)
    Checking ornis-audio v0.1.0 (/home/runner/work/ornis/ornis/crates/audio)
    Checking ornis-render v0.1.0 (/home/runner/work/ornis/ornis/crates/render)
    Checking ornis-physics v0.1.0 (/home/runner/work/ornis/ornis/crates/physics)
    Checking ornis-wgpu-backend v0.1.0 (/home/runner/work/ornis/ornis/crates/wgpu_backend)
    Checking xtask v0.1.0 (/home/runner/work/ornis/ornis/xtask)
    Checking ornis-app v0.1.0 (/home/runner/work/ornis/ornis/crates/app)
    Checking ornis-materialx v0.1.0 (/home/runner/work/ornis/ornis/crates/materialx)
    Checking ornis v0.1.0 (/home/runner/work/ornis/ornis)
warning: a method with this name may be added to the standard library in the future
   --> third_party/rustpython-vm/src/builtins/str.rs:745:34
    |
745 |                     out.extend(c.to_titlecase());
    |                                  ^^^^^^^^^^^^
    |
    = help: call with fully qualified syntax `to_titlecase(...)` to keep using the current method
    = warning: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
    = note: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>
    = note: `#[warn(unstable_name_collisions)]` (part of `#[warn(future_incompatible)]`) on by default

warning: a method with this name may be added to the standard library in the future
   --> third_party/rustpython-vm/src/builtins/str.rs:755:51
    |
755 |                         Some(ch) => out.extend(ch.to_titlecase()),
    |                                                   ^^^^^^^^^^^^
    |
    = help: call with fully qualified syntax `to_titlecase(...)` to keep using the current method
    = warning: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
    = note: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>

warning: a method with this name may be added to the standard library in the future
    --> third_party/rustpython-vm/src/builtins/str.rs:1020:36
     |
1020 |                     title.extend(c.to_titlecase());
     |                                    ^^^^^^^^^^^^
     |
     = help: call with fully qualified syntax `to_titlecase(...)` to keep using the current method
     = warning: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
     = note: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>

warning: a method with this name may be added to the standard library in the future
    --> third_party/rustpython-vm/src/builtins/str.rs:1025:45
     |
1025 |             } else if c.is_uppercase() || c.is_titlecase() {
     |                                             ^^^^^^^^^^^^
     |
     = help: call with fully qualified syntax `is_titlecase(...)` to keep using the current method
     = warning: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
     = note: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>

warning: a method with this name may be added to the standard library in the future
    --> third_party/rustpython-vm/src/builtins/str.rs:1261:38
     |
1261 |             if c.is_uppercase() || c.is_titlecase() {
     |                                      ^^^^^^^^^^^^
     |
     = help: call with fully qualified syntax `is_titlecase(...)` to keep using the current method
     = warning: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
     = note: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>

    Checking ornis-wasm v0.1.0 (/home/runner/work/ornis/ornis/crates/wasm)
error: function `sequential_reference_pixels` is never used
   --> crates/render/tests/common/mod.rs:124:8
    |
124 | pub fn sequential_reference_pixels(scene: &HeadlessScene) -> Vec<u8> {
    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: `-D dead-code` implied by `-D warnings`
    = help: to override `-D warnings` add `#[expect(dead_code)]` or `#[allow(dead_code)]`

error: could not compile `ornis-render` (test "light_resource") due to 1 previous error
warning: build failed, waiting for other jobs to finish...
warning: `rustpython-vm` (lib) generated 5 warnings
── clippy: FAIL (exit exit status: 101) ──
::error title=quality-clippy::warning: a method with this name may be added to the standard library in the future
::error title=quality-clippy::--> third_party/rustpython-vm/src/builtins/str.rs:745:34
::error title=quality-clippy::warning: a method with this name may be added to the standard library in the future
::error title=quality-clippy::--> third_party/rustpython-vm/src/builtins/str.rs:755:51
::error title=quality-clippy::warning: a method with this name may be added to the standard library in the future
::error title=quality-clippy::--> third_party/rustpython-vm/src/builtins/str.rs:1020:36
::error title=quality-clippy::warning: a method with this name may be added to the standard library in the future
::error title=quality-clippy::--> third_party/rustpython-vm/src/builtins/str.rs:1025:45
::error title=quality-clippy::warning: a method with this name may be added to the standard library in the future
::error title=quality-clippy::--> third_party/rustpython-vm/src/builtins/str.rs:1261:38
::error title=quality-clippy::error: function `sequential_reference_pixels` is never used
::error title=quality-clippy::--> crates/render/tests/common/mod.rs:124:8
::error title=quality-clippy::error: could not compile `ornis-render` (test "light_resource") due to 1 previous error
::error title=quality-clippy::warning: build failed, waiting for other jobs to finish...
::error title=quality-clippy::warning: `rustpython-vm` (lib) generated 5 warnings

═══ [3/13] rustqual: rustqual (ratchet: baseline.json — own comparator, equal=PASS) ═══

═══ Summary ═══
  Functions: 2640    Quality Score: 17.9%    1807 findings

  IOSP:         92.4%  (984I, 563O, 963T, 128 violations)
  Complexity:   65.7%  (9 complexity, 759 magic numbers, 2 nesting, 33 long fn, 11 unsafe, 91 error handling)
  DRY:          81.5%  (55 duplicates, 130 fragments, 164 dead code, 8 dead types, 117 boilerplate, 11 wildcards, 4 repeated match)
  SRP:          95.6%  (4 struct, 35 module, 56 params, 20 structural)
  Coupling:     98.9%  (28 structural)
  Test Quality: 94.7%  (5 no SUT, 135 untested)
  Architecture:100.0%

  ~ Suppressed:   2
  ~ All allows:   98 (qual:allow + #[allow])

═══ Coupling ═══

                          In  Out  Instability
    crates                 0    0  0.00
    editor_world           0    1  1.00
    engine_runtime         1    0  0.00
    fuzz                   0    0  0.00
    main                   0    0  0.00
    xtask                  0    0  0.00

  ✓ No circular dependencies.

═══ 1810 Findings ═══
  crates/app/src/lib.rs:26  DEAD_TYPE  testonly struct UnifiedView
  crates/app/src/lib.rs:42  DEAD_CODE  testonly UnifiedView::renderable_count  in UnifiedView<'a>::renderable_count
  crates/app/src/lib.rs:65  DEAD_CODE  testonly UnifiedView::render_snapshot  in UnifiedView<'a>::render_snapshot
  crates/app/src/lib.rs:135  DEAD_CODE  testonly install_unified_runtime  in install_unified_runtime
  crates/app/src/lib.rs:279  ERROR_HANDLING  unwrap/panic/todo  in UnifiedRenderExtractSystem::run
  crates/app/src/lib.rs:305  REPEATED_MATCH  MaterialDesc
  crates/audio/src/backend/native.rs:76  DEAD_CODE  AudioBackend::set_volume  in AudioBackend::set_volume
  crates/audio/src/backend/native.rs:96  COGNITIVE  complexity 21  in run_audio_thread
  crates/audio/src/backend/native.rs:135  MAGIC_NUMBER  5
  crates/audio/src/backend/native.rs:172  MAGIC_NUMBER  1000000
  crates/audio/src/backend/native.rs:190  MAGIC_NUMBER  -1.0
  crates/audio/src/backend/native.rs:193  MAGIC_NUMBER  -1.0
  crates/audio/src/backend/native.rs:194  MAGIC_NUMBER  -1.0
  crates/audio/src/backend/native.rs:245  MAGIC_NUMBER  -1.0
  crates/audio/src/backend/native.rs:246  MAGIC_NUMBER  -1.0
  crates/audio/src/backend/wasm.rs:161  DEAD_CODE  AudioBackend::set_volume  in AudioBackend::set_volume
  crates/audio/src/decoder.rs:32  BOILERPLATE  BP-001 Trivial From implementation (derivable)
  crates/audio/src/decoder.rs:71  MAGIC_NUMBER  44100
  crates/audio/src/engine.rs:50  DEAD_CODE  testonly AudioEngine::with_backend  in AudioEngine::with_backend
  crates/audio/src/engine.rs:62  DEAD_CODE  testonly AudioEngine::register_clip  in AudioEngine::register_clip
  crates/audio/src/engine.rs:71  DEAD_CODE  testonly AudioEngine::set_listener  in AudioEngine::set_listener
  crates/audio/src/engine.rs:119  MAGIC_NUMBER  0.001
  crates/audio/src/source.rs:99  DEAD_CODE  testonly AudioClip::duration_secs  in AudioClip::duration_secs
  crates/core/benches/comparison_bench.rs:89  DUPLICATE  exact  in setup_hybrid
  crates/core/benches/comparison_bench.rs:89  TQ_UNTESTED  setup_hybrid  in setup_hybrid
  crates/core/benches/comparison_bench.rs:99  DUPLICATE  exact  in setup_pure
  crates/core/benches/comparison_bench.rs:99  TQ_UNTESTED  setup_pure  in setup_pure
  crates/core/benches/comparison_bench.rs:109  DUPLICATE  exact  in setup_hashmap
  crates/core/benches/comparison_bench.rs:109  TQ_UNTESTED  setup_hashmap  in setup_hashmap
  crates/core/benches/comparison_bench.rs:119  DUPLICATE  exact  in setup_archetype
  crates/core/benches/comparison_bench.rs:119  TQ_UNTESTED  setup_archetype  in setup_archetype
  crates/core/benches/comparison_bench.rs:129  DEAD_CODE  bench_insert  in bench_insert
  crates/core/benches/comparison_bench.rs:180  DEAD_CODE  bench_iterate  in bench_iterate
  crates/core/benches/comparison_bench.rs:182  MAGIC_NUMBER  100
  crates/core/benches/comparison_bench.rs:224  DEAD_CODE  bench_random_access  in bench_random_access
  crates/core/benches/comparison_bench.rs:226  MAGIC_NUMBER  100
  crates/core/benches/comparison_bench.rs:268  DEAD_CODE  bench_memory  in bench_memory
  crates/core/benches/comparison_bench.rs:270  MAGIC_NUMBER  50
  crates/core/benches/store_bench.rs:8  VIOLATION  logic + calls  in setup
  crates/core/benches/store_bench.rs:8  TQ_UNTESTED  setup  in setup
  crates/core/benches/store_bench.rs:25  MAGIC_NUMBER  2.0
  crates/core/benches/store_bench.rs:31  DEAD_CODE  bench_insert  in bench_insert
  crates/core/benches/store_bench.rs:42  DEAD_CODE  bench_iterate  in bench_iterate
  crates/core/benches/store_bench.rs:53  DEAD_CODE  bench_random_access  in bench_random_access
  crates/core/benches/store_bench.rs:64  DEAD_CODE  bench_intersection  in bench_intersection
  crates/core/benches/store_bench.rs:75  DEAD_CODE  bench_par_iterate  in bench_par_iterate
  crates/core/src/command_sync.rs:48  DEAD_CODE  testonly ResidencyTracker::mark_gpu  in ResidencyTracker::mark_gpu
  crates/core/src/command_sync.rs:55  DEAD_CODE  testonly ResidencyTracker::mark_both  in ResidencyTracker::mark_both
  crates/core/src/command_sync.rs:80  DEAD_CODE  testonly ResidencyTracker::needs_cpu_to_gpu  in ResidencyTracker::needs_cpu_to_gpu
  crates/core/src/command_sync.rs:85  DEAD_CODE  testonly ResidencyTracker::needs_gpu_to_cpu  in ResidencyTracker::needs_gpu_to_cpu
  crates/core/src/command_sync.rs:139  DEAD_CODE  testonly CommandQueue::enqueue  in CommandQueue::enqueue
  crates/core/src/command_sync.rs:149  DEAD_CODE  testonly CommandQueue::is_dirty  in CommandQueue::is_dirty
  crates/core/src/command_sync.rs:157  DEAD_CODE  testonly CommandQueue::clear_dirty  in CommandQueue::clear_dirty
  crates/core/src/command_sync.rs:216  DEAD_CODE  testonly CommandSync::residency  in CommandSync::residency
  crates/core/src/component_store.rs:58  BOILERPLATE  BP-008 Clone-heavy conversion  in ComponentStore<T>::clone
  crates/core/src/component_store.rs:106  FRAGMENT  3 stmts
  crates/core/src/component_store.rs:106  FRAGMENT  3 stmts
  crates/core/src/component_store.rs:106  FRAGMENT  3 stmts
  crates/core/src/component_store.rs:134  FRAGMENT  3 stmts
  crates/core/src/component_store.rs:134  FRAGMENT  3 stmts
  crates/core/src/component_store.rs:134  FRAGMENT  3 stmts
  crates/core/src/component_store.rs:148  FRAGMENT  3 stmts
  crates/core/src/component_store.rs:148  FRAGMENT  3 stmts
  crates/core/src/component_store.rs:148  FRAGMENT  3 stmts
  crates/core/src/component_store.rs:210  DEAD_CODE  testonly ComponentStore::bitset  in ComponentStore<T>::bitset
  crates/core/src/component_store.rs:217  DEAD_CODE  testonly ComponentStore::dense_index  in ComponentStore<T>::dense_index
  crates/core/src/component_store.rs:219  FRAGMENT  3 stmts
  crates/core/src/component_store.rs:219  FRAGMENT  3 stmts
  crates/core/src/component_store.rs:219  FRAGMENT  3 stmts
  crates/core/src/component_store.rs:248  DEAD_CODE  testonly ComponentStore::iter_without  in ComponentStore<T>::iter_without
  crates/core/src/component_store.rs:265  TQ_UNTESTED  iter_entities  in iter_entities
  crates/core/src/component_store.rs:281  DEAD_CODE  testonly ComponentStore::chunked_iter_mut  in ComponentStore<T>::chunked_iter_mut
  crates/core/src/component_store.rs:283  MAGIC_NUMBER  4
  crates/core/src/component_store.rs:283  MAGIC_NUMBER  4
  crates/core/src/component_store.rs:286  MAGIC_NUMBER  4
  crates/core/src/component_store.rs:293  DEAD_CODE  ComponentStore::chunked_par_iter_mut  in ComponentStore<T>::chunked_par_iter_mut
  crates/core/src/component_store.rs:303  DEAD_CODE  testonly ComponentStore::defrag  in ComponentStore<T>::defrag
  crates/core/src/component_store.rs:408  DEAD_CODE  testonly ChunkedIterMut::into_tail  in ChunkedIterMut<'a,T>::into_tail
  crates/core/src/dispatcher.rs:102  DEAD_CODE  testonly CpuExecutor::execute_par  in CpuExecutor::execute_par
  crates/core/src/dispatcher.rs:153  SRP_STRUCTURAL  SLM  in GpuExecutor::execute
  crates/core/src/dispatcher.rs:193  DEAD_CODE  testonly SmartDispatcher::with_threshold  in SmartDispatcher::with_threshold
  crates/core/src/dispatcher.rs:211  DEAD_CODE  SmartDispatcher::set_gpu_executor  in SmartDispatcher::set_gpu_executor
  crates/core/src/dispatcher.rs:221  DEAD_CODE  testonly SmartDispatcher::execute_read  in SmartDispatcher::execute_read
  crates/core/src/dispatcher.rs:277  DEAD_CODE  SmartDispatcher::dispatcher  in SmartDispatcher::dispatcher
  crates/core/src/dispatcher.rs:335  DUPLICATE  exact  in cpu_executor_read
  crates/core/src/dispatcher.rs:336  FRAGMENT  4 stmts
  crates/core/src/dispatcher.rs:370  DUPLICATE  exact  in cpu_executor_execute_par_reads_lane
  crates/core/src/dispatcher.rs:371  FRAGMENT  4 stmts
  crates/core/src/engine.rs:40  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in Time::delta_seconds
  crates/core/src/engine.rs:45  DEAD_CODE  testonly Time::elapsed_seconds  in Time::elapsed_seconds
  crates/core/src/engine.rs:45  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in Time::elapsed_seconds
  crates/core/src/engine.rs:51  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in Time::frame
  crates/core/src/engine.rs:124  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in FixedTime::delta_seconds
  crates/core/src/engine.rs:129  DEAD_CODE  testonly FixedTime::accumulator_seconds  in FixedTime::accumulator_seconds
  crates/core/src/engine.rs:129  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in FixedTime::accumulator_seconds
  crates/core/src/engine.rs:137  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in FixedTime::alpha
  crates/core/src/engine.rs:142  DEAD_CODE  testonly FixedTime::elapsed_seconds  in FixedTime::elapsed_seconds
  crates/core/src/engine.rs:142  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in FixedTime::elapsed_seconds
  crates/core/src/engine.rs:147  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in FixedTime::tick
  crates/core/src/engine.rs:152  DEAD_CODE  testonly FixedTime::steps_this_frame  in FixedTime::steps_this_frame
  crates/core/src/engine.rs:152  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in FixedTime::steps_this_frame
  crates/core/src/engine.rs:161  DEAD_CODE  testonly FixedTime::current_step  in FixedTime::current_step
  crates/core/src/engine.rs:161  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in FixedTime::current_step
  crates/core/src/engine.rs:166  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in FixedTime::max_steps_per_frame
  crates/core/src/engine.rs:171  DEAD_CODE  testonly FixedTime::dropped_seconds  in FixedTime::dropped_seconds
  crates/core/src/engine.rs:171  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in FixedTime::dropped_seconds
  crates/core/src/engine.rs:258  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in Engine::world
  crates/core/src/engine.rs:267  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in Engine::world_mut
  crates/core/src/engine.rs:272  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in Engine::schedule
  crates/core/src/engine.rs:281  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in Engine::schedule_mut
  crates/core/src/engine.rs:286  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in Engine::fixed_schedule
  crates/core/src/engine.rs:295  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in Engine::fixed_schedule_mut
  crates/core/src/engine.rs:300  DEAD_CODE  Engine::add_fixed_system  in Engine::add_fixed_system
  crates/core/src/engine.rs:320  ERROR_HANDLING  unwrap/panic/todo  in Engine::run_frame
  crates/core/src/gameplay.rs:1  SRP_MODULE  316 lines
  crates/core/src/gameplay.rs:73  DEAD_CODE  testonly RenderWorldView::position_count  in RenderWorldView<'a>::position_count
  crates/core/src/gameplay.rs:87  DEAD_CODE  testonly RenderWorldView::snapshot_positions  in RenderWorldView<'a>::snapshot_positions
  crates/core/src/gameplay.rs:148  DEAD_CODE  GameplayPlugin::with_speed  in GameplayPlugin::with_speed
  crates/core/src/gameplay.rs:154  DEAD_CODE  testonly GameplayPlugin::with_snapshot  in GameplayPlugin::with_snapshot
  crates/core/src/gameplay.rs:210  VIOLATION  logic + calls  in player_input
  crates/core/src/gameplay.rs:222  MAGIC_NUMBER  17
  crates/core/src/gameplay.rs:222  MAGIC_NUMBER  87
  crates/core/src/gameplay.rs:222  MAGIC_NUMBER  38
  crates/core/src/gameplay.rs:226  MAGIC_NUMBER  31
  crates/core/src/gameplay.rs:226  MAGIC_NUMBER  83
  crates/core/src/gameplay.rs:226  MAGIC_NUMBER  40
  crates/core/src/gameplay.rs:230  MAGIC_NUMBER  30
  crates/core/src/gameplay.rs:230  MAGIC_NUMBER  65
  crates/core/src/gameplay.rs:230  MAGIC_NUMBER  37
  crates/core/src/gameplay.rs:234  MAGIC_NUMBER  32
  crates/core/src/gameplay.rs:234  MAGIC_NUMBER  68
  crates/core/src/gameplay.rs:234  MAGIC_NUMBER  39
  crates/core/src/gameplay.rs:239  MAGIC_NUMBER  1e-6
  crates/core/src/gameplay.rs:310  MAGIC_NUMBER  1e-6
  crates/core/src/gameplay.rs:339  MAGIC_NUMBER  1e-6
  crates/core/src/gameplay.rs:431  ERROR_HANDLING  unwrap/panic/todo  in RenderSnapshotSystem::run
  crates/core/src/input.rs:70  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in InputState::set_pointer_anchor
  crates/core/src/input.rs:75  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in InputState::pointer_position
  crates/core/src/input.rs:80  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in InputState::pointer_delta
  crates/core/src/input.rs:92  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in InputState::wheel_delta
  crates/core/src/lock_free_store.rs:18  COUPLING_STRUCTURAL  SIT
  crates/core/src/lock_free_store.rs:23  DEAD_TYPE  testonly struct LaneInner
  crates/core/src/lock_free_store.rs:34  UNSAFE  1 blocks  in LaneInner<T>::read
  crates/core/src/lock_free_store.rs:39  UNSAFE  2 blocks  in LaneInner<T>::write
  crates/core/src/lock_free_store.rs:61  DEAD_TYPE  testonly struct LockFreeStore
  crates/core/src/lock_free_store.rs:94  ERROR_HANDLING  unwrap/panic/todo  in LockFreeStore::create_entity
  crates/core/src/lock_free_store.rs:98  ERROR_HANDLING  unwrap/panic/todo  in LockFreeStore::destroy_entity
  crates/core/src/lock_free_store.rs:105  ERROR_HANDLING  unwrap/panic/todo  in LockFreeStore::is_alive
  crates/core/src/lock_free_store.rs:109  ERROR_HANDLING  unwrap/panic/todo  in LockFreeStore::insert
  crates/core/src/lock_free_store.rs:114  COUPLING_STRUCTURAL  DEH
  crates/core/src/lock_free_store.rs:121  UNSAFE  1 blocks  in LockFreeStore::read_lane
  crates/core/src/lock_free_store.rs:121  ERROR_HANDLING  unwrap/panic/todo  in LockFreeStore::read_lane
  crates/core/src/lock_free_store.rs:125  COUPLING_STRUCTURAL  DEH
  crates/core/src/lock_free_store.rs:137  DEAD_TYPE  testonly struct LockFreeReadGuard
  crates/core/src/lock_free_store.rs:164  DUPLICATE  exact  in entity_lifecycle
  crates/core/src/material.rs:1  SRP_MODULE  437 lines
  crates/core/src/material.rs:190  DEAD_CODE  testonly SpecularGroup::edge_tint  in SpecularGroup::edge_tint
  crates/core/src/material.rs:262  DEAD_CODE  testonly SubsurfaceGroup::radius_scale_r  in SubsurfaceGroup::radius_scale_r
  crates/core/src/material.rs:470  MAGIC_NUMBER  0.9
  crates/core/src/material.rs:470  MAGIC_NUMBER  0.9
  crates/core/src/material.rs:470  MAGIC_NUMBER  0.9
  crates/core/src/material.rs:472  MAGIC_NUMBER  0.1
  crates/core/src/material.rs:480  MAGIC_NUMBER  0.8
  crates/core/src/material.rs:480  MAGIC_NUMBER  0.8
  crates/core/src/material.rs:480  MAGIC_NUMBER  0.8
  crates/core/src/material.rs:482  MAGIC_NUMBER  0.3
  crates/core/src/material.rs:483  MAGIC_NUMBER  1.5
  crates/core/src/material.rs:488  DEAD_CODE  testonly OpenPBRMaterial::glass  in OpenPBRMaterial::glass
  crates/core/src/material.rs:494  MAGIC_NUMBER  1.5
  crates/core/src/material.rs:503  DEAD_CODE  testonly OpenPBRMaterial::subsurface  in OpenPBRMaterial::subsurface
  crates/core/src/material.rs:506  MAGIC_NUMBER  0.8
  crates/core/src/material.rs:506  MAGIC_NUMBER  0.8
  crates/core/src/material.rs:506  MAGIC_NUMBER  0.8
  crates/core/src/material.rs:508  MAGIC_NUMBER  0.3
  crates/core/src/material.rs:509  MAGIC_NUMBER  1.3
  crates/core/src/material.rs:511  MAGIC_NUMBER  0.1
  crates/core/src/material.rs:512  MAGIC_NUMBER  0.8
  crates/core/src/material.rs:512  MAGIC_NUMBER  0.2
  crates/core/src/material.rs:512  MAGIC_NUMBER  0.1
  crates/core/src/material.rs:520  MAGIC_NUMBER  0.8
  crates/core/src/material.rs:520  MAGIC_NUMBER  0.8
  crates/core/src/material.rs:520  MAGIC_NUMBER  0.8
  crates/core/src/material.rs:522  MAGIC_NUMBER  0.3
  crates/core/src/material.rs:523  MAGIC_NUMBER  1.5
  crates/core/src/material.rs:525  MAGIC_NUMBER  0.1
  crates/core/src/material.rs:526  MAGIC_NUMBER  1.5
  crates/core/src/material.rs:534  MAGIC_NUMBER  0.8
  crates/core/src/material.rs:534  MAGIC_NUMBER  0.8
  crates/core/src/material.rs:534  MAGIC_NUMBER  0.8
  crates/core/src/material.rs:536  MAGIC_NUMBER  0.3
  crates/core/src/material.rs:537  MAGIC_NUMBER  1.5
  crates/core/src/material.rs:539  MAGIC_NUMBER  0.3
  crates/core/src/material.rs:540  MAGIC_NUMBER  0.8
  crates/core/src/material.rs:540  MAGIC_NUMBER  0.8
  crates/core/src/material.rs:540  MAGIC_NUMBER  0.8
  crates/core/src/material.rs:545  DEAD_CODE  testonly OpenPBRMaterial::thin_film  in OpenPBRMaterial::thin_film
  crates/core/src/material.rs:551  MAGIC_NUMBER  1.5
  crates/core/src/material.rs:553  MAGIC_NUMBER  300.0
  crates/core/src/material.rs:554  MAGIC_NUMBER  1.33
  crates/core/src/material.rs:559  DEAD_CODE  testonly OpenPBRMaterial::emission  in OpenPBRMaterial::emission
  crates/core/src/material.rs:564  MAGIC_NUMBER  1000.0
  crates/core/src/material.rs:565  MAGIC_NUMBER  0.8
  crates/core/src/material.rs:565  MAGIC_NUMBER  0.6
  crates/core/src/material.rs:570  DEAD_CODE  testonly OpenPBRMaterial::transmission  in OpenPBRMaterial::transmission
  crates/core/src/material.rs:576  MAGIC_NUMBER  1.5
  crates/core/src/material.rs:578  MAGIC_NUMBER  2.0
  crates/core/src/material.rs:601  TQ_NO_SUT  test_openpbr_material_size  in test_openpbr_material_size
  crates/core/src/material.rs:782  UNSAFE  1 blocks  in test_pod_zeroable
  crates/core/src/page_table.rs:26  BOILERPLATE  BP-005 Manual Default implementation (derivable)
  crates/core/src/registry.rs:105  COUPLING_STRUCTURAL  DEH
  crates/core/src/registry.rs:178  SRP_STRUCT  ComponentMeta: LCOM4=12
  crates/core/src/registry.rs:195  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in ComponentMeta::name
  crates/core/src/registry.rs:200  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in ComponentMeta::type_name
  crates/core/src/registry.rs:205  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in ComponentMeta::type_id
  crates/core/src/registry.rs:210  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in ComponentMeta::lane_id
  crates/core/src/registry.rs:215  DEAD_CODE  testonly ComponentMeta::register_lane  in ComponentMeta::register_lane
  crates/core/src/registry.rs:231  DEAD_CODE  testonly ComponentMeta::lane_len  in ComponentMeta::lane_len
  crates/core/src/registry.rs:337  DEAD_CODE  testonly ComponentRegistry::register_component  in ComponentRegistry::register_component
  crates/core/src/registry.rs:342  DEAD_CODE  testonly ComponentRegistry::by_id  in ComponentRegistry::by_id
  crates/core/src/registry.rs:354  DEAD_CODE  testonly ComponentRegistry::by_lane_id  in ComponentRegistry::by_lane_id
  crates/core/src/schedule.rs:111  COUPLING_STRUCTURAL  DEH
  crates/core/src/schedule.rs:134  COUPLING_STRUCTURAL  DEH
  crates/core/src/schedule.rs:141  COUPLING_STRUCTURAL  DEH
  crates/core/src/schedule.rs:148  COUPLING_STRUCTURAL  DEH
  crates/core/src/schedule.rs:213  DEAD_CODE  testonly SystemAccess::reads_lane_id  in SystemAccess::reads_lane_id
  crates/core/src/schedule.rs:219  DEAD_CODE  testonly SystemAccess::writes_lane_id  in SystemAccess::writes_lane_id
  crates/core/src/schedule.rs:515  ERROR_HANDLING  unwrap/panic/todo  in Schedule::order_before
  crates/core/src/schedule.rs:532  DEAD_CODE  Schedule::order_after  in Schedule::order_after
  crates/core/src/schedule.rs:537  DEAD_CODE  Schedule::try_order_after  in Schedule::try_order_after
  crates/core/src/schedule.rs:547  DEAD_CODE  testonly Schedule::set_parallel  in Schedule::set_parallel
  crates/core/src/schedule.rs:554  DEAD_CODE  testonly Schedule::set_enforce_accesses  in Schedule::set_enforce_accesses
  crates/core/src/schedule.rs:578  DEAD_CODE  testonly Schedule::level_computations  in Schedule::level_computations
  crates/core/src/script.rs:1  SRP_MODULE  385 lines
  crates/core/src/script.rs:32  BOILERPLATE  BP-002 Trivial Display implementation (derivable)
  crates/core/src/script.rs:99  DEAD_TYPE  testonly struct NoopScriptEngine
  crates/core/src/script.rs:121  BOILERPLATE  BP-010 Format string repetition
  crates/core/src/script.rs:312  DEAD_CODE  testonly ScriptHost::ticks  in ScriptHost::ticks
  crates/core/src/script.rs:411  DEAD_CODE  testonly ScriptPlugin::with_tick  in ScriptPlugin::with_tick
  crates/core/src/script.rs:440  DEAD_CODE  testonly ApplyReport::·error_count  in ApplyReport::·error_count
  crates/core/src/script.rs:472  DEAD_CODE  testonly ScriptHost::apply_outcomes  in ScriptHost::apply_outcomes
  crates/core/src/script.rs:499  BOILERPLATE  BP-009 Struct update boilerplate  in apply_one
  crates/core/src/smart_store.rs:61  UNSAFE  1 blocks  in LockFreeLaneInner<T>::read
  crates/core/src/smart_store.rs:66  UNSAFE  2 blocks  in LockFreeLaneInner<T>::write
  crates/core/src/smart_store.rs:154  DEAD_CODE  testonly SmartStore::register_lock_free  in SmartStore::register_lock_free
  crates/core/src/smart_store.rs:180  DEAD_CODE  testonly SmartStore::register_cold  in SmartStore::register_cold
  crates/core/src/smart_store.rs:196  ERROR_HANDLING  unwrap/panic/todo  in SmartStore::insert_cold
  crates/core/src/smart_store.rs:196  DEAD_CODE  testonly SmartStore::insert_cold  in SmartStore::insert_cold
  crates/core/src/smart_store.rs:202  COUPLING_STRUCTURAL  DEH
  crates/core/src/smart_store.rs:210  ERROR_HANDLING  unwrap/panic/todo  in SmartStore::read_cold_lane
  crates/core/src/smart_store.rs:210  DEAD_CODE  testonly SmartStore::read_cold_lane  in SmartStore::read_cold_lane
  crates/core/src/smart_store.rs:217  COUPLING_STRUCTURAL  DEH
  crates/core/src/smart_store.rs:226  ERROR_HANDLING  unwrap/panic/todo  in SmartStore::write_cold_lane
  crates/core/src/smart_store.rs:226  DEAD_CODE  testonly SmartStore::write_cold_lane  in SmartStore::write_cold_lane
  crates/core/src/smart_store.rs:233  COUPLING_STRUCTURAL  DEH
  crates/core/src/smart_store.rs:242  ERROR_HANDLING  unwrap/panic/todo  in SmartStore::create_entity
  crates/core/src/smart_store.rs:249  ERROR_HANDLING  unwrap/panic/todo  in SmartStore::destroy_entity
  crates/core/src/smart_store.rs:261  ERROR_HANDLING  unwrap/panic/todo  in SmartStore::is_alive
  crates/core/src/smart_store.rs:268  ERROR_HANDLING  unwrap/panic/todo  in SmartStore::insert
  crates/core/src/smart_store.rs:272  COUPLING_STRUCTURAL  DEH
  crates/core/src/smart_store.rs:274  COUPLING_STRUCTURAL  DEH
  crates/core/src/smart_store.rs:285  ERROR_HANDLING  unwrap/panic/todo  in SmartStore::read_lane
  crates/core/src/smart_store.rs:293  COUPLING_STRUCTURAL  DEH
  crates/core/src/smart_store.rs:307  ERROR_HANDLING  unwrap/panic/todo  in SmartStore::write_lane
  crates/core/src/smart_store.rs:315  COUPLING_STRUCTURAL  DEH
  crates/core/src/smart_store.rs:326  DEAD_CODE  testonly SmartStore::with_lock_free_lane  in SmartStore::with_lock_free_lane
  crates/core/src/smart_store.rs:333  COUPLING_STRUCTURAL  DEH
  crates/core/src/smart_store.rs:342  ERROR_HANDLING  unwrap/panic/todo  in SmartStore::write_lock_free_lane
  crates/core/src/smart_store.rs:342  DEAD_CODE  testonly SmartStore::write_lock_free_lane  in SmartStore::write_lock_free_lane
  crates/core/src/smart_store.rs:348  COUPLING_STRUCTURAL  DEH
  crates/core/src/smart_store.rs:407  DUPLICATE  exact  in entity_lifecycle
  crates/core/tests/confluence_tests.rs:38  UNSAFE  1 blocks  in run_with_threads
  crates/core/tests/confluence_tests.rs:77  DUPLICATE  similar  in strong_confluence_for_each_entity_single_lane
  crates/core/tests/confluence_tests.rs:77  BOILERPLATE  BP-009 Struct update boilerplate  in strong_confluence_for_each_entity_single_lane
  crates/core/tests/confluence_tests.rs:142  DUPLICATE  similar  in strong_confluence_for_each_entity_two_lanes
  crates/core/tests/confluence_tests.rs:142  BOILERPLATE  BP-009 Struct update boilerplate  in strong_confluence_for_each_entity_two_lanes
  crates/core/tests/confluence_tests.rs:207  DUPLICATE  similar  in strong_confluence_three_lanes
  crates/core/tests/confluence_tests.rs:207  BOILERPLATE  BP-009 Struct update boilerplate  in strong_confluence_three_lanes
  crates/core/tests/confluence_tests.rs:300  BOILERPLATE  BP-009 Struct update boilerplate  in strong_confluence_smart_pipeline_branching
  crates/core/tests/confluence_tests.rs:373  BOILERPLATE  BP-009 Struct update boilerplate  in strong_confluence_entity_creation_order
  crates/core/tests/confluence_tests.rs:426  BOILERPLATE  BP-009 Struct update boilerplate  in strong_confluence_defrag
  crates/core/tests/confluence_tests.rs:483  DUPLICATE  similar  in strong_confluence_for_each_entity_pure_math
  crates/core/tests/confluence_tests.rs:483  BOILERPLATE  BP-009 Struct update boilerplate  in strong_confluence_for_each_entity_pure_math
  crates/core/tests/macro_integration.rs:1  SRP_MODULE  501 lines
  crates/core/tests/macro_integration.rs:120  BOILERPLATE  BP-009 Struct update boilerplate  in for_each_entity_macro_three_lanes_skips_partial_ownership
  crates/core/tests/macro_integration.rs:340  BOILERPLATE  BP-009 Struct update boilerplate  in pack_splits_into_fields
  crates/core/tests/macro_integration.rs:409  BOILERPLATE  BP-005 Manual Default implementation (derivable)
  crates/core/tests/macro_integration.rs:446  BOILERPLATE  BP-009 Struct update boilerplate  in pack_derive_simple_struct
  crates/core/tests/macro_integration.rs:471  BOILERPLATE  BP-009 Struct update boilerplate  in pack_derive_get_reconstructs
  crates/core/tests/macro_integration.rs:525  BOILERPLATE  BP-009 Struct update boilerplate  in pack_derive_round_trip
  crates/core/tests/macro_integration.rs:573  BOILERPLATE  BP-009 Struct update boilerplate  in pack_derive_duplicate_types_share_lane
  crates/core/tests/pack_integration.rs:39  BOILERPLATE  BP-009 Struct update boilerplate  in pack_for_each_packed_mutates_fields
  crates/editor-backend/src/remote.rs:1  SRP_MODULE  927 lines
  crates/editor-backend/src/remote.rs:48  ERROR_HANDLING  unwrap/panic/todo  in RemoteEditor::start
  crates/editor-backend/src/remote.rs:48  BOILERPLATE  BP-009 Struct update boilerplate  in RemoteEditor::start
  crates/editor-backend/src/remote.rs:197  SRP_PARAMS  6 params  in serve
  crates/editor-backend/src/remote.rs:222  MAGIC_NUMBER  100
  crates/editor-backend/src/remote.rs:283  VIOLATION  logic + calls  in serve_websocket
  crates/editor-backend/src/remote.rs:283  ERROR_HANDLING  unwrap/panic/todo  in serve_websocket
  crates/editor-backend/src/remote.rs:283  SRP_PARAMS  6 params  in serve_websocket
  crates/editor-backend/src/remote.rs:300  MAGIC_NUMBER  101
  crates/editor-backend/src/remote.rs:306  MAGIC_NUMBER  10
  crates/editor-backend/src/remote.rs:334  MAGIC_NUMBER  15
  crates/editor-backend/src/remote.rs:340  MAGIC_NUMBER  100
  crates/editor-backend/src/remote.rs:342  MAGIC_NUMBER  1001
  crates/editor-backend/src/remote.rs:350  VIOLATION  logic + calls  in poll_client_frames
  crates/editor-backend/src/remote.rs:366  VIOLATION  logic + calls  in poll_one_frame
  crates/editor-backend/src/remote.rs:390  ERROR_HANDLING  unwrap/panic/todo  in ws_read_header
  crates/editor-backend/src/remote.rs:416  MAGIC_NUMBER  15
  crates/editor-backend/src/remote.rs:416  MAGIC_NUMBER  128
  crates/editor-backend/src/remote.rs:416  MAGIC_NUMBER  127
  crates/editor-backend/src/remote.rs:419  VIOLATION  logic + calls  in ws_decode_len
  crates/editor-backend/src/remote.rs:427  MAGIC_NUMBER  8
  crates/editor-backend/src/remote.rs:430  MAGIC_NUMBER  1048576
  crates/editor-backend/src/remote.rs:444  MAGIC_NUMBER  4
  crates/editor-backend/src/remote.rs:473  MAGIC_NUMBER  1000
  crates/editor-backend/src/remote.rs:476  MAGIC_NUMBER  136
  crates/editor-backend/src/remote.rs:483  MAGIC_NUMBER  138
  crates/editor-backend/src/remote.rs:493  UNSAFE  1 blocks  in ws_set_read_timeout
  crates/editor-backend/src/remote.rs:500  MAGIC_NUMBER  256
  crates/editor-backend/src/remote.rs:500  MAGIC_NUMBER  4
  crates/editor-backend/src/remote.rs:502  MAGIC_NUMBER  3
  crates/editor-backend/src/remote.rs:502  MAGIC_NUMBER  512
  crates/editor-backend/src/remote.rs:535  MAGIC_NUMBER  129
  crates/editor-backend/src/remote.rs:539  MAGIC_NUMBER  137
  crates/editor-backend/src/remote.rs:543  MAGIC_NUMBER  136
  crates/editor-backend/src/remote.rs:552  MAGIC_NUMBER  10
  crates/editor-backend/src/remote.rs:554  MAGIC_NUMBER  125
  crates/editor-backend/src/remote.rs:557  MAGIC_NUMBER  126
  crates/editor-backend/src/remote.rs:560  MAGIC_NUMBER  127
  crates/editor-backend/src/remote.rs:574  VIOLATION  logic + calls  in sha1_digest
  crates/editor-backend/src/remote.rs:576  MAGIC_NUMBER  8
  crates/editor-backend/src/remote.rs:577  MAGIC_NUMBER  128
  crates/editor-backend/src/remote.rs:578  MAGIC_NUMBER  64
  crates/editor-backend/src/remote.rs:578  MAGIC_NUMBER  56
  crates/editor-backend/src/remote.rs:584  MAGIC_NUMBER  1732584193
  crates/editor-backend/src/remote.rs:585  MAGIC_NUMBER  4023233417
  crates/editor-backend/src/remote.rs:586  MAGIC_NUMBER  2562383102
  crates/editor-backend/src/remote.rs:587  MAGIC_NUMBER  271733878
  crates/editor-backend/src/remote.rs:588  MAGIC_NUMBER  3285377520
  crates/editor-backend/src/remote.rs:590  MAGIC_NUMBER  64
  crates/editor-backend/src/remote.rs:591  MAGIC_NUMBER  80
  crates/editor-backend/src/remote.rs:593  MAGIC_NUMBER  4
  crates/editor-backend/src/remote.rs:601  MAGIC_NUMBER  16
  crates/editor-backend/src/remote.rs:601  MAGIC_NUMBER  80
  crates/editor-backend/src/remote.rs:610  MAGIC_NUMBER  19
  crates/editor-backend/src/remote.rs:610  MAGIC_NUMBER  1518500249
  crates/editor-backend/src/remote.rs:611  MAGIC_NUMBER  20
  crates/editor-backend/src/remote.rs:611  MAGIC_NUMBER  39
  crates/editor-backend/src/remote.rs:611  MAGIC_NUMBER  1859775393
  crates/editor-backend/src/remote.rs:612  MAGIC_NUMBER  40
  crates/editor-backend/src/remote.rs:612  MAGIC_NUMBER  59
  crates/editor-backend/src/remote.rs:612  MAGIC_NUMBER  2400959708
  crates/editor-backend/src/remote.rs:613  MAGIC_NUMBER  3395469782
  crates/editor-backend/src/remote.rs:616  MAGIC_NUMBER  5
  crates/editor-backend/src/remote.rs:623  MAGIC_NUMBER  30
  crates/editor-backend/src/remote.rs:634  MAGIC_NUMBER  20
  crates/editor-backend/src/remote.rs:643  MAGIC_NUMBER  3
  crates/editor-backend/src/remote.rs:643  MAGIC_NUMBER  4
  crates/editor-backend/src/remote.rs:661  MAGIC_NUMBER  3
  crates/editor-backend/src/remote.rs:762  ERROR_HANDLING  unwrap/panic/todo  in route_request
  crates/editor-backend/src/remote.rs:762  SRP_PARAMS  6 params  in route_request
  crates/editor-backend/src/remote.rs:803  MAGIC_NUMBER  400
  crates/editor-backend/src/remote.rs:847  BOILERPLATE  BP-009 Struct update boilerplate  in post_command
  crates/editor-backend/src/remote.rs:1005  ERROR_HANDLING  unwrap/panic/todo  in content_type
  crates/editor-backend/tests/http_integration.rs:24  DUPLICATE  similar  in http_get
  crates/editor-backend/tests/http_integration.rs:36  FRAGMENT  5 stmts
  crates/editor-backend/tests/http_integration.rs:53  DUPLICATE  similar  in http_post
  crates/editor-backend/tests/http_integration.rs:65  FRAGMENT  5 stmts
  crates/editor-backend/tests/http_integration.rs:212  FRAGMENT  4 stmts
  crates/editor-backend/tests/http_integration.rs:265  FRAGMENT  4 stmts
  crates/macros/src/auto_pipeline.rs:12  ERROR_HANDLING  unwrap/panic/todo  in derive
  crates/macros/src/auto_pipeline.rs:12  TQ_UNTESTED  derive  in derive
  crates/macros/src/for_each_entity.rs:1  SRP_MODULE  186 lines
  crates/macros/src/for_each_entity.rs:83  TQ_UNTESTED  for_each_entity  in for_each_entity
  crates/macros/src/for_each_entity.rs:95  TQ_UNTESTED  lane_guards  in lane_guards
  crates/macros/src/for_each_entity.rs:134  TQ_UNTESTED  expand_single_lane  in expand_single_lane
  crates/macros/src/for_each_entity.rs:168  TQ_UNTESTED  expand_multi_lane  in expand_multi_lane
  crates/macros/src/gpu_pipeline.rs:1  SRP_MODULE  515 lines
  crates/macros/src/gpu_pipeline.rs:56  TQ_UNTESTED  is_punct  in is_punct
  crates/macros/src/gpu_pipeline.rs:60  TQ_UNTESTED  parse_u32  in parse_u32
  crates/macros/src/gpu_pipeline.rs:73  VIOLATION  logic + calls  in parse_binding_type
  crates/macros/src/gpu_pipeline.rs:73  TQ_UNTESTED  parse_binding_type  in parse_binding_type
  crates/macros/src/gpu_pipeline.rs:92  MAGIC_NUMBER  4
  crates/macros/src/gpu_pipeline.rs:128  VIOLATION  logic + calls  in parse_binding_group
  crates/macros/src/gpu_pipeline.rs:128  ERROR_HANDLING  unwrap/panic/todo  in parse_binding_group
  crates/macros/src/gpu_pipeline.rs:128  TQ_UNTESTED  parse_binding_group  in parse_binding_group
  crates/macros/src/gpu_pipeline.rs:129  FRAGMENT  3 stmts
  crates/macros/src/gpu_pipeline.rs:139  MAGIC_NUMBER  3
  crates/macros/src/gpu_pipeline.rs:160  TQ_UNTESTED  parse_access_mode  in parse_access_mode
  crates/macros/src/gpu_pipeline.rs:161  MAGIC_NUMBER  3
  crates/macros/src/gpu_pipeline.rs:170  MAGIC_NUMBER  4
  crates/macros/src/gpu_pipeline.rs:202  TQ_UNTESTED  parse_builtin_pair  in parse_builtin_pair
  crates/macros/src/gpu_pipeline.rs:225  TQ_UNTESTED  parse_builtin_group  in parse_builtin_group
  crates/macros/src/gpu_pipeline.rs:244  TQ_UNTESTED  parse_config  in parse_config
  crates/macros/src/gpu_pipeline.rs:250  MAGIC_NUMBER  64
  crates/macros/src/gpu_pipeline.rs:267  TQ_UNTESTED  split_top_level  in split_top_level
  crates/macros/src/gpu_pipeline.rs:284  TQ_UNTESTED  apply_option  in apply_option
  crates/macros/src/gpu_pipeline.rs:335  TQ_UNTESTED  parse_workgroup_size  in parse_workgroup_size
  crates/macros/src/gpu_pipeline.rs:336  MAGIC_NUMBER  3
  crates/macros/src/gpu_pipeline.rs:348  TQ_UNTESTED  option_group  in option_group
  crates/macros/src/gpu_pipeline.rs:351  BOILERPLATE  BP-010 Format string repetition
  crates/macros/src/gpu_pipeline.rs:362  TQ_UNTESTED  parse_binding_option  in parse_binding_option
  crates/macros/src/gpu_pipeline.rs:373  TQ_UNTESTED  builtin_params  in builtin_params
  crates/macros/src/gpu_pipeline.rs:379  TQ_UNTESTED  parse_texture_sampler_option  in parse_texture_sampler_option
  crates/macros/src/gpu_pipeline.rs:390  TQ_UNTESTED  parse_stage_entry  in parse_stage_entry
  crates/macros/src/gpu_pipeline.rs:403  TQ_UNTESTED  parse_texture_sampler_group  in parse_texture_sampler_group
  crates/macros/src/gpu_pipeline.rs:408  FRAGMENT  3 stmts
  crates/macros/src/gpu_pipeline.rs:418  MAGIC_NUMBER  3
  crates/macros/src/gpu_pipeline.rs:472  LONG_FN  105 lines  in gpu_pipeline
  crates/macros/src/gpu_pipeline.rs:472  TQ_UNTESTED  gpu_pipeline  in gpu_pipeline
  crates/macros/src/gpu_pipeline.rs:579  TQ_UNTESTED  legacy_gpu_pipeline  in legacy_gpu_pipeline
  crates/macros/src/kernel.rs:153  LONG_FN  89 lines  in kernel
  crates/macros/src/lib.rs:41  DEAD_CODE  derive_auto_pipeline  in derive_auto_pipeline
  crates/macros/src/lib.rs:50  DEAD_CODE  derive_pack  in derive_pack
  crates/macros/src/lib.rs:61  DEAD_CODE  derive_wgsl_struct  in derive_wgsl_struct
  crates/macros/src/lib.rs:71  TQ_UNTESTED  for_each_entity  in for_each_entity
  crates/macros/src/lib.rs:80  DEAD_CODE  smart_pipeline  in smart_pipeline
  crates/macros/src/lib.rs:88  DEAD_CODE  derive_pipeline_config  in derive_pipeline_config
  crates/macros/src/lib.rs:98  TQ_UNTESTED  gpu_pipeline  in gpu_pipeline
  crates/macros/src/lib.rs:119  DEAD_CODE  derive_register_component  in derive_register_component
  crates/macros/src/pack.rs:37  TQ_UNTESTED  extract_field_info  in extract_field_info
  crates/macros/src/pack.rs:56  TQ_UNTESTED  extract_lane_type  in extract_lane_type
  crates/macros/src/pack.rs:73  TQ_UNTESTED  generate_lanes  in generate_lanes
  crates/macros/src/pack.rs:87  TQ_UNTESTED  extract_pack_info  in extract_pack_info
  crates/macros/src/pack.rs:127  TQ_UNTESTED  derive  in derive
  crates/macros/src/pack.rs:196  TQ_UNTESTED  generate_wrapper_defs  in generate_wrapper_defs
  crates/macros/src/pack.rs:211  TQ_UNTESTED  generate_pack_register  in generate_pack_register
  crates/macros/src/pack.rs:220  TQ_UNTESTED  generate_pack_insert  in generate_pack_insert
  crates/macros/src/pack.rs:232  TQ_UNTESTED  generate_pack_get  in generate_pack_get
  crates/macros/src/pack.rs:253  TQ_UNTESTED  generate_pack_get_mut  in generate_pack_get_mut
  crates/macros/src/pack.rs:282  TQ_UNTESTED  generate_for_each_packed  in generate_for_each_packed
  crates/macros/src/pack.rs:319  TQ_UNTESTED  generate_pack_mut_struct  in generate_pack_mut_struct
  crates/macros/src/pipeline_config.rs:1  SRP_MODULE  589 lines
  crates/macros/src/pipeline_config.rs:56  BOILERPLATE  BP-008 Clone-heavy conversion  in TypeAnalyzer::new
  crates/macros/src/pipeline_config.rs:70  VIOLATION  logic + calls  in TypeAnalyzer::visit_type
  crates/macros/src/pipeline_config.rs:70  TQ_UNTESTED  visit_type  in visit_type
  crates/macros/src/pipeline_config.rs:102  TQ_UNTESTED  analyze_type_get_size  in analyze_type_get_size
  crates/macros/src/pipeline_config.rs:107  MAGIC_NUMBER  64
  crates/macros/src/pipeline_config.rs:111  VIOLATION  logic + calls  in TypeAnalyzer::type_to_string
  crates/macros/src/pipeline_config.rs:111  TQ_UNTESTED  type_to_string  in type_to_string
  crates/macros/src/pipeline_config.rs:137  SRP_STRUCTURAL  SLM  in TypeAnalyzer::is_heap_type
  crates/macros/src/pipeline_config.rs:137  TQ_UNTESTED  is_heap_type  in is_heap_type
  crates/macros/src/pipeline_config.rs:158  SRP_STRUCTURAL  SLM  in TypeAnalyzer::is_gpu_type
  crates/macros/src/pipeline_config.rs:158  TQ_UNTESTED  is_gpu_type  in is_gpu_type
  crates/macros/src/pipeline_config.rs:194  SRP_STRUCTURAL  SLM  in TypeAnalyzer::is_primitive
  crates/macros/src/pipeline_config.rs:194  TQ_UNTESTED  is_primitive  in is_primitive
  crates/macros/src/pipeline_config.rs:217  TQ_UNTESTED  estimate_type_size  in estimate_type_size
  crates/macros/src/pipeline_config.rs:219  MAGIC_NUMBER  64
  crates/macros/src/pipeline_config.rs:225  MAGIC_NUMBER  16
  crates/macros/src/pipeline_config.rs:225  MAGIC_NUMBER  64
  crates/macros/src/pipeline_config.rs:228  VIOLATION  logic + calls  in TypeAnalyzer::analyze_type
  crates/macros/src/pipeline_config.rs:228  TQ_UNTESTED  analyze_type  in analyze_type
  crates/macros/src/pipeline_config.rs:269  VIOLATION  logic + calls  in TypeAnalyzer::visit_data_struct
  crates/macros/src/pipeline_config.rs:387  TQ_UNTESTED  fixed_type_size  in fixed_type_size
  crates/macros/src/pipeline_config.rs:392  TQ_UNTESTED  scalar_type_size  in scalar_type_size
  crates/macros/src/pipeline_config.rs:394  MAGIC_NUMBER  4
  crates/macros/src/pipeline_config.rs:395  MAGIC_NUMBER  8
  crates/macros/src/pipeline_config.rs:403  TQ_UNTESTED  composite_type_size  in composite_type_size
  crates/macros/src/pipeline_config.rs:405  MAGIC_NUMBER  8
  crates/macros/src/pipeline_config.rs:406  MAGIC_NUMBER  12
  crates/macros/src/pipeline_config.rs:407  MAGIC_NUMBER  16
  crates/macros/src/pipeline_config.rs:408  MAGIC_NUMBER  64
  crates/macros/src/pipeline_config.rs:409  MAGIC_NUMBER  24
  crates/macros/src/pipeline_config.rs:410  MAGIC_NUMBER  8
  crates/macros/src/pipeline_config.rs:411  MAGIC_NUMBER  48
  crates/macros/src/pipeline_config.rs:412  MAGIC_NUMBER  8
  crates/macros/src/pipeline_config.rs:413  MAGIC_NUMBER  16
  crates/macros/src/pipeline_config.rs:491  COGNITIVE  complexity 22  in compute_threshold
  crates/macros/src/pipeline_config.rs:495  MAGIC_NUMBER  10000
  crates/macros/src/pipeline_config.rs:497  MAGIC_NUMBER  256
  crates/macros/src/pipeline_config.rs:498  MAGIC_NUMBER  10
  crates/macros/src/pipeline_config.rs:499  MAGIC_NUMBER  128
  crates/macros/src/pipeline_config.rs:500  MAGIC_NUMBER  5
  crates/macros/src/pipeline_config.rs:501  MAGIC_NUMBER  64
  crates/macros/src/pipeline_config.rs:509  FRAGMENT  3 stmts
  crates/macros/src/pipeline_config.rs:513  MAGIC_NUMBER  10
  crates/macros/src/pipeline_config.rs:515  MAGIC_NUMBER  5
  crates/macros/src/pipeline_config.rs:516  MAGIC_NUMBER  10
  crates/macros/src/pipeline_config.rs:518  MAGIC_NUMBER  3
  crates/macros/src/pipeline_config.rs:521  MAGIC_NUMBER  5
  crates/macros/src/pipeline_config.rs:524  MAGIC_NUMBER  5
  crates/macros/src/pipeline_config.rs:537  MAGIC_NUMBER  5
  crates/macros/src/pipeline_config.rs:538  MAGIC_NUMBER  5
  crates/macros/src/pipeline_config.rs:539  MAGIC_NUMBER  3
  crates/macros/src/pipeline_config.rs:552  MAGIC_NUMBER  1000000
  crates/macros/src/pipeline_config.rs:606  FRAGMENT  3 stmts
  crates/macros/src/pipeline_config.rs:617  MAGIC_NUMBER  256
  crates/macros/src/pipeline_config.rs:626  MAGIC_NUMBER  256
  crates/macros/src/pipeline_config.rs:627  MAGIC_NUMBER  5
  crates/macros/src/pipeline_config.rs:630  MAGIC_NUMBER  5
  crates/macros/src/pipeline_config.rs:644  VIOLATION  logic + calls  in derive
  crates/macros/src/pipeline_config.rs:644  TQ_UNTESTED  derive  in derive
  crates/macros/src/pipeline_config.rs:723  DUPLICATE  exact  in where_clause_can_restore_send_sync
  crates/macros/src/pipeline_config.rs:738  DUPLICATE  exact  in generic_where_clause_is_detected
  crates/macros/src/register_component.rs:17  TQ_UNTESTED  component_name_from_attrs  in component_name_from_attrs
  crates/macros/src/register_component.rs:44  TQ_UNTESTED  derive  in derive
  crates/macros/src/smart_pipeline.rs:158  TQ_UNTESTED  is_store_receiver  in is_store_receiver
  crates/macros/src/smart_pipeline.rs:169  TQ_UNTESTED  lane_binding_mutability  in lane_binding_mutability
  crates/macros/src/smart_pipeline.rs:231  VIOLATION  logic + calls  in collect_pat_idents
  crates/macros/src/smart_pipeline.rs:444  VIOLATION  logic + calls  in LoopRewriter<'_>::plan
  crates/macros/src/smart_pipeline.rs:444  ERROR_HANDLING  unwrap/panic/todo  in LoopRewriter<'_>::plan
  crates/macros/src/smart_pipeline.rs:553  ERROR_HANDLING  unwrap/panic/todo  in attribute
  crates/macros/src/smart_pipeline.rs:553  TQ_UNTESTED  attribute  in attribute
  crates/macros/src/static_profile.rs:27  MAGIC_NUMBER  0.05
  crates/macros/src/static_profile.rs:33  WILDCARD  syn::BinOp::*
  crates/macros/src/wgsl.rs:1  SRP_MODULE  707 lines
  crates/macros/src/wgsl.rs:14  VIOLATION  logic + calls  in WgslGen::expr
  crates/macros/src/wgsl.rs:15  WILDCARD  syn::Expr::*
  crates/macros/src/wgsl.rs:69  WILDCARD  syn::UnOp::*
  crates/macros/src/wgsl.rs:94  WILDCARD  syn::Lit::*
  crates/macros/src/wgsl.rs:160  MAGIC_NUMBER  3
  crates/macros/src/wgsl.rs:161  MAGIC_NUMBER  4
  crates/macros/src/wgsl.rs:186  WILDCARD  syn::BinOp::*
  crates/macros/src/wgsl.rs:213  WILDCARD  syn::BinOp::*
  crates/macros/src/wgsl.rs:272  BOILERPLATE  BP-010 Format string repetition
  crates/macros/src/wgsl.rs:545  VIOLATION  logic + calls  in if_expr
  crates/macros/src/wgsl.rs:750  TQ_UNTESTED  wgsl_main_body  in wgsl_main_body
  crates/macros/src/wgsl_struct.rs:35  TQ_UNTESTED  wgsl_field_type  in wgsl_field_type
  crates/macros/src/wgsl_struct.rs:40  MAGIC_NUMBER  4
  crates/macros/src/wgsl_struct.rs:40  MAGIC_NUMBER  4
  crates/macros/src/wgsl_struct.rs:41  MAGIC_NUMBER  4
  crates/macros/src/wgsl_struct.rs:41  MAGIC_NUMBER  4
  crates/macros/src/wgsl_struct.rs:42  MAGIC_NUMBER  4
  crates/macros/src/wgsl_struct.rs:42  MAGIC_NUMBER  4
  crates/macros/src/wgsl_struct.rs:43  MAGIC_NUMBER  4
  crates/macros/src/wgsl_struct.rs:43  MAGIC_NUMBER  4
  crates/macros/src/wgsl_struct.rs:68  MAGIC_NUMBER  4
  crates/macros/src/wgsl_struct.rs:81  MAGIC_NUMBER  4
  crates/macros/src/wgsl_struct.rs:82  MAGIC_NUMBER  4
  crates/macros/src/wgsl_struct.rs:83  MAGIC_NUMBER  4
  crates/macros/src/wgsl_struct.rs:84  MAGIC_NUMBER  4
  crates/macros/src/wgsl_struct.rs:96  MAGIC_NUMBER  4
  crates/macros/src/wgsl_struct.rs:107  LONG_FN  90 lines  in derive
  crates/macros/src/wgsl_struct.rs:107  ERROR_HANDLING  unwrap/panic/todo  in derive
  crates/macros/src/wgsl_struct.rs:107  TQ_UNTESTED  derive  in derive
  crates/macros/tests/wgsl_struct.rs:53  TQ_NO_SUT  layout_matches_wgsl_rules  in layout_matches_wgsl_rules
  crates/materialx/benches/parse_bench.rs:19  TQ_UNTESTED  large_document  in large_document
  crates/materialx/benches/parse_bench.rs:20  MAGIC_NUMBER  128
  crates/materialx/benches/parse_bench.rs:39  TQ_UNTESTED  math_chain  in math_chain
  crates/materialx/benches/parse_bench.rs:40  MAGIC_NUMBER  200
  crates/materialx/benches/parse_bench.rs:71  ERROR_HANDLING  unwrap/panic/todo  in bench_parse
  crates/materialx/benches/parse_bench.rs:71  DEAD_CODE  bench_parse  in bench_parse
  crates/materialx/benches/parse_bench.rs:73  MAGIC_NUMBER  1000
  crates/materialx/benches/parse_bench.rs:84  ERROR_HANDLING  unwrap/panic/todo  in bench_convert
  crates/materialx/benches/parse_bench.rs:84  DEAD_CODE  bench_convert  in bench_convert
  crates/materialx/benches/parse_bench.rs:86  MAGIC_NUMBER  100
  crates/materialx/src/graph.rs:1  SRP_MODULE  872 lines
  crates/materialx/src/graph.rs:191  SRP_STRUCTURAL  SLM  in MaterialXConverter::extract_base
  crates/materialx/src/graph.rs:209  SRP_STRUCTURAL  SLM  in MaterialXConverter::extract_specular
  crates/materialx/src/graph.rs:232  SRP_STRUCTURAL  SLM  in MaterialXConverter::extract_transmission
  crates/materialx/src/graph.rs:264  SRP_STRUCTURAL  SLM  in MaterialXConverter::extract_subsurface
  crates/materialx/src/graph.rs:289  SRP_STRUCTURAL  SLM  in MaterialXConverter::extract_fuzz
  crates/materialx/src/graph.rs:302  SRP_STRUCTURAL  SLM  in MaterialXConverter::extract_coat
  crates/materialx/src/graph.rs:324  SRP_STRUCTURAL  SLM  in MaterialXConverter::extract_thin_film
  crates/materialx/src/graph.rs:341  SRP_STRUCTURAL  SLM  in MaterialXConverter::extract_emission
  crates/materialx/src/graph.rs:355  SRP_STRUCTURAL  SLM  in MaterialXConverter::extract_geometry
  crates/materialx/src/graph.rs:680  FRAGMENT  3 stmts
  crates/materialx/src/graph.rs:680  FRAGMENT  3 stmts
  crates/materialx/src/graph.rs:680  FRAGMENT  3 stmts
  crates/materialx/src/graph.rs:680  FRAGMENT  3 stmts
  crates/materialx/src/graph.rs:680  FRAGMENT  3 stmts
  crates/materialx/src/graph.rs:758  FRAGMENT  3 stmts
  crates/materialx/src/graph.rs:758  FRAGMENT  3 stmts
  crates/materialx/src/graph.rs:758  FRAGMENT  3 stmts
  crates/materialx/src/graph.rs:758  FRAGMENT  3 stmts
  crates/materialx/src/graph.rs:761  FRAGMENT  3 stmts
  crates/materialx/src/graph.rs:761  FRAGMENT  3 stmts
  crates/materialx/src/graph.rs:761  FRAGMENT  3 stmts
  crates/materialx/src/graph.rs:761  FRAGMENT  3 stmts
  crates/materialx/src/graph.rs:808  FRAGMENT  3 stmts
  crates/materialx/src/graph.rs:808  FRAGMENT  3 stmts
  crates/materialx/src/graph.rs:808  FRAGMENT  3 stmts
  crates/materialx/src/graph.rs:808  FRAGMENT  3 stmts
  crates/materialx/src/graph.rs:808  FRAGMENT  3 stmts
  crates/materialx/src/graph.rs:828  FRAGMENT  3 stmts
  crates/materialx/src/graph.rs:828  FRAGMENT  3 stmts
  crates/materialx/src/graph.rs:828  FRAGMENT  3 stmts
  crates/materialx/src/graph.rs:828  FRAGMENT  3 stmts
  crates/materialx/src/graph.rs:831  FRAGMENT  3 stmts
  crates/materialx/src/graph.rs:831  FRAGMENT  3 stmts
  crates/materialx/src/graph.rs:831  FRAGMENT  3 stmts
  crates/materialx/src/graph.rs:831  FRAGMENT  3 stmts
  crates/materialx/src/graph.rs:904  MAGIC_NUMBER  3
  crates/materialx/src/graph.rs:905  MAGIC_NUMBER  4
  crates/materialx/src/graph.rs:907  MAGIC_NUMBER  3
  crates/materialx/src/graph.rs:908  MAGIC_NUMBER  4
  crates/materialx/src/graph.rs:928  MAGIC_NUMBER  3
  crates/materialx/src/graph.rs:933  MAGIC_NUMBER  3
  crates/materialx/src/graph.rs:934  MAGIC_NUMBER  4
  crates/materialx/src/graph.rs:936  MAGIC_NUMBER  3
  crates/materialx/src/graph.rs:951  MAGIC_NUMBER  4
  crates/materialx/src/graph.rs:1271  FRAGMENT  3 stmts
  crates/materialx/src/graph.rs:1312  FRAGMENT  3 stmts
  crates/materialx/src/lib.rs:29  DEAD_CODE  load_materialx  in load_materialx
  crates/materialx/src/parser.rs:1  SRP_MODULE  321 lines
  crates/materialx/src/parser.rs:146  SRP_STRUCTURAL  SLM  in MaterialXParser::parse
  crates/materialx/src/parser.rs:263  DUPLICATE  similar  in NodeDefInput::from_bytes_start
  crates/materialx/src/parser.rs:323  DUPLICATE  similar  in Input::from_bytes_start
  crates/physics/benches/solver_bench.rs:1  SRP_MODULE  183 lines
  crates/physics/benches/solver_bench.rs:12  VIOLATION  logic + calls  in setup_islands_grid
  crates/physics/benches/solver_bench.rs:12  DUPLICATE  exact  in setup_islands_grid
  crates/physics/benches/solver_bench.rs:12  TQ_UNTESTED  setup_islands_grid  in setup_islands_grid
  crates/physics/benches/solver_bench.rs:13  MAGIC_NUMBER  -9.81
  crates/physics/benches/solver_bench.rs:15  MAGIC_NUMBER  -0.5
  crates/physics/benches/solver_bench.rs:16  MAGIC_NUMBER  100.0
  crates/physics/benches/solver_bench.rs:16  MAGIC_NUMBER  0.5
  crates/physics/benches/solver_bench.rs:16  MAGIC_NUMBER  100.0
  crates/physics/benches/solver_bench.rs:19  MAGIC_NUMBER  0.4
  crates/physics/benches/solver_bench.rs:19  FRAGMENT  4 stmts
  crates/physics/benches/solver_bench.rs:20  MAGIC_NUMBER  2.0
  crates/physics/benches/solver_bench.rs:23  MAGIC_NUMBER  2.0
  crates/physics/benches/solver_bench.rs:24  MAGIC_NUMBER  2.0
  crates/physics/benches/solver_bench.rs:25  MAGIC_NUMBER  4
  crates/physics/benches/solver_bench.rs:27  MAGIC_NUMBER  0.4
  crates/physics/benches/solver_bench.rs:27  MAGIC_NUMBER  0.81
  crates/physics/benches/solver_bench.rs:39  VIOLATION  logic + calls  in setup_big_stack
  crates/physics/benches/solver_bench.rs:39  DUPLICATE  exact  in setup_big_stack
  crates/physics/benches/solver_bench.rs:39  TQ_UNTESTED  setup_big_stack  in setup_big_stack
  crates/physics/benches/solver_bench.rs:40  MAGIC_NUMBER  -9.81
  crates/physics/benches/solver_bench.rs:40  FRAGMENT  4 stmts
  crates/physics/benches/solver_bench.rs:40  FRAGMENT  4 stmts
  crates/physics/benches/solver_bench.rs:42  MAGIC_NUMBER  -0.5
  crates/physics/benches/solver_bench.rs:43  MAGIC_NUMBER  10.0
  crates/physics/benches/solver_bench.rs:43  MAGIC_NUMBER  0.5
  crates/physics/benches/solver_bench.rs:43  MAGIC_NUMBER  10.0
  crates/physics/benches/solver_bench.rs:48  MAGIC_NUMBER  0.4
  crates/physics/benches/solver_bench.rs:48  MAGIC_NUMBER  0.81
  crates/physics/benches/solver_bench.rs:49  MAGIC_NUMBER  0.4
  crates/physics/benches/solver_bench.rs:61  VIOLATION  logic + calls  in setup_body_grid
  crates/physics/benches/solver_bench.rs:61  DUPLICATE  exact  in setup_body_grid
  crates/physics/benches/solver_bench.rs:62  MAGIC_NUMBER  -9.81
  crates/physics/benches/solver_bench.rs:64  MAGIC_NUMBER  2.0
  crates/physics/benches/solver_bench.rs:65  MAGIC_NUMBER  5.0
  crates/physics/benches/solver_bench.rs:65  FRAGMENT  5 stmts
  crates/physics/benches/solver_bench.rs:66  MAGIC_NUMBER  2.0
  crates/physics/benches/solver_bench.rs:69  MAGIC_NUMBER  2.0
  crates/physics/benches/solver_bench.rs:69  MAGIC_NUMBER  0.5
  crates/physics/benches/solver_bench.rs:69  MAGIC_NUMBER  2.0
  crates/physics/benches/solver_bench.rs:70  MAGIC_NUMBER  2.0
  crates/physics/benches/solver_bench.rs:70  MAGIC_NUMBER  0.5
  crates/physics/benches/solver_bench.rs:70  MAGIC_NUMBER  2.0
  crates/physics/benches/solver_bench.rs:72  MAGIC_NUMBER  -0.5

@github-actions

github-actions Bot commented Sep 7, 2026 •

Copy link
Copy Markdown
Full quality.log (run 34149520691) — part 2/6
  crates/physics/benches/solver_bench.rs:73  MAGIC_NUMBER  0.5
  crates/physics/benches/solver_bench.rs:81  MAGIC_NUMBER  2.0
  crates/physics/benches/solver_bench.rs:81  MAGIC_NUMBER  2.0
  crates/physics/benches/solver_bench.rs:82  MAGIC_NUMBER  2.0
  crates/physics/benches/solver_bench.rs:82  MAGIC_NUMBER  2.0
  crates/physics/benches/solver_bench.rs:84  MAGIC_NUMBER  0.4
  crates/physics/benches/solver_bench.rs:85  MAGIC_NUMBER  0.4
  crates/physics/benches/solver_bench.rs:92  DEAD_CODE  bench_step  in bench_step
  crates/physics/benches/solver_bench.rs:119  VIOLATION  logic + calls  in settled_body_grid
  crates/physics/benches/solver_bench.rs:119  TQ_UNTESTED  settled_body_grid  in settled_body_grid
  crates/physics/benches/solver_bench.rs:130  MAGIC_NUMBER  30
  crates/physics/benches/solver_bench.rs:131  MAGIC_NUMBER  60.0
  crates/physics/benches/solver_bench.rs:136  TQ_UNTESTED  print_broadphase_stats  in print_broadphase_stats
  crates/physics/benches/solver_bench.rs:162  VIOLATION  logic + calls  in bench_body_scaling
  crates/physics/benches/solver_bench.rs:162  DEAD_CODE  bench_body_scaling  in bench_body_scaling
  crates/physics/benches/solver_bench.rs:164  MAGIC_NUMBER  10
  crates/physics/benches/solver_bench.rs:166  MAGIC_NUMBER  6
  crates/physics/benches/solver_bench.rs:199  MAGIC_NUMBER  1000
  crates/physics/benches/solver_bench.rs:199  MAGIC_NUMBER  10000
  crates/physics/benches/solver_bench.rs:205  MAGIC_NUMBER  60.0
  crates/physics/examples/perf_probe.rs:8  VIOLATION  logic + calls  in setup_islands_grid
  crates/physics/examples/perf_probe.rs:8  DUPLICATE  exact  in setup_islands_grid
  crates/physics/examples/perf_probe.rs:8  TQ_UNTESTED  setup_islands_grid  in setup_islands_grid
  crates/physics/examples/perf_probe.rs:9  MAGIC_NUMBER  -9.81
  crates/physics/examples/perf_probe.rs:11  MAGIC_NUMBER  -0.5
  crates/physics/examples/perf_probe.rs:12  MAGIC_NUMBER  100.0
  crates/physics/examples/perf_probe.rs:12  MAGIC_NUMBER  0.5
  crates/physics/examples/perf_probe.rs:12  MAGIC_NUMBER  100.0
  crates/physics/examples/perf_probe.rs:15  MAGIC_NUMBER  0.4
  crates/physics/examples/perf_probe.rs:15  FRAGMENT  4 stmts
  crates/physics/examples/perf_probe.rs:16  MAGIC_NUMBER  2.0
  crates/physics/examples/perf_probe.rs:19  MAGIC_NUMBER  2.0
  crates/physics/examples/perf_probe.rs:20  MAGIC_NUMBER  2.0
  crates/physics/examples/perf_probe.rs:21  MAGIC_NUMBER  4
  crates/physics/examples/perf_probe.rs:23  MAGIC_NUMBER  0.4
  crates/physics/examples/perf_probe.rs:23  MAGIC_NUMBER  0.82
  crates/physics/examples/perf_probe.rs:33  VIOLATION  logic + calls  in setup_big_stack
  crates/physics/examples/perf_probe.rs:33  DUPLICATE  exact  in setup_big_stack
  crates/physics/examples/perf_probe.rs:33  TQ_UNTESTED  setup_big_stack  in setup_big_stack
  crates/physics/examples/perf_probe.rs:34  MAGIC_NUMBER  -9.81
  crates/physics/examples/perf_probe.rs:34  FRAGMENT  4 stmts
  crates/physics/examples/perf_probe.rs:34  FRAGMENT  4 stmts
  crates/physics/examples/perf_probe.rs:36  MAGIC_NUMBER  -0.5
  crates/physics/examples/perf_probe.rs:37  MAGIC_NUMBER  10.0
  crates/physics/examples/perf_probe.rs:37  MAGIC_NUMBER  0.5
  crates/physics/examples/perf_probe.rs:37  MAGIC_NUMBER  10.0
  crates/physics/examples/perf_probe.rs:42  MAGIC_NUMBER  0.4
  crates/physics/examples/perf_probe.rs:42  MAGIC_NUMBER  0.82
  crates/physics/examples/perf_probe.rs:43  MAGIC_NUMBER  0.4
  crates/physics/examples/perf_probe.rs:50  VIOLATION  logic + calls  in setup_many_islands
  crates/physics/examples/perf_probe.rs:50  TQ_UNTESTED  setup_many_islands  in setup_many_islands
  crates/physics/examples/perf_probe.rs:53  MAGIC_NUMBER  -9.81
  crates/physics/examples/perf_probe.rs:54  MAGIC_NUMBER  12.0
  crates/physics/examples/perf_probe.rs:56  MAGIC_NUMBER  32
  crates/physics/examples/perf_probe.rs:57  MAGIC_NUMBER  32
  crates/physics/examples/perf_probe.rs:58  MAGIC_NUMBER  4
  crates/physics/examples/perf_probe.rs:60  MAGIC_NUMBER  0.4
  crates/physics/examples/perf_probe.rs:60  MAGIC_NUMBER  0.82
  crates/physics/examples/perf_probe.rs:61  MAGIC_NUMBER  0.4
  crates/physics/examples/perf_probe.rs:69  VIOLATION  logic + calls  in setup_contact_cluster
  crates/physics/examples/perf_probe.rs:69  TQ_UNTESTED  setup_contact_cluster  in setup_contact_cluster
  crates/physics/examples/perf_probe.rs:72  MAGIC_NUMBER  -9.81
  crates/physics/examples/perf_probe.rs:74  MAGIC_NUMBER  0.95
  crates/physics/examples/perf_probe.rs:82  MAGIC_NUMBER  0.4
  crates/physics/examples/perf_probe.rs:89  VIOLATION  logic + calls  in setup_tall_stack
  crates/physics/examples/perf_probe.rs:89  DUPLICATE  exact  in setup_tall_stack
  crates/physics/examples/perf_probe.rs:89  TQ_UNTESTED  setup_tall_stack  in setup_tall_stack
  crates/physics/examples/perf_probe.rs:92  MAGIC_NUMBER  -9.81
  crates/physics/examples/perf_probe.rs:92  FRAGMENT  4 stmts
  crates/physics/examples/perf_probe.rs:92  FRAGMENT  4 stmts
  crates/physics/examples/perf_probe.rs:94  MAGIC_NUMBER  -0.5
  crates/physics/examples/perf_probe.rs:95  MAGIC_NUMBER  10.0
  crates/physics/examples/perf_probe.rs:95  MAGIC_NUMBER  0.5
  crates/physics/examples/perf_probe.rs:95  MAGIC_NUMBER  10.0
  crates/physics/examples/perf_probe.rs:100  MAGIC_NUMBER  0.4
  crates/physics/examples/perf_probe.rs:100  MAGIC_NUMBER  0.82
  crates/physics/examples/perf_probe.rs:101  MAGIC_NUMBER  0.4
  crates/physics/examples/perf_probe.rs:108  TQ_UNTESTED  setup_fast_drop  in setup_fast_drop
  crates/physics/examples/perf_probe.rs:111  MAGIC_NUMBER  -9.81
  crates/physics/examples/perf_probe.rs:111  FRAGMENT  3 stmts
  crates/physics/examples/perf_probe.rs:113  MAGIC_NUMBER  -0.5
  crates/physics/examples/perf_probe.rs:114  MAGIC_NUMBER  10.0
  crates/physics/examples/perf_probe.rs:114  MAGIC_NUMBER  0.5
  crates/physics/examples/perf_probe.rs:114  MAGIC_NUMBER  10.0
  crates/physics/examples/perf_probe.rs:117  MAGIC_NUMBER  8.0
  crates/physics/examples/perf_probe.rs:117  MAGIC_NUMBER  0.4
  crates/physics/examples/perf_probe.rs:118  MAGIC_NUMBER  -40.0
  crates/physics/examples/perf_probe.rs:130  MAGIC_NUMBER  0.4
  crates/physics/examples/perf_probe.rs:142  TQ_UNTESTED  time_steps  in time_steps
  crates/physics/examples/perf_probe.rs:144  MAGIC_NUMBER  60.0
  crates/physics/examples/perf_probe.rs:150  MAGIC_NUMBER  60.0
  crates/physics/examples/perf_probe.rs:160  MAGIC_NUMBER  1000.0
  crates/physics/examples/perf_probe.rs:179  TQ_UNTESTED  log_grid_sleep_summary  in log_grid_sleep_summary
  crates/physics/examples/perf_probe.rs:183  MAGIC_NUMBER  1025
  crates/physics/examples/perf_probe.rs:196  TQ_UNTESTED  log_awake_oscillation  in log_awake_oscillation
  crates/physics/examples/perf_probe.rs:197  MAGIC_NUMBER  30
  crates/physics/examples/perf_probe.rs:198  MAGIC_NUMBER  60.0
  crates/physics/examples/perf_probe.rs:201  MAGIC_NUMBER  1025
  crates/physics/examples/perf_probe.rs:209  MAGIC_NUMBER  5
  crates/physics/examples/perf_probe.rs:216  ERROR_HANDLING  unwrap/panic/todo  in log_stubborn_bodies
  crates/physics/examples/perf_probe.rs:216  TQ_UNTESTED  log_stubborn_bodies  in log_stubborn_bodies
  crates/physics/examples/perf_probe.rs:218  MAGIC_NUMBER  1025
  crates/physics/examples/perf_probe.rs:219  MAGIC_NUMBER  6
  crates/physics/examples/perf_probe.rs:236  TQ_UNTESTED  log_island_tracking  in log_island_tracking
  crates/physics/examples/perf_probe.rs:237  MAGIC_NUMBER  40
  crates/physics/examples/perf_probe.rs:238  MAGIC_NUMBER  60.0
  crates/physics/examples/perf_probe.rs:252  ERROR_HANDLING  unwrap/panic/todo  in log_stack_diagnostics
  crates/physics/examples/perf_probe.rs:252  TQ_UNTESTED  log_stack_diagnostics  in log_stack_diagnostics
  crates/physics/examples/perf_probe.rs:254  MAGIC_NUMBER  33
  crates/physics/examples/perf_probe.rs:262  MAGIC_NUMBER  12
  crates/physics/examples/perf_probe.rs:263  MAGIC_NUMBER  60.0
  crates/physics/examples/perf_probe.rs:265  MAGIC_NUMBER  33
  crates/physics/examples/perf_probe.rs:281  VIOLATION  logic + calls  in main
  crates/physics/examples/perf_probe.rs:282  MAGIC_NUMBER  16
  crates/physics/examples/perf_probe.rs:283  MAGIC_NUMBER  60
  crates/physics/examples/perf_probe.rs:290  MAGIC_NUMBER  32
  crates/physics/examples/perf_probe.rs:291  MAGIC_NUMBER  60
  crates/physics/examples/perf_probe.rs:291  MAGIC_NUMBER  300
  crates/physics/examples/perf_probe.rs:294  MAGIC_NUMBER  256
  crates/physics/examples/perf_probe.rs:295  MAGIC_NUMBER  60
  crates/physics/examples/perf_probe.rs:299  MAGIC_NUMBER  16
  crates/physics/examples/perf_probe.rs:300  MAGIC_NUMBER  12
  crates/physics/examples/perf_probe.rs:300  MAGIC_NUMBER  8
  crates/physics/examples/perf_probe.rs:300  MAGIC_NUMBER  4
  crates/physics/examples/perf_probe.rs:300  MAGIC_NUMBER  4
  crates/physics/examples/perf_probe.rs:300  MAGIC_NUMBER  8
  crates/physics/examples/perf_probe.rs:300  MAGIC_NUMBER  4
  crates/physics/examples/perf_probe.rs:300  MAGIC_NUMBER  4
  crates/physics/examples/perf_probe.rs:300  MAGIC_NUMBER  4
  crates/physics/examples/perf_probe.rs:300  MAGIC_NUMBER  4
  crates/physics/examples/perf_probe.rs:308  MAGIC_NUMBER  30
  crates/physics/examples/perf_probe.rs:312  MAGIC_NUMBER  2000
  crates/physics/examples/perf_probe.rs:313  MAGIC_NUMBER  30
  crates/physics/examples/perf_probe.rs:315  MAGIC_NUMBER  5000
  crates/physics/examples/perf_probe.rs:316  MAGIC_NUMBER  20
  crates/physics/examples/perf_probe.rs:322  MAGIC_NUMBER  256
  crates/physics/examples/perf_probe.rs:324  MAGIC_NUMBER  3
  crates/physics/examples/perf_probe.rs:325  MAGIC_NUMBER  -40.0
  crates/physics/examples/perf_probe.rs:331  MAGIC_NUMBER  60
  crates/physics/examples/perf_probe.rs:337  MAGIC_NUMBER  12
  crates/physics/examples/perf_probe.rs:337  MAGIC_NUMBER  4
  crates/physics/examples/perf_probe.rs:338  MAGIC_NUMBER  50
  crates/physics/examples/perf_probe.rs:340  MAGIC_NUMBER  120
  crates/physics/examples/perf_probe.rs:340  MAGIC_NUMBER  60
  crates/physics/examples/perf_probe.rs:341  MAGIC_NUMBER  51
  crates/physics/examples/perf_probe.rs:345  MAGIC_NUMBER  60
  crates/physics/examples/perf_probe.rs:345  MAGIC_NUMBER  30
  crates/physics/examples/probe_100k.rs:1  SRP_MODULE  235 lines
  crates/physics/examples/probe_100k.rs:23  VIOLATION  logic + calls  in setup_body_grid
  crates/physics/examples/probe_100k.rs:23  DUPLICATE  exact  in setup_body_grid
  crates/physics/examples/probe_100k.rs:24  MAGIC_NUMBER  -9.81
  crates/physics/examples/probe_100k.rs:26  MAGIC_NUMBER  2.0
  crates/physics/examples/probe_100k.rs:27  MAGIC_NUMBER  5.0
  crates/physics/examples/probe_100k.rs:27  FRAGMENT  5 stmts
  crates/physics/examples/probe_100k.rs:28  MAGIC_NUMBER  2.0
  crates/physics/examples/probe_100k.rs:31  MAGIC_NUMBER  2.0
  crates/physics/examples/probe_100k.rs:31  MAGIC_NUMBER  0.5
  crates/physics/examples/probe_100k.rs:31  MAGIC_NUMBER  2.0
  crates/physics/examples/probe_100k.rs:32  MAGIC_NUMBER  2.0
  crates/physics/examples/probe_100k.rs:32  MAGIC_NUMBER  0.5
  crates/physics/examples/probe_100k.rs:32  MAGIC_NUMBER  2.0
  crates/physics/examples/probe_100k.rs:34  MAGIC_NUMBER  -0.5
  crates/physics/examples/probe_100k.rs:35  MAGIC_NUMBER  0.5
  crates/physics/examples/probe_100k.rs:43  MAGIC_NUMBER  2.0
  crates/physics/examples/probe_100k.rs:43  MAGIC_NUMBER  2.0
  crates/physics/examples/probe_100k.rs:44  MAGIC_NUMBER  2.0
  crates/physics/examples/probe_100k.rs:44  MAGIC_NUMBER  2.0
  crates/physics/examples/probe_100k.rs:46  MAGIC_NUMBER  0.4
  crates/physics/examples/probe_100k.rs:47  MAGIC_NUMBER  0.4
  crates/physics/examples/probe_100k.rs:56  VIOLATION  logic + calls  in setup_giant_floor
  crates/physics/examples/probe_100k.rs:57  MAGIC_NUMBER  -9.81
  crates/physics/examples/probe_100k.rs:59  MAGIC_NUMBER  -0.5
  crates/physics/examples/probe_100k.rs:60  MAGIC_NUMBER  500.0
  crates/physics/examples/probe_100k.rs:67  MAGIC_NUMBER  2.0
  crates/physics/examples/probe_100k.rs:67  MAGIC_NUMBER  2.0
  crates/physics/examples/probe_100k.rs:68  MAGIC_NUMBER  2.0
  crates/physics/examples/probe_100k.rs:68  MAGIC_NUMBER  2.0
  crates/physics/examples/probe_100k.rs:69  MAGIC_NUMBER  6
  crates/physics/examples/probe_100k.rs:72  MAGIC_NUMBER  0.4
  crates/physics/examples/probe_100k.rs:80  VIOLATION  logic + calls  in setup_sparse
  crates/physics/examples/probe_100k.rs:81  MAGIC_NUMBER  -9.81
  crates/physics/examples/probe_100k.rs:83  MAGIC_NUMBER  20.0
  crates/physics/examples/probe_100k.rs:90  MAGIC_NUMBER  5.0
  crates/physics/examples/probe_100k.rs:91  MAGIC_NUMBER  0.4
  crates/physics/examples/probe_100k.rs:100  VIOLATION  logic + calls  in setup_islands
  crates/physics/examples/probe_100k.rs:101  MAGIC_NUMBER  -9.81
  crates/physics/examples/probe_100k.rs:102  MAGIC_NUMBER  10
  crates/physics/examples/probe_100k.rs:104  MAGIC_NUMBER  4
  crates/physics/examples/probe_100k.rs:109  MAGIC_NUMBER  4.0
  crates/physics/examples/probe_100k.rs:110  MAGIC_NUMBER  4.0
  crates/physics/examples/probe_100k.rs:116  MAGIC_NUMBER  0.5
  crates/physics/examples/probe_100k.rs:117  MAGIC_NUMBER  0.4
  crates/physics/examples/probe_100k.rs:126  VIOLATION  logic + calls  in setup_heterogeneous
  crates/physics/examples/probe_100k.rs:127  MAGIC_NUMBER  -9.81
  crates/physics/examples/probe_100k.rs:132  MAGIC_NUMBER  2.0
  crates/physics/examples/probe_100k.rs:132  MAGIC_NUMBER  2.0
  crates/physics/examples/probe_100k.rs:133  MAGIC_NUMBER  2.0
  crates/physics/examples/probe_100k.rs:133  MAGIC_NUMBER  2.0
  crates/physics/examples/probe_100k.rs:134  MAGIC_NUMBER  0.3
  crates/physics/examples/probe_100k.rs:134  MAGIC_NUMBER  7
  crates/physics/examples/probe_100k.rs:134  MAGIC_NUMBER  0.15
  crates/physics/examples/probe_100k.rs:148  TQ_UNTESTED  parse_value  in parse_value
  crates/physics/examples/probe_100k.rs:159  TQ_UNTESTED  print_usage  in print_usage
  crates/physics/examples/probe_100k.rs:174  VIOLATION  logic + calls  in run_probe
  crates/physics/examples/probe_100k.rs:174  ERROR_HANDLING  unwrap/panic/todo  in run_probe
  crates/physics/examples/probe_100k.rs:202  MAGIC_NUMBER  60.0
  crates/physics/examples/probe_100k.rs:240  ERROR_HANDLING  unwrap/panic/todo  in main
  crates/physics/examples/probe_100k.rs:244  MAGIC_NUMBER  10000
  crates/physics/examples/probe_100k.rs:245  MAGIC_NUMBER  20
  crates/physics/examples/probe_100k.rs:270  MAGIC_NUMBER  4.0
  crates/physics/src/body.rs:88  VIOLATION  logic + calls  in RigidBody::build
  crates/physics/src/body.rs:116  MAGIC_NUMBER  0.5
  crates/physics/src/body.rs:116  MAGIC_NUMBER  0.3
  crates/physics/src/body.rs:122  MAGIC_NUMBER  0.3
  crates/physics/src/body.rs:122  MAGIC_NUMBER  0.5
  crates/physics/src/body.rs:127  DEAD_CODE  testonly RigidBody::new_capsule  in RigidBody::new_capsule
  crates/physics/src/body.rs:131  MAGIC_NUMBER  0.4
  crates/physics/src/body.rs:132  MAGIC_NUMBER  0.4
  crates/physics/src/body.rs:145  DEAD_CODE  testonly RigidBody::with_collision_filter  in RigidBody::with_collision_filter
  crates/physics/src/body.rs:166  DEAD_CODE  testonly RigidBody::with_trigger  in RigidBody::with_trigger
  crates/physics/src/body.rs:172  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in RigidBody::set_trigger
  crates/physics/src/body.rs:177  DEAD_CODE  testonly RigidBody::with_orientation  in RigidBody::with_orientation
  crates/physics/src/body.rs:183  DEAD_CODE  testonly RigidBody::set_orientation  in RigidBody::set_orientation
  crates/physics/src/body.rs:183  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in RigidBody::set_orientation
  crates/physics/src/body.rs:188  DEAD_CODE  testonly RigidBody::set_angular_velocity  in RigidBody::set_angular_velocity
  crates/physics/src/body.rs:188  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in RigidBody::set_angular_velocity
  crates/physics/src/body.rs:193  DEAD_CODE  testonly RigidBody::apply_torque  in RigidBody::apply_torque
  crates/physics/src/broadphase.rs:1  SRP_MODULE  527 lines
  crates/physics/src/broadphase.rs:71  DEAD_CODE  StepTiming::per_substep_ms  in StepTiming::per_substep_ms
  crates/physics/src/broadphase.rs:181  DUPLICATE  exact  in candidate_allowed
  crates/physics/src/broadphase.rs:188  FRAGMENT  4 stmts
  crates/physics/src/broadphase.rs:207  SRP_PARAMS  6 params  in add_pair
  crates/physics/src/broadphase.rs:251  MAGIC_NUMBER  3
  crates/physics/src/broadphase.rs:480  COGNITIVE  complexity 58  in UniformGrid::update
  crates/physics/src/broadphase.rs:480  CYCLOMATIC  complexity 28  in UniformGrid::update
  crates/physics/src/broadphase.rs:480  NESTING  depth 6  in UniformGrid::update
  crates/physics/src/broadphase.rs:480  LONG_FN  149 lines  in UniformGrid::update
  crates/physics/src/broadphase_tree.rs:1  SRP_MODULE  352 lines
  crates/physics/src/broadphase_tree.rs:60  BOILERPLATE  BP-009 Struct update boilerplate  in Tree::alloc_node
  crates/physics/src/broadphase_tree.rs:92  VIOLATION  logic + calls  in Tree::insert_leaf
  crates/physics/src/broadphase_tree.rs:92  ERROR_HANDLING  unwrap/panic/todo  in Tree::insert_leaf
  crates/physics/src/broadphase_tree.rs:108  MAGIC_NUMBER  2.0
  crates/physics/src/broadphase_tree.rs:109  MAGIC_NUMBER  2.0
  crates/physics/src/broadphase_tree.rs:141  VIOLATION  logic + calls  in Tree::remove_leaf
  crates/physics/src/broadphase_tree.rs:141  ERROR_HANDLING  unwrap/panic/todo  in Tree::remove_leaf
  crates/physics/src/broadphase_tree.rs:183  VIOLATION  logic + calls  in Tree::query
  crates/physics/src/broadphase_tree.rs:189  VIOLATION  logic + calls  in Tree::query_recursive
  crates/physics/src/broadphase_tree.rs:189  ERROR_HANDLING  unwrap/panic/todo  in Tree::query_recursive
  crates/physics/src/broadphase_tree.rs:227  VIOLATION  logic + calls  in DynamicAabbTree::fat_aabb
  crates/physics/src/broadphase_tree.rs:228  MAGIC_NUMBER  4.0
  crates/physics/src/broadphase_tree.rs:244  VIOLATION  logic + calls  in DynamicAabbTree::update
  crates/physics/src/broadphase_tree.rs:281  VIOLATION  logic + calls  in DynamicAabbTree::sync_proxies
  crates/physics/src/broadphase_tree.rs:297  VIOLATION  logic + calls  in DynamicAabbTree::refresh_proxies
  crates/physics/src/broadphase_tree.rs:297  ERROR_HANDLING  unwrap/panic/todo  in DynamicAabbTree::refresh_proxies
  crates/physics/src/broadphase_tree.rs:328  VIOLATION  logic + calls  in DynamicAabbTree::insert_new
  crates/physics/src/broadphase_tree.rs:356  VIOLATION  logic + calls  in DynamicAabbTree::query_dynamic
  crates/physics/src/broadphase_tree.rs:356  ERROR_HANDLING  unwrap/panic/todo  in DynamicAabbTree::query_dynamic
  crates/physics/src/broadphase_tree.rs:380  MAGIC_NUMBER  2.0
  crates/physics/src/broadphase_tree.rs:405  DUPLICATE  exact  in pair_allowed
  crates/physics/src/broadphase_tree.rs:412  FRAGMENT  4 stmts
  crates/physics/src/distance.rs:1  SRP_MODULE  352 lines
  crates/physics/src/distance.rs:37  MAGIC_NUMBER  1e-12
  crates/physics/src/distance.rs:55  MAGIC_NUMBER  1e-12
  crates/physics/src/distance.rs:55  MAGIC_NUMBER  1e-12
  crates/physics/src/distance.rs:58  MAGIC_NUMBER  1e-12
  crates/physics/src/distance.rs:63  MAGIC_NUMBER  1e-12
  crates/physics/src/distance.rs:69  MAGIC_NUMBER  1e-12
  crates/physics/src/distance.rs:74  MAGIC_NUMBER  1e-12
  crates/physics/src/distance.rs:109  DUPLICATE  exact  in obb_corners
  crates/physics/src/distance.rs:111  FRAGMENT  3 stmts
  crates/physics/src/distance.rs:186  SRP_PARAMS  6 params  in capsule_capsule
  crates/physics/src/distance.rs:205  FRAGMENT  3 stmts
  crates/physics/src/distance.rs:243  FRAGMENT  3 stmts
  crates/physics/src/distance.rs:279  BOILERPLATE  BP-009 Struct update boilerplate  in shape_distance
  crates/physics/src/distance.rs:375  MAGIC_NUMBER  1e-9
  crates/physics/src/distance.rs:411  MAGIC_NUMBER  0.5
  crates/physics/src/engine.rs:1  SRP_MODULE  2765 lines
  crates/physics/src/engine.rs:157  VIOLATION  logic + calls  in mul_inv_inertia
  crates/physics/src/engine.rs:178  VIOLATION  logic + calls  in effective_mass
  crates/physics/src/engine.rs:178  SRP_PARAMS  6 params  in effective_mass
  crates/physics/src/engine.rs:215  VIOLATION  logic + calls  in k_entry
  crates/physics/src/engine.rs:215  SRP_PARAMS  8 params  in k_entry
  crates/physics/src/engine.rs:247  MAGIC_NUMBER  1e-12
  crates/physics/src/engine.rs:280  MAGIC_NUMBER  4
  crates/physics/src/engine.rs:299  VIOLATION  logic + calls  in apply_impulse
  crates/physics/src/engine.rs:299  SRP_PARAMS  6 params  in apply_impulse
  crates/physics/src/engine.rs:313  FRAGMENT  4 stmts
  crates/physics/src/engine.rs:313  FRAGMENT  6 stmts
  crates/physics/src/engine.rs:354  VIOLATION  logic + calls  in apply_angular_impulse
  crates/physics/src/engine.rs:355  FRAGMENT  4 stmts
  crates/physics/src/engine.rs:355  FRAGMENT  4 stmts
  crates/physics/src/engine.rs:370  VIOLATION  logic + calls  in apply_positional_rotation
  crates/physics/src/engine.rs:393  MAGIC_NUMBER  0.9
  crates/physics/src/engine.rs:399  VIOLATION  logic + calls  in apply_positional_impulse
  crates/physics/src/engine.rs:399  SRP_PARAMS  6 params  in apply_positional_impulse
  crates/physics/src/engine.rs:407  FRAGMENT  6 stmts
  crates/physics/src/engine.rs:407  FRAGMENT  4 stmts
  crates/physics/src/engine.rs:431  VIOLATION  logic + calls  in solve_normal_block
  crates/physics/src/engine.rs:431  SRP_PARAMS  8 params  in solve_normal_block
  crates/physics/src/engine.rs:443  MAGIC_NUMBER  4
  crates/physics/src/engine.rs:444  MAGIC_NUMBER  4
  crates/physics/src/engine.rs:449  MAGIC_NUMBER  4
  crates/physics/src/engine.rs:449  MAGIC_NUMBER  4
  crates/physics/src/engine.rs:455  MAGIC_NUMBER  4
  crates/physics/src/engine.rs:495  MAGIC_NUMBER  4
  crates/physics/src/engine.rs:517  SRP_PARAMS  6 params  in try_active_set
  crates/physics/src/engine.rs:526  MAGIC_NUMBER  4
  crates/physics/src/engine.rs:526  MAGIC_NUMBER  4
  crates/physics/src/engine.rs:527  MAGIC_NUMBER  4
  crates/physics/src/engine.rs:558  MAGIC_NUMBER  -1e-6
  crates/physics/src/engine.rs:571  SRP_PARAMS  7 params  in inactive_feasible
  crates/physics/src/engine.rs:595  MAGIC_NUMBER  1e-5
  crates/physics/src/engine.rs:606  VIOLATION  logic + calls  in commit_active_set
  crates/physics/src/engine.rs:606  SRP_PARAMS  8 params  in commit_active_set
  crates/physics/src/engine.rs:626  MAGIC_NUMBER  1e-12
  crates/physics/src/engine.rs:632  MAGIC_NUMBER  1e-12
  crates/physics/src/engine.rs:648  BOILERPLATE  BP-009 Struct update boilerplate  in detect_trigger_overlaps
  crates/physics/src/engine.rs:678  BOILERPLATE  BP-009 Struct update boilerplate  in update_trigger_events
  crates/physics/src/engine.rs:716  MAGIC_NUMBER  1e-10
  crates/physics/src/engine.rs:725  MAGIC_NUMBER  0.5
  crates/physics/src/engine.rs:731  SRP_PARAMS  6 params  in sphere_vs_obb
  crates/physics/src/engine.rs:744  MAGIC_NUMBER  1e-10
  crates/physics/src/engine.rs:752  MAGIC_NUMBER  0.5
  crates/physics/src/engine.rs:762  SRP_PARAMS  7 params  in obb_overlap_on
  crates/physics/src/engine.rs:788  SRP_PARAMS  7 params  in obb_sat
  crates/physics/src/engine.rs:830  MAGIC_NUMBER  1e-3
  crates/physics/src/engine.rs:855  SRP_PARAMS  7 params  in box_vs_box
  crates/physics/src/engine.rs:868  MAGIC_NUMBER  0.5
  crates/physics/src/engine.rs:873  DUPLICATE  exact  in obb_corners
  crates/physics/src/engine.rs:875  FRAGMENT  3 stmts
  crates/physics/src/engine.rs:890  LONG_FN  85 lines  in box_manifold
  crates/physics/src/engine.rs:890  DUPLICATE  similar  in box_manifold
  crates/physics/src/engine.rs:890  BOILERPLATE  BP-009 Struct update boilerplate  in box_manifold
  crates/physics/src/engine.rs:890  SRP_PARAMS  7 params  in box_manifold
  crates/physics/src/engine.rs:901  FRAGMENT  6 stmts
  crates/physics/src/engine.rs:922  MAGIC_NUMBER  0.05
  crates/physics/src/engine.rs:922  FRAGMENT  11 stmts
  crates/physics/src/engine.rs:959  MAGIC_NUMBER  4
  crates/physics/src/engine.rs:961  MAGIC_NUMBER  4
  crates/physics/src/engine.rs:1031  MAGIC_NUMBER  0.05
  crates/physics/src/engine.rs:1049  SRP_PARAMS  7 params  in sphere_vs_capsule
  crates/physics/src/engine.rs:1060  MAGIC_NUMBER  2.0
  crates/physics/src/engine.rs:1067  MAGIC_NUMBER  1e-10
  crates/physics/src/engine.rs:1073  MAGIC_NUMBER  0.5
  crates/physics/src/engine.rs:1085  BOILERPLATE  BP-009 Struct update boilerplate  in box_vs_capsule
  crates/physics/src/engine.rs:1085  SRP_PARAMS  8 params  in box_vs_capsule
  crates/physics/src/engine.rs:1115  MAGIC_NUMBER  1e-10
  crates/physics/src/engine.rs:1120  MAGIC_NUMBER  0.5
  crates/physics/src/engine.rs:1144  MAGIC_NUMBER  2.0
  crates/physics/src/engine.rs:1145  MAGIC_NUMBER  2.0
  crates/physics/src/engine.rs:1154  MAGIC_NUMBER  1e-10
  crates/physics/src/engine.rs:1167  MAGIC_NUMBER  1e-10
  crates/physics/src/engine.rs:1176  MAGIC_NUMBER  0.5
  crates/physics/src/engine.rs:1199  COGNITIVE  complexity 32  in detect_collisions_into
  crates/physics/src/engine.rs:1199  CYCLOMATIC  complexity 33  in detect_collisions_into
  crates/physics/src/engine.rs:1199  LONG_FN  383 lines  in detect_collisions_into
  crates/physics/src/engine.rs:1199  BOILERPLATE  BP-009 Struct update boilerplate  in detect_collisions_into
  crates/physics/src/engine.rs:1199  SRP_PARAMS  8 params  in detect_collisions_into
  crates/physics/src/engine.rs:1215  MAGIC_NUMBER  256
  crates/physics/src/engine.rs:1265  MAGIC_NUMBER  0.5
  crates/physics/src/engine.rs:1266  MAGIC_NUMBER  0.25
  crates/physics/src/engine.rs:1267  MAGIC_NUMBER  0.25
  crates/physics/src/engine.rs:1458  MAGIC_NUMBER  0.5
  crates/physics/src/engine.rs:1459  MAGIC_NUMBER  0.25
  crates/physics/src/engine.rs:1460  MAGIC_NUMBER  0.25
  crates/physics/src/engine.rs:1635  SRP_PARAMS  8 params  in sat_cache_hit
  crates/physics/src/engine.rs:1680  SRP_PARAMS  10 params  in obb_sat_cached
  crates/physics/src/engine.rs:1726  DUPLICATE  similar  in box_manifold_cached
  crates/physics/src/engine.rs:1726  BOILERPLATE  BP-009 Struct update boilerplate  in box_manifold_cached
  crates/physics/src/engine.rs:1726  SRP_PARAMS  10 params  in box_manifold_cached
  crates/physics/src/engine.rs:1742  FRAGMENT  6 stmts
  crates/physics/src/engine.rs:1751  MAGIC_NUMBER  0.05
  crates/physics/src/engine.rs:1751  FRAGMENT  11 stmts
  crates/physics/src/engine.rs:1782  MAGIC_NUMBER  4
  crates/physics/src/engine.rs:1784  MAGIC_NUMBER  4
  crates/physics/src/engine.rs:1808  COGNITIVE  complexity 33  in detect_collisions_into_with_cache
  crates/physics/src/engine.rs:1808  CYCLOMATIC  complexity 31  in detect_collisions_into_with_cache
  crates/physics/src/engine.rs:1808  LONG_FN  135 lines  in detect_collisions_into_with_cache
  crates/physics/src/engine.rs:1808  SRP_PARAMS  9 params  in detect_collisions_into_with_cache
  crates/physics/src/engine.rs:1867  MAGIC_NUMBER  0.5
  crates/physics/src/engine.rs:1868  MAGIC_NUMBER  0.25
  crates/physics/src/engine.rs:1869  MAGIC_NUMBER  0.25
  crates/physics/src/engine.rs:1874  MAGIC_NUMBER  0.05
  crates/physics/src/engine.rs:1935  MAGIC_NUMBER  0.05
  crates/physics/src/engine.rs:2067  SRP_STRUCT  BuiltinPhysicsEngine: LCOM4=1
  crates/physics/src/engine.rs:2131  MAGIC_NUMBER  12
  crates/physics/src/engine.rs:2132  MAGIC_NUMBER  8
  crates/physics/src/engine.rs:2133  MAGIC_NUMBER  4
  crates/physics/src/engine.rs:2171  DEAD_CODE  testonly BuiltinPhysicsEngine::broadphase_kind  in BuiltinPhysicsEngine::broadphase_kind
  crates/physics/src/engine.rs:2198  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in BuiltinPhysicsEngine::step_timing
  crates/physics/src/engine.rs:2205  DEAD_CODE  BuiltinPhysicsEngine::set_wide_solver  in BuiltinPhysicsEngine::set_wide_solver
  crates/physics/src/engine.rs:2205  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in BuiltinPhysicsEngine::set_wide_solver
  crates/physics/src/engine.rs:2214  DEAD_CODE  testonly BuiltinPhysicsEngine::set_gpu_solver  in BuiltinPhysicsEngine::set_gpu_solver
  crates/physics/src/engine.rs:2214  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in BuiltinPhysicsEngine::set_gpu_solver
  crates/physics/src/engine.rs:2220  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in BuiltinPhysicsEngine::set_substeps
  crates/physics/src/engine.rs:2225  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in BuiltinPhysicsEngine::set_velocity_iterations
  crates/physics/src/engine.rs:2225  TQ_UNTESTED  set_velocity_iterations  in set_velocity_iterations
  crates/physics/src/engine.rs:2304  MAGIC_NUMBER  4
  crates/physics/src/engine.rs:2315  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in BuiltinPhysicsEngine::set_position_iterations
  crates/physics/src/engine.rs:2315  TQ_UNTESTED  set_position_iterations  in set_position_iterations
  crates/physics/src/engine.rs:2322  DEAD_CODE  BuiltinPhysicsEngine::set_contact_softness  in BuiltinPhysicsEngine::set_contact_softness
  crates/physics/src/engine.rs:2322  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in BuiltinPhysicsEngine::set_contact_softness
  crates/physics/src/engine.rs:2332  TQ_UNTESTED  debug_island_info  in debug_island_info
  crates/physics/src/engine.rs:2350  VIOLATION  logic + calls  in BuiltinPhysicsEngine::integrate_velocities
  crates/physics/src/engine.rs:2380  VIOLATION  logic + calls  in BuiltinPhysicsEngine::integrate_positions
  crates/physics/src/engine.rs:2409  VIOLATION  logic + calls  in BuiltinPhysicsEngine::solve_continuous
  crates/physics/src/engine.rs:2430  MAGIC_NUMBER  1e-3
  crates/physics/src/engine.rs:2444  MAGIC_NUMBER  -1.0
  crates/physics/src/engine.rs:2450  VIOLATION  logic + calls  in BuiltinPhysicsEngine::raycast_body
  crates/physics/src/engine.rs:2512  VIOLATION  logic + calls  in swept_orientation
  crates/physics/src/engine.rs:2518  VIOLATION  logic + calls  in swept_distance
  crates/physics/src/engine.rs:2538  VIOLATION  logic + calls  in swept_shape_overlaps
  crates/physics/src/engine.rs:2562  MAGIC_NUMBER  1e-5
  crates/physics/src/engine.rs:2574  MAGIC_NUMBER  1e-5
  crates/physics/src/engine.rs:2579  BOILERPLATE  BP-009 Struct update boilerplate  in find_linear_continuous_hit
  crates/physics/src/engine.rs:2590  MAGIC_NUMBER  0.5
  crates/physics/src/engine.rs:2631  VIOLATION  logic + calls  in first_angular_overlap_fraction
  crates/physics/src/engine.rs:2631  COGNITIVE  complexity 24  in first_angular_overlap_fraction
  crates/physics/src/engine.rs:2647  MAGIC_NUMBER  1e-9
  crates/physics/src/engine.rs:2665  MAGIC_NUMBER  10
  crates/physics/src/engine.rs:2666  MAGIC_NUMBER  0.5
  crates/physics/src/engine.rs:2678  MAGIC_NUMBER  0.5
  crates/physics/src/engine.rs:2681  MAGIC_NUMBER  1e-4
  crates/physics/src/engine.rs:2687  MAGIC_NUMBER  1e-4
  crates/physics/src/engine.rs:2701  VIOLATION  logic + calls  in find_angular_continuous_hit
  crates/physics/src/engine.rs:2717  MAGIC_NUMBER  1e-9
  crates/physics/src/engine.rs:2794  MAGIC_NUMBER  1e-12
  crates/physics/src/engine.rs:2825  SRP_PARAMS  6 params  in ray_obb_slab
  crates/physics/src/engine.rs:2833  MAGIC_NUMBER  1e-12
  crates/physics/src/engine.rs:2869  MAGIC_NUMBER  1e-12
  crates/physics/src/engine.rs:2929  VIOLATION  logic + calls  in ray_capsule_cylinder_hit
  crates/physics/src/engine.rs:2937  MAGIC_NUMBER  1e-12
  crates/physics/src/engine.rs:2969  VIOLATION  logic + calls  in ray_capsule_hit
  crates/physics/src/engine.rs:2990  VIOLATION  logic + calls  in BuiltinPhysicsEngine::step
  crates/physics/src/engine.rs:2990  COGNITIVE  complexity 21  in BuiltinPhysicsEngine::step
  crates/physics/src/engine.rs:2990  LONG_FN  151 lines  in BuiltinPhysicsEngine::step
  crates/physics/src/engine.rs:3024  MAGIC_NUMBER  1000.0
  crates/physics/src/engine.rs:3031  MAGIC_NUMBER  4
  crates/physics/src/engine.rs:3095  MAGIC_NUMBER  1000.0
  crates/physics/src/engine.rs:3111  MAGIC_NUMBER  1000.0
  crates/physics/src/engine.rs:3208  VIOLATION  logic + calls  in BuiltinPhysicsEngine::add_joint
  crates/physics/src/engine.rs:3288  VIOLATION  logic + calls  in BuiltinPhysicsEngine::raycast
  crates/physics/src/engine.rs:3307  BOILERPLATE  BP-009 Struct update boilerplate  in BuiltinPhysicsEngine::shapecast
  crates/physics/src/engine.rs:3379  FRAGMENT  3 stmts
  crates/physics/src/engine.rs:3503  FRAGMENT  4 stmts
  crates/physics/src/engine.rs:3523  FRAGMENT  4 stmts
  crates/physics/src/engine.rs:3939  FRAGMENT  3 stmts
  crates/physics/src/engine.rs:3939  FRAGMENT  3 stmts
  crates/physics/src/engine.rs:3994  FRAGMENT  3 stmts
  crates/physics/src/engine.rs:4055  FRAGMENT  3 stmts
  crates/physics/src/engine.rs:4365  FRAGMENT  3 stmts
  crates/physics/src/engine.rs:4412  FRAGMENT  3 stmts
  crates/physics/src/engine/contacts.rs:1  SRP_MODULE  752 lines
  crates/physics/src/engine/contacts.rs:10  WILDCARD  super::*
  crates/physics/src/engine/contacts.rs:21  SRP_PARAMS  6 params  in best_cached_point
  crates/physics/src/engine/contacts.rs:36  MAGIC_NUMBER  0.7
  crates/physics/src/engine/contacts.rs:50  SRP_PARAMS  6 params  in match_warm_points
  crates/physics/src/engine/contacts.rs:58  MAGIC_NUMBER  4
  crates/physics/src/engine/contacts.rs:59  MAGIC_NUMBER  4
  crates/physics/src/engine/contacts.rs:61  MAGIC_NUMBER  4
  crates/physics/src/engine/contacts.rs:78  MAGIC_NUMBER  4
  crates/physics/src/engine/contacts.rs:95  SRP_PARAMS  8 params  in compute_restitution_bias
  crates/physics/src/engine/contacts.rs:105  MAGIC_NUMBER  4
  crates/physics/src/engine/contacts.rs:138  VIOLATION  logic + calls  in apply_warm_start
  crates/physics/src/engine/contacts.rs:138  SRP_PARAMS  7 params  in apply_warm_start
  crates/physics/src/engine/contacts.rs:154  MAGIC_NUMBER  1e-10
  crates/physics/src/engine/contacts.rs:176  VIOLATION  logic + calls  in prepare_manifold_state
  crates/physics/src/engine/contacts.rs:176  SRP_PARAMS  7 params  in prepare_manifold_state
  crates/physics/src/engine/contacts.rs:187  MAGIC_NUMBER  1e-10
  crates/physics/src/engine/contacts.rs:194  MAGIC_NUMBER  4
  crates/physics/src/engine/contacts.rs:195  MAGIC_NUMBER  4
  crates/physics/src/engine/contacts.rs:196  MAGIC_NUMBER  4
  crates/physics/src/engine/contacts.rs:219  MAGIC_NUMBER  4
  crates/physics/src/engine/contacts.rs:220  MAGIC_NUMBER  4
  crates/physics/src/engine/contacts.rs:261  VIOLATION  logic + calls  in BuiltinPhysicsEngine::solve_contacts_velocity_gpu
  crates/physics/src/engine/contacts.rs:261  LONG_FN  83 lines  in BuiltinPhysicsEngine::solve_contacts_velocity_gpu
  crates/physics/src/engine/contacts.rs:261  ERROR_HANDLING  unwrap/panic/todo  in BuiltinPhysicsEngine::solve_contacts_velocity_gpu
  crates/physics/src/engine/contacts.rs:261  BOILERPLATE  BP-009 Struct update boilerplate  in BuiltinPhysicsEngine::solve_contacts_velocity_gpu
  crates/physics/src/engine/contacts.rs:324  MAGIC_NUMBER  4
  crates/physics/src/engine/contacts.rs:361  VIOLATION  logic + calls  in BuiltinPhysicsEngine::solve_contacts_velocity
  crates/physics/src/engine/contacts.rs:475  VIOLATION  logic + calls  in BuiltinPhysicsEngine::wake_on_impact
  crates/physics/src/engine/contacts.rs:483  MAGIC_NUMBER  -1.0
  crates/physics/src/engine/contacts.rs:495  VIOLATION  logic + calls  in BuiltinPhysicsEngine::collect_active_manifolds
  crates/physics/src/engine/contacts.rs:516  MAGIC_NUMBER  1e-10
  crates/physics/src/engine/contacts.rs:534  VIOLATION  logic + calls  in BuiltinPhysicsEngine::solve_island_velocity
  crates/physics/src/engine/contacts.rs:534  SRP_PARAMS  8 params  in BuiltinPhysicsEngine::solve_island_velocity
  crates/physics/src/engine/contacts.rs:594  VIOLATION  logic + calls  in BuiltinPhysicsEngine::solve_scalar_velocity_step
  crates/physics/src/engine/contacts.rs:600  FRAGMENT  3 stmts
  crates/physics/src/engine/contacts.rs:610  MAGIC_NUMBER  4
  crates/physics/src/engine/contacts.rs:621  MAGIC_NUMBER  1e-10
  crates/physics/src/engine/contacts.rs:632  MAGIC_NUMBER  1e-12
  crates/physics/src/engine/contacts.rs:645  VIOLATION  logic + calls  in BuiltinPhysicsEngine::solve_scalar_restitution_step
  crates/physics/src/engine/contacts.rs:651  FRAGMENT  3 stmts
  crates/physics/src/engine/contacts.rs:674  MAGIC_NUMBER  1e-10
  crates/physics/src/engine/contacts.rs:688  VIOLATION  logic + calls  in BuiltinPhysicsEngine::solve_scalar_friction
  crates/physics/src/engine/contacts.rs:688  SRP_PARAMS  6 params  in BuiltinPhysicsEngine::solve_scalar_friction
  crates/physics/src/engine/contacts.rs:712  MAGIC_NUMBER  1e-10
  crates/physics/src/engine/contacts.rs:732  MAGIC_NUMBER  1e-24
  crates/physics/src/engine/contacts.rs:744  VIOLATION  logic + calls  in BuiltinPhysicsEngine::solve_island_position
  crates/physics/src/engine/contacts.rs:783  MAGIC_NUMBER  1e-10
  crates/physics/src/engine/contacts.rs:797  VIOLATION  logic + calls  in prepare_island_states
  crates/physics/src/engine/contacts.rs:797  SRP_PARAMS  6 params  in prepare_island_states
  crates/physics/src/engine/contacts.rs:822  VIOLATION  logic + calls  in run_velocity_iterations
  crates/physics/src/engine/contacts.rs:822  SRP_PARAMS  6 params  in run_velocity_iterations
  crates/physics/src/engine/contacts.rs:857  VIOLATION  logic + calls  in run_restitution_stage
  crates/physics/src/engine/contacts.rs:891  BOILERPLATE  BP-009 Struct update boilerplate  in persist_warm_cache
  crates/physics/src/engine/contacts.rs:904  MAGIC_NUMBER  4
  crates/physics/src/engine/contacts.rs:920  VIOLATION  logic + calls  in tangent_effective_mass
  crates/physics/src/engine/contacts.rs:920  SRP_PARAMS  6 params  in tangent_effective_mass
  crates/physics/src/engine/contacts.rs:945  MAGIC_NUMBER  1e-12
  crates/physics/src/engine/islands.rs:1  SRP_MODULE  309 lines
  crates/physics/src/engine/islands.rs:10  WILDCARD  super::*
  crates/physics/src/engine/islands.rs:43  VIOLATION  logic + calls  in BuiltinPhysicsEngine::update_sleep
  crates/physics/src/engine/islands.rs:82  VIOLATION  logic + calls  in BuiltinPhysicsEngine::wake_island
  crates/physics/src/engine/islands.rs:99  MAGIC_NUMBER  0.2
  crates/physics/src/engine/islands.rs:99  MAGIC_NUMBER  0.02
  crates/physics/src/engine/islands.rs:99  MAGIC_NUMBER  0.2
  crates/physics/src/engine/islands.rs:99  MAGIC_NUMBER  0.6
  crates/physics/src/engine/islands.rs:108  VIOLATION  logic + calls  in BuiltinPhysicsEngine::collect_quiet_islands
  crates/physics/src/engine/islands.rs:136  ERROR_HANDLING  unwrap/panic/todo  in BuiltinPhysicsEngine::partition_into_islands
  crates/physics/src/engine/joints.rs:10  WILDCARD  super::*
  crates/physics/src/engine/joints.rs:18  MAGIC_NUMBER  2.0
  crates/physics/src/engine/joints.rs:43  VIOLATION  logic + calls  in BuiltinPhysicsEngine::solve_joints_velocity
  crates/physics/src/engine/joints.rs:96  VIOLATION  logic + calls  in BuiltinPhysicsEngine::solve_joints_position
  crates/physics/src/engine/joints.rs:148  VIOLATION  logic + calls  in joint_warm_start
  crates/physics/src/engine/joints.rs:148  SRP_PARAMS  7 params  in joint_warm_start
  crates/physics/src/engine/joints.rs:160  MAGIC_NUMBER  1e-12
  crates/physics/src/engine/joints.rs:168  MAGIC_NUMBER  1e-12
  crates/physics/src/engine/joints.rs:179  VIOLATION  logic + calls  in joint_linear_velocity_iteration
  crates/physics/src/engine/joints.rs:179  SRP_PARAMS  6 params  in joint_linear_velocity_iteration
  crates/physics/src/engine/joints.rs:190  MAGIC_NUMBER  1e-9
  crates/physics/src/engine/joints.rs:203  VIOLATION  logic + calls  in joint_angular_velocity_iteration
  crates/physics/src/engine/joints.rs:215  MAGIC_NUMBER  1e-9
  crates/physics/src/engine/joints.rs:247  VIOLATION  logic + calls  in joint_drive_velocity_iteration
  crates/physics/src/engine/joints.rs:247  SRP_PARAMS  8 params  in joint_drive_velocity_iteration
  crates/physics/src/engine/joints.rs:264  MAGIC_NUMBER  1e-9
  crates/physics/src/engine/joints.rs:298  VIOLATION  logic + calls  in joint_linear_position_step
  crates/physics/src/engine/joints.rs:298  SRP_PARAMS  7 params  in joint_linear_position_step
  crates/physics/src/engine/joints.rs:311  MAGIC_NUMBER  1e-6
  crates/physics/src/engine/joints.rs:315  MAGIC_NUMBER  1e-9
  crates/physics/src/engine/joints.rs:324  VIOLATION  logic + calls  in joint_angular_position_pass
  crates/physics/src/engine/joints.rs:345  MAGIC_NUMBER  1e-6
  crates/physics/src/engine/joints.rs:351  MAGIC_NUMBER  1e-9
  crates/physics/src/gpu.rs:1  SRP_MODULE  769 lines
  crates/physics/src/gpu.rs:216  VIOLATION  logic + calls  in GpuBatch::fill_lane
  crates/physics/src/gpu.rs:216  LONG_FN  148 lines  in GpuBatch::fill_lane
  crates/physics/src/gpu.rs:231  MAGIC_NUMBER  4
  crates/physics/src/gpu.rs:231  MAGIC_NUMBER  4
  crates/physics/src/gpu.rs:231  MAGIC_NUMBER  4
  crates/physics/src/gpu.rs:289  MAGIC_NUMBER  3
  crates/physics/src/gpu.rs:289  MAGIC_NUMBER  4
  crates/physics/src/gpu.rs:289  MAGIC_NUMBER  9
  crates/physics/src/gpu.rs:290  MAGIC_NUMBER  3
  crates/physics/src/gpu.rs:360  MAGIC_NUMBER  1e-10
  crates/physics/src/gpu.rs:361  MAGIC_NUMBER  1e-10
  crates/physics/src/gpu.rs:362  MAGIC_NUMBER  1e-10
  crates/physics/src/gpu.rs:368  MAGIC_NUMBER  0.9
  crates/physics/src/gpu.rs:373  VIOLATION  logic + calls  in world_inertia_matrix
  crates/physics/src/gpu.rs:373  DUPLICATE  exact  in world_inertia_matrix
  crates/physics/src/gpu.rs:374  FRAGMENT  3 stmts
  crates/physics/src/gpu.rs:393  FRAGMENT  3 stmts
  crates/physics/src/gpu.rs:423  ORPHAN_SUPPRESSION  stale qual:allow(<all>) — invalid qual:allow — 'abc' did not parse to any known dimension
  crates/physics/src/gpu.rs:431  LONG_FN  125 lines  in contact_solver
  crates/physics/src/gpu.rs:431  DEAD_CODE  contact_solver  in contact_solver
  crates/physics/src/gpu.rs:436  ORPHAN_SUPPRESSION  stale qual:allow(<all>) — invalid qual:allow — 'abc' did not parse to any known dimension
  crates/physics/src/gpu.rs:471  MAGIC_NUMBER  1e-12
  crates/physics/src/gpu.rs:493  MAGIC_NUMBER  1e-12
  crates/physics/src/gpu.rs:506  MAGIC_NUMBER  1e-12
  crates/physics/src/gpu.rs:511  MAGIC_NUMBER  1e-24
  crates/physics/src/gpu.rs:589  LONG_FN  124 lines  in WgpuContactSolver::new
  crates/physics/src/gpu.rs:589  BOILERPLATE  BP-009 Struct update boilerplate  in WgpuContactSolver::new
  crates/physics/src/gpu.rs:654  MAGIC_NUMBER  64
  crates/physics/src/gpu.rs:655  MAGIC_NUMBER  64
  crates/physics/src/gpu.rs:675  MAGIC_NUMBER  16
  crates/physics/src/gpu.rs:731  ERROR_HANDLING  unwrap/panic/todo  in WgpuContactSolver::download_bodies
  crates/physics/src/gpu.rs:777  ERROR_HANDLING  unwrap/panic/todo  in WgpuContactSolver::download_acc
  crates/physics/src/gpu.rs:857  VIOLATION  logic + calls  in pack_single_point_batches
  crates/physics/src/gpu.rs:868  MAGIC_NUMBER  8
  crates/physics/src/gpu.rs:868  MAGIC_NUMBER  8
  crates/physics/src/gpu.rs:875  MAGIC_NUMBER  8
  crates/physics/src/gpu.rs:886  MAGIC_NUMBER  8
  crates/physics/src/gpu.rs:894  MAGIC_NUMBER  4
  crates/physics/src/gpu.rs:1038  TQ_NO_SUT  layout_stride_matches_struct_size  in layout_stride_matches_struct_size
  crates/physics/src/math.rs:40  DEAD_CODE  testonly AABB::from_points  in AABB::from_points
  crates/physics/src/math.rs:56  MAGIC_NUMBER  0.5
  crates/physics/src/math.rs:61  MAGIC_NUMBER  0.5
  crates/physics/src/math.rs:75  DEAD_CODE  testonly AABB::contains_point  in AABB::contains_point
  crates/physics/src/shape.rs:46  VIOLATION  logic + calls  in Shape::aabb
  crates/physics/src/shape.rs:84  VIOLATION  logic + calls  in Shape::inertia
  crates/physics/src/shape.rs:87  MAGIC_NUMBER  0.4
  crates/physics/src/shape.rs:97  MAGIC_NUMBER  12.0
  crates/physics/src/shape.rs:98  MAGIC_NUMBER  12.0
  crates/physics/src/shape.rs:99  MAGIC_NUMBER  12.0
  crates/physics/src/shape.rs:110  MAGIC_NUMBER  0.5
  crates/physics/src/shape.rs:112  MAGIC_NUMBER  0.25
  crates/physics/src/shape.rs:112  MAGIC_NUMBER  3.0
  crates/physics/src/shape.rs:112  MAGIC_NUMBER  0.25
  crates/physics/src/wide.rs:1  SRP_MODULE  413 lines
  crates/physics/src/wide.rs:155  VIOLATION  logic + calls  in WideBatch::world_inertia
  crates/physics/src/wide.rs:155  DUPLICATE  exact  in WideBatch::world_inertia
  crates/physics/src/wide.rs:156  FRAGMENT  3 stmts
  crates/physics/src/wide.rs:175  FRAGMENT  3 stmts
  crates/physics/src/wide.rs:193  VIOLATION  logic + calls  in WideBatch::build
  crates/physics/src/wide.rs:201  MAGIC_NUMBER  4
  crates/physics/src/wide.rs:202  MAGIC_NUMBER  4
  crates/physics/src/wide.rs:203  MAGIC_NUMBER  4
  crates/physics/src/wide.rs:220  MAGIC_NUMBER  3
  crates/physics/src/wide.rs:220  MAGIC_NUMBER  4
  crates/physics/src/wide.rs:221  MAGIC_NUMBER  3
  crates/physics/src/wide.rs:221  MAGIC_NUMBER  4
  crates/physics/src/wide.rs:241  MAGIC_NUMBER  4
  crates/physics/src/wide.rs:251  VIOLATION  logic + calls  in WideBatch::fill_lane
  crates/physics/src/wide.rs:307  MAGIC_NUMBER  1e-10
  crates/physics/src/wide.rs:309  MAGIC_NUMBER  1e-10
  crates/physics/src/wide.rs:311  MAGIC_NUMBER  1e-10
  crates/physics/src/wide.rs:358  VIOLATION  logic + calls  in WideBatch::solve_iteration
  crates/physics/src/wide.rs:366  MAGIC_NUMBER  1e-24
  crates/physics/src/wide.rs:398  MAGIC_NUMBER  1e-12
  crates/physics/src/wide.rs:486  MAGIC_NUMBER  1e-12
  crates/physics/src/wide.rs:522  MAGIC_NUMBER  4
  crates/physics/src/wide.rs:524  MAGIC_NUMBER  8
  crates/physics/src/wide.rs:524  MAGIC_NUMBER  8
  crates/physics/src/wide.rs:529  MAGIC_NUMBER  8
  crates/physics/src/wide.rs:538  MAGIC_NUMBER  8
  crates/physics/src/wide.rs:550  MAGIC_NUMBER  4
  crates/physics/tests/box_capsule_toi.rs:187  FRAGMENT  3 stmts
  crates/physics/tests/box_capsule_toi.rs:187  FRAGMENT  3 stmts
  crates/physics/tests/box_capsule_toi.rs:298  FRAGMENT  3 stmts
  crates/physics/tests/box_capsule_toi.rs:298  FRAGMENT  3 stmts
  crates/python/src/lib.rs:1  SRP_MODULE  327 lines
  crates/python/src/lib.rs:54  DEAD_TYPE  testonly struct PythonScriptEngine
  crates/python/src/lib.rs:274  VIOLATION  logic + calls  in json_to_py
  crates/python/src/lib.rs:312  VIOLATION  logic + calls  in py_to_json
  crates/python/src/lib.rs:313  COUPLING_STRUCTURAL  DEH
  crates/python/src/lib.rs:317  COUPLING_STRUCTURAL  DEH
  crates/python/src/lib.rs:324  COUPLING_STRUCTURAL  DEH
  crates/python/src/lib.rs:327  COUPLING_STRUCTURAL  DEH
  crates/python/src/lib.rs:332  COUPLING_STRUCTURAL  DEH
  crates/python/src/lib.rs:338  COUPLING_STRUCTURAL  DEH
  crates/python/src/lib.rs:346  COUPLING_STRUCTURAL  DEH
  crates/python/src/lib.rs:350  COUPLING_STRUCTURAL  DEH
  crates/python/src/lib.rs:423  ERROR_HANDLING  unwrap/panic/todo  in PythonScriptEngine::unload
  crates/python/src/lib.rs:447  DUPLICATE  exact  in call_round_trips_mixed_shapes
  crates/python/src/lib.rs:459  DUPLICATE  exact  in call_round_trips_objects_through_dicts
  crates/python/src/lib.rs:486  DUPLICATE  exact  in hot_reload_replaces_and_keeps_old_on_failure
  crates/python/src/lib.rs:502  DUPLICATE  exact  in batch_collects_per_call_outcomes
  crates/python/src/lib.rs:503  FRAGMENT  4 stmts
  crates/python/src/lib.rs:503  FRAGMENT  4 stmts
  crates/render/benches/layout_bench.rs:14  TQ_UNTESTED  make  in make
  crates/render/benches/layout_bench.rs:17  MAGIC_NUMBER  1920
  crates/render/benches/layout_bench.rs:17  MAGIC_NUMBER  1080
  crates/render/benches/layout_bench.rs:23  DEAD_CODE  bench_layout_compute  in bench_layout_compute
  crates/render/benches/layout_bench.rs:43  DEAD_CODE  bench_layout_cache_hit  in bench_layout_cache_hit
  crates/render/benches/layout_bench.rs:62  DEAD_CODE  bench_levels  in bench_levels
  crates/render/benches/recording_bench.rs:56  VIOLATION  logic + calls  in bench_recording
  crates/render/benches/recording_bench.rs:56  LONG_FN  122 lines  in bench_recording
  crates/render/benches/recording_bench.rs:56  DEAD_CODE  bench_recording  in bench_recording
  crates/render/benches/recording_bench.rs:56  BOILERPLATE  BP-009 Struct update boilerplate  in bench_recording
  crates/render/benches/recording_bench.rs:74  MAGIC_NUMBER  16
  crates/render/benches/recording_bench.rs:74  MAGIC_NUMBER  12
  crates/render/benches/recording_bench.rs:74  FRAGMENT  4 stmts
  crates/render/benches/recording_bench.rs:78  MAGIC_NUMBER  0.8
  crates/render/benches/recording_bench.rs:78  MAGIC_NUMBER  0.4
  crates/render/benches/recording_bench.rs:78  MAGIC_NUMBER  0.2
  crates/render/benches/recording_bench.rs:79  MAGIC_NUMBER  0.5
  crates/render/benches/recording_bench.rs:84  FRAGMENT  5 stmts
  crates/render/benches/recording_bench.rs:92  MAGIC_NUMBER  0.1
  crates/render/benches/recording_bench.rs:92  MAGIC_NUMBER  0.1
  crates/render/benches/recording_bench.rs:92  MAGIC_NUMBER  0.1
  crates/render/benches/recording_bench.rs:93  MAGIC_NUMBER  0.3
  crates/render/benches/recording_bench.rs:93  MAGIC_NUMBER  -1.0
  crates/render/benches/recording_bench.rs:93  MAGIC_NUMBER  0.5
  crates/render/benches/recording_bench.rs:95  MAGIC_NUMBER  3.0
  crates/render/benches/recording_bench.rs:96  MAGIC_NUMBER  60
  crates/render/benches/recording_bench.rs:96  MAGIC_NUMBER  0.1
  crates/render/benches/recording_bench.rs:96  MAGIC_NUMBER  10.0
  crates/render/benches/recording_bench.rs:98  MAGIC_NUMBER  3.0
  crates/render/examples/frame3d_probe.rs:1  SRP_MODULE  612 lines
  crates/render/examples/frame3d_probe.rs:21  DUPLICATE  exact  in build_material
  crates/render/examples/frame3d_probe.rs:22  REPEATED_MATCH  MaterialDesc
  crates/render/examples/frame3d_probe.rs:55  ERROR_HANDLING  unwrap/panic/todo  in main
  crates/render/examples/frame3d_probe.rs:139  VIOLATION  logic + calls  in build_scene_data
  crates/render/examples/frame3d_probe.rs:139  ERROR_HANDLING  unwrap/panic/todo  in build_scene_data
  crates/render/examples/frame3d_probe.rs:139  DUPLICATE  similar  in build_scene_data
  crates/render/examples/frame3d_probe.rs:152  FRAGMENT  4 stmts
  crates/render/examples/frame3d_probe.rs:173  FRAGMENT  3 stmts
  crates/render/examples/frame3d_probe.rs:188  ERROR_HANDLING  unwrap/panic/todo  in read_target
  crates/render/examples/frame3d_probe.rs:195  MAGIC_NUMBER  256
  crates/render/examples/frame3d_probe.rs:195  MAGIC_NUMBER  256
  crates/render/examples/frame3d_probe.rs:204  FRAGMENT  3 stmts
  crates/render/examples/frame3d_probe.rs:231  FRAGMENT  5 stmts
  crates/render/examples/frame3d_probe.rs:399  SRP_STRUCTURAL  SLM  in TechniqueStats::log
  crates/render/examples/frame3d_probe.rs:409  VIOLATION  logic + calls  in run
  crates/render/examples/frame3d_probe.rs:409  LONG_FN  100 lines  in run
  crates/render/examples/frame3d_probe.rs:423  MAGIC_NUMBER  3
  crates/render/examples/frame3d_probe.rs:423  MAGIC_NUMBER  3
  crates/render/examples/frame3d_probe.rs:465  MAGIC_NUMBER  9
  crates/render/examples/frame3d_probe.rs:588  SRP_PARAMS  8 params  in report_pass_or_fail
  crates/render/examples/frame3d_probe.rs:639  MAGIC_NUMBER  4
  crates/render/examples/frame3d_probe.rs:675  MAGIC_NUMBER  100.0
  crates/render/examples/frame3d_probe.rs:695  ERROR_HANDLING  unwrap/panic/todo  in save_png
  crates/render/examples/render_probe.rs:1  SRP_MODULE  310 lines
  crates/render/examples/render_probe.rs:20  DUPLICATE  exact  in build_material
  crates/render/examples/render_probe.rs:21  REPEATED_MATCH  MaterialDesc
  crates/render/examples/render_probe.rs:54  ERROR_HANDLING  unwrap/panic/todo  in main
  crates/render/examples/render_probe.rs:128  VIOLATION  logic + calls  in build_scene_data
  crates/render/examples/render_probe.rs:128  ERROR_HANDLING  unwrap/panic/todo  in build_scene_data
  crates/render/examples/render_probe.rs:128  DUPLICATE  similar  in build_scene_data
  crates/render/examples/render_probe.rs:145  FRAGMENT  4 stmts
  crates/render/examples/render_probe.rs:180  FRAGMENT  3 stmts
  crates/render/examples/render_probe.rs:196  ERROR_HANDLING  unwrap/panic/todo  in read_back_pixels
  crates/render/examples/render_probe.rs:203  FRAGMENT  3 stmts
  crates/render/examples/render_probe.rs:204  MAGIC_NUMBER  256
  crates/render/examples/render_probe.rs:204  MAGIC_NUMBER  256
  crates/render/examples/render_probe.rs:211  FRAGMENT  3 stmts
  crates/render/examples/render_probe.rs:239  FRAGMENT  5 stmts
  crates/render/examples/render_probe.rs:274  MAGIC_NUMBER  0.55
  crates/render/examples/render_probe.rs:275  MAGIC_NUMBER  0.1
  crates/render/examples/render_probe.rs:275  MAGIC_NUMBER  0.3
  crates/render/examples/render_probe.rs:275  MAGIC_NUMBER  0.5
  crates/render/examples/render_probe.rs:275  MAGIC_NUMBER  0.7
  crates/render/examples/render_probe.rs:275  MAGIC_NUMBER  0.9
  crates/render/examples/render_probe.rs:315  MAGIC_NUMBER  256
  crates/render/examples/render_probe.rs:316  MAGIC_NUMBER  64
  crates/render/examples/render_probe.rs:338  MAGIC_NUMBER  4
  crates/render/src/camera.rs:38  VIOLATION  logic + calls  in OrbitCamera::from_desc
  crates/render/src/camera.rs:43  MAGIC_NUMBER  -1.0
  crates/render/src/camera.rs:58  VIOLATION  logic + calls  in OrbitCamera::position
  crates/render/src/camera.rs:116  ERROR_HANDLING  unwrap/panic/todo  in read_orbit_camera
  crates/render/src/camera.rs:139  ERROR_HANDLING  unwrap/panic/todo  in OrbitCameraSystem::run
  crates/render/src/composite.rs:27  LONG_FN  106 lines  in CompositePass::new
  crates/render/src/composite.rs:27  BOILERPLATE  BP-009 Struct update boilerplate  in CompositePass::new
  crates/render/src/composite.rs:64  MAGIC_NUMBER  3
  crates/render/src/composite.rs:138  DEAD_CODE  testonly CompositePass::compose  in CompositePass::compose
  crates/render/src/composite.rs:163  MAGIC_NUMBER  3
  crates/render/src/composite.rs:193  MAGIC_NUMBER  4
  crates/render/src/extraction.rs:150  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in RenderWorld::engine
  crates/render/src/extraction.rs:159  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in RenderWorld::engine_mut
  crates/render/src/extraction.rs:173  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in RenderWorld::entities
  crates/render/src/extraction.rs:209  ERROR_HANDLING  unwrap/panic/todo  in RenderWorld::frame_upload
  crates/render/src/extraction.rs:219  VIOLATION  logic + calls  in extract_render_data
  crates/render/src/extraction.rs:221  FRAGMENT  3 stmts
  crates/render/src/extraction.rs:269  FRAGMENT  3 stmts
  crates/render/src/extraction.rs:292  ERROR_HANDLING  unwrap/panic/todo  in insert_scene_entities
  crates/render/src/extraction.rs:308  DUPLICATE  exact  in material_to_gpu
  crates/render/src/extraction.rs:309  REPEATED_MATCH  MaterialDesc
  crates/render/src/extraction.rs:342  VIOLATION  logic + calls  in normalized_rotation
  crates/render/src/extraction.rs:342  DUPLICATE  exact  in normalized_rotation
  crates/render/src/extraction.rs:343  FRAGMENT  3 stmts
  crates/render/src/extraction.rs:345  MAGIC_NUMBER  1e-12
  crates/render/src/frame_exec.rs:1  SRP_MODULE  612 lines
  crates/render/src/frame_exec.rs:77  ERROR_HANDLING  unwrap/panic/todo  in FrameExecutor::ensure_layout
  crates/render/src/frame_exec.rs:86  DEAD_CODE  FrameExecutor::invalidate_layout  in FrameExecutor::invalidate_layout
  crates/render/src/frame_exec.rs:351  DEAD_CODE  PassViews::pass_index  in PassViews<'a>::pass_index
  crates/render/src/frame_exec.rs:356  DEAD_CODE  PassViews::alive  in PassViews<'a>::alive
  crates/render/src/frame_exec.rs:366  DEAD_CODE  PassViews::slot_of  in PassViews<'a>::slot_of
  crates/render/src/frame_exec.rs:386  ERROR_HANDLING  unwrap/panic/todo  in PassViews<'a>::view_of
  crates/render/src/frame_exec.rs:422  SRP_STRUCT  RenderFrame3D: LCOM4=4
  crates/render/src/frame_exec.rs:467  DEAD_CODE  testonly Technique::composite_mode  in Technique::composite_mode
  crates/render/src/frame_exec.rs:531  VIOLATION  logic + calls  in RenderFrame3D::new_with
  crates/render/src/frame_exec.rs:614  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in RenderFrame3D::ids
  crates/render/src/frame_exec.rs:619  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in RenderFrame3D::technique
  crates/render/src/frame_exec.rs:624  DEAD_CODE  RenderFrame3D::bloom_enabled  in RenderFrame3D::bloom_enabled
  crates/render/src/frame_exec.rs:624  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in RenderFrame3D::bloom_enabled
  crates/render/src/frame_exec.rs:629  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in RenderFrame3D::systems
  crates/render/src/frame_exec.rs:636  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in RenderFrame3D::systems_mut
  crates/render/src/frame_exec.rs:650  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in RenderFrame3D::set_parallel_recording
  crates/render/src/frame_exec.rs:655  DEAD_CODE  testonly RenderFrame3D::parallel_recording  in RenderFrame3D::parallel_recording
  crates/render/src/frame_exec.rs:655  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in RenderFrame3D::parallel_recording
  crates/render/src/frame_exec.rs:687  SRP_STRUCTURAL  NMS  in RenderFrame3D::render
  crates/render/src/frame_exec.rs:750  DEAD_CODE  testonly RenderFrame3D::render_schedule  in RenderFrame3D::render_schedule
  crates/render/src/frame_exec.rs:750  SRP_STRUCTURAL  NMS  in RenderFrame3D::render_schedule
  crates/render/src/frame_exec.rs:802  SRP_STRUCTURAL  NMS  in RenderFrame3D::render_to_buffers
  crates/render/src/frame_passes.rs:1  SRP_MODULE  445 lines
  crates/render/src/gpu_resources.rs:170  SRP_PARAMS  7 params  in install_gpu_resources
  crates/render/src/gpu_resources.rs:170  TQ_UNTESTED  install_gpu_resources  in install_gpu_resources
  crates/render/src/gpu_resources.rs:266  ERROR_HANDLING  unwrap/panic/todo  in RenderSubmit::run
  crates/render/src/gpu_resources.rs:341  LONG_FN  115 lines  in RenderPresent::run
  crates/render/src/gpu_resources.rs:341  UNSAFE  1 blocks  in RenderPresent::run
  crates/render/src/gpu_resources.rs:341  ERROR_HANDLING  unwrap/panic/todo  in RenderPresent::run
  crates/render/src/mesh.rs:33  BOILERPLATE  BP-009 Struct update boilerplate  in Vertex::desc
  crates/render/src/mesh.rs:44  MAGIC_NUMBER  3
  crates/render/src/mesh.rs:49  MAGIC_NUMBER  3
  crates/render/src/mesh.rs:54  MAGIC_NUMBER  3
  crates/render/src/mesh.rs:56  MAGIC_NUMBER  3
  crates/render/src/mesh.rs:67  BOILERPLATE  BP-009 Struct update boilerplate  in create_sphere
  crates/render/src/mesh.rs:71  MAGIC_NUMBER  3
  crates/render/src/mesh.rs:73  MAGIC_NUMBER  2.0
  crates/render/src/mesh.rs:77  MAGIC_NUMBER  2.0
  crates/render/src/render_backend.rs:106  WILDCARD  super::*
  crates/render/src/render_backend.rs:292  LONG_FN  237 lines  in golden_full_scene_probe_matches_snapshot
  crates/render/src/render_backend.rs:463  FRAGMENT  3 stmts
  crates/render/src/renderer.rs:1  SRP_MODULE  1846 lines
  crates/render/src/renderer.rs:201  DEAD_TYPE  struct CompositeResources
  crates/render/src/renderer.rs:256  MAGIC_NUMBER  256
  crates/render/src/renderer.rs:257  MAGIC_NUMBER  64
  crates/render/src/renderer.rs:330  BOILERPLATE  BP-009 Struct update boilerplate  in Renderer3D::create_core_buffers
  crates/render/src/renderer.rs:370  MAGIC_NUMBER  0.03
  crates/render/src/renderer.rs:370  MAGIC_NUMBER  0.03
  crates/render/src/renderer.rs:370  MAGIC_NUMBER  0.05
  crates/render/src/renderer.rs:372  MAGIC_NUMBER  4
  crates/render/src/renderer.rs:373  MAGIC_NUMBER  4
  crates/render/src/renderer.rs:374  MAGIC_NUMBER  4
  crates/render/src/renderer.rs:376  MAGIC_NUMBER  3
  crates/render/src/renderer.rs:392  BOILERPLATE  BP-009 Struct update boilerplate  in Renderer3D::create_pbr_bind_group
  crates/render/src/renderer.rs:430  MAGIC_NUMBER  3
  crates/render/src/renderer.rs:459  MAGIC_NUMBER  3
  crates/render/src/renderer.rs:560  LONG_FN  114 lines  in Renderer3D::create_gbuffer
  crates/render/src/renderer.rs:560  BOILERPLATE  BP-009 Struct update boilerplate  in Renderer3D::create_gbuffer

@github-actions

github-actions Bot commented Sep 7, 2026 •

Copy link
Copy Markdown
Full quality.log (run 34149520691) — part 3/6
  crates/render/src/renderer.rs:680  LONG_FN  140 lines  in Renderer3D::create_gbuffer_pipeline
  crates/render/src/renderer.rs:680  BOILERPLATE  BP-009 Struct update boilerplate  in Renderer3D::create_gbuffer_pipeline
  crates/render/src/renderer.rs:680  SRP_PARAMS  6 params  in Renderer3D::create_gbuffer_pipeline
  crates/render/src/renderer.rs:743  FRAGMENT  3 stmts
  crates/render/src/renderer.rs:743  FRAGMENT  3 stmts
  crates/render/src/renderer.rs:828  LONG_FN  178 lines  in Renderer3D::create_lighting_pass
  crates/render/src/renderer.rs:828  BOILERPLATE  BP-009 Struct update boilerplate  in Renderer3D::create_lighting_pass
  crates/render/src/renderer.rs:867  MAGIC_NUMBER  3
  crates/render/src/renderer.rs:877  MAGIC_NUMBER  4
  crates/render/src/renderer.rs:887  MAGIC_NUMBER  5
  crates/render/src/renderer.rs:897  MAGIC_NUMBER  6
  crates/render/src/renderer.rs:907  MAGIC_NUMBER  7
  crates/render/src/renderer.rs:917  MAGIC_NUMBER  8
  crates/render/src/renderer.rs:927  MAGIC_NUMBER  9
  crates/render/src/renderer.rs:946  FRAGMENT  3 stmts
  crates/render/src/renderer.rs:946  FRAGMENT  3 stmts
  crates/render/src/renderer.rs:1014  LONG_FN  154 lines  in Renderer3D::create_forward_pass
  crates/render/src/renderer.rs:1014  BOILERPLATE  BP-009 Struct update boilerplate  in Renderer3D::create_forward_pass
  crates/render/src/renderer.rs:1014  SRP_PARAMS  8 params  in Renderer3D::create_forward_pass
  crates/render/src/renderer.rs:1058  MAGIC_NUMBER  3
  crates/render/src/renderer.rs:1087  MAGIC_NUMBER  3
  crates/render/src/renderer.rs:1109  FRAGMENT  3 stmts
  crates/render/src/renderer.rs:1109  FRAGMENT  3 stmts
  crates/render/src/renderer.rs:1178  BOILERPLATE  BP-009 Struct update boilerplate  in Renderer3D::create_composite_pass
  crates/render/src/renderer.rs:1297  VIOLATION  logic + calls  in Renderer3D::create_bloom_pass
  crates/render/src/renderer.rs:1297  LONG_FN  92 lines  in Renderer3D::create_bloom_pass
  crates/render/src/renderer.rs:1297  ERROR_HANDLING  unwrap/panic/todo  in Renderer3D::create_bloom_pass
  crates/render/src/renderer.rs:1297  BOILERPLATE  BP-009 Struct update boilerplate  in Renderer3D::create_bloom_pass
  crates/render/src/renderer.rs:1438  VIOLATION  logic + calls  in Renderer3D::resize
  crates/render/src/renderer.rs:1494  DEAD_CODE  Renderer3D::pbr_view  in Renderer3D::pbr_view
  crates/render/src/renderer.rs:1542  MAGIC_NUMBER  4
  crates/render/src/renderer.rs:1544  MAGIC_NUMBER  4
  crates/render/src/renderer.rs:1545  MAGIC_NUMBER  4
  crates/render/src/renderer.rs:1546  MAGIC_NUMBER  4
  crates/render/src/renderer.rs:1564  MAGIC_NUMBER  3
  crates/render/src/renderer.rs:1586  MAGIC_NUMBER  4
  crates/render/src/renderer.rs:1586  MAGIC_NUMBER  4
  crates/render/src/renderer.rs:1587  MAGIC_NUMBER  4
  crates/render/src/renderer.rs:1587  MAGIC_NUMBER  4
  crates/render/src/renderer.rs:1592  MAGIC_NUMBER  3
  crates/render/src/renderer.rs:1604  BOILERPLATE  BP-009 Struct update boilerplate  in Renderer3D::render_gbuffer
  crates/render/src/renderer.rs:1733  MAGIC_NUMBER  3
  crates/render/src/renderer.rs:1737  MAGIC_NUMBER  4
  crates/render/src/renderer.rs:1741  MAGIC_NUMBER  5
  crates/render/src/renderer.rs:1745  MAGIC_NUMBER  6
  crates/render/src/renderer.rs:1749  MAGIC_NUMBER  7
  crates/render/src/renderer.rs:1753  MAGIC_NUMBER  8
  crates/render/src/renderer.rs:1757  MAGIC_NUMBER  9
  crates/render/src/renderer.rs:1787  MAGIC_NUMBER  4
  crates/render/src/renderer.rs:1794  SRP_PARAMS  6 params  in Renderer3D::render_forward
  crates/render/src/renderer.rs:1884  MAGIC_NUMBER  3
  crates/render/src/renderer.rs:1888  MAGIC_NUMBER  4
  crates/render/src/renderer.rs:1920  MAGIC_NUMBER  4
  crates/render/src/renderer.rs:1927  SRP_PARAMS  6 params  in Renderer3D::render_scene
  crates/render/src/renderer.rs:1973  SRP_PARAMS  6 params  in Renderer3D::render_bloom_down
  crates/render/src/renderer.rs:2030  MAGIC_NUMBER  4
  crates/render/src/renderer.rs:2081  MAGIC_NUMBER  4
  crates/render/src/shaders/bloom_generated.rs:73  DEAD_CODE  wgsl_source_static  in wgsl_source_static
  crates/render/src/shaders/composite_generated.rs:77  DEAD_CODE  wgsl_source_static  in wgsl_source_static
  crates/render/src/shaders/lighting_generated.rs:1  SRP_MODULE  363 lines
  crates/render/src/shaders/lighting_generated.rs:398  DEAD_CODE  wgsl_source_static  in wgsl_source_static
  crates/render/src/shaders/math.rs:1  SRP_MODULE  226 lines
  crates/render/src/shaders/math.rs:28  DEAD_CODE  aces_tonemap  in aces_tonemap
  crates/render/src/shaders/math.rs:29  MAGIC_NUMBER  2.51
  crates/render/src/shaders/math.rs:30  MAGIC_NUMBER  0.03
  crates/render/src/shaders/math.rs:31  MAGIC_NUMBER  2.43
  crates/render/src/shaders/math.rs:32  MAGIC_NUMBER  0.59
  crates/render/src/shaders/math.rs:33  MAGIC_NUMBER  0.14
  crates/render/src/shaders/math.rs:39  DEAD_CODE  fresnel0_from_ior  in fresnel0_from_ior
  crates/render/src/shaders/math.rs:46  DEAD_CODE  fresnel_schlick  in fresnel_schlick
  crates/render/src/shaders/math.rs:47  MAGIC_NUMBER  5.0
  crates/render/src/shaders/math.rs:52  DEAD_CODE  fresnel_schlick_vec  in fresnel_schlick_vec
  crates/render/src/shaders/math.rs:53  MAGIC_NUMBER  5.0
  crates/render/src/shaders/math.rs:60  DEAD_CODE  fresnel_f82_tint  in fresnel_f82_tint
  crates/render/src/shaders/math.rs:61  MAGIC_NUMBER  7.0
  crates/render/src/shaders/math.rs:62  MAGIC_NUMBER  5.0
  crates/render/src/shaders/math.rs:64  MAGIC_NUMBER  6.0
  crates/render/src/shaders/math.rs:65  MAGIC_NUMBER  6.0
  crates/render/src/shaders/math.rs:67  MAGIC_NUMBER  5.0
  crates/render/src/shaders/math.rs:74  DEAD_CODE  ggx_ndf  in ggx_ndf
  crates/render/src/shaders/math.rs:82  DEAD_CODE  ggx_ndf_aniso  in ggx_ndf_aniso
  crates/render/src/shaders/math.rs:82  SRP_PARAMS  6 params  in ggx_ndf_aniso
  crates/render/src/shaders/math.rs:101  DEAD_CODE  openpbr_anisotropy  in openpbr_anisotropy
  crates/render/src/shaders/math.rs:106  MAGIC_NUMBER  2.0
  crates/render/src/shaders/math.rs:116  DEAD_CODE  smith_ggx_correlated  in smith_ggx_correlated
  crates/render/src/shaders/math.rs:120  MAGIC_NUMBER  0.5
  crates/render/src/shaders/math.rs:125  DEAD_CODE  smith_ggx_aniso  in smith_ggx_aniso
  crates/render/src/shaders/math.rs:125  SRP_PARAMS  8 params  in smith_ggx_aniso
  crates/render/src/shaders/math.rs:143  MAGIC_NUMBER  0.5
  crates/render/src/shaders/math.rs:148  DEAD_CODE  oren_nayar_brdf  in oren_nayar_brdf
  crates/render/src/shaders/math.rs:151  MAGIC_NUMBER  0.5
  crates/render/src/shaders/math.rs:151  MAGIC_NUMBER  0.57
  crates/render/src/shaders/math.rs:152  MAGIC_NUMBER  0.45
  crates/render/src/shaders/math.rs:152  MAGIC_NUMBER  0.09
  crates/render/src/shaders/math.rs:163  DEAD_CODE  sheen_brdf  in sheen_brdf
  crates/render/src/shaders/math.rs:165  MAGIC_NUMBER  2.0
  crates/render/src/shaders/math.rs:166  MAGIC_NUMBER  2.0
  crates/render/src/shaders/math.rs:168  MAGIC_NUMBER  4.0
  crates/render/src/shaders/math.rs:174  DEAD_CODE  transmission_color_to_extinction  in transmission_color_to_extinction
  crates/render/src/shaders/math.rs:181  MAGIC_NUMBER  1e-6
  crates/render/src/shaders/math.rs:188  DEAD_CODE  subsurface_brdf  in subsurface_brdf
  crates/render/src/shaders/math.rs:195  MAGIC_NUMBER  3.0
  crates/render/src/shaders/math.rs:203  DEAD_CODE  srgb_to_linear  in srgb_to_linear
  crates/render/src/shaders/math.rs:204  MAGIC_NUMBER  0.04045
  crates/render/src/shaders/math.rs:206  MAGIC_NUMBER  12.92
  crates/render/src/shaders/math.rs:208  MAGIC_NUMBER  0.055
  crates/render/src/shaders/math.rs:208  MAGIC_NUMBER  1.055
  crates/render/src/shaders/math.rs:208  MAGIC_NUMBER  2.4
  crates/render/src/shaders/math.rs:211  MAGIC_NUMBER  12.92
  crates/render/src/shaders/math.rs:213  MAGIC_NUMBER  0.055
  crates/render/src/shaders/math.rs:213  MAGIC_NUMBER  1.055
  crates/render/src/shaders/math.rs:213  MAGIC_NUMBER  2.4
  crates/render/src/shaders/math.rs:216  MAGIC_NUMBER  12.92
  crates/render/src/shaders/math.rs:218  MAGIC_NUMBER  0.055
  crates/render/src/shaders/math.rs:218  MAGIC_NUMBER  1.055
  crates/render/src/shaders/math.rs:218  MAGIC_NUMBER  2.4
  crates/render/src/shaders/math.rs:226  DEAD_CODE  coat_base_darkening  in coat_base_darkening
  crates/render/src/shaders/math.rs:226  SRP_PARAMS  7 params  in coat_base_darkening
  crates/render/src/shaders/math.rs:235  MAGIC_NUMBER  2.0
  crates/render/src/shaders/math.rs:248  MAGIC_NUMBER  1e-6
  crates/render/src/shaders/math.rs:254  DEAD_CODE  coat_blend_darkened  in coat_blend_darkened
  crates/render/src/shaders/math.rs:261  DEAD_CODE  thin_film_modulation  in thin_film_modulation
  crates/render/src/shaders/math.rs:269  MAGIC_NUMBER  650.0
  crates/render/src/shaders/math.rs:269  MAGIC_NUMBER  550.0
  crates/render/src/shaders/math.rs:269  MAGIC_NUMBER  450.0
  crates/render/src/shaders/math.rs:270  MAGIC_NUMBER  4.0
  crates/render/src/shaders/math.rs:271  MAGIC_NUMBER  2.0
  crates/render/src/shaders/math.rs:274  MAGIC_NUMBER  2.0
  crates/render/src/shaders/math.rs:280  DEAD_CODE  octahedral_encode  in octahedral_encode
  crates/render/src/shaders/math.rs:283  MAGIC_NUMBER  -1.0
  crates/render/src/shaders/math.rs:284  MAGIC_NUMBER  -1.0
  crates/render/src/shaders/mod.rs:39  DEAD_CODE  testonly bloom_fragment  in bloom_fragment
  crates/render/src/shaders/mod.rs:66  DEAD_CODE  testonly lighting_vertex  in lighting_vertex
  crates/render/src/shaders/mod.rs:73  DEAD_CODE  testonly lighting_fragment  in lighting_fragment
  crates/render/src/shaders/mod.rs:121  DEAD_CODE  testonly octahedral_decode_rust  in octahedral_decode_rust
  crates/render/src/system.rs:1  SRP_MODULE  487 lines
  crates/render/src/system.rs:238  ERROR_HANDLING  unwrap/panic/todo  in Resolver<'a>::view
  crates/render/src/system.rs:422  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in SystemSet::generation
  crates/render/src/system.rs:470  DEAD_CODE  SystemSet::resolve_resource  in SystemSet::resolve_resource
  crates/render/src/system.rs:505  ERROR_HANDLING  unwrap/panic/todo  in SystemSet::order_before
  crates/render/src/system.rs:533  ERROR_HANDLING  unwrap/panic/todo  in SystemSet::order_before_named
  crates/render/src/system.rs:533  DEAD_CODE  testonly SystemSet::order_before_named  in SystemSet::order_before_named
  crates/render/src/system.rs:554  ERROR_HANDLING  unwrap/panic/todo  in SystemSet::set_pass_enabled
  crates/render/src/system.rs:554  DEAD_CODE  testonly SystemSet::set_pass_enabled  in SystemSet::set_pass_enabled
  crates/render/src/system.rs:570  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in SystemSet::budget
  crates/render/src/system.rs:588  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in SystemSet::pass_nodes
  crates/render/src/system.rs:609  BOILERPLATE  BP-003 Trivial getter/setter (consider field visibility)  in SystemSet::ordering_edges
  crates/render/src/system.rs:620  ERROR_HANDLING  unwrap/panic/todo  in SystemSet::layout
  crates/render/src/system.rs:634  ERROR_HANDLING  unwrap/panic/todo  in SystemSet::try_layout
  crates/render/src/system.rs:687  ERROR_HANDLING  unwrap/panic/todo  in SystemSet::resource_id
  crates/render/src/system.rs:687  DEAD_CODE  SystemSet::resource_id  in SystemSet::resource_id
  crates/render/src/transform.rs:27  DEAD_CODE  testonly Transform::from_position  in Transform::from_position
  crates/render/src/transform.rs:36  DEAD_CODE  testonly Transform::matrix  in Transform::matrix
  crates/render/src/transient_pool.rs:1  SRP_MODULE  509 lines
  crates/render/src/transient_pool.rs:30  ERROR_HANDLING  unwrap/panic/todo  in format_bytes_per_pixel
  crates/render/src/transient_pool.rs:38  MAGIC_NUMBER  4
  crates/render/src/transient_pool.rs:39  MAGIC_NUMBER  8
  crates/render/src/transient_pool.rs:40  MAGIC_NUMBER  16
  crates/render/src/transient_pool.rs:266  BOILERPLATE  BP-010 Format string repetition
  crates/render/src/transient_pool.rs:275  BOILERPLATE  BP-010 Format string repetition
  crates/render/src/transient_pool.rs:389  DEAD_CODE  testonly Budget::gpu_textures  in Budget::gpu_textures
  crates/render/src/transient_pool.rs:715  SRP_STRUCTURAL  SLM  in TransientPool::compile
  crates/render/src/transient_pool.rs:1180  FRAGMENT  3 stmts
  crates/render/src/transient_pool.rs:1198  FRAGMENT  3 stmts
  crates/render/tests/common/mod.rs:72  FRAGMENT  4 stmts
  crates/render/tests/common/mod.rs:82  FRAGMENT  5 stmts
  crates/rhai/src/lib.rs:70  DUPLICATE  exact  in decode_call_args
  crates/rhai/src/lib.rs:71  FRAGMENT  3 stmts
  crates/rhai/src/lib.rs:273  DUPLICATE  exact  in call_round_trips_mixed_shapes
  crates/rhai/src/lib.rs:294  DUPLICATE  exact  in hot_reload_replaces_and_keeps_old_on_failure
  crates/rhai/src/lib.rs:306  DUPLICATE  exact  in batch_collects_per_call_outcomes
  crates/rhai/src/lib.rs:307  FRAGMENT  4 stmts
  crates/rhai/src/lib.rs:307  FRAGMENT  4 stmts
  crates/rune/src/lib.rs:33  DEAD_TYPE  testonly struct RuneScriptEngine
  crates/rune/src/lib.rs:121  ERROR_HANDLING  unwrap/panic/todo  in RuneScriptEngine::default
  crates/rune/src/lib.rs:133  DUPLICATE  exact  in decode_call_args
  crates/rune/src/lib.rs:134  FRAGMENT  3 stmts
  crates/rune/src/lib.rs:151  VIOLATION  logic + calls  in json_to_value
  crates/rune/src/lib.rs:155  BOILERPLATE  BP-010 Format string repetition
  crates/rune/src/lib.rs:198  VIOLATION  logic + calls  in value_to_json
  crates/rune/src/lib.rs:226  COUPLING_STRUCTURAL  DEH
  crates/rune/src/lib.rs:270  VIOLATION  logic + calls  in RuneScriptEngine::hot_reload
  crates/rune/src/lib.rs:307  DUPLICATE  exact  in call_round_trips_mixed_shapes
  crates/rune/src/lib.rs:318  DUPLICATE  exact  in call_round_trips_objects_through_maps
  crates/rune/src/lib.rs:338  DUPLICATE  exact  in hot_reload_replaces_and_keeps_old_on_failure
  crates/rune/src/lib.rs:353  DUPLICATE  exact  in batch_collects_per_call_outcomes
  crates/rune/src/lib.rs:354  FRAGMENT  4 stmts
  crates/rune/src/lib.rs:354  FRAGMENT  4 stmts
  crates/wasm/src/lib.rs:1  SRP_MODULE  731 lines
  crates/wasm/src/lib.rs:99  TQ_UNTESTED  fetch_live_scene  in fetch_live_scene
  crates/wasm/src/lib.rs:124  TQ_UNTESTED  build_gpu_scene  in build_gpu_scene
  crates/wasm/src/lib.rs:146  TQ_UNTESTED  attach_orbit_controls  in attach_orbit_controls
  crates/wasm/src/lib.rs:226  TQ_UNTESTED  setup_input  in setup_input
  crates/wasm/src/lib.rs:240  TQ_UNTESTED  attach_gameplay_keys  in attach_gameplay_keys
  crates/wasm/src/lib.rs:338  TQ_UNTESTED  post_input_snapshot  in post_input_snapshot
  crates/wasm/src/lib.rs:392  TQ_UNTESTED  get_canvas  in get_canvas
  crates/wasm/src/lib.rs:403  TQ_UNTESTED  resize_canvas_to_parent  in resize_canvas_to_parent
  crates/wasm/src/lib.rs:410  TQ_UNTESTED  make_instance  in make_instance
  crates/wasm/src/lib.rs:431  LONG_FN  81 lines  in init_webgpu
  crates/wasm/src/lib.rs:431  UNSAFE  1 blocks  in init_webgpu
  crates/wasm/src/lib.rs:431  TQ_UNTESTED  init_webgpu  in init_webgpu
  crates/wasm/src/lib.rs:517  TQ_UNTESTED  pick_surface_format  in pick_surface_format
  crates/wasm/src/lib.rs:540  TQ_UNTESTED  load_initial_scene  in load_initial_scene
  crates/wasm/src/lib.rs:583  TQ_UNTESTED  handle_resize  in handle_resize
  crates/wasm/src/lib.rs:609  TQ_UNTESTED  apply_live_scene  in apply_live_scene
  crates/wasm/src/lib.rs:638  TQ_UNTESTED  maybe_post_input  in maybe_post_input
  crates/wasm/src/lib.rs:652  TQ_UNTESTED  sync_input  in sync_input
  crates/wasm/src/lib.rs:667  ERROR_HANDLING  unwrap/panic/todo  in FrameState<'a>::update_camera
  crates/wasm/src/lib.rs:667  TQ_UNTESTED  update_camera  in update_camera
  crates/wasm/src/lib.rs:706  TQ_UNTESTED  reconfigure  in reconfigure
  crates/wasm/src/lib.rs:712  TQ_UNTESTED  log_frame_milestone  in log_frame_milestone
  crates/wasm/src/lib.rs:721  MAGIC_NUMBER  600
  crates/wasm/src/lib.rs:740  TQ_UNTESTED  poll_live_scene  in poll_live_scene
  crates/wasm/src/lib.rs:788  DEAD_CODE  start_renderer  in start_renderer
  crates/wasm/src/lib.rs:851  LONG_FN  97 lines  in spawn_render_loop
  crates/wasm/src/lib.rs:851  ERROR_HANDLING  unwrap/panic/todo  in spawn_render_loop
  crates/wasm/src/lib.rs:851  SRP_PARAMS  7 params  in spawn_render_loop
  crates/wasm/src/lib.rs:851  TQ_UNTESTED  spawn_render_loop  in spawn_render_loop
  crates/wasm/src/lib.rs:903  MAGIC_NUMBER  60.0
  crates/wasm/src/lib.rs:959  TQ_UNTESTED  fetch_api_text  in fetch_api_text
  crates/wgpu_backend/src/command_sync.rs:67  DEAD_CODE  CommandSync::dispatch_auto  in CommandSync::dispatch_auto
  crates/wgpu_backend/src/context.rs:28  DEAD_CODE  testonly WgpuContext::new_blocking  in WgpuContext::new_blocking
  crates/wgpu_backend/src/execute.rs:60  MAGIC_NUMBER  64
  crates/wgpu_backend/src/execute.rs:105  SRP_PARAMS  7 params  in dispatch_with
  crates/wgpu_backend/src/execute.rs:143  TQ_NO_SUT  cpu_executor_is_zst  in cpu_executor_is_zst
  crates/wgpu_backend/src/execute.rs:148  TQ_NO_SUT  gpu_executor_is_zst  in gpu_executor_is_zst
  crates/wgpu_backend/src/execute.rs:153  DUPLICATE  exact  in dispatch_lane_compiles_for_cpu
  crates/wgpu_backend/src/execute.rs:164  DUPLICATE  exact  in dispatch_lane_compiles_for_gpu
  crates/wgpu_backend/src/leak.rs:41  SRP_PARAMS  6 params  in leak_wgsl_typed
  crates/wgpu_backend/src/leak.rs:95  SRP_PARAMS  8 params  in LeakDispatch::new
  crates/wgpu_backend/src/profiler.rs:47  TQ_UNTESTED  config_path  in config_path
  crates/wgpu_backend/src/profiler.rs:57  VIOLATION  logic + calls  in AutoProfiler::load_or_calibrate
  crates/wgpu_backend/src/profiler.rs:57  DEAD_CODE  AutoProfiler::load_or_calibrate  in AutoProfiler::load_or_calibrate
  crates/wgpu_backend/src/profiler.rs:108  LONG_FN  98 lines  in AutoProfiler::bench_gpu
  crates/wgpu_backend/src/profiler.rs:108  BOILERPLATE  BP-009 Struct update boilerplate  in AutoProfiler::bench_gpu
  crates/wgpu_backend/src/profiler.rs:172  MAGIC_NUMBER  64
  crates/wgpu_backend/src/profiler.rs:193  MAGIC_NUMBER  64
  crates/wgpu_backend/src/profiler.rs:215  MAGIC_NUMBER  2.0
  crates/wgpu_backend/src/pso_cache.rs:52  DEAD_CODE  testonly PsoCache::get_or_create  in PsoCache::get_or_create
  crates/wgpu_backend/src/router.rs:30  DEAD_CODE  PipelineRouter::execution_target  in PipelineRouter::execution_target
  crates/wgpu_backend/src/smart_buffer.rs:84  DEAD_CODE  testonly SmartBuffer::cpu_data_mut  in SmartBuffer<T>::cpu_data_mut
  crates/wgpu_backend/src/smart_buffer.rs:91  DEAD_CODE  testonly SmartBuffer::mark_gpu_dirty  in SmartBuffer<T>::mark_gpu_dirty
  crates/wgpu_backend/src/smart_buffer.rs:96  DEAD_CODE  testonly SmartBuffer::flags  in SmartBuffer<T>::flags
  crates/wgpu_backend/src/smart_buffer.rs:101  DEAD_CODE  testonly SmartBuffer::sync_to_gpu  in SmartBuffer<T>::sync_to_gpu
  crates/wgpu_backend/src/smart_buffer.rs:117  ERROR_HANDLING  unwrap/panic/todo  in SmartBuffer<T>::sync_to_cpu_blocking
  crates/wgpu_backend/src/smart_buffer.rs:117  DEAD_CODE  testonly SmartBuffer::sync_to_cpu_blocking  in SmartBuffer<T>::sync_to_cpu_blocking
  crates/wgpu_backend/src/smart_buffer.rs:159  DEAD_CODE  testonly SmartBuffer::ensure_gpu_buffer  in SmartBuffer<T>::ensure_gpu_buffer
  src/editor_world.rs:1  SRP_MODULE  1046 lines
  src/editor_world.rs:138  SRP_STRUCT  EditorWorld: LCOM4=5
  src/editor_world.rs:159  MAGIC_NUMBER  -9.81
  src/editor_world.rs:205  ERROR_HANDLING  unwrap/panic/todo  in EditorWorld::tick
  src/editor_world.rs:297  ERROR_HANDLING  unwrap/panic/todo  in EditorWorld::store
  src/editor_world.rs:304  ERROR_HANDLING  unwrap/panic/todo  in EditorWorld::store_mut
  src/editor_world.rs:311  ERROR_HANDLING  unwrap/panic/todo  in EditorWorld::environment
  src/editor_world.rs:319  ERROR_HANDLING  unwrap/panic/todo  in EditorWorld::environment_mut
  src/editor_world.rs:449  SRP_STRUCTURAL  NMS  in EditorWorld::handle_command
  src/editor_world.rs:464  BOILERPLATE  BP-008 Clone-heavy conversion  in to_scene
  src/editor_world.rs:488  ERROR_HANDLING  unwrap/panic/todo  in scene_json
  src/editor_world.rs:595  ERROR_HANDLING  unwrap/panic/todo  in apply_browser_input
  src/editor_world.rs:699  SRP_PARAMS  6 params  in handle_set_component
  src/editor_world.rs:745  LONG_FN  136 lines  in handle_custom
  src/editor_world.rs:991  VIOLATION  logic + calls  in physics_body_for
  src/editor_world.rs:1126  BOILERPLATE  BP-010 Format string repetition
  src/editor_world.rs:1353  ERROR_HANDLING  unwrap/panic/todo  in run
  src/editor_world.rs:1371  MAGIC_NUMBER  16
  src/editor_world.rs:1379  MAGIC_NUMBER  60.0
  src/engine_runtime.rs:231  ERROR_HANDLING  unwrap/panic/todo  in PhysicsSyncIn::run
  src/engine_runtime.rs:261  ERROR_HANDLING  unwrap/panic/todo  in PhysicsStep::run
  src/engine_runtime.rs:291  ERROR_HANDLING  unwrap/panic/todo  in PhysicsSyncOut::run
  src/engine_runtime.rs:311  VIOLATION  logic + calls  in normalized_rotation
  src/engine_runtime.rs:311  DUPLICATE  exact  in normalized_rotation
  src/engine_runtime.rs:312  FRAGMENT  3 stmts
  src/engine_runtime.rs:314  MAGIC_NUMBER  1e-12
  src/main.rs:1  SRP_MODULE  519 lines
  src/main.rs:46  MAGIC_NUMBER  3420
  src/main.rs:95  WILDCARD  native::*
  src/main.rs:126  LONG_FN  121 lines  in GameApp::initialize
  src/main.rs:126  UNSAFE  2 blocks  in GameApp::initialize
  src/main.rs:126  TQ_UNTESTED  initialize  in initialize
  src/main.rs:133  MAGIC_NUMBER  800
  src/main.rs:133  MAGIC_NUMBER  600
  src/main.rs:165  MAGIC_NUMBER  8
  src/main.rs:215  MAGIC_NUMBER  32
  src/main.rs:215  MAGIC_NUMBER  24
  src/main.rs:238  MAGIC_NUMBER  32
  src/main.rs:238  MAGIC_NUMBER  24
  src/main.rs:252  VIOLATION  logic + calls  in GameApp::showcase_engine
  src/main.rs:252  ERROR_HANDLING  unwrap/panic/todo  in GameApp::showcase_engine
  src/main.rs:252  TQ_UNTESTED  showcase_engine  in showcase_engine
  src/main.rs:261  MAGIC_NUMBER  -9.81
  src/main.rs:291  MAGIC_NUMBER  -2.0
  src/main.rs:291  MAGIC_NUMBER  20.0
  src/main.rs:291  MAGIC_NUMBER  20.0
  src/main.rs:298  TQ_UNTESTED  update_input  in update_input
  src/main.rs:310  VIOLATION  logic + calls  in GameApp::process_remote_commands
  src/main.rs:310  TQ_UNTESTED  process_remote_commands  in process_remote_commands
  src/main.rs:350  TQ_UNTESTED  execute_native_command  in execute_native_command
  src/main.rs:394  ERROR_HANDLING  unwrap/panic/todo  in GameApp::apply_browser_input
  src/main.rs:416  TQ_UNTESTED  render_frame  in render_frame
  src/main.rs:421  MAGIC_NUMBER  60.0
  src/main.rs:435  MAGIC_NUMBER  3420
  src/main.rs:447  COUPLING_STRUCTURAL  DEH
  src/main.rs:449  COUPLING_STRUCTURAL  DEH
  src/main.rs:458  VIOLATION  logic + calls  in GameApp::window_event
  src/main.rs:458  LONG_FN  122 lines  in GameApp::window_event
  src/main.rs:458  ERROR_HANDLING  unwrap/panic/todo  in GameApp::window_event
  src/main.rs:555  MAGIC_NUMBER  3
  src/main.rs:556  MAGIC_NUMBER  4
  src/main.rs:575  MAGIC_NUMBER  100.0
  src/main.rs:586  VIOLATION  logic + calls  in GameApp::about_to_wait
  src/main.rs:603  TQ_UNTESTED  remote_editor_requested  in remote_editor_requested
  src/main.rs:608  ERROR_HANDLING  unwrap/panic/todo  in main
  xtask/src/main.rs:69  ERROR_HANDLING  unwrap/panic/todo  in run
  xtask/src/main.rs:79  TQ_UNTESTED  which  in which
  xtask/src/main.rs:89  LONG_FN  86 lines  in editor
  xtask/src/main.rs:89  TQ_UNTESTED  editor  in editor
  xtask/src/quality.rs:1  SRP_MODULE  989 lines
  xtask/src/quality.rs:78  TQ_UNTESTED  total_stages  in total_stages
  xtask/src/quality.rs:79  MAGIC_NUMBER  11
  xtask/src/quality.rs:116  TQ_UNTESTED  cargo  in cargo
  xtask/src/quality.rs:121  COGNITIVE  complexity 27  in rustqual_stage
  xtask/src/quality.rs:121  LONG_FN  179 lines  in rustqual_stage
  xtask/src/quality.rs:121  BOILERPLATE  BP-009 Struct update boilerplate  in rustqual_stage
  xtask/src/quality.rs:121  TQ_UNTESTED  rustqual_stage  in rustqual_stage
  xtask/src/quality.rs:150  BOILERPLATE  BP-010 Format string repetition
  xtask/src/quality.rs:260  BOILERPLATE  BP-010 Format string repetition
  xtask/src/quality.rs:280  BOILERPLATE  BP-010 Format string repetition
  xtask/src/quality.rs:290  BOILERPLATE  BP-010 Format string repetition
  xtask/src/quality.rs:302  LONG_FN  89 lines  in level1
  xtask/src/quality.rs:302  TQ_UNTESTED  level1  in level1
  xtask/src/quality.rs:392  BOILERPLATE  BP-009 Struct update boilerplate  in dependencies_upgrade_stage
  xtask/src/quality.rs:392  TQ_UNTESTED  dependencies_upgrade_stage  in dependencies_upgrade_stage
  xtask/src/quality.rs:473  TQ_UNTESTED  full_stages  in full_stages
  xtask/src/quality.rs:495  TQ_UNTESTED  bench_stage  in bench_stage
  xtask/src/quality.rs:507  TQ_UNTESTED  ci_stages  in ci_stages
  xtask/src/quality.rs:538  TQ_UNTESTED  deep_stages  in deep_stages
  xtask/src/quality.rs:590  VIOLATION  logic + calls  in quality
  xtask/src/quality.rs:590  TQ_UNTESTED  quality  in quality
  xtask/src/quality.rs:654  LONG_FN  92 lines  in run_stage
  xtask/src/quality.rs:654  BOILERPLATE  BP-009 Struct update boilerplate  in run_stage
  xtask/src/quality.rs:654  SRP_PARAMS  6 params  in run_stage
  xtask/src/quality.rs:762  CYCLOMATIC  complexity 23  in annotate_stage_failure
  xtask/src/quality.rs:799  MAGIC_NUMBER  15
  xtask/src/quality.rs:805  MAGIC_NUMBER  40
  xtask/src/quality.rs:809  BOILERPLATE  BP-010 Format string repetition
  xtask/src/quality.rs:842  NESTING  depth 5  in strip_ansi
  xtask/src/quality.rs:875  MAGIC_NUMBER  220
  xtask/src/quality.rs:877  MAGIC_NUMBER  220
  xtask/src/quality.rs:886  TQ_UNTESTED  print_summary  in print_summary
  xtask/src/quality.rs:947  LONG_FN  87 lines  in smoke_stage
  xtask/src/quality.rs:947  BOILERPLATE  BP-009 Struct update boilerplate  in smoke_stage
  xtask/src/quality.rs:947  TQ_UNTESTED  smoke_stage  in smoke_stage
  xtask/src/quality.rs:975  MAGIC_NUMBER  90
  xtask/src/quality.rs:1008  MAGIC_NUMBER  300
  xtask/src/quality.rs:1013  MAGIC_NUMBER  200
  xtask/src/quality.rs:1037  TQ_UNTESTED  wasm_target_installed  in wasm_target_installed
  xtask/src/quality.rs:1068  ERROR_HANDLING  unwrap/panic/todo  in fuzz
  xtask/src/quality.rs:1118  ERROR_HANDLING  unwrap/panic/todo  in mutants
  xtask/src/quality.rs:1118  TQ_UNTESTED  mutants  in mutants

── Coverage did not answer 135 of the TQ_UNTESTED findings above: no
   report names those functions, so the call graph decided alone. A
   --coverage <lcov> report that covers them would settle it — a function
   a test reaches only through a macro, a trait object or generated code
   is invisible here, but recorded there.

── Fix the findings above. Suppression is a last resort — it needs a written
   reason and re-fires when the code worsens.
   Rule details:       rustqual --explain <RULE-ID>   (e.g. rustqual --explain BP-009)
   Suppression syntax: rustqual --explain allow
Baseline saved to /home/runner/work/ornis/ornis/target/rustqual_cur.json

═══ Baseline Comparison (xtask ratchet) ═══
  Quality: 15.9% → 17.9% (↑ 2.0%)
  Findings:   1813 → 1807 (-6)
  Violations: 128 → 128 (+0)
  IOSP: 92.2% → 92.4% 
── rustqual: PASS (ratchet: equal or improved) ──

═══ [4/13] smoke (editor-only): cargo run --features editor-only (bind 127.0.0.1:3420, 90s) ═══
── smoke (editor-only): PASS ──

═══ [5/13] test: cargo test --workspace ═══

running 33 tests
test ipc::tests::test_ipc_bidirectional ... ok
test ipc::tests::test_ipc_send_command ... ok
test ipc::tests::test_ipc_send_event ... ok
test remote::tests::assets_root_cli_arg_wins ... ok
test remote::tests::build_command_custom_no_data ... ok
test remote::tests::build_command_custom_passthrough ... ok
test remote::tests::build_command_set_component_lane ... ok
test remote::tests::command_ack_json_is_explicit_and_valid ... ok
test remote::tests::command_request_ids_are_monotonic_and_accept_client_ids ... ok
test remote::tests::add_sequence_preserves_snapshot_fields ... ok
test remote::tests::content_type_variants ... ok
test remote::tests::event_log_replays_after_cursor_without_consuming_history ... ok
test remote::tests::drain_game_events_routes_status_and_scene ... ok
test remote::tests::event_cursor_reads_optional_after_query ... ok
test remote::tests::event_log_reports_gap_after_bounded_history_rollover ... ok
test remote::tests::event_records_keep_legacy_event_shape_and_add_cursor_metadata ... ok
test remote::tests::format_events_empty ... ok
test remote::tests::format_events_all_variants ... ok
test remote::tests::format_events_escapes_text_and_invalid_payloads ... ok
test remote::tests::parse_command_payload_accepts_valid_and_rejects_garbage ... ok
test remote::tests::parse_set_component_missing_component ... ok
test remote::tests::parse_set_component_missing_id ... ok
test remote::tests::parse_set_component_no_generation ... ok
test remote::tests::parse_set_component_null_data ... ok
test remote::tests::parse_set_component_valid ... ok
test remote::tests::post_command_garbage_returns_rejections_without_panicking ... ok
test remote::tests::post_command_valid_forwards_to_game_with_ack ... ok
test remote::tests::websocket_accept_matches_rfc6455_example ... ok
test remote::tests::websocket_control_frames_encode_ping_and_normal_close ... ok
test remote::tests::websocket_text_frame_encodes_short_and_extended_lengths ... ok
test remote::tests::serve_static_missing_file_404 ... ok
test remote::tests::serve_static_traversal_blocked ... ok
test remote::tests::serve_static_reads_file ... ok

test result: ok. 33 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s


running 6 tests
test remote_editor_bind_failure_is_safe ... ok
test remote_editor_http_endpoints ... ok
test remote_editor_replays_events_after_cursor ... ok
test remote_editor_websocket_reconnect_reports_gap_after_history_rollover ... ok
test remote_editor_websocket_stream_replays_events ... ok
test remote_editor_websocket_reconnect_resumes_after_cursor ... ok

test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.93s


running 40 tests
test editor_world::tests::create_entity_command_emits_events_and_updates_state ... ok
test editor_world::tests::create_entity_without_name_uses_default ... ok
test editor_world::tests::create_entity_with_component_overrides ... ok
test editor_world::tests::browser_wasd_input_drives_player_through_gameplay ... ok
test editor_world::tests::despawn_recycles_ids_with_new_generation ... ok
test editor_world::tests::editor_world_uses_core_world_for_components_and_environment ... ok
test editor_world::tests::destroy_entity_command_removes_entity ... ok
test editor_world::tests::editor_tick_synchronizes_dynamic_physics_pose ... ok
test editor_world::tests::invalid_commands_emit_error_events_without_mutating ... ok
test editor_world::tests::load_broken_or_missing_file_keeps_world ... ok
test editor_world::tests::list_entities_command_reports_entities ... ok
test editor_world::tests::hot_reload_replaces_world_and_survives_garbage ... ok
test editor_world::tests::request_id_command_emits_correlated_completion ... ok
test editor_world::tests::save_failure_never_leaves_partial_files ... ok
test editor_world::tests::run_thread_loads_startup_scene_and_processes_commands ... ok
test editor_world::tests::scene_json_empty_world ... ok
test editor_world::tests::scene_json_lists_entities_with_full_components ... ok
test editor_world::tests::scene_ron_round_trip ... ok
test editor_world::tests::script_call_round_trips_and_list_shows_module ... ok
test editor_world::tests::scene_watch_fires_once_on_external_change ... ok
test editor_world::tests::save_and_load_file_round_trip ... ok
test editor_world::tests::save_load_commands_emit_events_and_restore_state ... ok
test editor_world::tests::set_component_errors_leave_world_untouched ... ok
test editor_world::tests::script_file_watch_hot_reloads_changed_source ... ok
test editor_world::tests::script_tick_applies_patches_to_world ... ok
test editor_world::tests::set_component_replaces_component_generically ... ok
test editor_world::tests::set_component_material_and_name ... ok
test editor_world::tests::spawn_assigns_names_and_counts ... ok
test engine_runtime::tests::installed_systems_move_dynamic_body_back_into_ecs ... ok
test engine_runtime::tests::physics_accesses_are_declared_for_schedule_enforcement ... ok
test engine_runtime::tests::physics_accumulator_runs_fixed_steps_after_partial_frames ... ok
test editor_world::tests::typed_create_and_destroy_variants ... ok
test engine_runtime::tests::physics_sync_output_is_visible_to_render_lane_reads ... ok
test engine_runtime::tests::removing_component_removes_physics_binding ... ok
test engine_runtime::tests::removing_middle_body_preserves_swap_remove_bindings ... ok
test engine_runtime::tests::render_extract_collects_complete_ecs_entities ... ok
test engine_runtime::tests::render_extract_skips_entities_without_complete_render_components ... ok
test engine_runtime::tests::systems_preserve_static_body_pose ... ok
test editor_world::tests::version_increments_only_on_mutations ... ok
test editor_world::tests::to_scene_round_trip_through_ron_preserves_world ... ok

test result: ok. 40 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s


running 5 tests
test tests::apply_browser_input_replaces_resource ... ok
test tests::unified_runtime_schedules_gameplay_physics_render ... ok
test tests::unified_view_counts_renderables_without_copy ... ok
test tests::velocity_to_body_propagates_to_rigid_body ... ok
test tests::browser_wasd_input_drives_player_through_gameplay_to_physics ... ok

test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s


running 23 tests
test backend::native::tests::distance_attenuation_falls_off ... ok
test backend::native::tests::distance_attenuation_inside_reference ... ok
test backend::native::tests::mix_looping_restarts_cursor ... ok
test backend::native::tests::mix_non_looping_stops_at_end ... ok
test backend::native::tests::mix_non_spatial_stereo ... ok
test backend::native::tests::pan_sample_full_left ... ok
test backend::native::tests::pan_sample_centered ... ok
test backend::native::tests::mix_volume_applied ... ok
test backend::native::tests::pan_sample_full_right ... ok
test backend::native::tests::pan_sample_never_inverts_and_monotonic ... ok
test decoder::tests::decode_file_missing_path_errors ... ok
test decoder::tests::decode_bytes_rejects_garbage ... ok
test engine::tests::listener_gain_ducks_volume ... ok
test engine::tests::step_computes_spatial_params_from_listener ... ok
test engine::tests::step_plays_sources_marked_playing ... ok
test source::tests::audio_clip_duration_secs ... ok
test source::tests::audio_listener_defaults ... ok
test source::tests::audio_source_new_defaults ... ok
test engine::tests::step_skips_already_active_and_stopped ... ok
test source::tests::spatial_params_defaults ... ok
test source::tests::mix_input_binds_clip_and_source ... ok
test decoder::tests::decode_bytes_matches_file ... ok
test decoder::tests::decode_file_reads_real_wav ... ok

test result: ok. 23 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s


running 148 tests
test cold_store::tests::missing_entity_operations ... ok
test cold_store::tests::get_mut_updates_in_place ... ok
test cold_store::tests::insert_get_contains_len ... ok
test cold_store::tests::iter_visits_all_elements ... ok
test command_sync::tests::command_queue_enqueue_drain ... ok
test command_sync::tests::command_queue_enqueue_execute ... ok
test cold_store::tests::remove_returns_value_and_shrinks ... ok
test command_sync::tests::command_queue_dirty_per_type ... ok
test command_sync::tests::command_sync_basic ... ok
test command_sync::tests::command_sync_exposes_real_state ... ok
test command_sync::tests::residency_mark_cpu_sets_residency ... ok
test command_sync::tests::residency_tracker ... ok
test component_store::tests::bitset_tracks_insert ... ok
test component_store::tests::chunked_iter ... ok
test component_store::tests::chunked_iter_mut_exact_multiple_has_no_tail ... ok
test component_store::tests::chunked_iter_mut_size_hint ... ok
test component_store::tests::chunked_iter_mut_sizes_and_tail ... ok
test component_store::tests::defrag_sorts_by_id ... ok
test component_store::tests::clone_preserves_data ... ok
test component_store::tests::defrag_two_unsorted_elements ... ok
test component_store::tests::generation_check ... ok
test component_store::tests::dense_index_returns_index ... ok
test component_store::tests::insert_get_remove ... ok
test component_store::tests::dense_iter ... ok
test component_store::tests::insert_overwrite ... ok
test component_store::tests::is_empty_true_and_false ... ok
test component_store::tests::without_filter ... ok
test component_store::tests::zip_iter ... ok
test dispatcher::tests::cpu_executor_execute_par_reads_lane ... ok
test component_store::tests::zip_iter_size_hint_tracks_remaining ... ok
test component_store::tests::zip_iter_skips_generation_mismatch ... ok
test component_store::tests::rayon_par_iter ... ok
test dispatcher::tests::cpu_executor_mut ... ok
test dispatcher::tests::cpu_executor_read ... ok
test dispatcher::tests::dispatcher_decides_gpu_for_large_data ... ok
test dispatcher::tests::dispatcher_decides_cpu_for_small_data ... ok
test dispatcher::tests::dispatcher_no_gpu_fallback ... ok
test dispatcher::tests::dispatcher_threshold_reported ... ok
test dispatcher::tests::dispatchable_element_count ... ok
test dispatcher::tests::smart_dispatcher_execute_mut_writes ... ok
test dispatcher::tests::smart_dispatcher_cpu_execution ... ok
test engine::tests::engine_keeps_world_and_schedules_together ... ok
test engine::tests::fixed_schedule_preserves_partial_time_and_orders_before_frame ... ok
test engine::tests::fixed_schedule_is_bounded_and_runs_before_frame_schedule ... ok
test engine::tests::fixed_time_rejects_zero_step_cap - should panic ... ok
test engine::tests::fixed_time_rejects_invalid_step - should panic ... ok
test engine::tests::missing_fixed_time_resource_is_recreated_on_next_frame ... ok
test engine::tests::missing_time_resource_is_recreated_on_next_frame ... ok
test entity::tests::allocate_recycle ... ok
test engine::tests::run_frame_publishes_monotonic_time ... ok
test engine::tests::run_frame_rejects_invalid_delta - should panic ... ok
test gameplay::tests::install_with_snapshot_publishes_resource ... ok
test gameplay::tests::render_view_is_optional_and_tracks_unified_world ... ok
test gameplay::tests::player_input_writes_velocity_from_keys ... ok
test gameplay::tests::physics_push_advances_position_at_fixed_rate ... ok
test input::tests::engine_publishes_input_to_systems_before_clearing_deltas ... ok
test gameplay::tests::unified_schedule_levels_are_deterministic ... ok
test material::tests::builders_do_not_disturb_other_fields ... ok
test input::tests::input_state_accumulates_events_and_clears_transients ... ok
test material::tests::color_builders_write_distinct_values ... ok
test material::tests::dielectric_preset_writes_expected_fields ... ok
test material::tests::scalar_builders_write_distinct_values ... ok
test material::tests::test_anisotropy_parameters ... ok
test material::tests::test_coat_builder ... ok
test material::tests::test_coat_darkening_parameter ... ok
test material::tests::test_default_material_is_neutral_dielectric ... ok
test material::tests::test_dielectric_builder ... ok
test material::tests::test_emission_builder ... ok
test material::tests::test_fuzz_builder ... ok
test material::tests::test_fuzz_parameters ... ok
test material::tests::test_glass_builder ... ok
test material::tests::test_metal_builder ... ok
test material::tests::test_opacity_and_thin_walled ... ok
test material::tests::test_openpbr_material_alignment ... ok
test material::tests::test_openpbr_material_size ... ok
test material::tests::test_parameter_clamping ... ok
test material::tests::test_pod_zeroable ... ok
test material::tests::test_subsurface_builder ... ok
test material::tests::test_subsurface_radius_scales ... ok
test material::tests::test_thin_film_builder ... ok
test material::tests::test_transmission_builder ... ok
test material::tests::test_transmission_dispersion ... ok
test page_table::tests::get_mut_missing_page_is_none ... ok
test page_table::tests::lazy_allocation ... ok
test page_table::tests::clone_preserves_and_is_independent ... ok
test page_table::tests::get_mut_offsets_within_page ... ok
test page_table::tests::set_and_get ... ok
test pipeline::tests::auto_pipeline_for_primitives ... ok
test pipeline::tests::auto_pipeline_lane_target_is_cpu ... ok
test pipeline::tests::lane_target_of_maps_markers ... ok
test pipeline::tests::pipeline_hooks_noop ... ok
test registry::tests::duplicate_name_panics - should panic ... ok
test registry::tests::duplicate_type_panics - should panic ... ok
test registry::tests::get_json_on_absent_component_is_ok_none ... ok
test registry::tests::destroyed_entity_has_no_components ... ok
test registry::tests::components_of_different_types_are_isolated ... ok
test registry::tests::insert_any_then_contains_and_len ... ok
test registry::tests::insert_any_with_wrong_box_type_returns_false ... ok
test registry::tests::lookup_by_name_and_id_and_lane_id ... ok
test registry::tests::register_lane_creates_empty_lane_eagerly ... ok
test registry::tests::set_json_schema_mismatch_is_json_error ... ok
test registry::tests::parse_json_validates_before_insert_any ... ok
test schedule::tests::anti_dependency_orders_reader_first ... ok
test registry::tests::remove_returns_boxed_component_and_clears ... ok
test schedule::tests::capture_outside_schedule_run_is_noop ... ok
test registry::tests::set_json_upserts_and_get_json_roundtrips ... ok
test schedule::tests::declared_access_in_child_thread_passes_with_captured_frame ... ok
test schedule::tests::bitset_plan_matches_reference_model ... ok
test schedule::tests::declared_access_passes_enforcement ... ok
test schedule::tests::diamond_yields_parallel_level ... ok
test schedule::tests::explicit_ordering_rejects_backward_direction - should panic ... ok
test schedule::tests::explicit_ordering_splits_a_level ... ok
test schedule::tests::explicit_ordering_unknown_name_panics - should panic ... ok
test schedule::tests::mermaid_projects_levels_and_order_edges ... ok
test schedule::tests::level_plan_is_cached_until_mutation ... ok
test schedule::tests::prepend_system_preserves_explicit_edges_and_registration_order ... ok
test schedule::tests::parallel_matches_sequential ... ok
test schedule::tests::resources_are_unrestricted_outside_schedule ... ok
test schedule::tests::resources_singleton_per_type ... ok
test schedule::tests::schedule_levels_diamond ... ok
test schedule::tests::sequential_mode_is_registration_order ... ok
test schedule::tests::try_order_before_reports_errors_without_panicking ... ok
test schedule::tests::undeclared_read_panics_under_enforcement - should panic ... ok
test schedule::tests::undeclared_access_in_child_thread_panics_with_captured_frame - should panic ... ok
test script::tests::apply_outcomes_rejects_entry_atomically ... ok
test script::tests::apply_outcomes_rejects_dead_entities_bad_shapes_and_tick_failures ... ok
test script::tests::noop_load_call_reload ... ok
test script::tests::script_tick_isolates_failing_entries ... ok
test script::tests::script_tick_drives_entries_with_dt_and_tick_index ... ok
test script::tests::script_tick_without_host_is_noop ... ok
test script::tests::apply_outcomes_sets_components_and_drains ... ok
test smart_store::tests::cold_lane_roundtrip ... ok
test smart_store::tests::cold_lane_write_guard_updates ... ok
test smart_store::tests::entity_lifecycle ... ok
test smart_store::tests::create_and_insert ... ok
test smart_store::tests::destroy_entity_removes_from_cold_lanes ... ok
test smart_store::tests::lock_free_lane_basic ... ok
test smart_store::tests::lock_free_remove_entity_clears_component ... ok
test smart_store::tests::register_cold_creates_cold_lane ... ok
test smart_store::tests::register_creates_hot_lane ... ok
test smart_store::tests::lock_free_write ... ok
test world::tests::domain_resources_share_world_with_ecs ... ok
test world::tests::replacing_conventional_store_is_explicit ... ok
test world::tests::schedule_can_read_store_resource_directly ... ok
test world::tests::world_owns_sparse_set_store ... ok
test world::tests::schedule_runs_against_world_resources ... ok
test smart_store::tests::lock_free_concurrent_read ... ok
test smart_store::tests::benchmark_speed ... ok

test result: ok. 148 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.10s


running 7 tests
test strong_confluence_entity_creation_order ... ok
test strong_confluence_defrag ... ok
test strong_confluence_for_each_entity_single_lane ... ok
test strong_confluence_for_each_entity_two_lanes ... ok
test strong_confluence_smart_pipeline_branching ... ok
test strong_confluence_three_lanes ... ok
test strong_confluence_for_each_entity_pure_math ... ok

test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s


running 16 tests
test for_each_entity_macro_single_lane ... ok
test derive_auto_pipeline_registers ... ok
test for_each_entity_macro_three_lanes_skips_partial_ownership ... ok
test for_each_entity_macro_two_lanes ... ok
test pack_derive_get_mut_modifies ... ok
test pack_derive_get_reconstructs ... ok
test pack_derive_duplicate_types_share_lane ... ok
test pipeline_config_detects_cpu ... ok
test pipeline_config_detects_gpu ... ok
test pack_splits_into_fields ... ok
test smart_pipeline_attribute_compiles ... ok
test pack_derive_simple_struct ... ok
test pack_derive_round_trip ... ok
test smart_pipeline_non_parallelizable_loop_still_iterates ... ok
test smart_pipeline_two_lane_loop_updates_every_entity ... ok
test smart_pipeline_preserves_code_between_loops ... ok

test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s


running 3 tests
test pack_lanes_compatible_with_for_each_entity ... ok
test pack_for_each_packed_mutates_fields ... ok
test pack_register_insert_and_roundtrip ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s


running 16 tests
test allocator_matches_model ... ok
test aabb_overlaps_is_commutative ... ok
test fresh_allocations_are_alive_and_unique ... ok
test aabb_from_points_contains_all ... ok
test aabb_expand_keeps_contents ... ok
test insert_overwrite_keeps_len ... ok
test ray_point_at_is_linear ... ok
test page_table_untouched_semantics ... ok
test insert_then_get_returns_value ... ok
test recycling_bumps_generation ... ok
test remove_absent_is_none ... ok
test remove_returns_value_and_clears ... ok
test stale_handle_is_rejected ... ok
test store_matches_hashmap_model ... ok
test zip_matches_model ... ok
test page_table_roundtrip_sparse ... ok

test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s


running 1 test
test register_component_derive_uses_canonical_name ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s


running 11 tests
test disabled_enforcement_allows_undeclared_lanes ... ok
test disjoint_lanes_share_one_level_over_common_store ... ok
test id_builders_match_typed_builders ... ok
test lane_conflicts_split_levels ... ok
test lane_plan_matches_naive_model ... ok
test lane_read_declaration_does_not_cover_writes - should panic ... ok
test resource_and_lane_namespaces_do_not_conflict ... ok
test two_lane_system_plans_without_manual_edges ... ok
test undeclared_lane_read_panics_under_enforcement - should panic ... ok
test undeclared_lane_write_panics_under_enforcement - should panic ... ok
test declared_lanes_pass_enforcement_and_data_flows ... ok

test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s


running 45 tests
test pipeline_config::config_tests::lane_target_tokens_for_gpu_profile ... ok
test pipeline_config::config_tests::explicit_send_sync_bounds_detected ... ok
test pipeline_config::config_tests::generic_where_clause_is_detected ... ok
test pipeline_config::config_tests::threshold_heap_types_force_cpu ... ok
test pipeline_config::config_tests::plain_struct_is_send_and_sync ... ok
test pipeline_config::config_tests::threshold_many_branches_force_cpu ... ok
test pipeline_config::config_tests::threshold_size_multipliers ... ok
test pipeline_config::config_tests::threshold_small_pod_type ... ok
test pipeline_config::config_tests::unbounded_generic_lacks_send_sync ... ok
test smart_pipeline::turbofish_tests::lifetime_argument_is_rejected ... ok
test pipeline_config::config_tests::where_clause_can_restore_send_sync ... ok
test smart_pipeline::turbofish_tests::non_method_call_panics_helper - should panic ... ok
test smart_pipeline::turbofish_tests::turbofish_extracts_type ... ok
test smart_pipeline::turbofish_tests::turbofish_missing_is_error ... ok
test smart_pipeline::turbofish_tests::turbofish_write_lane_works ... ok
test smart_pipeline::turbofish_tests::two_arguments_are_rejected ... ok
test static_profile::tests::pure_math_prefers_gpu ... ok
test static_profile::tests::heavy_branching_prefers_cpu ... ok
test static_profile::tests::single_branch_still_prefers_gpu ... ok
test wgsl::tests::cast_is_dropped ... ok
test wgsl::tests::assign_op_translates ... ok
test wgsl::tests::field_chain ... ok
test wgsl::tests::fields_access_path ... ok
test wgsl::tests::early_return_in_if_block ... ok
test wgsl::tests::function_call ... ok
test wgsl::tests::index_expr_translates ... ok
test wgsl::tests::if_expr_translates ... ok
test wgsl::tests::fn_source_generates_wgsl_function ... ok
test wgsl::tests::if_else_in_fn_body ... ok
test wgsl::tests::int_suffix_maps_to_wgsl ... ok
test wgsl::tests::length_sq_maps_to_dot ... ok
test wgsl::tests::method_call ... ok
test wgsl::tests::let_stmt_translates ... ok
test wgsl::tests::logical_and_or_translate_to_short_circuit ... ok
test wgsl::tests::nested_index_field_translates ... ok
test wgsl::tests::mut_local_becomes_var ... ok
test wgsl::tests::parens ... ok
test wgsl::tests::nested_math ... ok
test wgsl::tests::pi_constant_passes_through ... ok
test wgsl::tests::powi_2_expands_to_multiplication ... ok
test wgsl::tests::powi_3_expands_to_multiplication ... ok
test wgsl::tests::signum_maps_to_sign ... ok
test wgsl::tests::simple_arithmetic ... ok
test wgsl::tests::vec3_construction ... ok
test wgsl::tests::vec_type_path ... ok

test result: ok. 45 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s


running 1 test
test macro_error_paths ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.65s


running 3 tests
test pack_register_creates_lanes_and_get_missing_is_none ... ok
test pack_get_mut_writes_through_lanes ... ok
test pack_roundtrip_insert_and_get ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s


running 13 tests
test test_cpu_attribute_override ... ok
test test_glam_types_gpu ... ok
test test_generic_with_bounds ... ok
test test_gpu_attribute_override ... ok
test test_hybrid_attribute ... ok
test test_large_struct_with_vec_cpu ... ok
test test_large_struct_auto ... ok
test test_mixed_types_cpu ... ok
test test_option_vec3_gpu ... ok
test test_option_vec_string_cpu ... ok
test test_recursive_type_cpu ... ok
test test_simple_position_gpu ... ok
test test_small_gpu_struct ... ok

test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s


running 3 tests
test body_state_wgsl_source ... ok
test contact_wgsl_source ... ok
test layout_matches_wgsl_rules ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s


running 32 tests
test graph::tests::test_bad_constant_value_is_error ... ok
test graph::tests::test_base_color_color4_path ... ok
test graph::tests::test_bsdf_edf_surface_nodes ... ok
test graph::tests::test_combine_and_mix ... ok
test graph::tests::test_constant_types ... ok
test graph::tests::test_cyclic_dependency_is_error ... ok
test graph::tests::test_math_ops_color3 ... ok
test graph::tests::test_end_to_end_material_extraction ... ok
test graph::tests::test_math_ops_float ... ok
test graph::tests::test_extract_all_openpbr_parameters ... ok
test graph::tests::test_missing_nodedef_is_error ... ok
test graph::tests::test_math_type_mismatch_is_error ... ok
test graph::tests::test_missing_input_is_error ... ok
test graph::tests::test_openpbr_graph_not_found ... ok
test graph::tests::test_nodedef_default_input ... ok
test graph::tests::test_nodedef_lookup_by_name_fallback ... ok
test graph::tests::test_output_nodename_connection ... ok
test graph::tests::test_output_nodename_evaluates_upstream_graph ... ok
test graph::tests::test_surface_node_without_output_evaluates ... ok
test graph::tests::test_simple_materialx ... ok
test graph::tests::test_unary_and_comparison_ops ... ok
test parser::tests::empty_document_parses ... ok
test parser::tests::malformed_xml_returns_error ... ok
test parser::tests::ignores_unknown_and_out_of_graph_elements ... ok
test parser::tests::parses_node_type_and_attributes ... ok
test parser::tests::parses_nodedef_with_inputs ... ok
test parser::tests::parses_output_nodename_attribute ... ok
test graph::tests::test_unknown_node_type_is_error ... ok
test parser::tests::parses_self_closing_nodes_and_inputs ... ok
test parser::tests::parses_all_evaluator_node_types ... ok
test tests::test_load_from_string ... ok
test tests::test_parse_simple_materialx ... ok

test result: ok. 32 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s


running 118 tests
test body::tests::apply_torque_accumulates ... ok
test body::tests::build_derives_inverse_mass_for_dynamic_bodies ... ok
test body::tests::build_static_body_has_zero_inverse_mass ... ok
test body::tests::collision_filter_defaults_to_all_layers ... ok
test body::tests::collision_filter_requires_mutual_mask_match ... ok
test body::tests::collision_filter_setter_updates_layer_and_mask ... ok
test body::tests::set_angular_velocity_mutates_the_body ... ok
test body::tests::set_orientation_mutates_the_body ... ok
test body::tests::trigger_builder_and_setter_update_sensor_state ... ok
test body::tests::with_orientation_sets_the_body_on_construction ... ok
test broadphase::tests::filtered_pairs_are_not_emitted_by_either_backend ... ok
test broadphase::tests::large_body_escape_path_keeps_candidate_pairs_correct ... ok
test broadphase::tests::static_static_pairs_are_skipped_but_static_triggers_are_kept ... ok
test broadphase::tests::grid_cell_size_keeps_pairs_while_changing_cell_occupancy ... ok
test broadphase::tests::sweep_and_prune_keeps_pairs_where_higher_index_sorts_first ... ok
test broadphase_tree::tests::dynamic_tree_matches_brute_force_oracle ... ok
test broadphase::tests::uniform_grid_matches_sweep_and_prune_candidate_pairs ... ok
test broadphase_tree::tests::dynamic_tree_reports_new_pairs_after_a_move ... ok
test distance::tests::box_box_corner_to_corner ... ok
test distance::tests::box_box_overlapping ... ok
test distance::tests::box_box_face_to_face ... ok
test broadphase::tests::uniform_grid_deduplicates_bodies_spanning_multiple_cells ... ok
test distance::tests::box_box_touching ... ok
test distance::tests::box_capsule_above_cap ... ok
test distance::tests::box_capsule_side ... ok
test distance::tests::box_sphere_swapped_witnesses ... ok
test distance::tests::capsule_box_swapped_witnesses ... ok
test distance::tests::capsule_capsule_overlapping ... ok
test distance::tests::capsule_capsule_degenerate_zero_half_height ... ok
test distance::tests::capsule_capsule_parallel ... ok
test distance::tests::capsule_capsule_perpendicular ... ok
test distance::tests::capsule_sphere_swapped_witnesses ... ok
test distance::tests::cast_already_touching_reports_no_hit ... ok
test distance::tests::cast_away_from_target_misses ... ok
test distance::tests::cast_picks_nearest_target ... ok
test distance::tests::cast_sphere_onto_box_stops_at_surface ... ok
test distance::tests::cast_zero_delta_is_none ... ok
test distance::tests::point_segment_closest_clamps_to_endpoints ... ok
test distance::tests::point_segment_closest_degenerate_segment ... ok
test distance::tests::seg_seg_closest_degenerate_a_projects_onto_b ... ok
test distance::tests::seg_seg_closest_degenerate_b_projects_onto_a ... ok
test distance::tests::seg_seg_closest_degenerate_both ... ok
test distance::tests::seg_seg_closest_parallel_segments ... ok
test distance::tests::seg_seg_closest_perpendicular_segments_exact ... ok
test distance::tests::sphere_box_center_inside ... ok
test distance::tests::sphere_box_corner ... ok
test distance::tests::sphere_box_face ... ok
test distance::tests::sphere_box_rotated ... ok
test distance::tests::sphere_box_touching ... ok
test distance::tests::sphere_capsule_cap ... ok
test distance::tests::sphere_capsule_side ... ok
test distance::tests::sphere_capsule_touching ... ok
test distance::tests::sphere_sphere_concentric ... ok
test distance::tests::sphere_sphere_overlapping ... ok
test distance::tests::sphere_sphere_separated ... ok
test distance::tests::sphere_sphere_touching ... ok
test engine::tests::angular_velocity_rotates_body ... ok
test engine::tests::angular_sweep_finds_rotating_box_impact ... ok
test engine::tests::angular_continuous_motion_stops_at_first_impact ... ok
test engine::tests::apply_impulse_is_symmetric_and_linear ... ok
test engine::tests::box_manifold_produces_four_points ... ok
test engine::tests::box_rests_on_static_floor ... ok
test engine::tests::ball_joint_chain_hangs ... ok
test engine::tests::broadphase_backend_can_be_selected_explicitly ... ok
test engine::tests::collision_filter_allows_mutual_layer_match ... ok
test engine::tests::box_vs_box_collision ... ok
test engine::tests::collision_filter_blocks_broadphase_and_narrowphase ... ok
test engine::tests::effective_mass_matches_assembled_inverse_inertia ... ok
test engine::tests::fast_sphere_does_not_tunnel ... ok
test engine::tests::collision_filter_applies_to_continuous_cast ... ok
test engine::tests::mul_inv_inertia_matches_quat_application ... ok
test engine::tests::obb_aabb_respects_rotation ... ok
test engine::tests::oriented_boxes_collide ... ok
test engine::tests::per_island_iters_scale_with_speed ... ok
test engine::tests::raycast_capsule_uses_spherical_cap_normal ... ok
test engine::tests::raycast_hits_sphere ... ok
test engine::tests::raycast_ignores_zero_length_rays ... ok
test engine::tests::raycast_obb_uses_exact_surface_and_normal ... ok
test engine::tests::removing_trigger_body_queues_exit_and_clears_pair_state ... ok
test engine::tests::adaptive_substeps_scale_with_body_speed ... ok
test engine::tests::revolute_limit_blocks_travel_past_bounds ... ok
test engine::tests::four_box_stack_stays_stable ... ok
test engine::tests::sat_cache_is_shared_by_parallel_narrowphase ... ok
test engine::tests::shapecast_exact_hit_distance ... ok
test engine::tests::shapecast_hits_body ... ok
test engine::tests::shapecast_thin_wall_no_tunnel ... ok
test engine::tests::solve_normal_block_reduces_normal_velocity ... ok
test engine::tests::solve_small_matches_glam_lu ... ok
test engine::tests::solve_small_singular_returns_none ... ok
test engine::tests::ball_joint_pendulum_holds_anchor ... ok
test engine::tests::sphere_capsule_collision ... ok
test engine::tests::sphere_falls ... ok
test engine::tests::sphere_rests_on_static_floor ... ok
test engine::tests::sphere_vs_sphere_collision ... ok
test engine::tests::static_body_does_not_fall ... ok
test engine::tests::revolute_hinge_rotates_about_axis_only ... ok
test engine::tests::torque_turns_body ... ok
test engine::tests::trigger_emits_enter_and_exit_without_solving_contact ... ok
test engine::tests::tilted_box_falls_flat ... ok
test math::tests::aabb_center_and_half_extents_match_min_max ... ok
test math::tests::aabb_contains_point_boundary_inclusive ... ok

@github-actions

github-actions Bot commented Sep 7, 2026 •

Copy link
Copy Markdown
Full quality.log (run 34149520691) — part 4/6
test math::tests::aabb_expand_grows_min_and_max_independently ... ok
test math::tests::aabb_from_point_is_a_degenerate_box ... ok
test math::tests::aabb_from_points_folds_expand_over_the_slice ... ok
test math::tests::aabb_overlaps_is_symmetric_and_boundary_inclusive ... ok
test math::tests::ray_point_at_moves_along_direction_scaled_by_t ... ok
test shape::tests::box_aabb_at_identity_matches_half_extents ... ok
test shape::tests::box_aabb_grows_when_rotated_45_degrees ... ok
test shape::tests::box_inertia_matches_closed_form_per_axis ... ok
test shape::tests::capsule_aabb_extends_along_local_y_plus_radius ... ok
test shape::tests::capsule_inertia_matches_closed_form_and_is_symmetric_about_axis ... ok
test shape::tests::sphere_aabb_is_centered_cube ... ok
test shape::tests::sphere_inertia_is_isotropic_and_matches_formula ... ok
test wide::tests::batch_groups_disjoint_consecutive_contacts ... ok
test wide::tests::wide_batch_matches_scalar_single_point ... ok
test engine::tests::two_box_stack_stays_stable ... ok
test engine::tests::revolute_motor_spins_up_to_target_speed ... ok
test engine::tests::solver_is_deterministic_across_thread_counts ... ok

test result: ok. 118 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.00s


running 14 tests
test box_and_capsule_overlap_generates_contact ... ok
test capsule_and_box_swapped_order_also_generates_contact ... ok
test box_capsule_touching_at_speculative_margin_generates_contact ... ok
test capsule_capsule_still_works_after_box_capsule_patch ... ok
test capsule_vs_box_toi_with_combined_translation_and_rotation ... ok
test fast_spinning_capsule_toi_stops_before_tunneling ... ok
test box_vs_box_still_produces_four_point_manifold ... ok
test fast_spinning_box_toi_stops_before_tunneling ... ok
test separated_box_and_capsule_no_contact ... ok
test rotated_box_vs_capsule_contact ... ok
test slow_rotation_does_not_trigger_false_toi ... ok
test thin_feature_under_fast_rotation_does_not_tunnel ... ok
test box_capsule_resting_penetration_is_resolved ... ok
test multiple_capsules_and_boxes_interact_without_panic ... ok

test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s


running 8 tests
test tests::call_round_trips_objects_through_dicts ... ok
test tests::call_adds_integers_and_returns_json ... ok
test tests::batch_collects_per_call_outcomes ... ok
test tests::call_round_trips_mixed_shapes ... ok
test tests::none_round_trips_as_null ... ok
test tests::hot_reload_replaces_and_keeps_old_on_failure ... ok
test tests::unknown_function_and_handle_are_errors ... ok
test tests::unload_drops_the_module ... ok

test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.34s


running 107 tests
test camera::tests::elevation_is_clamped_away_from_poles ... ok
test camera::tests::orbit_camera_consumes_shared_input ... ok
test camera::tests::view_projection_aspect_fallback_and_finite_matrices ... ok
test composite::tests::composite_shader_validates_with_naga ... ok
test camera::tests::scheduled_camera_consumes_input_resource_once_per_frame ... ok
test extraction::tests::default_lights_reproduce_the_legacy_hardcoded_rig ... ok
test extraction::tests::incomplete_entities_are_skipped ... ok
test extraction::tests::frame_upload_matches_the_direct_lane_canon ... ok
test extraction::tests::render_world_extracts_scene_entities_from_lanes ... ok
test extraction::tests::max_mesh_params_is_the_extraction_mesh_canon ... ok
test extraction::tests::replace_scene_publishes_scene_lighting_as_resource ... ok
test extraction::tests::replacing_scene_destroys_previous_entities_before_extraction ... ok
test frame_exec::tests::bytes_per_pixel_table ... ok
test frame_exec::tests::executor_memoizes_layout_across_frames ... ok
test frame_exec::tests::budget_exceeded_is_actionable ... ok
test frame_exec::tests::golden_dead_layers_are_unpooled ... ok
test frame_exec::tests::golden_bloom_adds_exactly_three_slots ... ok
test frame_exec::tests::golden_hybrid_lifetimes ... ok
test frame_exec::tests::golden_planned_pool_bytes ... ok
test frame_exec::tests::layout_cache_reused_across_frames ... ok
test frame_exec::tests::golden_pool_slots_per_technique ... ok
test frame_exec::tests::pass_views_undeclared_view_panics_in_debug - should panic ... ok
test frame_exec::tests::production_graph_levels ... ok
test frame_exec::tests::technique_flag_matrix ... ok
test frame_exec::tests::technique_forward_owns_depth_in_forward_mode ... ok
test frame_exec::tests::technique_bloom_input_follows_hdr_layer ... ok
test frame_exec::tests::texture_budget_matches_spec ... ok
test frame_exec::tests::technique_wires_expected_passes ... ok
test frame_passes::tests::bloom_chain_wiring ... ok
test frame_passes::tests::bright_pass_input_follows_technique ... ok
test frame_passes::tests::composite_modes_encode_technique_and_bloom ... ok
test frame_passes::tests::forward_modes_select_depth_ownership ... ok
test frame_passes::tests::gbuffer_writes_all_six_layers ... ok
test frame_passes::tests::hdr_mirrors_the_surface_format ... ok
test frame_passes::tests::lighting_reads_gbuffer_and_clears_hdr_black ... ok
test frame_passes::tests::resource_names_and_specs ... ok
test frame_passes::tests::static_pass_names ... ok
test frame_passes::tests::target_is_external_output ... ok
test gpu_resources::tests::frame_command_buffers_are_world_resources ... ok
test render_backend::tests::default_config_matches_documented_defaults ... ok
test frame_exec::tests::typed_wiring_matches_imperative_reference ... ok
test render_backend::tests::factory_builds_backend_and_resize_reallocates ... ok
test composite::tests::transparent_ui_keeps_pbr_background ... ok
test scene::tests::demo_asset_parses ... ok
test scene::tests::parses_all_material_variants ... ok
test composite::tests::opaque_ui_replaces_pbr_background ... ok
test scene::tests::rejects_malformed_ron ... ok
test scene::tests::rejects_missing_fields ... ok
test scene::tests::ron_round_trip_is_stable ... ok
test shaders::bloom_generated::tests::bloom_generated_contains_expected_bindings ... ok
test schedule_bridge::tests::production_plans_project_with_matching_levels ... ok
test shaders::composite_generated::tests::composite_generated_contains_expected_bindings ... ok
test shaders::bloom_generated::tests::bloom_generated_validates_with_naga ... ok
test shaders::lighting_generated::tests::lighting_generated_contains_expected_kernels ... ok
test shaders::composite_generated::tests::composite_generated_validates_with_naga ... ok
test shaders::math::tests::aces_tonemap_black ... ok
test shaders::math::tests::aces_tonemap_red ... ok
test shaders::math::tests::all_wgsl_sources_compile ... ok
test shaders::math::tests::fresnel0_from_ior_glass ... ok
test shaders::math::tests::ggx_ndf_peak ... ok
test shaders::math::tests::luminance_black ... ok
test shaders::math::tests::luminance_white ... ok
test shaders::math::tests::octahedral_encode_roundtrip ... ok
test shaders::math::tests::smith_ggx_zero_to_one ... ok
test shaders::math::tests::srgb_to_linear_black ... ok
test shaders::math::tests::srgb_to_linear_white ... ok
test shaders::math::tests::thin_film_modulation_produces_finite ... ok
test shaders::math::tests::transmission_color_to_extinction_degenerate ... ok
test shaders::math::tests::wgsl_generates ... ok
test shaders::lighting_generated::tests::lighting_generated_validates_with_naga ... ok
test system::tests::access_set_collects_in_declaration_order ... ok
test system::tests::declared_membership_matches_access_set ... ok
test system::tests::declared_pass_access_passes_enforcement ... ok
test system::tests::explicit_ordering_rejects_backward - should panic ... ok
test system::tests::explicit_ordering_unknown_name - should panic ... ok
test system::tests::external_output_kind_uses_external_wiring ... ok
test system::tests::sneaky_pass_undeclared_access_panics - should panic ... ok
test system::tests::system_set_is_sync ... ok
test system::tests::try_order_before_reports_errors_without_panicking ... ok
test system::tests::typed_wiring_matches_imperative_builder ... ok
test system::tests::unknown_resource_panics - should panic ... ok
test system::tests::unregistered_resource_panics_with_name - should panic ... ok
test system::tests::write_clear_carries_its_color ... ok
test transform::tests::default_is_identity ... ok
test transform::tests::from_position_keeps_identity_rotation_and_unit_scale ... ok
test transform::tests::identity_matrix_is_identity ... ok
test transform::tests::matrix_applies_scale_rotation_translation_in_order ... ok
test transform::tests::matrix_round_trips_to_components ... ok
test transform::tests::new_stores_components ... ok
test transient_pool::tests::build_snapshot_matches_cached_layout ... ok
test transient_pool::tests::clear_value_is_carried_to_layout ... ok
test transient_pool::tests::debug_dump_lists_structure ... ok
test transient_pool::tests::disabled_pass_culls_its_resources ... ok
test transient_pool::tests::explicit_ordering_splits_shared_level ... ok
test transient_pool::tests::generation_bump_invalidates_cache ... ok
test transient_pool::tests::imported_resource_may_be_read_first ... ok
test transient_pool::tests::independent_branches_share_levels ... ok
test transient_pool::tests::layout_is_cached_until_mutation ... ok
test transient_pool::tests::layout_tables_walk_for_each_pass ... ok
test transient_pool::tests::lifetime_window_basic ... ok
test transient_pool::tests::mermaid_is_a_valid_projection ... ok
test transient_pool::tests::overlapping_resources_need_distinct_slots ... ok
test transient_pool::tests::read_before_write_panics - should panic ... ok
test transient_pool::tests::transient_slot_reuse_same_spec ... ok
test shaders::tests::assembled_shaders_validate_with_naga ... ok
test render_backend::tests::trait_object_renders_one_instance ... ok
test render_backend::tests::golden_full_scene_probe_matches_snapshot ... ok

test result: ok. 107 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.77s


running 1 test
test budget_holds_or_refuses ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s


running 1 test
test world_lights_reproduce_legacy_rig_pixels ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.59s


running 1 test
test mesh_resource_follows_tessellation_lane ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.16s


running 1 test
test parallel_recording_matches_sequential_pixels ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.19s


running 2 tests
test schedule_ordered_render_matches_sequential_pixels ... ok
test buffers_path_matches_sequential_pixels ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.21s


running 5 tests
test projection_rejects_untyped_resources ... ok
test projection_skips_disabled_passes_and_their_edges ... ok
test projected_pass_system_levels_match_layout_levels ... ok
test fixed_topologies_match_across_frontends ... ok
test lcg_scenarios_match_across_frontends ... ok

test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s


running 6 tests
test tests::batch_collects_per_call_outcomes ... ok
test tests::call_adds_integers_and_returns_json ... ok
test tests::hot_reload_replaces_and_keeps_old_on_failure ... ok
test tests::call_round_trips_mixed_shapes ... ok
test tests::unknown_function_and_handle_are_errors ... ok
test tests::unload_forgets_the_module ... ok

test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s


running 7 tests
test tests::batch_collects_per_call_outcomes ... ok
test tests::call_adds_integers_and_returns_json ... ok
test tests::call_round_trips_mixed_shapes ... ok
test tests::call_round_trips_objects_through_maps ... ok
test tests::unload_forgets_the_module ... ok
test tests::unknown_function_and_handle_are_errors ... ok
test tests::hot_reload_replaces_and_keeps_old_on_failure ... ok

test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.50s


running 12 tests
test tests::chain_is_linear_and_anti_dependency_orders_reader_first ... ok
test tests::explicit_edges_only_split_levels ... ok
test tests::bitset_plan_matches_reference_model ... ok
test tests::indexed_edge_validates_ids_and_direction ... ok
test tests::mermaid_diagram_renders_flowchart ... ok
test tests::named_edge_validates_names_and_direction ... ok
test tests::independent_writers_share_one_level ... ok
test tests::order_error_display_is_actionable ... ok
test tests::out_of_range_edges_are_ignored ... ok
test tests::plan_cache_hits_and_invalidates ... ok
test tests::run_levels_sequential_is_registration_order ... ok
test tests::run_levels_parallel_covers_same_set ... ok

test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s


running 11 tests
test integration_tests::game_keys_map_to_server_gameplay_codes ... ok
test integration_tests::input_poster_throttles_but_flushes_releases ... ok
test integration_tests::stale_live_snapshot_versions_are_rejected ... ok
test integration_tests::input_snapshot_matches_server_parser_shape ... ok
test integration_tests::ws_events_url_mirrors_editor_scheme ... ok
test scene_api::tests::parses_coat_and_metal_materials_and_multiple_meshes ... ok
test scene_api::tests::parses_full_contract ... ok
test scene_api::tests::rejects_missing_version_and_malformed_json ... ok
test scene_api::tests::rejects_reduced_variant_without_entity_fields ... ok
test scene_api::tests::rejects_unknown_enum_variants ... ok
test integration_tests::live_snapshot_crosses_serialization_boundary_into_shared_render_world ... ok

test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s


running 24 tests
test dispatcher::tests::cpu_below_threshold ... ok
test dispatcher::tests::explicit_targets ... ok
test execute::tests::cpu_executor_is_zst ... ok
test dispatcher::tests::gpu_at_or_above_threshold ... ok
test execute::tests::gpu_executor_is_zst ... ok
test execute::tests::dispatch_lane_compiles_for_cpu ... ok
test command_sync::tests::gpu_dispatch_records_and_flushes ... ok
test leak::tests::leak_wgsl_generates_valid_code ... ok
test execute::tests::dispatch_lane_compiles_for_gpu ... ok
test profiler::tests::profiler_find_crossover ... ok
test execute::tests::zst_dispatch_with_executor ... ok
test router::tests::cpu_component_resolves_to_cpu ... ok
test router::tests::gpu_component_resolves_to_gpu ... ok
test smart_buffer::tests::ensure_gpu_buffer_keeps_existing_buffer ... ok
test pso_cache::tests::cache_creates_and_reuses ... ok
test leak::tests::leak_dispatch_compiles ... ok
test smart_buffer::tests::gpu_to_cpu_roundtrip_preserves_initial_data ... ok
test smart_buffer::tests::gpu_to_cpu_roundtrip_downloads_uploaded_data ... ok
test smart_buffer::tests::single_element_buffer_syncs ... ok
test smart_buffer::tests::sync_to_cpu_is_noop_when_clean ... ok
test smart_buffer::tests::smart_buffer_tracks_dirty ... ok
test smart_buffer::tests::sync_to_gpu_clears_only_cpu_flag ... ok
test smart_buffer::tests::sync_to_gpu_is_noop_when_clean ... ok
test profiler::tests::profiler_calibrates ... ok

test result: ok. 24 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.42s


running 4 tests
test add_kernel_compiles ... ok
test kernel_valid_compiles ... ok
test full_shader_mode_generates_bindings_and_entry ... ok
test vec3_kernel_wgsl ... ok

test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s


running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s


running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s


running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s


running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s


running 2 tests
test crates/core/src/script.rs - script::ScriptPlugin (line 383) - compile ... ok
test crates/core/src/registry.rs - registry (line 19) ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

all doctests ran in 0.26s; merged doctests compilation took 0.25s

running 2 tests
test crates/macros/src/gpu_pipeline.rs - gpu_pipeline (line 14) ... ignored
test crates/macros/src/smart_pipeline.rs - smart_pipeline (line 5) ... ignored

test result: ok. 0 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.00s

all doctests ran in 0.12s; merged doctests compilation took 0.11s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s


running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s


running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s


running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s


running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s


running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s


running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s


running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s


running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Compiling ornis-schedule v0.1.0 (/home/runner/work/ornis/ornis/crates/schedule)
   Compiling ornis-macros v0.1.0 (/home/runner/work/ornis/ornis/crates/macros)
   Compiling rustpython-vm v0.5.0 (/home/runner/work/ornis/ornis/third_party/rustpython-vm)
   Compiling editor-backend v0.1.0 (/home/runner/work/ornis/ornis/crates/editor-backend)
   Compiling ornis-core v0.1.0 (/home/runner/work/ornis/ornis/crates/core)
   Compiling ornis-rhai v0.1.0 (/home/runner/work/ornis/ornis/crates/rhai)
   Compiling ornis-render v0.1.0 (/home/runner/work/ornis/ornis/crates/render)
   Compiling ornis-physics v0.1.0 (/home/runner/work/ornis/ornis/crates/physics)
   Compiling ornis-wgpu-backend v0.1.0 (/home/runner/work/ornis/ornis/crates/wgpu_backend)
   Compiling ornis-rune v0.1.0 (/home/runner/work/ornis/ornis/crates/rune)
   Compiling ornis-audio v0.1.0 (/home/runner/work/ornis/ornis/crates/audio)
   Compiling ornis-app v0.1.0 (/home/runner/work/ornis/ornis/crates/app)
   Compiling ornis-materialx v0.1.0 (/home/runner/work/ornis/ornis/crates/materialx)
warning: a method with this name may be added to the standard library in the future
   --> third_party/rustpython-vm/src/builtins/str.rs:745:34
    |
745 |                     out.extend(c.to_titlecase());
    |                                  ^^^^^^^^^^^^
    |
    = help: call with fully qualified syntax `to_titlecase(...)` to keep using the current method
    = warning: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
    = note: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>
    = note: `#[warn(unstable_name_collisions)]` (part of `#[warn(future_incompatible)]`) on by default

warning: a method with this name may be added to the standard library in the future
   --> third_party/rustpython-vm/src/builtins/str.rs:755:51
    |
755 |                         Some(ch) => out.extend(ch.to_titlecase()),
    |                                                   ^^^^^^^^^^^^
    |
    = help: call with fully qualified syntax `to_titlecase(...)` to keep using the current method
    = warning: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
    = note: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>

warning: a method with this name may be added to the standard library in the future
    --> third_party/rustpython-vm/src/builtins/str.rs:1020:36
     |
1020 |                     title.extend(c.to_titlecase());
     |                                    ^^^^^^^^^^^^
     |
     = help: call with fully qualified syntax `to_titlecase(...)` to keep using the current method
     = warning: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
     = note: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>

warning: a method with this name may be added to the standard library in the future
    --> third_party/rustpython-vm/src/builtins/str.rs:1025:45
     |
1025 |             } else if c.is_uppercase() || c.is_titlecase() {
     |                                             ^^^^^^^^^^^^
     |
     = help: call with fully qualified syntax `is_titlecase(...)` to keep using the current method
     = warning: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
     = note: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>

warning: a method with this name may be added to the standard library in the future
    --> third_party/rustpython-vm/src/builtins/str.rs:1261:38
     |
1261 |             if c.is_uppercase() || c.is_titlecase() {
     |                                      ^^^^^^^^^^^^
     |
     = help: call with fully qualified syntax `is_titlecase(...)` to keep using the current method
     = warning: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
     = note: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>

   Compiling ornis-wasm v0.1.0 (/home/runner/work/ornis/ornis/crates/wasm)
   Compiling ornis v0.1.0 (/home/runner/work/ornis/ornis)
warning: function `sequential_reference_pixels` is never used
   --> crates/render/tests/common/mod.rs:124:8
    |
124 | pub fn sequential_reference_pixels(scene: &HeadlessScene) -> Vec<u8> {
    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default

warning: `ornis-render` (test "light_resource") generated 1 warning
warning: constant `BPP` is never used
  --> crates/render/tests/common/mod.rs:20:11
   |
20 | pub const BPP: u32 = 4;
   |           ^^^
   |
   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default

warning: fields `queue`, `renderer`, and `mesh` are never read
  --> crates/render/tests/common/mod.rs:28:9
   |
24 | pub struct HeadlessScene {
   |            ------------- fields in this struct
...
28 |     pub queue: wgpu::Queue,
   |         ^^^^^
29 |     /// Deferred renderer with pipelines and buffers.
30 |     pub renderer: Renderer3D,
   |         ^^^^^^^^
31 |     /// Unit sphere mesh (16×12 tessellation).
32 |     pub mesh: ornis_render::Mesh,
   |         ^^^^

warning: function `sequential_reference_pixels` is never used
   --> crates/render/tests/common/mod.rs:124:8
    |
124 | pub fn sequential_reference_pixels(scene: &HeadlessScene) -> Vec<u8> {
    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: function `target` is never used
   --> crates/render/tests/common/mod.rs:131:8
    |
131 | pub fn target(device: &wgpu::Device, label: &str) -> (wgpu::Texture, wgpu::TextureView) {
    |        ^^^^^^

warning: function `render_frame_pixels` is never used
   --> crates/render/tests/common/mod.rs:153:8
    |
153 | pub fn render_frame_pixels<F>(scene: &HeadlessScene, drive: F) -> Vec<u8>
    |        ^^^^^^^^^^^^^^^^^^^

warning: function `read_back` is never used
   --> crates/render/tests/common/mod.rs:183:8
    |
183 | pub fn read_back(device: &wgpu::Device, queue: &wgpu::Queue, texture: &wgpu::Texture) -> Vec<u8> {
    |        ^^^^^^^^^

warning: `ornis-render` (test "mesh_resource") generated 6 warnings
   Compiling xtask v0.1.0 (/home/runner/work/ornis/ornis/xtask)
   Compiling ornis-python v0.1.0 (/home/runner/work/ornis/ornis/crates/python)
warning: `rustpython-vm` (lib) generated 5 warnings
    Finished `test` profile [unoptimized + debuginfo] target(s) in 45.17s
     Running unittests src/lib.rs (target/debug/deps/editor_backend-a3c9525fcb0cbe36)
     Running tests/http_integration.rs (target/debug/deps/http_integration-40437273af19014c)
     Running unittests src/main.rs (target/debug/deps/ornis-ca41d1a213dc474b)
     Running unittests src/lib.rs (target/debug/deps/ornis_app-5112eed2622c9707)
     Running unittests src/lib.rs (target/debug/deps/ornis_audio-2f0bfa553c70e5ef)
     Running unittests src/lib.rs (target/debug/deps/ornis_core-0ad036bea7fb5c0d)
     Running tests/confluence_tests.rs (target/debug/deps/confluence_tests-2e271c57083f9897)
     Running tests/macro_integration.rs (target/debug/deps/macro_integration-ad29c033e99ed493)
     Running tests/pack_integration.rs (target/debug/deps/pack_integration-10aef2e31b3b3ed7)
     Running tests/property_tests.rs (target/debug/deps/property_tests-8ea9cecdf1e20347)
     Running tests/register_component.rs (target/debug/deps/register_component-214056cb28c91d9f)
     Running tests/schedule_lanes.rs (target/debug/deps/schedule_lanes-d4a5527d81166fe7)
     Running unittests src/lib.rs (target/debug/deps/ornis_macros-09e5cd079f62ce39)
     Running tests/compile_fail.rs (target/debug/deps/compile_fail-08e74be0a6f47e1a)
warning: patch `rustpython-vm v0.5.0 (/home/runner/work/ornis/ornis/third_party/rustpython-vm)` was not used in the crate graph
help: Check that the patched package version and available features are compatible
      with the dependency requirements. If the patch has a different version from
      what is locked in the Cargo.lock file, run `cargo update` to use the new
      version. This may also occur with an optional dependency that is not enabled.
    Checking ornis-schedule v0.1.0 (/home/runner/work/ornis/ornis/crates/schedule)
   Compiling ornis-macros v0.1.0 (/home/runner/work/ornis/ornis/crates/macros)
    Checking ornis-core v0.1.0 (/home/runner/work/ornis/ornis/crates/core)
    Checking ornis-macros-tests v0.0.0 (/home/runner/work/ornis/ornis/target/tests/trybuild/ornis-macros)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.12s


test tests/ui/for_each_entity_rejects_non_reference_arg.rs ... ok
test tests/ui/gpu_pipeline_rejects_unknown_option.rs ... ok
test tests/ui/kernel_rejects_non_integer_attr.rs ... ok
test tests/ui/pack_rejects_enum.rs ... ok
test tests/ui/pack_rejects_tuple_struct.rs ... ok
test tests/ui/pack_rejects_unit_struct.rs ... ok


     Running tests/pack.rs (target/debug/deps/pack-b640672eead62fbf)
     Running tests/pipeline_config.rs (target/debug/deps/pipeline_config-7d45e814be3bb561)
     Running tests/wgsl_struct.rs (target/debug/deps/wgsl_struct-c130d990cf1a9908)
     Running unittests src/lib.rs (target/debug/deps/ornis_materialx-a0f8828ab9c5041c)
     Running unittests src/lib.rs (target/debug/deps/ornis_physics-a99d02d1981927d5)
     Running tests/box_capsule_toi.rs (target/debug/deps/box_capsule_toi-6251f26f604498af)
     Running unittests src/lib.rs (target/debug/deps/ornis_python-2e9e6bb92ead323c)
     Running unittests src/lib.rs (target/debug/deps/ornis_render-2658a7411d5671c3)
     Running tests/budget_proptest.rs (target/debug/deps/budget_proptest-3b18b0e8aa987f64)
     Running tests/light_resource.rs (target/debug/deps/light_resource-0cfb9bb37e59dee1)
     Running tests/mesh_resource.rs (target/debug/deps/mesh_resource-aba3ba66399036d7)
     Running tests/parallel_render.rs (target/debug/deps/parallel_render-5ce4a32a02f18c7d)
     Running tests/schedule_render.rs (target/debug/deps/schedule_render-5b28358f2bd77067)
     Running tests/scheduler_parity.rs (target/debug/deps/scheduler_parity-4fb2548275d52315)
     Running unittests src/lib.rs (target/debug/deps/ornis_rhai-6782b284fe1fbf11)
     Running unittests src/lib.rs (target/debug/deps/ornis_rune-762752dd580d3135)
     Running unittests src/lib.rs (target/debug/deps/ornis_schedule-b9c974b4e6d91a85)
     Running unittests src/lib.rs (target/debug/deps/ornis_wasm-c1bc482837d14e7a)
     Running unittests src/lib.rs (target/debug/deps/ornis_wgpu_backend-cc3cd8b8e76a2f64)
     Running tests/gpu_pipeline_test.rs (target/debug/deps/gpu_pipeline_test-cdaf707814c6d70d)
     Running unittests src/main.rs (target/debug/deps/xtask-76fa8a4876de9929)
   Doc-tests editor_backend
   Doc-tests ornis_app
   Doc-tests ornis_audio
   Doc-tests ornis_core
   Doc-tests ornis_macros
   Doc-tests ornis_materialx
   Doc-tests ornis_physics
   Doc-tests ornis_python
   Doc-tests ornis_render
   Doc-tests ornis_rhai
   Doc-tests ornis_rune
   Doc-tests ornis_schedule
   Doc-tests ornis_wasm
   Doc-tests ornis_wgpu_backend
── test: PASS ──

═══ [6/13] test (physics gpu): cargo test -p ornis-physics --features gpu ═══

running 124 tests
test body::tests::apply_torque_accumulates ... ok
test body::tests::build_derives_inverse_mass_for_dynamic_bodies ... ok
test body::tests::collision_filter_defaults_to_all_layers ... ok
test body::tests::build_static_body_has_zero_inverse_mass ... ok
test body::tests::collision_filter_requires_mutual_mask_match ... ok
test body::tests::collision_filter_setter_updates_layer_and_mask ... ok
test body::tests::set_angular_velocity_mutates_the_body ... ok
test body::tests::set_orientation_mutates_the_body ... ok
test body::tests::trigger_builder_and_setter_update_sensor_state ... ok
test body::tests::with_orientation_sets_the_body_on_construction ... ok
test broadphase::tests::filtered_pairs_are_not_emitted_by_either_backend ... ok
test broadphase::tests::large_body_escape_path_keeps_candidate_pairs_correct ... ok
test broadphase::tests::static_static_pairs_are_skipped_but_static_triggers_are_kept ... ok
test broadphase::tests::sweep_and_prune_keeps_pairs_where_higher_index_sorts_first ... ok
test broadphase::tests::grid_cell_size_keeps_pairs_while_changing_cell_occupancy ... ok
test broadphase::tests::uniform_grid_matches_sweep_and_prune_candidate_pairs ... ok
test broadphase_tree::tests::dynamic_tree_matches_brute_force_oracle ... ok
test broadphase_tree::tests::dynamic_tree_reports_new_pairs_after_a_move ... ok
test broadphase::tests::uniform_grid_deduplicates_bodies_spanning_multiple_cells ... ok
test distance::tests::box_box_corner_to_corner ... ok
test distance::tests::box_box_face_to_face ... ok
test distance::tests::box_box_overlapping ... ok
test distance::tests::box_box_touching ... ok
test distance::tests::box_capsule_above_cap ... ok
test distance::tests::box_sphere_swapped_witnesses ... ok
test distance::tests::capsule_box_swapped_witnesses ... ok
test distance::tests::box_capsule_side ... ok
test distance::tests::capsule_capsule_overlapping ... ok
test distance::tests::capsule_capsule_degenerate_zero_half_height ... ok
test distance::tests::capsule_capsule_parallel ... ok
test distance::tests::capsule_sphere_swapped_witnesses ... ok
test distance::tests::cast_already_touching_reports_no_hit ... ok
test distance::tests::capsule_capsule_perpendicular ... ok
test distance::tests::cast_away_from_target_misses ... ok
test distance::tests::cast_picks_nearest_target ... ok
test distance::tests::cast_sphere_onto_box_stops_at_surface ... ok
test distance::tests::cast_zero_delta_is_none ... ok
test distance::tests::point_segment_closest_clamps_to_endpoints ... ok
test distance::tests::point_segment_closest_degenerate_segment ... ok
test distance::tests::seg_seg_closest_degenerate_a_projects_onto_b ... ok
test distance::tests::seg_seg_closest_degenerate_b_projects_onto_a ... ok
test distance::tests::seg_seg_closest_degenerate_both ... ok
test distance::tests::seg_seg_closest_parallel_segments ... ok
test distance::tests::seg_seg_closest_perpendicular_segments_exact ... ok
test distance::tests::sphere_box_center_inside ... ok
test distance::tests::sphere_box_corner ... ok
test distance::tests::sphere_box_face ... ok
test distance::tests::sphere_box_rotated ... ok
test distance::tests::sphere_box_touching ... ok
test distance::tests::sphere_capsule_cap ... ok
test distance::tests::sphere_capsule_side ... ok
test distance::tests::sphere_capsule_touching ... ok
test distance::tests::sphere_sphere_concentric ... ok
test distance::tests::sphere_sphere_overlapping ... ok
test distance::tests::sphere_sphere_separated ... ok
test distance::tests::sphere_sphere_touching ... ok
test engine::tests::angular_velocity_rotates_body ... ok
test engine::tests::angular_continuous_motion_stops_at_first_impact ... ok
test engine::tests::angular_sweep_finds_rotating_box_impact ... ok
test engine::tests::apply_impulse_is_symmetric_and_linear ... ok
test engine::tests::box_manifold_produces_four_points ... ok
test engine::tests::ball_joint_chain_hangs ... ok
test engine::tests::box_rests_on_static_floor ... ok
test engine::tests::broadphase_backend_can_be_selected_explicitly ... ok
test engine::tests::collision_filter_allows_mutual_layer_match ... ok
test engine::tests::box_vs_box_collision ... ok
test engine::tests::collision_filter_blocks_broadphase_and_narrowphase ... ok
test engine::tests::effective_mass_matches_assembled_inverse_inertia ... ok
test engine::tests::fast_sphere_does_not_tunnel ... ok
test engine::tests::collision_filter_applies_to_continuous_cast ... ok
test engine::tests::mul_inv_inertia_matches_quat_application ... ok
test engine::tests::obb_aabb_respects_rotation ... ok
test engine::tests::oriented_boxes_collide ... ok
test engine::tests::per_island_iters_scale_with_speed ... ok
test engine::tests::raycast_capsule_uses_spherical_cap_normal ... ok
test engine::tests::raycast_hits_sphere ... ok
test engine::tests::raycast_ignores_zero_length_rays ... ok
test engine::tests::raycast_obb_uses_exact_surface_and_normal ... ok
test engine::tests::removing_trigger_body_queues_exit_and_clears_pair_state ... ok
test engine::tests::adaptive_substeps_scale_with_body_speed ... ok
test engine::tests::revolute_limit_blocks_travel_past_bounds ... ok
test engine::tests::four_box_stack_stays_stable ... ok
test engine::tests::sat_cache_is_shared_by_parallel_narrowphase ... ok
test engine::tests::shapecast_exact_hit_distance ... ok
test engine::tests::shapecast_hits_body ... ok
test engine::tests::shapecast_thin_wall_no_tunnel ... ok
test engine::tests::solve_normal_block_reduces_normal_velocity ... ok
test engine::tests::solve_small_matches_glam_lu ... ok
test engine::tests::solve_small_singular_returns_none ... ok
test engine::tests::ball_joint_pendulum_holds_anchor ... ok
test engine::tests::sphere_capsule_collision ... ok
test engine::tests::sphere_falls ... ok
test engine::tests::sphere_rests_on_static_floor ... ok
test engine::tests::sphere_vs_sphere_collision ... ok
test engine::tests::static_body_does_not_fall ... ok
test engine::tests::revolute_hinge_rotates_about_axis_only ... ok
test engine::tests::torque_turns_body ... ok
test engine::tests::trigger_emits_enter_and_exit_without_solving_contact ... ok
test engine::tests::tilted_box_falls_flat ... ok
test gpu::tests::generated_wgsl_contains_rust_authored_layouts ... ok
test engine::tests::two_box_stack_stays_stable ... ok
test gpu::tests::gpu_pack_produces_disjoint_batches ... ok
test gpu::tests::generated_wgsl_validates_with_naga ... ok
test engine::tests::revolute_motor_spins_up_to_target_speed ... ok
test gpu::tests::layout_stride_matches_struct_size ... ok
test math::tests::aabb_center_and_half_extents_match_min_max ... ok
test math::tests::aabb_contains_point_boundary_inclusive ... ok
test math::tests::aabb_expand_grows_min_and_max_independently ... ok
test math::tests::aabb_from_point_is_a_degenerate_box ... ok
test math::tests::aabb_from_points_folds_expand_over_the_slice ... ok
test math::tests::aabb_overlaps_is_symmetric_and_boundary_inclusive ... ok
test math::tests::ray_point_at_moves_along_direction_scaled_by_t ... ok
test shape::tests::box_aabb_at_identity_matches_half_extents ... ok
test shape::tests::box_aabb_grows_when_rotated_45_degrees ... ok
test shape::tests::box_inertia_matches_closed_form_per_axis ... ok
test shape::tests::capsule_aabb_extends_along_local_y_plus_radius ... ok
test shape::tests::capsule_inertia_matches_closed_form_and_is_symmetric_about_axis ... ok
test shape::tests::sphere_aabb_is_centered_cube ... ok
test shape::tests::sphere_inertia_is_isotropic_and_matches_formula ... ok
test wide::tests::batch_groups_disjoint_consecutive_contacts ... ok
test wide::tests::wide_batch_matches_scalar_single_point ... ok
test gpu::tests::gpu_solver_single_contact_matches_analytic ... ok
test engine::tests::solver_is_deterministic_across_thread_counts ... ok
test gpu::tests::gpu_solver_tracks_cpu_engine ... ok

test result: ok. 124 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.38s


running 14 tests
test box_capsule_touching_at_speculative_margin_generates_contact ... ok
test box_and_capsule_overlap_generates_contact ... ok
test capsule_and_box_swapped_order_also_generates_contact ... ok
test capsule_vs_box_toi_with_combined_translation_and_rotation ... ok
test capsule_capsule_still_works_after_box_capsule_patch ... ok
test fast_spinning_capsule_toi_stops_before_tunneling ... ok
test fast_spinning_box_toi_stops_before_tunneling ... ok
test rotated_box_vs_capsule_contact ... ok
test separated_box_and_capsule_no_contact ... ok
test slow_rotation_does_not_trigger_false_toi ... ok
test box_vs_box_still_produces_four_point_manifold ... ok
test thin_feature_under_fast_rotation_does_not_tunnel ... ok
test box_capsule_resting_penetration_is_resolved ... ok
test multiple_capsules_and_boxes_interact_without_panic ... ok

test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s


running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Compiling ornis-physics v0.1.0 (/home/runner/work/ornis/ornis/crates/physics)
    Finished `test` profile [unoptimized + debuginfo] target(s) in 3.31s
     Running unittests src/lib.rs (target/debug/deps/ornis_physics-b4cea13a817963f2)
     Running tests/box_capsule_toi.rs (target/debug/deps/box_capsule_toi-584eaa2b911d7b1b)
   Doc-tests ornis_physics
── test (physics gpu): PASS ──

═══ [7/13] clippy (physics gpu): cargo clippy -p ornis-physics --features gpu --all-targets -- -D warnings ═══
   Compiling ornis-macros v0.1.0 (/home/runner/work/ornis/ornis/crates/macros)
    Checking ornis-physics v0.1.0 (/home/runner/work/ornis/ornis/crates/physics)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.53s
── clippy (physics gpu): PASS ──

═══ [8/13] audit: cargo audit ═══
Crate:     paste
Version:   1.0.15
Warning:   unmaintained
Title:     paste - no longer maintained
Date:      2024-10-07
ID:        RUSTSEC-2024-0436
URL:       https://rustsec.org/advisories/RUSTSEC-2024-0436

Crate:     smartstring
Version:   1.0.1
Warning:   unmaintained
Title:     smartstring is unmaintained
Date:      2026-05-03
ID:        RUSTSEC-2026-0249
URL:       https://rustsec.org/advisories/RUSTSEC-2026-0249

Crate:     ttf-parser
Version:   0.25.1
Warning:   unmaintained
Title:     `ttf-parser` is unmaintained
Date:      2026-06-28
ID:        RUSTSEC-2026-0192
URL:       https://rustsec.org/advisories/RUSTSEC-2026-0192

Crate:     unic-char-property
Version:   0.9.0
Warning:   unmaintained
Title:     `unic-char-property` is unmaintained
Date:      2025-10-18
ID:        RUSTSEC-2025-0081
URL:       https://rustsec.org/advisories/RUSTSEC-2025-0081

Crate:     unic-char-range
Version:   0.9.0
Warning:   unmaintained
Title:     `unic-char-range` is unmaintained
Date:      2025-10-18
ID:        RUSTSEC-2025-0075
URL:       https://rustsec.org/advisories/RUSTSEC-2025-0075

Crate:     unic-common
Version:   0.9.0
Warning:   unmaintained
Title:     `unic-common` is unmaintained
Date:      2025-10-18
ID:        RUSTSEC-2025-0080
URL:       https://rustsec.org/advisories/RUSTSEC-2025-0080

Crate:     unic-ucd-bidi
Version:   0.9.0
Warning:   unmaintained
Title:     `unic-ucd-bidi` is unmaintained
Date:      2025-10-18
ID:        RUSTSEC-2025-0083
URL:       https://rustsec.org/advisories/RUSTSEC-2025-0083

Crate:     unic-ucd-category
Version:   0.9.0
Warning:   unmaintained
Title:     `unic-ucd-category` is unmaintained
Date:      2025-10-18
ID:        RUSTSEC-2025-0094
URL:       https://rustsec.org/advisories/RUSTSEC-2025-0094

Crate:     unic-ucd-ident
Version:   0.9.0
Warning:   unmaintained
Title:     `unic-ucd-ident` is unmaintained
Date:      2025-10-18
ID:        RUSTSEC-2025-0100
URL:       https://rustsec.org/advisories/RUSTSEC-2025-0100

Crate:     unic-ucd-version
Version:   0.9.0
Warning:   unmaintained
Title:     `unic-ucd-version` is unmaintained
Date:      2025-10-18
ID:        RUSTSEC-2025-0098
URL:       https://rustsec.org/advisories/RUSTSEC-2025-0098

    Fetching advisory database from `https://github.com/RustSec/advisory-db.git`
      Loaded 1240 security advisories (from /home/runner/.cargo/advisory-db)
    Updating crates.io index
    Scanning Cargo.lock for vulnerabilities (548 crate dependencies)
warning: 10 allowed warnings found
── audit: PASS ──

═══ [9/13] deny: cargo deny check ═══
advisories ok, bans ok, licenses ok, sources ok
warning[license-exception-not-encountered]: license exception was not encountered
   ┌─ /home/runner/work/ornis/ornis/deny.toml:59:34
   │
59 │     { allow = ["NCSA"], crate = "libfuzzer-sys" },
   │                                  ━━━━━━━━━━━━━ unmatched license exception

warning[duplicate]: found 2 duplicate entries for crate 'bitflags'
   ┌─ /home/runner/work/ornis/ornis/Cargo.lock:23:1
   │  
23 │ ╭ bitflags 1.3.2 registry+https://github.com/rust-lang/crates.io-index
24 │ │ bitflags 2.13.1 registry+https://github.com/rust-lang/crates.io-index
   │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries
   │  
   ├ bitflags v1.3.2
     ├── core-graphics v0.23.2
     │   └── winit v0.30.13
     │       └── ornis v0.1.0
     ├── core-graphics-types v0.1.3
     │   └── core-graphics v0.23.2 (*)
     └── redox_syscall v0.4.1
         └── winit v0.30.13 (*)
   ├ bitflags v2.13.1
     ├── android-activity v0.6.1
     │   └── winit v0.30.13
     │       └── ornis v0.1.0
     ├── calloop v0.13.0
     │   ├── calloop-wayland-source v0.3.0
     │   │   └── smithay-client-toolkit v0.19.2
     │   │       ├── sctk-adwaita v0.10.1
     │   │       │   └── winit v0.30.13 (*)
     │   │       └── winit v0.30.13 (*)
     │   ├── smithay-client-toolkit v0.19.2 (*)
     │   └── winit v0.30.13 (*)
     ├── libredox v0.1.23
     │   └── orbclient v0.3.55
     │       └── winit v0.30.13 (*)
     ├── naga v30.0.1
     │   ├── (dev) ornis-physics v0.1.0
     │   │   ├── ornis v0.1.0 (*)
     │   │   ├── ornis-app v0.1.0
     │   │   │   └── ornis v0.1.0 (*)
     │   │   └── (dev) ornis-core v0.1.0
     │   │       ├── ornis v0.1.0 (*)
     │   │       ├── ornis-app v0.1.0 (*)
     │   │       ├── (dev) ornis-macros v0.1.0
     │   │       │   ├── (dev) ornis-core v0.1.0 (*)
     │   │       │   ├── ornis-physics v0.1.0 (*)
     │   │       │   └── ornis-render v0.1.0
     │   │       │       ├── ornis v0.1.0 (*)
     │   │       │       └── ornis-app v0.1.0 (*)
     │   │       ├── ornis-render v0.1.0 (*)
     │   │       └── ornis-rhai v0.1.0
     │   │           └── ornis v0.1.0 (*)
     │   ├── (dev) ornis-render v0.1.0 (*)
     │   ├── wgpu-core v30.0.1
     │   │   └── wgpu v30.0.1
     │   │       ├── ornis v0.1.0 (*)
     │   │       └── (dev) ornis-render v0.1.0 (*)
     │   ├── wgpu-hal v30.0.1
     │   │   ├── wgpu v30.0.1 (*)
     │   │   ├── wgpu-core v30.0.1 (*)
     │   │   ├── wgpu-core-deps-apple v30.0.1
     │   │   │   └── wgpu-core v30.0.1 (*)
     │   │   ├── wgpu-core-deps-emscripten v30.0.1
     │   │   │   └── wgpu-core v30.0.1 (*)
     │   │   └── wgpu-core-deps-windows-linux-android v30.0.1
     │   │       └── wgpu-core v30.0.1 (*)
     │   └── wgpu-naga-bridge v30.0.1
     │       ├── wgpu-core v30.0.1 (*)
     │       └── wgpu-hal v30.0.1 (*)
     ├── ndk v0.9.0
     │   ├── android-activity v0.6.1 (*)
     │   └── winit v0.30.13 (*)
     ├── objc2-app-kit v0.2.2
     │   └── winit v0.30.13 (*)
     ├── objc2-core-foundation v0.3.2
     │   ├── objc2-core-graphics v0.3.2
     │   │   ├── objc2-quartz-core v0.3.2
     │   │   │   ├── raw-window-metal v1.1.0
     │   │   │   │   └── wgpu-hal v30.0.1 (*)
     │   │   │   └── wgpu-hal v30.0.1 (*)
     │   │   └── wgpu-hal v30.0.1 (*)
     │   ├── objc2-foundation v0.3.2
     │   │   ├── objc2-metal v0.3.2
     │   │   │   ├── objc2-quartz-core v0.3.2 (*)
     │   │   │   └── wgpu-hal v30.0.1 (*)
     │   │   ├── objc2-quartz-core v0.3.2 (*)
     │   │   ├── raw-window-metal v1.1.0 (*)
     │   │   └── wgpu-hal v30.0.1 (*)
     │   ├── objc2-quartz-core v0.3.2 (*)
     │   ├── raw-window-metal v1.1.0 (*)
     │   └── wgpu-hal v30.0.1 (*)
     ├── objc2-foundation v0.2.2
     │   ├── objc2-app-kit v0.2.2 (*)
     │   ├── objc2-ui-kit v0.2.2
     │   │   └── winit v0.30.13 (*)
     │   └── winit v0.30.13 (*)
     ├── objc2-foundation v0.3.2 (*)
     ├── objc2-metal v0.3.2 (*)
     ├── objc2-quartz-core v0.3.2 (*)
     ├── objc2-ui-kit v0.2.2 (*)
     ├── png v0.18.1
     │   └── (dev) ornis-render v0.1.0 (*)
     ├── proptest v1.11.0
     │   ├── (dev) ornis-core v0.1.0 (*)
     │   └── (dev) ornis-render v0.1.0 (*)
     ├── redox_syscall v0.5.18
     │   └── parking_lot_core v0.9.12
     │       ├── dashmap v6.2.1
     │       │   └── ornis-physics v0.1.0 (*)
     │       └── parking_lot v0.12.5
     │           ├── wgpu v30.0.1 (*)
     │           ├── wgpu-core v30.0.1 (*)
     │           └── wgpu-hal v30.0.1 (*)
     ├── redox_syscall v0.9.4
     │   └── libredox v0.1.23 (*)
     ├── rhai v1.26.0
     │   └── ornis-rhai v0.1.0 (*)
     ├── ron v0.12.2
     │   └── ornis-render v0.1.0 (*)
     ├── rustix v0.38.44
     │   ├── calloop v0.13.0 (*)
     │   ├── calloop-wayland-source v0.3.0 (*)
     │   ├── smithay-client-toolkit v0.19.2 (*)
     │   └── winit v0.30.13 (*)
     ├── rustix v1.1.4
     │   ├── gethostname v1.1.0
     │   │   └── x11rb v0.13.2
     │   │       └── winit v0.30.13 (*)
     │   ├── polling v3.11.0
     │   │   └── calloop v0.13.0 (*)
     │   ├── tempfile v3.27.0
     │   │   ├── proptest v1.11.0 (*)
     │   │   └── rusty-fork v0.3.1
     │   │       └── proptest v1.11.0 (*)
     │   ├── wayland-backend v0.3.17
     │   │   ├── calloop-wayland-source v0.3.0 (*)
     │   │   ├── smithay-client-toolkit v0.19.2 (*)
     │   │   ├── wayland-client v0.31.15
     │   │   │   ├── calloop-wayland-source v0.3.0 (*)
     │   │   │   ├── smithay-client-toolkit v0.19.2 (*)
     │   │   │   ├── wayland-cursor v0.31.14
     │   │   │   │   └── smithay-client-toolkit v0.19.2 (*)
     │   │   │   ├── wayland-protocols v0.32.13
     │   │   │   │   ├── smithay-client-toolkit v0.19.2 (*)
     │   │   │   │   ├── wayland-protocols-plasma v0.3.12
     │   │   │   │   │   └── winit v0.30.13 (*)
     │   │   │   │   ├── wayland-protocols-wlr v0.3.12
     │   │   │   │   │   └── smithay-client-toolkit v0.19.2 (*)
     │   │   │   │   └── winit v0.30.13 (*)
     │   │   │   ├── wayland-protocols-plasma v0.3.12 (*)
     │   │   │   ├── wayland-protocols-wlr v0.3.12 (*)
     │   │   │   └── winit v0.30.13 (*)
     │   │   ├── wayland-csd-frame v0.3.0
     │   │   │   └── smithay-client-toolkit v0.19.2 (*)
     │   │   ├── wayland-protocols v0.32.13 (*)
     │   │   ├── wayland-protocols-plasma v0.3.12 (*)
     │   │   ├── wayland-protocols-wlr v0.3.12 (*)
     │   │   └── winit v0.30.13 (*)
     │   ├── wayland-client v0.31.15 (*)
     │   ├── wayland-cursor v0.31.14 (*)
     │   └── x11rb v0.13.2 (*)
     ├── smithay-client-toolkit v0.19.2 (*)
     ├── spirv v0.4.0+sdk-1.4.341.0
     │   └── naga v30.0.1 (*)
     ├── wayland-client v0.31.15 (*)
     ├── wayland-csd-frame v0.3.0 (*)
     ├── wayland-protocols v0.32.13 (*)
     ├── wayland-protocols-plasma v0.3.12 (*)
     ├── wayland-protocols-wlr v0.3.12 (*)
     ├── wgpu v30.0.1 (*)
     ├── wgpu-core v30.0.1 (*)
     ├── wgpu-hal v30.0.1 (*)
     ├── wgpu-types v30.0.1
     │   ├── wgpu v30.0.1 (*)
     │   ├── wgpu-core v30.0.1 (*)
     │   ├── wgpu-hal v30.0.1 (*)
     │   └── wgpu-naga-bridge v30.0.1 (*)
     ├── winit v0.30.13 (*)
     └── xkbcommon-dl v0.4.2
         └── winit v0.30.13 (*)

warning[duplicate]: found 2 duplicate entries for crate 'block2'
   ┌─ /home/runner/work/ornis/ornis/Cargo.lock:25:1
   │  
25 │ ╭ block2 0.5.1 registry+https://github.com/rust-lang/crates.io-index
26 │ │ block2 0.6.2 registry+https://github.com/rust-lang/crates.io-index
   │ ╰──────────────────────────────────────────────────────────────────┘ lock entries
   │  
   ├ block2 v0.5.1
     ├── objc2-foundation v0.2.2
     │   ├── objc2-app-kit v0.2.2
     │   │   └── winit v0.30.13
     │   │       └── ornis v0.1.0
     │   ├── objc2-ui-kit v0.2.2
     │   │   └── winit v0.30.13 (*)
     │   └── winit v0.30.13 (*)
     └── winit v0.30.13 (*)
   ├ block2 v0.6.2
     ├── objc2-metal v0.3.2
     │   ├── objc2-quartz-core v0.3.2
     │   │   ├── raw-window-metal v1.1.0
     │   │   │   └── wgpu-hal v30.0.1
     │   │   │       ├── wgpu v30.0.1
     │   │   │       │   ├── ornis v0.1.0
     │   │   │       │   └── (dev) ornis-render v0.1.0
     │   │   │       │       ├── ornis v0.1.0 (*)
     │   │   │       │       └── ornis-app v0.1.0
     │   │   │       │           └── ornis v0.1.0 (*)
     │   │   │       ├── wgpu-core v30.0.1
     │   │   │       │   └── wgpu v30.0.1 (*)
     │   │   │       ├── wgpu-core-deps-apple v30.0.1
     │   │   │       │   └── wgpu-core v30.0.1 (*)
     │   │   │       ├── wgpu-core-deps-emscripten v30.0.1
     │   │   │       │   └── wgpu-core v30.0.1 (*)
     │   │   │       └── wgpu-core-deps-windows-linux-android v30.0.1
     │   │   │           └── wgpu-core v30.0.1 (*)
     │   │   └── wgpu-hal v30.0.1 (*)
     │   └── wgpu-hal v30.0.1 (*)
     └── wgpu-hal v30.0.1 (*)

warning[duplicate]: found 3 duplicate entries for crate 'getrandom'
   ┌─ /home/runner/work/ornis/ornis/Cargo.lock:86:1
   │  
86 │ ╭ getrandom 0.2.17 registry+https://github.com/rust-lang/crates.io-index
87 │ │ getrandom 0.3.4 registry+https://github.com/rust-lang/crates.io-index
88 │ │ getrandom 0.4.3 registry+https://github.com/rust-lang/crates.io-index
   │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries
   │  
   ├ getrandom v0.2.17
     └── const-random-macro v0.1.16
         └── const-random v0.1.18
             └── ahash v0.8.12
                 ├── rhai v1.26.0
                 │   └── ornis-rhai v0.1.0
                 │       └── ornis v0.1.0
                 └── winit v0.30.13
                     └── ornis v0.1.0 (*)
   ├ getrandom v0.3.4
     ├── ahash v0.8.12
     │   ├── rhai v1.26.0
     │   │   └── ornis-rhai v0.1.0
     │   │       └── ornis v0.1.0
     │   └── winit v0.30.13
     │       └── ornis v0.1.0 (*)
     └── rand_core v0.9.5
         ├── rand v0.9.5
         │   └── proptest v1.11.0
         │       ├── (dev) ornis-core v0.1.0
         │       │   ├── ornis v0.1.0 (*)
         │       │   ├── ornis-app v0.1.0
         │       │   │   └── ornis v0.1.0 (*)
         │       │   ├── (dev) ornis-macros v0.1.0
         │       │   │   ├── (dev) ornis-core v0.1.0 (*)
         │       │   │   ├── ornis-physics v0.1.0
         │       │   │   │   ├── ornis v0.1.0 (*)
         │       │   │   │   ├── ornis-app v0.1.0 (*)
         │       │   │   │   └── (dev) ornis-core v0.1.0 (*)
         │       │   │   └── ornis-render v0.1.0
         │       │   │       ├── ornis v0.1.0 (*)
         │       │   │       └── ornis-app v0.1.0 (*)
         │       │   ├── ornis-render v0.1.0 (*)
         │       │   └── ornis-rhai v0.1.0 (*)
         │       └── (dev) ornis-render v0.1.0 (*)
         ├── rand_chacha v0.9.0
         │   └── proptest v1.11.0 (*)
         └── rand_xorshift v0.4.0
             └── proptest v1.11.0 (*)
   ├ getrandom v0.4.3
     ├── jobserver v0.1.35
     │   └── cc v1.4.5
     │       ├── (build) alloca v0.4.0
     │       │   └── criterion v0.8.2
     │       │       ├── (dev) ornis-core v0.1.0
     │       │       │   ├── ornis v0.1.0
     │       │       │   ├── ornis-app v0.1.0
     │       │       │   │   └── ornis v0.1.0 (*)
     │       │       │   ├── (dev) ornis-macros v0.1.0
     │       │       │   │   ├── (dev) ornis-core v0.1.0 (*)
     │       │       │   │   ├── ornis-physics v0.1.0
     │       │       │   │   │   ├── ornis v0.1.0 (*)
     │       │       │   │   │   ├── ornis-app v0.1.0 (*)
     │       │       │   │   │   └── (dev) ornis-core v0.1.0 (*)
     │       │       │   │   └── ornis-render v0.1.0
     │       │       │   │       ├── ornis v0.1.0 (*)
     │       │       │   │       └── ornis-app v0.1.0 (*)
     │       │       │   ├── ornis-render v0.1.0 (*)
     │       │       │   └── ornis-rhai v0.1.0
     │       │       │       └── ornis v0.1.0 (*)
     │       │       ├── (dev) ornis-physics v0.1.0 (*)
     │       │       └── (dev) ornis-render v0.1.0 (*)
     │       ├── (build) android-activity v0.6.1
     │       │   └── winit v0.30.13
     │       │       └── ornis v0.1.0 (*)
     │       └── (build) wayland-backend v0.3.17
     │           ├── calloop-wayland-source v0.3.0
     │           │   └── smithay-client-toolkit v0.19.2
     │           │       ├── sctk-adwaita v0.10.1
     │           │       │   └── winit v0.30.13 (*)
     │           │       └── winit v0.30.13 (*)
     │           ├── smithay-client-toolkit v0.19.2 (*)
     │           ├── wayland-client v0.31.15
     │           │   ├── calloop-wayland-source v0.3.0 (*)
     │           │   ├── smithay-client-toolkit v0.19.2 (*)
     │           │   ├── wayland-cursor v0.31.14
     │           │   │   └── smithay-client-toolkit v0.19.2 (*)
     │           │   ├── wayland-protocols v0.32.13
     │           │   │   ├── smithay-client-toolkit v0.19.2 (*)
     │           │   │   ├── wayland-protocols-plasma v0.3.12
     │           │   │   │   └── winit v0.30.13 (*)
     │           │   │   ├── wayland-protocols-wlr v0.3.12
     │           │   │   │   └── smithay-client-toolkit v0.19.2 (*)
     │           │   │   └── winit v0.30.13 (*)
     │           │   ├── wayland-protocols-plasma v0.3.12 (*)
     │           │   ├── wayland-protocols-wlr v0.3.12 (*)
     │           │   └── winit v0.30.13 (*)
     │           ├── wayland-csd-frame v0.3.0
     │           │   └── smithay-client-toolkit v0.19.2 (*)
     │           ├── wayland-protocols v0.32.13 (*)
     │           ├── wayland-protocols-plasma v0.3.12 (*)
     │           ├── wayland-protocols-wlr v0.3.12 (*)
     │           └── winit v0.30.13 (*)
     └── tempfile v3.27.0
         ├── proptest v1.11.0
         │   ├── (dev) ornis-core v0.1.0 (*)
         │   └── (dev) ornis-render v0.1.0 (*)
         └── rusty-fork v0.3.1
             └── proptest v1.11.0 (*)

warning[duplicate]: found 3 duplicate entries for crate 'hashbrown'
   ┌─ /home/runner/work/ornis/ornis/Cargo.lock:96:1
   │  
96 │ ╭ hashbrown 0.14.5 registry+https://github.com/rust-lang/crates.io-index
97 │ │ hashbrown 0.16.1 registry+https://github.com/rust-lang/crates.io-index
98 │ │ hashbrown 0.17.1 registry+https://github.com/rust-lang/crates.io-index
   │ ╰──────────────────────────────────────────────────────────────────────┘ lock entries
   │  
   ├ hashbrown v0.14.5
     └── dashmap v6.2.1
         └── ornis-physics v0.1.0
             ├── ornis v0.1.0
             ├── ornis-app v0.1.0
             │   └── ornis v0.1.0 (*)
             └── (dev) ornis-core v0.1.0
                 ├── ornis v0.1.0 (*)
                 ├── ornis-app v0.1.0 (*)
                 ├── (dev) ornis-macros v0.1.0
                 │   ├── (dev) ornis-core v0.1.0 (*)
                 │   ├── ornis-physics v0.1.0 (*)
                 │   └── ornis-render v0.1.0
                 │       ├── ornis v0.1.0 (*)
                 │       └── ornis-app v0.1.0 (*)
                 ├── ornis-render v0.1.0 (*)
                 └── ornis-rhai v0.1.0
                     └── ornis v0.1.0 (*)
   ├ hashbrown v0.16.1
     └── gpu-allocator v0.28.0
         └── wgpu-hal v30.0.1
             ├── wgpu v30.0.1
             │   ├── ornis v0.1.0
             │   └── (dev) ornis-render v0.1.0
             │       ├── ornis v0.1.0 (*)
             │       └── ornis-app v0.1.0
             │           └── ornis v0.1.0 (*)
             ├── wgpu-core v30.0.1
             │   └── wgpu v30.0.1 (*)
             ├── wgpu-core-deps-apple v30.0.1
             │   └── wgpu-core v30.0.1 (*)
             ├── wgpu-core-deps-emscripten v30.0.1
             │   └── wgpu-core v30.0.1 (*)
             └── wgpu-core-deps-windows-linux-android v30.0.1
                 └── wgpu-core v30.0.1 (*)
   ├ hashbrown v0.17.1
     ├── indexmap v2.14.2
     │   ├── naga v30.0.1
     │   │   ├── (dev) ornis-physics v0.1.0
     │   │   │   ├── ornis v0.1.0
     │   │   │   ├── ornis-app v0.1.0
     │   │   │   │   └── ornis v0.1.0 (*)
     │   │   │   └── (dev) ornis-core v0.1.0
     │   │   │       ├── ornis v0.1.0 (*)
     │   │   │       ├── ornis-app v0.1.0 (*)
     │   │   │       ├── (dev) ornis-macros v0.1.0
     │   │   │       │   ├── (dev) ornis-core v0.1.0 (*)
     │   │   │       │   ├── ornis-physics v0.1.0 (*)
     │   │   │       │   └── ornis-render v0.1.0
     │   │   │       │       ├── ornis v0.1.0 (*)
     │   │   │       │       └── ornis-app v0.1.0 (*)
     │   │   │       ├── ornis-render v0.1.0 (*)
     │   │   │       └── ornis-rhai v0.1.0
     │   │   │           └── ornis v0.1.0 (*)
     │   │   ├── (dev) ornis-render v0.1.0 (*)
     │   │   ├── wgpu-core v30.0.1
     │   │   │   └── wgpu v30.0.1
     │   │   │       ├── ornis v0.1.0 (*)
     │   │   │       └── (dev) ornis-render v0.1.0 (*)
     │   │   ├── wgpu-hal v30.0.1
     │   │   │   ├── wgpu v30.0.1 (*)
     │   │   │   ├── wgpu-core v30.0.1 (*)
     │   │   │   ├── wgpu-core-deps-apple v30.0.1
     │   │   │   │   └── wgpu-core v30.0.1 (*)
     │   │   │   ├── wgpu-core-deps-emscripten v30.0.1
     │   │   │   │   └── wgpu-core v30.0.1 (*)
     │   │   │   └── wgpu-core-deps-windows-linux-android v30.0.1
     │   │   │       └── wgpu-core v30.0.1 (*)
     │   │   └── wgpu-naga-bridge v30.0.1
     │   │       ├── wgpu-core v30.0.1 (*)
     │   │       └── wgpu-hal v30.0.1 (*)
     │   ├── naga-types v30.0.1
     │   │   ├── naga v30.0.1 (*)
     │   │   ├── wgpu-core v30.0.1 (*)
     │   │   ├── wgpu-hal v30.0.1 (*)
     │   │   └── wgpu-types v30.0.1
     │   │       ├── wgpu v30.0.1 (*)
     │   │       ├── wgpu-core v30.0.1 (*)
     │   │       ├── wgpu-hal v30.0.1 (*)
     │   │       └── wgpu-naga-bridge v30.0.1 (*)
     │   ├── toml_edit v0.25.13+spec-1.1.0
     │   │   └── proc-macro-crate v3.5.0
     │   │       └── num_enum_derive v0.7.6
     │   │           └── num_enum v0.7.6
     │   │               ├── android-activity v0.6.1
     │   │               │   └── winit v0.30.13
     │   │               │       └── ornis v0.1.0 (*)
     │   │               └── ndk v0.9.0
     │   │                   ├── android-activity v0.6.1 (*)
     │   │                   └── winit v0.30.13 (*)
     │   └── wgpu-core v30.0.1 (*)
     ├── naga v30.0.1 (*)
     ├── naga-types v30.0.1 (*)
     ├── wgpu v30.0.1 (*)
     ├── wgpu-core v30.0.1 (*)
     └── wgpu-hal v30.0.1 (*)

warning[duplicate]: found 2 duplicate entries for crate 'jni-sys'
    ┌─ /home/runner/work/ornis/ornis/Cargo.lock:106:1
    │  

@github-actions

github-actions Bot commented Sep 7, 2026 •

Copy link
Copy Markdown
Full quality.log (run 34149520691) — part 5/6
106 │ ╭ jni-sys 0.3.1 registry+https://github.com/rust-lang/crates.io-index
107 │ │ jni-sys 0.4.1 registry+https://github.com/rust-lang/crates.io-index
    │ ╰───────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ jni-sys v0.3.1
      ├── ndk v0.9.0
      │   ├── android-activity v0.6.1
      │   │   └── winit v0.30.13
      │   │       └── ornis v0.1.0
      │   └── winit v0.30.13 (*)
      └── ndk-sys v0.6.0+11769913
          ├── android-activity v0.6.1 (*)
          ├── ndk v0.9.0 (*)
          └── wgpu-hal v30.0.1
              ├── wgpu v30.0.1
              │   ├── ornis v0.1.0 (*)
              │   └── (dev) ornis-render v0.1.0
              │       ├── ornis v0.1.0 (*)
              │       └── ornis-app v0.1.0
              │           └── ornis v0.1.0 (*)
              ├── wgpu-core v30.0.1
              │   └── wgpu v30.0.1 (*)
              ├── wgpu-core-deps-apple v30.0.1
              │   └── wgpu-core v30.0.1 (*)
              ├── wgpu-core-deps-emscripten v30.0.1
              │   └── wgpu-core v30.0.1 (*)
              └── wgpu-core-deps-windows-linux-android v30.0.1
                  └── wgpu-core v30.0.1 (*)
    ├ jni-sys v0.4.1
      ├── jni v0.22.4
      │   └── android-activity v0.6.1
      │       └── winit v0.30.13
      │           └── ornis v0.1.0
      └── jni-sys v0.3.1
          ├── ndk v0.9.0
          │   ├── android-activity v0.6.1 (*)
          │   └── winit v0.30.13 (*)
          └── ndk-sys v0.6.0+11769913
              ├── android-activity v0.6.1 (*)
              ├── ndk v0.9.0 (*)
              └── wgpu-hal v30.0.1
                  ├── wgpu v30.0.1
                  │   ├── ornis v0.1.0 (*)
                  │   └── (dev) ornis-render v0.1.0
                  │       ├── ornis v0.1.0 (*)
                  │       └── ornis-app v0.1.0
                  │           └── ornis v0.1.0 (*)
                  ├── wgpu-core v30.0.1
                  │   └── wgpu v30.0.1 (*)
                  ├── wgpu-core-deps-apple v30.0.1
                  │   └── wgpu-core v30.0.1 (*)
                  ├── wgpu-core-deps-emscripten v30.0.1
                  │   └── wgpu-core v30.0.1 (*)
                  └── wgpu-core-deps-windows-linux-android v30.0.1
                      └── wgpu-core v30.0.1 (*)

warning[duplicate]: found 2 duplicate entries for crate 'linux-raw-sys'
    ┌─ /home/runner/work/ornis/ornis/Cargo.lock:117:1
    │  
117 │ ╭ linux-raw-sys 0.4.15 registry+https://github.com/rust-lang/crates.io-index
118 │ │ linux-raw-sys 0.12.1 registry+https://github.com/rust-lang/crates.io-index
    │ ╰──────────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ linux-raw-sys v0.4.15
      └── rustix v0.38.44
          ├── calloop v0.13.0
          │   ├── calloop-wayland-source v0.3.0
          │   │   └── smithay-client-toolkit v0.19.2
          │   │       ├── sctk-adwaita v0.10.1
          │   │       │   └── winit v0.30.13
          │   │       │       └── ornis v0.1.0
          │   │       └── winit v0.30.13 (*)
          │   ├── smithay-client-toolkit v0.19.2 (*)
          │   └── winit v0.30.13 (*)
          ├── calloop-wayland-source v0.3.0 (*)
          ├── smithay-client-toolkit v0.19.2 (*)
          └── winit v0.30.13 (*)
    ├ linux-raw-sys v0.12.1
      └── rustix v1.1.4
          ├── gethostname v1.1.0
          │   └── x11rb v0.13.2
          │       └── winit v0.30.13
          │           └── ornis v0.1.0
          ├── polling v3.11.0
          │   └── calloop v0.13.0
          │       ├── calloop-wayland-source v0.3.0
          │       │   └── smithay-client-toolkit v0.19.2
          │       │       ├── sctk-adwaita v0.10.1
          │       │       │   └── winit v0.30.13 (*)
          │       │       └── winit v0.30.13 (*)
          │       ├── smithay-client-toolkit v0.19.2 (*)
          │       └── winit v0.30.13 (*)
          ├── tempfile v3.27.0
          │   ├── proptest v1.11.0
          │   │   ├── (dev) ornis-core v0.1.0
          │   │   │   ├── ornis v0.1.0 (*)
          │   │   │   ├── ornis-app v0.1.0
          │   │   │   │   └── ornis v0.1.0 (*)
          │   │   │   ├── (dev) ornis-macros v0.1.0
          │   │   │   │   ├── (dev) ornis-core v0.1.0 (*)
          │   │   │   │   ├── ornis-physics v0.1.0
          │   │   │   │   │   ├── ornis v0.1.0 (*)
          │   │   │   │   │   ├── ornis-app v0.1.0 (*)
          │   │   │   │   │   └── (dev) ornis-core v0.1.0 (*)
          │   │   │   │   └── ornis-render v0.1.0
          │   │   │   │       ├── ornis v0.1.0 (*)
          │   │   │   │       └── ornis-app v0.1.0 (*)
          │   │   │   ├── ornis-render v0.1.0 (*)
          │   │   │   └── ornis-rhai v0.1.0
          │   │   │       └── ornis v0.1.0 (*)
          │   │   └── (dev) ornis-render v0.1.0 (*)
          │   └── rusty-fork v0.3.1
          │       └── proptest v1.11.0 (*)
          ├── wayland-backend v0.3.17
          │   ├── calloop-wayland-source v0.3.0 (*)
          │   ├── smithay-client-toolkit v0.19.2 (*)
          │   ├── wayland-client v0.31.15
          │   │   ├── calloop-wayland-source v0.3.0 (*)
          │   │   ├── smithay-client-toolkit v0.19.2 (*)
          │   │   ├── wayland-cursor v0.31.14
          │   │   │   └── smithay-client-toolkit v0.19.2 (*)
          │   │   ├── wayland-protocols v0.32.13
          │   │   │   ├── smithay-client-toolkit v0.19.2 (*)
          │   │   │   ├── wayland-protocols-plasma v0.3.12
          │   │   │   │   └── winit v0.30.13 (*)
          │   │   │   ├── wayland-protocols-wlr v0.3.12
          │   │   │   │   └── smithay-client-toolkit v0.19.2 (*)
          │   │   │   └── winit v0.30.13 (*)
          │   │   ├── wayland-protocols-plasma v0.3.12 (*)
          │   │   ├── wayland-protocols-wlr v0.3.12 (*)
          │   │   └── winit v0.30.13 (*)
          │   ├── wayland-csd-frame v0.3.0
          │   │   └── smithay-client-toolkit v0.19.2 (*)
          │   ├── wayland-protocols v0.32.13 (*)
          │   ├── wayland-protocols-plasma v0.3.12 (*)
          │   ├── wayland-protocols-wlr v0.3.12 (*)
          │   └── winit v0.30.13 (*)
          ├── wayland-client v0.31.15 (*)
          ├── wayland-cursor v0.31.14 (*)
          └── x11rb v0.13.2 (*)

warning[duplicate]: found 2 duplicate entries for crate 'objc2'
    ┌─ /home/runner/work/ornis/ornis/Cargo.lock:136:1
    │  
136 │ ╭ objc2 0.5.2 registry+https://github.com/rust-lang/crates.io-index
137 │ │ objc2 0.6.4 registry+https://github.com/rust-lang/crates.io-index
    │ ╰─────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ objc2 v0.5.2
      ├── block2 v0.5.1
      │   ├── objc2-foundation v0.2.2
      │   │   ├── objc2-app-kit v0.2.2
      │   │   │   └── winit v0.30.13
      │   │   │       └── ornis v0.1.0
      │   │   ├── objc2-ui-kit v0.2.2
      │   │   │   └── winit v0.30.13 (*)
      │   │   └── winit v0.30.13 (*)
      │   └── winit v0.30.13 (*)
      ├── objc2-app-kit v0.2.2 (*)
      ├── objc2-foundation v0.2.2 (*)
      ├── objc2-ui-kit v0.2.2 (*)
      └── winit v0.30.13 (*)
    ├ objc2 v0.6.4
      ├── block2 v0.6.2
      │   ├── objc2-metal v0.3.2
      │   │   ├── objc2-quartz-core v0.3.2
      │   │   │   ├── raw-window-metal v1.1.0
      │   │   │   │   └── wgpu-hal v30.0.1
      │   │   │   │       ├── wgpu v30.0.1
      │   │   │   │       │   ├── ornis v0.1.0
      │   │   │   │       │   └── (dev) ornis-render v0.1.0
      │   │   │   │       │       ├── ornis v0.1.0 (*)
      │   │   │   │       │       └── ornis-app v0.1.0
      │   │   │   │       │           └── ornis v0.1.0 (*)
      │   │   │   │       ├── wgpu-core v30.0.1
      │   │   │   │       │   └── wgpu v30.0.1 (*)
      │   │   │   │       ├── wgpu-core-deps-apple v30.0.1
      │   │   │   │       │   └── wgpu-core v30.0.1 (*)
      │   │   │   │       ├── wgpu-core-deps-emscripten v30.0.1
      │   │   │   │       │   └── wgpu-core v30.0.1 (*)
      │   │   │   │       └── wgpu-core-deps-windows-linux-android v30.0.1
      │   │   │   │           └── wgpu-core v30.0.1 (*)
      │   │   │   └── wgpu-hal v30.0.1 (*)
      │   │   └── wgpu-hal v30.0.1 (*)
      │   └── wgpu-hal v30.0.1 (*)
      ├── objc2-core-foundation v0.3.2
      │   ├── objc2-core-graphics v0.3.2
      │   │   ├── objc2-quartz-core v0.3.2 (*)
      │   │   └── wgpu-hal v30.0.1 (*)
      │   ├── objc2-foundation v0.3.2
      │   │   ├── objc2-metal v0.3.2 (*)
      │   │   ├── objc2-quartz-core v0.3.2 (*)
      │   │   ├── raw-window-metal v1.1.0 (*)
      │   │   └── wgpu-hal v30.0.1 (*)
      │   ├── objc2-quartz-core v0.3.2 (*)
      │   ├── raw-window-metal v1.1.0 (*)
      │   └── wgpu-hal v30.0.1 (*)
      ├── objc2-core-graphics v0.3.2 (*)
      ├── objc2-foundation v0.3.2 (*)
      ├── objc2-metal v0.3.2 (*)
      ├── objc2-quartz-core v0.3.2 (*)
      ├── raw-window-metal v1.1.0 (*)
      └── wgpu-hal v30.0.1 (*)

warning[duplicate]: found 2 duplicate entries for crate 'objc2-foundation'
    ┌─ /home/runner/work/ornis/ornis/Cargo.lock:142:1
    │  
142 │ ╭ objc2-foundation 0.2.2 registry+https://github.com/rust-lang/crates.io-index
143 │ │ objc2-foundation 0.3.2 registry+https://github.com/rust-lang/crates.io-index
    │ ╰────────────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ objc2-foundation v0.2.2
      ├── objc2-app-kit v0.2.2
      │   └── winit v0.30.13
      │       └── ornis v0.1.0
      ├── objc2-ui-kit v0.2.2
      │   └── winit v0.30.13 (*)
      └── winit v0.30.13 (*)
    ├ objc2-foundation v0.3.2
      ├── objc2-metal v0.3.2
      │   ├── objc2-quartz-core v0.3.2
      │   │   ├── raw-window-metal v1.1.0
      │   │   │   └── wgpu-hal v30.0.1
      │   │   │       ├── wgpu v30.0.1
      │   │   │       │   ├── ornis v0.1.0
      │   │   │       │   └── (dev) ornis-render v0.1.0
      │   │   │       │       ├── ornis v0.1.0 (*)
      │   │   │       │       └── ornis-app v0.1.0
      │   │   │       │           └── ornis v0.1.0 (*)
      │   │   │       ├── wgpu-core v30.0.1
      │   │   │       │   └── wgpu v30.0.1 (*)
      │   │   │       ├── wgpu-core-deps-apple v30.0.1
      │   │   │       │   └── wgpu-core v30.0.1 (*)
      │   │   │       ├── wgpu-core-deps-emscripten v30.0.1
      │   │   │       │   └── wgpu-core v30.0.1 (*)
      │   │   │       └── wgpu-core-deps-windows-linux-android v30.0.1
      │   │   │           └── wgpu-core v30.0.1 (*)
      │   │   └── wgpu-hal v30.0.1 (*)
      │   └── wgpu-hal v30.0.1 (*)
      ├── objc2-quartz-core v0.3.2 (*)
      ├── raw-window-metal v1.1.0 (*)
      └── wgpu-hal v30.0.1 (*)

warning[duplicate]: found 2 duplicate entries for crate 'r-efi'
    ┌─ /home/runner/work/ornis/ornis/Cargo.lock:186:1
    │  
186 │ ╭ r-efi 5.3.0 registry+https://github.com/rust-lang/crates.io-index
187 │ │ r-efi 6.0.0 registry+https://github.com/rust-lang/crates.io-index
    │ ╰─────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ r-efi v5.3.0
      └── getrandom v0.3.4
          ├── ahash v0.8.12
          │   ├── rhai v1.26.0
          │   │   └── ornis-rhai v0.1.0
          │   │       └── ornis v0.1.0
          │   └── winit v0.30.13
          │       └── ornis v0.1.0 (*)
          └── rand_core v0.9.5
              ├── rand v0.9.5
              │   └── proptest v1.11.0
              │       ├── (dev) ornis-core v0.1.0
              │       │   ├── ornis v0.1.0 (*)
              │       │   ├── ornis-app v0.1.0
              │       │   │   └── ornis v0.1.0 (*)
              │       │   ├── (dev) ornis-macros v0.1.0
              │       │   │   ├── (dev) ornis-core v0.1.0 (*)
              │       │   │   ├── ornis-physics v0.1.0
              │       │   │   │   ├── ornis v0.1.0 (*)
              │       │   │   │   ├── ornis-app v0.1.0 (*)
              │       │   │   │   └── (dev) ornis-core v0.1.0 (*)
              │       │   │   └── ornis-render v0.1.0
              │       │   │       ├── ornis v0.1.0 (*)
              │       │   │       └── ornis-app v0.1.0 (*)
              │       │   ├── ornis-render v0.1.0 (*)
              │       │   └── ornis-rhai v0.1.0 (*)
              │       └── (dev) ornis-render v0.1.0 (*)
              ├── rand_chacha v0.9.0
              │   └── proptest v1.11.0 (*)
              └── rand_xorshift v0.4.0
                  └── proptest v1.11.0 (*)
    ├ r-efi v6.0.0
      └── getrandom v0.4.3
          ├── jobserver v0.1.35
          │   └── cc v1.4.5
          │       ├── (build) alloca v0.4.0
          │       │   └── criterion v0.8.2
          │       │       ├── (dev) ornis-core v0.1.0
          │       │       │   ├── ornis v0.1.0
          │       │       │   ├── ornis-app v0.1.0
          │       │       │   │   └── ornis v0.1.0 (*)
          │       │       │   ├── (dev) ornis-macros v0.1.0
          │       │       │   │   ├── (dev) ornis-core v0.1.0 (*)
          │       │       │   │   ├── ornis-physics v0.1.0
          │       │       │   │   │   ├── ornis v0.1.0 (*)
          │       │       │   │   │   ├── ornis-app v0.1.0 (*)
          │       │       │   │   │   └── (dev) ornis-core v0.1.0 (*)
          │       │       │   │   └── ornis-render v0.1.0
          │       │       │   │       ├── ornis v0.1.0 (*)
          │       │       │   │       └── ornis-app v0.1.0 (*)
          │       │       │   ├── ornis-render v0.1.0 (*)
          │       │       │   └── ornis-rhai v0.1.0
          │       │       │       └── ornis v0.1.0 (*)
          │       │       ├── (dev) ornis-physics v0.1.0 (*)
          │       │       └── (dev) ornis-render v0.1.0 (*)
          │       ├── (build) android-activity v0.6.1
          │       │   └── winit v0.30.13
          │       │       └── ornis v0.1.0 (*)
          │       └── (build) wayland-backend v0.3.17
          │           ├── calloop-wayland-source v0.3.0
          │           │   └── smithay-client-toolkit v0.19.2
          │           │       ├── sctk-adwaita v0.10.1
          │           │       │   └── winit v0.30.13 (*)
          │           │       └── winit v0.30.13 (*)
          │           ├── smithay-client-toolkit v0.19.2 (*)
          │           ├── wayland-client v0.31.15
          │           │   ├── calloop-wayland-source v0.3.0 (*)
          │           │   ├── smithay-client-toolkit v0.19.2 (*)
          │           │   ├── wayland-cursor v0.31.14
          │           │   │   └── smithay-client-toolkit v0.19.2 (*)
          │           │   ├── wayland-protocols v0.32.13
          │           │   │   ├── smithay-client-toolkit v0.19.2 (*)
          │           │   │   ├── wayland-protocols-plasma v0.3.12
          │           │   │   │   └── winit v0.30.13 (*)
          │           │   │   ├── wayland-protocols-wlr v0.3.12
          │           │   │   │   └── smithay-client-toolkit v0.19.2 (*)
          │           │   │   └── winit v0.30.13 (*)
          │           │   ├── wayland-protocols-plasma v0.3.12 (*)
          │           │   ├── wayland-protocols-wlr v0.3.12 (*)
          │           │   └── winit v0.30.13 (*)
          │           ├── wayland-csd-frame v0.3.0
          │           │   └── smithay-client-toolkit v0.19.2 (*)
          │           ├── wayland-protocols v0.32.13 (*)
          │           ├── wayland-protocols-plasma v0.3.12 (*)
          │           ├── wayland-protocols-wlr v0.3.12 (*)
          │           └── winit v0.30.13 (*)
          └── tempfile v3.27.0
              ├── proptest v1.11.0
              │   ├── (dev) ornis-core v0.1.0 (*)
              │   └── (dev) ornis-render v0.1.0 (*)
              └── rusty-fork v0.3.1
                  └── proptest v1.11.0 (*)

warning[duplicate]: found 3 duplicate entries for crate 'redox_syscall'
    ┌─ /home/runner/work/ornis/ornis/Cargo.lock:197:1
    │  
197 │ ╭ redox_syscall 0.4.1 registry+https://github.com/rust-lang/crates.io-index
198 │ │ redox_syscall 0.5.18 registry+https://github.com/rust-lang/crates.io-index
199 │ │ redox_syscall 0.9.4 registry+https://github.com/rust-lang/crates.io-index
    │ ╰─────────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ redox_syscall v0.4.1
      └── winit v0.30.13
          └── ornis v0.1.0
    ├ redox_syscall v0.5.18
      └── parking_lot_core v0.9.12
          ├── dashmap v6.2.1
          │   └── ornis-physics v0.1.0
          │       ├── ornis v0.1.0
          │       ├── ornis-app v0.1.0
          │       │   └── ornis v0.1.0 (*)
          │       └── (dev) ornis-core v0.1.0
          │           ├── ornis v0.1.0 (*)
          │           ├── ornis-app v0.1.0 (*)
          │           ├── (dev) ornis-macros v0.1.0
          │           │   ├── (dev) ornis-core v0.1.0 (*)
          │           │   ├── ornis-physics v0.1.0 (*)
          │           │   └── ornis-render v0.1.0
          │           │       ├── ornis v0.1.0 (*)
          │           │       └── ornis-app v0.1.0 (*)
          │           ├── ornis-render v0.1.0 (*)
          │           └── ornis-rhai v0.1.0
          │               └── ornis v0.1.0 (*)
          └── parking_lot v0.12.5
              ├── wgpu v30.0.1
              │   ├── ornis v0.1.0 (*)
              │   └── (dev) ornis-render v0.1.0 (*)
              ├── wgpu-core v30.0.1
              │   └── wgpu v30.0.1 (*)
              └── wgpu-hal v30.0.1
                  ├── wgpu v30.0.1 (*)
                  ├── wgpu-core v30.0.1 (*)
                  ├── wgpu-core-deps-apple v30.0.1
                  │   └── wgpu-core v30.0.1 (*)
                  ├── wgpu-core-deps-emscripten v30.0.1
                  │   └── wgpu-core v30.0.1 (*)
                  └── wgpu-core-deps-windows-linux-android v30.0.1
                      └── wgpu-core v30.0.1 (*)
    ├ redox_syscall v0.9.4
      └── libredox v0.1.23
          └── orbclient v0.3.55
              └── winit v0.30.13
                  └── ornis v0.1.0

warning[duplicate]: found 2 duplicate entries for crate 'rustix'
    ┌─ /home/runner/work/ornis/ornis/Cargo.lock:209:1
    │  
209 │ ╭ rustix 0.38.44 registry+https://github.com/rust-lang/crates.io-index
210 │ │ rustix 1.1.4 registry+https://github.com/rust-lang/crates.io-index
    │ ╰──────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ rustix v0.38.44
      ├── calloop v0.13.0
      │   ├── calloop-wayland-source v0.3.0
      │   │   └── smithay-client-toolkit v0.19.2
      │   │       ├── sctk-adwaita v0.10.1
      │   │       │   └── winit v0.30.13
      │   │       │       └── ornis v0.1.0
      │   │       └── winit v0.30.13 (*)
      │   ├── smithay-client-toolkit v0.19.2 (*)
      │   └── winit v0.30.13 (*)
      ├── calloop-wayland-source v0.3.0 (*)
      ├── smithay-client-toolkit v0.19.2 (*)
      └── winit v0.30.13 (*)
    ├ rustix v1.1.4
      ├── gethostname v1.1.0
      │   └── x11rb v0.13.2
      │       └── winit v0.30.13
      │           └── ornis v0.1.0
      ├── polling v3.11.0
      │   └── calloop v0.13.0
      │       ├── calloop-wayland-source v0.3.0
      │       │   └── smithay-client-toolkit v0.19.2
      │       │       ├── sctk-adwaita v0.10.1
      │       │       │   └── winit v0.30.13 (*)
      │       │       └── winit v0.30.13 (*)
      │       ├── smithay-client-toolkit v0.19.2 (*)
      │       └── winit v0.30.13 (*)
      ├── tempfile v3.27.0
      │   ├── proptest v1.11.0
      │   │   ├── (dev) ornis-core v0.1.0
      │   │   │   ├── ornis v0.1.0 (*)
      │   │   │   ├── ornis-app v0.1.0
      │   │   │   │   └── ornis v0.1.0 (*)
      │   │   │   ├── (dev) ornis-macros v0.1.0
      │   │   │   │   ├── (dev) ornis-core v0.1.0 (*)
      │   │   │   │   ├── ornis-physics v0.1.0
      │   │   │   │   │   ├── ornis v0.1.0 (*)
      │   │   │   │   │   ├── ornis-app v0.1.0 (*)
      │   │   │   │   │   └── (dev) ornis-core v0.1.0 (*)
      │   │   │   │   └── ornis-render v0.1.0
      │   │   │   │       ├── ornis v0.1.0 (*)
      │   │   │   │       └── ornis-app v0.1.0 (*)
      │   │   │   ├── ornis-render v0.1.0 (*)
      │   │   │   └── ornis-rhai v0.1.0
      │   │   │       └── ornis v0.1.0 (*)
      │   │   └── (dev) ornis-render v0.1.0 (*)
      │   └── rusty-fork v0.3.1
      │       └── proptest v1.11.0 (*)
      ├── wayland-backend v0.3.17
      │   ├── calloop-wayland-source v0.3.0 (*)
      │   ├── smithay-client-toolkit v0.19.2 (*)
      │   ├── wayland-client v0.31.15
      │   │   ├── calloop-wayland-source v0.3.0 (*)
      │   │   ├── smithay-client-toolkit v0.19.2 (*)
      │   │   ├── wayland-cursor v0.31.14
      │   │   │   └── smithay-client-toolkit v0.19.2 (*)
      │   │   ├── wayland-protocols v0.32.13
      │   │   │   ├── smithay-client-toolkit v0.19.2 (*)
      │   │   │   ├── wayland-protocols-plasma v0.3.12
      │   │   │   │   └── winit v0.30.13 (*)
      │   │   │   ├── wayland-protocols-wlr v0.3.12
      │   │   │   │   └── smithay-client-toolkit v0.19.2 (*)
      │   │   │   └── winit v0.30.13 (*)
      │   │   ├── wayland-protocols-plasma v0.3.12 (*)
      │   │   ├── wayland-protocols-wlr v0.3.12 (*)
      │   │   └── winit v0.30.13 (*)
      │   ├── wayland-csd-frame v0.3.0
      │   │   └── smithay-client-toolkit v0.19.2 (*)
      │   ├── wayland-protocols v0.32.13 (*)
      │   ├── wayland-protocols-plasma v0.3.12 (*)
      │   ├── wayland-protocols-wlr v0.3.12 (*)
      │   └── winit v0.30.13 (*)
      ├── wayland-client v0.31.15 (*)
      ├── wayland-cursor v0.31.14 (*)
      └── x11rb v0.13.2 (*)

warning[duplicate]: found 2 duplicate entries for crate 'syn'
    ┌─ /home/runner/work/ornis/ornis/Cargo.lock:236:1
    │  
236 │ ╭ syn 2.0.119 registry+https://github.com/rust-lang/crates.io-index
237 │ │ syn 3.0.5 registry+https://github.com/rust-lang/crates.io-index
    │ ╰───────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ syn v2.0.119
      ├── jni-macros v0.22.4
      │   └── jni v0.22.4
      │       └── android-activity v0.6.1
      │           └── winit v0.30.13
      │               └── ornis v0.1.0
      ├── jni-sys-macros v0.4.1
      │   └── jni-sys v0.4.1
      │       ├── jni v0.22.4 (*)
      │       └── jni-sys v0.3.1
      │           ├── ndk v0.9.0
      │           │   ├── android-activity v0.6.1 (*)
      │           │   └── winit v0.30.13 (*)
      │           └── ndk-sys v0.6.0+11769913
      │               ├── android-activity v0.6.1 (*)
      │               ├── ndk v0.9.0 (*)
      │               └── wgpu-hal v30.0.1
      │                   ├── wgpu v30.0.1
      │                   │   ├── ornis v0.1.0 (*)
      │                   │   └── (dev) ornis-render v0.1.0
      │                   │       ├── ornis v0.1.0 (*)
      │                   │       └── ornis-app v0.1.0
      │                   │           └── ornis v0.1.0 (*)
      │                   ├── wgpu-core v30.0.1
      │                   │   └── wgpu v30.0.1 (*)
      │                   ├── wgpu-core-deps-apple v30.0.1
      │                   │   └── wgpu-core v30.0.1 (*)
      │                   ├── wgpu-core-deps-emscripten v30.0.1
      │                   │   └── wgpu-core v30.0.1 (*)
      │                   └── wgpu-core-deps-windows-linux-android v30.0.1
      │                       └── wgpu-core v30.0.1 (*)
      ├── num_enum_derive v0.7.6
      │   └── num_enum v0.7.6
      │       ├── android-activity v0.6.1 (*)
      │       └── ndk v0.9.0 (*)
      ├── pin-project-internal v1.1.13
      │   └── pin-project v1.1.13
      │       └── winit v0.30.13 (*)
      ├── rhai_codegen v3.2.0
      │   └── rhai v1.26.0
      │       └── ornis-rhai v0.1.0
      │           └── ornis v0.1.0 (*)
      ├── thiserror-impl v1.0.69
      │   └── thiserror v1.0.69
      │       ├── calloop v0.13.0
      │       │   ├── calloop-wayland-source v0.3.0
      │       │   │   └── smithay-client-toolkit v0.19.2
      │       │   │       ├── sctk-adwaita v0.10.1
      │       │   │       │   └── winit v0.30.13 (*)
      │       │   │       └── winit v0.30.13 (*)
      │       │   ├── smithay-client-toolkit v0.19.2 (*)
      │       │   └── winit v0.30.13 (*)
      │       ├── ndk v0.9.0 (*)
      │       └── smithay-client-toolkit v0.19.2 (*)
      ├── windows-implement v0.60.2
      │   └── windows-core v0.62.2
      │       ├── wgpu-hal v30.0.1 (*)
      │       ├── windows v0.62.2
      │       │   ├── gpu-allocator v0.28.0
      │       │   │   └── wgpu-hal v30.0.1 (*)
      │       │   └── wgpu-hal v30.0.1 (*)
      │       ├── windows-collections v0.3.2
      │       │   └── windows v0.62.2 (*)
      │       ├── windows-future v0.3.2
      │       │   └── windows v0.62.2 (*)
      │       └── windows-numerics v0.3.1
      │           └── windows v0.62.2 (*)
      ├── windows-interface v0.59.3
      │   └── windows-core v0.62.2 (*)
      └── zerocopy-derive v0.8.56
          └── zerocopy v0.8.56
              ├── ahash v0.8.12
              │   ├── rhai v1.26.0 (*)
              │   └── winit v0.30.13 (*)
              ├── half v2.7.1
              │   ├── ciborium-ll v0.2.2
              │   │   └── ciborium v0.2.2
              │   │       └── criterion v0.8.2
              │   │           ├── (dev) ornis-core v0.1.0
              │   │           │   ├── ornis v0.1.0 (*)
              │   │           │   ├── ornis-app v0.1.0 (*)
              │   │           │   ├── (dev) ornis-macros v0.1.0
              │   │           │   │   ├── (dev) ornis-core v0.1.0 (*)
              │   │           │   │   ├── ornis-physics v0.1.0
              │   │           │   │   │   ├── ornis v0.1.0 (*)
              │   │           │   │   │   ├── ornis-app v0.1.0 (*)
              │   │           │   │   │   └── (dev) ornis-core v0.1.0 (*)
              │   │           │   │   └── ornis-render v0.1.0 (*)
              │   │           │   ├── ornis-render v0.1.0 (*)
              │   │           │   └── ornis-rhai v0.1.0 (*)
              │   │           ├── (dev) ornis-physics v0.1.0 (*)
              │   │           └── (dev) ornis-render v0.1.0 (*)
              │   └── naga v30.0.1
              │       ├── (dev) ornis-physics v0.1.0 (*)
              │       ├── (dev) ornis-render v0.1.0 (*)
              │       ├── wgpu-core v30.0.1 (*)
              │       ├── wgpu-hal v30.0.1 (*)
              │       └── wgpu-naga-bridge v30.0.1
              │           ├── wgpu-core v30.0.1 (*)
              │           └── wgpu-hal v30.0.1 (*)
              └── ppv-lite86 v0.2.21
                  └── rand_chacha v0.9.0
                      └── proptest v1.11.0
                          ├── (dev) ornis-core v0.1.0 (*)
                          └── (dev) ornis-render v0.1.0 (*)
    ├ syn v3.0.5
      ├── bytemuck_derive v1.12.0
      │   └── bytemuck v1.25.2
      │       ├── (dev) ornis-core v0.1.0
      │       │   ├── ornis v0.1.0
      │       │   ├── ornis-app v0.1.0
      │       │   │   └── ornis v0.1.0 (*)
      │       │   ├── (dev) ornis-macros v0.1.0
      │       │   │   ├── (dev) ornis-core v0.1.0 (*)
      │       │   │   ├── ornis-physics v0.1.0
      │       │   │   │   ├── ornis v0.1.0 (*)
      │       │   │   │   ├── ornis-app v0.1.0 (*)
      │       │   │   │   └── (dev) ornis-core v0.1.0 (*)
      │       │   │   └── ornis-render v0.1.0
      │       │   │       ├── ornis v0.1.0 (*)
      │       │   │       └── ornis-app v0.1.0 (*)
      │       │   ├── ornis-render v0.1.0 (*)
      │       │   └── ornis-rhai v0.1.0
      │       │       └── ornis v0.1.0 (*)
      │       ├── ornis-render v0.1.0 (*)
      │       ├── tiny-skia v0.11.4
      │       │   └── sctk-adwaita v0.10.1
      │       │       └── winit v0.30.13
      │       │           └── ornis v0.1.0 (*)
      │       ├── tiny-skia-path v0.11.4
      │       │   └── tiny-skia v0.11.4 (*)
      │       ├── wgpu v30.0.1
      │       │   ├── ornis v0.1.0 (*)
      │       │   └── (dev) ornis-render v0.1.0 (*)
      │       ├── wgpu-core v30.0.1
      │       │   └── wgpu v30.0.1 (*)
      │       ├── wgpu-hal v30.0.1
      │       │   ├── wgpu v30.0.1 (*)
      │       │   ├── wgpu-core v30.0.1 (*)
      │       │   ├── wgpu-core-deps-apple v30.0.1
      │       │   │   └── wgpu-core v30.0.1 (*)
      │       │   ├── wgpu-core-deps-emscripten v30.0.1
      │       │   │   └── wgpu-core v30.0.1 (*)
      │       │   └── wgpu-core-deps-windows-linux-android v30.0.1
      │       │       └── wgpu-core v30.0.1 (*)
      │       ├── wgpu-types v30.0.1
      │       │   ├── wgpu v30.0.1 (*)
      │       │   ├── wgpu-core v30.0.1 (*)
      │       │   ├── wgpu-hal v30.0.1 (*)
      │       │   └── wgpu-naga-bridge v30.0.1
      │       │       ├── wgpu-core v30.0.1 (*)
      │       │       └── wgpu-hal v30.0.1 (*)
      │       └── winit v0.30.13 (*)
      ├── foreign-types-macros v0.2.4
      │   └── foreign-types v0.5.0
      │       └── core-graphics v0.23.2
      │           └── winit v0.30.13 (*)
      ├── ornis-macros v0.1.0 (*)
      ├── serde_derive v1.0.229
      │   ├── ron v0.12.2
      │   │   └── ornis-render v0.1.0 (*)
      │   ├── serde v1.0.229
      │   │   ├── ciborium v0.2.2
      │   │   │   └── criterion v0.8.2
      │   │   │       ├── (dev) ornis-core v0.1.0 (*)
      │   │   │       ├── (dev) ornis-physics v0.1.0 (*)
      │   │   │       └── (dev) ornis-render v0.1.0 (*)
      │   │   ├── criterion v0.8.2 (*)
      │   │   ├── editor-backend v0.1.0
      │   │   │   └── ornis v0.1.0 (*)
      │   │   ├── ornis v0.1.0 (*)
      │   │   ├── ornis-app v0.1.0 (*)
      │   │   ├── (dev) ornis-core v0.1.0 (*)
      │   │   ├── ornis-render v0.1.0 (*)
      │   │   ├── ron v0.12.2 (*)
      │   │   ├── tinytemplate v1.2.1
      │   │   │   └── criterion v0.8.2 (*)
      │   │   └── trybuild v1.0.120
      │   │       └── (dev) ornis-macros v0.1.0 (*)
      │   └── trybuild v1.0.120 (*)
      ├── thiserror-impl v2.0.20
      │   └── thiserror v2.0.20
      │       ├── android-activity v0.6.1
      │       │   └── winit v0.30.13 (*)
      │       ├── gpu-allocator v0.28.0
      │       │   └── wgpu-hal v30.0.1 (*)
      │       ├── jni v0.22.4
      │       │   └── android-activity v0.6.1 (*)
      │       ├── naga v30.0.1
      │       │   ├── (dev) ornis-physics v0.1.0 (*)
      │       │   ├── (dev) ornis-render v0.1.0 (*)
      │       │   ├── wgpu-core v30.0.1 (*)
      │       │   ├── wgpu-hal v30.0.1 (*)
      │       │   └── wgpu-naga-bridge v30.0.1 (*)
      │       ├── naga-types v30.0.1
      │       │   ├── naga v30.0.1 (*)
      │       │   ├── wgpu-core v30.0.1 (*)
      │       │   ├── wgpu-hal v30.0.1 (*)
      │       │   └── wgpu-types v30.0.1 (*)
      │       ├── wgpu-core v30.0.1 (*)
      │       └── wgpu-hal v30.0.1 (*)
      └── wasm-bindgen-macro-support v0.2.128
          └── wasm-bindgen-macro v0.2.128
              └── wasm-bindgen v0.2.128
                  ├── glow v0.17.0
                  │   └── wgpu-hal v30.0.1 (*)
                  ├── js-sys v0.3.105
                  │   ├── glow v0.17.0 (*)
                  │   ├── wasm-bindgen-futures v0.4.78
                  │   │   ├── wgpu v30.0.1 (*)
                  │   │   └── winit v0.30.13 (*)
                  │   ├── web-sys v0.3.105
                  │   │   ├── glow v0.17.0 (*)
                  │   │   ├── plotters v0.3.7
                  │   │   │   └── criterion v0.8.2 (*)
                  │   │   ├── wgpu v30.0.1 (*)
                  │   │   ├── wgpu-hal v30.0.1 (*)
                  │   │   ├── wgpu-types v30.0.1 (*)
                  │   │   └── winit v0.30.13 (*)
                  │   ├── web-time v1.1.0
                  │   │   ├── rhai v1.26.0
                  │   │   │   └── ornis-rhai v0.1.0 (*)
                  │   │   └── winit v0.30.13 (*)
                  │   ├── wgpu v30.0.1 (*)
                  │   ├── wgpu-hal v30.0.1 (*)
                  │   ├── wgpu-types v30.0.1 (*)
                  │   └── winit v0.30.13 (*)
                  ├── plotters v0.3.7 (*)
                  ├── wasm-bindgen-futures v0.4.78 (*)
                  ├── web-sys v0.3.105 (*)
                  ├── web-time v1.1.0 (*)
                  ├── wgpu v30.0.1 (*)
                  ├── wgpu-hal v30.0.1 (*)
                  └── winit v0.30.13 (*)

warning[duplicate]: found 2 duplicate entries for crate 'thiserror'
    ┌─ /home/runner/work/ornis/ornis/Cargo.lock:242:1
    │  
242 │ ╭ thiserror 1.0.69 registry+https://github.com/rust-lang/crates.io-index
243 │ │ thiserror 2.0.20 registry+https://github.com/rust-lang/crates.io-index
    │ ╰──────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ thiserror v1.0.69
      ├── calloop v0.13.0
      │   ├── calloop-wayland-source v0.3.0
      │   │   └── smithay-client-toolkit v0.19.2
      │   │       ├── sctk-adwaita v0.10.1
      │   │       │   └── winit v0.30.13
      │   │       │       └── ornis v0.1.0
      │   │       └── winit v0.30.13 (*)
      │   ├── smithay-client-toolkit v0.19.2 (*)
      │   └── winit v0.30.13 (*)
      ├── ndk v0.9.0
      │   ├── android-activity v0.6.1
      │   │   └── winit v0.30.13 (*)
      │   └── winit v0.30.13 (*)
      └── smithay-client-toolkit v0.19.2 (*)
    ├ thiserror v2.0.20
      ├── android-activity v0.6.1
      │   └── winit v0.30.13
      │       └── ornis v0.1.0
      ├── gpu-allocator v0.28.0
      │   └── wgpu-hal v30.0.1
      │       ├── wgpu v30.0.1
      │       │   ├── ornis v0.1.0 (*)
      │       │   └── (dev) ornis-render v0.1.0
      │       │       ├── ornis v0.1.0 (*)
      │       │       └── ornis-app v0.1.0
      │       │           └── ornis v0.1.0 (*)
      │       ├── wgpu-core v30.0.1
      │       │   └── wgpu v30.0.1 (*)
      │       ├── wgpu-core-deps-apple v30.0.1
      │       │   └── wgpu-core v30.0.1 (*)
      │       ├── wgpu-core-deps-emscripten v30.0.1
      │       │   └── wgpu-core v30.0.1 (*)
      │       └── wgpu-core-deps-windows-linux-android v30.0.1
      │           └── wgpu-core v30.0.1 (*)
      ├── jni v0.22.4
      │   └── android-activity v0.6.1 (*)
      ├── naga v30.0.1
      │   ├── (dev) ornis-physics v0.1.0
      │   │   ├── ornis v0.1.0 (*)
      │   │   ├── ornis-app v0.1.0 (*)
      │   │   └── (dev) ornis-core v0.1.0
      │   │       ├── ornis v0.1.0 (*)
      │   │       ├── ornis-app v0.1.0 (*)
      │   │       ├── (dev) ornis-macros v0.1.0
      │   │       │   ├── (dev) ornis-core v0.1.0 (*)
      │   │       │   ├── ornis-physics v0.1.0 (*)
      │   │       │   └── ornis-render v0.1.0 (*)
      │   │       ├── ornis-render v0.1.0 (*)
      │   │       └── ornis-rhai v0.1.0
      │   │           └── ornis v0.1.0 (*)
      │   ├── (dev) ornis-render v0.1.0 (*)
      │   ├── wgpu-core v30.0.1 (*)
      │   ├── wgpu-hal v30.0.1 (*)
      │   └── wgpu-naga-bridge v30.0.1
      │       ├── wgpu-core v30.0.1 (*)
      │       └── wgpu-hal v30.0.1 (*)
      ├── naga-types v30.0.1
      │   ├── naga v30.0.1 (*)
      │   ├── wgpu-core v30.0.1 (*)
      │   ├── wgpu-hal v30.0.1 (*)
      │   └── wgpu-types v30.0.1
      │       ├── wgpu v30.0.1 (*)
      │       ├── wgpu-core v30.0.1 (*)
      │       ├── wgpu-hal v30.0.1 (*)
      │       └── wgpu-naga-bridge v30.0.1 (*)
      ├── wgpu-core v30.0.1 (*)
      └── wgpu-hal v30.0.1 (*)

warning[duplicate]: found 2 duplicate entries for crate 'thiserror-impl'
    ┌─ /home/runner/work/ornis/ornis/Cargo.lock:244:1
    │  
244 │ ╭ thiserror-impl 1.0.69 registry+https://github.com/rust-lang/crates.io-index
245 │ │ thiserror-impl 2.0.20 registry+https://github.com/rust-lang/crates.io-index
    │ ╰───────────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ thiserror-impl v1.0.69
      └── thiserror v1.0.69
          ├── calloop v0.13.0
          │   ├── calloop-wayland-source v0.3.0
          │   │   └── smithay-client-toolkit v0.19.2
          │   │       ├── sctk-adwaita v0.10.1
          │   │       │   └── winit v0.30.13
          │   │       │       └── ornis v0.1.0
          │   │       └── winit v0.30.13 (*)
          │   ├── smithay-client-toolkit v0.19.2 (*)
          │   └── winit v0.30.13 (*)
          ├── ndk v0.9.0
          │   ├── android-activity v0.6.1
          │   │   └── winit v0.30.13 (*)
          │   └── winit v0.30.13 (*)
          └── smithay-client-toolkit v0.19.2 (*)
    ├ thiserror-impl v2.0.20
      └── thiserror v2.0.20
          ├── android-activity v0.6.1
          │   └── winit v0.30.13
          │       └── ornis v0.1.0
          ├── gpu-allocator v0.28.0
          │   └── wgpu-hal v30.0.1
          │       ├── wgpu v30.0.1
          │       │   ├── ornis v0.1.0 (*)
          │       │   └── (dev) ornis-render v0.1.0
          │       │       ├── ornis v0.1.0 (*)
          │       │       └── ornis-app v0.1.0
          │       │           └── ornis v0.1.0 (*)
          │       ├── wgpu-core v30.0.1
          │       │   └── wgpu v30.0.1 (*)
          │       ├── wgpu-core-deps-apple v30.0.1
          │       │   └── wgpu-core v30.0.1 (*)
          │       ├── wgpu-core-deps-emscripten v30.0.1
          │       │   └── wgpu-core v30.0.1 (*)
          │       └── wgpu-core-deps-windows-linux-android v30.0.1
          │           └── wgpu-core v30.0.1 (*)
          ├── jni v0.22.4
          │   └── android-activity v0.6.1 (*)
          ├── naga v30.0.1
          │   ├── (dev) ornis-physics v0.1.0
          │   │   ├── ornis v0.1.0 (*)
          │   │   ├── ornis-app v0.1.0 (*)
          │   │   └── (dev) ornis-core v0.1.0
          │   │       ├── ornis v0.1.0 (*)
          │   │       ├── ornis-app v0.1.0 (*)
          │   │       ├── (dev) ornis-macros v0.1.0
          │   │       │   ├── (dev) ornis-core v0.1.0 (*)
          │   │       │   ├── ornis-physics v0.1.0 (*)
          │   │       │   └── ornis-render v0.1.0 (*)
          │   │       ├── ornis-render v0.1.0 (*)
          │   │       └── ornis-rhai v0.1.0
          │   │           └── ornis v0.1.0 (*)
          │   ├── (dev) ornis-render v0.1.0 (*)
          │   ├── wgpu-core v30.0.1 (*)
          │   ├── wgpu-hal v30.0.1 (*)
          │   └── wgpu-naga-bridge v30.0.1
          │       ├── wgpu-core v30.0.1 (*)
          │       └── wgpu-hal v30.0.1 (*)
          ├── naga-types v30.0.1
          │   ├── naga v30.0.1 (*)
          │   ├── wgpu-core v30.0.1 (*)
          │   ├── wgpu-hal v30.0.1 (*)
          │   └── wgpu-types v30.0.1
          │       ├── wgpu v30.0.1 (*)
          │       ├── wgpu-core v30.0.1 (*)
          │       ├── wgpu-hal v30.0.1 (*)
          │       └── wgpu-naga-bridge v30.0.1 (*)
          ├── wgpu-core v30.0.1 (*)
          └── wgpu-hal v30.0.1 (*)

warning[duplicate]: found 3 duplicate entries for crate 'windows-sys'
    ┌─ /home/runner/work/ornis/ornis/Cargo.lock:308:1
    │  
308 │ ╭ windows-sys 0.52.0 registry+https://github.com/rust-lang/crates.io-index
309 │ │ windows-sys 0.59.0 registry+https://github.com/rust-lang/crates.io-index
310 │ │ windows-sys 0.61.2 registry+https://github.com/rust-lang/crates.io-index
    │ ╰────────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ windows-sys v0.52.0
      └── winit v0.30.13
          └── ornis v0.1.0
    ├ windows-sys v0.59.0
      └── rustix v0.38.44
          ├── calloop v0.13.0
          │   ├── calloop-wayland-source v0.3.0
          │   │   └── smithay-client-toolkit v0.19.2
          │   │       ├── sctk-adwaita v0.10.1
          │   │       │   └── winit v0.30.13
          │   │       │       └── ornis v0.1.0
          │   │       └── winit v0.30.13 (*)
          │   ├── smithay-client-toolkit v0.19.2 (*)
          │   └── winit v0.30.13 (*)
          ├── calloop-wayland-source v0.3.0 (*)
          ├── smithay-client-toolkit v0.19.2 (*)
          └── winit v0.30.13 (*)
    ├ windows-sys v0.61.2
      ├── errno v0.3.14
      │   ├── rustix v0.38.44
      │   │   ├── calloop v0.13.0
      │   │   │   ├── calloop-wayland-source v0.3.0
      │   │   │   │   └── smithay-client-toolkit v0.19.2
      │   │   │   │       ├── sctk-adwaita v0.10.1
      │   │   │   │       │   └── winit v0.30.13
      │   │   │   │       │       └── ornis v0.1.0
      │   │   │   │       └── winit v0.30.13 (*)
      │   │   │   ├── smithay-client-toolkit v0.19.2 (*)
      │   │   │   └── winit v0.30.13 (*)
      │   │   ├── calloop-wayland-source v0.3.0 (*)
      │   │   ├── smithay-client-toolkit v0.19.2 (*)
      │   │   └── winit v0.30.13 (*)
      │   └── rustix v1.1.4
      │       ├── gethostname v1.1.0
      │       │   └── x11rb v0.13.2
      │       │       └── winit v0.30.13 (*)
      │       ├── polling v3.11.0
      │       │   └── calloop v0.13.0 (*)
      │       ├── tempfile v3.27.0
      │       │   ├── proptest v1.11.0
      │       │   │   ├── (dev) ornis-core v0.1.0
      │       │   │   │   ├── ornis v0.1.0 (*)
      │       │   │   │   ├── ornis-app v0.1.0
      │       │   │   │   │   └── ornis v0.1.0 (*)
      │       │   │   │   ├── (dev) ornis-macros v0.1.0
      │       │   │   │   │   ├── (dev) ornis-core v0.1.0 (*)
      │       │   │   │   │   ├── ornis-physics v0.1.0
      │       │   │   │   │   │   ├── ornis v0.1.0 (*)
      │       │   │   │   │   │   ├── ornis-app v0.1.0 (*)
      │       │   │   │   │   │   └── (dev) ornis-core v0.1.0 (*)
      │       │   │   │   │   └── ornis-render v0.1.0
      │       │   │   │   │       ├── ornis v0.1.0 (*)
      │       │   │   │   │       └── ornis-app v0.1.0 (*)
      │       │   │   │   ├── ornis-render v0.1.0 (*)
      │       │   │   │   └── ornis-rhai v0.1.0
      │       │   │   │       └── ornis v0.1.0 (*)
      │       │   │   └── (dev) ornis-render v0.1.0 (*)
      │       │   └── rusty-fork v0.3.1
      │       │       └── proptest v1.11.0 (*)
      │       ├── wayland-backend v0.3.17
      │       │   ├── calloop-wayland-source v0.3.0 (*)
      │       │   ├── smithay-client-toolkit v0.19.2 (*)
      │       │   ├── wayland-client v0.31.15
      │       │   │   ├── calloop-wayland-source v0.3.0 (*)
      │       │   │   ├── smithay-client-toolkit v0.19.2 (*)
      │       │   │   ├── wayland-cursor v0.31.14
      │       │   │   │   └── smithay-client-toolkit v0.19.2 (*)
      │       │   │   ├── wayland-protocols v0.32.13
      │       │   │   │   ├── smithay-client-toolkit v0.19.2 (*)
      │       │   │   │   ├── wayland-protocols-plasma v0.3.12
      │       │   │   │   │   └── winit v0.30.13 (*)
      │       │   │   │   ├── wayland-protocols-wlr v0.3.12
      │       │   │   │   │   └── smithay-client-toolkit v0.19.2 (*)
      │       │   │   │   └── winit v0.30.13 (*)
      │       │   │   ├── wayland-protocols-plasma v0.3.12 (*)
      │       │   │   ├── wayland-protocols-wlr v0.3.12 (*)
      │       │   │   └── winit v0.30.13 (*)
      │       │   ├── wayland-csd-frame v0.3.0
      │       │   │   └── smithay-client-toolkit v0.19.2 (*)
      │       │   ├── wayland-protocols v0.32.13 (*)
      │       │   ├── wayland-protocols-plasma v0.3.12 (*)
      │       │   ├── wayland-protocols-wlr v0.3.12 (*)
      │       │   └── winit v0.30.13 (*)
      │       ├── wayland-client v0.31.15 (*)
      │       ├── wayland-cursor v0.31.14 (*)
      │       └── x11rb v0.13.2 (*)
      ├── polling v3.11.0 (*)
      ├── rustix v1.1.4 (*)
      ├── tempfile v3.27.0 (*)
      └── winapi-util v0.1.11
          ├── same-file v1.0.6
          │   └── walkdir v2.5.0
          │       ├── criterion v0.8.2
          │       │   ├── (dev) ornis-core v0.1.0 (*)
          │       │   ├── (dev) ornis-physics v0.1.0 (*)
          │       │   └── (dev) ornis-render v0.1.0 (*)
          │       └── (build) jni v0.22.4
          │           └── android-activity v0.6.1
          │               └── winit v0.30.13 (*)
          ├── termcolor v1.4.1
          │   └── trybuild v1.0.120
          │       └── (dev) ornis-macros v0.1.0 (*)
          └── walkdir v2.5.0 (*)

warning[advisory-not-detected]: advisory was not encountered
   ┌─ /home/runner/work/ornis/ornis/deny.toml:24:6
   │
24 │     "RUSTSEC-2026-0194",
   │      ━━━━━━━━━━━━━━━━━ no crate matched advisory criteria

warning[advisory-not-detected]: advisory was not encountered
   ┌─ /home/runner/work/ornis/ornis/deny.toml:25:6
   │
25 │     "RUSTSEC-2026-0195",
   │      ━━━━━━━━━━━━━━━━━ no crate matched advisory criteria

── deny: PASS ──

═══ [10/13] outdated: cargo outdated --workspace --exit-code 1 (hard gate: must be latest) ═══
All dependencies are up to date, yay!
── outdated: PASS ──

═══ [11/13] upgrade-check: cargo upgrade --dry-run --incompatible allow (must be clean) ═══
── upgrade-check: SKIP (cargo-upgrade not installed — Install:  cargo install cargo-edit --locked) ──

═══ [12/13] doc: cargo doc --workspace --no-deps ═══
    Checking ornis-schedule v0.1.0 (/home/runner/work/ornis/ornis/crates/schedule)
   Compiling ornis-macros v0.1.0 (/home/runner/work/ornis/ornis/crates/macros)
   Compiling rustpython-vm v0.5.0 (/home/runner/work/ornis/ornis/third_party/rustpython-vm)
    Checking editor-backend v0.1.0 (/home/runner/work/ornis/ornis/crates/editor-backend)
    Checking ornis-core v0.1.0 (/home/runner/work/ornis/ornis/crates/core)
 Documenting ornis-core v0.1.0 (/home/runner/work/ornis/ornis/crates/core)
    Checking ornis-rhai v0.1.0 (/home/runner/work/ornis/ornis/crates/rhai)
 Documenting ornis-rhai v0.1.0 (/home/runner/work/ornis/ornis/crates/rhai)
warning: unresolved link to `ornis_render_transform::TransformDesc`
  --> crates/core/src/gameplay.rs:41:42
   |
41 | /// When a render-side [`TransformDesc`](ornis_render_transform::TransformDesc)
   |                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no item named `ornis_render_transform` in scope
   |
   = note: `#[warn(rustdoc::broken_intra_doc_links)]` on by default

warning: unresolved link to `ornis_physics_body::RigidBody`
  --> crates/core/src/gameplay.rs:42:30
   |
42 | /// or physics [`RigidBody`](ornis_physics_body::RigidBody) lane exists the
   |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no item named `ornis_physics_body` in scope

warning: unresolved link to `RenderWorldView::extract_snapshot`
  --> crates/core/src/gameplay.rs:58:7
   |
58 | /// [`RenderWorldView::extract_snapshot`] to obtain a CPU-side snapshot when
   |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the struct `RenderWorldView` has no field or associated item named `extract_snapshot`

warning: unresolved link to `ScriptEngine`
  |
  = note: the link appears in this line:
          
          The engine core knows only the [`ScriptEngine`] trait — concrete languages
                                          ^^^^^^^^^^^^^^
  = note: no item named `ScriptEngine` in scope
  = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`

warning: `ornis-core` (lib doc) generated 4 warnings
 Documenting ornis-rune v0.1.0 (/home/runner/work/ornis/ornis/crates/rune)
 Documenting ornis-audio v0.1.0 (/home/runner/work/ornis/ornis/crates/audio)
    Checking ornis-render v0.1.0 (/home/runner/work/ornis/ornis/crates/render)
    Checking ornis-physics v0.1.0 (/home/runner/work/ornis/ornis/crates/physics)
 Documenting ornis-wgpu-backend v0.1.0 (/home/runner/work/ornis/ornis/crates/wgpu_backend)
 Documenting ornis-physics v0.1.0 (/home/runner/work/ornis/ornis/crates/physics)
warning: public documentation for `BroadPhaseStats` links to private item `UniformGrid`
  --> crates/physics/src/broadphase.rs:27:58
   |
27 | /// the `SweepAndPrune` baseline: after an incremental [`UniformGrid`] update
   |                                                          ^^^^^^^^^^^ this item is private
   |
   = note: this link will resolve properly if you pass `--document-private-items`
   = note: `#[warn(rustdoc::private_intra_doc_links)]` on by default

warning: unresolved link to `crate::BuiltinPhysicsEngine::step`
  --> crates/physics/src/broadphase.rs:52:40
   |
52 | /// Wall-clock breakdown of a single [`crate::BuiltinPhysicsEngine::step`].
   |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the struct `BuiltinPhysicsEngine` has no field or associated item named `step`
   |
   = note: `#[warn(rustdoc::broken_intra_doc_links)]` on by default

warning: `ornis-physics` (lib doc) generated 2 warnings
 Documenting ornis-render v0.1.0 (/home/runner/work/ornis/ornis/crates/render)
warning: unresolved link to `ComponentStore`
  |
  = note: the link appears in this line:
          
          [`create_buffer_from_store`] uploads a [`ComponentStore`]'s dense data
                                                  ^^^^^^^^^^^^^^^^
  = note: no item named `ComponentStore` in scope
  = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
  = note: `#[warn(rustdoc::broken_intra_doc_links)]` on by default

warning: unresolved link to `CommandSync`
  |
  = note: the link appears in this line:
          
          [`CommandSync`] accumulates compute command buffers and `Send` CPU
           ^^^^^^^^^^^^^
  = note: no item named `CommandSync` in scope
  = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`

warning: unresolved link to `CommandSync::dispatch_auto`
  |
  = note: the link appears in this line:
          
          [`dispatch_auto`](CommandSync::dispatch_auto) picks the side from the
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^
  = note: no item named `CommandSync` in scope

warning: unresolved link to `LaneTarget`
  |
  = note: the link appears in this line:
          
          sized from the element count. Resolution through [`LaneTarget`]
                                                            ^^^^^^^^^^^^
  = note: no item named `LaneTarget` in scope
  = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`

warning: unresolved link to `LaneTarget`
  |
  = note: the link appears in this line:
          
          [`PipelineRouter`] resolves a component's [`LaneTarget`] marker to a
                                                     ^^^^^^^^^^^^
  = note: no item named `LaneTarget` in scope
  = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`

warning: unresolved link to `TargetDiscriminant`
  |
  = note: the link appears in this line:
          
          maps a [`TargetDiscriminant`] back to an [`ExecutionTarget`]. Both paths
                  ^^^^^^^^^^^^^^^^^^^^
  = note: no item named `TargetDiscriminant` in scope
  = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`

warning: `ornis-wgpu-backend` (lib doc) generated 6 warnings
 Documenting ornis-macros v0.1.0 (/home/runner/work/ornis/ornis/crates/macros)
 Documenting editor-backend v0.1.0 (/home/runner/work/ornis/ornis/crates/editor-backend)
warning: unresolved link to `ornis_core::InputState`
  --> crates/editor-backend/src/ipc.rs:22:41
   |
22 | /// This is the server-side mirror of [`ornis_core::InputState`]: the browser
   |                                         ^^^^^^^^^^^^^^^^^^^^^^ no item named `ornis_core` in scope
   |
   = note: `#[warn(rustdoc::broken_intra_doc_links)]` on by default

warning: unresolved link to `ornis_core::InputState`
  --> crates/editor-backend/src/ipc.rs:24:25
   |
24 | /// its authoritative [`ornis_core::InputState`] resource with the snapshot.
   |                         ^^^^^^^^^^^^^^^^^^^^^^ no item named `ornis_core` in scope

warning: `editor-backend` (lib doc) generated 2 warnings
 Documenting ornis-schedule v0.1.0 (/home/runner/work/ornis/ornis/crates/schedule)
 Documenting xtask v0.1.0 (/home/runner/work/ornis/ornis/xtask)
warning: unclosed HTML tag `path`
 --> xtask/src/main.rs:4:55
  |
4 | //!   cargo xtask editor  [--skip-wasm] [--editor-dir <path>]
  |                                                       ^^^^^^
  |
  = note: `#[warn(rustdoc::invalid_html_tags)]` on by default

warning: unclosed HTML tag `target`
 --> xtask/src/main.rs:6:24
  |
6 | //!   cargo xtask fuzz <target> [-- <libfuzzer args>]
  |                        ^^^^^^^^

warning: unclosed HTML tag `libfuzzer`
 --> xtask/src/main.rs:6:37
  |
6 | //!   cargo xtask fuzz <target> [-- <libfuzzer args>]
  |                                     ^^^^^^^^^^

warning: unclosed HTML tag `cargo-mutants`
 --> xtask/src/main.rs:7:31
  |
7 | //!   cargo xtask mutants [-- <cargo-mutants args>]
  |                               ^^^^^^^^^^^^^^

warning: unclosed HTML tag `path`
 --> xtask/src/main.rs:8:50
  |
8 | //!   cargo editor   [--skip-wasm] [--editor-dir <path>]   (alias)
  |                                                  ^^^^^^

warning: `xtask` (bin "xtask" doc) generated 5 warnings
    Checking ornis-app v0.1.0 (/home/runner/work/ornis/ornis/crates/app)
 Documenting ornis-app v0.1.0 (/home/runner/work/ornis/ornis/crates/app)
 Documenting ornis v0.1.0 (/home/runner/work/ornis/ornis)
warning: a method with this name may be added to the standard library in the future
   --> third_party/rustpython-vm/src/builtins/str.rs:745:34
    |
745 |                     out.extend(c.to_titlecase());
    |                                  ^^^^^^^^^^^^
    |
    = help: call with fully qualified syntax `to_titlecase(...)` to keep using the current method
    = warning: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
    = note: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>
    = note: `#[warn(unstable_name_collisions)]` (part of `#[warn(future_incompatible)]`) on by default

warning: a method with this name may be added to the standard library in the future
   --> third_party/rustpython-vm/src/builtins/str.rs:755:51
    |
755 |                         Some(ch) => out.extend(ch.to_titlecase()),
    |                                                   ^^^^^^^^^^^^
    |
    = help: call with fully qualified syntax `to_titlecase(...)` to keep using the current method
    = warning: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
    = note: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>

warning: a method with this name may be added to the standard library in the future
    --> third_party/rustpython-vm/src/builtins/str.rs:1020:36
     |
1020 |                     title.extend(c.to_titlecase());
     |                                    ^^^^^^^^^^^^
     |
     = help: call with fully qualified syntax `to_titlecase(...)` to keep using the current method
     = warning: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
     = note: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>

warning: a method with this name may be added to the standard library in the future
    --> third_party/rustpython-vm/src/builtins/str.rs:1025:45
     |
1025 |             } else if c.is_uppercase() || c.is_titlecase() {
     |                                             ^^^^^^^^^^^^
     |
     = help: call with fully qualified syntax `is_titlecase(...)` to keep using the current method
     = warning: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
     = note: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>

warning: a method with this name may be added to the standard library in the future
    --> third_party/rustpython-vm/src/builtins/str.rs:1261:38
     |
1261 |             if c.is_uppercase() || c.is_titlecase() {
     |                                      ^^^^^^^^^^^^
     |
     = help: call with fully qualified syntax `is_titlecase(...)` to keep using the current method
     = warning: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
     = note: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>

warning: unresolved link to `Schedule`
 --> crates/app/src/lib.rs:1:61
  |
1 | //! Unified gameplay runtime: single [`World`]/[`Engine`]/[`Schedule`] host.
  |                                                             ^^^^^^^^ no item named `Schedule` in scope
  |
  = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
  = note: `#[warn(rustdoc::broken_intra_doc_links)]` on by default

warning: `ornis-app` (lib doc) generated 1 warning
 Documenting ornis-wasm v0.1.0 (/home/runner/work/ornis/ornis/crates/wasm)
warning: unclosed HTML tag `id`
   --> src/editor_world.rs:343:30
    |
343 |     /// (defaults to "Entity <id>"); bumps the version counter.
    |                              ^^^^
    |
    = note: `#[warn(rustdoc::invalid_html_tags)]` on by default

warning: `ornis` (bin "ornis" doc) generated 1 warning
 Documenting ornis-materialx v0.1.0 (/home/runner/work/ornis/ornis/crates/materialx)
warning: unresolved link to `ornis_core::gameplay`
   --> crates/wasm/src/lib.rs:203:45
    |
203 | /// read by the server gameplay consumer ([`ornis_core::gameplay`]).
    |                                             ^^^^^^^^^^^^^^^^^^^^ no item named `gameplay` in module `ornis_core`
    |
    = note: `#[warn(rustdoc::broken_intra_doc_links)]` on by default

warning: `ornis-wasm` (lib doc) generated 1 warning
warning: public documentation for `FramePresentTarget` links to private item `RenderPresent`
   --> crates/render/src/gpu_resources.rs:110:25
    |
110 | /// acquiring system ([`RenderPresent`]) to the submitting one
    |                         ^^^^^^^^^^^^^ this item is private
    |
    = note: this link will resolve properly if you pass `--document-private-items`
    = note: `#[warn(rustdoc::private_intra_doc_links)]` on by default

warning: public documentation for `FramePresentTarget` links to private item `RenderFlush`
   --> crates/render/src/gpu_resources.rs:111:8
    |
111 | /// ([`RenderFlush`]) — the present half of the E2 handover.
    |        ^^^^^^^^^^^ this item is private
    |
    = note: this link will resolve properly if you pass `--document-private-items`

warning: unresolved link to `PassSystem`
  |
  = note: the link appears in this line:
          
          `ornis_core::Schedule`: every enabled pass becomes a [`PassSystem`]
                                                                ^^^^^^^^^^^^
  = note: no item named `PassSystem` in scope
  = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
  = note: `#[warn(rustdoc::broken_intra_doc_links)]` on by default

warning: unresolved link to `math`
  |
  = note: the link appears in this line:
          
          [`math`]) into a fixed entry-point skeleton, so CPU tests exercise the
           ^^^^^^
  = note: no item named `math` in scope
  = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`

warning: unresolved link to `Schedule`
  |
  = note: the link appears in this line:
          
          [`Schedule`] (and its render-side declaration registry) answers "what
           ^^^^^^^^^^
  = note: no item named `Schedule` in scope
  = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`

warning: unresolved link to `PoolInput`
  |
  = note: the link appears in this line:
          
          declaration snapshot ([`PoolInput`]) into a shared [`FrameLayout`]:
                                 ^^^^^^^^^^^
  = note: no item named `PoolInput` in scope
  = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`

warning: public documentation for `FrameLayout` links to private item `PoolInput`
   --> crates/render/src/transient_pool.rs:206:29
    |
206 | /// Result of compiling a [`PoolInput`] — the computed frame layout.
    |                             ^^^^^^^^^ this item is private
    |

@github-actions

github-actions Bot commented Sep 7, 2026 •

Copy link
Copy Markdown
Full quality.log (run 34149520691) — part 6/6
    = note: this link will resolve properly if you pass `--document-private-items`

warning: public documentation for `TransientPool` links to private item `TransientPool::ensure`
   --> crates/render/src/transient_pool.rs:641:46
    |
641 | /// the registry's declaration generation. [`TransientPool::ensure`]
    |                                              ^^^^^^^^^^^^^^^^^^^^^ this item is private
    |
    = note: this link will resolve properly if you pass `--document-private-items`

warning: `ornis-render` (lib doc) generated 8 warnings
warning: `rustpython-vm` (lib) generated 5 warnings
 Documenting ornis-python v0.1.0 (/home/runner/work/ornis/ornis/crates/python)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 20.92s
   Generated /home/runner/work/ornis/ornis/target/doc/editor_backend/index.html and 15 other files
── doc: PASS ──

═══ [13/13] wasm-check: cargo check -p ornis-wasm --target wasm32-unknown-unknown ═══
    Checking ornis-schedule v0.1.0 (/home/runner/work/ornis/ornis/crates/schedule)
   Compiling ornis-macros v0.1.0 (/home/runner/work/ornis/ornis/crates/macros)
    Checking ornis-core v0.1.0 (/home/runner/work/ornis/ornis/crates/core)
    Checking ornis-render v0.1.0 (/home/runner/work/ornis/ornis/crates/render)
    Checking ornis-wasm v0.1.0 (/home/runner/work/ornis/ornis/crates/wasm)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.78s
── wasm-check: PASS ──

╔════════════ QUALITY SUMMARY ════════════╗
  fmt                    FAIL (exit status: 1)
  clippy                 FAIL (exit status: 101)
  rustqual               PASS
  smoke (editor-only)    PASS
  test                   PASS
  test (physics gpu)     PASS
  clippy (physics gpu)   PASS
  audit                  PASS
  deny                   PASS
  outdated               PASS
  upgrade-check          SKIP (cargo-upgrade not installed)
  doc                    PASS
  wasm-check             PASS
╚═════════════════════════════════════════╝
::error title=quality-summary-fmt::stage FAIL (exit status: 1)
::error title=quality-summary-clippy::stage FAIL (exit status: 101)

@github-actions

github-actions Bot commented Sep 7, 2026 •

Copy link
Copy Markdown
(stale part — log got shorter)

The S5d/S7 commit added crates/render/src/gpu_resources.rs storing wgpu
Device/Queue/Surface/CommandBuffer/Renderer3D as World resources, but
wgpu's web backend types are !Send/!Sync (Rc, JS callbacks) while
World::insert / Resources::get / SystemAccess require Send + Sync —
26 x E0277 on cargo check -p ornis-wasm --target wasm32-unknown-unknown.
Hidden on master by the 10-annotations-per-step cap (clippy/test flood
from the rustpython-vm break); the PR digest summary exposed it.

Native-only module: the only consumer outside ornis-render is the
native root binary (src/main.rs); the wasm path renders through
RenderWorld extraction + ornis-wasm, as before S7. Same convention as
frame_exec.rs cfg pairs. Docs synced (README, unified-scheduler.md).

Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
@arena-ai-coding-agent

Copy link
Copy Markdown
Author

✅ Quality gate is green — run 34107349433 passed all 13 stages (fmt / clippy / rustqual / smoke / test / test (physics gpu) / clippy (physics gpu) / audit / deny / outdated / doc / wasm-check; upgrade-check = SKIP, cargo-upgrade not installed in CI — pre-existing).

The ❌ digest + log chunks above are from the previous (intermediate) run and are kept for history — the workflow only overwrites them on failure.

First step of the S5e + Extract-free decomposition
(docs/rendering/unified-scheduler.md): the pass-as-system adapter.

- schedule_bridge: try_project_schedule(&SystemSet) mirrors every
  enabled pass into a core Schedule PassSystem twin — same name,
  accesses projected from ResourceId to the FrameResource TypeId via
  the registry. Disabled passes drop out with their edges, mirroring
  layout_levels exactly; untyped resources are an honest
  ProjectionError (nothing to mirror). run() is a no-op declaration
  twin by design — E2 moves recording into systems via
  FrameCommandBuffers.
- RenderFrame3D::render_schedule: renders a frame ordered by the
  projected Schedule levels (flatten → execute_in_order), recording
  through the caller's borrowed encoder — same dispatch_pass as the
  sequential/parallel paths (extracted into PassDispatch). Debug-assert
  pins projected levels == FrameLayout::levels() every frame.
- Gates: scheduler_parity extended with the E1 canon (projection ==
  layout levels on chains/shared-levels/edge-splits, disabled-pass
  culling, untyped rejection) + production Technique×bloom matrix in
  bridge unit tests; tests/schedule_render.rs pins pixel identity
  schedule-driven vs sequential on lavapipe (harness mirrors the S5b
  parallel_render gate).
- Docs: unified-scheduler.md E1 section marked done, README row synced.

Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown

❌ Quality gate failed on arena/01a07b19-ornis (run 34110178043).

📊 QUALITY SUMMARY

╔════════════ QUALITY SUMMARY ════════════╗
  fmt                    FAIL (exit status: 1)
  clippy                 FAIL (exit status: 101)
  rustqual               FAIL (quality 0.1589→0.1587, findings 1813→1838)
  smoke (editor-only)    FAIL (exited early: exit status: 101 — �[1m�[91merror�[0m: could not compile `ornis-render` (lib) due to 1 previous error)
  test                   FAIL (exit status: 101)
  test (physics gpu)     PASS
  clippy (physics gpu)   PASS
  audit                  PASS
  deny                   PASS
  outdated               PASS
  upgrade-check          SKIP (cargo-upgrade not installed)
  doc                    FAIL (exit status: 101)
  wasm-check             FAIL (exit status: 101)
╚═════════════════════════════════════════╝

📜 Tail of log (200 lines)

    �[1m�[94m|�[0m                    �[92m+�[0m

�[1m�[91merror�[0m: could not compile `ornis-render` (lib) due to 1 previous error
�[1m�[33mwarning�[0m: build failed, waiting for other jobs to finish...
�[1m�[33mwarning�[0m�[1m: a method with this name may be added to the standard library in the future�[0m
   �[1m�[94m--> �[0mthird_party/rustpython-vm/src/builtins/str.rs:745:34
    �[1m�[94m|�[0m
�[1m�[94m745�[0m �[1m�[94m|�[0m                     out.extend(c.to_titlecase());
    �[1m�[94m|�[0m                                  �[1m�[33m^^^^^^^^^^^^�[0m
    �[1m�[94m|�[0m
    �[1m�[94m= �[0m�[1mhelp�[0m: call with fully qualified syntax `to_titlecase(...)` to keep using the current method
    �[1m�[94m= �[0m�[1mwarning�[0m: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
    �[1m�[94m= �[0m�[1mnote�[0m: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>
    �[1m�[94m= �[0m�[1mnote�[0m: `#[warn(unstable_name_collisions)]` (part of `#[warn(future_incompatible)]`) on by default

�[1m�[33mwarning�[0m�[1m: a method with this name may be added to the standard library in the future�[0m
   �[1m�[94m--> �[0mthird_party/rustpython-vm/src/builtins/str.rs:755:51
    �[1m�[94m|�[0m
�[1m�[94m755�[0m �[1m�[94m|�[0m                         Some(ch) => out.extend(ch.to_titlecase()),
    �[1m�[94m|�[0m                                                   �[1m�[33m^^^^^^^^^^^^�[0m
    �[1m�[94m|�[0m
    �[1m�[94m= �[0m�[1mhelp�[0m: call with fully qualified syntax `to_titlecase(...)` to keep using the current method
    �[1m�[94m= �[0m�[1mwarning�[0m: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
    �[1m�[94m= �[0m�[1mnote�[0m: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>

�[1m�[33mwarning�[0m�[1m: a method with this name may be added to the standard library in the future�[0m
    �[1m�[94m--> �[0mthird_party/rustpython-vm/src/builtins/str.rs:1020:36
     �[1m�[94m|�[0m
�[1m�[94m1020�[0m �[1m�[94m|�[0m                     title.extend(c.to_titlecase());
     �[1m�[94m|�[0m                                    �[1m�[33m^^^^^^^^^^^^�[0m
     �[1m�[94m|�[0m
     �[1m�[94m= �[0m�[1mhelp�[0m: call with fully qualified syntax `to_titlecase(...)` to keep using the current method
     �[1m�[94m= �[0m�[1mwarning�[0m: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
     �[1m�[94m= �[0m�[1mnote�[0m: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>

�[1m�[33mwarning�[0m�[1m: a method with this name may be added to the standard library in the future�[0m
    �[1m�[94m--> �[0mthird_party/rustpython-vm/src/builtins/str.rs:1025:45
     �[1m�[94m|�[0m
�[1m�[94m1025�[0m �[1m�[94m|�[0m             } else if c.is_uppercase() || c.is_titlecase() {
     �[1m�[94m|�[0m                                             �[1m�[33m^^^^^^^^^^^^�[0m
     �[1m�[94m|�[0m
     �[1m�[94m= �[0m�[1mhelp�[0m: call with fully qualified syntax `is_titlecase(...)` to keep using the current method
     �[1m�[94m= �[0m�[1mwarning�[0m: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
     �[1m�[94m= �[0m�[1mnote�[0m: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>

�[1m�[33mwarning�[0m�[1m: a method with this name may be added to the standard library in the future�[0m
    �[1m�[94m--> �[0mthird_party/rustpython-vm/src/builtins/str.rs:1261:38
     �[1m�[94m|�[0m
�[1m�[94m1261�[0m �[1m�[94m|�[0m             if c.is_uppercase() || c.is_titlecase() {
     �[1m�[94m|�[0m                                      �[1m�[33m^^^^^^^^^^^^�[0m
     �[1m�[94m|�[0m
     �[1m�[94m= �[0m�[1mhelp�[0m: call with fully qualified syntax `is_titlecase(...)` to keep using the current method
     �[1m�[94m= �[0m�[1mwarning�[0m: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
     �[1m�[94m= �[0m�[1mnote�[0m: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>

�[1m�[33mwarning�[0m�[1m: unresolved link to `PassSystem`�[0m
  �[1m�[94m|�[0m
  �[1m�[94m= �[0m�[1mnote�[0m: the link appears in this line:
          
          `ornis_core::Schedule`: every enabled pass becomes a [`PassSystem`]
                                                                ^^^^^^^^^^^^
  �[1m�[94m= �[0m�[1mnote�[0m: no item named `PassSystem` in scope
  �[1m�[94m= �[0m�[1mhelp�[0m: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
  �[1m�[94m= �[0m�[1mnote�[0m: `#[warn(rustdoc::broken_intra_doc_links)]` on by default

�[1m�[33mwarning�[0m�[1m: unresolved link to `math`�[0m
  �[1m�[94m|�[0m
  �[1m�[94m= �[0m�[1mnote�[0m: the link appears in this line:
          
          [`math`]) into a fixed entry-point skeleton, so CPU tests exercise the
           ^^^^^^
  �[1m�[94m= �[0m�[1mnote�[0m: no item named `math` in scope
  �[1m�[94m= �[0m�[1mhelp�[0m: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`

�[1m�[33mwarning�[0m�[1m: unresolved link to `Schedule`�[0m
  �[1m�[94m|�[0m
  �[1m�[94m= �[0m�[1mnote�[0m: the link appears in this line:
          
          [`Schedule`] (and its render-side declaration registry) answers "what
           ^^^^^^^^^^
  �[1m�[94m= �[0m�[1mnote�[0m: no item named `Schedule` in scope
  �[1m�[94m= �[0m�[1mhelp�[0m: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`

�[1m�[33mwarning�[0m�[1m: unresolved link to `PoolInput`�[0m
  �[1m�[94m|�[0m
  �[1m�[94m= �[0m�[1mnote�[0m: the link appears in this line:
          
          declaration snapshot ([`PoolInput`]) into a shared [`FrameLayout`]:
                                 ^^^^^^^^^^^
  �[1m�[94m= �[0m�[1mnote�[0m: no item named `PoolInput` in scope
  �[1m�[94m= �[0m�[1mhelp�[0m: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`

�[1m�[33mwarning�[0m�[1m: public documentation for `FrameLayout` links to private item `PoolInput`�[0m
   �[1m�[94m--> �[0mcrates/render/src/transient_pool.rs:206:29
    �[1m�[94m|�[0m
�[1m�[94m206�[0m �[1m�[94m|�[0m /// Result of compiling a [`PoolInput`] — the computed frame layout.
    �[1m�[94m|�[0m                             �[1m�[33m^^^^^^^^^�[0m �[1m�[33mthis item is private�[0m
    �[1m�[94m|�[0m
    �[1m�[94m= �[0m�[1mnote�[0m: this link will resolve properly if you pass `--document-private-items`
    �[1m�[94m= �[0m�[1mnote�[0m: `#[warn(rustdoc::private_intra_doc_links)]` on by default

�[1m�[33mwarning�[0m�[1m: public documentation for `TransientPool` links to private item `TransientPool::ensure`�[0m
   �[1m�[94m--> �[0mcrates/render/src/transient_pool.rs:641:46
    �[1m�[94m|�[0m
�[1m�[94m641�[0m �[1m�[94m|�[0m /// the registry's declaration generation. [`TransientPool::ensure`]
    �[1m�[94m|�[0m                                              �[1m�[33m^^^^^^^^^^^^^^^^^^^^^�[0m �[1m�[33mthis item is private�[0m
    �[1m�[94m|�[0m
    �[1m�[94m= �[0m�[1mnote�[0m: this link will resolve properly if you pass `--document-private-items`

�[1m�[33mwarning�[0m: `ornis-render` (lib doc) generated 6 warnings
�[1m�[33mwarning�[0m: `rustpython-vm` (lib) generated 5 warnings
── doc: FAIL (exit exit status: 101) ──
::error title=quality-doc::warning: unresolved link to `ornis_render_transform::TransformDesc`
::error title=quality-doc::warning: unresolved link to `ornis_physics_body::RigidBody`
::error title=quality-doc::warning: unresolved link to `RenderWorldView::extract_snapshot`
::error title=quality-doc::warning: unresolved link to `ScriptEngine`
::error title=quality-doc::warning: `ornis-core` (lib doc) generated 4 warnings
::error title=quality-doc::warning: unresolved link to `ComponentStore`
::error title=quality-doc::warning: unresolved link to `CommandSync`
::error title=quality-doc::warning: unresolved link to `CommandSync::dispatch_auto`
::error title=quality-doc::warning: unresolved link to `LaneTarget`
::error title=quality-doc::warning: unresolved link to `LaneTarget`
::error title=quality-doc::warning: unresolved link to `TargetDiscriminant`
::error title=quality-doc::warning: `ornis-wgpu-backend` (lib doc) generated 6 warnings
::error title=quality-doc::warning: public documentation for `BroadPhaseStats` links to private item `UniformGrid`
::error title=quality-doc::warning: unresolved link to `crate::BuiltinPhysicsEngine::step`
::error title=quality-doc::warning: `ornis-physics` (lib doc) generated 2 warnings
::error title=quality-doc::warning: unresolved link to `ornis_core::InputState`
::error title=quality-doc::warning: unresolved link to `ornis_core::InputState`
::error title=quality-doc::warning: `editor-backend` (lib doc) generated 2 warnings
::error title=quality-doc::error: cannot explicitly dereference within an implicitly-borrowing pattern
::error title=quality-doc::note: matching on a reference type with a non-reference pattern implicitly borrows the contents
::error title=quality-doc::error: could not compile `ornis-render` (lib) due to 1 previous error
::error title=quality-doc::warning: build failed, waiting for other jobs to finish...
::error title=quality-doc::warning: a method with this name may be added to the standard library in the future
::error title=quality-doc::warning: a method with this name may be added to the standard library in the future
::error title=quality-doc::warning: a method with this name may be added to the standard library in the future
::error title=quality-doc::warning: a method with this name may be added to the standard library in the future
::error title=quality-doc::warning: a method with this name may be added to the standard library in the future
::error title=quality-doc::warning: unresolved link to `PassSystem`
::error title=quality-doc::warning: unresolved link to `math`
::error title=quality-doc::warning: unresolved link to `Schedule`
::error title=quality-doc::warning: unresolved link to `PoolInput`
::error title=quality-doc::warning: public documentation for `FrameLayout` links to private item `PoolInput`
::error title=quality-doc::warning: public documentation for `TransientPool` links to private item `TransientPool::ensure`
::error title=quality-doc::warning: `ornis-render` (lib doc) generated 6 warnings
::error title=quality-doc::warning: `rustpython-vm` (lib) generated 5 warnings

═══ [13/13] wasm-check: cargo check -p ornis-wasm --target wasm32-unknown-unknown ═══
�[1m�[92m    Checking�[0m ornis-schedule v0.1.0 (/home/runner/work/ornis/ornis/crates/schedule)
�[1m�[92m   Compiling�[0m ornis-macros v0.1.0 (/home/runner/work/ornis/ornis/crates/macros)
�[1m�[92m    Checking�[0m ornis-core v0.1.0 (/home/runner/work/ornis/ornis/crates/core)
�[1m�[92m    Checking�[0m ornis-render v0.1.0 (/home/runner/work/ornis/ornis/crates/render)
�[1m�[91merror�[0m�[1m: cannot explicitly dereference within an implicitly-borrowing pattern�[0m
   �[1m�[94m--> �[0mcrates/render/src/system.rs:604:24
    �[1m�[94m|�[0m
�[1m�[94m604�[0m �[1m�[94m|�[0m             .find(|(_, &rid)| rid == id)
    �[1m�[94m|�[0m                        �[1m�[91m^�[0m �[1m�[91mreference pattern not allowed when implicitly borrowing�[0m
    �[1m�[94m|�[0m
    �[1m�[94m= �[0m�[1mnote�[0m: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
�[1m�[92mnote�[0m: matching on a reference type with a non-reference pattern implicitly borrows the contents
   �[1m�[94m--> �[0mcrates/render/src/system.rs:604:20
    �[1m�[94m|�[0m
�[1m�[94m604�[0m �[1m�[94m|�[0m             .find(|(_, &rid)| rid == id)
    �[1m�[94m|�[0m                    �[1m�[92m^^^^^^^^^�[0m �[1m�[92mthis non-reference pattern matches on a reference type `&_`�[0m
�[1m�[96mhelp�[0m: match on the reference with a reference pattern to avoid implicitly borrowing
    �[1m�[94m|�[0m
�[1m�[94m604�[0m �[1m�[94m| �[0m            .find(|�[92m&�[0m(_, &rid)| rid == id)
    �[1m�[94m|�[0m                    �[92m+�[0m

�[1m�[91merror�[0m: could not compile `ornis-render` (lib) due to 1 previous error
── wasm-check: FAIL (exit exit status: 101) ──
::error title=quality-wasm-check::error: cannot explicitly dereference within an implicitly-borrowing pattern
::error title=quality-wasm-check::--> crates/render/src/system.rs:604:24
::error title=quality-wasm-check::note: matching on a reference type with a non-reference pattern implicitly borrows the contents
::error title=quality-wasm-check::--> crates/render/src/system.rs:604:20
::error title=quality-wasm-check::error: could not compile `ornis-render` (lib) due to 1 previous error

╔════════════ QUALITY SUMMARY ════════════╗
  fmt                    FAIL (exit status: 1)
  clippy                 FAIL (exit status: 101)
  rustqual               FAIL (quality 0.1589→0.1587, findings 1813→1838)
  smoke (editor-only)    FAIL (exited early: exit status: 101 — �[1m�[91merror�[0m: could not compile `ornis-render` (lib) due to 1 previous error)
  test                   FAIL (exit status: 101)
  test (physics gpu)     PASS
  clippy (physics gpu)   PASS
  audit                  PASS
  deny                   PASS
  outdated               PASS
  upgrade-check          SKIP (cargo-upgrade not installed)
  doc                    FAIL (exit status: 101)
  wasm-check             FAIL (exit status: 101)
╚═════════════════════════════════════════╝
::error title=quality-summary-fmt::stage FAIL (exit status: 1)
::error title=quality-summary-clippy::stage FAIL (exit status: 101)
::error title=quality-summary-rustqual::stage FAIL (quality 0.1589→0.1587, findings 1813→1838)
::error title=quality-summary-smoke-(editor-only)::stage FAIL (exited early: exit status: 101 — �[1m�[91merror�[0m: could not compile `ornis-render` (lib) due to 1 previous error)
::error title=quality-summary-test::stage FAIL (exit status: 101)
::error title=quality-summary-doc::stage FAIL (exit status: 101)
::error title=quality-summary-wasm-check::stage FAIL (exit status: 101)

Full logs are in the quality-log artifact of this run.

… harness

Three findings from the E1 gate run, fixed at the source:

- system.rs: resource_type used an explicitly-dereferencing pattern
  inside an implicit borrow (edition 2024 hard error); the find closure
  now compares through the double reference instead.
- fmt: schedule_bridge module/use sorted to rustfmt order in lib.rs,
  two wrap forms in bridge/parity restored to rustfmt's preference.
- rustqual ratchet (+25 findings): tests/schedule_render.rs was a
  near-verbatim copy of parallel_render.rs — DUPLICATE exact + a dozen
  FRAGMENTs. Extracted the shared headless-GPU harness into
  tests/common/mod.rs (scene, targets, readback, render_frame_pixels,
  with_headless_scene skip entry, sequential_reference_pixels); both
  gates are now ~30 lines of unique logic each. Removes the pre-existing
  duplicate/fragment findings from parallel_render.rs too, so findings
  land below the 1813 baseline. render_schedule is now fallible
  (Result<(), ProjectionError>, # Errors documented) instead of
  panicking — the projection failure is a declarable error, and the
  gate test's expect is not flagged in test code.

Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown

❌ Quality gate failed on arena/01a07b19-ornis (run 34135212595).

📊 QUALITY SUMMARY

╔════════════ QUALITY SUMMARY ════════════╗
  fmt                    PASS
  clippy                 FAIL (exit status: 101)
  rustqual               PASS
  smoke (editor-only)    PASS
  test                   FAIL (exit status: 101)
  test (physics gpu)     PASS
  clippy (physics gpu)   PASS
  audit                  PASS
  deny                   PASS
  outdated               FAIL (exit status: 1)
  upgrade-check          SKIP (cargo-upgrade not installed)
  doc                    PASS
  wasm-check             PASS
╚═════════════════════════════════════════╝

📜 Tail of log (200 lines)

  �[1m�[94m|�[0m
  �[1m�[94m= �[0m�[1mnote�[0m: `#[warn(rustdoc::invalid_html_tags)]` on by default

�[1m�[33mwarning�[0m�[1m: unclosed HTML tag `target`�[0m
 �[1m�[94m--> �[0mxtask/src/main.rs:6:24
  �[1m�[94m|�[0m
�[1m�[94m6�[0m �[1m�[94m|�[0m //!   cargo xtask fuzz <target> [-- <libfuzzer args>]
  �[1m�[94m|�[0m                        �[1m�[33m^^^^^^^^�[0m

�[1m�[33mwarning�[0m�[1m: unclosed HTML tag `libfuzzer`�[0m
 �[1m�[94m--> �[0mxtask/src/main.rs:6:37
  �[1m�[94m|�[0m
�[1m�[94m6�[0m �[1m�[94m|�[0m //!   cargo xtask fuzz <target> [-- <libfuzzer args>]
  �[1m�[94m|�[0m                                     �[1m�[33m^^^^^^^^^^�[0m

�[1m�[33mwarning�[0m�[1m: unclosed HTML tag `cargo-mutants`�[0m
 �[1m�[94m--> �[0mxtask/src/main.rs:7:31
  �[1m�[94m|�[0m
�[1m�[94m7�[0m �[1m�[94m|�[0m //!   cargo xtask mutants [-- <cargo-mutants args>]
  �[1m�[94m|�[0m                               �[1m�[33m^^^^^^^^^^^^^^�[0m

�[1m�[33mwarning�[0m�[1m: unclosed HTML tag `path`�[0m
 �[1m�[94m--> �[0mxtask/src/main.rs:8:50
  �[1m�[94m|�[0m
�[1m�[94m8�[0m �[1m�[94m|�[0m //!   cargo editor   [--skip-wasm] [--editor-dir <path>]   (alias)
  �[1m�[94m|�[0m                                                  �[1m�[33m^^^^^^�[0m

�[1m�[33mwarning�[0m: `xtask` (bin "xtask" doc) generated 5 warnings
�[1m�[92m    Checking�[0m ornis-app v0.1.0 (/home/runner/work/ornis/ornis/crates/app)
�[1m�[92m Documenting�[0m ornis-wasm v0.1.0 (/home/runner/work/ornis/ornis/crates/wasm)
�[1m�[92m Documenting�[0m ornis v0.1.0 (/home/runner/work/ornis/ornis)
�[1m�[33mwarning�[0m�[1m: a method with this name may be added to the standard library in the future�[0m
   �[1m�[94m--> �[0mthird_party/rustpython-vm/src/builtins/str.rs:745:34
    �[1m�[94m|�[0m
�[1m�[94m745�[0m �[1m�[94m|�[0m                     out.extend(c.to_titlecase());
    �[1m�[94m|�[0m                                  �[1m�[33m^^^^^^^^^^^^�[0m
    �[1m�[94m|�[0m
    �[1m�[94m= �[0m�[1mhelp�[0m: call with fully qualified syntax `to_titlecase(...)` to keep using the current method
    �[1m�[94m= �[0m�[1mwarning�[0m: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
    �[1m�[94m= �[0m�[1mnote�[0m: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>
    �[1m�[94m= �[0m�[1mnote�[0m: `#[warn(unstable_name_collisions)]` (part of `#[warn(future_incompatible)]`) on by default

�[1m�[33mwarning�[0m�[1m: a method with this name may be added to the standard library in the future�[0m
   �[1m�[94m--> �[0mthird_party/rustpython-vm/src/builtins/str.rs:755:51
    �[1m�[94m|�[0m
�[1m�[94m755�[0m �[1m�[94m|�[0m                         Some(ch) => out.extend(ch.to_titlecase()),
    �[1m�[94m|�[0m                                                   �[1m�[33m^^^^^^^^^^^^�[0m
    �[1m�[94m|�[0m
    �[1m�[94m= �[0m�[1mhelp�[0m: call with fully qualified syntax `to_titlecase(...)` to keep using the current method
    �[1m�[94m= �[0m�[1mwarning�[0m: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
    �[1m�[94m= �[0m�[1mnote�[0m: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>

�[1m�[33mwarning�[0m�[1m: a method with this name may be added to the standard library in the future�[0m
    �[1m�[94m--> �[0mthird_party/rustpython-vm/src/builtins/str.rs:1020:36
     �[1m�[94m|�[0m
�[1m�[94m1020�[0m �[1m�[94m|�[0m                     title.extend(c.to_titlecase());
     �[1m�[94m|�[0m                                    �[1m�[33m^^^^^^^^^^^^�[0m
     �[1m�[94m|�[0m
     �[1m�[94m= �[0m�[1mhelp�[0m: call with fully qualified syntax `to_titlecase(...)` to keep using the current method
     �[1m�[94m= �[0m�[1mwarning�[0m: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
     �[1m�[94m= �[0m�[1mnote�[0m: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>

�[1m�[33mwarning�[0m�[1m: a method with this name may be added to the standard library in the future�[0m
    �[1m�[94m--> �[0mthird_party/rustpython-vm/src/builtins/str.rs:1025:45
     �[1m�[94m|�[0m
�[1m�[94m1025�[0m �[1m�[94m|�[0m             } else if c.is_uppercase() || c.is_titlecase() {
     �[1m�[94m|�[0m                                             �[1m�[33m^^^^^^^^^^^^�[0m
     �[1m�[94m|�[0m
     �[1m�[94m= �[0m�[1mhelp�[0m: call with fully qualified syntax `is_titlecase(...)` to keep using the current method
     �[1m�[94m= �[0m�[1mwarning�[0m: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
     �[1m�[94m= �[0m�[1mnote�[0m: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>

�[1m�[33mwarning�[0m�[1m: a method with this name may be added to the standard library in the future�[0m
    �[1m�[94m--> �[0mthird_party/rustpython-vm/src/builtins/str.rs:1261:38
     �[1m�[94m|�[0m
�[1m�[94m1261�[0m �[1m�[94m|�[0m             if c.is_uppercase() || c.is_titlecase() {
     �[1m�[94m|�[0m                                      �[1m�[33m^^^^^^^^^^^^�[0m
     �[1m�[94m|�[0m
     �[1m�[94m= �[0m�[1mhelp�[0m: call with fully qualified syntax `is_titlecase(...)` to keep using the current method
     �[1m�[94m= �[0m�[1mwarning�[0m: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
     �[1m�[94m= �[0m�[1mnote�[0m: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>

�[1m�[33mwarning�[0m�[1m: unresolved link to `ornis_core::gameplay`�[0m
   �[1m�[94m--> �[0mcrates/wasm/src/lib.rs:211:45
    �[1m�[94m|�[0m
�[1m�[94m211�[0m �[1m�[94m|�[0m /// read by the server gameplay consumer ([`ornis_core::gameplay`]).
    �[1m�[94m|�[0m                                             �[1m�[33m^^^^^^^^^^^^^^^^^^^^�[0m �[1m�[33mno item named `gameplay` in module `ornis_core`�[0m
    �[1m�[94m|�[0m
    �[1m�[94m= �[0m�[1mnote�[0m: `#[warn(rustdoc::broken_intra_doc_links)]` on by default

�[1m�[33mwarning�[0m: `ornis-wasm` (lib doc) generated 1 warning
�[1m�[92m Documenting�[0m ornis-materialx v0.1.0 (/home/runner/work/ornis/ornis/crates/materialx)
�[1m�[33mwarning�[0m�[1m: unclosed HTML tag `id`�[0m
   �[1m�[94m--> �[0msrc/editor_world.rs:343:30
    �[1m�[94m|�[0m
�[1m�[94m343�[0m �[1m�[94m|�[0m     /// (defaults to "Entity <id>"); bumps the version counter.
    �[1m�[94m|�[0m                              �[1m�[33m^^^^�[0m
    �[1m�[94m|�[0m
    �[1m�[94m= �[0m�[1mnote�[0m: `#[warn(rustdoc::invalid_html_tags)]` on by default

�[1m�[33mwarning�[0m: `ornis` (bin "ornis" doc) generated 1 warning
�[1m�[92m Documenting�[0m ornis-app v0.1.0 (/home/runner/work/ornis/ornis/crates/app)
�[1m�[33mwarning�[0m�[1m: unresolved link to `Schedule`�[0m
 �[1m�[94m--> �[0mcrates/app/src/lib.rs:1:61
  �[1m�[94m|�[0m
�[1m�[94m1�[0m �[1m�[94m|�[0m //! Unified gameplay runtime: single [`World`]/[`Engine`]/[`Schedule`] host.
  �[1m�[94m|�[0m                                                             �[1m�[33m^^^^^^^^�[0m �[1m�[33mno item named `Schedule` in scope�[0m
  �[1m�[94m|�[0m
  �[1m�[94m= �[0m�[1mhelp�[0m: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
  �[1m�[94m= �[0m�[1mnote�[0m: `#[warn(rustdoc::broken_intra_doc_links)]` on by default

�[1m�[33mwarning�[0m: `ornis-app` (lib doc) generated 1 warning
�[1m�[33mwarning�[0m�[1m: unresolved link to `PassSystem`�[0m
  �[1m�[94m|�[0m
  �[1m�[94m= �[0m�[1mnote�[0m: the link appears in this line:
          
          `ornis_core::Schedule`: every enabled pass becomes a [`PassSystem`]
                                                                ^^^^^^^^^^^^
  �[1m�[94m= �[0m�[1mnote�[0m: no item named `PassSystem` in scope
  �[1m�[94m= �[0m�[1mhelp�[0m: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
  �[1m�[94m= �[0m�[1mnote�[0m: `#[warn(rustdoc::broken_intra_doc_links)]` on by default

�[1m�[33mwarning�[0m�[1m: unresolved link to `math`�[0m
  �[1m�[94m|�[0m
  �[1m�[94m= �[0m�[1mnote�[0m: the link appears in this line:
          
          [`math`]) into a fixed entry-point skeleton, so CPU tests exercise the
           ^^^^^^
  �[1m�[94m= �[0m�[1mnote�[0m: no item named `math` in scope
  �[1m�[94m= �[0m�[1mhelp�[0m: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`

�[1m�[33mwarning�[0m�[1m: unresolved link to `Schedule`�[0m
  �[1m�[94m|�[0m
  �[1m�[94m= �[0m�[1mnote�[0m: the link appears in this line:
          
          [`Schedule`] (and its render-side declaration registry) answers "what
           ^^^^^^^^^^
  �[1m�[94m= �[0m�[1mnote�[0m: no item named `Schedule` in scope
  �[1m�[94m= �[0m�[1mhelp�[0m: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`

�[1m�[33mwarning�[0m�[1m: unresolved link to `PoolInput`�[0m
  �[1m�[94m|�[0m
  �[1m�[94m= �[0m�[1mnote�[0m: the link appears in this line:
          
          declaration snapshot ([`PoolInput`]) into a shared [`FrameLayout`]:
                                 ^^^^^^^^^^^
  �[1m�[94m= �[0m�[1mnote�[0m: no item named `PoolInput` in scope
  �[1m�[94m= �[0m�[1mhelp�[0m: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`

�[1m�[33mwarning�[0m�[1m: public documentation for `FrameLayout` links to private item `PoolInput`�[0m
   �[1m�[94m--> �[0mcrates/render/src/transient_pool.rs:206:29
    �[1m�[94m|�[0m
�[1m�[94m206�[0m �[1m�[94m|�[0m /// Result of compiling a [`PoolInput`] — the computed frame layout.
    �[1m�[94m|�[0m                             �[1m�[33m^^^^^^^^^�[0m �[1m�[33mthis item is private�[0m
    �[1m�[94m|�[0m
    �[1m�[94m= �[0m�[1mnote�[0m: this link will resolve properly if you pass `--document-private-items`
    �[1m�[94m= �[0m�[1mnote�[0m: `#[warn(rustdoc::private_intra_doc_links)]` on by default

�[1m�[33mwarning�[0m�[1m: public documentation for `TransientPool` links to private item `TransientPool::ensure`�[0m
   �[1m�[94m--> �[0mcrates/render/src/transient_pool.rs:641:46
    �[1m�[94m|�[0m
�[1m�[94m641�[0m �[1m�[94m|�[0m /// the registry's declaration generation. [`TransientPool::ensure`]
    �[1m�[94m|�[0m                                              �[1m�[33m^^^^^^^^^^^^^^^^^^^^^�[0m �[1m�[33mthis item is private�[0m
    �[1m�[94m|�[0m
    �[1m�[94m= �[0m�[1mnote�[0m: this link will resolve properly if you pass `--document-private-items`

�[1m�[33mwarning�[0m: `ornis-render` (lib doc) generated 6 warnings
�[1m�[33mwarning�[0m: `rustpython-vm` (lib) generated 5 warnings
�[1m�[92m Documenting�[0m ornis-python v0.1.0 (/home/runner/work/ornis/ornis/crates/python)
�[1m�[92m    Finished�[0m `dev` profile [unoptimized + debuginfo] target(s) in 21.07s
�[1m�[92m   Generated�[0m /home/runner/work/ornis/ornis/target/doc/editor_backend/index.html and 15 other files
── doc: PASS ──

═══ [13/13] wasm-check: cargo check -p ornis-wasm --target wasm32-unknown-unknown ═══
�[1m�[92m    Checking�[0m ornis-schedule v0.1.0 (/home/runner/work/ornis/ornis/crates/schedule)
�[1m�[92m   Compiling�[0m ornis-macros v0.1.0 (/home/runner/work/ornis/ornis/crates/macros)
�[1m�[92m    Checking�[0m ornis-core v0.1.0 (/home/runner/work/ornis/ornis/crates/core)
�[1m�[92m    Checking�[0m ornis-render v0.1.0 (/home/runner/work/ornis/ornis/crates/render)
�[1m�[92m    Checking�[0m ornis-wasm v0.1.0 (/home/runner/work/ornis/ornis/crates/wasm)
�[1m�[92m    Finished�[0m `dev` profile [unoptimized + debuginfo] target(s) in 1.85s
── wasm-check: PASS ──

╔════════════ QUALITY SUMMARY ════════════╗
  fmt                    PASS
  clippy                 FAIL (exit status: 101)
  rustqual               PASS
  smoke (editor-only)    PASS
  test                   FAIL (exit status: 101)
  test (physics gpu)     PASS
  clippy (physics gpu)   PASS
  audit                  PASS
  deny                   PASS
  outdated               FAIL (exit status: 1)
  upgrade-check          SKIP (cargo-upgrade not installed)
  doc                    PASS
  wasm-check             PASS
╚═════════════════════════════════════════╝
::error title=quality-summary-clippy::stage FAIL (exit status: 101)
::error title=quality-summary-test::stage FAIL (exit status: 101)
::error title=quality-summary-outdated::stage FAIL (exit status: 1)

Full logs are in the quality-log artifact of this run.

arena-agent and others added 6 commits September 7, 2026 15:00
….33.7

- scheduler_parity: unwrap_err() on Result<Schedule, _> requires
  Schedule: Debug (it isn't, and shouldn't need to be) — switch to
  .err().expect(), Option::expect has no Debug bound.
- glam 0.33.7 released 2026-09-07 12:05 UTC; the outdated stage is a
  hard gate, so bump the lock entry (all workspace requirements are
  caret 0.33; 0.33.6 lock entry had no active optional deps, 0.33.7
  same features — version+checksum swap only).

Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
Recording moves off the borrowed encoder on the native runtime path:
per-pass encoders land in FrameCommandBuffers (registration order),
RenderPresent hands the acquired frame to FramePresentTarget, and the
new RenderFlush system does the single ordered submit + present
(WaW on both handover resources, registration order).

- FrameExecutor::record_in_order — sequential form of execute_parallel
  mechanics (own encoder per pass, buffers pushed in registration order)
- RenderFrame3D::render_to_buffers — second recording form over the
  shared projected_order helper (no submit); borrowed render() stays for
  wasm/examples/benches
- FrameCommandBuffers::flush — drain + single ordered submit
- RenderPresent: acquire → reconfigure-on-Outdated/Lost →
  render_to_buffers → stash into FramePresentTarget
- gate: third pixel-parity test on the shared GPU harness
  (sequential reference vs buffers+flush)
- docs: unified-scheduler.md E2 section + README row

Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
First Extract-free step: upload data no longer round-trips through the
Mutex<RenderExtracted> snapshot clone. RenderSubmit declares
reads_lane on TransformDesc/MeshDesc/MaterialDesc (S5d canon, same
shape as RenderExtract) and calls the shared extract_render_data
canon on the SmartStore at submit time. Ordering vs lane writers is
now lane-granular RaW instead of RaW on the whole snapshot.

RenderExtract/Mutex<RenderExtracted> stay as the oracle; the gate
test pins a direct extract_render_data call byte-equal to the
snapshot the scheduled system published (materials as Pod bytes,
instances field-wise; three material kinds, varied tessellation).

docs: unified-scheduler.md X1 section + README row

Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
Mesh + tessellation cache move out of GpuFrameState into a standalone
Mutex<GpuMesh> resource: re-creation no longer holds the renderer/frame
plan lock (documented lock order: GpuMesh before GpuFrameState).

- max_mesh_params in extraction.rs: the re-create criterion as a canon
  alongside extract_render_data — max tessellation over COMPLETE
  entities only, (32, 24) floor; iterator form (lane walk in closures)
- new RenderMesh system (install_render_mesh): reads the three lanes
  (S5d canon), writes only Mutex<GpuMesh>
- RenderSubmit drops the mesh re-create (and its GpuDevice read);
  RenderPresent reads the mesh resource (RaW after RenderMesh), the
  unsafe split-borrow narrows to renderer + frame3d
- gates: canon-tie unit test (incomplete 96/64 entity must not move
  the maximum) + tessellation probe on the shared GPU harness
  (tests/mesh_resource.rs: 48/32 -> +16/12 no-op -> +64/40 re-create,
  vertex/index counts vs a reference sphere)
- record_in_order: PassViews inlined into the run() call, mirroring
  execute_in_order exactly (delegation-only loop body)

docs: unified-scheduler.md X2 section + README row

Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
RenderSubmit no longer hardcodes set_lights: ambient + directionals
come from the new RenderLights resource, written by the scene loader
between frames (RenderWorld::replace_scene publishes scene lighting;
RenderLights::from_scene is the shared constructor) and only read
inside the schedule — no Mutex, same contract as GpuSurfaceState.

- RenderLights::default reproduces the legacy hardcoded rig via consts
  (install_gpu_resources inserts it: a runtime without a scene renders
  exactly as before)
- set_lights_args is the single LightDesc -> (direction, intensity,
  color) conversion; wasm's build_gpu_scene migrates onto it (the
  inline match is gone)
- gates: unit tests (default == legacy args; replace_scene publishes
  scene lighting) + pixel probe tests/light_resource.rs on the shared
  GPU harness — legacy hardcoded arguments vs the resource through
  set_lights_args must be pixel-identical

docs: unified-scheduler.md X3 section + README row

Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
…shot

Extract-free finished: the render frame payload is read straight from
the component lanes; the scheduled snapshot round-trip is gone.

- RenderExtracted renamed to FrameUpload (a direct-read payload, not a
  snapshot); the RenderExtract system, the Mutex<RenderExtracted>
  resource and install_render_extract are deleted
- RenderWorld::extracted() -> frame_upload() (extract_render_data on
  the world's store); RenderWorld stays the scene-loader host — its
  schedule is empty now
- RenderPresent (the last snapshot reader) reads SmartStore + the three
  lanes (same access shape as RenderSubmit/RenderMesh); the instance
  count comes from extract_render_data directly
- wasm: GpuScene.extracted is a FrameUpload, build_gpu_scene and the
  contract test use frame_upload(); schedule().len() == 0 asserted
- net quality effect: one error-handling finding removed (RenderExtract
  ::run), none added

docs: unified-scheduler.md X4 section, checklist E3 no-op noted, the
decomposition header closed; README row

Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown

❌ Quality gate failed on arena/01a07b19-ornis (run 34147754661).

📊 QUALITY SUMMARY

╔════════════ QUALITY SUMMARY ════════════╗
  fmt                    FAIL (exit status: 1)
  clippy                 FAIL (exit status: 101)
  rustqual               FAIL (violations 128→129)
  smoke (editor-only)    PASS
  test                   FAIL (exit status: 101)
  test (physics gpu)     PASS
  clippy (physics gpu)   PASS
  audit                  PASS
  deny                   PASS
  outdated               PASS
  upgrade-check          SKIP (cargo-upgrade not installed)
  doc                    PASS
  wasm-check             PASS
╚═════════════════════════════════════════╝

📜 Tail of log (200 lines)

�[1m�[33mwarning�[0m�[1m: a method with this name may be added to the standard library in the future�[0m
    �[1m�[94m--> �[0mthird_party/rustpython-vm/src/builtins/str.rs:1020:36
     �[1m�[94m|�[0m
�[1m�[94m1020�[0m �[1m�[94m|�[0m                     title.extend(c.to_titlecase());
     �[1m�[94m|�[0m                                    �[1m�[33m^^^^^^^^^^^^�[0m
     �[1m�[94m|�[0m
     �[1m�[94m= �[0m�[1mhelp�[0m: call with fully qualified syntax `to_titlecase(...)` to keep using the current method
     �[1m�[94m= �[0m�[1mwarning�[0m: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
     �[1m�[94m= �[0m�[1mnote�[0m: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>

�[1m�[33mwarning�[0m�[1m: a method with this name may be added to the standard library in the future�[0m
    �[1m�[94m--> �[0mthird_party/rustpython-vm/src/builtins/str.rs:1025:45
     �[1m�[94m|�[0m
�[1m�[94m1025�[0m �[1m�[94m|�[0m             } else if c.is_uppercase() || c.is_titlecase() {
     �[1m�[94m|�[0m                                             �[1m�[33m^^^^^^^^^^^^�[0m
     �[1m�[94m|�[0m
     �[1m�[94m= �[0m�[1mhelp�[0m: call with fully qualified syntax `is_titlecase(...)` to keep using the current method
     �[1m�[94m= �[0m�[1mwarning�[0m: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
     �[1m�[94m= �[0m�[1mnote�[0m: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>

�[1m�[33mwarning�[0m�[1m: a method with this name may be added to the standard library in the future�[0m
    �[1m�[94m--> �[0mthird_party/rustpython-vm/src/builtins/str.rs:1261:38
     �[1m�[94m|�[0m
�[1m�[94m1261�[0m �[1m�[94m|�[0m             if c.is_uppercase() || c.is_titlecase() {
     �[1m�[94m|�[0m                                      �[1m�[33m^^^^^^^^^^^^�[0m
     �[1m�[94m|�[0m
     �[1m�[94m= �[0m�[1mhelp�[0m: call with fully qualified syntax `is_titlecase(...)` to keep using the current method
     �[1m�[94m= �[0m�[1mwarning�[0m: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
     �[1m�[94m= �[0m�[1mnote�[0m: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>

�[1m�[33mwarning�[0m�[1m: unresolved link to `Schedule`�[0m
 �[1m�[94m--> �[0mcrates/app/src/lib.rs:1:61
  �[1m�[94m|�[0m
�[1m�[94m1�[0m �[1m�[94m|�[0m //! Unified gameplay runtime: single [`World`]/[`Engine`]/[`Schedule`] host.
  �[1m�[94m|�[0m                                                             �[1m�[33m^^^^^^^^�[0m �[1m�[33mno item named `Schedule` in scope�[0m
  �[1m�[94m|�[0m
  �[1m�[94m= �[0m�[1mhelp�[0m: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
  �[1m�[94m= �[0m�[1mnote�[0m: `#[warn(rustdoc::broken_intra_doc_links)]` on by default

�[1m�[33mwarning�[0m: `ornis-app` (lib doc) generated 1 warning
�[1m�[92m Documenting�[0m ornis-materialx v0.1.0 (/home/runner/work/ornis/ornis/crates/materialx)
�[1m�[33mwarning�[0m�[1m: unclosed HTML tag `id`�[0m
   �[1m�[94m--> �[0msrc/editor_world.rs:343:30
    �[1m�[94m|�[0m
�[1m�[94m343�[0m �[1m�[94m|�[0m     /// (defaults to "Entity <id>"); bumps the version counter.
    �[1m�[94m|�[0m                              �[1m�[33m^^^^�[0m
    �[1m�[94m|�[0m
    �[1m�[94m= �[0m�[1mnote�[0m: `#[warn(rustdoc::invalid_html_tags)]` on by default

�[1m�[33mwarning�[0m: `ornis` (bin "ornis" doc) generated 1 warning
�[1m�[92m Documenting�[0m ornis-wasm v0.1.0 (/home/runner/work/ornis/ornis/crates/wasm)
�[1m�[92m Documenting�[0m ornis-schedule v0.1.0 (/home/runner/work/ornis/ornis/crates/schedule)
�[1m�[92m Documenting�[0m xtask v0.1.0 (/home/runner/work/ornis/ornis/xtask)
�[1m�[33mwarning�[0m�[1m: unclosed HTML tag `path`�[0m
 �[1m�[94m--> �[0mxtask/src/main.rs:4:55
  �[1m�[94m|�[0m
�[1m�[94m4�[0m �[1m�[94m|�[0m //!   cargo xtask editor  [--skip-wasm] [--editor-dir <path>]
  �[1m�[94m|�[0m                                                       �[1m�[33m^^^^^^�[0m
  �[1m�[94m|�[0m
  �[1m�[94m= �[0m�[1mnote�[0m: `#[warn(rustdoc::invalid_html_tags)]` on by default

�[1m�[33mwarning�[0m�[1m: unclosed HTML tag `target`�[0m
 �[1m�[94m--> �[0mxtask/src/main.rs:6:24
  �[1m�[94m|�[0m
�[1m�[94m6�[0m �[1m�[94m|�[0m //!   cargo xtask fuzz <target> [-- <libfuzzer args>]
  �[1m�[94m|�[0m                        �[1m�[33m^^^^^^^^�[0m

�[1m�[33mwarning�[0m�[1m: unclosed HTML tag `libfuzzer`�[0m
 �[1m�[94m--> �[0mxtask/src/main.rs:6:37
  �[1m�[94m|�[0m
�[1m�[94m6�[0m �[1m�[94m|�[0m //!   cargo xtask fuzz <target> [-- <libfuzzer args>]
  �[1m�[94m|�[0m                                     �[1m�[33m^^^^^^^^^^�[0m

�[1m�[33mwarning�[0m�[1m: unclosed HTML tag `cargo-mutants`�[0m
 �[1m�[94m--> �[0mxtask/src/main.rs:7:31
  �[1m�[94m|�[0m
�[1m�[94m7�[0m �[1m�[94m|�[0m //!   cargo xtask mutants [-- <cargo-mutants args>]
  �[1m�[94m|�[0m                               �[1m�[33m^^^^^^^^^^^^^^�[0m

�[1m�[33mwarning�[0m�[1m: unclosed HTML tag `path`�[0m
 �[1m�[94m--> �[0mxtask/src/main.rs:8:50
  �[1m�[94m|�[0m
�[1m�[94m8�[0m �[1m�[94m|�[0m //!   cargo editor   [--skip-wasm] [--editor-dir <path>]   (alias)
  �[1m�[94m|�[0m                                                  �[1m�[33m^^^^^^�[0m

�[1m�[33mwarning�[0m: `xtask` (bin "xtask" doc) generated 5 warnings
�[1m�[33mwarning�[0m�[1m: unresolved link to `ornis_core::gameplay`�[0m
   �[1m�[94m--> �[0mcrates/wasm/src/lib.rs:203:45
    �[1m�[94m|�[0m
�[1m�[94m203�[0m �[1m�[94m|�[0m /// read by the server gameplay consumer ([`ornis_core::gameplay`]).
    �[1m�[94m|�[0m                                             �[1m�[33m^^^^^^^^^^^^^^^^^^^^�[0m �[1m�[33mno item named `gameplay` in module `ornis_core`�[0m
    �[1m�[94m|�[0m
    �[1m�[94m= �[0m�[1mnote�[0m: `#[warn(rustdoc::broken_intra_doc_links)]` on by default

�[1m�[33mwarning�[0m: `ornis-wasm` (lib doc) generated 1 warning
�[1m�[33mwarning�[0m�[1m: public documentation for `FramePresentTarget` links to private item `RenderPresent`�[0m
   �[1m�[94m--> �[0mcrates/render/src/gpu_resources.rs:109:25
    �[1m�[94m|�[0m
�[1m�[94m109�[0m �[1m�[94m|�[0m /// acquiring system ([`RenderPresent`]) to the submitting one
    �[1m�[94m|�[0m                         �[1m�[33m^^^^^^^^^^^^^�[0m �[1m�[33mthis item is private�[0m
    �[1m�[94m|�[0m
    �[1m�[94m= �[0m�[1mnote�[0m: this link will resolve properly if you pass `--document-private-items`
    �[1m�[94m= �[0m�[1mnote�[0m: `#[warn(rustdoc::private_intra_doc_links)]` on by default

�[1m�[33mwarning�[0m�[1m: public documentation for `FramePresentTarget` links to private item `RenderFlush`�[0m
   �[1m�[94m--> �[0mcrates/render/src/gpu_resources.rs:110:8
    �[1m�[94m|�[0m
�[1m�[94m110�[0m �[1m�[94m|�[0m /// ([`RenderFlush`]) — the present half of the E2 handover.
    �[1m�[94m|�[0m        �[1m�[33m^^^^^^^^^^^�[0m �[1m�[33mthis item is private�[0m
    �[1m�[94m|�[0m
    �[1m�[94m= �[0m�[1mnote�[0m: this link will resolve properly if you pass `--document-private-items`

�[1m�[33mwarning�[0m�[1m: unresolved link to `PassSystem`�[0m
  �[1m�[94m|�[0m
  �[1m�[94m= �[0m�[1mnote�[0m: the link appears in this line:
          
          `ornis_core::Schedule`: every enabled pass becomes a [`PassSystem`]
                                                                ^^^^^^^^^^^^
  �[1m�[94m= �[0m�[1mnote�[0m: no item named `PassSystem` in scope
  �[1m�[94m= �[0m�[1mhelp�[0m: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
  �[1m�[94m= �[0m�[1mnote�[0m: `#[warn(rustdoc::broken_intra_doc_links)]` on by default

�[1m�[33mwarning�[0m�[1m: unresolved link to `math`�[0m
  �[1m�[94m|�[0m
  �[1m�[94m= �[0m�[1mnote�[0m: the link appears in this line:
          
          [`math`]) into a fixed entry-point skeleton, so CPU tests exercise the
           ^^^^^^
  �[1m�[94m= �[0m�[1mnote�[0m: no item named `math` in scope
  �[1m�[94m= �[0m�[1mhelp�[0m: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`

�[1m�[33mwarning�[0m�[1m: unresolved link to `Schedule`�[0m
  �[1m�[94m|�[0m
  �[1m�[94m= �[0m�[1mnote�[0m: the link appears in this line:
          
          [`Schedule`] (and its render-side declaration registry) answers "what
           ^^^^^^^^^^
  �[1m�[94m= �[0m�[1mnote�[0m: no item named `Schedule` in scope
  �[1m�[94m= �[0m�[1mhelp�[0m: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`

�[1m�[33mwarning�[0m�[1m: unresolved link to `PoolInput`�[0m
  �[1m�[94m|�[0m
  �[1m�[94m= �[0m�[1mnote�[0m: the link appears in this line:
          
          declaration snapshot ([`PoolInput`]) into a shared [`FrameLayout`]:
                                 ^^^^^^^^^^^
  �[1m�[94m= �[0m�[1mnote�[0m: no item named `PoolInput` in scope
  �[1m�[94m= �[0m�[1mhelp�[0m: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`

�[1m�[33mwarning�[0m�[1m: public documentation for `FrameLayout` links to private item `PoolInput`�[0m
   �[1m�[94m--> �[0mcrates/render/src/transient_pool.rs:206:29
    �[1m�[94m|�[0m
�[1m�[94m206�[0m �[1m�[94m|�[0m /// Result of compiling a [`PoolInput`] — the computed frame layout.
    �[1m�[94m|�[0m                             �[1m�[33m^^^^^^^^^�[0m �[1m�[33mthis item is private�[0m
    �[1m�[94m|�[0m
    �[1m�[94m= �[0m�[1mnote�[0m: this link will resolve properly if you pass `--document-private-items`

�[1m�[33mwarning�[0m�[1m: public documentation for `TransientPool` links to private item `TransientPool::ensure`�[0m
   �[1m�[94m--> �[0mcrates/render/src/transient_pool.rs:641:46
    �[1m�[94m|�[0m
�[1m�[94m641�[0m �[1m�[94m|�[0m /// the registry's declaration generation. [`TransientPool::ensure`]
    �[1m�[94m|�[0m                                              �[1m�[33m^^^^^^^^^^^^^^^^^^^^^�[0m �[1m�[33mthis item is private�[0m
    �[1m�[94m|�[0m
    �[1m�[94m= �[0m�[1mnote�[0m: this link will resolve properly if you pass `--document-private-items`

�[1m�[33mwarning�[0m: `ornis-render` (lib doc) generated 8 warnings
�[1m�[33mwarning�[0m: `rustpython-vm` (lib) generated 5 warnings
�[1m�[92m Documenting�[0m ornis-python v0.1.0 (/home/runner/work/ornis/ornis/crates/python)
�[1m�[92m    Finished�[0m `dev` profile [unoptimized + debuginfo] target(s) in 20.34s
�[1m�[92m   Generated�[0m /home/runner/work/ornis/ornis/target/doc/editor_backend/index.html and 15 other files
── doc: PASS ──

═══ [13/13] wasm-check: cargo check -p ornis-wasm --target wasm32-unknown-unknown ═══
�[1m�[92m    Checking�[0m ornis-schedule v0.1.0 (/home/runner/work/ornis/ornis/crates/schedule)
�[1m�[92m   Compiling�[0m ornis-macros v0.1.0 (/home/runner/work/ornis/ornis/crates/macros)
�[1m�[92m    Checking�[0m ornis-core v0.1.0 (/home/runner/work/ornis/ornis/crates/core)
�[1m�[92m    Checking�[0m ornis-render v0.1.0 (/home/runner/work/ornis/ornis/crates/render)
�[1m�[92m    Checking�[0m ornis-wasm v0.1.0 (/home/runner/work/ornis/ornis/crates/wasm)
�[1m�[92m    Finished�[0m `dev` profile [unoptimized + debuginfo] target(s) in 2.14s
── wasm-check: PASS ──

╔════════════ QUALITY SUMMARY ════════════╗
  fmt                    FAIL (exit status: 1)
  clippy                 FAIL (exit status: 101)
  rustqual               FAIL (violations 128→129)
  smoke (editor-only)    PASS
  test                   FAIL (exit status: 101)
  test (physics gpu)     PASS
  clippy (physics gpu)   PASS
  audit                  PASS
  deny                   PASS
  outdated               PASS
  upgrade-check          SKIP (cargo-upgrade not installed)
  doc                    PASS
  wasm-check             PASS
╚═════════════════════════════════════════╝
::error title=quality-summary-fmt::stage FAIL (exit status: 1)
::error title=quality-summary-clippy::stage FAIL (exit status: 101)
::error title=quality-summary-rustqual::stage FAIL (violations 128→129)
::error title=quality-summary-test::stage FAIL (exit status: 101)

Full logs are in the quality-log artifact of this run.

CI on ac33ca0 (run 34147754661) failed fmt, clippy, rustqual and test:

- fmt: apply the canonical rustfmt shapes (import ordering with cfg
  attributes, collapsed filter closure, split let-pattern, multiline
  export list, three-line assert_eq with message, exploded tuple).
- clippy: drop two stale 'mut' bindings; render_to_buffers took 8
  arguments — group its inputs into BufferRenderContext (native-only,
  published from frame_exec).
- rustqual: RenderSubmit::run regressed to an IOSP Violation (logic +
  own call) after X1/X3 — extract the camera math into
  camera::camera_view_projection (pure math, no own calls) with a unit
  test; run() is pure orchestration again.
- test: the root showcase package (src/) still used the deleted
  snapshot API — install_gpu_resources gains the GpuMesh resource
  (7 args), GpuFrameState drops mesh fields, engine_runtime tests read
  lanes directly via extract_render_data; the physics-ordering test is
  renamed to physics_sync_output_is_visible_to_render_lane_reads.
- docs: X4 section notes the root-package migration; stale 'oracle
  stays' wording corrected.

Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown

❌ Quality gate failed on arena/01a07b19-ornis (run 34149520691).

📊 QUALITY SUMMARY

╔════════════ QUALITY SUMMARY ════════════╗
  fmt                    FAIL (exit status: 1)
  clippy                 FAIL (exit status: 101)
  rustqual               PASS
  smoke (editor-only)    PASS
  test                   PASS
  test (physics gpu)     PASS
  clippy (physics gpu)   PASS
  audit                  PASS
  deny                   PASS
  outdated               PASS
  upgrade-check          SKIP (cargo-upgrade not installed)
  doc                    PASS
  wasm-check             PASS
╚═════════════════════════════════════════╝

📜 Tail of log (200 lines)

�[1m�[33mwarning�[0m�[1m: unclosed HTML tag `cargo-mutants`�[0m
 �[1m�[94m--> �[0mxtask/src/main.rs:7:31
  �[1m�[94m|�[0m
�[1m�[94m7�[0m �[1m�[94m|�[0m //!   cargo xtask mutants [-- <cargo-mutants args>]
  �[1m�[94m|�[0m                               �[1m�[33m^^^^^^^^^^^^^^�[0m

�[1m�[33mwarning�[0m�[1m: unclosed HTML tag `path`�[0m
 �[1m�[94m--> �[0mxtask/src/main.rs:8:50
  �[1m�[94m|�[0m
�[1m�[94m8�[0m �[1m�[94m|�[0m //!   cargo editor   [--skip-wasm] [--editor-dir <path>]   (alias)
  �[1m�[94m|�[0m                                                  �[1m�[33m^^^^^^�[0m

�[1m�[33mwarning�[0m: `xtask` (bin "xtask" doc) generated 5 warnings
�[1m�[92m    Checking�[0m ornis-app v0.1.0 (/home/runner/work/ornis/ornis/crates/app)
�[1m�[92m Documenting�[0m ornis-app v0.1.0 (/home/runner/work/ornis/ornis/crates/app)
�[1m�[92m Documenting�[0m ornis v0.1.0 (/home/runner/work/ornis/ornis)
�[1m�[33mwarning�[0m�[1m: a method with this name may be added to the standard library in the future�[0m
   �[1m�[94m--> �[0mthird_party/rustpython-vm/src/builtins/str.rs:745:34
    �[1m�[94m|�[0m
�[1m�[94m745�[0m �[1m�[94m|�[0m                     out.extend(c.to_titlecase());
    �[1m�[94m|�[0m                                  �[1m�[33m^^^^^^^^^^^^�[0m
    �[1m�[94m|�[0m
    �[1m�[94m= �[0m�[1mhelp�[0m: call with fully qualified syntax `to_titlecase(...)` to keep using the current method
    �[1m�[94m= �[0m�[1mwarning�[0m: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
    �[1m�[94m= �[0m�[1mnote�[0m: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>
    �[1m�[94m= �[0m�[1mnote�[0m: `#[warn(unstable_name_collisions)]` (part of `#[warn(future_incompatible)]`) on by default

�[1m�[33mwarning�[0m�[1m: a method with this name may be added to the standard library in the future�[0m
   �[1m�[94m--> �[0mthird_party/rustpython-vm/src/builtins/str.rs:755:51
    �[1m�[94m|�[0m
�[1m�[94m755�[0m �[1m�[94m|�[0m                         Some(ch) => out.extend(ch.to_titlecase()),
    �[1m�[94m|�[0m                                                   �[1m�[33m^^^^^^^^^^^^�[0m
    �[1m�[94m|�[0m
    �[1m�[94m= �[0m�[1mhelp�[0m: call with fully qualified syntax `to_titlecase(...)` to keep using the current method
    �[1m�[94m= �[0m�[1mwarning�[0m: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
    �[1m�[94m= �[0m�[1mnote�[0m: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>

�[1m�[33mwarning�[0m�[1m: a method with this name may be added to the standard library in the future�[0m
    �[1m�[94m--> �[0mthird_party/rustpython-vm/src/builtins/str.rs:1020:36
     �[1m�[94m|�[0m
�[1m�[94m1020�[0m �[1m�[94m|�[0m                     title.extend(c.to_titlecase());
     �[1m�[94m|�[0m                                    �[1m�[33m^^^^^^^^^^^^�[0m
     �[1m�[94m|�[0m
     �[1m�[94m= �[0m�[1mhelp�[0m: call with fully qualified syntax `to_titlecase(...)` to keep using the current method
     �[1m�[94m= �[0m�[1mwarning�[0m: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
     �[1m�[94m= �[0m�[1mnote�[0m: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>

�[1m�[33mwarning�[0m�[1m: a method with this name may be added to the standard library in the future�[0m
    �[1m�[94m--> �[0mthird_party/rustpython-vm/src/builtins/str.rs:1025:45
     �[1m�[94m|�[0m
�[1m�[94m1025�[0m �[1m�[94m|�[0m             } else if c.is_uppercase() || c.is_titlecase() {
     �[1m�[94m|�[0m                                             �[1m�[33m^^^^^^^^^^^^�[0m
     �[1m�[94m|�[0m
     �[1m�[94m= �[0m�[1mhelp�[0m: call with fully qualified syntax `is_titlecase(...)` to keep using the current method
     �[1m�[94m= �[0m�[1mwarning�[0m: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
     �[1m�[94m= �[0m�[1mnote�[0m: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>

�[1m�[33mwarning�[0m�[1m: a method with this name may be added to the standard library in the future�[0m
    �[1m�[94m--> �[0mthird_party/rustpython-vm/src/builtins/str.rs:1261:38
     �[1m�[94m|�[0m
�[1m�[94m1261�[0m �[1m�[94m|�[0m             if c.is_uppercase() || c.is_titlecase() {
     �[1m�[94m|�[0m                                      �[1m�[33m^^^^^^^^^^^^�[0m
     �[1m�[94m|�[0m
     �[1m�[94m= �[0m�[1mhelp�[0m: call with fully qualified syntax `is_titlecase(...)` to keep using the current method
     �[1m�[94m= �[0m�[1mwarning�[0m: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
     �[1m�[94m= �[0m�[1mnote�[0m: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>

�[1m�[33mwarning�[0m�[1m: unresolved link to `Schedule`�[0m
 �[1m�[94m--> �[0mcrates/app/src/lib.rs:1:61
  �[1m�[94m|�[0m
�[1m�[94m1�[0m �[1m�[94m|�[0m //! Unified gameplay runtime: single [`World`]/[`Engine`]/[`Schedule`] host.
  �[1m�[94m|�[0m                                                             �[1m�[33m^^^^^^^^�[0m �[1m�[33mno item named `Schedule` in scope�[0m
  �[1m�[94m|�[0m
  �[1m�[94m= �[0m�[1mhelp�[0m: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
  �[1m�[94m= �[0m�[1mnote�[0m: `#[warn(rustdoc::broken_intra_doc_links)]` on by default

�[1m�[33mwarning�[0m: `ornis-app` (lib doc) generated 1 warning
�[1m�[92m Documenting�[0m ornis-wasm v0.1.0 (/home/runner/work/ornis/ornis/crates/wasm)
�[1m�[33mwarning�[0m�[1m: unclosed HTML tag `id`�[0m
   �[1m�[94m--> �[0msrc/editor_world.rs:343:30
    �[1m�[94m|�[0m
�[1m�[94m343�[0m �[1m�[94m|�[0m     /// (defaults to "Entity <id>"); bumps the version counter.
    �[1m�[94m|�[0m                              �[1m�[33m^^^^�[0m
    �[1m�[94m|�[0m
    �[1m�[94m= �[0m�[1mnote�[0m: `#[warn(rustdoc::invalid_html_tags)]` on by default

�[1m�[33mwarning�[0m: `ornis` (bin "ornis" doc) generated 1 warning
�[1m�[92m Documenting�[0m ornis-materialx v0.1.0 (/home/runner/work/ornis/ornis/crates/materialx)
�[1m�[33mwarning�[0m�[1m: unresolved link to `ornis_core::gameplay`�[0m
   �[1m�[94m--> �[0mcrates/wasm/src/lib.rs:203:45
    �[1m�[94m|�[0m
�[1m�[94m203�[0m �[1m�[94m|�[0m /// read by the server gameplay consumer ([`ornis_core::gameplay`]).
    �[1m�[94m|�[0m                                             �[1m�[33m^^^^^^^^^^^^^^^^^^^^�[0m �[1m�[33mno item named `gameplay` in module `ornis_core`�[0m
    �[1m�[94m|�[0m
    �[1m�[94m= �[0m�[1mnote�[0m: `#[warn(rustdoc::broken_intra_doc_links)]` on by default

�[1m�[33mwarning�[0m: `ornis-wasm` (lib doc) generated 1 warning
�[1m�[33mwarning�[0m�[1m: public documentation for `FramePresentTarget` links to private item `RenderPresent`�[0m
   �[1m�[94m--> �[0mcrates/render/src/gpu_resources.rs:110:25
    �[1m�[94m|�[0m
�[1m�[94m110�[0m �[1m�[94m|�[0m /// acquiring system ([`RenderPresent`]) to the submitting one
    �[1m�[94m|�[0m                         �[1m�[33m^^^^^^^^^^^^^�[0m �[1m�[33mthis item is private�[0m
    �[1m�[94m|�[0m
    �[1m�[94m= �[0m�[1mnote�[0m: this link will resolve properly if you pass `--document-private-items`
    �[1m�[94m= �[0m�[1mnote�[0m: `#[warn(rustdoc::private_intra_doc_links)]` on by default

�[1m�[33mwarning�[0m�[1m: public documentation for `FramePresentTarget` links to private item `RenderFlush`�[0m
   �[1m�[94m--> �[0mcrates/render/src/gpu_resources.rs:111:8
    �[1m�[94m|�[0m
�[1m�[94m111�[0m �[1m�[94m|�[0m /// ([`RenderFlush`]) — the present half of the E2 handover.
    �[1m�[94m|�[0m        �[1m�[33m^^^^^^^^^^^�[0m �[1m�[33mthis item is private�[0m
    �[1m�[94m|�[0m
    �[1m�[94m= �[0m�[1mnote�[0m: this link will resolve properly if you pass `--document-private-items`

�[1m�[33mwarning�[0m�[1m: unresolved link to `PassSystem`�[0m
  �[1m�[94m|�[0m
  �[1m�[94m= �[0m�[1mnote�[0m: the link appears in this line:
          
          `ornis_core::Schedule`: every enabled pass becomes a [`PassSystem`]
                                                                ^^^^^^^^^^^^
  �[1m�[94m= �[0m�[1mnote�[0m: no item named `PassSystem` in scope
  �[1m�[94m= �[0m�[1mhelp�[0m: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
  �[1m�[94m= �[0m�[1mnote�[0m: `#[warn(rustdoc::broken_intra_doc_links)]` on by default

�[1m�[33mwarning�[0m�[1m: unresolved link to `math`�[0m
  �[1m�[94m|�[0m
  �[1m�[94m= �[0m�[1mnote�[0m: the link appears in this line:
          
          [`math`]) into a fixed entry-point skeleton, so CPU tests exercise the
           ^^^^^^
  �[1m�[94m= �[0m�[1mnote�[0m: no item named `math` in scope
  �[1m�[94m= �[0m�[1mhelp�[0m: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`

�[1m�[33mwarning�[0m�[1m: unresolved link to `Schedule`�[0m
  �[1m�[94m|�[0m
  �[1m�[94m= �[0m�[1mnote�[0m: the link appears in this line:
          
          [`Schedule`] (and its render-side declaration registry) answers "what
           ^^^^^^^^^^
  �[1m�[94m= �[0m�[1mnote�[0m: no item named `Schedule` in scope
  �[1m�[94m= �[0m�[1mhelp�[0m: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`

�[1m�[33mwarning�[0m�[1m: unresolved link to `PoolInput`�[0m
  �[1m�[94m|�[0m
  �[1m�[94m= �[0m�[1mnote�[0m: the link appears in this line:
          
          declaration snapshot ([`PoolInput`]) into a shared [`FrameLayout`]:
                                 ^^^^^^^^^^^
  �[1m�[94m= �[0m�[1mnote�[0m: no item named `PoolInput` in scope
  �[1m�[94m= �[0m�[1mhelp�[0m: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`

�[1m�[33mwarning�[0m�[1m: public documentation for `FrameLayout` links to private item `PoolInput`�[0m
   �[1m�[94m--> �[0mcrates/render/src/transient_pool.rs:206:29
    �[1m�[94m|�[0m
�[1m�[94m206�[0m �[1m�[94m|�[0m /// Result of compiling a [`PoolInput`] — the computed frame layout.
    �[1m�[94m|�[0m                             �[1m�[33m^^^^^^^^^�[0m �[1m�[33mthis item is private�[0m
    �[1m�[94m|�[0m
    �[1m�[94m= �[0m�[1mnote�[0m: this link will resolve properly if you pass `--document-private-items`

�[1m�[33mwarning�[0m�[1m: public documentation for `TransientPool` links to private item `TransientPool::ensure`�[0m
   �[1m�[94m--> �[0mcrates/render/src/transient_pool.rs:641:46
    �[1m�[94m|�[0m
�[1m�[94m641�[0m �[1m�[94m|�[0m /// the registry's declaration generation. [`TransientPool::ensure`]
    �[1m�[94m|�[0m                                              �[1m�[33m^^^^^^^^^^^^^^^^^^^^^�[0m �[1m�[33mthis item is private�[0m
    �[1m�[94m|�[0m
    �[1m�[94m= �[0m�[1mnote�[0m: this link will resolve properly if you pass `--document-private-items`

�[1m�[33mwarning�[0m: `ornis-render` (lib doc) generated 8 warnings
�[1m�[33mwarning�[0m: `rustpython-vm` (lib) generated 5 warnings
�[1m�[92m Documenting�[0m ornis-python v0.1.0 (/home/runner/work/ornis/ornis/crates/python)
�[1m�[92m    Finished�[0m `dev` profile [unoptimized + debuginfo] target(s) in 20.92s
�[1m�[92m   Generated�[0m /home/runner/work/ornis/ornis/target/doc/editor_backend/index.html and 15 other files
── doc: PASS ──

═══ [13/13] wasm-check: cargo check -p ornis-wasm --target wasm32-unknown-unknown ═══
�[1m�[92m    Checking�[0m ornis-schedule v0.1.0 (/home/runner/work/ornis/ornis/crates/schedule)
�[1m�[92m   Compiling�[0m ornis-macros v0.1.0 (/home/runner/work/ornis/ornis/crates/macros)
�[1m�[92m    Checking�[0m ornis-core v0.1.0 (/home/runner/work/ornis/ornis/crates/core)
�[1m�[92m    Checking�[0m ornis-render v0.1.0 (/home/runner/work/ornis/ornis/crates/render)
�[1m�[92m    Checking�[0m ornis-wasm v0.1.0 (/home/runner/work/ornis/ornis/crates/wasm)
�[1m�[92m    Finished�[0m `dev` profile [unoptimized + debuginfo] target(s) in 1.78s
── wasm-check: PASS ──

╔════════════ QUALITY SUMMARY ════════════╗
  fmt                    FAIL (exit status: 1)
  clippy                 FAIL (exit status: 101)
  rustqual               PASS
  smoke (editor-only)    PASS
  test                   PASS
  test (physics gpu)     PASS
  clippy (physics gpu)   PASS
  audit                  PASS
  deny                   PASS
  outdated               PASS
  upgrade-check          SKIP (cargo-upgrade not installed)
  doc                    PASS
  wasm-check             PASS
╚═════════════════════════════════════════╝
::error title=quality-summary-fmt::stage FAIL (exit status: 1)
::error title=quality-summary-clippy::stage FAIL (exit status: 101)

Full logs are in the quality-log artifact of this run.

kemperrrrr and others added 4 commits September 7, 2026 18:04
- clippy -D warnings: the light_resource gate binary does not use the
  shared sequential reference (its subject is the legacy rig, which the
  harness does not bake), and mesh_resource uses only the device part
  of the harness — annotate 'mod common' with allow(dead_code) and a
  comment in both, matching the shared-harness-subset reality.
- fmt: split the world.engine_mut().world_mut().insert chain in
  mesh_resource (chain width).

Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
…rics

Green-run summary (CI 34150634051 lineage, 13/13 PASS):
- quality_score 15.9% -> 17.9% (0.17868384215287147)
- iosp_score 92.2% -> 92.4% (0.9235820895522389)
- total_findings 1813 -> 1807, violations 128 (unchanged)
- functions 2587 -> 2640; violation_details re-pinned to current
  lines (128 entries).

Values reconstructed from the run summary (all seven dimension
percentages match the printed block bit-for-bit; scores recomputed
with the exact rustqual formulas and rustqual.toml weights).

Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
All five review questions are answered by the shipped implementation:
module-inside-render confirmed, immediate per-frame plan confirmed,
pool keyed by the full TextureSpec, sub-pass deferred (no wgpu
input-attachments), debug dump delivered as the shared S6
mermaid() projector instead of a bespoke JSON dump.

Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
@arena-ai-coding-agent arena-ai-coding-agent Bot changed the title fix(deps): vendor rustpython-vm 0.5.0 + upstream libc fix — make Quality gate green feat(render): S5e + Extract-free — GPU frame in the unified scheduler Sep 7, 2026
@kemperrrrr
kemperrrrr merged commit ddcf8c6 into master Sep 8, 2026
1 check passed
@kemperrrrr
kemperrrrr deleted the arena/01a07b19-ornis branch September 18, 2026 05:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant