A contact solver for physics-based simulations involving 👚 shells, 🪵 solids, 🪢 rods, 🧱 rigid bodies and ⏳ sand.
This report summarizes scanner evidence for st-tech/ppf-contact-solver, a Python project with 4,544 GitHub stars. SynthScan examined 522,968 lines of code across 1233 source files, recording 7419 pattern matches distributed across 22 syntactic categories. The legacy adjusted pattern signal is 19.6 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 4944 finding(s).
Are imports declared and package/API names verified? 803 finding(s).
Are wrappers, guards, and repeated structures necessary? 2538 finding(s).
Which changes need focused human review? 7419 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 7419 distinct pattern matches across 22 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Cargo.toml | 21 | # the CUDA solver driver (binary: `ppf-contact-solver`, package: | COMMENT |
| LOW | install-blender.sh | 1 | #!/bin/bash | COMMENT |
| LOW | install-blender.sh | 21 | # /Applications/Blender.app -- copied from the official .dmg | COMMENT |
| LOW | install-blender.sh | 121 | fi | COMMENT |
| LOW | warmup.py | 241 | # pytetwild carries a version pin because a SOLID scene's tetrahedral mesh | COMMENT |
| LOW | install-blender-addon.sh | 1 | #!/bin/bash | COMMENT |
| LOW | tools/backfill_upload_ids.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | tools/clear_notebook_outputs.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | tools/cpu_contact_fixture.py | 1 | # File: tools/cpu_contact_fixture.py | COMMENT |
| LOW | tools/cpu_contact_fixture.py | 21 | # them, so a sheet that passes through leaves NO interleaved pose in the output: | COMMENT |
| LOW | tools/cpu_contact_fixture.py | 41 | # through on the step that reaches the lower one, and the crossing count goes | COMMENT |
| LOW | tools/run_suite.py | 1 | # File: tools/run_suite.py | COMMENT |
| LOW | tools/run_suite.py | 21 | # only counts files. | COMMENT |
| LOW | tools/run_suite.py | 341 | per = [] | COMMENT |
| LOW | tools/run_suite.py | 381 | # WHAT IT COMPARES. Two per-step indicator streams that every backend already | COMMENT |
| LOW | tools/run_suite.py | 401 | # WHY THE TWO STREAMS ARE JUDGED DIFFERENTLY. `newton_steps` is an integer the | COMMENT |
| LOW | tools/run_suite.py | 421 | # time by up to one substep: measured on three complete `drape` runs the last | COMMENT |
| LOW | tools/run_suite.py | 441 | COMMENT | |
| LOW | tools/run_suite.py | 461 | # 2.8208x on the same two. 2.7183 is the weakest of the four. | COMMENT |
| LOW | tools/run_suite.py | 841 | # | COMMENT |
| LOW | tools/run_suite.py | 881 | got_bins[b]["mean"], ref_bins[b]["mean"], band)) | COMMENT |
| LOW | tools/run_suite.py | 1601 | return { | COMMENT |
| LOW | tools/run_suite.py | 1761 | f"reference={ref_path}") | COMMENT |
| LOW | crates/ppf-cts-core/build.rs | 1 | // File: build.rs | COMMENT |
| LOW | crates/ppf-cts-core/build.rs | 21 | // On macOS this also compiles cpp/metal_probe.mm, the tiny Objective-C++ | COMMENT |
| LOW | crates/ppf-cts-core/build.rs | 81 | /// generic one, so the run-time question can only be answered by expanding the | COMMENT |
| LOW | crates/ppf-cts-core/build.rs | 181 | println!("cargo:rerun-if-changed=cpp/intersect_ffi.cpp"); | COMMENT |
| LOW | crates/ppf-cts-core/build.rs | 221 | .file("cpp/metal_probe.mm") | COMMENT |
| LOW | crates/ppf-cts-core/build.rs | 281 | let mut build = cc::Build::new(); | COMMENT |
| LOW | crates/ppf-cts-core/tests/cache_path_gates.rs | 1 | // File: cache_path_gates.rs | COMMENT |
| LOW | crates/ppf-cts-core/tests/cache_path_gates.rs | 21 | // | COMMENT |
| LOW | crates/ppf-cts-core/cpp/rocm_probe.cpp | 1 | // File: rocm_probe.cpp | COMMENT |
| LOW | crates/ppf-cts-core/cpp/rocm_probe.cpp | 21 | // | COMMENT |
| LOW | crates/ppf-cts-core/cpp/rocm_probe.cpp | 41 | COMMENT | |
| LOW | crates/ppf-cts-core/cpp/intersect_ffi.cpp | 1 | // File: intersect_ffi.cpp | COMMENT |
| LOW | crates/ppf-cts-core/cpp/metal_probe.mm | 1 | // File: metal_probe.mm | COMMENT |
| LOW | crates/ppf-cts-core/cpp/metal_probe.mm | 21 | #import <Metal/Metal.h> | COMMENT |
| LOW | crates/ppf-cts-core/cpp/metal_probe.mm | 121 | // WALKED UPWARD FROM A NAMED CONSTANT RATHER THAN WRITTEN AS | COMMENT |
| LOW | crates/ppf-cts-core/cpp/metal_probe.mm | 161 | // same place, and it is SYSTEM-WIDE rather than per process, which is also what | COMMENT |
| LOW | crates/ppf-cts-core/benches/rasterizer.rs | 1 | // File: crates/ppf-cts-core/benches/rasterizer.rs | COMMENT |
| LOW | crates/ppf-cts-core/src/parsers.rs | 1 | // File: crates/ppf-cts-core/src/parsers.rs | COMMENT |
| LOW | crates/ppf-cts-core/src/parsers.rs | 21 | // * `SimpleLog logging("name")` opens a parent group (subsequent | COMMENT |
| LOW | crates/ppf-cts-core/src/events.rs | 1 | // File: crates/ppf-cts-core/src/events.rs | COMMENT |
| LOW | crates/ppf-cts-core/src/events.rs | 21 | /// saw when the run failed. | COMMENT |
| LOW | crates/ppf-cts-core/src/events.rs | 41 | root: String, | COMMENT |
| LOW | crates/ppf-cts-core/src/events.rs | 61 | /// disk so the progress bar keeps working after the connect | COMMENT |
| LOW | crates/ppf-cts-core/src/events.rs | 141 | /// Monitor observed `<output>/initialize_finish.txt`, the file the | COMMENT |
| LOW | crates/ppf-cts-core/src/events.rs | 161 | COMMENT | |
| LOW | crates/ppf-cts-core/src/cancel.rs | 1 | // File: crates/ppf-cts-core/src/cancel.rs | COMMENT |
| LOW | crates/ppf-cts-core/src/lib.rs | 1 | // File: crates/ppf-cts-core/src/lib.rs | COMMENT |
| LOW | crates/ppf-cts-core/src/effects.rs | 1 | // File: crates/ppf-cts-core/src/effects.rs | COMMENT |
| LOW | crates/ppf-cts-core/src/effects.rs | 21 | COMMENT | |
| LOW | crates/ppf-cts-core/src/extra.rs | 1 | // File: crates/ppf-cts-core/src/extra.rs | COMMENT |
| LOW | crates/ppf-cts-core/src/state.rs | 1 | // File: crates/ppf-cts-core/src/state.rs | COMMENT |
| LOW | crates/ppf-cts-core/src/state.rs | 41 | #[derive(Default)] | COMMENT |
| LOW | crates/ppf-cts-core/src/state.rs | 81 | /// echoes them on every status response so the client can detect | COMMENT |
| LOW | crates/ppf-cts-core/src/state.rs | 101 | pub error: String, | COMMENT |
| LOW | crates/ppf-cts-core/src/utils.rs | 1 | // File: crates/ppf-cts-core/src/utils.rs | COMMENT |
| LOW | crates/ppf-cts-core/src/utils.rs | 21 | // paths (they don't gate engine effects). | COMMENT |
| LOW | crates/ppf-cts-core/src/utils.rs | 41 | COMMENT | |
| 3447 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tools/cpu_contact_fixture.py | 52 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/cpu_contact_fixture.py | 61 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/cpu_contact_fixture.py | 342 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/cpu_contact_fixture.py | 348 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/cpu_contact_fixture.py | 361 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/cpu_contact_fixture.py | 363 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/cpu_contact_fixture.py | 379 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/cpu_contact_fixture.py | 385 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/run_suite.py | 377 | # =========================================================================== | COMMENT |
| MEDIUM | tools/run_suite.py | 379 | # =========================================================================== | COMMENT |
| MEDIUM | crates/ppf-cts-core/src/transitions/mod.rs | 32 | // ── Project context ───────────────────────────────────────── | COMMENT |
| MEDIUM | crates/ppf-cts-core/src/transitions/mod.rs | 149 | // ── Upload landing ────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/ppf-cts-core/src/transitions/mod.rs | 207 | // ── Build ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/ppf-cts-core/src/transitions/mod.rs | 318 | // ── Solver operations ────────────────────────────────────── | COMMENT |
| MEDIUM | crates/ppf-cts-core/src/transitions/mod.rs | 406 | // ── Solver monitor events ────────────────────────────────── | COMMENT |
| MEDIUM | crates/ppf-cts-core/src/transitions/mod.rs | 495 | // ── Delete ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/ppf-cts-core/src/transitions/mod.rs | 515 | // ── Generic error ───────────────────────────────────────── | COMMENT |
| MEDIUM | crates/ppf-cts-core/src/transitions/mod.rs | 526 | // ── Guard-rejected or unknown ───────────────────────────── | COMMENT |
| MEDIUM | crates/ppf-cts-compute/seam/kernelgen.py | 71 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | crates/ppf-cts-compute/seam/kernelgen.py | 78 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | crates/ppf-cts-compute/seam/kernelgen.py | 126 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | crates/ppf-cts-compute/seam/kernelgen.py | 338 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | crates/ppf-cts-compute/seam/kernelgen.py | 731 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | crates/ppf-cts-compute/seam/kernelgen.py | 740 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | crates/ppf-cts-compute/seam/kernelgen.py | 871 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | crates/ppf-cts-compute/seam/kernelgen.py | 910 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | crates/ppf-cts-compute/seam/kernelgen.py | 1914 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | crates/ppf-cts-compute/seam/kernelgen.py | 1977 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | crates/ppf-cts-compute/seam/kernelgen.py | 2049 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | crates/ppf-cts-compute/seam/kernelgen.py | 2383 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | crates/ppf-cts-compute/seam/kernelgen.py | 2385 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | crates/ppf-cts-compute/seam/kernelgen.py | 2495 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | crates/ppf-cts-compute/seam/kernelgen.py | 2497 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | crates/ppf-cts-compute/seam/kernelgen.py | 2585 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | crates/ppf-cts-compute/seam/kernelgen.py | 2595 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | crates/ppf-cts-compute/seam/kernelgen.py | 4527 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | crates/ppf-cts-compute/seam/test_kernelgen.py | 149 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | crates/ppf-cts-compute/seam/test_kernelgen.py | 190 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | crates/ppf-cts-compute/seam/test_kernelgen.py | 192 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | crates/ppf-cts-compute/seam/test_kernelgen.py | 278 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | crates/ppf-cts-compute/seam/test_kernelgen.py | 280 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | crates/ppf-cts-compute/seam/test_kernelgen.py | 329 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | crates/ppf-cts-compute/seam/test_kernelgen.py | 331 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | crates/ppf-cts-compute/seam/test_kernelgen.py | 345 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | crates/ppf-cts-compute/seam/test_kernelgen.py | 347 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | crates/ppf-cts-compute/seam/test_kernelgen.py | 476 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | crates/ppf-cts-compute/seam/test_kernelgen.py | 478 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | crates/ppf-cts-compute/seam/test_kernelgen.py | 519 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | crates/ppf-cts-compute/seam/test_kernelgen.py | 521 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | crates/ppf-cts-compute/seam/test_kernelgen.py | 594 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | crates/ppf-cts-compute/seam/test_kernelgen.py | 596 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | crates/ppf-cts-compute/seam/test_kernelgen.py | 671 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | crates/ppf-cts-compute/seam/test_kernelgen.py | 673 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | crates/ppf-cts-compute/seam/test_kernelgen.py | 748 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | crates/ppf-cts-compute/seam/test_kernelgen.py | 750 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | crates/ppf-cts-compute/seam/test_kernelgen.py | 806 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | crates/ppf-cts-compute/seam/test_kernelgen.py | 808 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | crates/ppf-cts-compute/seam/test_kernelgen.py | 827 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | crates/ppf-cts-compute/seam/test_kernelgen.py | 829 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | crates/ppf-cts-compute/seam/test_kernelgen.py | 847 | # --------------------------------------------------------------------------- | STRING |
| 739 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | warmup.py | 124 | def create_vscode_ext_recommend(): | CODE |
| LOW | warmup.py | 1124 | def _clear_cache_for_fast_check(): | STRING |
| LOW | crates/ppf-cts-compute/seam/kernelgen.py | 5371 | def check_msl_spaces_complete(source_path, rendered, lines, masks): | CODE |
| LOW | frontend/_proximity_.py | 16 | def check_contact_offset_violation( | CODE |
| LOW | frontend/_app_.py | 22 | def _suppress_stale_widget_errors(): | CODE |
| LOW | frontend/_scene_transform_.py | 56 | def _apply_transform_to_verts( | CODE |
| LOW | frontend/_mesh_.py | 46 | def _refuse_ftetwild_where_unshipped(): | CODE |
| LOW | frontend/_mesh_.py | 1183 | def _assert_tetgen_surface_unchanged(self, vert, tri, input_vert, n_input): | STRING |
| LOW | frontend/_scene_object_.py | 962 | def _append_transform_keyframe( | CODE |
| LOW | frontend/_scene_object_.py | 986 | def _ensure_transform_animation(self): | CODE |
| LOW | frontend/_scene_object_.py | 1574 | def lock_rotation_prohibit_axis(self, prohibit: bool = True) -> "Object": | CODE |
| LOW | frontend/_scene_object_.py | 1676 | def angular_velocity_schedule_pca(self, schedule: list) -> "Object": | CODE |
| LOW | frontend/_scene_object_.py | 1730 | def angular_velocity_schedule_world(self, schedule: list) -> "Object": | CODE |
| LOW | frontend/__init__.py | 572 | def _register_windows_dll_directories(): | CODE |
| LOW | frontend/_session_.py | 1861 | def fixed_session_to_cbor_dict( | CODE |
| LOW | frontend/_decoder_.py | 1171 | def _split_solid_holder_by_threshold(self, dyn_obj, obj_cfg, verbose=False, | CODE |
| LOW | frontend/_decoder_.py | 1645 | def _split_solid_holders_by_pin_group(dyn_obj, groups, verbose=False): | CODE |
| LOW | frontend/_decoder_.py | 2004 | def _build_solid_frame_move_ops(frame_map, obj_cfg): | CODE |
| LOW | frontend/_decoder_.py | 2062 | def _build_solid_embedded_move_ops(sim_weights, obj_cfg, harmonic=None, | CODE |
| LOW | frontend/_decoder_.py | 2168 | def _build_solid_poisson_move_ops(solid_pin, obj_cfg): | CODE |
| LOW | frontend/_decoder_.py | 2405 | def apply_invisible_colliders(self, scene, verbose: bool = False): | CODE |
| LOW | frontend/_decoder_.py | 2446 | def _apply_common_collider_params(collider, spec, kind): | CODE |
| LOW | frontend/_decoder_.py | 2461 | def _graph_laplacian_from_edges(e0, e1, n): | CODE |
| LOW | frontend/_decoder_.py | 2532 | def _harmonic_interior_operator_strict(n_verts, tets, surf_ids, interior_ids): | CODE |
| LOW | frontend/_decoder_.py | 2586 | def _build_harmonic_interior_operator( | CODE |
| LOW | frontend/_decoder_.py | 2698 | def _build_solid_weight_transfer(tet_mesh, F_arr, object_name): | CODE |
| LOW | frontend/_decoder_.py | 3732 | def release_solid_weight_transfers(self) -> None: | CODE |
| LOW | frontend/_invisible_collider_.py | 154 | def check_invisible_collider_violations( | CODE |
| LOW | frontend/_scene_.py | 2657 | def _check_rest_shape_tracking(name: str, obj: "Object") -> None: | CODE |
| LOW | frontend/_scene_.py | 3314 | def _closed_surface_from_faces(faces, face_range): | CODE |
| LOW | frontend/tests/_session_statistics_.py | 155 | def test_the_latest_frame_is_read_by_default(get): | CODE |
| LOW | frontend/tests/_session_statistics_.py | 167 | def test_invalid_reads_none_and_unsupported_is_absent(get): | CODE |
| LOW | frontend/tests/_session_statistics_.py | 175 | def test_a_series_skips_the_frames_with_no_value(get): | CODE |
| LOW⚡ | frontend/tests/_session_statistics_.py | 187 | def test_no_frame_yet_reads_none(tmp_path): | CODE |
| LOW⚡ | frontend/tests/_session_statistics_.py | 197 | def test_a_missing_frame_is_refused(get): | CODE |
| LOW⚡ | frontend/tests/_session_statistics_.py | 202 | def test_a_frame_breaking_the_manifest_is_refused(get, tmp_path): | CODE |
| LOW⚡ | frontend/tests/_lock_rotation_.py | 108 | def test_non_finite_axis_raises(): | CODE |
| LOW⚡ | frontend/tests/_lock_rotation_.py | 117 | def test_static_object_raises(): | CODE |
| LOW⚡ | frontend/tests/_lock_rotation_.py | 127 | def test_clear_resets_rotation_lock(): | CODE |
| LOW⚡ | frontend/tests/_lock_rotation_.py | 135 | def test_coexists_independently_with_translation_lock(): | CODE |
| LOW⚡ | frontend/tests/_lock_rotation_.py | 143 | def test_prohibit_axis_defaults_to_false(): | CODE |
| LOW⚡ | frontend/tests/_lock_rotation_.py | 149 | def test_prohibit_axis_flips_mode(): | CODE |
| LOW⚡ | frontend/tests/_lock_rotation_.py | 158 | def test_prohibit_axis_returns_self_for_chaining(): | CODE |
| LOW⚡ | frontend/tests/_lock_rotation_.py | 164 | def test_prohibit_axis_without_lock_rotation_raises(): | CODE |
| LOW⚡ | frontend/tests/_lock_rotation_.py | 171 | def test_starts_with_no_all_axes_lock(): | CODE |
| LOW⚡ | frontend/tests/_lock_rotation_.py | 177 | def test_lock_all_rotations_sets_flag_and_carries_no_axis(): | CODE |
| LOW⚡ | frontend/tests/_lock_rotation_.py | 186 | def test_lock_all_rotations_returns_self_for_chaining(): | CODE |
| LOW⚡ | frontend/tests/_lock_rotation_.py | 192 | def test_lock_all_rotations_clears_axis_and_prohibit_axis(): | CODE |
| LOW⚡ | frontend/tests/_lock_rotation_.py | 202 | def test_lock_rotation_clears_all_axes_flag(): | CODE |
| LOW⚡ | frontend/tests/_lock_rotation_.py | 210 | def test_prohibit_axis_under_lock_all_rotations_raises(): | CODE |
| LOW⚡ | frontend/tests/_lock_rotation_.py | 219 | def test_lock_all_rotations_on_static_object_raises(): | CODE |
| LOW⚡ | frontend/tests/_lock_rotation_.py | 229 | def test_clear_resets_lock_all_rotations(): | CODE |
| LOW⚡ | frontend/tests/_lock_rotation_.py | 237 | def test_lock_all_translations_sets_flag_and_carries_no_axis(): | CODE |
| LOW⚡ | frontend/tests/_lock_rotation_.py | 244 | def test_lock_all_translations_returns_self_for_chaining(): | CODE |
| LOW⚡ | frontend/tests/_lock_rotation_.py | 250 | def test_lock_all_translations_clears_axis(): | CODE |
| LOW⚡ | frontend/tests/_lock_rotation_.py | 258 | def test_lock_translation_clears_all_axes_flag(): | CODE |
| LOW⚡ | frontend/tests/_lock_rotation_.py | 266 | def test_lock_all_translations_on_static_object_raises(): | CODE |
| LOW⚡ | frontend/tests/_lock_rotation_.py | 276 | def test_clear_resets_lock_all_translations(): | CODE |
| LOW⚡ | frontend/tests/_lock_rotation_.py | 284 | def test_all_axes_locks_coexist_independently(): | CODE |
| LOW | frontend/tests/_lock_rotation_.py | 86 | def test_normalizes_non_axis_aligned_direction(): | CODE |
| 787 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | warmup.py | 493 | print(f"Error: pip not found at {pip_path}") | CODE |
| MEDIUM | warmup.py | 1282 | print(f"Error: Architecture '{machine}' is not supported.") | CODE |
| LOW | warmup.py | 826 | except Exception as e: | CODE |
| LOW | warmup.py | 1156 | except Exception as e: | CODE |
| LOW | warmup.py | 1169 | except Exception as e: | CODE |
| LOW | warmup.py | 1182 | except Exception as e: | CODE |
| LOW | warmup.py | 1211 | except Exception as e: | CODE |
| LOW | warmup.py | 1224 | except Exception as e: | CODE |
| LOW | warmup.py | 1237 | except Exception as e: | CODE |
| LOW | warmup.py | 1250 | except Exception as e: | CODE |
| LOW | warmup.py | 1263 | except Exception as e: | CODE |
| LOW | tools/run_suite.py | 1794 | except Exception as exc: # a harness fault must not be read as a scene failure | CODE |
| LOW | crates/ppf-cts-py/tests/_python_smoke_.py | 31 | except Exception as e: # pragma: no cover - environment-dependent | CODE |
| LOW | crates/ppf-cts-compute/seam/kernelgen.py | 2106 | except Exception: | CODE |
| LOW | frontend/_mesh_.py | 1162 | except Exception as e: | STRING |
| LOW | frontend/build_worker.py | 710 | except Exception: | CODE |
| LOW | frontend/build_worker.py | 714 | except Exception as exc: | CODE |
| LOW | frontend/build_worker.py | 727 | except Exception as exc: | CODE |
| LOW | frontend/build_worker.py | 760 | except Exception as werr: # best-effort; never mask the build error | CODE |
| LOW | frontend/_session_.py | 1343 | except Exception as e: | CODE |
| LOW | frontend/_session_.py | 1355 | except Exception as e: | CODE |
| LOW | frontend/_session_.py | 1484 | except Exception: | CODE |
| LOW | frontend/_session_.py | 1493 | except Exception as _: | CODE |
| LOW | frontend/_session_.py | 1882 | except Exception: | CODE |
| LOW | frontend/_session_.py | 1892 | except Exception: | CODE |
| LOW | frontend/_force_field_.py | 1024 | except Exception as e: # the script's own top level failed | CODE |
| MEDIUM | frontend/_force_field_.py | 957 | def _unary(op, a): | CODE |
| MEDIUM | frontend/_utils_.py | 220 | print("Error occurred while running nvidia-smi:", e) | CODE |
| MEDIUM | frontend/_utils_.py | 239 | print("Error occurred while running nvidia-smi:", e) | CODE |
| LOW | frontend/tests/_proximity_.py | 370 | except Exception as e: | CODE |
| LOW | frontend/tests/_object_visibility_.py | 348 | except Exception as e: | CODE |
| LOW | frontend/tests/_solid_weight_transfer_.py | 34 | except Exception as exc: # pragma: no cover - environment-dependent | CODE |
| LOW | frontend/tests/_self_intersection_.py | 416 | except Exception as e: | CODE |
| LOW | frontend/tests/_cbor_bridge_.py | 208 | except Exception as e: | CODE |
| LOW | frontend/tests/_decoder_display_pins_.py | 37 | except Exception as exc: # pragma: no cover - environment-dependent | CODE |
| LOW | frontend/tests/_build_worker_error_report_.py | 43 | except Exception as exc: # pragma: no cover - environment-dependent | CODE |
| LOW | frontend/tests/_build_worker_error_report_.py | 248 | except Exception as err: | CODE |
| LOW | frontend/tests/_decoder_solid_pin_fields_.py | 47 | except Exception as exc: # pragma: no cover - environment-dependent | CODE |
| LOW | frontend/tests/_sdf_.py | 65 | except Exception as e: | CODE |
| LOW | frontend/tests/_rasterizer_.py | 75 | except Exception as e: | CODE |
| LOW | frontend/tests/_tetra_cache_key_.py | 43 | except Exception as exc: # pragma: no cover - environment-dependent | CODE |
| LOW | frontend/tests/_cache_path_length_.py | 33 | except Exception as e: # pragma: no cover - environment-dependent | CODE |
| LOW | frontend/tests/_bvh_.py | 372 | except Exception as e: | CODE |
| LOW | frontend/tests/_decoder_sparse_pin_map_.py | 27 | except Exception as exc: # pragma: no cover - environment-dependent | CODE |
| LOW | frontend/tests/_decoder_solid_pin_group_.py | 48 | except Exception as exc: # pragma: no cover - environment-dependent | CODE |
| LOW | frontend/tests/_invisible_collider_.py | 585 | except Exception as e: | CODE |
| LOW | frontend/tests/_decoder_solid_threshold_.py | 40 | except Exception as exc: # pragma: no cover - environment-dependent | CODE |
| LOW | frontend/tests/_asset_.py | 99 | except Exception as e: | CODE |
| LOW | frontend/tests/_device_diagnostics_.py | 247 | except Exception as e: | CODE |
| LOW | calibration/viz.py | 33 | except Exception: | CODE |
| LOW | calibration/viz.py | 37 | except Exception: | CODE |
| MEDIUM | blender_addon/capture.sh | 590 | def _run_capture(): | CODE |
| LOW | blender_addon/capture.sh | 489 | except Exception as e: | CODE |
| LOW | blender_addon/capture.sh | 502 | except Exception: | CODE |
| LOW | blender_addon/capture.sh | 574 | except Exception as e: | CODE |
| LOW | blender_addon/capture.sh | 596 | except Exception as e: | CODE |
| LOW | blender_addon/capture.sh | 749 | except Exception: | CODE |
| LOW | blender_addon/capture.sh | 760 | except Exception: | CODE |
| LOW | blender_addon/capture.sh | 847 | except Exception as e: | CODE |
| LOW | blender_addon/capture.sh | 1055 | except Exception as e: | CODE |
| 648 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | warmup.py | 821 | except (OSError, Exception): | CODE |
| HIGH | tools/run_suite.py | 1534 | except ProcessLookupError: | CODE |
| HIGH | frontend/_app_.py | 47 | except ImportError: | CODE |
| HIGH | frontend/_mesh_.py | 165 | except BaseException: | CODE |
| HIGH | frontend/_mesh_.py | 1067 | except _sp.TimeoutExpired: | CODE |
| HIGH | frontend/build_worker.py | 191 | except BaseException: | CODE |
| HIGH | frontend/build_worker.py | 516 | except BaseException: | CODE |
| HIGH | frontend/build_worker.py | 92 | except AttributeError: | CODE |
| HIGH | frontend/build_worker.py | 710 | except Exception: | CODE |
| HIGH | frontend/build_worker.py | 772 | except BaseException: | CODE |
| HIGH | frontend/_session_.py | 1493 | except Exception as _: | CODE |
| HIGH | blender_addon/__init__.py | 42 | except Exception: | CODE |
| HIGH | blender_addon/__init__.py | 56 | except Exception: | CODE |
| HIGH | blender_addon/__init__.py | 69 | except Exception: | CODE |
| HIGH | blender_addon/__init__.py | 135 | except Exception: | CODE |
| HIGH | blender_addon/__init__.py | 143 | except Exception: | CODE |
| HIGH | blender_addon/__init__.py | 159 | except Exception: | CODE |
| HIGH | blender_addon/__init__.py | 164 | except Exception: | CODE |
| HIGH | blender_addon/__init__.py | 182 | except Exception: | CODE |
| HIGH | blender_addon/__init__.py | 234 | except Exception: | CODE |
| HIGH | blender_addon/__init__.py | 582 | except Exception: | CODE |
| HIGH | blender_addon/__init__.py | 589 | except Exception: | CODE |
| HIGH | blender_addon/__init__.py | 597 | except Exception: | CODE |
| HIGH | blender_addon/__init__.py | 605 | except ImportError: | CODE |
| HIGH | blender_addon/__init__.py | 464 | except Exception: | CODE |
| HIGH | blender_addon/__init__.py | 250 | except ValueError: | CODE |
| HIGH | blender_addon/__init__.py | 346 | except Exception: | CODE |
| HIGH | blender_addon/ui/perf.py | 227 | except Exception: | CODE |
| HIGH | blender_addon/ui/perf.py | 237 | except Exception: | CODE |
| HIGH | blender_addon/ui/console.py | 25 | except ImportError: | CODE |
| HIGH | blender_addon/ui/jupyter_ops.py | 58 | except Exception: | CODE |
| HIGH | blender_addon/ui/solver.py | 142 | except OSError: | CODE |
| HIGH | blender_addon/ui/solver.py | 279 | except Exception: | CODE |
| HIGH | blender_addon/ui/solver.py | 1568 | except Exception: | CODE |
| HIGH | blender_addon/ui/debug_ops.py | 613 | except Exception: | CODE |
| HIGH | blender_addon/ui/geometry_cleanup_ops.py | 332 | except RuntimeError: | CODE |
| HIGH | blender_addon/ui/geometry_cleanup_ops.py | 91 | except RuntimeError: | CODE |
| HIGH | blender_addon/ui/capture.py | 373 | except ImportError: | CODE |
| HIGH | blender_addon/ui/capture.py | 1324 | except (ValueError, RuntimeError): | CODE |
| HIGH | blender_addon/ui/dynamics/overlay.py | 566 | except Exception: | CODE |
| HIGH | blender_addon/ui/dynamics/overlay.py | 591 | except Exception: | CODE |
| HIGH | blender_addon/ui/dynamics/overlay.py | 492 | except Exception: | CODE |
| HIGH | blender_addon/ui/dynamics/pin_ops.py | 831 | except Exception: | CODE |
| HIGH | blender_addon/ui/dynamics/pin_ops.py | 822 | except Exception: | CODE |
| HIGH | blender_addon/ui/dynamics/export_ops.py | 254 | except (RuntimeError, ReferenceError): | CODE |
| HIGH | blender_addon/ui/dynamics/export_ops.py | 293 | except (RuntimeError, ReferenceError): | CODE |
| HIGH | blender_addon/ui/dynamics/export_ops.py | 240 | except RuntimeError: | CODE |
| HIGH | blender_addon/ui/dynamics/export_ops.py | 250 | except RuntimeError: | CODE |
| HIGH | blender_addon/ui/dynamics/export_ops.py | 284 | except RuntimeError: | CODE |
| HIGH | blender_addon/ui/dynamics/export_ops.py | 289 | except (RuntimeError, ReferenceError): | CODE |
| HIGH | blender_addon/ui/dynamics/export_ops.py | 302 | except (RuntimeError, ReferenceError): | CODE |
| HIGH | blender_addon/ui/dynamics/overlay_labels.py | 102 | except Exception: | CODE |
| HIGH | blender_addon/ui/dynamics/bake_ops.py | 557 | except Exception: | CODE |
| HIGH | blender_addon/ui/dynamics/overlay_geometry/pins.py | 158 | except Exception: | CODE |
| HIGH | blender_addon/ui/dynamics/overlay_geometry/pins.py | 425 | except Exception: | CODE |
| HIGH | blender_addon/core/facade.py | 55 | except Exception: | CODE |
| HIGH | blender_addon/core/facade.py | 668 | except Exception: | CODE |
| HIGH | blender_addon/core/facade.py | 688 | except Exception: | CODE |
| HIGH | blender_addon/core/facade.py | 739 | except ValueError: | CODE |
| HIGH | blender_addon/core/async_op.py | 145 | except (RuntimeError, ReferenceError): | CODE |
| 85 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/backfill_upload_ids.py | 17 | CODE | |
| LOW | tools/clear_notebook_outputs.py | 18 | CODE | |
| LOW | tools/run_suite.py | 41 | CODE | |
| LOW | crates/ppf-cts-formats/tests/scripts/gen_fixtures.py | 22 | CODE | |
| LOW | crates/ppf-cts-py/tests/_python_smoke_.py | 18 | CODE | |
| LOW | frontend/_mesh_.py | 1006 | CODE | |
| LOW | frontend/_cbor_bridge_.py | 14 | CODE | |
| LOW | frontend/__init__.py | 690 | CODE | |
| LOW | frontend/__init__.py | 691 | CODE | |
| LOW | frontend/__init__.py | 692 | CODE | |
| LOW | frontend/__init__.py | 692 | CODE | |
| LOW | frontend/__init__.py | 692 | CODE | |
| LOW | frontend/__init__.py | 693 | CODE | |
| LOW | frontend/__init__.py | 694 | CODE | |
| LOW | frontend/__init__.py | 695 | CODE | |
| LOW | frontend/__init__.py | 695 | CODE | |
| LOW | frontend/__init__.py | 695 | CODE | |
| LOW | frontend/__init__.py | 695 | CODE | |
| LOW | frontend/__init__.py | 696 | CODE | |
| LOW | frontend/__init__.py | 696 | CODE | |
| LOW | frontend/__init__.py | 696 | CODE | |
| LOW | frontend/__init__.py | 696 | CODE | |
| LOW | frontend/__init__.py | 696 | CODE | |
| LOW | frontend/__init__.py | 697 | CODE | |
| LOW | frontend/__init__.py | 698 | CODE | |
| LOW | frontend/__init__.py | 698 | CODE | |
| LOW | frontend/__init__.py | 699 | CODE | |
| LOW | frontend/__init__.py | 699 | CODE | |
| LOW | frontend/__init__.py | 699 | CODE | |
| LOW | frontend/__init__.py | 699 | CODE | |
| LOW | frontend/__init__.py | 699 | CODE | |
| LOW | frontend/__init__.py | 699 | CODE | |
| LOW | frontend/__init__.py | 699 | CODE | |
| LOW | frontend/__init__.py | 699 | CODE | |
| LOW | frontend/__init__.py | 699 | CODE | |
| LOW | frontend/__init__.py | 717 | CODE | |
| LOW | frontend/__init__.py | 717 | CODE | |
| LOW | frontend/__init__.py | 717 | CODE | |
| LOW | frontend/__init__.py | 717 | CODE | |
| LOW | frontend/__init__.py | 717 | CODE | |
| LOW | frontend/__init__.py | 717 | CODE | |
| LOW | frontend/__init__.py | 717 | CODE | |
| LOW | frontend/__init__.py | 717 | CODE | |
| LOW | frontend/__init__.py | 727 | CODE | |
| LOW | frontend/__init__.py | 727 | CODE | |
| LOW | frontend/__init__.py | 727 | CODE | |
| LOW | frontend/_session_inspect_.py | 36 | CODE | |
| LOW | frontend/_session_inspect_.py | 37 | CODE | |
| LOW | frontend/_session_.py | 35 | CODE | |
| LOW | frontend/_session_.py | 35 | CODE | |
| LOW | frontend/_session_.py | 49 | CODE | |
| LOW | frontend/_decoder_.py | 18 | CODE | |
| LOW | frontend/_decoder_.py | 66 | CODE | |
| LOW | frontend/_decoder_.py | 67 | CODE | |
| LOW | frontend/_decoder_.py | 68 | CODE | |
| LOW | frontend/_force_field_.py | 36 | CODE | |
| LOW | frontend/_scene_.py | 40 | CODE | |
| LOW | frontend/_scene_.py | 43 | CODE | |
| LOW | frontend/_scene_.py | 52 | CODE | |
| LOW | frontend/_scene_.py | 52 | CODE | |
| 652 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | frontend/_app_.py | 275 | Ask backend ``name``'s own solver whether it can run on this machine. An unusable answer is not an error: it is | STRING |
| HIGH | frontend/_app_.py | 369 | Recover the fixed session previously saved under ``name``. The session is located via a symlink in the data dir | STRING |
| HIGH | frontend/_plot_.py | 254 | Plot a triangle mesh, optionally with visualized stitch connections. If ``stitch`` is provided, additional vert | STRING |
| HIGH | frontend/_scene_object_.py | 324 | Animate one material parameter over the scene's keyframe times. Args: key (str): The material param | STRING |
| HIGH | frontend/_scene_object_.py | 1359 | Pin a PDRD body as a hinge about one of its principal axes. Filters the body's reduced rigid DOF so its positio | STRING |
| HIGH | frontend/_scene_object_.py | 1399 | Constrain this object's center of mass to a fixed world-space line. The solver restricts the object's mass-weig | STRING |
| HIGH | frontend/_scene_object_.py | 1484 | Restrict this object's rigid rotation to a fixed world-space axis. The solver restricts the object's mass-weigh | STRING |
| HIGH | frontend/_scene_object_.py | 1575 | Flip Lock Rotation between an allow-only axis and a forbidden one. Only meaningful after :meth:`lock_rotation` | STRING |
| HIGH | frontend/_session_inspect_.py | 628 | Get every object's statistics at one output frame. The solver records these for each object at each output fram | STRING |
| HIGH | frontend/_session_inspect_.py | 693 | Get one object's statistic over every frame it was recorded at. Frames where the solver had no value for the ch | STRING |
| HIGH | frontend/_scene_pin_.py | 737 | Put this holder in a named pin group. Every holder starts in a group of its own. Holders that share an id | STRING |
| HIGH | frontend/_scene_pin_.py | 819 | Add a spin operation to the pin. Args: center: Center of rotation. Defaults to [0, 0, 0]. | STRING |
| HIGH | frontend/_scene_pin_.py | 875 | Add a torque operation to the pin. Applies a constant rotational force around a PCA-computed axis. The | STRING |
| HIGH | frontend/_session_.py | 99 | Select an existing session by name. Args: name (str): The name of the session. Defaults to ``"sessi | STRING |
| HIGH | frontend/_session_.py | 120 | Create a new session. If ``name`` is empty, an auto-generated name is used: ``"session"`` for the first | STRING |
| HIGH | frontend/_session_param_.py | 60 | Set a parameter value. If ``value`` is ``None``, the parameter is set to ``True``. Args: k | STRING |
| HIGH | frontend/_session_param_.py | 131 | Select the current dynamic parameter key and move the time cursor to its end. The cursor lands on the last time | STRING |
| HIGH | frontend/_session_param_.py | 165 | Change the value of the dynamic parameter at the current time. Args: value (Any): The new value of | STRING |
| HIGH | frontend/_session_param_.py | 250 | Advance the current time cursor for the dynamic parameter. Args: time (float): The new current time | STRING |
| HIGH | frontend/_session_param_.py | 276 | Get the value of a parameter. Args: key (Optional[str]): The parameter key. Must be specified. | STRING |
| HIGH | frontend/_scene_.py | 2492 | Stitch points on one object to points on another. Each row of ``ind`` and ``w`` is one stitch between a point o | STRING |
| HIGH | frontend/_asset_.py | 384 | Return the type tag of a registered asset. Args: name (str): The name of the asset. Return | STRING |
| HIGH | frontend/_asset_.py | 410 | Return the raw arrays stored for an asset. The keys present in the returned dictionary depend on the asset | STRING |
| HIGH | frontend/_asset_.py | 445 | Return the vertex and face arrays of a triangle mesh asset. Args: name (str): The name of the asset | STRING |
| HIGH | frontend/_asset_.py | 473 | Return the arrays of a tetrahedral mesh asset. Args: name (str): The name of the asset. Re | STRING |
| HIGH | frontend/_asset_.py | 501 | Return the vertex and edge arrays of a rod mesh asset. Args: name (str): The name of the asset. | STRING |
| HIGH | frontend/_asset_.py | 530 | Return the index and weight arrays of a stitch asset. Args: name (str): The name of the asset. | STRING |
| HIGH | blender_addon/core/connection.py | 747 | Spawn a fresh win_native ``ppf-cts-server.exe`` subprocess and return the Popen. Used by both initial connect and t | STRING |
| HIGH | blender_addon/core/connection.py | 903 | Connect using Windows native build. The *root* path must be the project root directory where ``ppf-cts-server.e | STRING |
| HIGH | blender_addon/core/connection.py | 1499 | Spawn a fresh mac_native ``ppf-cts-server`` subprocess and return the Popen. Used by both initial connect and the S | STRING |
| HIGH | blender_addon/core/connection.py | 1651 | Connect using the macOS native build. The *root* path must be the project root directory where ``ppf-cts-server | STRING |
| HIGH | blender_addon/core/connection.py | 1724 | Spawn a fresh linux_native ``ppf-cts-server`` subprocess and return the Popen. Used by both initial connect and the | STRING |
| HIGH | blender_addon/core/connection.py | 1878 | Connect using a Linux build on this machine. The *root* path must be the project root directory where ``ppf-cts-ser | STRING |
| HIGH | blender_addon/mcp/decorators.py | 51 | Parse function docstring to extract description and parameter info. Args: func: Function to parse docstring | STRING |
| HIGH | blender_addon/mcp/decorators.py | 302 | Validate and convert arguments based on function signature. Args: func: Function to validate arguments for | STRING |
| HIGH | blender_addon/ops/api/pin.py | 326 | Drive this pin through a per-frame sequence of mesh vertex positions. The same cache Capture Deformation writes | STRING |
| HIGH | blender_addon/ops/api/solver.py | 110 | Look up a group by UUID. Args: group_uuid: UUID string of the group. Returns: | STRING |
| HIGH | blender_addon/ops/api/solver.py | 327 | Compile the force field script on the running server and wait for the answer, as the panel's **Compile and Check | STRING |
| HIGH | blender_addon/ops/api/solver.py | 421 | Translate *object_a* so its nearest vertex lands on *object_b*. Args: object_a: Name of the mesh th | STRING |
| HIGH | blender_addon/ops/api/solver.py | 459 | Report the geometry the solver rejects, modifying nothing. Args: *object_names: One or more mesh ob | STRING |
| HIGH | blender_addon/ops/api/solver.py | 554 | Weld near-coincident vertices. Changes the vertex count. A surviving pair sits far inside the contact gap, whe | STRING |
| HIGH | blender_addon/ops/api/solver.py | 605 | Delete vertices that belong to no face. Changes the vertex count. The solver averages a vertex's contact param | STRING |
| HIGH | blender_addon/ops/api/solver.py | 652 | Collapse zero-area faces and zero-length edges. Changes the vertex count. A face with no area has no defined | STRING |
| HIGH | blender_addon/ops/api/solver.py | 698 | Delete faces that repeat an existing face's vertex set. Two faces on the same vertices contribute their contact | STRING |
| HIGH | blender_addon/ops/api/solver.py | 730 | Triangulate every face with more than three corners. Transfer triangulates on its own at encode time, so this i | STRING |
| HIGH | blender_addon/ops/api/solver.py | 766 | Make face winding consistent and outward. Inconsistent winding flips the normal a face contributes, which | STRING |
| HIGH | blender_addon/ops/api/solver.py | 799 | Triangulate by poking each face, keeping the mesh symmetric. A single-diagonal triangulation breaks a mirror-sy | STRING |
| HIGH | blender_addon/ops/api/solver.py | 843 | Replace a solid mesh with the grain cloud a SAND group simulates. Destructive: the faces are discarded and the | STRING |
| HIGH | blender_addon/ops/api/solver.py | 899 | Mark two objects to be merged at their shared contact. Args: object_a: Name of the first mesh. | STRING |
| HIGH | blender_addon/ops/api/solver.py | 925 | Remove a previously added merge pair. The ordering of *object_a* and *object_b* does not matter; the pa | STRING |
| HIGH | blender_addon/ops/api/solver.py | 982 | Add an invisible infinite-plane wall collider. Args: position: ``(x, y, z)`` world-space point on t | STRING |
| HIGH | blender_addon/ops/api/solver.py | 1009 | Add an invisible sphere collider. Args: position: ``(x, y, z)`` world-space center. rad | STRING |
| HIGH | blender_addon/ops/api/solver.py | 1165 | Export the simulated mesh sequence as a USD cache. A lighter result than baking shape keys: the deformation is | STRING |
| HIGH | blender_addon/ops/api/solver.py | 1204 | Export the simulated mesh sequence as an Alembic (ABC) cache. A lighter result than baking shape keys: the defo | STRING |
| HIGH | blender_addon/ops/api/curve.py | 69 | Append a Bezier spline with AUTO handles. Args: points: Iterable of ``(x, y, z)`` control-point coo | STRING |
| HIGH | blender_addon/ops/api/curve.py | 99 | Bind a material to a spline by index. The material is appended to the curve's slots if it isn't already | STRING |
| HIGH | blender_addon/ops/api/group.py | 367 | Keyframe a velocity on an object assigned to this group. Appends an entry to the assigned object's ``ve | STRING |
| HIGH | blender_addon/ops/api/group.py | 467 | Pin a PDRD body assigned to this group as a hinge (per object). Locks the body's position and restricts its rot | STRING |
| HIGH | blender_addon/ops/api/group.py | 528 | Pin a vertex group (mesh) or set of control points (curve). Args: object_name: Name of the mesh or | STRING |
| HIGH | blender_addon/ops/api/collider.py | 152 | Advance the keyframe cursor. Args: frame: Target frame (must be strictly greater than the current | STRING |
| 3 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | crates/ppf-cts-solver/src/statistics.rs | 154 | let static_masses = dataset.constraint.mesh.prop.vertex.as_slice(); | CODE |
| CRITICAL | crates/ppf-cts-solver/src/builder.rs | 1867 | for (i, face_neighbors) in mesh.mesh.neighbor.hinge.face.iter().enumerate() { | CODE |
| CRITICAL | crates/ppf-cts-solver/src/builder.rs | 2291 | for i in rod_count..edge_props.len().min(mesh.mesh.neighbor.edge.face.len()) { | CODE |
| CRITICAL | crates/ppf-cts-solver/src/builder.rs | 2309 | if j >= mesh.mesh.neighbor.vertex.face.len() | CODE |
| CRITICAL | crates/ppf-cts-solver/src/driver/plasticity.rs | 1537 | self.scene.data.prop.hinge.as_slice()[0].rest_angle | CODE |
| CRITICAL | crates/ppf-cts-solver/src/driver/plasticity.rs | 1601 | hinge.scene.data.prop.hinge.as_mut_slice()[0].fixed = true; | CODE |
| CRITICAL | crates/ppf-cts-solver/src/driver/plasticity.rs | 1612 | hinge.scene.data.prop.hinge.as_mut_slice()[0].rest_angle = angle; | CODE |
| CRITICAL | crates/ppf-cts-solver/src/driver/plasticity.rs | 1775 | self.scene.data.prop.vertex.as_slice()[1].rest_bend_angle | CODE |
| CRITICAL | crates/ppf-cts-solver/src/driver/assemble.rs | 2578 | &mut self.scene.data.prop.tet.as_mut_slice()[0] | CODE |
| CRITICAL | crates/ppf-cts-solver/src/driver/assemble.rs | 3775 | fixture.scene.data.prop.face.as_mut_slice()[0].collider = true; | CODE |
| CRITICAL | crates/ppf-cts-solver/src/driver/assemble.rs | 4689 | &mut self.scene.data.prop.hinge.as_mut_slice()[0] | CODE |
| CRITICAL | crates/ppf-cts-solver/src/driver/assemble.rs | 4694 | let curr = self.scene.data.vertex.curr.as_slice(); | CODE |
| CRITICAL | crates/ppf-cts-solver/src/driver/assemble.rs | 5317 | fixture.scene.data.mesh.ttype.hinge.as_mut_slice()[0] = 1; | CODE |
| CRITICAL | crates/ppf-cts-solver/src/driver/assemble.rs | 5409 | damped.scene.data.param_arrays.hinge.as_mut_slice()[0].bend_damping = BETA; | CODE |
| CRITICAL | crates/ppf-cts-solver/src/driver/assemble.rs | 6037 | fixture.scene.data.prop.edge.as_mut_slice()[0].fixed = true; | CODE |
| CRITICAL | crates/ppf-cts-solver/src/driver/assemble.rs | 6143 | fixture.scene.data.prop.edge.as_mut_slice()[0].length = 0.0; | CODE |
| CRITICAL | crates/ppf-cts-solver/src/driver/assemble.rs | 6508 | for vertex in fixture.scene.data.prop.vertex.as_mut_slice() { | CODE |
| CRITICAL | crates/ppf-cts-solver/src/driver/assemble.rs | 6594 | fixture.scene.data.prop.vertex.as_mut_slice()[1].fix_index = 1; | CODE |
| CRITICAL | crates/ppf-cts-solver/src/driver/assemble.rs | 6937 | let curr = self.scene.data.vertex.curr.as_slice(); | CODE |
| CRITICAL | crates/ppf-cts-solver/src/driver/assemble.rs | 7214 | fixture.scene.data.prop.face.as_mut_slice()[0].collider = true; | CODE |
| CRITICAL | crates/ppf-cts-solver/src/driver/assemble.rs | 7237 | let prop = &mut fixture.scene.data.prop.face.as_mut_slice()[0]; | CODE |
| CRITICAL | crates/ppf-cts-solver/src/driver/assemble.rs | 7586 | restless.scene.data.prop.edge.as_mut_slice()[0].initial_length = 0.0; | CODE |
| CRITICAL | crates/ppf-cts-solver/src/driver/assemble.rs | 7861 | 0 => fixture.scene.data.prop.face.as_mut_slice()[0].collider = true, | CODE |
| CRITICAL | crates/ppf-cts-solver/src/driver/assemble.rs | 7862 | 1 => fixture.scene.data.prop.face.as_mut_slice()[0].fixed = true, | CODE |
| CRITICAL | blender_addon/ops/api/curve.py | 145 | bpy.context.scene.collection.objects.link(obj) | CODE |
| CRITICAL | blender_addon/debug/scenarios/bl_force_field_check.py | 115 | bpy.context.scene.collection.children.link(coll) | CODE |
| CRITICAL | examples/blender/five-twist.py | 140 | bpy.context.scene.collection.objects.link(obj) | CODE |
| CRITICAL | examples/blender/pdrd_chain.py | 118 | bpy.context.scene.collection.objects.link(obj) | CODE |
| CRITICAL | examples/blender/cards.py | 145 | bpy.context.scene.collection.objects.link(obj) | CODE |
| CRITICAL | examples/blender/cards.py | 232 | bpy.context.scene.collection.objects.link(sphere_obj) | CODE |
| CRITICAL | examples/blender/character-anim.py | 182 | bpy.context.scene.collection.objects.link(obj) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/run_suite.py | 1103 | 1. Restore with `cp $S.orig $S && rm $S.orig` and rebuild, then re-run | STRING |
| HIGH | crates/ppf-cts-compute/seam/kernelgen.py | 100 | # barrier names `seam_host.h` deliberately leaves undefined, and a SERIAL TWIN | COMMENT |
| HIGH | crates/ppf-cts-compute/seam/kernelgen.py | 272 | # seam leaves `compute::threadgroup_barrier` undefined, so such a body is | COMMENT |
| HIGH | crates/ppf-cts-compute/seam/kernelgen.py | 2953 | f" if (args.{count} == 0 || seam_group_width == 0) {{\n" | CODE |
| HIGH | crates/ppf-cts-compute/seam/kernelgen.py | 3269 | "// seam leaves compute::threadgroup_barrier undefined, so it is " | CODE |
| HIGH | frontend/_session_inspect_.py | 341 | """Walk every plausible source root for `// Name:` / `logging.push("...")` | STRING |
| HIGH | frontend/_parse_.py | 13 | ``logging.push("...")`` entries in ``.cu`` and ``.rs`` files and | STRING |
| HIGH | frontend/tests/_device_diagnostics_.py | 55 | # to every command buffer that dispatches, so its header is never null, and its | COMMENT |
| HIGH⚡ | blender_addon/core/server_kill.py | 266 | f'for p in $(pgrep -f "{name}.*--port $PORT([^0-9]|$)" 2>/dev/null); do ' | CODE |
| HIGH⚡ | blender_addon/core/server_kill.py | 267 | f'case "$(ps -o comm= -p $p 2>/dev/null)" in *{name}*) PIDS="$PIDS $p";; esac; ' | CODE |
| HIGH⚡ | blender_addon/core/server_kill.py | 270 | '[ -n "$PIDS" ] && kill $PIDS 2>/dev/null; ' | CODE |
| HIGH⚡ | blender_addon/core/server_kill.py | 272 | 'for p in $PIDS; do kill -0 $p 2>/dev/null && LEFT="$LEFT $p"; done; ' | CODE |
| HIGH⚡ | blender_addon/core/server_kill.py | 274 | '[ -n "$LEFT" ] && kill -9 $LEFT 2>/dev/null; ' | CODE |
| HIGH⚡ | blender_addon/core/server_kill.py | 276 | 'for p in $PIDS; do kill -0 $p 2>/dev/null && LEFT="$LEFT $p"; done; ' | CODE |
| HIGH | blender_addon/core/profile.py | 355 | # TOML has no null; emit an empty string so loader round-trips produce | COMMENT |
| HIGH | blender_addon/core/remote_builds.py | 131 | f'"$(cat {marker} 2>/dev/null)" ' | CODE |
| HIGH | blender_addon/mcp/http_handler.py | 147 | # host (e.g. Origin: null, file://) is rejected. | COMMENT |
| HIGH | blender_addon/debug/scenarios/_runner.py | 208 | 35448531061's Windows shard: cp1252 leaves byte 0x8d undefined, a tqdm | STRING |
| HIGH | docs/tools/restructure_workflow.py | 288 | print("\nDone. Clean build recommended: rm -rf docs/_build && docs/build.sh") | CODE |
| HIGH | .github/workflows/scripts/run-all-once-gen.py | 197 | if ! kill -0 "$TUNNEL_PID" 2>/dev/null; then | CODE |
| HIGH | .github/workflows/scripts/run-all-once-gen.py | 214 | kill "$TUNNEL_PID" 2>/dev/null || true | CODE |
| HIGH | .github/workflows/scripts/run-all-once-gen.py | 215 | wait "$TUNNEL_PID" 2>/dev/null || true | CODE |
| HIGH | .github/workflows/scripts/run-all-once-gen.py | 248 | if command -v nvidia-smi &> /dev/null; then | CODE |
| HIGH⚡ | .github/workflows/scripts/run-all-once-gen.py | 328 | ubuntu@localhost "test -f /tmp/setup-complete && echo READY" 2>/dev/null | grep -q READY; then | CODE |
| HIGH⚡ | .github/workflows/scripts/run-all-once-gen.py | 330 | kill $TUNNEL_PID 2>/dev/null || true | CODE |
| HIGH⚡ | .github/workflows/scripts/run-all-once-gen.py | 334 | kill $TUNNEL_PID 2>/dev/null || true | CODE |
| HIGH⚡ | .github/workflows/scripts/run-all-once-gen.py | 356 | trap 'kill "$TUNNEL_PID" 2>/dev/null || true' EXIT | CODE |
| HIGH⚡ | .github/workflows/scripts/run-all-once-gen.py | 365 | "cd ${{{{env.WORKDIR}}}} && tar -xzf repo.tar.gz && rm repo.tar.gz" | CODE |
| HIGH⚡ | .github/workflows/scripts/run-all-once-gen.py | 373 | trap 'kill "$TUNNEL_PID" 2>/dev/null || true' EXIT | CODE |
| HIGH | .github/workflows/scripts/run-all-once-gen.py | 396 | ls -d /usr/local/cuda-* 2>/dev/null | sed 's/^/ /' >&2 || true | CODE |
| HIGH | .github/workflows/scripts/run-all-once-gen.py | 440 | trap 'kill "$TUNNEL_PID" 2>/dev/null || true' EXIT | CODE |
| HIGH | .github/workflows/scripts/run-all-once-gen.py | 488 | trap 'kill "$TUNNEL_PID" 2>/dev/null || true' EXIT | CODE |
| HIGH | .github/workflows/scripts/run-all-once-gen.py | 507 | trap 'kill "$TUNNEL_PID" 2>/dev/null || true' EXIT | CODE |
| HIGH | .github/workflows/scripts/run-all-once-gen.py | 540 | trap 'kill "$TUNNEL_PID" 2>/dev/null || true' EXIT | CODE |
| HIGH | .github/workflows/scripts/run-all-once-gen.py | 592 | trap 'kill "$TUNNEL_PID" 2>/dev/null || true' EXIT | CODE |
| HIGH | .github/workflows/scripts/run-all-once-gen.py | 636 | trap 'kill "$TUNNEL_PID" 2>/dev/null || true' EXIT | CODE |
| HIGH⚡ | .github/workflows/scripts/run-all-once-gen-win.py | 227 | if nc -z localhost 2222 2>/dev/null; then | CODE |
| HIGH⚡ | .github/workflows/scripts/run-all-once-gen-win.py | 229 | kill $TUNNEL_PID 2>/dev/null || true | CODE |
| HIGH⚡ | .github/workflows/scripts/run-all-once-gen-win.py | 233 | kill $TUNNEL_PID 2>/dev/null || true | CODE |
| HIGH | .github/workflows/scripts/run-all-once-gen-win.py | 266 | kill $TUNNEL_PID 2>/dev/null || true | CODE |
| HIGH | .github/workflows/scripts/run-all-once-gen-win.py | 293 | kill $TUNNEL_PID 2>/dev/null || true | CODE |
| HIGH | .github/workflows/scripts/run-all-once-gen-win.py | 311 | "cmd /c 'cd C:\\\\ppf-contact-solver\\\\build-win-native && call warmup.bat /nopause'" | CODE |
| HIGH | .github/workflows/scripts/run-all-once-gen-win.py | 314 | kill $TUNNEL_PID 2>/dev/null || true | CODE |
| HIGH | .github/workflows/scripts/run-all-once-gen-win.py | 359 | "cmd /c 'cd C:\\\\ppf-contact-solver\\\\build-win-native && call build.bat /nopause'" | CODE |
| HIGH | .github/workflows/scripts/run-all-once-gen-win.py | 362 | kill $TUNNEL_PID 2>/dev/null || true | CODE |
| HIGH | .github/workflows/scripts/run-all-once-gen-win.py | 388 | kill $TUNNEL_PID 2>/dev/null || true | CODE |
| HIGH | .github/workflows/scripts/run-all-once-gen-win.py | 427 | kill $TUNNEL_PID 2>/dev/null || true | CODE |
| HIGH | .github/workflows/scripts/run-all-once-gen-win.py | 477 | kill $TUNNEL_PID 2>/dev/null || true | CODE |
| HIGH | .github/workflows/scripts/run-all-once-gen-win.py | 514 | kill $TUNNEL_PID 2>/dev/null || true | CODE |
| HIGH | build-win-native/scripts/test_backend_e2e.py | 21 | set T2_ROOT=C:\\ppf-contact-solver\\build-win-native\\dist && set T2_PORT=9092 && \\ | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | warmup.py | 31 | CODE | |
| LOW | warmup.py | 386 | CODE | |
| LOW | warmup.py | 686 | CODE | |
| LOW | warmup.py | 871 | CODE | |
| LOW | tools/cpu_contact_fixture.py | 139 | CODE | |
| LOW | tools/run_suite.py | 1649 | CODE | |
| LOW | crates/ppf-cts-compute/metal/entry_harness.py | 58 | CODE | |
| LOW | crates/ppf-cts-compute/seam/kernelgen.py | 758 | CODE | |
| LOW | crates/ppf-cts-compute/seam/kernelgen.py | 1051 | CODE | |
| LOW | crates/ppf-cts-compute/seam/kernelgen.py | 1206 | CODE | |
| LOW | crates/ppf-cts-compute/seam/kernelgen.py | 2092 | CODE | |
| LOW | crates/ppf-cts-compute/seam/kernelgen.py | 3325 | CODE | |
| LOW | crates/ppf-cts-compute/seam/kernelgen.py | 3523 | CODE | |
| LOW | crates/ppf-cts-compute/seam/kernelgen.py | 3699 | CODE | |
| LOW | crates/ppf-cts-compute/seam/kernelgen.py | 3759 | CODE | |
| LOW | crates/ppf-cts-compute/seam/kernelgen.py | 3785 | CODE | |
| LOW | crates/ppf-cts-compute/seam/kernelgen.py | 4456 | CODE | |
| LOW | crates/ppf-cts-compute/seam/kernelgen.py | 4551 | CODE | |
| LOW | crates/ppf-cts-compute/seam/kernelgen.py | 4592 | CODE | |
| LOW | crates/ppf-cts-compute/seam/kernelgen.py | 4609 | CODE | |
| LOW | crates/ppf-cts-compute/seam/kernelgen.py | 4663 | CODE | |
| LOW | crates/ppf-cts-compute/seam/kernelgen.py | 4687 | CODE | |
| LOW | crates/ppf-cts-compute/seam/kernelgen.py | 4755 | CODE | |
| LOW | crates/ppf-cts-compute/seam/kernelgen.py | 5033 | CODE | |
| LOW | crates/ppf-cts-compute/seam/kernelgen.py | 5114 | CODE | |
| LOW | crates/ppf-cts-compute/seam/kernelgen.py | 5239 | CODE | |
| LOW | crates/ppf-cts-compute/seam/kernelgen.py | 5298 | CODE | |
| LOW | crates/ppf-cts-compute/seam/kernelgen.py | 5371 | CODE | |
| LOW | crates/ppf-cts-compute/seam/kernelgen.py | 5448 | CODE | |
| LOW | build-linux-native/scripts/elf-audit.py | 181 | CODE | |
| LOW | frontend/_mesh_.py | 912 | CODE | |
| LOW | frontend/_plot_.py | 425 | CODE | |
| LOW | frontend/_scene_object_.py | 680 | CODE | |
| LOW | frontend/_session_inspect_.py | 253 | CODE | |
| LOW | frontend/_scene_pin_.py | 482 | CODE | |
| LOW | frontend/build_worker.py | 570 | CODE | |
| LOW | frontend/_session_.py | 608 | CODE | |
| LOW | frontend/_session_.py | 991 | CODE | |
| LOW | frontend/_session_.py | 1073 | CODE | |
| LOW | frontend/_session_.py | 1229 | CODE | |
| LOW | frontend/_session_.py | 1369 | CODE | |
| LOW | frontend/_session_.py | 1497 | CODE | |
| LOW | frontend/_session_.py | 1302 | CODE | |
| LOW | frontend/_session_.py | 1536 | CODE | |
| LOW | frontend/_session_.py | 1460 | CODE | |
| LOW | frontend/_decoder_.py | 230 | CODE | |
| LOW | frontend/_decoder_.py | 592 | CODE | |
| LOW | frontend/_decoder_.py | 991 | CODE | |
| LOW | frontend/_decoder_.py | 1049 | CODE | |
| LOW | frontend/_decoder_.py | 1171 | CODE | |
| LOW | frontend/_decoder_.py | 1534 | CODE | |
| LOW | frontend/_decoder_.py | 1645 | CODE | |
| LOW | frontend/_decoder_.py | 2277 | CODE | |
| LOW | frontend/_decoder_.py | 3094 | CODE | |
| LOW | frontend/_decoder_.py | 3246 | CODE | |
| LOW | frontend/_decoder_.py | 3436 | CODE | |
| LOW | frontend/_decoder_.py | 3916 | CODE | |
| LOW | frontend/_noise_.py | 53 | CODE | |
| LOW | frontend/_force_field_.py | 781 | CODE | |
| LOW | frontend/_force_field_.py | 817 | CODE | |
| 219 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | frontend/_session_.py | 1454 | # Create the interactive slider | COMMENT |
| MEDIUM | frontend/tests/_self_intersection_.py | 328 | # Create a flat sheet (dynamic) and a sphere (static collider) that intersect | COMMENT |
| MEDIUM | blender_addon/core/transitions.py | 10 | # This module is the **single source of truth** for every state change in the | COMMENT |
| MEDIUM | blender_addon/core/encoder/mesh.py | 228 | # Create a simple hash key using group type and UUID | COMMENT |
| MEDIUM | blender_addon/mcp/blender_handlers.py | 68 | # Create a safe execution environment with common Blender modules | COMMENT |
| MEDIUM | blender_addon/ops/zozo_contact_solver.py | 158 | # Create the class | COMMENT |
| MEDIUM | .github/workflows/yarn.yml | 533 | # Create the runnable script with proper imports | COMMENT |
| MEDIUM | .github/workflows/trampoline.yml | 533 | # Create the runnable script with proper imports | COMMENT |
| MEDIUM | .github/workflows/codim.yml | 533 | # Create the runnable script with proper imports | COMMENT |
| MEDIUM | .github/workflows/belt.yml | 533 | # Create the runnable script with proper imports | COMMENT |
| MEDIUM | .github/workflows/ribbon.yml | 533 | # Create the runnable script with proper imports | COMMENT |
| MEDIUM | .github/workflows/cards.yml | 533 | # Create the runnable script with proper imports | COMMENT |
| MEDIUM | .github/workflows/fitting.yml | 533 | # Create the runnable script with proper imports | COMMENT |
| MEDIUM | .github/workflows/domino.yml | 533 | # Create the runnable script with proper imports | COMMENT |
| MEDIUM | .github/workflows/stack.yml | 533 | # Create the runnable script with proper imports | COMMENT |
| MEDIUM | .github/workflows/run-all-once.yml | 494 | # Create the runnable script with proper imports (using printf to avoid nested heredoc) | COMMENT |
| MEDIUM | .github/workflows/run-all-once.yml | 538 | # Create the runnable script with proper imports (using printf to avoid nested heredoc) | COMMENT |
| MEDIUM | .github/workflows/run-all-once.yml | 582 | # Create the runnable script with proper imports (using printf to avoid nested heredoc) | COMMENT |
| MEDIUM | .github/workflows/run-all-once.yml | 626 | # Create the runnable script with proper imports (using printf to avoid nested heredoc) | COMMENT |
| MEDIUM | .github/workflows/run-all-once.yml | 670 | # Create the runnable script with proper imports (using printf to avoid nested heredoc) | COMMENT |
| MEDIUM | .github/workflows/run-all-once.yml | 1250 | # Create the runnable script with proper imports (using printf to avoid nested heredoc) | COMMENT |
| MEDIUM | .github/workflows/run-all-once.yml | 1294 | # Create the runnable script with proper imports (using printf to avoid nested heredoc) | COMMENT |
| MEDIUM | .github/workflows/run-all-once.yml | 1338 | # Create the runnable script with proper imports (using printf to avoid nested heredoc) | COMMENT |
| MEDIUM | .github/workflows/run-all-once.yml | 1382 | # Create the runnable script with proper imports (using printf to avoid nested heredoc) | COMMENT |
| MEDIUM | .github/workflows/run-all-once.yml | 1962 | # Create the runnable script with proper imports (using printf to avoid nested heredoc) | COMMENT |
| MEDIUM | .github/workflows/run-all-once.yml | 2006 | # Create the runnable script with proper imports (using printf to avoid nested heredoc) | COMMENT |
| MEDIUM | .github/workflows/run-all-once.yml | 2050 | # Create the runnable script with proper imports (using printf to avoid nested heredoc) | COMMENT |
| MEDIUM | .github/workflows/run-all-once.yml | 2094 | # Create the runnable script with proper imports (using printf to avoid nested heredoc) | COMMENT |
| MEDIUM | .github/workflows/run-all-once.yml | 2674 | # Create the runnable script with proper imports (using printf to avoid nested heredoc) | COMMENT |
| MEDIUM | .github/workflows/run-all-once.yml | 2718 | # Create the runnable script with proper imports (using printf to avoid nested heredoc) | COMMENT |
| MEDIUM | .github/workflows/run-all-once.yml | 2762 | # Create the runnable script with proper imports (using printf to avoid nested heredoc) | COMMENT |
| MEDIUM | .github/workflows/run-all-once.yml | 2806 | # Create the runnable script with proper imports (using printf to avoid nested heredoc) | COMMENT |
| MEDIUM | .github/workflows/run-all-once.yml | 3386 | # Create the runnable script with proper imports (using printf to avoid nested heredoc) | COMMENT |
| MEDIUM | .github/workflows/run-all-once.yml | 3430 | # Create the runnable script with proper imports (using printf to avoid nested heredoc) | COMMENT |
| MEDIUM | .github/workflows/run-all-once.yml | 3474 | # Create the runnable script with proper imports (using printf to avoid nested heredoc) | COMMENT |
| MEDIUM | .github/workflows/run-all-once.yml | 3518 | # Create the runnable script with proper imports (using printf to avoid nested heredoc) | COMMENT |
| MEDIUM | .github/workflows/five-twist.yml | 533 | # Create the runnable script with proper imports | COMMENT |
| MEDIUM | .github/workflows/friction.yml | 533 | # Create the runnable script with proper imports | COMMENT |
| MEDIUM | .github/workflows/woven.yml | 533 | # Create the runnable script with proper imports | COMMENT |
| MEDIUM | .github/workflows/roller.yml | 533 | # Create the runnable script with proper imports | COMMENT |
| MEDIUM | .github/workflows/hang.yml | 533 | # Create the runnable script with proper imports | COMMENT |
| MEDIUM | .github/workflows/fishingknot.yml | 533 | # Create the runnable script with proper imports | COMMENT |
| MEDIUM | .github/workflows/trapped.yml | 533 | # Create the runnable script with proper imports | COMMENT |
| MEDIUM | .github/workflows/drape.yml | 533 | # Create the runnable script with proper imports | COMMENT |
| MEDIUM | .github/workflows/needle.yml | 533 | # Create the runnable script with proper imports | COMMENT |
| MEDIUM | .github/workflows/noodle.yml | 533 | # Create the runnable script with proper imports | COMMENT |
| MEDIUM | .github/workflows/twist.yml | 533 | # Create the runnable script with proper imports | COMMENT |
| MEDIUM | .github/workflows/curtain.yml | 533 | # Create the runnable script with proper imports | COMMENT |
| MEDIUM | .github/workflows/template/aws-template.yml | 533 | # Create the runnable script with proper imports | COMMENT |
| MEDIUM | .github/workflows/scripts/run-all-once-gen.py | 557 | # Create the runnable script with proper imports (using printf to avoid nested heredoc) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tools/run_suite.py | 16 | # exits 0. So this harness reads the OUTPUT: how many frames landed, against how | COMMENT |
| MEDIUM | tools/run_suite.py | 53 | # TREE. `HERE` is this harness's own data, the execution-shape reference and the | COMMENT |
| MEDIUM | tools/run_suite.py | 58 | # distribution they are not, because no distribution ships this harness: it then | COMMENT |
| MEDIUM | tools/run_suite.py | 1891 | # harness swallows, so without this a solver abort reads as a bare | COMMENT |
| MEDIUM | tools/run_suite.py | 1794 | except Exception as exc: # a harness fault must not be read as a scene failure | CODE |
| LOW | crates/ppf-cts-solver/src/signal_sidecar.rs | 176 | /// # Why it cannot simply return when it finds no entry | COMMENT |
| MEDIUM | crates/ppf-cts-py/Cargo.toml | 26 | # Rust test/doctest harness for this crate fails to link (`undefined | COMMENT |
| MEDIUM | crates/ppf-cts-py/Cargo.toml | 28 | # crate instead, so disable the cargo test harness. Without this, now that | COMMENT |
| MEDIUM | build-linux-native/scripts/verify-distribution.sh | 25 | # EITHER SCENE OPTION ALSO NEEDS `run_suite.py` NEXT TO THIS SCRIPT. The harness | COMMENT |
| MEDIUM | build-linux-native/scripts/verify-distribution.sh | 392 | # the repository the harness came from. | COMMENT |
| MEDIUM | frontend/build_worker.py | 93 | # A harness may substitute a stream that is not a TextIOWrapper. | COMMENT |
| MEDIUM | frontend/_decoder_.py | 2331 | # (robust to re-tetrahedralization). Closest-vertex search | COMMENT |
| MEDIUM | calibration/cantilever_bend/cantilever_bend.py | 17 | # as the drape harness (it imports them from cusick_drape), so a strip uses | COMMENT |
| MEDIUM | calibration/cantilever_bend/cantilever_bend.py | 33 | # Reuse the drape harness's preset loading and wire-param mapping. | COMMENT |
| MEDIUM | calibration/cusick_drape/cusick_drape.py | 7 | # Cusick drape-test harness for the bundled fabric presets. | COMMENT |
| MEDIUM | calibration/cusick_drape/cusick_drape.py | 76 | # Default simulation length. The harness pins fps = 1/dt (see run_drape) so one | COMMENT |
| MEDIUM | calibration/tensile/tensile.py | 7 | # Tensile / stretch harness for the bundled fabric presets: calibrates the | COMMENT |
| MEDIUM | calibration/tensile/tensile.py | 23 | # the limit the elongation reports the cap, not the modulus. The harness | COMMENT |
| MEDIUM | blender_addon/core/profile.py | 563 | # robust to object/VG renames. Readable display key stays for | COMMENT |
| LOW | blender_addon/mcp/decorators.py | 167 | # Optional[T] / 'T | None' -> just use T | COMMENT |
| MEDIUM | blender_addon/debug/orchestrator.py | 613 | # Reuse the harness's cross-platform tree-kill so server-only and | COMMENT |
| MEDIUM | blender_addon/debug/orchestrator.py | 774 | # Bring up Blender if the scenario asked for it. The harness is | COMMENT |
| MEDIUM | blender_addon/debug/blender_harness.py | 17 | # The harness exposes a thin interface on top of the existing debug | COMMENT |
| MEDIUM | blender_addon/debug/scenarios/bl_static_fcurve_anim.py | 63 | # Backend-agnostic: the assertions below are robust invariants (finite PC2, | COMMENT |
| MEDIUM | …nder_addon/debug/scenarios/_world_scaling_kinematic.py | 9 | # These reuse the per-pin-op fidelity harness in | COMMENT |
| MEDIUM | …nder_addon/debug/scenarios/_world_scaling_kinematic.py | 16 | # The ONLY thing these add on top of the fidelity harness is setting | COMMENT |
| MEDIUM | blender_addon/debug/scenarios/bl_solid_solid_stitch.py | 50 | # Backend-agnostic: the assertions below are robust invariants (finite PC2, | COMMENT |
| MEDIUM | blender_addon/debug/scenarios/bl_static_stitch.py | 51 | # Backend-agnostic: the assertions below are robust invariants (finite PC2, | COMMENT |
| MEDIUM | blender_addon/debug/scenarios/bl_static_op_anim.py | 81 | # Backend-agnostic: the assertions below are robust invariants (finite PC2, | COMMENT |
| MEDIUM | blender_addon/debug/scenarios/bl_chain_param_repeat.py | 4 | # value (verified by fetch + PC2 inspection in the chain harness). | COMMENT |
| MEDIUM | blender_addon/debug/scenarios/bl_ssh_remote_solid.py | 22 | # and the free bottom lags it, a robust invariant on the real deformable | COMMENT |
| MEDIUM | …nder_addon/debug/scenarios/bl_mac_native_real_solve.py | 14 | # is set in the harness env), so the addon attaches to the server already | COMMENT |
| MEDIUM | …ender_addon/debug/scenarios/bl_addon_reload_handoff.py | 210 | # The harness does not start it for us (blender_harness.spawn | COMMENT |
| MEDIUM | …addon/debug/scenarios/bl_solid_fix_weight_threshold.py | 44 | # Backend-agnostic: the assertions below are robust invariants (finite PC2, | COMMENT |
| MEDIUM | blender_addon/debug/scenarios/bl_shell_static_stitch.py | 36 | # Backend-agnostic: the assertions below are robust invariants (finite PC2, | COMMENT |
| MEDIUM | …n/debug/scenarios/bl_self_intersection_build_reject.py | 293 | # primitive + label text keeps this robust to color/alpha tweaks. | COMMENT |
| MEDIUM | blender_addon/debug/scenarios/_chain_lib.py | 10 | # fragment) inside its driver to set up the harness: | COMMENT |
| MEDIUM | blender_addon/debug/scenarios/_chain_lib.py | 16 | # * ``run_steps(harness, sequence)`` — invokes each named step and | COMMENT |
| MEDIUM | …/debug/scenarios/bl_cleanup_respects_user_obj_color.py | 23 | # 0.0s timer: the harness runs the whole driver body in one exec() on the | COMMENT |
| MEDIUM | blender_addon/debug/scenarios/bl_transition_chains.py | 141 | # harness's 600s result cap, so the scenario reads as an opaque 600s | COMMENT |
| MEDIUM | blender_addon/debug/scenarios/bl_export_cache.py | 292 | # axis reorientation, so this is a robust content check). | COMMENT |
| MEDIUM | .github/workflows/scripts/cpu-acceptance-report.py | 14 | # moved: a failed run, a harness fault, an aborted run and a refusal all fail | COMMENT |
| MEDIUM | .github/workflows/scripts/check-shared-wiring.py | 329 | # The MSL RENDERING is still compiled, by the entry harness the Metal recipe | COMMENT |
| MEDIUM | .github/workflows/scripts/linux/launch-verify.sh | 8 | # archive, verify-distribution.sh and the scene harness it runs: | COMMENT |
| MEDIUM | .github/workflows/scripts/linux/launch-verify.sh | 40 | # to stay beside it: verify-distribution.sh resolves the harness from its own | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | warmup.py | 335 | # Check if nvim is already installed | COMMENT |
| LOW | warmup.py | 374 | # Check if nvim config already exists | COMMENT |
| LOW | warmup.py | 398 | # Check if fish is installed | COMMENT |
| LOW | warmup.py | 402 | # Check if config.fish is a symlink | COMMENT |
| LOW | warmup.py | 507 | # Check if CUDA is installed | COMMENT |
| LOW | warmup.py | 656 | # Check if it's a symlink | COMMENT |
| LOW | warmup.py | 773 | # Check if process is still running | COMMENT |
| LOW | warmup.py | 785 | # Check if jupyter is ready (only if not already confirmed) | COMMENT |
| LOW | build-linux-native/scripts/load-downloads.sh | 78 | # Print the value of one key from a manifest, without exporting anything else. | COMMENT |
| LOW | frontend/_session_inspect_.py | 183 | # Check if frames are available | STRING |
| LOW | frontend/_session_inspect_.py | 229 | # Check if any PNG images were rendered before attempting video creation | STRING |
| LOW | frontend/_scene_.py | 854 | # Check if rendering should be skipped (e.g., on Windows headless) | COMMENT |
| LOW | blender_addon/ui/solver.py | 347 | # Check if broader migration is needed (pins, pairs, keyframes) | COMMENT |
| LOW | blender_addon/ui/dynamics/pin_ops.py | 70 | # Check if any control points are selected | COMMENT |
| LOW | blender_addon/ui/dynamics/export_ops.py | 112 | # Read the file the exporter will actually sample (the modifier's own | COMMENT |
| LOW | blender_addon/core/ssh_config.py | 223 | # Check if any pattern matches the host | COMMENT |
| LOW | blender_addon/mcp/blender_handlers.py | 404 | # Check if it's an operator class | COMMENT |
| LOW | blender_addon/mcp/mcp_server.py | 42 | # Check if port is available | COMMENT |
| LOW | blender_addon/mcp/handlers/presets.py | 843 | # Read the file back before reporting a save. The addon's TOML writer | COMMENT |
| LOW | blender_addon/mcp/handlers/group.py | 582 | # Check if there are objects to remove | COMMENT |
| LOW | .github/workflows/getting-started.yml | 274 | # Check if setup is complete (includes SSH connectivity check) | COMMENT |
| LOW | .github/workflows/yarn.yml | 236 | # Check if setup is complete (includes SSH connectivity check) | COMMENT |
| LOW | .github/workflows/trampoline.yml | 236 | # Check if setup is complete (includes SSH connectivity check) | COMMENT |
| LOW | .github/workflows/codim.yml | 236 | # Check if setup is complete (includes SSH connectivity check) | COMMENT |
| LOW | .github/workflows/belt.yml | 236 | # Check if setup is complete (includes SSH connectivity check) | COMMENT |
| LOW | .github/workflows/ribbon.yml | 236 | # Check if setup is complete (includes SSH connectivity check) | COMMENT |
| LOW | .github/workflows/cards.yml | 236 | # Check if setup is complete (includes SSH connectivity check) | COMMENT |
| LOW | .github/workflows/fitting.yml | 236 | # Check if setup is complete (includes SSH connectivity check) | COMMENT |
| LOW | .github/workflows/domino.yml | 236 | # Check if setup is complete (includes SSH connectivity check) | COMMENT |
| LOW | .github/workflows/stack.yml | 236 | # Check if setup is complete (includes SSH connectivity check) | COMMENT |
| LOW | .github/workflows/run-all-once.yml | 274 | # Check if setup is complete (includes SSH connectivity check) | COMMENT |
| LOW | .github/workflows/run-all-once.yml | 1030 | # Check if setup is complete (includes SSH connectivity check) | COMMENT |
| LOW | .github/workflows/run-all-once.yml | 1742 | # Check if setup is complete (includes SSH connectivity check) | COMMENT |
| LOW | .github/workflows/run-all-once.yml | 2454 | # Check if setup is complete (includes SSH connectivity check) | COMMENT |
| LOW | .github/workflows/run-all-once.yml | 3166 | # Check if setup is complete (includes SSH connectivity check) | COMMENT |
| LOW | .github/workflows/five-twist.yml | 236 | # Check if setup is complete (includes SSH connectivity check) | COMMENT |
| LOW | .github/workflows/friction.yml | 236 | # Check if setup is complete (includes SSH connectivity check) | COMMENT |
| LOW | .github/workflows/woven.yml | 236 | # Check if setup is complete (includes SSH connectivity check) | COMMENT |
| LOW | .github/workflows/build-docker.yml | 261 | # Check if setup is complete (includes SSH connectivity check) | COMMENT |
| LOW | .github/workflows/roller.yml | 236 | # Check if setup is complete (includes SSH connectivity check) | COMMENT |
| LOW | .github/workflows/hang.yml | 236 | # Check if setup is complete (includes SSH connectivity check) | COMMENT |
| LOW | .github/workflows/fishingknot.yml | 236 | # Check if setup is complete (includes SSH connectivity check) | COMMENT |
| LOW | .github/workflows/trapped.yml | 236 | # Check if setup is complete (includes SSH connectivity check) | COMMENT |
| LOW | .github/workflows/drape.yml | 236 | # Check if setup is complete (includes SSH connectivity check) | COMMENT |
| LOW | .github/workflows/needle.yml | 236 | # Check if setup is complete (includes SSH connectivity check) | COMMENT |
| LOW | .github/workflows/noodle.yml | 236 | # Check if setup is complete (includes SSH connectivity check) | COMMENT |
| LOW | .github/workflows/twist.yml | 236 | # Check if setup is complete (includes SSH connectivity check) | COMMENT |
| LOW | .github/workflows/curtain.yml | 236 | # Check if setup is complete (includes SSH connectivity check) | COMMENT |
| LOW | .github/workflows/template/aws-template.yml | 236 | # Check if setup is complete (includes SSH connectivity check) | COMMENT |
| LOW⚡ | .github/workflows/scripts/run-all-once-gen.py | 323 | # Check if setup is complete (includes SSH connectivity check) | COMMENT |
| LOW⚡ | .github/workflows/scripts/example-gen-win.py | 54 | # Check if template exists | COMMENT |
| LOW⚡ | .github/workflows/scripts/example-gen-win.py | 59 | # Check if examples.txt exists | COMMENT |
| LOW⚡ | .github/workflows/scripts/example-gen-win.py | 64 | # Check if examples directory exists | COMMENT |
| LOW | .github/workflows/scripts/example-gen-win.py | 88 | # Check if the notebook file exists | COMMENT |
| LOW | build-win-native/make-slim-ffmpeg.sh | 65 | # Check if ffmpeg already exists | COMMENT |
| LOW⚡ | build-mac-native/config.sh | 31 | # Set it to put the environment somewhere else. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/ppf-cts-core/src/kernels/bvh.rs | 179 | // Step 0: scene bounds over centroids. | COMMENT |
| LOW | crates/ppf-cts-core/src/kernels/bvh.rs | 204 | // Step 1: per-element Morton codes (parallel). | COMMENT |
| LOW⚡ | crates/ppf-cts-core/src/kernels/bvh.rs | 221 | // Step 2: argsort by Morton code, stable. | COMMENT |
| LOW⚡ | crates/ppf-cts-core/src/kernels/bvh.rs | 225 | // Step 3: tree topology by midpoint split (sequential, single stack). | COMMENT |
| LOW | crates/ppf-cts-core/src/kernels/bvh.rs | 260 | // Step 4: leaf bboxes (parallel over node_count). | COMMENT |
| LOW | crates/ppf-cts-core/src/kernels/bvh.rs | 307 | // Step 5: bottom-up bbox propagation. | COMMENT |
| LOW⚡ | crates/ppf-cts-core/src/kernels/intersection.rs | 522 | // Step 1: derive mesh edges + per-edge parents. | COMMENT |
| LOW⚡ | crates/ppf-cts-core/src/kernels/intersection.rs | 526 | // Step 2: append rod edges with parent (-1, -1). When there are | COMMENT |
| LOW⚡ | crates/ppf-cts-core/src/kernels/intersection.rs | 543 | // Step 3: build tri-BVH; per-edge bboxes only (no edge-BVH needed, | COMMENT |
| LOW⚡ | crates/ppf-cts-core/src/kernels/intersection.rs | 548 | // Step 4: default is_collider and per-tri PDRD body id. | COMMENT |
| LOW | crates/ppf-cts-core/src/kernels/intersection.rs | 573 | // Step 5: per-edge parallel scan into (edge_idx, tri_idx) hits. | COMMENT |
| LOW | crates/ppf-cts-core/src/kernels/intersection.rs | 594 | // Step 6: convert (edge, tri) → (parent, tri); dedup; sort. Rod | COMMENT |
| LOW | crates/ppf-cts-core/src/kernels/scene_build/assembly.rs | 333 | // Step 1: scatter vertex / color / velocity / dmap for every dyn | COMMENT |
| LOW | crates/ppf-cts-core/src/kernels/scene_build/assembly.rs | 383 | // Step 2: rod assembly. Walk every rod-typed object's edges, | COMMENT |
| LOW | crates/ppf-cts-core/src/kernels/scene_build/assembly.rs | 417 | // Step 3: shell triangles (tri-only objects, no tet). UVs + | COMMENT |
| LOW | crates/ppf-cts-core/src/kernels/scene_build/assembly.rs | 460 | // Step 4: tet surface triangles (objects with both tris and tets). | COMMENT |
| LOW | crates/ppf-cts-core/src/kernels/scene_build/assembly.rs | 495 | // Step 5: tet assembly. | COMMENT |
| LOW | crates/ppf-cts-core/src/kernels/scene_build/assembly.rs | 519 | // Step 6: per-object stitches. Map local indices through map and | COMMENT |
| LOW | crates/ppf-cts-core/src/kernels/scene_build/assembly.rs | 593 | // Step 7: cross-object stitches. Translate per-object indices. | COMMENT |
| LOW | crates/ppf-cts-solver/src/main.rs | 317 | // Step 1: Parallel computation | COMMENT |
| LOW | crates/ppf-cts-solver/src/main.rs | 337 | // Step 2: Sequential deduplication | COMMENT |
| LOW | crates/ppf-cts-solver/src/builder.rs | 1176 | // Step 1: Parallel computation of vertex params | COMMENT |
| LOW | crates/ppf-cts-solver/src/builder.rs | 1221 | // Step 2: Sequential deduplication | COMMENT |
| LOW | crates/ppf-cts-solver/src/builder.rs | 1236 | // Step 1: Parallel computation of hinge data. `bend_rest_v` / `bend_mask` | COMMENT |
| LOW | crates/ppf-cts-solver/src/builder.rs | 1340 | // Step 2: Sequential deduplication | COMMENT |
| LOW | …s/ppf-cts-solver/src/kernels/main/dirichlet.kernel.cpp | 97 | // Step 1: move one coupling's known contribution onto the free row's | COMMENT |
| LOW | …s/ppf-cts-solver/src/kernels/main/dirichlet.kernel.cpp | 121 | // Step 2: drop a coupling whose row or column is a removed vertex. | COMMENT |
| LOW | …s/ppf-cts-solver/src/kernels/main/dirichlet.kernel.cpp | 134 | // Step 3: the removed row becomes the identity carrying its prescribed | COMMENT |
| LOW⚡ | blender_addon/mcp/mcp_server.py | 149 | # Step 1: Signal shutdown to prevent new requests | COMMENT |
| LOW⚡ | blender_addon/mcp/mcp_server.py | 156 | # Step 2: Close server socket to stop accepting connections | COMMENT |
| LOW⚡ | blender_addon/mcp/mcp_server.py | 165 | # Step 3: Wait for server thread to finish with increased timeout | COMMENT |
| LOW⚡ | blender_addon/mcp/mcp_server.py | 177 | # Step 4: Clean up references | COMMENT |
| LOW⚡ | blender_addon/mcp/mcp_server.py | 181 | # Step 5: Wait for port to be released | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/ppf-cts-core/src/kernels/bvh.rs | 179 | // Step 0: scene bounds over centroids. | COMMENT |
| LOW | crates/ppf-cts-core/src/kernels/bvh.rs | 204 | // Step 1: per-element Morton codes (parallel). | COMMENT |
| LOW⚡ | crates/ppf-cts-core/src/kernels/bvh.rs | 221 | // Step 2: argsort by Morton code, stable. | COMMENT |
| LOW⚡ | crates/ppf-cts-core/src/kernels/bvh.rs | 225 | // Step 3: tree topology by midpoint split (sequential, single stack). | COMMENT |
| LOW | crates/ppf-cts-core/src/kernels/bvh.rs | 260 | // Step 4: leaf bboxes (parallel over node_count). | COMMENT |
| LOW | crates/ppf-cts-core/src/kernels/bvh.rs | 307 | // Step 5: bottom-up bbox propagation. | COMMENT |
| LOW⚡ | crates/ppf-cts-core/src/kernels/intersection.rs | 522 | // Step 1: derive mesh edges + per-edge parents. | COMMENT |
| LOW⚡ | crates/ppf-cts-core/src/kernels/intersection.rs | 526 | // Step 2: append rod edges with parent (-1, -1). When there are | COMMENT |
| LOW⚡ | crates/ppf-cts-core/src/kernels/intersection.rs | 543 | // Step 3: build tri-BVH; per-edge bboxes only (no edge-BVH needed, | COMMENT |
| LOW⚡ | crates/ppf-cts-core/src/kernels/intersection.rs | 548 | // Step 4: default is_collider and per-tri PDRD body id. | COMMENT |
| LOW | crates/ppf-cts-core/src/kernels/intersection.rs | 573 | // Step 5: per-edge parallel scan into (edge_idx, tri_idx) hits. | COMMENT |
| LOW | crates/ppf-cts-core/src/kernels/intersection.rs | 594 | // Step 6: convert (edge, tri) → (parent, tri); dedup; sort. Rod | COMMENT |
| LOW | crates/ppf-cts-core/src/kernels/scene_build/assembly.rs | 333 | // Step 1: scatter vertex / color / velocity / dmap for every dyn | COMMENT |
| LOW | crates/ppf-cts-core/src/kernels/scene_build/assembly.rs | 383 | // Step 2: rod assembly. Walk every rod-typed object's edges, | COMMENT |
| LOW | crates/ppf-cts-core/src/kernels/scene_build/assembly.rs | 417 | // Step 3: shell triangles (tri-only objects, no tet). UVs + | COMMENT |
| LOW | crates/ppf-cts-core/src/kernels/scene_build/assembly.rs | 460 | // Step 4: tet surface triangles (objects with both tris and tets). | COMMENT |
| LOW | crates/ppf-cts-core/src/kernels/scene_build/assembly.rs | 495 | // Step 5: tet assembly. | COMMENT |
| LOW | crates/ppf-cts-core/src/kernels/scene_build/assembly.rs | 519 | // Step 6: per-object stitches. Map local indices through map and | COMMENT |
| LOW | crates/ppf-cts-core/src/kernels/scene_build/assembly.rs | 593 | // Step 7: cross-object stitches. Translate per-object indices. | COMMENT |
| LOW | crates/ppf-cts-solver/src/main.rs | 317 | // Step 1: Parallel computation | COMMENT |
| LOW | crates/ppf-cts-solver/src/main.rs | 337 | // Step 2: Sequential deduplication | COMMENT |
| LOW | crates/ppf-cts-solver/src/builder.rs | 1176 | // Step 1: Parallel computation of vertex params | COMMENT |
| LOW | crates/ppf-cts-solver/src/builder.rs | 1221 | // Step 2: Sequential deduplication | COMMENT |
| LOW | crates/ppf-cts-solver/src/builder.rs | 1236 | // Step 1: Parallel computation of hinge data. `bend_rest_v` / `bend_mask` | COMMENT |
| LOW | crates/ppf-cts-solver/src/builder.rs | 1340 | // Step 2: Sequential deduplication | COMMENT |
| LOW | …s/ppf-cts-solver/src/kernels/main/dirichlet.kernel.cpp | 97 | // Step 1: move one coupling's known contribution onto the free row's | COMMENT |
| LOW | …s/ppf-cts-solver/src/kernels/main/dirichlet.kernel.cpp | 121 | // Step 2: drop a coupling whose row or column is a removed vertex. | COMMENT |
| LOW | …s/ppf-cts-solver/src/kernels/main/dirichlet.kernel.cpp | 134 | // Step 3: the removed row becomes the identity carrying its prescribed | COMMENT |
| LOW⚡ | blender_addon/mcp/mcp_server.py | 149 | # Step 1: Signal shutdown to prevent new requests | COMMENT |
| LOW⚡ | blender_addon/mcp/mcp_server.py | 156 | # Step 2: Close server socket to stop accepting connections | COMMENT |
| LOW⚡ | blender_addon/mcp/mcp_server.py | 165 | # Step 3: Wait for server thread to finish with increased timeout | COMMENT |
| LOW⚡ | blender_addon/mcp/mcp_server.py | 177 | # Step 4: Clean up references | COMMENT |
| LOW⚡ | blender_addon/mcp/mcp_server.py | 181 | # Step 5: Wait for port to be released | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …r_addon/debug/scenarios/bl_connection_path_relative.py | 0 | import traceback result.setdefault("errors", []) result.setdefault("checks", {}) def record(name, ok, details=none): res | STRING |
| HIGH | …er_addon/debug/scenarios/bl_mac_native_root_resolve.py | 0 | import traceback result.setdefault("errors", []) result.setdefault("checks", {}) def record(name, ok, details=none): res | STRING |
| HIGH | …er_addon/debug/scenarios/bl_win_native_root_resolve.py | 0 | import traceback result.setdefault("errors", []) result.setdefault("checks", {}) def record(name, ok, details=none): res | STRING |
| HIGH | …der_addon/debug/scenarios/bl_cbor2_missing_reported.py | 0 | import traceback result.setdefault("errors", []) result.setdefault("checks", {}) def record(name, ok, details=none): res | STRING |
| HIGH | …don/debug/scenarios/bl_connection_failure_reporting.py | 0 | import traceback result.setdefault("errors", []) result.setdefault("checks", {}) def record(name, ok, details=none): res | STRING |
| HIGH | …addon/debug/scenarios/bl_connection_path_validation.py | 0 | import traceback result.setdefault("errors", []) result.setdefault("checks", {}) def record(name, ok, details=none): res | STRING |
| HIGH | blender_addon/debug/scenarios/bl_docker_connect_gate.py | 0 | import traceback result.setdefault("errors", []) result.setdefault("checks", {}) def record(name, ok, details=none): res | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | crates/ppf-cts-core/src/kernels/bvh.rs | 499 | /// rolled copy of this scaffold (≈25 lines) that differed only in | COMMENT |
| MEDIUM⚡ | blender_addon/ui/dynamics/export_ops.py | 147 | # Shared operator scaffolding | COMMENT |
| MEDIUM | blender_addon/core/effects.py | 6 | # Typed, frozen effect classes for the event-driven state machine. | COMMENT |
| MEDIUM | blender_addon/core/events.py | 6 | # Typed, frozen event classes for the event-driven state machine. | COMMENT |
| MEDIUM | blender_addon/core/client.py | 6 | # Re-exports the event-driven ``CommunicatorFacade`` as the ``communicator`` | COMMENT |
| MEDIUM | blender_addon/core/transitions.py | 6 | # Pure state-transition function for the event-driven state machine. | COMMENT |
| MEDIUM⚡ | blender_addon/core/state.py | 7 | # event-driven state machine. The entire addon state is captured by | COMMENT |
| MEDIUM | …der_addon/debug/scenarios/rig_degenerate_rest_shape.py | 88 | # arrives even from a rendering the context window cut, and the row is | COMMENT |
| MEDIUM | .github/workflows/scripts/check-shared-wiring.py | 168 | # fork exists, so it fires the moment an orchestration step forked between a | COMMENT |
| MEDIUM | .github/workflows/scripts/check-shared-wiring.py | 339 | # The element energies and the remaining orchestration steps. Same situation as | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | warmup.py | 22 | CODE | |
| LOW | frontend/_scene_.py | 172 | CODE | |
| LOW | calibration/tensile/tensile.py | 166 | CODE | |
| LOW | blender_addon/mcp/handlers/object_ops.py | 362 | CODE | |
| LOW | blender_addon/mcp/handlers/object_ops.py | 525 | CODE | |
| LOW | blender_addon/mcp/handlers/object_ops.py | 1822 | CODE | |
| LOW | blender_addon/mcp/handlers/object_ops.py | 2503 | CODE | |
| LOW | blender_addon/mcp/handlers/remote.py | 57 | CODE | |
| LOW | blender_addon/mcp/handlers/dyn_params.py | 233 | CODE | |
| LOW | blender_addon/mcp/handlers/force_field.py | 81 | CODE | |
| LOW | blender_addon/ops/api/pin.py | 132 | CODE | |
| LOW | blender_addon/ops/api/pin.py | 199 | CODE | |
| LOW | blender_addon/debug/orchestrator.py | 996 | CODE | |
| LOW | examples/blender/woven.py | 80 | CODE | |
| LOW | examples/blender/five-twist.py | 158 | CODE | |
| LOW | examples/blender/cards.py | 150 | CODE | |
| LOW | examples/blender/character-anim.py | 126 | CODE | |
| LOW | examples/blender/noodle.py | 71 | CODE | |
| LOW | examples/blender/yarn.py | 102 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frontend/__init__.py | 644 | __all__ = [ | CODE |
| LOW | frontend/tests/__init__.py | 11 | __all__ = [ | CODE |
| LOW | blender_addon/ui/capture.py | 1605 | __all__ = [ | CODE |
| LOW | blender_addon/ui/dynamics/__init__.py | 149 | __all__ = [ | CODE |
| LOW | blender_addon/ui/dynamics/pin_ops.py | 773 | def _set_pin_fcurves_linear(obj) -> None: | CODE |
| LOW | blender_addon/ui/dynamics/overlay_geometry/__init__.py | 24 | __all__ = [ | CODE |
| LOW | blender_addon/core/facade.py | 83 | def set_project_name(self, name: str) -> None: | CODE |
| LOW | blender_addon/core/effect_runner.py | 476 | def set_fetched_frames(self, frames: list[int]) -> None: | CODE |
| LOW | blender_addon/core/ssh_command.py | 167 | def _set_once(result: SSHCommand, field: str, value) -> None: | CODE |
| LOW | blender_addon/core/ssh_command.py | 182 | def _set_destination(result: SSHCommand, token: str) -> None: | CODE |
| LOW | blender_addon/core/encoder/__init__.py | 262 | __all__ = [ | CODE |
| LOW | blender_addon/models/force_field_targets.py | 99 | def set_targets(scene, state, source, group_uuids) -> None: | CODE |
| LOW | blender_addon/ops/api/__init__.py | 76 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/ppf-cts-core/src/extra.rs | 381 | std::fs::write(dest.join("placeholder"), "x").unwrap(); | CODE |
| LOW | crates/ppf-cts-server/src/wire/data.rs | 173 | /// the form `{remote_root}/dummy_data.pickle`, where `remote_root` is | COMMENT |
| LOW⚡ | crates/ppf-cts-server/src/wire/data.rs | 219 | let p = resolve_under_root(&root, "/data/proj/dummy_data.pickle").unwrap(); | CODE |
| LOW⚡ | crates/ppf-cts-server/src/wire/data.rs | 220 | assert_eq!(p, PathBuf::from("/data/proj/dummy_data.pickle")); | CODE |
| LOW⚡ | crates/ppf-cts-server/src/wire/data.rs | 226 | let p = resolve_under_root(&root, "sub/dummy_data.pickle").unwrap(); | CODE |
| LOW⚡ | crates/ppf-cts-server/src/wire/data.rs | 227 | assert_eq!(p, PathBuf::from("/data/proj/sub/dummy_data.pickle")); | CODE |
| LOW | blender_addon/ui/debug_ops.py | 118 | f"{remote_root}/dummy_data.pickle", | CODE |
| LOW | blender_addon/ui/debug_ops.py | 154 | "dummy_data.pickle", | CODE |
| LOW | docs/blender_addon/troubleshooting.md | 609 | (MB)** asks for (1 to 256) and uploads them to `dummy_data.pickle` in | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | articles/cloud.md | 167 | RUNPOD_API_KEY="...your_api_key..." | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | install-blender.sh | 10 | # Usage: | COMMENT |
| LOW | install-blender-addon.sh | 12 | # Usage: | COMMENT |