AI Slop Code RIsk Monitor

HKUDS/ViMax

"ViMax: Agentic Video Generation (Director, Screenwriter, Producer, and Video Generator All-in-One)"

22.1 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for HKUDS/ViMax, a Python project with 12,610 GitHub stars. SynthScan examined 30,123 lines of code across 172 source files, recording 495 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 22.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.

22.1
Adjusted Signal
22.1
Raw Pattern Score
100%
Time Factor
2026-09-30
Last Push
12.6K
Stars
Python
Language
30.1K
Lines of Code
172
Files
495
Pattern Hits
2026-10-12
Scan Date
0.12
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 41.9/100 · MEDIUM

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

Hallucinated Dependency & Supply Chain Risk 36.7/100 · MEDIUM

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

Agent Over-Engineering Ratio 43.5/100 · MEDIUM

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

PR Review Velocity Impact 63.2/100 · HIGH

Which changes need focused human review? 495 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 20MEDIUM 4LOW 471

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 495 distinct pattern matches across 14 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 Identifiers249 hits · 279 pts
SeverityFileLineSnippetContext
LOWui/src/cli.tsx329 function scheduleResponseIdleClear() {CODE
LOWtools/image_generator_openrouter_api.py35def _is_retryable_image_error(exc: BaseException) -> bool:CODE
LOWtools/image_generator_openrouter_api.py151def _prompt_with_landscape_requirement(prompt: str, aspect_ratio: str | None) -> str:CODE
LOWtools/image_orientation.py9def landscape_guard_requested(*, size: Any = None, aspect_ratio: Any = None, enforce_landscape: Any = True, allow_portraCODE
LOWtools/video_generator_doubao_seedance_yunwu_api.py29 async def create_video_generation_task(CODE
LOWtools/video_generator_doubao_seedance_yunwu_api.py132 async def query_video_generation_task(CODE
LOWtools/video_generator_omni_yunwu_api.py90 async def create_video_generation_task(CODE
LOWtools/video_generator_omni_yunwu_api.py156 async def query_video_generation_task(self, task_id: str, model: str) -> str:CODE
LOWweb/src/artifactPresentation.ts137export function extractStoryboardPreviews(document: JsonValue, sourcePath: string): StoryboardPreview[] {CODE
LOWweb/src/artifactPresentation.ts163export function deriveStoryboardReadiness(artifacts: Artifact[], storyboardCount: number): StoryboardReadiness {CODE
LOWtests/test_image_selection.py73 async def test_candidates_are_concurrent_and_selected_result_is_persisted(self):CODE
LOWtests/test_image_selection.py103 async def test_single_candidate_disables_vlm(self):CODE
LOWtests/test_image_selection.py111 async def test_failed_or_portrait_candidate_is_excluded(self):CODE
LOW⚡tests/test_image_selection.py124 async def test_filtered_indices_map_back_to_original_candidate(self):CODE
LOW⚡tests/test_image_selection.py133 async def test_all_candidate_failures_remain_errors(self):CODE
LOW⚡tests/test_image_selection.py142 async def test_selection_failure_keeps_candidates_and_resume_reuses_them(self):CODE
LOWtests/test_image_selection.py160 async def test_changed_prompt_does_not_reuse_old_candidates(self):CODE
LOWtests/test_image_selection.py169 async def test_cancellation_stops_candidate_tasks_and_persists_status(self):CODE
LOWtests/test_image_selection.py183 async def test_first_and_last_frame_candidates_are_separate_and_cached(self):CODE
LOWtests/test_image_selection.py201 async def test_camera_first_frame_uses_candidate_selection(self):CODE
LOWtests/test_image_selection.py218 async def test_reuses_configured_model_and_sends_reference_and_candidates(self):CODE
LOWtests/test_image_selection.py234 async def test_schema_wrapped_response_parses_without_resampling(self):CODE
LOWtests/test_image_selection.py242 async def test_invalid_index_fails_after_bounded_retries(self):CODE
LOWtests/test_image_selection.py253 async def test_idea_scenes_receive_count_and_scoped_progress(self):CODE
LOWtests/test_image_selection.py279 async def test_adapter_reads_workspace_count_and_rejects_invalid_count(self):CODE
LOWtests/test_image_selection.py336 def test_pipeline_yaml_wires_count_to_both_workflows(self):CODE
LOWtests/test_image_selection.py346 def test_malformed_selection_section_is_rejected(self):CODE
LOWtests/test_novel2video_adapter.py24 async def compress_single_novel_chunk(self, semaphore, index, novel_chunk):CODE
LOWtests/test_novel2video_adapter.py58 async def merge_characters_across_scenes_in_event(self, event_idx, scenes):CODE
LOWtests/test_novel2video_adapter.py61 def merge_characters_to_existing_characters_in_novel(self, event_idx, existing_characters_in_novel, characters_in_evCODE
LOWtests/test_novel2video_adapter.py111 async def test_merge_event_characters_uses_scene_character_idx(self):CODE
LOWtests/test_novel2video_adapter.py126 async def test_run_planning_step_suppresses_stdout_stderr_and_warnings(self):CODE
LOWtests/test_novel2video_adapter.py142 async def test_plan_text_artifacts_writes_structured_text_and_progress(self):CODE
LOWtests/test_novel2video_adapter.py192def write_minimal_novel_artifacts(root: Path):CODE
LOWtests/test_novel2video_adapter.py218 async def test_novel_initializes_named_empty_active_session(self):CODE
LOWtests/test_novel2video_adapter.py231 async def test_missing_rag_config_returns_tool_error_and_marks_session_error(self):CODE
LOWtests/test_generator_protocol.py24 def test_generate_single_video_accepts_arbitrary_kwargs(self):CODE
LOWtests/test_wrong_output_guards.py39 def test_out_of_order_camera_indices_group_correctly(self):CODE
LOWtests/test_wrong_output_guards.py49 def test_priorities_are_shot_indices_not_camera_indices(self):CODE
LOWtests/test_wrong_output_guards.py67 def test_two_pipelines_do_not_share_events(self):CODE
LOWtests/test_wrong_output_guards.py78 def test_no_class_level_mutable_event_dicts(self):CODE
LOWtests/test_wrong_output_guards.py87 async def test_existing_new_camera_image_is_still_offered_to_selector(self):CODE
LOWtests/test_wrong_output_guards.py140 def test_out_of_range_rejected(self):CODE
LOW⚡tests/test_wrong_output_guards.py154 def test_negative_index_rejected(self):CODE
LOW⚡tests/test_wrong_output_guards.py158 def test_out_of_range_rejected(self):CODE
LOW⚡tests/test_wrong_output_guards.py164 def test_clean_names_unchanged(self):CODE
LOW⚡tests/test_wrong_output_guards.py168 def test_unicode_names_preserved(self):CODE
LOW⚡tests/test_wrong_output_guards.py171 def test_path_separators_removed(self):CODE
LOW⚡tests/test_wrong_output_guards.py175 def test_traversal_neutralized(self):CODE
LOW⚡tests/test_wrong_output_guards.py180 def test_empty_becomes_placeholder(self):CODE
LOW⚡tests/test_robustness.py51 async def test_retries_rate_limit_then_succeeds(self):CODE
LOW⚡tests/test_robustness.py58 async def test_does_not_retry_auth_errors(self):CODE
LOW⚡tests/test_robustness.py65 async def test_gives_up_after_bounded_attempts(self):CODE
LOW⚡tests/test_robustness.py73 async def test_empty_choices_raises_clear_error(self):CODE
LOWtests/test_robustness.py86 async def test_llm_failure_emits_error_and_persists_failed_turn(self):CODE
LOWtests/test_robustness.py104 def test_corrupt_sessions_file_is_backed_up_not_silently_replaced(self):CODE
LOWtests/test_robustness.py115 def test_save_is_atomic_and_leaves_no_temp_files(self):CODE
LOWtests/test_robustness.py122 def test_concurrent_creates_do_not_lose_sessions(self):CODE
LOWtests/test_robustness.py153 def test_every_retry_is_bounded_with_backoff(self):CODE
LOWtests/test_robustness.py201 async def test_reranker_surfaces_http_error_without_retry(self):CODE
189 more matches not shown…
Unused Imports141 hits · 140 pts
SeverityFileLineSnippetContext
LOWmain_agent.py1CODE
LOWtools/image_generator_openrouter_api.py1CODE
LOWtools/video_generator_openrouter_api.py2CODE
LOWtools/video_generator_veo_yunwu_api.py2CODE
LOWtools/image_response.py1CODE
LOWtools/__init__.py2CODE
LOWtools/__init__.py2CODE
LOWtools/__init__.py3CODE
LOWtools/__init__.py6CODE
LOWtools/__init__.py7CODE
LOWtools/__init__.py8CODE
LOWtools/__init__.py9CODE
LOWtools/__init__.py12CODE
LOWtools/__init__.py15CODE
LOWtools/__init__.py16CODE
LOWtools/__init__.py16CODE
LOWtools/__init__.py17CODE
LOWtools/__init__.py18CODE
LOWtools/__init__.py19CODE
LOWtools/image_orientation.py1CODE
LOWtests/test_image_selection.py8CODE
LOWtests/test_robustness.py11CODE
LOWtests/test_script2video_pipeline_guards.py5CODE
LOWtests/test_script2video_pipeline_guards.py5CODE
LOWtests/test_minimax_integration.py15CODE
LOWtests/test_agent_tools.py1CODE
LOWagents/reference_image_selector.py8CODE
LOWagents/scene_extractor.py1CODE
LOWagents/scene_extractor.py5CODE
LOWagents/scene_extractor.py5CODE
LOWagents/scene_extractor.py6CODE
LOWagents/scene_extractor.py6CODE
LOWagents/scene_extractor.py6CODE
LOWagents/scene_extractor.py6CODE
LOWagents/global_information_planner.py1CODE
LOWagents/global_information_planner.py3CODE
LOWagents/global_information_planner.py4CODE
LOWagents/global_information_planner.py4CODE
LOWagents/global_information_planner.py4CODE
LOWagents/global_information_planner.py9CODE
LOWagents/global_information_planner.py10CODE
LOWagents/event_extractor.py1CODE
LOWagents/event_extractor.py3CODE
LOWagents/event_extractor.py9CODE
LOWagents/event_extractor.py9CODE
LOWagents/character_portraits_generator.py1CODE
LOWagents/character_portraits_generator.py2CODE
LOWagents/character_portraits_generator.py3CODE
LOWagents/character_portraits_generator.py4CODE
LOWagents/character_portraits_generator.py5CODE
LOWagents/character_portraits_generator.py6CODE
LOWagents/character_portraits_generator.py7CODE
LOWagents/character_portraits_generator.py8CODE
LOWagents/character_portraits_generator.py8CODE
LOWagents/character_portraits_generator.py9CODE
LOWagents/character_portraits_generator.py9CODE
LOWagents/character_portraits_generator.py9CODE
LOWagents/character_portraits_generator.py11CODE
LOWagents/character_portraits_generator.py11CODE
LOWagents/character_extractor.py1CODE
81 more matches not shown…
Magic Placeholder Names18 hits · 135 pts
SeverityFileLineSnippetContext
HIGH⚡readme.md244 api_key: <YOUR_API_KEY>CODE
HIGH⚡readme.md244 api_key: <YOUR_API_KEY>CODE
HIGH⚡readme.md249 api_key: <YOUR_API_KEY>CODE
HIGH⚡readme.md249 api_key: <YOUR_API_KEY>CODE
HIGH⚡readme.md254 api_key: <YOUR_API_KEY>CODE
HIGH⚡readme.md254 api_key: <YOUR_API_KEY>CODE
HIGH⚡readme.md321 api_key: <YOUR_API_KEY>CODE
HIGH⚡readme.md321 api_key: <YOUR_API_KEY>CODE
HIGH⚡readme.md327 api_key: <YOUR_API_KEY>CODE
HIGH⚡readme.md327 api_key: <YOUR_API_KEY>CODE
HIGH⚡readme.md332 api_key: <YOUR_API_KEY>CODE
HIGH⚡readme.md332 api_key: <YOUR_API_KEY>CODE
HIGH⚡README_ZH.md284 api_key: <YOUR_API_KEY>CODE
HIGH⚡README_ZH.md284 api_key: <YOUR_API_KEY>CODE
HIGH⚡README_ZH.md290 api_key: <YOUR_API_KEY>CODE
HIGH⚡README_ZH.md290 api_key: <YOUR_API_KEY>CODE
HIGH⚡README_ZH.md295 api_key: <YOUR_API_KEY>CODE
HIGH⚡README_ZH.md295 api_key: <YOUR_API_KEY>CODE
Excessive Try-Catch Wrapping33 hits · 36 pts
SeverityFileLineSnippetContext
LOWmain_agent.py143 except Exception as exc:CODE
LOWtools/image_generator_openrouter_api.py169 except Exception as exc:CODE
LOWtools/video_generator_veo_yunwu_api.py121 except Exception as e:CODE
LOWtools/video_generator_veo_yunwu_api.py152 except Exception as e:CODE
LOWtools/video_generator_doubao_seedance_yunwu_api.py107 except Exception as e:CODE
LOWtools/video_generator_doubao_seedance_yunwu_api.py162 except Exception as e:CODE
LOWtools/video_generator_omni_yunwu_api.py124 except Exception as e:CODE
LOWtools/video_generator_omni_yunwu_api.py171 except Exception as e:CODE
LOWagents/reference_image_selector.py185 except Exception as e:CODE
LOWagents/reference_image_selector.py222 except Exception as e:CODE
LOWagents/script_enhancer.py119 except Exception as e:CODE
LOWagents/script_planner.py430 except Exception as e:CODE
LOWpipelines/script2video_pipeline.py172 except Exception:CODE
LOWpipelines/script2video_pipeline.py610 except Exception as exc:CODE
LOWpipelines/script2video_pipeline.py642 except Exception as exc:CODE
LOWpipelines/idea2video_pipeline.py187 except Exception as e:CODE
LOWpipelines/idea2video_pipeline.py203 except Exception as e:CODE
LOWutils/video.py21 except Exception as e:CODE
MEDIUMutils/video.py8def download_video(url, save_path):CODE
LOWutils/image.py24 except Exception as e:CODE
MEDIUMutils/image.py12def download_image(url, save_path):CODE
LOWagent_runtime/context_compactor.py145 except Exception:CODE
LOWagent_runtime/tools.py162 except Exception as exc:CODE
LOWagent_runtime/vimax_adapters.py200 except Exception as exc:CODE
LOWagent_runtime/vimax_adapters.py260 except Exception as exc:CODE
LOWagent_runtime/vimax_adapters.py318 except Exception as exc:CODE
LOWagent_runtime/vimax_adapters.py403 except Exception as exc:CODE
LOW⚡agent_runtime/vimax_adapters.py520 except Exception as exc:CODE
LOWagent_runtime/vimax_adapters.py672 except Exception:CODE
LOWagent_runtime/llm.py75 except Exception as exc:CODE
LOWagent_runtime/loop.py72 except Exception as exc:CODE
LOWagent_runtime/image_tools.py93 except Exception as exc:CODE
LOWagent_runtime/image_tools.py135 except Exception:CODE
Deep Nesting14 hits · 12 pts
SeverityFileLineSnippetContext
LOWmain_agent.py42CODE
LOWmain_agent.py102CODE
LOWtests/test_image_selection.py279CODE
LOWtests/test_agent_config.py119CODE
LOWpipelines/script2video_pipeline.py332CODE
LOWpipelines/novel2movie_pipeline.py73CODE
LOWpipelines/novel2movie_pipeline.py479CODE
LOWpipelines/novel2movie_pipeline.py626CODE
LOWutils/rate_limiter.py39CODE
LOWagent_runtime/tools.py188CODE
LOWagent_runtime/tools.py198CODE
LOWagent_runtime/tools.py290CODE
LOWagent_runtime/vimax_adapters.py686CODE
LOWagent_runtime/loop.py43CODE
Verbosity Indicators7 hits · 10 pts
SeverityFileLineSnippetContext
LOWpipelines/novel2movie_pipeline.py486 # Step 1: Compress the novel textCOMMENT
LOWpipelines/novel2movie_pipeline.py554 # Step 2: Extract events from the compressed novelCOMMENT
LOWpipelines/novel2movie_pipeline.py598 # Step 3: Extract relevant chunks for each eventCOMMENT
LOWpipelines/novel2movie_pipeline.py685 # Step 4: Extract scenes for each event, design the script for each sceneCOMMENT
LOWpipelines/novel2movie_pipeline.py751 # Step 5: Merge characters from scene-level to event-level, then to novel-levelCOMMENT
LOWpipelines/novel2movie_pipeline.py845 # Step 6: Generate the portrait for all characters in the novelCOMMENT
LOWpipelines/novel2movie_pipeline.py963 # Step 7: Generate video for each sceneCOMMENT
Structural Annotation Overuse7 hits · 10 pts
SeverityFileLineSnippetContext
LOWpipelines/novel2movie_pipeline.py486 # Step 1: Compress the novel textCOMMENT
LOWpipelines/novel2movie_pipeline.py554 # Step 2: Extract events from the compressed novelCOMMENT
LOWpipelines/novel2movie_pipeline.py598 # Step 3: Extract relevant chunks for each eventCOMMENT
LOWpipelines/novel2movie_pipeline.py685 # Step 4: Extract scenes for each event, design the script for each sceneCOMMENT
LOWpipelines/novel2movie_pipeline.py751 # Step 5: Merge characters from scene-level to event-level, then to novel-levelCOMMENT
LOWpipelines/novel2movie_pipeline.py845 # Step 6: Generate the portrait for all characters in the novelCOMMENT
LOWpipelines/novel2movie_pipeline.py963 # Step 7: Generate video for each sceneCOMMENT
Over-Commented Block10 hits · 10 pts
SeverityFileLineSnippetContext
LOWagents/global_information_planner.py281 # self,COMMENT
LOWagents/global_information_planner.py301COMMENT
LOWagents/global_information_planner.py321 # # check the output is validCOMMENT
LOWagents/global_information_planner.py341COMMENT
LOWagents/global_information_planner.py361 # character_name=character.identifier_in_novel,COMMENT
LOWinterfaces/scene.py41# description="The index of the scene within the event, starting from 0"COMMENT
LOWinterfaces/shot_description.py41 # default=None,COMMENT
LOWinterfaces/shot_description.py61 # False,COMMENT
LOWinterfaces/shot_description.py161 "[Sound Effect] Ambient sound (supermarket background noise, shopping cart wheels rolling)",COMMENT
LOWinterfaces/shot_description.py181 # )COMMENT
Empty Error Handlers2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHagents/script_planner.py404except NameError:CODE
HIGHpipelines/script2video_pipeline.py569except (OSError, ValueError):CODE
Decorative Section Separators2 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUM⚡utils/provider_presets.py15# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡utils/provider_presets.py17# ---------------------------------------------------------------------------COMMENT
Modern Structural Boilerplate8 hits · 8 pts
SeverityFileLineSnippetContext
LOWtools/__init__.py22__all__ = [CODE
LOWagents/__init__.py8__all__ = [CODE
LOW⚡utils/provider_presets.py13logger = logging.getLogger(__name__)CODE
LOWagent_runtime/vimax_adapters.py456 def _update_session_metadata(self, session_id: str, *, idea: str, user_requirement: str, style: str) -> None:CODE
LOWagent_runtime/__init__.py3__all__ = ["AgentLoop", "SessionIndex", "ToolRegistry", "build_runtime"]CODE
LOWagent_runtime/session_index.py162 def update_stage(self, session_id: str, stage: str, summary: str = "") -> None:CODE
LOWagent_runtime/session_index.py186 def update_compaction(self, session_id: str, result: dict[str, Any]) -> None:CODE
LOWinterfaces/__init__.py10__all__ = [CODE
AI Structural Patterns2 hits · 2 pts
SeverityFileLineSnippetContext
LOWtools/image_generator_openrouter_api.py46CODE
LOWtools/video_generator_omni_yunwu_api.py13CODE
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippetContext
LOWtools/video_generator_veo_google_api.py105 # Check if operation completed successfullyCOMMENT
AI Slop Vocabulary1 hit · 2 pts
SeverityFileLineSnippetContext
LOWagents/global_information_planner.py353 # parser = None # no need to parse the output, just return the textCOMMENT