AI Slop Code RIsk Monitor

wiltodelta/remove-ai-watermarks

Remove visible and invisible AI watermarks and provenance metadata from images and video. Python library and CLI for SynthID, C2PA, EXIF, IPTC, XMP, and common generative-AI marks.

23.1 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for wiltodelta/remove-ai-watermarks, a Python project with 5,948 GitHub stars. SynthScan examined 130,382 lines of code across 426 source files, recording 2784 pattern matches distributed across 15 syntactic categories. The legacy adjusted pattern signal is 23.1 (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.

23.1
Adjusted Signal
23.1
Raw Pattern Score
100%
Time Factor
2026-10-08
Last Push
5.9K
Stars
Python
Language
130.4K
Lines of Code
426
Files
2.8K
Pattern Hits
2026-10-12
Scan Date
0.07
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 56.9/100 · HIGH

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

Hallucinated Dependency & Supply Chain Risk 12.8/100 · LOW

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

Agent Over-Engineering Ratio 60.8/100 · HIGH

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

PR Review Velocity Impact 69.3/100 · HIGH

Which changes need focused human review? 2784 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 30MEDIUM 74LOW 2680

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 2784 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.

Hyper-Verbose Identifiers2032 hits · 1976 pts
SeverityFileLineSnippetContext
LOW⚡tests/test_cpu_offload.py64 def test_loaded_profile_or_preload_fallback_reports_support(self, profile: str, expected: bool) -> None:CODE
LOW⚡tests/test_cpu_offload.py67 def test_cases_cover_every_profile(self) -> None:CODE
LOW⚡tests/test_cpu_offload.py70 def test_the_underscore_spelling_resolves(self) -> None:CODE
LOW⚡tests/test_cpu_offload.py73 def test_the_set_names_a_profile_that_exists(self) -> None:CODE
LOW⚡tests/test_cpu_offload.py79 def test_it_names_the_profile_and_the_flag(self, caplog: pytest.LogCaptureFixture) -> None:CODE
LOW⚡tests/test_cpu_offload.py88 def test_a_profile_that_streams_its_global_stack_is_quiet(CODE
LOW⚡tests/test_cpu_offload.py95 def test_a_run_that_did_not_ask_for_offload_is_quiet(self, caplog: pytest.LogCaptureFixture) -> None:CODE
LOW⚡tests/test_cpu_offload.py100 def test_preloaded_auto_uses_qwen_offload_without_warning(CODE
LOWtests/test_cpu_offload.py122 def test_the_load_path_asks_before_building_the_stack(self, monkeypatch: pytest.MonkeyPatch) -> None:CODE
LOWtests/test_cpu_offload.py161 def test_request_wins_and_the_card_decides_otherwise(CODE
LOWtests/test_cpu_offload.py184 def enable_sequential_cpu_offload(self, *, device: str, gpu_id: int | None = None) -> None:CODE
LOW⚡tests/test_cpu_offload.py219 def test_a_small_card_streams_the_fused_stack_instead_of_moving_it(self, monkeypatch: pytest.MonkeyPatch) -> None:CODE
LOW⚡tests/test_cpu_offload.py224 def test_a_large_card_keeps_the_stack_resident_as_before(self, monkeypatch: pytest.MonkeyPatch) -> None:CODE
LOW⚡tests/test_cpu_offload.py228 def test_cpu_offload_streams_even_on_a_large_card(self, monkeypatch: pytest.MonkeyPatch) -> None:CODE
LOW⚡tests/test_cpu_offload.py235 def test_streaming_uses_the_current_cuda_device(CODE
LOWtests/test_cpu_offload.py247 def test_cpu_offload_reaches_the_sdxl_stack(self, monkeypatch: pytest.MonkeyPatch) -> None:CODE
LOW⚡tests/test_liblib_engine.py53def _compose_with_compact_pill(w: int = 1200, h: int = 1200) -> np.ndarray:CODE
LOW⚡tests/test_liblib_engine.py62 def test_box_horizontally_centered(self):CODE
LOW⚡tests/test_liblib_engine.py69 def test_box_scales_with_width(self):CODE
LOW⚡tests/test_liblib_engine.py80 def test_strict_only_no_provenance_relaxation(self):CODE
LOW⚡tests/test_liblib_engine.py83 def test_gate_above_clean_arm_max(self):CODE
LOW⚡tests/test_liblib_engine.py87 def test_small_image_size_floor(self):CODE
LOW⚡tests/test_liblib_engine.py104 def test_detects_composed_mark(self):CODE
LOW⚡tests/test_liblib_engine.py110 def test_clean_frame_stays_quiet(self):CODE
LOW⚡tests/test_liblib_engine.py115 def test_mask_covers_logo_and_wordmark(self):CODE
LOWtests/test_liblib_engine.py128 def test_mask_also_covers_a_compact_top_left_pill(self):CODE
LOWtests/test_liblib_engine.py144 def test_current_provider_pill_is_removed_with_liblib_metadata(self):CODE
LOWtests/test_liblib_engine.py160 def test_no_mask_on_clean_frame(self):CODE
LOWtests/test_liblib_engine.py165 def test_force_masks_the_whole_locate_box_on_a_clean_frame(self):CODE
LOW⚡tests/test_classify.py164def test_definitely_is_the_and_of_ridge_and_mlp() -> None:CODE
LOW⚡tests/test_classify.py171def test_only_definitely_is_ai() -> None:CODE
LOW⚡tests/test_classify.py177def test_provider_requires_margin_over_no_ai() -> None:CODE
LOW⚡tests/test_classify.py184def test_bytedance_names_the_shared_bytedance_renderer_lineage() -> None:CODE
LOW⚡tests/test_classify.py192def test_older_snapshots_without_bytedance_keep_working() -> None:CODE
LOW⚡tests/test_classify.py212def test_definitely_plus_openai_is_ai_openai() -> None:CODE
LOW⚡tests/test_classify.py221def test_definitely_without_provider_scores_stays_ai_with_no_provider() -> None:CODE
LOW⚡tests/test_classify.py227def test_definitely_plus_no_ai_head_has_no_provider() -> None:CODE
LOW⚡tests/test_classify.py233def test_possibly_does_not_run_provider() -> None:CODE
LOW⚡tests/test_classify.py240def test_likely_human_does_not_run_provider() -> None:CODE
LOW⚡tests/test_classify.py247def test_shipped_receipt_gate_asset_matches_the_pinned_threshold() -> None:CODE
LOW⚡tests/test_classify.py255def test_receipt_gate_downgrades_definitely_to_unknown() -> None:CODE
LOW⚡tests/test_classify.py262def test_receipt_gate_below_threshold_keeps_ai_and_provider() -> None:CODE
LOW⚡tests/test_classify.py277def test_receipt_gate_never_touches_non_definitely(ridge: float, mlp: float, expected: str) -> None:CODE
LOW⚡tests/test_classify.py282def test_receipt_gate_score_is_deterministic_and_bounded() -> None:CODE
LOW⚡tests/test_classify.py289def test_receipt_gate_prefers_the_weights_directory(tmp_path: Path) -> None:CODE
LOWtests/test_classify.py56def test_hub_snapshot_is_the_freeze_revision() -> None:CODE
LOWtests/test_classify.py61def test_runtime_requests_only_the_selected_backend_model(monkeypatch: pytest.MonkeyPatch) -> None:CODE
LOWtests/test_classify.py97def test_backend_requires_its_own_model_file(tmp_path: Path) -> None:CODE
LOWtests/test_classify.py108def test_onnx_backend_is_cpu_only() -> None:CODE
LOWtests/test_classify.py118def test_onnx_backend_names_its_install_extra(monkeypatch: pytest.MonkeyPatch) -> None:CODE
LOWtests/test_classify.py129def test_embed_dispatches_to_the_selected_backend(monkeypatch: pytest.MonkeyPatch) -> None:CODE
LOWtests/test_classify.py144def test_shipped_operating_point_matches_the_runtime_defaults() -> None:CODE
LOWtests/test_classify.py315def test_receipt_gate_stable_name_beats_the_legacy_spelling(tmp_path: Path) -> None:CODE
LOWtests/test_classify.py351def test_receipt_threshold_defaults_to_the_artifact_value() -> None:CODE
LOWtests/test_classify.py368def test_receipt_gate_falls_back_to_the_package_asset() -> None:CODE
LOWtests/test_classify.py379def _patch_definitely_runtime(monkeypatch: pytest.MonkeyPatch, *, forensic_calls: list[int]) -> None:CODE
LOWtests/test_classify.py428def test_provenance_paths_do_not_import_classify(tmp_path: Path, caller: str) -> None:CODE
LOWtests/test_classify.py484def test_operating_point_prefers_the_sidecar(tmp_path: Path) -> None:CODE
LOWtests/test_classify.py494def test_missing_extra_raises_the_install_hint(monkeypatch: pytest.MonkeyPatch, tmp_path: Path) -> None:CODE
LOWtests/test_classify.py509def test_cli_classify_without_extra_prints_the_install_hint(monkeypatch: pytest.MonkeyPatch, tmp_path: Path) -> None:CODE
1972 more matches not shown…
Unused Imports353 hits · 340 pts
SeverityFileLineSnippetContext
LOWtests/test_cpu_offload.py13CODE
LOWtests/test_liblib_engine.py9CODE
LOWtests/test_classify.py3CODE
LOWtests/test_gemini_engine.py3CODE
LOWtests/test_metadata_internals.py4CODE
LOWtests/test_synthid_ensemble_detector.py1CODE
LOWtests/test_watermark_benchmark_audio_cohort.py3CODE
LOWtests/test_maintenance.py3CODE
LOWtests/test_pill_engine.py7CODE
LOWtests/test_c2pa_registry_sync.py3CODE
LOWtests/test_tc260_producers.py3CODE
LOWtests/conftest.py3CODE
LOWtests/test_baidu_engine.py11CODE
LOWtests/test_publish_photo_classify_hf.py3CODE
LOWtests/test_forensic_metadata.py3CODE
LOWtests/test_synthid_research_manifest.py3CODE
LOWtests/test_synthid_pixel_probe.py9CODE
LOWtests/test_perth_oracle.py3CODE
LOWtests/test_synthid_detector.py3CODE
LOWtests/test_registered_mark_calibrate.py3CODE
LOWtests/test_kling_engine.py9CODE
LOWtests/test_publish_source_classify_hf.py3CODE
LOWtests/test_packaging.py3CODE
LOWtests/test_cli_robustness.py20CODE
LOWtests/test_watermark_benchmark_report.py3CODE
LOWtests/test_openai_provenance.py3CODE
LOWtests/test_provider_oracles.py3CODE
LOWtests/test_jimeng_engine.py8CODE
LOWtests/test_security_clamp.py17CODE
LOWtests/test_source_pipeline_classifier.py3CODE
LOWtests/test_microsoft_engine.py9CODE
LOWtests/test_designer_synthid_suppression.py11CODE
LOWtests/test_trustmark_detector.py9CODE
LOWtests/test_video_synthid_sweep.py3CODE
LOWtests/test_watermark_benchmark_real_cohort.py3CODE
LOWtests/test_synthid_corpus.py3CODE
LOWtests/test_source_classify.py3CODE
LOWtests/test_synthid_pixel_attack.py1CODE
LOWtests/test_tiling.py9CODE
LOWtests/test_synthid_runtime_expert_scores.py1CODE
LOWtests/test_forensic_124d.py3CODE
LOWtests/test_video_temporal.py3CODE
LOWtests/test_spectral_pipeline_probe.py3CODE
LOWtests/test_synthid_research_inventory.py3CODE
LOWtests/test_synthid_routed_detector.py1CODE
LOWtests/test_generic_ai_label_engine.py11CODE
LOWtests/test_qwen_zimage_pipeline.py3CODE
LOWtests/test_fidelity_matching.py12CODE
LOWtests/test_watermark_registry.py3CODE
LOWtests/test_invisible_watermark.py7CODE
LOWtests/test_visible_examples.py14CODE
LOWtests/test_region_eraser.py3CODE
LOWtests/test_video_fidelity_probe.py8CODE
LOWtests/test_evaluation_audit_regressions.py3CODE
LOWtests/test_synthid_periodic_tile_ablation.py1CODE
LOWtests/test_synthid_confound_probe.py3CODE
LOWtests/test_metadata.py3CODE
LOWtests/test_synthid_ensemble_attack.py1CODE
LOWtests/test_video.py3CODE
LOWtests/test_synthid_routed_expert_bank.py1CODE
293 more matches not shown…
Decorative Section Separators55 hits · 189 pts
SeverityFileLineSnippetContext
MEDIUM⚡tests/test_gemini_engine.py20# ── WatermarkSize / config helpers ──────────────────────────────────COMMENT
MEDIUM⚡tests/test_gemini_engine.py59# ── Alpha map ───────────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_gemini_engine.py89# ── GeminiEngine ────────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_gemini_engine.py113# ── Removal: localize -> fill ───────────────────────────────────────COMMENT
MEDIUM⚡tests/test_gemini_engine.py171# ── Detection ───────────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_metadata_internals.py47# ── Constants ───────────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_metadata_internals.py81# ── Extractor ───────────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_metadata_internals.py582# ── ISOBMFF (AVIF / HEIF / JPEG-XL container stripping) ──────────────COMMENT
MEDIUMtests/test_metadata_internals.py118# ── Cleaner ─────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_metadata_internals.py137# ── C2PA ────────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_metadata_internals.py472# ── CBOR text extraction (parser internals) ─────────────────────────COMMENT
MEDIUM⚡tests/test_metadata.py69# ── Key detection ───────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_metadata.py97# ── has_ai_metadata / get_ai_metadata ───────────────────────────────COMMENT
MEDIUMtests/test_metadata.py551# ── SynthID-source detection (metadata proxy) ────────────────────────COMMENT
MEDIUMtests/test_metadata.py648# ── remove_ai_metadata ──────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_doubao_engine.py61# ── Detection: alpha-template NCC ───────────────────────────────────COMMENT
MEDIUMtests/test_doubao_engine.py164# ── Alpha asset + footprint mask + localize -> fill removal ─────────COMMENT
MEDIUM⚡tests/test_identify.py1123# ── Local diffusion parameters (Stable Diffusion / ComfyUI) ─────────COMMENT
MEDIUM⚡tests/test_identify.py1229# ── Visible-sparkle fallback (mocked detector) ──────────────────────COMMENT
MEDIUM⚡tests/test_identify.py1435# ── Caveats and serialization ───────────────────────────────────────COMMENT
MEDIUMtests/test_identify.py369# ── Pure attribution logic (no file IO) ─────────────────────────────COMMENT
MEDIUMtests/test_identify.py793# ── End-to-end verdicts on real fixtures ────────────────────────────COMMENT
MEDIUMtests/test_identify.py1157# ── China TC260 AIGC label as a PNG text chunk (Doubao) ─────────────COMMENT
MEDIUMtests/test_identify.py1184# ── Higgsfield job marker, hf-job-id (medium confidence) ───────────COMMENT
MEDIUMtests/test_identify.py1732# ── Open invisible watermark (SD/SDXL/FLUX) integration ─────────────COMMENT
MEDIUMtests/test_identify.py1799# ── Integrity clashes (contradictions between independent signals) ──────COMMENT
MEDIUM⚡tests/test_platform.py31# ── Device detection ────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_platform.py404# ── Format utilities ────────────────────────────────────────────────COMMENT
MEDIUMtests/test_platform.py442# ── Availability checks ────────────────────────────────────────────COMMENT
MEDIUMtests/test_platform.py488# ── Platform-specific path handling ─────────────────────────────────COMMENT
MEDIUMscripts/render_visible_examples.py251# ── Video mark examples ──────────────────────────────────────────────────────COMMENT
MEDIUMscripts/fidelity_metrics.py73# ── helpers ──────────────────────────────────────────────────────────COMMENT
MEDIUMscripts/fidelity_metrics.py95# ── text: PaddleOCR defaults ─────────────────────────────────────────COMMENT
MEDIUMscripts/fidelity_metrics.py175# ── face: detection + ArcFace + texture ──────────────────────────────COMMENT
MEDIUMscripts/fidelity_metrics.py247# ── whole image: LPIPS / SSIM / PSNR ─────────────────────────────────COMMENT
MEDIUMscripts/fidelity_metrics.py278# ── reporting ────────────────────────────────────────────────────────COMMENT
MEDIUMscripts/fidelity_metrics.py289# ── CLI ──────────────────────────────────────────────────────────────COMMENT
MEDIUMsrc/remove_ai_watermarks/metadata.py38# ── Known AI metadata keys ──────────────────────────────────────────COMMENT
MEDIUMsrc/remove_ai_watermarks/metadata.py2140# ── Per-file probe memoization ──────────────────────────────────────────────COMMENT
MEDIUMsrc/remove_ai_watermarks/metadata.py2224# ── Shared with the portable metadata record ────────────────────────COMMENT
MEDIUMsrc/remove_ai_watermarks/image_io.py148# ── Display-tag carry across re-encodes (issue #98) ─────────────────────────COMMENT
MEDIUMsrc/remove_ai_watermarks/identify.py1235 # ── C2PA Content Credentials ────────────────────────────────────COMMENT
MEDIUMsrc/remove_ai_watermarks/identify.py1354 # ── SynthID provenance evidence ─────────────────────────────────COMMENT
MEDIUMsrc/remove_ai_watermarks/identify.py1500 # ── Local diffusion parameters (Stable Diffusion / ComfyUI) ──────COMMENT
MEDIUMsrc/remove_ai_watermarks/identify.py1519 # ── xAI / Grok signature scheme ───────────────────────────────────COMMENT
MEDIUMsrc/remove_ai_watermarks/identify.py1529 # ── Higgsfield job marker (hf-job-id PNG text chunk) ─────────────COMMENT
MEDIUMsrc/remove_ai_watermarks/identify.py1543 # ── Samsung Galaxy AI editing marker (genAIType) ─────────────────COMMENT
MEDIUMsrc/remove_ai_watermarks/identify.py1559 # ── Open invisible watermark (SD / SDXL / FLUX, dwtDct) ──────────COMMENT
MEDIUMsrc/remove_ai_watermarks/identify.py1578 # ── Verdict so far (metadata + embedded watermark) ──────────────COMMENT
MEDIUMsrc/remove_ai_watermarks/humanizer.py91# ── Adaptive polish (target the input's detail level; spare text) ──────────────COMMENT
MEDIUMsrc/remove_ai_watermarks/_text_mark_engine.py311 # ── Templates (delegate to the asset-keyed module cache) ────────────COMMENT
MEDIUMsrc/remove_ai_watermarks/_text_mark_engine.py358 # ── Locate ──────────────────────────────────────────────────────────COMMENT
MEDIUMsrc/remove_ai_watermarks/_text_mark_engine.py552 # ── Mask ────────────────────────────────────────────────────────────COMMENT
MEDIUMsrc/remove_ai_watermarks/_text_mark_engine.py596 # ── Detect ──────────────────────────────────────────────────────────COMMENT
MEDIUMsrc/remove_ai_watermarks/_text_mark_engine.py702 # ── Inpaint footprint (for the inpaint-fallback removal path) ────────COMMENT
Excessive Try-Catch Wrapping135 hits · 148 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_metadata_internals.py1057def outcome(fn):CODE
LOWtests/test_metadata_internals.py1060 except Exception as exc:CODE
LOWtests/test_pill_engine.py23 except Exception:CODE
MEDIUMtests/test_pill_engine.py19def _font_ok() -> bool:CODE
LOW⚡tests/test_image_io.py182 except Exception:CODE
LOWtests/test_image_io.py135 except Exception:CODE
LOWtests/test_video_invisible.py55 except Exception as exc: # pragma: no cover - mutation cleanup pathCODE
MEDIUMtests/test_video_invisible.py51def write_frames() -> None:CODE
LOWscripts/detection_timing.py123 except Exception: # unreadable or an unsupported containerCODE
LOWscripts/detection_timing.py170 except Exception as exc:CODE
LOWscripts/detection_timing.py179 except Exception as exc:CODE
LOWscripts/vendor_mark_calibrate.py101 except Exception:CODE
LOWscripts/vendor_mark_calibrate.py159 except Exception: # noqa: S112 -- one bad file must not kill the sweepCODE
LOWscripts/vendor_mark_calibrate.py329 except Exception: # noqa: S112 -- one bad file must not kill the fitCODE
LOWscripts/vendor_mark_calibrate.py464 except Exception:CODE
LOWscripts/vendor_mark_calibrate.py504 except Exception: # noqa: S112 -- one bad file must not kill the poolCODE
LOWscripts/pill_gate_audit.py93 except Exception as e:CODE
LOWscripts/pill_gate_audit.py172 except Exception: # noqa: S112CODE
LOWscripts/pill_gate_audit.py188 except Exception: # noqa: S112CODE
LOWscripts/pill_gate_audit.py207 except Exception: # noqa: S112CODE
LOWscripts/record_parity_audit.py93 except Exception as exc:CODE
LOWscripts/record_parity_audit.py98 except Exception as exc:CODE
LOWscripts/fill_quality.py102 except Exception: # noqa: S112 -- an unreadable local file is not a candidateCODE
LOWscripts/fill_quality.py154 except Exception as e:CODE
LOWscripts/visible_groundtruth.py68 except Exception:CODE
LOWscripts/synthid_corpus.py97 except Exception: # sips missing/odd output; dims stay unknownCODE
LOWscripts/synthid_corpus.py109 except Exception as exc: # unknown/user formats can raise non-OSError; see CLAUDE.mdCODE
LOWscripts/visible_removal_audit.py109 except Exception as exc:CODE
LOWscripts/openai_provenance_check.py70 except Exception as exc:CODE
LOWscripts/synthid_research_manifest.py328 except Exception as exc: # Pillow intentionally accepts many user-controlled formats.CODE
LOWscripts/detector_response.py198 except Exception: # noqa: S112 -- tolerate a torn last lineCODE
LOWscripts/detector_response.py212 except Exception as e: # a crashed source must not kill the sweepCODE
LOWscripts/visible_positives.py110 except Exception as e:CODE
LOWscripts/metadata_removal_audit.py72 except Exception:CODE
LOW⚡scripts/metadata_removal_audit.py100 except Exception as exc:CODE
LOW⚡scripts/metadata_removal_audit.py110 except Exception as exc:CODE
LOW⚡scripts/metadata_removal_audit.py118 except Exception as exc:CODE
LOWscripts/metadata_removal_audit.py140 except Exception: # noqa: S112 -- skip an unreadable identify JSON, not security-relevantCODE
LOWscripts/resource_ceilings.py76except Exception as e:CODE
LOWscripts/corpus_gap_scan.py199 except Exception as exc:CODE
LOWscripts/ladder_headroom.py135 except Exception:CODE
LOWscripts/ladder_headroom.py147 except Exception:CODE
LOWscripts/ladder_headroom.py219 except Exception: # noqa: S112 -- one bad file must not kill the sweepCODE
LOWscripts/vendor_cohort_harvest.py76 except Exception:CODE
LOWscripts/vendor_cohort_harvest.py116 except Exception: # noqa: S112 -- one bad file must not kill the scanCODE
LOWscripts/smoke_matrix.py140 except Exception as e:CODE
LOWscripts/smoke_matrix.py165 except Exception as e:CODE
LOWscripts/smoke_matrix.py404 except Exception:CODE
LOWscripts/sidecar_regression.py167 except Exception as e: # a corrupt sidecar must not kill the sweepCODE
LOWscripts/sidecar_regression.py182 except Exception as e: # record and continue; a crash IS a findingCODE
LOWscripts/sidecar_regression.py221 except Exception: # noqa: S112 -- tolerate a torn last line from an interrupted runCODE
LOWscripts/watermark_benchmark.py792 except Exception as exc:CODE
LOW⚡scripts/cjk_tail_probe.py128 except Exception:CODE
LOW⚡scripts/cjk_tail_probe.py136 except Exception:CODE
LOW⚡scripts/cjk_tail_probe.py144 except Exception:CODE
LOWscripts/cjk_tail_probe.py196 except Exception: # noqa: S112 -- one bad file must not kill the sweepCODE
LOWscripts/controlnet_sweep.py279 except Exception as exc:CODE
LOWsrc/remove_ai_watermarks/pixel_evidence.py170 except Exception as exc:CODE
LOWsrc/remove_ai_watermarks/pixel_evidence.py284 except Exception as exc:CODE
LOW⚡src/remove_ai_watermarks/pixel_evidence.py426 except Exception as exc:CODE
75 more matches not shown…
Deep Nesting86 hits · 77 pts
SeverityFileLineSnippetContext
LOWtests/test_synthid_research_manifest.py255CODE
LOWtests/test_pixel_evidence.py167CODE
LOWtests/test_evaluation_data.py14CODE
LOWscripts/calibrate_generic_ai_label.py62CODE
LOWscripts/synthid_color_space_probe.py66CODE
LOWscripts/vendor_mark_calibrate.py470CODE
LOWscripts/skill_eval.py107CODE
LOWscripts/skill_eval.py194CODE
LOWscripts/pill_gate_audit.py102CODE
LOWscripts/pill_gate_audit.py157CODE
LOWscripts/selective_text_restoration.py344CODE
LOWscripts/spectral_pipeline_probe.py98CODE
LOWscripts/analyze_engine_selection_study.py52CODE
LOWscripts/synthid_conformal_cascade.py137CODE
LOWscripts/synthid_affine_lattice_probe.py561CODE
LOWscripts/synthid_affine_lattice_probe.py1454CODE
LOWscripts/audioseal_experiment.py712CODE
LOWscripts/audioseal_experiment.py719CODE
LOWscripts/fill_quality.py108CODE
LOWscripts/visible_groundtruth.py80CODE
LOWscripts/provider_oracle_web.py246CODE
LOWscripts/synthid_corpus.py77CODE
LOWscripts/visible_removal_audit.py75CODE
LOWscripts/visible_eval.py70CODE
LOWscripts/render_visible_examples.py261CODE
LOWscripts/detector_response.py129CODE
LOWscripts/detector_response.py176CODE
LOWscripts/synthid_periodic_tile_ablation.py100CODE
LOWscripts/real_examples_e2e.py101CODE
LOWscripts/metadata_removal_audit.py180CODE
LOWscripts/detection_timing_report.py147CODE
LOWscripts/fidelity_metrics.py137CODE
LOWscripts/fidelity_metrics.py324CODE
LOWscripts/corpus_gap_scan.py321CODE
LOWscripts/watermark_benchmark_report.py127CODE
LOWscripts/watermark_benchmark_report.py391CODE
LOWscripts/synthid_confound_probe.py101CODE
LOWscripts/synthid_oracle_batch.py321CODE
LOWscripts/sidecar_regression.py188CODE
LOWscripts/controlnet_sweep.py225CODE
LOWsrc/remove_ai_watermarks/video_invisible.py318CODE
LOWsrc/remove_ai_watermarks/video_invisible.py353CODE
LOWsrc/remove_ai_watermarks/metadata.py249CODE
LOWsrc/remove_ai_watermarks/metadata.py302CODE
LOWsrc/remove_ai_watermarks/metadata.py477CODE
LOWsrc/remove_ai_watermarks/metadata.py973CODE
LOWsrc/remove_ai_watermarks/metadata.py1014CODE
LOWsrc/remove_ai_watermarks/metadata.py1200CODE
LOWsrc/remove_ai_watermarks/metadata.py1343CODE
LOWsrc/remove_ai_watermarks/metadata.py1902CODE
LOWsrc/remove_ai_watermarks/image_io.py202CODE
LOWsrc/remove_ai_watermarks/image_io.py409CODE
LOWsrc/remove_ai_watermarks/metadata_record.py339CODE
LOWsrc/remove_ai_watermarks/video_visible.py460CODE
LOWsrc/remove_ai_watermarks/video_visible.py1481CODE
LOWsrc/remove_ai_watermarks/cli.py1399CODE
LOWsrc/remove_ai_watermarks/forensic_metadata.py212CODE
LOWsrc/remove_ai_watermarks/forensic_metadata.py265CODE
LOWsrc/remove_ai_watermarks/forensic_metadata.py328CODE
LOWsrc/remove_ai_watermarks/forensic_metadata.py415CODE
26 more matches not shown…
Cross-File Repetition15 hits · 75 pts
SeverityFileLineSnippetContext
HIGHtests/test_jimeng_engine.py0a bright blob is not the glyph shape -> low correlation, not detected.STRING
HIGHtests/test_generic_ai_label_engine.py0a bright blob is not the glyph shape -> low correlation, not detected.STRING
HIGHtests/test_doubao_engine.py0a bright blob is not the glyph shape -> low correlation, not detected.STRING
HIGHtests/test_samsung_engine.py0a bright blob is not the glyph shape -> low correlation, not detected.STRING
HIGHtests/test_openart_engine.py0a bright blob is not the glyph shape -> low correlation, not detected.STRING
HIGHtests/test_jimeng_engine.py0the rendered glyph silhouette correlates with itself, not with a filled block.STRING
HIGHtests/test_doubao_engine.py0the rendered glyph silhouette correlates with itself, not with a filled block.STRING
HIGHtests/test_samsung_engine.py0the rendered glyph silhouette correlates with itself, not with a filled block.STRING
HIGHtests/test_openart_engine.py0the rendered glyph silhouette correlates with itself, not with a filled block.STRING
HIGHtests/test_generic_ai_label_engine.py0the rendered glyph silhouette correlates with itself, not with a filled block.STRING
HIGHtests/test_jimeng_engine.py0footprint_mask must not crash on degenerate sizes or non-3-channel inputs.STRING
HIGHtests/test_generic_ai_label_engine.py0footprint_mask must not crash on degenerate sizes or non-3-channel inputs.STRING
HIGHtests/test_doubao_engine.py0footprint_mask must not crash on degenerate sizes or non-3-channel inputs.STRING
HIGHtests/test_samsung_engine.py0footprint_mask must not crash on degenerate sizes or non-3-channel inputs.STRING
HIGHtests/test_openart_engine.py0footprint_mask must not crash on degenerate sizes or non-3-channel inputs.STRING
Synthetic Comment Markers7 hits · 58 pts
SeverityFileLineSnippetContext
HIGH⚡tests/test_metadata_internals.py555 assert "synthid_watermark" not in info # procedural, not AI-generatedCODE
HIGH⚡tests/test_metadata.py2209 # verdict must stay 'unknown', not 'AI-generated'.COMMENT
HIGH⚡tests/test_identify.py2001 # TC260 AIGC label) -- a genuine camera capture is not AI-generated, soCOMMENT
HIGHtests/test_identify.py2128 # A JUMBF-wrapped manifest from a SynthID-pairing signer on AI-generated content:COMMENT
HIGHdocs/ai-generated-image-classifiers.md1# AI-generated image classifiers (research)COMMENT
HIGHdocs/ai-generated-image-classifiers.md203[`Awesome-AI-generated-Image-Detection`](https://github.com/nxZhai/Awesome-AI-generated-Image-Detection).CODE
HIGHsrc/remove_ai_watermarks/metadata.py749# without proving the whole image is AI-generated. Scoped to the Samsung editorCOMMENT
Over-Commented Block48 hits · 42 pts
SeverityFileLineSnippetContext
LOWpyproject.toml101 # Generation`` (its ``nucleusmoe_image`` pipeline), which only exists inCOMMENT
LOWscripts/selective_text_restoration.py1# /// scriptCOMMENT
LOWscripts/infer_text_lines.py1# /// scriptCOMMENT
LOWscripts/render_vendor_silhouettes.py41 # Yuanbao's stamp is a TWO-LINE block (元宝 over AI生成), left-aligned, tightlyCOMMENT
LOWscripts/fidelity_metrics.py1# /// scriptCOMMENT
LOWscripts/qwen_scrub_prototype.py1# /// scriptCOMMENT
LOWskills/remove-ai-watermarks/scripts/probe.py21from pathlib import PathCOMMENT
LOWsrc/remove_ai_watermarks/jimeng_engine.py41TOPHAT_DELTA = 12COMMENT
LOWsrc/remove_ai_watermarks/generic_ai_label_engine.py81WM_HEIGHT_FRAC = 0.10COMMENT
LOWsrc/remove_ai_watermarks/generic_ai_label_engine.py101# 0.40 0.10 67% 96% 24 0 1 (qwen)COMMENT
LOWsrc/remove_ai_watermarks/generic_ai_label_engine.py121# to relax into safely.COMMENT
LOWsrc/remove_ai_watermarks/metadata.py101 return C2PA_UUID in data or (b"jumb" in data and b"c2pa" in data.lower())COMMENT
LOWsrc/remove_ai_watermarks/metadata.py2001 return output_pathCOMMENT
LOWsrc/remove_ai_watermarks/metadata_record.py61# cannot disagree about a chunk type inside it. A smaller window would be cheaper butCOMMENT
LOWsrc/remove_ai_watermarks/classify.py41# directory); the package asset is the fallback for pre-gate freezes.COMMENT
LOWsrc/remove_ai_watermarks/watermark_registry.py61# quality installed model -- LaMa, else MI-GAN, else cv2 (see ``resolve_backend``); theCOMMENT
LOWsrc/remove_ai_watermarks/watermark_registry.py81# who can see the mark is better served by pointing at it (``erase --region``) or namingCOMMENT
LOWsrc/remove_ai_watermarks/watermark_registry.py281 # Which provenance regime this mark's vendor labels under, or None. "tc260" meansCOMMENT
LOWsrc/remove_ai_watermarks/watermark_registry.py381COMMENT
LOWsrc/remove_ai_watermarks/watermark_registry.py401COMMENT
LOWsrc/remove_ai_watermarks/watermark_registry.py421# band precision 95% CI populationCOMMENT
LOWsrc/remove_ai_watermarks/api.py741 img_path,COMMENT
LOWsrc/remove_ai_watermarks/doubao_engine.py61# fires. Calibrated on the 240-image unbiased recall sample, full auto path:COMMENT
LOWsrc/remove_ai_watermarks/identify.py501 """Aggregated provenance verdict for one image."""COMMENT
LOWsrc/remove_ai_watermarks/identify.py521 # confidence string.COMMENT
LOWsrc/remove_ai_watermarks/identify.py621 byte scan recovers the same attribution (e.g. "Imagen", "DALL-E").COMMENT
LOWsrc/remove_ai_watermarks/identify.py901 return NoneCOMMENT
LOWsrc/remove_ai_watermarks/identify.py1001COMMENT
LOWsrc/remove_ai_watermarks/identify.py1221 # invisible watermark are deliberately excluded: the former is a fuzzy visualCOMMENT
LOWsrc/remove_ai_watermarks/identify.py1241 # by substring made the displayed reason a second, looser rule than the verdict.COMMENT
LOWsrc/remove_ai_watermarks/identify.py1341 # when the embedded manifest is stripped, so the credentials stay recoverableCOMMENT
LOWsrc/remove_ai_watermarks/identify.py1361 # file, one reading a portable record -- and a rule that lives in only one of themCOMMENT
LOWsrc/remove_ai_watermarks/qwen_engine.py81DETECT_MIN_COVERAGE = 0.04 # unused by the tophat front-end (kept for config parity)COMMENT
LOWsrc/remove_ai_watermarks/_text_mark_engine.py41# genuine mark while killing the icon/thumbnail noise band (<=96 px). Detection isCOMMENT
LOWsrc/remove_ai_watermarks/_text_mark_engine.py61# [0.340,0.400) 91% 73-98% 23COMMENT
LOWsrc/remove_ai_watermarks/_text_mark_engine.py101 # glyph appearanceCOMMENT
LOWsrc/remove_ai_watermarks/_text_mark_engine.py121 # TextMarkEngine.tophat_response for the measurement that motivated the split.COMMENT
LOWsrc/remove_ai_watermarks/kling_engine.py81TOPHAT_DELTA = 12COMMENT
LOWsrc/remove_ai_watermarks/kling_engine.py121 alpha_height_frac=_ALPHA_HEIGHT_FRAC,COMMENT
LOW…c/remove_ai_watermarks/_internal/watermark_profiles.py41# ``pip install remove-ai-watermarks[qwen-zimage]`` dies with "no matches found"COMMENT
LOW…c/remove_ai_watermarks/_internal/watermark_profiles.py61 AUTO_PROFILE: False,COMMENT
LOW…c/remove_ai_watermarks/_internal/watermark_profiles.py81COMMENT
LOW…c/remove_ai_watermarks/_internal/watermark_profiles.py101# carriers, so 0.35 is the content-agnostic operating floor.COMMENT
LOW…c/remove_ai_watermarks/_internal/watermark_profiles.py121COMMENT
LOW…c/remove_ai_watermarks/_internal/watermark_profiles.py141COMMENT
LOW…c/remove_ai_watermarks/_internal/watermark_profiles.py161# Qwen cleared both withheld carriers at its then-existing 0.07675 operatingCOMMENT
LOWsrc/remove_ai_watermarks/_internal/constants.py181 # 2026-09-24: issuer "RUNWAY AI, INC.", software agent "Runway Image/VideoCOMMENT
LOWsrc/remove_ai_watermarks/_internal/isobmff.py61# byte-order ambiguity and stays surgical: only AI-bearing XMP is dropped, plainCOMMENT
AI Slop Vocabulary10 hits · 30 pts
SeverityFileLineSnippetContext
MEDIUM⚡tests/test_metadata_internals.py539 assert "OpenAI" in info["issuer"] # issuer byte-search still robustCODE
MEDIUM⚡tests/test_platform.py385 # The more-robust watermark wins -> safer (higher) strength.COMMENT
MEDIUMscripts/video_synthid_sweep.py181 # scaling-factor gate lives there, and the harness that produces the certifiedCOMMENT
MEDIUMscripts/skill_eval.py42# A model that recognizes the harness stops behaving like a user's agent: the firstCOMMENT
MEDIUMscripts/skill_eval_stub.py85 # deciding the CLI was broken -- the harness measuring itself.COMMENT
MEDIUMscripts/synthid_affine_lattice_probe.py874 """Select a robust cyclic phase and confirm it on disjoint patches.STRING
MEDIUMscripts/visible_eval.py46# silently vanishing from the evaluation harness.COMMENT
MEDIUMscripts/resource_ceilings.py71 # cv2 figure, and it GROWS with the input, so the harness would partly manufactureCOMMENT
MEDIUMsrc/remove_ai_watermarks/pixel_evidence.py59# Analysis resolution. Every statistic here is scale-robust, and a 2048px cap keepsCOMMENT
MEDIUMsrc/remove_ai_watermarks/identify.py631# on real samples), and more robust than parsing the claim generator (whichCOMMENT
Modern Structural Boilerplate26 hits · 26 pts
SeverityFileLineSnippetContext
LOWtests/test_provider_oracle_web.py140 def set_input_files(self, path: str, *, timeout: int) -> None:CODE
LOWscripts/synthid_periodic_tile.py14__all__ = ["cyclic_tile_correlations", "fold_residual_template", "unit_tile"]CODE
LOWscripts/provider_oracle_web.py194def _set_upload_file(page: Page, surface: str, upload: Path, timeout_seconds: float) -> None:CODE
LOWscripts/synthid_runtime/__init__.py5__all__ = ["SynthIDDetection", "detect_synthid", "is_available"]CODE
LOWsrc/remove_ai_watermarks/pixel_evidence.py57logger = logging.getLogger(__name__)CODE
LOWsrc/remove_ai_watermarks/video_invisible.py51__all__ = ["build_temporal_reference", "temporal_residual_ratio"]CODE
LOWsrc/remove_ai_watermarks/metadata.py31logger = logging.getLogger(__name__)CODE
LOWsrc/remove_ai_watermarks/gemini_engine.py24logger = logging.getLogger(__name__)CODE
LOWsrc/remove_ai_watermarks/invisible_watermark.py36logger = logging.getLogger(__name__)CODE
LOWsrc/remove_ai_watermarks/metadata_record.py58logger = logging.getLogger(__name__)CODE
LOWsrc/remove_ai_watermarks/invisible_engine.py42logger = logging.getLogger(__name__)CODE
LOWsrc/remove_ai_watermarks/region_eraser.py50logger = logging.getLogger(__name__)CODE
LOWsrc/remove_ai_watermarks/text_draft.py30__all__ = [CODE
LOWsrc/remove_ai_watermarks/__init__.py40__all__ = [CODE
LOWsrc/remove_ai_watermarks/runninghub_engine.py58logger = logging.getLogger(__name__)CODE
LOWsrc/remove_ai_watermarks/watermark_registry.py56logger = logging.getLogger(__name__)CODE
LOWsrc/remove_ai_watermarks/trustmark_detector.py33logger = logging.getLogger(__name__)CODE
LOWsrc/remove_ai_watermarks/cli.py100def _setup_logging(verbose: bool) -> None:CODE
LOWsrc/remove_ai_watermarks/forensic_metadata.py42__all__ = [CODE
LOWsrc/remove_ai_watermarks/forensic_metadata.py257def _set_jpeg_trailer(result: dict[str, Any], data: bytes, eoi: int) -> None:CODE
LOWsrc/remove_ai_watermarks/identify.py87logger = logging.getLogger(__name__)CODE
LOWsrc/remove_ai_watermarks/_text_mark_engine.py31logger = logging.getLogger(__name__)CODE
LOWsrc/remove_ai_watermarks/_internal/watermark_remover.py35logger = logging.getLogger(__name__)CODE
LOWsrc/remove_ai_watermarks/_internal/c2pa.py32logger = logging.getLogger(__name__)CODE
LOWsrc/remove_ai_watermarks/_internal/isobmff.py51logger = logging.getLogger(__name__)CODE
LOWsrc/remove_ai_watermarks/_internal/tiling.py27logger = logging.getLogger(__name__)CODE
Empty Error Handlers4 hits · 20 pts
SeverityFileLineSnippetContext
HIGHsrc/remove_ai_watermarks/video_encoding.py167except (ImportError, ValueError):CODE
HIGHsrc/remove_ai_watermarks/identify.py305except ValueError:CODE
HIGHsrc/remove_ai_watermarks/identify.py273except (ValueError, TypeError):CODE
HIGHsrc/remove_ai_watermarks/identify.py287except ValueError:CODE
Cross-Language Confusion4 hits · 18 pts
SeverityFileLineSnippetContext
HIGH⚡tests/test_watermark_benchmark.py387 assert output.read_text(encoding="utf-8") == '{"schema_version": 1, "value": null}\n'CODE
HIGHtests/test_release_workflows.py188 script = script.replace("${{ github.event.release.name || github.ref_name }}", "test")CODE
HIGHsrc/remove_ai_watermarks/_internal/sm2.py114 """``e = SM3(Z_A || M)``, the value an SM3withSM2 signature signs."""STRING
HIGHsrc/remove_ai_watermarks/_internal/sm2.py133 """Verify a raw 64-byte ``r || s`` SM3withSM2 signature over ``message``."""STRING
Modern AI Meta-Vocabulary2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMdocs/synthid-classifiers.md535### Published few-shot attribution also fails the open-world gateCOMMENT
MEDIUMscripts/skill_eval.py48# Language-independent hallucination check. A weak model with no pixel stack reported aCOMMENT
AI Structural Patterns6 hits · 6 pts
SeverityFileLineSnippetContext
LOWsrc/remove_ai_watermarks/video_invisible.py353CODE
LOWsrc/remove_ai_watermarks/invisible_engine.py201CODE
LOWsrc/remove_ai_watermarks/video.py579CODE
LOWsrc/remove_ai_watermarks/video.py664CODE
LOWsrc/remove_ai_watermarks/video.py836CODE
LOWsrc/remove_ai_watermarks/_internal/watermark_remover.py224CODE
Fake / Example Data1 hit · 1 pts
SeverityFileLineSnippetContext
LOW⚡tests/test_metadata.py1150 assert xai_signature(_grok_jpeg(tmp_path, artist="John Doe")) is FalseCODE