AI Slop Code Risk Monitor

nicholas-ochoa/OpenSC2K

SlopCodeMonitor badge for nicholas-ochoa/OpenSC2K Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).
0.9 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for nicholas-ochoa/OpenSC2K. SynthScan examined 136,042 lines of code across 555 source files, recording 98 pattern matches distributed across 5 syntactic categories. The legacy adjusted pattern signal is 0.9 (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.

0.9
Adjusted Signal
0.9
Raw Pattern Score
100%
Time Factor
—
Last Push
—
Stars
—
Language
136.0K
Lines of Code
555
Files
98
Pattern Hits
2026-10-31
Scan Date
0.01
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 3.6/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.7/100 · LOW

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

Agent Over-Engineering Ratio 2.1/100 · LOW

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

PR Review Velocity Impact 4.3/100 · LOW

Which changes need focused human review? 98 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 2HIGH 1MEDIUM 0LOW 95

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 98 distinct pattern matches across 5 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.

Hyper-Verbose Identifiers46 hits · 52 pts
SeverityFileLineSnippetContext
LOW⚡tools/test_validation_runner.py183 def test_registry_covers_every_script(self):CODE
LOW⚡tools/test_validation_runner.py187 def test_domains_keep_core_cases_and_history_dependency(self):CODE
LOW⚡tools/test_validation_runner.py197 def test_headless_selects_full_workflow_once(self):CODE
LOW⚡tools/test_validation_runner.py203 def test_headless_excludes_native_only_checks(self):CODE
LOW⚡tools/test_validation_runner.py212 def test_missing_and_unregistered_files_fail(self):CODE
LOWtools/test_validation_runner.py27 def test_fresh_projects_share_the_import_cache(self):CODE
LOWtools/test_validation_runner.py45 def test_parallel_bound_and_failure_drain(self):CODE
LOWtools/test_validation_runner.py77 def test_groups_preserve_native_and_persistence_order_without_losing_checks(self):CODE
LOWtools/test_validation_runner.py91 def test_scene_batch_rejects_incomplete_and_shutdown_failures(self):CODE
LOWtools/test_validation_runner.py112 def test_scene_cases_share_process_and_clean_up(self):CODE
LOWtools/test_validation_runner.py138 def test_scene_case_failure_skip_and_timeout(self):CODE
LOWtools/test_validation_runner.py166 def test_progress_watchdog_resets_for_each_case_and_stops_blocked_process(self):CODE
LOWtools/test_validation_runner.py227 def test_script_error_and_timeout_cannot_pass(self):CODE
LOWtools/test_validation_runner.py236 def test_interleaved_engine_error_cannot_pass(self):CODE
LOWtools/test_validation_runner.py248 def test_split_error_is_detected_during_read_and_exit_drain(self):CODE
LOWtools/test_validation_runner.py283 def test_skip_is_reported_separately(self):CODE
LOWtools/test_validation_runner.py292 def test_console_streams_before_exit_and_can_also_save_logs(self):CODE
LOWtools/test_validation_runner.py319 def test_default_run_does_not_create_log_directory(self):CODE
LOWtools/test_validation_runner.py334 def test_release_rejects_missing_prerequisite(self):CODE
LOWtools/test_validation_runner.py347 def test_strict_rejects_missing_tools_and_runtime_skips(self):CODE
LOWtools/test_validation_runner.py358 def test_committed_city_fixture_hashes(self):CODE
LOWtools/test_validation_runner.py378 def test_isolated_user_data_matches_godot(self):CODE
LOWtools/test_graphics_tools.py15 def test_palette_padding_preserves_encoded_indices(self):CODE
LOW⚡tools/test_release_automation.py71 def test_range_includes_branch_and_merge_but_excludes_base_and_later_commits(self):CODE
LOW⚡tools/test_release_automation.py79 def test_first_release_includes_all_ancestors(self):CODE
LOW⚡tools/test_release_automation.py85 def test_no_new_commits_produces_empty_list(self):CODE
LOW⚡tools/test_release_automation.py88 def test_missing_tag_or_shallow_history_fails_instead_of_omitting_commits(self):CODE
LOW⚡tools/test_release_automation.py96 def test_publish_uses_last_published_stable_release_and_exact_build_commit(self):CODE
LOW⚡tools/test_release_automation.py188 def test_missing_nightly_tag_is_not_deleted(self):CODE
LOW⚡tools/test_release_automation.py194 def test_upload_failure_preserves_previous_release(self):CODE
LOW⚡tools/test_release_automation.py204 def test_failed_draft_is_removed_without_deleting_a_missing_tag(self):CODE
LOW⚡tools/test_release_automation.py211 def test_remote_hash_mismatch_prevents_publish_and_cleanup(self):CODE
LOW⚡tools/test_release_automation.py218 def test_invalid_package_or_commit_never_contacts_github(self):CODE
LOW⚡tools/test_release_automation.py227 def test_cleanup_requires_nightly_tag_prerelease_and_workflow_marker(self):CODE
LOW⚡tools/test_release_automation.py234 def test_out_of_order_run_does_not_replace_newer_nightly(self):CODE
LOW⚡tools/test_release_automation.py242 def test_portable_zip_adds_empty_data_folder(self):CODE
LOWtools/test_release_automation.py170 def test_publish_verifies_upload_then_replaces_the_single_nightly_tag(self):CODE
LOWtools/test_release_automation.py255 def test_only_linux_packages_include_the_soundfont_and_its_license(self):CODE
LOWtools/test_release_automation.py307 def test_disk_image_keeps_the_volume_name_with_either_tool(self):CODE
LOWtools/test_release_automation.py316 def test_busy_disk_image_is_retried_then_fails(self):CODE
LOWtools/test_release_automation.py334 def test_lost_stapler_connection_is_retried_then_fails(self):CODE
LOWtools/test_release_automation.py349 def test_notary_credentials_come_from_a_profile_or_a_complete_api_key(self):CODE
LOWtools/test_release_automation.py362 def test_identity_is_found_by_name_or_hash(self):CODE
LOWtools/test_release_automation.py368 def test_signing_settings_that_cannot_notarize_fail_before_the_export(self):CODE
LOWtools/test_release_automation.py385 def test_install_copies_both_extensions_for_every_platform(self):CODE
LOWtools/test_release_automation.py422 def test_platform_selection_takes_package_or_native_folder_names(self):CODE
Over-Commented Block35 hits · 35 pts
SeverityFileLineSnippetContext
LOWtools/setup_macos_signing_ci.sh1#!/usr/bin/env bashCOMMENT
LOWnative/core/scripting/quickjs/libregexp.c61//#define DUMP_REOPCOMMENT
LOWnative/core/scripting/quickjs/dtoa.c21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS INCOMMENT
LOWnative/core/scripting/quickjs/quickjs-c-atomics.h21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS INCOMMENT
LOWnative/core/scripting/quickjs/quickjs-c-atomics.h41#define atomic_store(obj, desired) \COMMENT
LOWnative/core/scripting/quickjs/libregexp.h21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS INCOMMENT
LOWnative/core/scripting/quickjs/quickjs.h61 */COMMENT
LOWnative/core/scripting/quickjs/quickjs.h101 *COMMENT
LOWnative/core/scripting/quickjs/quickjs.h121/* Clang on Windows doesn't seem to support _Printf_format_string_ */COMMENT
LOWnative/core/scripting/quickjs/quickjs.h141 */COMMENT
LOWnative/core/scripting/quickjs/quickjs.h201COMMENT
LOWnative/core/scripting/quickjs/quickjs.h221// - a function returning a JSValueConst does *not* transfer ownership;COMMENT
LOWnative/core/scripting/quickjs/quickjs.h401#define JS_NULL JS_MKVAL(JS_TAG_NULL, 0)COMMENT
LOWnative/core/scripting/quickjs/quickjs.h421#define JS_PROP_HAS_SHIFT 8COMMENT
LOWnative/core/scripting/quickjs/quickjs.h441#ifndef JS_DEFAULT_STACK_SIZECOMMENT
LOWnative/core/scripting/quickjs/quickjs.h481#define JS_DUMP_BYTECODE_PASS2 0x02 /* dump pass 2 code */COMMENT
LOWnative/core/scripting/quickjs/quickjs.h1401#define JS_DEF_CFUNC 0COMMENT
LOWnative/core/scripting/quickjs/quickjs.h1421#define JS_CGETSET_DEF2(name, fgetter, fsetter, prop_flags) { name, prop_flags, JS_DEF_CGETSET, 0, { .getset = { .get = COMMENT
LOWnative/core/scripting/quickjs/cutils.h21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,COMMENT
LOWnative/core/scripting/quickjs/cutils.h41#include <inttypes.h>COMMENT
LOWnative/core/scripting/quickjs/cutils.h61#include <windows.h>COMMENT
LOWnative/core/scripting/quickjs/cutils.h81# define __maybe_unusedCOMMENT
LOWnative/core/scripting/quickjs/cutils.h101/* return the pointer of type 'type *' containing 'ptr' as field 'member' */COMMENT
LOWnative/core/scripting/quickjs/cutils.h121#define JS_PRINTF_FORMAT_ATTR(format_param, dots_param) \COMMENT
LOWnative/core/scripting/src/sandbox/mod.rs1//! The folder of a mod. A mod script can read and write files only in itsCOMMENT
LOWnative/core/audio/src/sound_loop.rs1//! The disaster sound loop of SIMCITY.EXE 0x00480480 and 0x0047fda0. OneCOMMENT
LOWnative/core/sim/src/lib.rs1//! The SimCity 2000 simulation of OpenSC2K.COMMENT
LOWnative/core/sim/src/formats/sc2kfix.rs1//! The SC2X save format of the sc2kfix plugin (version 1), internally calledCOMMENT
LOWnative/core/sim/src/formats/sc2x/project.rs1//! Projection between the runtime working layout and the version 4 structures.COMMENT
LOWnative/core/sim/src/sim/overlay.rs1//! XTXT links, as OverlayData. Original IDs are unchanged. SC2X v2 addsCOMMENT
LOWnative/core/sim/src/sim/economy/city_value.rs1//! The city value, as CityValuePhase. The network values and most buildingCOMMENT
LOWnative/core/sim/src/sim/data_maps/mod.rs21pub const ZONE_BUILDING_ORIGIN: i64 = 0x80;COMMENT
LOWnative/simulation/src/bridge/city_cache.rs1//! Native city copies by handle. A cache keeps the chunks of one city betweenCOMMENT
LOWnative/rendering/src/bridge/changes.rs1//! Changed screen areas between two revisions of the region source chunks.COMMENT
LOWexamples/mods/monthly-report/main.js1// Monthly report: writes each month that the City Statistics mod records toCOMMENT
Hallucination Indicators2 hits · 20 pts
SeverityFileLineSnippetContext
CRITICALnative/core/sim/src/sim/economy/budget.rs281 for (label, value) in settlement.base.timing.steps.0.iter() {CODE
CRITICALnative/core/sim/src/sim/data_maps/native.rs77 for (name, value) in result.base.timing.steps.0.iter() {CODE
Deep Nesting14 hits · 13 pts
SeverityFileLineSnippetContext
LOWtools/build_desktop_release.py324CODE
LOWtools/test_validation_runner.py27CODE
LOWtools/test_validation_runner.py248CODE
LOWtools/validate_project.py181CODE
LOWtools/validate_project.py225CODE
LOWtools/validate_project.py287CODE
LOWtools/validate_project.py308CODE
LOWtools/validate_project.py415CODE
LOWtools/profile_resources.py19CODE
LOWtools/paint_icon.py484CODE
LOWtools/paint_icon.py526CODE
LOWtools/paint_icon.py648CODE
LOWtools/test_benchmark_failures.py9CODE
LOWtools/run_godot_check.py16CODE
Empty Error Handlers1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHtools/run_godot_check.py35except (OSError, ValueError, KeyError):CODE