AI Slop Code Risk Monitor

AcademySoftwareFoundation/openvdb

SlopCodeMonitor badge for AcademySoftwareFoundation/openvdb Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

OpenVDB - Sparse volume data structure and tools

4.1 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for AcademySoftwareFoundation/openvdb, a C++ project with 3,447 GitHub stars. SynthScan examined 365,569 lines of code across 767 source files, recording 1432 pattern matches distributed across 15 syntactic categories. The legacy adjusted pattern signal is 4.1 (Low 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.

4.1
Adjusted Signal
4.1
Raw Pattern Score
100%
Time Factor
2026-10-29
Last Push
3.4K
Stars
C++
Language
365.6K
Lines of Code
767
Files
1.4K
Pattern Hits
2026-10-31
Scan Date
0.00
HC Hit Rate

Risk Review · Payload v1

Use each vector to guide manual verification of the underlying findings.

Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.

Cognitive Ownership Risk 17.8/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 1414 finding(s).

Hallucinated Dependency & Supply Chain Risk 0.1/100 · LOW

Are imports declared and package/API names verified? 4 finding(s).

Agent Over-Engineering Ratio 0.9/100 · LOW

Are wrappers, guards, and repeated structures necessary? 28 finding(s).

PR Review Velocity Impact 18.5/100 · LOW

Which changes need focused human review? 1432 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

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.

Severity Breakdown

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.

CRITICAL 0HIGH 3MEDIUM 23LOW 1406

Directory Score Breakdown

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.

Pattern Findings

The scanner identified 1432 distinct pattern matches across 15 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.

Over-Commented Block1354 hits · 1319 pts
SeverityFileLineSnippetContext
LOWci/download_houdini.py1#!/usr/bin/env python3COMMENT
LOWci/extract_test_examples.sh1#!/usr/bin/env bashCOMMENT
LOWopenvdb_cmd/vdb_view/Font.h1// Copyright Contributors to the OpenVDB ProjectCOMMENT
LOWopenvdb_cmd/vdb_view/RenderModules.h1// Copyright Contributors to the OpenVDB ProjectCOMMENT
LOWopenvdb_cmd/vdb_view/ClipBox.h1// Copyright Contributors to the OpenVDB ProjectCOMMENT
LOWopenvdb_cmd/vdb_tool/README.md201COMMENT
LOWopenvdb_cmd/vdb_tool/include/Parser.h1// Copyright Contributors to the OpenVDB ProjectCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Parser.h21/// control-flow scopes implementing -for, -each, -files, -if;COMMENT
LOWopenvdb_cmd/vdb_tool/include/Parser.h41#include <random>COMMENT
LOWopenvdb_cmd/vdb_tool/include/Parser.h81COMMENT
LOWopenvdb_cmd/vdb_tool/include/Parser.h721COMMENT
LOWopenvdb_cmd/vdb_tool/include/Parser.h861{COMMENT
LOWopenvdb_cmd/vdb_tool/include/Parser.h1021 /// @brief Always returns false; the switch scope is single-pass.COMMENT
LOWopenvdb_cmd/vdb_tool/include/Parser.h1041 /// @brief Destroy active scopes while their referenced Processor memory is still alive.COMMENT
LOWopenvdb_cmd/vdb_tool/include/Parser.h1121 /// @brief Stack of currently-open loop/if scopes, in order of opening.COMMENT
LOWopenvdb_cmd/vdb_tool/include/ShrinkWrap.h1// Copyright Contributors to the OpenVDB ProjectCOMMENT
LOWopenvdb_cmd/vdb_tool/include/ShrinkWrap.h21#include <openvdb/tools/Composite.h> // for csgUnionCOMMENT
LOWopenvdb_cmd/vdb_tool/include/ShrinkWrap.h61/// takes a PolySoup struct and optional voxel dimension and/or voxel size. If theCOMMENT
LOWopenvdb_cmd/vdb_tool/include/ShrinkWrap.h101/// @note Unlike tools::meshToLevelSet this method works for any polygons,COMMENT
LOWopenvdb_cmd/vdb_tool/include/ShrinkWrap.h121 std::vector<Vec3I>& tri,COMMENT
LOWopenvdb_cmd/vdb_tool/include/ShrinkWrap.h181 /// @param voxelSize Desired voxel size of the output level set in world units.COMMENT
LOWopenvdb_cmd/vdb_tool/include/ShrinkWrap.h201 /// @param n Number of the shrink wrap grid, where n = 0 has the finest sampling andCOMMENT
LOWopenvdb_cmd/vdb_tool/include/ShrinkWrap.h221COMMENT
LOWopenvdb_cmd/vdb_tool/include/ShrinkWrap.h281 // A too-small dim relative to halfWidth drives the denominator above to zeroCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h1// Copyright Contributors to the OpenVDB ProjectCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h21/// - A single infix expression, e.g.COMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h41/// - **Persistent memory** &mdash; `evalAndRemember()` snapshotsCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h61#include <stdexcept>COMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h81/// an arbitrary number of named float variables. Re-entrant andCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h101/// input variable of the same name from that point on, and remainCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h121/// `switch(selector, k1, v1, ..., default)`.COMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h141 /// compilation result (and clears any registered user-definedCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h161 /// errors include a source pointer with column number.COMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h181 inline float eval(const float* values) const;COMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h201COMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h241COMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h281 /// @brief Multi-line, human-readable dump of the compiled bytecode.COMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h341COMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h381 /// forms. If @a slotsOut is non-null, the final values of allCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h1341 // The call site has just pushed `fd.params.size()` argument values ontoCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h1721 // Walk the bytecode with a virtual stack-depth counter so eval() doesn'tCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Util.h1// Copyright Contributors to the OpenVDB ProjectCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Util.h21#ifndef VDB_TOOL_UTIL_HAS_BEEN_INCLUDEDCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Util.h241/// sorted so the best matches come first (lower key = better match).COMMENT
LOWopenvdb_cmd/vdb_tool/include/Util.h621/// @brief invert endianess of an array of values of a specific typeCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Util.h681#ifdef _WIN32COMMENT
LOWopenvdb_cmd/vdb_tool/include/Tool.h1// Copyright Contributors to the OpenVDB ProjectCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Tool.h21/// (primarily std::clog, with std::cerr for errors), never toCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Tool.h41#include <openvdb/tools/LevelSetDilatedMesh.h>COMMENT
LOWopenvdb_cmd/vdb_tool/include/Tool.h61#include <openvdb/tools/MultiResGrid.h>COMMENT
LOWopenvdb_cmd/vdb_tool/include/Tool.h81COMMENT
LOWopenvdb_cmd/vdb_tool/include/Tool.h101#include "Calculator.h"COMMENT
LOWopenvdb_cmd/vdb_tool/include/Tool.h141 ~Tool() {this->endLog();}COMMENT
LOWopenvdb_cmd/vdb_tool/include/Tool.h361COMMENT
LOWopenvdb_cmd/vdb_tool/include/Tool.h401 /// @brief Return an iterator to the Geometry at stack age @a age (0 = most recent).COMMENT
LOWopenvdb_cmd/vdb_tool/include/Tool.h3621COMMENT
LOWopenvdb_cmd/vdb_tool/include/Geometry.h1// Copyright Contributors to the OpenVDB ProjectCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Geometry.h21////////////////////////////////////////////////////////////////////////////////COMMENT
LOWopenvdb_cmd/vdb_tool/include/Geometry.h41#include <openvdb/points/PointCount.h>COMMENT
LOWopenvdb_cmd/vdb_tool/include/Geometry.h61#include <pxr/base/gf/vec3f.h>COMMENT
1294 more matches not shown…
Decorative Section Separators11 hits · 39 pts
SeverityFileLineSnippetContext
MEDIUMci/download_houdini.py76#---------------------------------------------------------------------------COMMENT
MEDIUM⚡nanovdb/nanovdb/cmd/CMakeLists.txt22# -----------------------------------------------------------------------------COMMENT
MEDIUM⚡nanovdb/nanovdb/cmd/CMakeLists.txt28# -----------------------------------------------------------------------------COMMENT
MEDIUM⚡nanovdb/nanovdb/cmd/CMakeLists.txt38# -----------------------------------------------------------------------------COMMENT
MEDIUM⚡nanovdb/nanovdb/cmd/CMakeLists.txt44# -----------------------------------------------------------------------------COMMENT
MEDIUMnanovdb/nanovdb/unittest/CMakeLists.txt22# -----------------------------------------------------------------------------COMMENT
MEDIUMnanovdb/nanovdb/unittest/CMakeLists.txt36# -----------------------------------------------------------------------------COMMENT
MEDIUMnanovdb/nanovdb/unittest/CMakeLists.txt74# -----------------------------------------------------------------------------COMMENT
MEDIUMnanovdb/nanovdb/unittest/CMakeLists.txt89# -----------------------------------------------------------------------------COMMENT
MEDIUMnanovdb/nanovdb/unittest/CMakeLists.txt125# -----------------------------------------------------------------------------COMMENT
MEDIUMnanovdb/nanovdb/examples/CMakeLists.txt84# -----------------------------------------------------------------------COMMENT
Structural Annotation Overuse13 hits · 23 pts
SeverityFileLineSnippetContext
LOW⚡openvdb_cmd/vdb_tool/include/Calculator.h1359 // Step 1: per-call parameter slots. Use a fresh, uniquified name per callCOMMENT
LOW⚡openvdb_cmd/vdb_tool/include/Calculator.h1369 // Step 2: store args in reverse (top-of-stack first).COMMENT
LOW⚡openvdb_cmd/vdb_tool/include/Calculator.h1488 // Step 1: insert Jump (target patched later) right BEFORE else_start.COMMENT
LOW⚡openvdb_cmd/vdb_tool/include/Calculator.h1496 // Step 2: insert JumpIfFalse right BEFORE then_start.COMMENT
LOW⚡openvdb_cmd/vdb_tool/include/Calculator.h1504 // Step 3: set targets.COMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h1386 // Step 3: copy the body's bytecode, rewriting indices.COMMENT
LOWnanovdb/nanovdb/util/MaskPrefixSum.h110 // Step 1: Indicator fill.COMMENT
LOWnanovdb/nanovdb/util/MaskPrefixSum.h126 // Step 2: Z-pass -- Hillis-Steele inclusive prefix sum over z.COMMENT
LOWnanovdb/nanovdb/util/MaskPrefixSum.h147 // Step 3: Y-pass -- accumulate preceding-row popcounts.COMMENT
LOWnanovdb/nanovdb/util/MaskPrefixSum.h183 // Step 4: Zero-extend bytes to uint16_t in linear index order.COMMENT
LOWnanovdb/nanovdb/util/MaskPrefixSum.h197 // Step 5: Add cross-word offsets decoded from prefixSum.COMMENT
LOWopenvdb_houdini/openvdb_houdini/AttributeTransferUtil.h525// NOTE: This class has all code in the header and so it cannot have OPENVDB_HOUDINI_API.COMMENT
LOWopenvdb_houdini/openvdb_houdini/AttributeTransferUtil.h712// NOTE: This class has all code in the header and so it cannot have OPENVDB_HOUDINI_API.COMMENT
AI Slop Vocabulary8 hits · 23 pts
SeverityFileLineSnippetContext
MEDIUMopenvdb_cmd/vdb_tool/include/Geometry.h1253 double p[3];// more robust to read ascii coordinates as double than floatCODE
MEDIUMopenvdb_ax/openvdb_ax/test/integration/TestHarness.h295#define AXTESTS_STANDARD_ASSERT_HARNESS(harness) \COMMENT
MEDIUMopenvdb_ax/openvdb_ax/codegen/FunctionTypes.h345/// leverage the AX Value API). Functions can still be generated and calledCOMMENT
MEDIUMopenvdb_ax/openvdb_ax/codegen/Types.h246/// Fundamentally, T1->T2 mapping should be supported byCOMMENT
MEDIUMopenvdb_ax/openvdb_ax/ast/Visitor.h55/// you can utilize the traverse methods if you find that you requireCOMMENT
MEDIUMopenvdb_ax/openvdb_ax/compiler/CompilerOptions.h34 /// results. Fundamentally, LLVM's support for CF IR is far superior and ourCOMMENT
MEDIUM.github/workflows/teachme.yml6# breaks a lesson code block is caught here (the whole point of the harness).COMMENT
MEDIUMdoc/nanovdb/TEACHME/test/run.sh2# Drive the TEACHME test harness: reference-check -> extract -> compile.COMMENT
Verbosity Indicators12 hits · 22 pts
SeverityFileLineSnippetContext
LOW⚡openvdb_cmd/vdb_tool/include/Calculator.h1359 // Step 1: per-call parameter slots. Use a fresh, uniquified name per callCOMMENT
LOW⚡openvdb_cmd/vdb_tool/include/Calculator.h1369 // Step 2: store args in reverse (top-of-stack first).COMMENT
LOW⚡openvdb_cmd/vdb_tool/include/Calculator.h1488 // Step 1: insert Jump (target patched later) right BEFORE else_start.COMMENT
LOW⚡openvdb_cmd/vdb_tool/include/Calculator.h1496 // Step 2: insert JumpIfFalse right BEFORE then_start.COMMENT
LOW⚡openvdb_cmd/vdb_tool/include/Calculator.h1504 // Step 3: set targets.COMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h1386 // Step 3: copy the body's bytecode, rewriting indices.COMMENT
LOWnanovdb/nanovdb/NanoVDB.h6050// the following code block uses std and therefore needs to be ignored by CUDA and HIPCOMMENT
LOWnanovdb/nanovdb/util/MaskPrefixSum.h110 // Step 1: Indicator fill.COMMENT
LOWnanovdb/nanovdb/util/MaskPrefixSum.h126 // Step 2: Z-pass -- Hillis-Steele inclusive prefix sum over z.COMMENT
LOWnanovdb/nanovdb/util/MaskPrefixSum.h147 // Step 3: Y-pass -- accumulate preceding-row popcounts.COMMENT
LOWnanovdb/nanovdb/util/MaskPrefixSum.h183 // Step 4: Zero-extend bytes to uint16_t in linear index order.COMMENT
LOWnanovdb/nanovdb/util/MaskPrefixSum.h197 // Step 5: Add cross-word offsets decoded from prefixSum.COMMENT
Hyper-Verbose Identifiers14 hits · 14 pts
SeverityFileLineSnippetContext
LOWci/download_houdini.py80def get_access_token_and_expiry_time(CODE
LOWci/download_houdini.py113def call_api_with_access_token(CODE
LOWnanovdb/nanovdb/python/test/TestNanoVDB.py531 def test_device_write_grids_multi(self):CODE
LOWnanovdb/nanovdb/python/test/TestNanoVDB.py568 def test_download_before_upload_raises(self):CODE
LOWnanovdb/nanovdb/python/test/TestNanoVDB.py574 def test_grids_stay_valid_across_transfers(self):CODE
LOWnanovdb/nanovdb/python/test/TestNanoVDB.py660 def test_small_handles_sharing_pages(self):CODE
LOWnanovdb/nanovdb/python/test/TestNanoVDB.py676 def test_release_with_a_pending_transfer(self):CODE
LOWnanovdb/nanovdb/python/test/TestNanoVDB.py747 def test_signed_flood_fill_float(self):CODE
LOWnanovdb/nanovdb/python/test/TestNanoVDB.py777 def test_signed_flood_fill_double(self):CODE
LOWnanovdb/nanovdb/python/test/TestNanoVDB.py815 def test_sample_from_points_float(self):CODE
LOWnanovdb/nanovdb/python/test/TestNanoVDB.py876 def test_sample_from_points_double(self):CODE
LOWnanovdb/nanovdb/python/test/TestNanoVDB.py980 def test_create_float_nano_grid(self):CODE
LOWnanovdb/nanovdb/python/test/TestNanoVDB.py998 def test_create_double_nano_grid(self):CODE
LOWnanovdb/nanovdb/python/test/TestNanoVDB.py1016 def test_create_int_nano_grid(self):CODE
Self-Referential Comments4 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMci/download_houdini.sh102 # Create an empty valid shared libCOMMENT
MEDIUMopenvdb/openvdb/python/test/TestOpenVDB.py620 # Create a NumPy array, fill it with the background value,COMMENT
MEDIUMopenvdb/openvdb/python/test/TestOpenVDB.py646 # Create an empty grid.COMMENT
MEDIUMopenvdb/openvdb/python/test/TestOpenVDB.py727 # Create an empty grid, fill it with the background value,COMMENT
Empty Error Handlers2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHnanovdb/nanovdb/python/test/TestNanoVDB.py15except OSError:CODE
HIGHopenvdb_houdini/openvdb_houdini/pythonrc.py23except AttributeError:CODE
Synthetic Comment Markers1 hit · 8 pts
SeverityFileLineSnippetContext
HIGHCMakeLists.txt517 # nanobind's config file only accepts the same major version as requested,COMMENT
Unused Imports4 hits · 4 pts
SeverityFileLineSnippetContext
LOWci/validate_docs_references.py28CODE
LOWnanovdb/nanovdb/python/__init__.py9CODE
LOWopenvdb/openvdb/python/__init__.py3CODE
LOWopenvdb/openvdb/python/test/TestOpenVDB.py17CODE
Deep Nesting4 hits · 4 pts
SeverityFileLineSnippetContext
LOWnanovdb/nanovdb/cmd/updateFiles.py45CODE
LOWdoc/nanovdb/TEACHME/test/teachme_tests.py119CODE
LOWdoc/nanovdb/TEACHME/test/teachme_tests.py164CODE
LOWdoc/nanovdb/TEACHME/test/teachme_tests.py220CODE
Overly Generic Function Names2 hits · 2 pts
SeverityFileLineSnippetContext
LOWnanovdb/nanovdb/python/test/TestNanoVDB.py1058 def test_function(self):CODE
LOWnanovdb/nanovdb/python/test/TestNanoVDB.py1072 def test_function(self):CODE
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippetContext
LOWnanovdb/nanovdb/cmd/updateFiles.sh12# Check if dir is not a directoryCOMMENT
Slop Phrases1 hit · 2 pts
SeverityFileLineSnippetContext
LOW.github/workflows/weekly.yml512 # note: For CI forks, make sure you have your tags syncedCOMMENT
Excessive Try-Catch Wrapping1 hit · 1 pts
SeverityFileLineSnippetContext
LOWci/download_vdb_caches.py105 except Exception as e:CODE