{
  "upstream": {
    "upstream_main": "753894f186bef9c2a692fae0ca72bd8316d0248f",
    "snapshot": "1444351cf9ba3c9dee87f1eb47f0d5a5461bf6d5",
    "merge_base": "1d5a8ab594ac334a41c803800022aadc7f954eb1",
    "snapshot_original_base": "56789eb9dcedd0b8bf7b0d0feaa46b9f006f3d6a",
    "ahead_behind": "23\t23",
    "snapshot_from_common": {
      "files": 547,
      "added_lines": 280345,
      "deleted_lines": 100,
      "groups": {
        "python/tests": 131,
        "novaphy/include": 91,
        "vendor/warp_native": 91,
        "novaphy/src": 87,
        "docs/handoffs": 48,
        "python/tools": 46,
        "python/demos": 24,
        "docs/reports": 9,
        "python/bindings": 8,
        "python/novaphy": 7,
        "CMakeLists.txt": 1,
        "cmake/novaphy_cuda.cmake": 1,
        "docs/guide": 1,
        "novaphy/CMakeLists.txt": 1,
        "pyproject.toml": 1
      }
    },
    "upstream_from_common": {
      "files": 257,
      "added_lines": 63108,
      "deleted_lines": 34745,
      "groups": {
        "python/tests": 71,
        "python/demos": 60,
        "novaphy/src": 35,
        "novaphy/include": 34,
        "docs/api": 13,
        "python/novaphy": 11,
        "docs/guide": 8,
        "docs/getting-started": 4,
        "python/bindings": 4,
        "novaphy/tests": 2,
        ".claude/skills": 1,
        ".github/workflows": 1,
        "AGENTS.md": 1,
        "CMakeLists.txt": 1,
        "README.md": 1,
        "cmake/cmake_project": 1,
        "cmake/novaphyConfig.cmake.in": 1,
        "cmake/utils.cmake": 1,
        "docs/demos": 1,
        "docs/index.md": 1,
        "docs/superpowers": 1,
        "mkdocs.yml": 1,
        "novaphy/CMakeLists.txt": 1,
        "pyproject.toml": 1,
        "scripts/verify_install.py": 1
      }
    },
    "prior_history": {
      "files": 324,
      "added_lines": 98596,
      "deleted_lines": 10,
      "groups": {
        "python/tests": 124,
        "docs/handoffs": 48,
        "python/tools": 46,
        "novaphy/src": 41,
        "novaphy/include": 37,
        "python/demos": 16,
        "python/novaphy": 5,
        "python/bindings": 4,
        "CMakeLists.txt": 1,
        "cmake/novaphy_cuda.cmake": 1,
        "novaphy/CMakeLists.txt": 1
      }
    },
    "selected_snapshot": {
      "files": 532,
      "added_lines": 209328,
      "deleted_lines": 27669,
      "groups": {
        "python/tests": 249,
        "vendor/warp_native": 91,
        "novaphy/src": 78,
        "novaphy/include": 71,
        "python/demos": 19,
        "docs/reports": 9,
        "python/bindings": 8,
        "python/novaphy": 4,
        "CMakeLists.txt": 1,
        "docs/guide": 1,
        "pyproject.toml": 1
      }
    },
    "tip_to_tip": {
      "files": 788,
      "added_lines": 315047,
      "deleted_lines": 63165,
      "groups": {
        "python/tests": 199,
        "novaphy/include": 124,
        "novaphy/src": 120,
        "vendor/warp_native": 91,
        "python/demos": 84,
        "docs/handoffs": 48,
        "python/tools": 46,
        "python/novaphy": 14,
        "docs/api": 13,
        "python/bindings": 10,
        "docs/reports": 9,
        "docs/guide": 8,
        "docs/getting-started": 4,
        "novaphy/tests": 2,
        ".claude/skills": 1,
        ".github/workflows": 1,
        "AGENTS.md": 1,
        "CMakeLists.txt": 1,
        "README.md": 1,
        "cmake/cmake_project": 1,
        "cmake/novaphyConfig.cmake.in": 1,
        "cmake/novaphy_cuda.cmake": 1,
        "cmake/utils.cmake": 1,
        "docs/demos": 1,
        "docs/index.md": 1,
        "docs/superpowers": 1,
        "mkdocs.yml": 1,
        "novaphy/CMakeLists.txt": 1,
        "pyproject.toml": 1,
        "scripts/verify_install.py": 1
      }
    }
  },
  "wheel": {
    "wheel": "novaphy-0.4.0-cp311-cp311-linux_x86_64.whl",
    "sha256": "a92d079f7f017f6ffa5d342941fa2b8019b1690cec9f9223c1735e6a0bb0b5ad",
    "bytes": 241405605,
    "host_driver_bundled": false,
    "warp_license_present": true
  },
  "build_command": [
    "<BUILD_CONDA>/bin/python",
    "-m",
    "pip",
    "wheel",
    ".",
    "--no-deps",
    "--no-build-isolation",
    "--no-index",
    "--wheel-dir",
    "<PR_WORK>/wheel",
    "-Cbuild-dir=<PR_WORK>/build",
    "-Cbuild.tool-args=-j2",
    "-Ccmake.define.CMAKE_MAKE_PROGRAM=<BUILD_CONDA>/bin/ninja",
    "-Ccmake.define.CMAKE_CXX_COMPILER=/usr/bin/g++",
    "-Ccmake.define.CMAKE_BUILD_TYPE=Release",
    "-Ccmake.define.CMAKE_EXPORT_COMPILE_COMMANDS=ON",
    "-Ccmake.define.NOVAPHY_BUILD_TESTS=OFF",
    "-Ccmake.define.CMAKE_TOOLCHAIN_FILE=/home/yin/vcpkg/scripts/buildsystems/vcpkg.cmake",
    "-Ccmake.define.VCPKG_MANIFEST_INSTALL=OFF",
    "-Ccmake.define.VCPKG_INSTALLED_DIR=/mnt/0c18569c-b839-4255-bae0-6f48c9fc835b/yin/tmp/stage_integration_20260907/batch01/dependencies/vcpkg_installed",
    "-Ccmake.define.NOVAPHY_WITH_CUDA=ON",
    "-Ccmake.define.NOVAPHY_WITH_MPM_CUDA=ON",
    "-Ccmake.define.NOVAPHY_WITH_COLLISION_CUDA=ON",
    "-Ccmake.define.NOVAPHY_WITH_IPC=OFF",
    "-Ccmake.define.NOVAPHY_CUDA_ARCHITECTURES=86",
    "-Ccmake.define.CMAKE_CUDA_COMPILER=<CUDA_TOOLKIT>/bin/nvcc",
    "-Ccmake.define.Python_ROOT_DIR=<BUILD_CONDA>",
    "-Ccmake.define.Python_EXECUTABLE=<BUILD_CONDA>/bin/python",
    "-Ccmake.define.pybind11_DIR=<BUILD_CONDA>/lib/python3.11/site-packages/pybind11/share/cmake/pybind11",
    "-Ccmake.define.CMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF",
    "-Ccmake.define.CMAKE_CUDA_HOST_COMPILER=/usr/bin/g++",
    "-Ccmake.define.CUDAToolkit_ROOT=<CUDA_TOOLKIT>",
    "-Ccmake.define.NOVAPHY_WITH_DIFF=ON"
  ],
  "build_status": {
    "command": [
      "<BUILD_CONDA>/bin/python",
      "-m",
      "pip",
      "wheel",
      ".",
      "--no-deps",
      "--no-build-isolation",
      "--no-index",
      "--wheel-dir",
      "<PR_WORK>/wheel",
      "-Cbuild-dir=<PR_WORK>/build",
      "-Cbuild.tool-args=-j2",
      "-Ccmake.define.CMAKE_MAKE_PROGRAM=<BUILD_CONDA>/bin/ninja",
      "-Ccmake.define.CMAKE_CXX_COMPILER=/usr/bin/g++",
      "-Ccmake.define.CMAKE_BUILD_TYPE=Release",
      "-Ccmake.define.CMAKE_EXPORT_COMPILE_COMMANDS=ON",
      "-Ccmake.define.NOVAPHY_BUILD_TESTS=OFF",
      "-Ccmake.define.CMAKE_TOOLCHAIN_FILE=/home/yin/vcpkg/scripts/buildsystems/vcpkg.cmake",
      "-Ccmake.define.VCPKG_MANIFEST_INSTALL=OFF",
      "-Ccmake.define.VCPKG_INSTALLED_DIR=/mnt/0c18569c-b839-4255-bae0-6f48c9fc835b/yin/tmp/stage_integration_20260907/batch01/dependencies/vcpkg_installed",
      "-Ccmake.define.NOVAPHY_WITH_CUDA=ON",
      "-Ccmake.define.NOVAPHY_WITH_MPM_CUDA=ON",
      "-Ccmake.define.NOVAPHY_WITH_COLLISION_CUDA=ON",
      "-Ccmake.define.NOVAPHY_WITH_IPC=OFF",
      "-Ccmake.define.NOVAPHY_CUDA_ARCHITECTURES=86",
      "-Ccmake.define.CMAKE_CUDA_COMPILER=<CUDA_TOOLKIT>/bin/nvcc",
      "-Ccmake.define.Python_ROOT_DIR=<BUILD_CONDA>",
      "-Ccmake.define.Python_EXECUTABLE=<BUILD_CONDA>/bin/python",
      "-Ccmake.define.pybind11_DIR=<BUILD_CONDA>/lib/python3.11/site-packages/pybind11/share/cmake/pybind11",
      "-Ccmake.define.CMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF",
      "-Ccmake.define.CMAKE_CUDA_HOST_COMPILER=/usr/bin/g++",
      "-Ccmake.define.CUDAToolkit_ROOT=<CUDA_TOOLKIT>",
      "-Ccmake.define.NOVAPHY_WITH_DIFF=ON"
    ],
    "pid": 5,
    "state": "finished",
    "exit_code": 0,
    "elapsed_s": 27.9704806804657
  },
  "identity": {
    "modules": {
      "novaphy": "<PR_WORK>/venv/lib/python3.11/site-packages/novaphy/__init__.py",
      "novaphy._core": "<PR_WORK>/venv/lib/python3.11/site-packages/novaphy/_core.cpython-311-x86_64-linux-gnu.so",
      "novaphy.demos.mpm.newton_ref.demo_mpm_multi_material": "<PR_WORK>/venv/lib/python3.11/site-packages/novaphy/demos/mpm/newton_ref/demo_mpm_multi_material.py",
      "novaphy.tools.mpm.sand_spread_debug": "<PR_WORK>/venv/lib/python3.11/site-packages/novaphy/tools/mpm/sand_spread_debug.py"
    },
    "mapped": [
      "<PR_WORK>/venv/lib/python3.11/site-packages/novaphy/_core.cpython-311-x86_64-linux-gnu.so",
      "<PR_WORK>/venv/lib/python3.11/site-packages/novaphy/lib/libnovaphy_beam_device_cr.so",
      "<PR_WORK>/venv/lib/python3.11/site-packages/novaphy/lib/libnovaphy_beam_fe.so",
      "<PR_WORK>/venv/lib/python3.11/site-packages/novaphy/lib/libnovaphy_beam_integral.so",
      "<PR_WORK>/venv/lib/python3.11/site-packages/novaphy/lib/libnovaphy_beam_material_grid.so",
      "<PR_WORK>/venv/lib/python3.11/site-packages/novaphy/lib/libnovaphy_beam_preconditioner.so",
      "<PR_WORK>/venv/lib/python3.11/site-packages/novaphy/lib/libnovaphy_beam_qr.so",
      "<PR_WORK>/venv/lib/python3.11/site-packages/novaphy/lib/libnovaphy_beam_rhs.so",
      "<PR_WORK>/venv/lib/python3.11/site-packages/novaphy/lib/libnovaphy_beam_strain.so",
      "<PR_WORK>/venv/lib/python3.11/site-packages/novaphy/lib/libnovaphy_beam_transfer.so",
      "<PR_WORK>/venv/lib/python3.11/site-packages/novaphy/lib/libnovaphy_beam_writeback.so",
      "<PR_WORK>/venv/lib/python3.11/site-packages/novaphy/lib/libnovaphy_lbm.so",
      "<PR_WORK>/venv/lib/python3.11/site-packages/novaphy/lib/libnovaphy_mpm.so",
      "<PR_WORK>/venv/lib/python3.11/site-packages/novaphy/lib/libnovaphy_sph.so",
      "<PR_WORK>/venv/lib/python3.11/site-packages/novaphy/lib/libnovaphy_vbd.so",
      "/usr/lib/x86_64-linux-gnu/libcuda.so.580.173.02"
    ],
    "isolated_python": true
  },
  "checks": {
    "installed_imports": {
      "counts": {
        "name": "pytest",
        "errors": "0",
        "failures": "0",
        "skipped": "0",
        "tests": "7",
        "time": "2.432",
        "timestamp": "2026-09-08T11:46:35.004208+08:00",
        "hostname": "tjdx-MW83-RP0-000"
      },
      "failed": [],
      "log_sha256": "687b44c55e546e22adf5394005a3c266965c63a3e9d5e599544f6d37f398a02e",
      "status": {
        "name": "installed_imports",
        "command": [
          "<PR_WORK>/venv/bin/python",
          "-I",
          "-B",
          "-m",
          "pytest",
          "-q",
          "-p",
          "no:cacheprovider",
          "python/tests/test_mpm_installed_imports.py",
          "--junitxml=<PR_WORK>/validation/installed_imports.xml"
        ],
        "pid": 82303,
        "state": "finished",
        "exit_code": 0,
        "elapsed_s": 2.823281836001115
      }
    },
    "mpm_memcheck": {
      "counts": {
        "name": "pytest",
        "errors": "0",
        "failures": "0",
        "skipped": "0",
        "tests": "24",
        "time": "60.473",
        "timestamp": "2026-09-08T11:48:00.641580+08:00",
        "hostname": "tjdx-MW83-RP0-000"
      },
      "failed": [],
      "log_sha256": "f23dc0e48a96b10c41716a3794575a7a40059d3dfb2f3dcf0b6772d2b988daaa",
      "status": {
        "name": "mpm_memcheck",
        "command": [
          "<CUDA_TOOLKIT>/bin/compute-sanitizer",
          "--tool",
          "memcheck",
          "--error-exitcode",
          "86",
          "--target-processes",
          "all",
          "<PR_WORK>/venv/bin/python",
          "-I",
          "-B",
          "-m",
          "pytest",
          "-q",
          "-p",
          "no:cacheprovider",
          "python/tests/python/perf/test_device_coloring_bsr_lifetime.py",
          "python/tests/python/newton_official/test_constitutive_diagnostic_lifetime.py",
          "python/tests/python/newton_ref/test_newton_ref_mpm_multi_material_per_particle_cuda.py",
          "python/tests/python/newton_official/test_beam_strain_bindings.py",
          "--junitxml=<PR_WORK>/validation/mpm_memcheck.xml"
        ],
        "pid": 82946,
        "state": "finished",
        "exit_code": 0,
        "elapsed_s": 60.97039935800058
      }
    },
    "scenes_memcheck": {
      "counts": {
        "name": "pytest",
        "errors": "0",
        "failures": "0",
        "skipped": "0",
        "tests": "4",
        "time": "27.357",
        "timestamp": "2026-09-08T11:51:21.397020+08:00",
        "hostname": "tjdx-MW83-RP0-000"
      },
      "failed": [],
      "log_sha256": "f90afd24ecbd6cd3b939fb95c956077de64b4de7bdd9aa5970337c35a64cf146",
      "status": {
        "command": [
          "<CUDA_TOOLKIT>/bin/compute-sanitizer",
          "--tool",
          "memcheck",
          "--error-exitcode",
          "86",
          "--target-processes",
          "all",
          "<PR_WORK>/venv/bin/python",
          "-I",
          "-B",
          "-m",
          "pytest",
          "-q",
          "-p",
          "no:cacheprovider",
          "<PR_WORK>/validation/test_scene_metrics.py",
          "--junitxml=<PR_WORK>/validation/scenes_memcheck.xml"
        ],
        "exit_code": 0,
        "elapsed_s": 27.729185695001433
      }
    },
    "full_suite": {
      "counts": {
        "name": "pytest",
        "errors": "0",
        "failures": "25",
        "skipped": "132",
        "tests": "2018",
        "time": "652.863",
        "timestamp": "2026-09-08T11:48:00.056402+08:00",
        "hostname": "tjdx-MW83-RP0-000"
      },
      "failed": [
        {
          "node": "python.tests.python.implicit_mpm.test_candidate_d_d1_anchor_check::test_d1_anchor_check_pass",
          "message": "AssertionError: <PR_WORK>/venv/bin/python: can't open file '<PR_WORK>/repository/python/tests/tools/mpm/newton_contract_large_dt_candidate_d_d1_anchor_check.py': [Errno 2] No such file or directory\n  \nassert 2 == 0\n +  where 2 = CompletedProcess(args=['/mnt/0c18569c-b839-4255-bae0-6f48c9fc835b/yin/tmp/stage_integration_20260907/batch01/publicati...ython/tests/tools/mpm/newton_contract_large_dt_candidate_d_d1_anchor_check.py': [Errno 2] No such file or directory\\n\").returncode"
        },
        {
          "node": "python.tests.python.implicit_mpm.test_candidate_d_d1_anchor_check::test_d1_handoff_lists_all_deltas",
          "message": "FileNotFoundError: [Errno 2] No such file or directory: '<PR_WORK>/repository/python/docs/handoffs/implicit_mpm_newton_contract_large_dt_candidate_d_d1_source_diff.md'"
        },
        {
          "node": "python.tests.python.implicit_mpm.test_candidate_d_d3_contract_check::test_d3_contract_check_pass",
          "message": "AssertionError: <PR_WORK>/venv/bin/python: can't open file '<PR_WORK>/repository/python/tests/tools/mpm/newton_contract_large_dt_candidate_d_d3_contract_check.py': [Errno 2] No such file or directory\n  \nassert 2 == 0\n +  where 2 = CompletedProcess(args=['/mnt/0c18569c-b839-4255-bae0-6f48c9fc835b/yin/tmp/stage_integration_20260907/batch01/publicati...hon/tests/tools/mpm/newton_contract_large_dt_candidate_d_d3_contract_check.py': [Errno 2] No such file or directory\\n\").returncode"
        },
        {
          "node": "python.tests.python.implicit_mpm.test_candidate_d_d3_contract_check::test_d3_handoff_single_change_only",
          "message": "FileNotFoundError: [Errno 2] No such file or directory: '<PR_WORK>/repository/python/docs/handoffs/implicit_mpm_newton_contract_large_dt_candidate_d_d3_sprint_contract.md'"
        },
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_newton_fem_cuda_delassus_cache::test_newton_fem_cuda_delassus_cache_dirty_on_compliance_change",
          "message": "assert True is False\n +  where True = <built-in method newton_fem_cuda_delassus_cache_hit_last_step of pybind11_builtins.pybind11_detail_function_record_v1_system_libstdcpp_gxx_abi_1xxx_use_cxx11_abi_1 object at 0x7f37c6d5dab0>()\n +    where <built-in method newton_fem_cuda_delassus_cache_hit_last_step of pybind11_builtins.pybind11_detail_function_record_v1_system_libstdcpp_gxx_abi_1xxx_use_cxx11_abi_1 object at 0x7f37c6d5dab0> = novaphy.newton_fem_cuda_delassus_cache_hit_last_step"
        },
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_newton_fem_cuda_device_fe_scatter::test_newton_fem_cuda_frame_sync_defers_d2h_until_end",
          "message": "assert False is True\n +  where False = <built-in method newton_fem_cuda_particles_host_dirty of pybind11_builtins.pybind11_detail_function_record_v1_system_libstdcpp_gxx_abi_1xxx_use_cxx11_abi_1 object at 0x7f37c6d5daf0>()\n +    where <built-in method newton_fem_cuda_particles_host_dirty of pybind11_builtins.pybind11_detail_function_record_v1_system_libstdcpp_gxx_abi_1xxx_use_cxx11_abi_1 object at 0x7f37c6d5daf0> = novaphy.newton_fem_cuda_particles_host_dirty"
        },
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_newton_fem_cuda_gs_soa_parity::test_newton_fem_cuda_gs_soa_parity_vs_aos",
          "message": "AssertionError: velocity rel max 0.26204344630241394\nassert np.float32(0.26204345) < 0.05"
        },
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_newton_fem_cuda_gs_soa_parity::test_newton_fem_cuda_gs_soa_device_gs_faster_compute_bound",
          "message": "AssertionError: expected ≥10% device_gs drop (SoA coalesced): aos=5.771 soa=6.510 drop=-0.128 n_active=15984\nassert -0.12800696239518186 >= 0.1"
        },
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_newton_fem_cuda_profile_breakdown::test_newton_fem_cuda_profile_breakdown_rheology_sums",
          "message": "assert 0.0 > 0.0"
        },
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_newton_fem_mass_inv_v::test_step4_scale_launch_sites_are_newton_fem_only",
          "message": "AssertionError: expected NewtonFEM call sites\nassert []"
        },
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_newton_fem_mass_inv_v::test_step5_delassus_flow_magnitude_gates",
          "message": "AssertionError: {'D0_med': 3004.3968451424703, 'frac_above_ys': 0.0, 'inv_m_med': 3.9266239777623795e-05, 'n': 435, ...}\nassert 0.0001 <= 3.9266239777623795e-05"
        },
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_newton_fem_volume_blend_yield::test_kinematic_mass_zero_skipped_in_blend",
          "message": "assert 0.25 == 0.0 ± 1.0e-05\n  \n  comparison failed\n  Obtained: 0.25\n  Expected: 0.0 ± 1.0e-05"
        },
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_node_compact::test_node_compact_cuda_parity_vs_dense_launches",
          "message": "assert 0.00015240436187013984 < 0.0001"
        },
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_world_int3_sparse::test_world_int3_cpu_cuda_parity_q_qd",
          "message": "RuntimeError: DeviceArray::data(): array is on a non-CPU device; use host_view() or device_ptr() instead."
        },
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_world_int3_sparse::test_world_int3_pic_cpu_cuda_parity_and_shell",
          "message": "RuntimeError: DeviceArray::data(): array is on a non-CPU device; use host_view() or device_ptr() instead."
        },
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_world_int3_sparse::test_two_distant_blobs_cuda_a_gate",
          "message": "RuntimeError: DeviceArray::data(): array is on a non-CPU device; use host_view() or device_ptr() instead."
        },
        {
          "node": "python.tests.python.perf.test_o3_gs_newton_warp_diff_inventory::test_novaphy_gs_cu_no_shared_no_svd",
          "message": "AssertionError: assert '__shared__' not in '// Phase 3....::implicit\\n'\n  \n  '__shared__' is contained here:\n    ax) {\n        __shared__ float ssum[kRhoTile];\n  ?     ++++++++++\n        __shared__ float smax[kRhoTile];\n        const int tid = threadIdx.x;...\n  \n  ...Full output truncated (660 lines hidden), use '-vv' to show"
        },
        {
          "node": "python.tests.python.perf.test_o3_gs_persistent::test_gs_persistent_probe_and_parity_vs_default",
          "message": "AssertionError: velocity rel max 0.06980041414499283\nassert np.float32(0.069800414) < 0.05"
        },
        {
          "node": "python.tests.python.perf.test_o3_gs_sparse_launch_quality::test_dense_launch_count_matches_nonempty_colors",
          "message": "assert 0 == 8\n +  where 0 = int(0)"
        },
        {
          "node": "python.tests.python.perf.test_o3_gs_sparse_launch_quality::test_world_int3_pad0_has_empty_colors_zero_launch",
          "message": "assert 0 == 1\n +  where 0 = int(0)"
        },
        {
          "node": "python.tests.python.perf.test_o3_gs_sparse_launch_quality::test_world_int3_pad2_occupancy_and_launch_invariant",
          "message": "assert 0 == 1\n +  where 0 = int(0)"
        },
        {
          "node": "python.tests.python.perf.test_o7_d5_device_coloring::test_device_coloring_on_skips_host_buckets",
          "message": "assert 1.0 == 0.0 ± 1.0e-06\n  \n  comparison failed\n  Obtained: 1.0\n  Expected: 0.0 ± 1.0e-06"
        },
        {
          "node": "python.tests.test_demo_lbm::test_lbm_franka_models_keep_collision_meshes_hidden_behind_visuals",
          "message": "ImportError: missing `pip install pycollada`"
        },
        {
          "node": "python.tests.test_demo_lbm::test_lbm_grasp_objects_preserve_authored_viewer_colors",
          "message": "ImportError: missing `pip install pycollada`"
        },
        {
          "node": "python.tests.test_solver_api_alignment.TestStateFlags::test_newton_values_present_at_top_level",
          "message": "AssertionError: assert {'ALL', 'BODY...ARTICLE', ...} == {'ALL', 'BODY...TICLE_Q', ...}\n  \n  Extra items in the left set:\n  'Particle'\n  'PARTICLE'\n  Use -v to get more diff"
        }
      ],
      "log_sha256": "aa00c7eb46b0df4841b18f4ccc176e4a8c683948bbcb85cf963be43d2f6a6df8",
      "status": {
        "name": "full_suite",
        "command": [
          "<PR_WORK>/venv/bin/python",
          "-I",
          "-B",
          "-m",
          "pytest",
          "-q",
          "-p",
          "no:cacheprovider",
          "python/tests/",
          "--junitxml=<PR_WORK>/validation/full_suite.xml"
        ],
        "pid": 82943,
        "state": "finished",
        "exit_code": 1,
        "elapsed_s": 653.7997197940003
      }
    },
    "migrated_paths": {
      "counts": {
        "name": "pytest",
        "errors": "0",
        "failures": "1",
        "skipped": "0",
        "tests": "4",
        "time": "0.365",
        "timestamp": "2026-09-08T12:00:25.768290+08:00",
        "hostname": "tjdx-MW83-RP0-000"
      },
      "failed": [
        {
          "node": "python.tests.python.implicit_mpm.test_candidate_d_d1_anchor_check::test_d1_anchor_check_pass",
          "message": "AssertionError: FAIL NP-g2p-jp: NEEDLE_MISSING in <PR_WORK>/repository/novaphy/src/fluid/mpm/implicit/implicit_mpm_cpu_3d.cpp: 'p.Jp = clampf(p.Jp * oldJ / det_new'\n  D1_ANCHOR_CHECK_FAIL\n  OK  N-order-solve             /home/yin/newton/newton/_src/solvers/implicit_mpm/solver_implicit_mpm.py:1838\n  OK  N-order-update            /home/yin/newton/newton/_src/solvers/implicit_mpm/solver_implicit_mpm.py:2446\n  OK  N-interp                  /home/yin/newton/newton/_src/solvers/implicit_mpm/solver_implicit_mpm.py:2464\n  OK  N-advect                  /home/yin/newton/newton/_src/solvers/implicit_mpm/solver_implicit_mpm.py:2501\n  OK  N-ups                     /home/yin/newton/newton/_src/solvers/implicit_mpm/implicit_mpm_solver_kernels.py:361\n  OK  N-skew                    /home/yin/newton/newton/_src/solvers/implicit_mpm/implicit_mpm_solver_kernels.py:410\n  OK  N-fe-new                  /home/yin/newton/newton/_src/solvers/implicit_mpm/implicit_mpm_solver_kernels.py:415\n  OK  N-project                 /home/yin/newton/newton/_src/solvers/implicit_mpm/implicit_mpm_solver_kernels.py:425\n  OK  N-discard                 /home/yin/newton/newton/_src/solvers/implicit_mpm/implicit_mpm_solver_kernels.py:436\n  OK  N-compliance-I            /home/yin/newton/newton/_src/solvers/implicit_mpm/implicit_mpm_solver_kernels.py:430\n  OK  N-jp                      /home/yin/newton/newton/_src/solvers/implicit_mpm/implicit_mpm_solver_kernels.py:398\n  OK  N-gimp                    /home/yin"
        }
      ],
      "log_sha256": "dfd99e5c4c61f9e70b8a00252d1d75deb9348130f751be7716a7e256646dde6e",
      "status": {
        "name": "migrated_paths",
        "command": [
          "<PR_WORK>/venv/bin/python",
          "-I",
          "-B",
          "-m",
          "pytest",
          "-q",
          "-p",
          "no:cacheprovider",
          "python/tests/python/implicit_mpm/test_candidate_d_d1_anchor_check.py",
          "python/tests/python/implicit_mpm/test_candidate_d_d3_contract_check.py",
          "--junitxml=<PR_WORK>/validation/migrated_paths.xml"
        ],
        "pid": 6,
        "state": "finished",
        "exit_code": 1,
        "elapsed_s": 0.7675883779993455
      }
    },
    "lbm_dependencies_complete": {
      "counts": {
        "name": "pytest",
        "errors": "0",
        "failures": "0",
        "skipped": "0",
        "tests": "7",
        "time": "30.993",
        "timestamp": "2026-09-08T12:01:05.292102+08:00",
        "hostname": "tjdx-MW83-RP0-000"
      },
      "failed": [],
      "log_sha256": "ee2c23461d325be25a06c4abb1fd85208acd55ab912fc19f5e56b1082657f228",
      "status": {
        "name": "lbm_dependencies_complete",
        "command": [
          "<PR_WORK>/venv/bin/python",
          "-I",
          "-B",
          "-m",
          "pytest",
          "-q",
          "-p",
          "no:cacheprovider",
          "python/tests/test_demo_lbm.py",
          "--junitxml=<PR_WORK>/validation/lbm_dependencies_complete.xml"
        ],
        "pid": 95596,
        "state": "finished",
        "exit_code": 0,
        "elapsed_s": 31.333097731001544
      }
    },
    "snapshot_failure_comparison": {
      "counts": {
        "name": "pytest",
        "errors": "0",
        "failures": "15",
        "skipped": "0",
        "tests": "16",
        "time": "7.901",
        "timestamp": "2026-09-08T12:03:11.116134+08:00",
        "hostname": "tjdx-MW83-RP0-000"
      },
      "failed": [
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_newton_fem_cuda_delassus_cache::test_newton_fem_cuda_delassus_cache_dirty_on_compliance_change",
          "message": "assert True is False\n +  where True = <built-in method newton_fem_cuda_delassus_cache_hit_last_step of pybind11_builtins.pybind11_detail_function_record_v1_system_libstdcpp_gxx_abi_1xxx_use_cxx11_abi_1 object at 0x714d7ab5a590>()\n +    where <built-in method newton_fem_cuda_delassus_cache_hit_last_step of pybind11_builtins.pybind11_detail_function_record_v1_system_libstdcpp_gxx_abi_1xxx_use_cxx11_abi_1 object at 0x714d7ab5a590> = novaphy.newton_fem_cuda_delassus_cache_hit_last_step"
        },
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_newton_fem_cuda_device_fe_scatter::test_newton_fem_cuda_frame_sync_defers_d2h_until_end",
          "message": "assert False is True\n +  where False = <built-in method newton_fem_cuda_particles_host_dirty of pybind11_builtins.pybind11_detail_function_record_v1_system_libstdcpp_gxx_abi_1xxx_use_cxx11_abi_1 object at 0x714d7ab5a5d0>()\n +    where <built-in method newton_fem_cuda_particles_host_dirty of pybind11_builtins.pybind11_detail_function_record_v1_system_libstdcpp_gxx_abi_1xxx_use_cxx11_abi_1 object at 0x714d7ab5a5d0> = novaphy.newton_fem_cuda_particles_host_dirty"
        },
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_newton_fem_cuda_gs_soa_parity::test_newton_fem_cuda_gs_soa_parity_vs_aos",
          "message": "AssertionError: velocity rel max 0.26204344630241394\nassert np.float32(0.26204345) < 0.05"
        },
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_newton_fem_cuda_gs_soa_parity::test_newton_fem_cuda_gs_soa_device_gs_faster_compute_bound",
          "message": "AssertionError: expected ≥10% device_gs drop (SoA coalesced): aos=9.463 soa=11.871 drop=-0.254 n_active=15984\nassert -0.25437499706106553 >= 0.1"
        },
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_newton_fem_cuda_profile_breakdown::test_newton_fem_cuda_profile_breakdown_rheology_sums",
          "message": "assert 0.0 > 0.0"
        },
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_newton_fem_mass_inv_v::test_step5_delassus_flow_magnitude_gates",
          "message": "AssertionError: {'D0_med': 3004.402365351018, 'frac_above_ys': 0.0, 'inv_m_med': 3.926623826911063e-05, 'n': 435, ...}\nassert 0.0001 <= 3.926623826911063e-05"
        },
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_node_compact::test_node_compact_cuda_parity_vs_dense_launches",
          "message": "assert 0.00015240436187013984 < 0.0001"
        },
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_world_int3_sparse::test_world_int3_cpu_cuda_parity_q_qd",
          "message": "RuntimeError: DeviceArray::data(): array is on a non-CPU device; use host_view() or device_ptr() instead."
        },
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_world_int3_sparse::test_world_int3_pic_cpu_cuda_parity_and_shell",
          "message": "RuntimeError: DeviceArray::data(): array is on a non-CPU device; use host_view() or device_ptr() instead."
        },
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_world_int3_sparse::test_two_distant_blobs_cuda_a_gate",
          "message": "RuntimeError: DeviceArray::data(): array is on a non-CPU device; use host_view() or device_ptr() instead."
        },
        {
          "node": "python.tests.python.perf.test_o3_gs_persistent::test_gs_persistent_probe_and_parity_vs_default",
          "message": "AssertionError: velocity rel max 0.06979939341545105\nassert np.float32(0.06979939) < 0.05"
        },
        {
          "node": "python.tests.python.perf.test_o3_gs_sparse_launch_quality::test_dense_launch_count_matches_nonempty_colors",
          "message": "assert 0 == 8\n +  where 0 = int(0)"
        },
        {
          "node": "python.tests.python.perf.test_o3_gs_sparse_launch_quality::test_world_int3_pad0_has_empty_colors_zero_launch",
          "message": "assert 0 == 1\n +  where 0 = int(0)"
        },
        {
          "node": "python.tests.python.perf.test_o3_gs_sparse_launch_quality::test_world_int3_pad2_occupancy_and_launch_invariant",
          "message": "assert 0 == 1\n +  where 0 = int(0)"
        },
        {
          "node": "python.tests.python.perf.test_o7_d5_device_coloring::test_device_coloring_on_skips_host_buckets",
          "message": "assert 1.0 == 0.0 ± 1.0e-06\n  \n  comparison failed\n  Obtained: 1.0\n  Expected: 0.0 ± 1.0e-06"
        }
      ],
      "log_sha256": "ee45abd2fb03f0b05003c55fc6963461f1c19f0e5f797ffbab53d6cee096ce10",
      "status": {
        "command": [
          "<SNAPSHOT_WORK>/runtime/venv/bin/python",
          "-B",
          "<SNAPSHOT_WORK>/runtime/publication12/checked_entry.py",
          "pytest",
          "-q",
          "-p",
          "no:cacheprovider",
          "python/tests/python/implicit_mpm/test_implicit_mpm_newton_fem_cuda_delassus_cache.py::test_newton_fem_cuda_delassus_cache_dirty_on_compliance_change",
          "python/tests/python/implicit_mpm/test_implicit_mpm_newton_fem_cuda_device_fe_scatter.py::test_newton_fem_cuda_frame_sync_defers_d2h_until_end",
          "python/tests/python/implicit_mpm/test_implicit_mpm_newton_fem_cuda_gs_soa_parity.py::test_newton_fem_cuda_gs_soa_parity_vs_aos",
          "python/tests/python/implicit_mpm/test_implicit_mpm_newton_fem_cuda_gs_soa_parity.py::test_newton_fem_cuda_gs_soa_device_gs_faster_compute_bound",
          "python/tests/python/implicit_mpm/test_implicit_mpm_newton_fem_cuda_profile_breakdown.py::test_newton_fem_cuda_profile_breakdown_rheology_sums",
          "python/tests/python/implicit_mpm/test_implicit_mpm_newton_fem_mass_inv_v.py::test_step5_delassus_flow_magnitude_gates",
          "python/tests/python/implicit_mpm/test_implicit_mpm_newton_fem_volume_blend_yield.py::test_kinematic_mass_zero_skipped_in_blend",
          "python/tests/python/implicit_mpm/test_implicit_mpm_node_compact.py::test_node_compact_cuda_parity_vs_dense_launches",
          "python/tests/python/implicit_mpm/test_implicit_mpm_world_int3_sparse.py::test_world_int3_cpu_cuda_parity_q_qd",
          "python/tests/python/implicit_mpm/test_implicit_mpm_world_int3_sparse.py::test_world_int3_pic_cpu_cuda_parity_and_shell",
          "python/tests/python/implicit_mpm/test_implicit_mpm_world_int3_sparse.py::test_two_distant_blobs_cuda_a_gate",
          "python/tests/python/perf/test_o3_gs_persistent.py::test_gs_persistent_probe_and_parity_vs_default",
          "python/tests/python/perf/test_o3_gs_sparse_launch_quality.py::test_dense_launch_count_matches_nonempty_colors",
          "python/tests/python/perf/test_o3_gs_sparse_launch_quality.py::test_world_int3_pad0_has_empty_colors_zero_launch",
          "python/tests/python/perf/test_o3_gs_sparse_launch_quality.py::test_world_int3_pad2_occupancy_and_launch_invariant",
          "python/tests/python/perf/test_o7_d5_device_coloring.py::test_device_coloring_on_skips_host_buckets",
          "--junitxml=<PR_WORK>/validation/snapshot_failure_comparison.xml"
        ],
        "exit_code": 1,
        "elapsed_s": 8.650137955999526,
        "baseline": "snapshot 1444351 / publication12"
      }
    },
    "failure_recheck": {
      "counts": {
        "name": "pytest",
        "errors": "0",
        "failures": "19",
        "skipped": "0",
        "tests": "25",
        "time": "40.524",
        "timestamp": "2026-09-08T12:04:55.082455+08:00",
        "hostname": "tjdx-MW83-RP0-000"
      },
      "failed": [
        {
          "node": "python.tests.python.implicit_mpm.test_candidate_d_d1_anchor_check::test_d1_anchor_check_pass",
          "message": "AssertionError: FAIL NP-g2p-jp: NEEDLE_MISSING in <PR_WORK>/repository/novaphy/src/fluid/mpm/implicit/implicit_mpm_cpu_3d.cpp: 'p.Jp = clampf(p.Jp * oldJ / det_new'\n  D1_ANCHOR_CHECK_FAIL\n  OK  N-order-solve             /home/yin/newton/newton/_src/solvers/implicit_mpm/solver_implicit_mpm.py:1838\n  OK  N-order-update            /home/yin/newton/newton/_src/solvers/implicit_mpm/solver_implicit_mpm.py:2446\n  OK  N-interp                  /home/yin/newton/newton/_src/solvers/implicit_mpm/solver_implicit_mpm.py:2464\n  OK  N-advect                  /home/yin/newton/newton/_src/solvers/implicit_mpm/solver_implicit_mpm.py:2501\n  OK  N-ups                     /home/yin/newton/newton/_src/solvers/implicit_mpm/implicit_mpm_solver_kernels.py:361\n  OK  N-skew                    /home/yin/newton/newton/_src/solvers/implicit_mpm/implicit_mpm_solver_kernels.py:410\n  OK  N-fe-new                  /home/yin/newton/newton/_src/solvers/implicit_mpm/implicit_mpm_solver_kernels.py:415\n  OK  N-project                 /home/yin/newton/newton/_src/solvers/implicit_mpm/implicit_mpm_solver_kernels.py:425\n  OK  N-discard                 /home/yin/newton/newton/_src/solvers/implicit_mpm/implicit_mpm_solver_kernels.py:436\n  OK  N-compliance-I            /home/yin/newton/newton/_src/solvers/implicit_mpm/implicit_mpm_solver_kernels.py:430\n  OK  N-jp                      /home/yin/newton/newton/_src/solvers/implicit_mpm/implicit_mpm_solver_kernels.py:398\n  OK  N-gimp                    /home/yin"
        },
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_newton_fem_cuda_delassus_cache::test_newton_fem_cuda_delassus_cache_dirty_on_compliance_change",
          "message": "assert True is False\n +  where True = <built-in method newton_fem_cuda_delassus_cache_hit_last_step of pybind11_builtins.pybind11_detail_function_record_v1_system_libstdcpp_gxx_abi_1xxx_use_cxx11_abi_1 object at 0x7beddbb273b0>()\n +    where <built-in method newton_fem_cuda_delassus_cache_hit_last_step of pybind11_builtins.pybind11_detail_function_record_v1_system_libstdcpp_gxx_abi_1xxx_use_cxx11_abi_1 object at 0x7beddbb273b0> = novaphy.newton_fem_cuda_delassus_cache_hit_last_step"
        },
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_newton_fem_cuda_device_fe_scatter::test_newton_fem_cuda_frame_sync_defers_d2h_until_end",
          "message": "assert False is True\n +  where False = <built-in method newton_fem_cuda_particles_host_dirty of pybind11_builtins.pybind11_detail_function_record_v1_system_libstdcpp_gxx_abi_1xxx_use_cxx11_abi_1 object at 0x7beddbb273f0>()\n +    where <built-in method newton_fem_cuda_particles_host_dirty of pybind11_builtins.pybind11_detail_function_record_v1_system_libstdcpp_gxx_abi_1xxx_use_cxx11_abi_1 object at 0x7beddbb273f0> = novaphy.newton_fem_cuda_particles_host_dirty"
        },
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_newton_fem_cuda_gs_soa_parity::test_newton_fem_cuda_gs_soa_parity_vs_aos",
          "message": "AssertionError: velocity rel max 0.26204344630241394\nassert np.float32(0.26204345) < 0.05"
        },
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_newton_fem_cuda_gs_soa_parity::test_newton_fem_cuda_gs_soa_device_gs_faster_compute_bound",
          "message": "AssertionError: expected ≥10% device_gs drop (SoA coalesced): aos=5.827 soa=6.587 drop=-0.130 n_active=15984\nassert -0.13046420549691337 >= 0.1"
        },
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_newton_fem_cuda_profile_breakdown::test_newton_fem_cuda_profile_breakdown_rheology_sums",
          "message": "assert 0.0 > 0.0"
        },
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_newton_fem_mass_inv_v::test_step4_scale_launch_sites_are_newton_fem_only",
          "message": "AssertionError: expected NewtonFEM call sites\nassert []"
        },
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_newton_fem_mass_inv_v::test_step5_delassus_flow_magnitude_gates",
          "message": "AssertionError: {'D0_med': 3004.402198234378, 'frac_above_ys': 0.0, 'inv_m_med': 3.926623977898108e-05, 'n': 435, ...}\nassert 0.0001 <= 3.926623977898108e-05"
        },
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_node_compact::test_node_compact_cuda_parity_vs_dense_launches",
          "message": "assert 0.00015240436187013984 < 0.0001"
        },
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_world_int3_sparse::test_world_int3_cpu_cuda_parity_q_qd",
          "message": "RuntimeError: DeviceArray::data(): array is on a non-CPU device; use host_view() or device_ptr() instead."
        },
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_world_int3_sparse::test_world_int3_pic_cpu_cuda_parity_and_shell",
          "message": "RuntimeError: DeviceArray::data(): array is on a non-CPU device; use host_view() or device_ptr() instead."
        },
        {
          "node": "python.tests.python.implicit_mpm.test_implicit_mpm_world_int3_sparse::test_two_distant_blobs_cuda_a_gate",
          "message": "RuntimeError: DeviceArray::data(): array is on a non-CPU device; use host_view() or device_ptr() instead."
        },
        {
          "node": "python.tests.python.perf.test_o3_gs_newton_warp_diff_inventory::test_novaphy_gs_cu_no_shared_no_svd",
          "message": "AssertionError: assert '__shared__' not in '// Phase 3....::implicit\\n'\n  \n  '__shared__' is contained here:\n    ax) {\n        __shared__ float ssum[kRhoTile];\n  ?     ++++++++++\n        __shared__ float smax[kRhoTile];\n        const int tid = threadIdx.x;...\n  \n  ...Full output truncated (660 lines hidden), use '-vv' to show"
        },
        {
          "node": "python.tests.python.perf.test_o3_gs_persistent::test_gs_persistent_probe_and_parity_vs_default",
          "message": "AssertionError: velocity rel max 0.06980009377002716\nassert np.float32(0.069800094) < 0.05"
        },
        {
          "node": "python.tests.python.perf.test_o3_gs_sparse_launch_quality::test_dense_launch_count_matches_nonempty_colors",
          "message": "assert 0 == 8\n +  where 0 = int(0)"
        },
        {
          "node": "python.tests.python.perf.test_o3_gs_sparse_launch_quality::test_world_int3_pad0_has_empty_colors_zero_launch",
          "message": "assert 0 == 1\n +  where 0 = int(0)"
        },
        {
          "node": "python.tests.python.perf.test_o3_gs_sparse_launch_quality::test_world_int3_pad2_occupancy_and_launch_invariant",
          "message": "assert 0 == 1\n +  where 0 = int(0)"
        },
        {
          "node": "python.tests.python.perf.test_o7_d5_device_coloring::test_device_coloring_on_skips_host_buckets",
          "message": "assert 1.0 == 0.0 ± 1.0e-06\n  \n  comparison failed\n  Obtained: 1.0\n  Expected: 0.0 ± 1.0e-06"
        },
        {
          "node": "python.tests.test_solver_api_alignment.TestStateFlags::test_newton_values_present_at_top_level",
          "message": "AssertionError: assert {'ALL', 'BODY...ARTICLE', ...} == {'ALL', 'BODY...TICLE_Q', ...}\n  \n  Extra items in the left set:\n  'Particle'\n  'PARTICLE'\n  Use -v to get more diff"
        }
      ],
      "log_sha256": "7f259aaabe45527ccef4dec0f6b38e1740a201fde94e18984192853e4a25f254",
      "status": {
        "name": "failure_recheck",
        "command": [
          "<PR_WORK>/venv/bin/python",
          "-I",
          "-B",
          "-m",
          "pytest",
          "-q",
          "-p",
          "no:cacheprovider",
          "python/tests/python/implicit_mpm/test_candidate_d_d1_anchor_check.py::test_d1_anchor_check_pass",
          "python/tests/python/implicit_mpm/test_candidate_d_d1_anchor_check.py::test_d1_handoff_lists_all_deltas",
          "python/tests/python/implicit_mpm/test_candidate_d_d3_contract_check.py::test_d3_contract_check_pass",
          "python/tests/python/implicit_mpm/test_candidate_d_d3_contract_check.py::test_d3_handoff_single_change_only",
          "python/tests/python/implicit_mpm/test_implicit_mpm_newton_fem_cuda_delassus_cache.py::test_newton_fem_cuda_delassus_cache_dirty_on_compliance_change",
          "python/tests/python/implicit_mpm/test_implicit_mpm_newton_fem_cuda_device_fe_scatter.py::test_newton_fem_cuda_frame_sync_defers_d2h_until_end",
          "python/tests/python/implicit_mpm/test_implicit_mpm_newton_fem_cuda_gs_soa_parity.py::test_newton_fem_cuda_gs_soa_parity_vs_aos",
          "python/tests/python/implicit_mpm/test_implicit_mpm_newton_fem_cuda_gs_soa_parity.py::test_newton_fem_cuda_gs_soa_device_gs_faster_compute_bound",
          "python/tests/python/implicit_mpm/test_implicit_mpm_newton_fem_cuda_profile_breakdown.py::test_newton_fem_cuda_profile_breakdown_rheology_sums",
          "python/tests/python/implicit_mpm/test_implicit_mpm_newton_fem_mass_inv_v.py::test_step4_scale_launch_sites_are_newton_fem_only",
          "python/tests/python/implicit_mpm/test_implicit_mpm_newton_fem_mass_inv_v.py::test_step5_delassus_flow_magnitude_gates",
          "python/tests/python/implicit_mpm/test_implicit_mpm_newton_fem_volume_blend_yield.py::test_kinematic_mass_zero_skipped_in_blend",
          "python/tests/python/implicit_mpm/test_implicit_mpm_node_compact.py::test_node_compact_cuda_parity_vs_dense_launches",
          "python/tests/python/implicit_mpm/test_implicit_mpm_world_int3_sparse.py::test_world_int3_cpu_cuda_parity_q_qd",
          "python/tests/python/implicit_mpm/test_implicit_mpm_world_int3_sparse.py::test_world_int3_pic_cpu_cuda_parity_and_shell",
          "python/tests/python/implicit_mpm/test_implicit_mpm_world_int3_sparse.py::test_two_distant_blobs_cuda_a_gate",
          "python/tests/python/perf/test_o3_gs_newton_warp_diff_inventory.py::test_novaphy_gs_cu_no_shared_no_svd",
          "python/tests/python/perf/test_o3_gs_persistent.py::test_gs_persistent_probe_and_parity_vs_default",
          "python/tests/python/perf/test_o3_gs_sparse_launch_quality.py::test_dense_launch_count_matches_nonempty_colors",
          "python/tests/python/perf/test_o3_gs_sparse_launch_quality.py::test_world_int3_pad0_has_empty_colors_zero_launch",
          "python/tests/python/perf/test_o3_gs_sparse_launch_quality.py::test_world_int3_pad2_occupancy_and_launch_invariant",
          "python/tests/python/perf/test_o7_d5_device_coloring.py::test_device_coloring_on_skips_host_buckets",
          "python/tests/test_demo_lbm.py::test_lbm_franka_models_keep_collision_meshes_hidden_behind_visuals",
          "python/tests/test_demo_lbm.py::test_lbm_grasp_objects_preserve_authored_viewer_colors",
          "python/tests/test_solver_api_alignment.py::TestStateFlags::test_newton_values_present_at_top_level",
          "--junitxml=<PR_WORK>/validation/failure_recheck.xml"
        ],
        "pid": 98831,
        "state": "finished",
        "exit_code": 1,
        "elapsed_s": 41.11856877199898
      }
    },
    "volume_blend_isolated": {
      "counts": {
        "name": "pytest",
        "errors": "0",
        "failures": "0",
        "skipped": "0",
        "tests": "1",
        "time": "0.669",
        "timestamp": "2026-09-08T12:04:27.393940+08:00",
        "hostname": "tjdx-MW83-RP0-000"
      },
      "failed": [],
      "log_sha256": "142e711fac20a466998c8bbeb42619edb1e1722cf84dfe39f564f9b894494392",
      "status": {
        "name": "volume_blend_isolated",
        "command": [
          "<PR_WORK>/venv/bin/python",
          "-I",
          "-B",
          "-m",
          "pytest",
          "-q",
          "-p",
          "no:cacheprovider",
          "python/tests/python/implicit_mpm/test_implicit_mpm_newton_fem_volume_blend_yield.py::test_kinematic_mass_zero_skipped_in_blend",
          "--junitxml=<PR_WORK>/validation/volume_blend_isolated.xml"
        ],
        "pid": 98639,
        "state": "finished",
        "exit_code": 0,
        "elapsed_s": 1.0667172329995083
      }
    }
  },
  "viewers": [
    {
      "scene": "multi",
      "command": [
        "<PR_WORK>/venv/bin/python",
        "-I",
        "-B",
        "-m",
        "novaphy.demos.mpm.newton_ref.demo_mpm_multi_material",
        "--m3b-profile",
        "newton-parity",
        "--gs-official-solve-kernel",
        "--newton-fem-cuda-graph",
        "--newton-fem-graph-cond-while",
        "--newton-fem-rheology-contact-granularity",
        "5",
        "--newton-fem-rheology-contact-tol",
        "0",
        "--no-newton-fem-eval-residual-early-stop",
        "--no-gs-device-early-exit",
        "--viewer",
        "viser",
        "--viser-host",
        "127.0.0.1",
        "--viser-port",
        "18840"
      ],
      "http": 200,
      "exit_code": 0,
      "frames": 10,
      "frames_confirmed": true,
      "timed_out": false,
      "elapsed_s": 2.8071182490002684
    },
    {
      "scene": "viscous",
      "command": [
        "<PR_WORK>/venv/bin/python",
        "-I",
        "-B",
        "-m",
        "novaphy.demos.mpm.newton_ref.demo_mpm_viscous",
        "--cuda",
        "--viscous-profile",
        "newton-parity",
        "--viewer",
        "viser",
        "--viser-host",
        "127.0.0.1",
        "--viser-port",
        "18841"
      ],
      "http": 200,
      "exit_code": 0,
      "frames": 10,
      "frames_confirmed": true,
      "timed_out": false,
      "elapsed_s": 18.374988727000527
    },
    {
      "scene": "snow",
      "command": [
        "<PR_WORK>/venv/bin/python",
        "-I",
        "-B",
        "-m",
        "novaphy.demos.mpm.newton_ref.demo_mpm_snow_ball",
        "--cuda",
        "--snow-profile",
        "newton-parity",
        "--snow-scene-align",
        "official",
        "--no-snow-project-outside",
        "--show-compression",
        "--viewer",
        "viser",
        "--viser-host",
        "127.0.0.1",
        "--viser-port",
        "18842"
      ],
      "http": 200,
      "exit_code": 0,
      "frames": 10,
      "frames_confirmed": true,
      "timed_out": false,
      "elapsed_s": 16.437847093999153
    },
    {
      "scene": "beam",
      "command": [
        "<PR_WORK>/venv/bin/python",
        "-I",
        "-B",
        "-m",
        "novaphy.demos.mpm.newton_ref.demo_mpm_beam_twist",
        "--cuda",
        "--beam-profile",
        "newton-parity",
        "--show-stress",
        "--viewer",
        "viser",
        "--viser-host",
        "127.0.0.1",
        "--viser-port",
        "18843"
      ],
      "http": 200,
      "exit_code": 0,
      "frames": 10,
      "frames_confirmed": true,
      "timed_out": false,
      "elapsed_s": 2.3128995729985036
    }
  ],
  "scene_metrics": {
    "beam": {
      "scene": "beam",
      "requested_frames": 2,
      "completed_frame": 2,
      "readback": "selected checkpoints; no state writes",
      "rows": [
        {
          "frame": 1,
          "fields": {
            "q": {
              "shape": [
                10309,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 4.918032646179199,
              "sha256": "8016c2980701048041cf6c501a19f4ac78415c8beb946d53075000d133b066c9"
            },
            "qd": {
              "shape": [
                10309,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 0.6959837675094604,
              "sha256": "c8829f29d03977b4b25e80f9b23f49eaf486ac19c764a30ad535bd65551ed418"
            },
            "particle_qd_grad": {
              "shape": [
                10309,
                3,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 2.4426157474517822,
              "sha256": "84a9f4e9e7db5384f4ff78b7b15f44f54f437ba27b703adae568c4d2921482cf"
            },
            "particle_elastic_strain": {
              "shape": [
                10309,
                3,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 1.000461220741272,
              "sha256": "7e969c4fbe5b8cda851a84ce0954822795789b5b03ce752de81974c1076d73be"
            },
            "particle_stress": {
              "shape": [
                10309,
                3,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 22693.814453125,
              "sha256": "2b17824567e8712d9f409a3045c7e918abcbe5608c3dac07669d75b440cf0248"
            },
            "particle_Jp": {
              "shape": [
                10309
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 1.0,
              "sha256": "e517ad52d4cfd22526c25846b82c8859b7544243cba146fabdaa800ef824fa0f"
            }
          },
          "position_min": [
            -5.58562731115507e-14,
            -0.0028999322094023228,
            -0.0028999317437410355
          ],
          "position_max": [
            4.918032646179199,
            0.9259768724441528,
            0.9259768724441528
          ],
          "position_mean": [
            2.4589428901672363,
            0.461388498544693,
            0.46153852343559265
          ],
          "max_displacement": 0.004101141355931759,
          "max_speed": 0.9842694997787476,
          "Fe_det_range": [
            0.9996843338012695,
            1.0004156827926636
          ]
        },
        {
          "frame": 2,
          "fields": {
            "q": {
              "shape": [
                10309,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 4.918032646179199,
              "sha256": "d20809c34423d9545da1c19336fa3da2de13ce9588c57109e04fdbf61fa3c39c"
            },
            "qd": {
              "shape": [
                10309,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 0.7003428339958191,
              "sha256": "ae4650d3469a66cde3801e63c29ca5c2e7c81768d1750de182420167761581cc"
            },
            "particle_qd_grad": {
              "shape": [
                10309,
                3,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 1.8949748277664185,
              "sha256": "8f345f4269cc7bc1d1e76e7e1aacaf3168cf1e3fb27784a11b457efc5190609f"
            },
            "particle_elastic_strain": {
              "shape": [
                10309,
                3,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 1.0011788606643677,
              "sha256": "55683d0a14dd5d2ecc24d16ef8e398b3382d49967ec123bdaee66366febda528"
            },
            "particle_stress": {
              "shape": [
                10309,
                3,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 36565.58984375,
              "sha256": "7ebe3aa13d954d33c7774bb3d1ada4da3be50dc5e0a4457dfd1ac0cf56388894"
            },
            "particle_Jp": {
              "shape": [
                10309
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 1.0,
              "sha256": "e517ad52d4cfd22526c25846b82c8859b7544243cba146fabdaa800ef824fa0f"
            }
          },
          "position_min": [
            -1.564215608169245e-13,
            -0.005772449541836977,
            -0.005772450007498264
          ],
          "position_max": [
            4.918032646179199,
            0.9288493394851685,
            0.9288493394851685
          ],
          "position_mean": [
            2.4589433670043945,
            0.4610862731933594,
            0.46153920888900757
          ],
          "max_displacement": 0.008202232420444489,
          "max_speed": 0.9842695593833923,
          "Fe_det_range": [
            0.999153196811676,
            1.0011001825332642
          ]
        }
      ]
    },
    "viscous": {
      "scene": "viscous",
      "requested_frames": 2,
      "completed_frame": 2,
      "readback": "selected checkpoints; no state writes",
      "rows": [
        {
          "frame": 1,
          "fields": {
            "q": {
              "shape": [
                100190,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 0.39482784271240234,
              "sha256": "c4ba1336ba664de11a6b8fa2f80e89424bcf13e245490666f25e2c5ca6a0bb75"
            },
            "qd": {
              "shape": [
                100190,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 0.04345604404807091,
              "sha256": "8372b4625e51a204d64f799f4473de20e445ee2958bc1d8172b826276cfb40cd"
            },
            "particle_qd_grad": {
              "shape": [
                100190,
                3,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 6.117731094360352,
              "sha256": "e1f793159d69561475cc3149f6bbcb1f6f91477ba7c5aef4aff18bf0e0e18019"
            },
            "particle_elastic_strain": {
              "shape": [
                100190,
                3,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 1.0,
              "sha256": "caa5ce1bdc548ca15d8569fa287b639e4b64bd85ea76a4663fc167e2c97350de"
            },
            "particle_stress": {
              "shape": [
                100190,
                3,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 0.0,
              "sha256": "d72a55bb9b1cd8569fc8cc3f490de35a8f07a00602316036cc7c8e9ce3152853"
            },
            "particle_Jp": {
              "shape": [
                100190
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 1.0,
              "sha256": "95c583a78d21793b006c299a4b2e82da58a3b638d69314be4b5bb72c7243925e"
            }
          },
          "position_min": [
            -0.04348316416144371,
            0.204841747879982,
            -0.04339243099093437
          ],
          "position_max": [
            0.04358435422182083,
            0.39482784271240234,
            0.04353088140487671
          ],
          "position_mean": [
            1.3846391993865836e-05,
            0.34018513560295105,
            -1.427501229045447e-05
          ],
          "max_displacement": 0.0001810665853554383,
          "max_speed": 0.04345666244626045,
          "Fe_det_range": [
            1.0,
            1.0
          ]
        },
        {
          "frame": 2,
          "fields": {
            "q": {
              "shape": [
                100190,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 0.39450496435165405,
              "sha256": "2011f4f0f8860a125786db89478dc471e6d57d371fa441f2abae39b0a1a94313"
            },
            "qd": {
              "shape": [
                100190,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 0.08717978000640869,
              "sha256": "fe3baf2f9f1716b22a76e99a3ba65f5647c9b4af5b3c849d2a85754315b79127"
            },
            "particle_qd_grad": {
              "shape": [
                100190,
                3,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 11.372203826904297,
              "sha256": "72aee4a7845cb14105464c146a120fcf87aa9420b3b40477b57c25faeb0eaa9b"
            },
            "particle_elastic_strain": {
              "shape": [
                100190,
                3,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 1.0,
              "sha256": "caa5ce1bdc548ca15d8569fa287b639e4b64bd85ea76a4663fc167e2c97350de"
            },
            "particle_stress": {
              "shape": [
                100190,
                3,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 0.0,
              "sha256": "d72a55bb9b1cd8569fc8cc3f490de35a8f07a00602316036cc7c8e9ce3152853"
            },
            "particle_Jp": {
              "shape": [
                100190
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 1.0,
              "sha256": "95c583a78d21793b006c299a4b2e82da58a3b638d69314be4b5bb72c7243925e"
            }
          },
          "position_min": [
            -0.04347670078277588,
            0.20448622107505798,
            -0.043375518172979355
          ],
          "position_max": [
            0.04357801377773285,
            0.39450496435165405,
            0.04351488873362541
          ],
          "position_mean": [
            1.37531114887679e-05,
            0.3398386538028717,
            -1.4317555724119302e-05
          ],
          "max_displacement": 0.0005444208509288728,
          "max_speed": 0.08720924705266953,
          "Fe_det_range": [
            1.0,
            1.0
          ]
        }
      ]
    },
    "multi": {
      "scene": "multi",
      "requested_frames": 2,
      "completed_frame": 2,
      "readback": "selected checkpoints; no state writes",
      "rows": [
        {
          "frame": 1,
          "fields": {
            "q": {
              "shape": [
                178669,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 1.5055991411209106,
              "sha256": "bf19ba12ab57355238683b65129962bef91a9043ed0fe9af4a009386095ec174"
            },
            "qd": {
              "shape": [
                178669,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 0.1634988784790039,
              "sha256": "cbece985b27935cd3dc1952ff9737f50934a91e757a2137f4befdc25abdad727"
            },
            "particle_qd_grad": {
              "shape": [
                178669,
                3,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 0.008560099638998508,
              "sha256": "9cff545f908c144bc483a851da9ffe1d5c9a819832640fc5c26f86936c4c3709"
            },
            "particle_elastic_strain": {
              "shape": [
                178669,
                3,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 1.0,
              "sha256": "6ef9c20342da13bff2dc27ae8ebcb686e7bd366c181b47682e9f1f6028ce52a2"
            },
            "particle_stress": {
              "shape": [
                178669,
                3,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 0.41630035638809204,
              "sha256": "5f8e59b6ff977b5c42844eac98ec905f1c867a61fc7d7916d7948a199bc94f27"
            },
            "particle_Jp": {
              "shape": [
                178669
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 1.0000560283660889,
              "sha256": "3f71a237482baf6d421a5c28c5fd5060a655ea7090b6250696167f9b2922fc1f"
            }
          },
          "position_min": [
            -0.5083332657814026,
            -0.008330799639225006,
            -0.7583223581314087
          ],
          "position_max": [
            0.5083141922950745,
            1.5055991411209106,
            0.7583223581314087
          ],
          "position_mean": [
            5.892444733035518e-06,
            0.6616536974906921,
            -7.914839443401434e-06
          ],
          "max_displacement": 0.0027250051498413086,
          "max_speed": 0.1634988784790039,
          "Fe_det_range": [
            1.0,
            1.0
          ]
        },
        {
          "frame": 2,
          "fields": {
            "q": {
              "shape": [
                178669,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 1.5001493692398071,
              "sha256": "123ba6fec68fa3db02a972a29e9b02cb037f413b911b2483761fd8bec3afce73"
            },
            "qd": {
              "shape": [
                178669,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 0.326996773481369,
              "sha256": "97e8ec32605aaf91701a5f49c2b197ddf69a1cf351cc12e8a453e674000af0c6"
            },
            "particle_qd_grad": {
              "shape": [
                178669,
                3,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 0.023779043927788734,
              "sha256": "75b256115f1ccff8d485d25c3f00cf4e7c3ef6a4219e94d292ef6dac8d7d07ad"
            },
            "particle_elastic_strain": {
              "shape": [
                178669,
                3,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 1.0,
              "sha256": "6ef9c20342da13bff2dc27ae8ebcb686e7bd366c181b47682e9f1f6028ce52a2"
            },
            "particle_stress": {
              "shape": [
                178669,
                3,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 1.163575530052185,
              "sha256": "71ba166bb13d433339c30f82ce2682e39c75a72fd74b9aac903e9344baa5ea64"
            },
            "particle_Jp": {
              "shape": [
                178669
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 1.0002377033233643,
              "sha256": "c24f988df6320e93152edd09c309b58896f88f43d1e7efb51d18d7d03ee66278"
            }
          },
          "position_min": [
            -0.5083333253860474,
            -0.008330799639225006,
            -0.7583223581314087
          ],
          "position_max": [
            0.5083142518997192,
            1.5001493692398071,
            0.7583223581314087
          ],
          "position_mean": [
            5.892444733035518e-06,
            0.6580183506011963,
            -7.914839443401434e-06
          ],
          "max_displacement": 0.00817495584487915,
          "max_speed": 0.326996773481369,
          "Fe_det_range": [
            1.0,
            1.0
          ]
        }
      ]
    },
    "snow": {
      "scene": "snow",
      "requested_frames": 2,
      "completed_frame": 2,
      "readback": "selected checkpoints; no state writes",
      "rows": [
        {
          "frame": 1,
          "fields": {
            "q": {
              "shape": [
                641657,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 16.995317459106445,
              "sha256": "ed513ba4dd3c499012d35c2cce14968ba852d52172ec8f94117c5d6959b68c78"
            },
            "qd": {
              "shape": [
                641657,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 0.1635221391916275,
              "sha256": "0cc5f8f140576598ee9e4be2ea166bc324315dc8338317305b9a515a0bd740db"
            },
            "particle_qd_grad": {
              "shape": [
                641657,
                3,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 0.7368839383125305,
              "sha256": "8f1a396dabd29ed66b7cafff6743bad8a3d280955aa91ac7ca5c08f2715b5af2"
            },
            "particle_elastic_strain": {
              "shape": [
                641657,
                3,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 1.0016824007034302,
              "sha256": "71d5f5c5870e70b5a0aacec9d7699ba449e61cc9b336d664356aa1ae8188dc74"
            },
            "particle_stress": {
              "shape": [
                641657,
                3,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 10506.9501953125,
              "sha256": "9a04b17391229a8325920baa2691ab4ed2802eaacf3ad4a403b09f0e53d69927"
            },
            "particle_Jp": {
              "shape": [
                641657
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 0.9750000238418579,
              "sha256": "b0642484c8b07437056fa8d4ba18dbca3ede908a055f0dd474650cc7df1e3de6"
            }
          },
          "position_min": [
            -2.4249963760375977,
            -6.3021111488342285,
            -9.924978256225586
          ],
          "position_max": [
            2.374980926513672,
            16.995317459106445,
            9.874950408935547
          ],
          "position_mean": [
            -0.02371290512382984,
            1.3298614025115967,
            -0.2837136685848236
          ],
          "max_displacement": 0.00272560166195035,
          "max_speed": 0.1635221391916275,
          "Fe_det_range": [
            0.9969131350517273,
            1.0015541315078735
          ]
        },
        {
          "frame": 2,
          "fields": {
            "q": {
              "shape": [
                641657,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 16.9898681640625,
              "sha256": "b0d9d7783bd4e2c2c66e0a788dc9863103a6702c777436a02bcfdf9bfcebc4ba"
            },
            "qd": {
              "shape": [
                641657,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 0.32707685232162476,
              "sha256": "ff703905529838f0c3e013440566795e9a40a09b6d3ec5ae12f2a8ca12998a22"
            },
            "particle_qd_grad": {
              "shape": [
                641657,
                3,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 1.126274824142456,
              "sha256": "f0e4cbc54140076a00d8d2236d2d7e91f2ee1b0bd0064ee341ab51e30aa6272b"
            },
            "particle_elastic_strain": {
              "shape": [
                641657,
                3,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 1.003644585609436,
              "sha256": "2f23b6a17721918a108673bfde89e324d8a6f5ab733720fa558d5176aaa0ab0e"
            },
            "particle_stress": {
              "shape": [
                641657,
                3,
                3
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 13812.9619140625,
              "sha256": "87c2c97a8f758c01dddf1db5c8cd4691309098e19a33f2409a96bb7b74a86169"
            },
            "particle_Jp": {
              "shape": [
                641657
              ],
              "dtype": "float32",
              "finite": true,
              "max_abs": 0.9750000238418579,
              "sha256": "b0642484c8b07437056fa8d4ba18dbca3ede908a055f0dd474650cc7df1e3de6"
            }
          },
          "position_min": [
            -2.4249963760375977,
            -6.3021111488342285,
            -9.924978256225586
          ],
          "position_max": [
            2.374980926513672,
            16.9898681640625,
            9.874950408935547
          ],
          "position_mean": [
            -0.023712780326604843,
            1.3289802074432373,
            -0.2832811772823334
          ],
          "max_displacement": 0.008176803588867188,
          "max_speed": 0.32707685232162476,
          "Fe_det_range": [
            0.9947211146354675,
            1.0026429891586304
          ]
        }
      ]
    }
  },
  "lint": {
    "files": 180,
    "baseline_findings": 619,
    "current_findings": 618,
    "introduced": []
  },
  "diff_diagnosis": {
    "upstream_identical": true,
    "input_types": [
      [
        "kParticleQ",
        "F32"
      ],
      [
        "kParticleQd",
        "F32"
      ],
      [
        "kParticleRadius",
        "F32"
      ],
      [
        "kParticleFlags",
        "I32"
      ],
      [
        "kShapeBody",
        "I32"
      ],
      [
        "kShapeMargin",
        "F32"
      ],
      [
        "kShapeKe",
        "F32"
      ],
      [
        "kShapeKd",
        "F32"
      ],
      [
        "kShapeKf",
        "F32"
      ],
      [
        "kShapeMu",
        "I32"
      ],
      [
        "kContactCount",
        "I32"
      ],
      [
        "kContactParticle",
        "I32"
      ],
      [
        "kContactShape",
        "F32"
      ],
      [
        "kContactBodyPos",
        "F32"
      ],
      [
        "kContactBodyVel",
        "F32"
      ],
      [
        "kContactNormal",
        "F32"
      ],
      [
        "kParticleF",
        "F32"
      ]
    ],
    "mismatches": {
      "kShapeMu": "I32 but material coefficient read as F32",
      "kContactShape": "F32 but contact index read with indexed_load_i32"
    },
    "runtime": "diff_ball.log; source input must be I32",
    "action": "record upstream code issue, no DIFF math/type modifications in this MPM PR preparation"
  },
  "diff_checks": {
    "diff_ball": {
      "command": [
        "<PR_WORK>/venv/bin/python",
        "-I",
        "-B",
        "-m",
        "novaphy.demos.diff.demo_diffsim_ball",
        "--headless",
        "1",
        "--iters",
        "1",
        "--check-grad"
      ],
      "exit_code": 1,
      "elapsed_s": 0.565722082999855
    },
    "diff_featherstone": {
      "command": [
        "<PR_WORK>/venv/bin/python",
        "-I",
        "-B",
        "-m",
        "novaphy.demos.diff.demo_diffsim_featherstone",
        "--headless",
        "1",
        "--sim-frames",
        "2",
        "--sim-substeps",
        "1",
        "--check-grad"
      ],
      "exit_code": 1,
      "elapsed_s": 0.21451617299862846
    }
  },
  "acceptance": "FAIL: full suite not green; review preparation only. No full-suite PASS inferred from rechecks."
}
