YuE2: frontier music generation with symbolic planning, zero-shot covers, and agentic music editing.
This report summarizes scanner evidence for multimodal-art-projection/YuE, a Python project with 11,606 GitHub stars. SynthScan examined 13,563 lines of code across 89 source files, recording 264 pattern matches distributed across 8 syntactic categories. The legacy adjusted pattern signal is 23.2 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 205 finding(s).
Are imports declared and package/API names verified? 33 finding(s).
Are wrappers, guards, and repeated structures necessary? 196 finding(s).
Which changes need focused human review? 264 finding(s).
Run additional scans to build a history of the legacy pattern signal. Score changes are not a measure of AI adoption or code quality.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 264 distinct pattern matches across 8 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_text_encoding.py | 49 | def test_shipped_text_io_declares_an_encoding(): | CODE |
| LOW⚡ | tests/test_text_encoding.py | 59 | def test_saved_plan_round_trips_non_ascii(tmp_path): | CODE |
| LOW⚡ | tests/test_text_encoding.py | 67 | def test_result_manifest_round_trips_non_ascii(tmp_path): | CODE |
| LOW⚡ | tests/test_text_encoding.py | 73 | def test_write_json_round_trips_without_mojibake(tmp_path, text): | CODE |
| LOW | tests/test_model.py | 33 | def test_inputs_embeds_and_tail_logits(model): | CODE |
| LOW | tests/test_model.py | 56 | def test_cached_chunks_equal_full(model, kind): | CODE |
| LOW | tests/test_model.py | 69 | def test_left_padding_and_decode(model, kind): | CODE |
| LOW | tests/test_model.py | 87 | def test_hf_generate_padding_and_embeddings(model, cache_implementation): | CODE |
| LOW | tests/test_model.py | 100 | def test_explicit_position_ids(model): | CODE |
| LOW | tests/test_model.py | 111 | def test_save_load_and_remote_auto_class(model, tmp_path): | CODE |
| LOW | tests/test_model.py | 122 | def test_bounded_cache_overflow_and_reset(model): | CODE |
| LOW | tests/test_model.py | 133 | def test_training_labels_and_causality(model): | CODE |
| LOW | tests/test_model.py | 142 | def test_release_tensor_names_and_shapes_when_source_available(): | CODE |
| LOW | tests/test_public_export.py | 16 | def test_unknown_metadata_is_not_loaded_or_reserialized(config_class): | CODE |
| LOW | tests/test_public_export.py | 25 | def test_model_export_omits_unlisted_code_reports_and_cache(tmp_path): | CODE |
| LOW⚡ | tests/test_public_export.py | 50 | def test_export_refuses_nonempty_destination(tmp_path): | CODE |
| LOW⚡ | tests/test_public_export.py | 57 | def test_pipeline_export_refuses_residue_at_the_root(tmp_path): | CODE |
| LOW⚡ | tests/test_public_export.py | 65 | def test_hf_download_is_restricted_to_inference_files(monkeypatch, tmp_path): | CODE |
| LOW | tests/test_example_generate.py | 19 | def test_example_preserves_external_score(newline, tmp_path, monkeypatch): | CODE |
| LOW | tests/test_protocol.py | 16 | def test_defaults_and_native_instructions(): | CODE |
| LOW | tests/test_protocol.py | 27 | def test_cfg_keeps_exact_score_and_removes_only_text(): | CODE |
| LOW | tests/test_protocol.py | 42 | def test_external_abc_retains_crlf(tmp_path): | CODE |
| LOW | tests/test_protocol.py | 53 | def test_window_count_sign_and_window_expiry(): | CODE |
| LOW | tests/test_protocol.py | 59 | def test_top_p_off_keeps_three_and_symbolic_one(): | CODE |
| LOW⚡ | tests/test_protocol.py | 70 | def test_vocab_and_eos_minimum(): | CODE |
| LOW⚡ | tests/test_protocol.py | 80 | def test_integrity_rejects_incomplete_outputs(tmp_path): | CODE |
| LOW⚡ | tests/test_protocol.py | 86 | def test_invalid_hyperparameters(): | CODE |
| LOW⚡ | tests/test_protocol.py | 96 | def test_partial_abc_override_keeps_abc_defaults(): | CODE |
| LOW⚡ | tests/test_protocol.py | 102 | def test_saved_plan_preserves_exact_ids_and_rejects_edits(tmp_path): | CODE |
| LOW | tests/test_skill_listen.py | 34 | def test_html_escaping_and_exact_artifacts(self): | CODE |
| LOW⚡ | tests/test_skill_listen.py | 47 | def test_failures_are_visible(self): | CODE |
| LOW⚡ | tests/test_skill_listen.py | 57 | def test_mismatch_withholds_player(self): | CODE |
| LOW⚡ | tests/test_skill_listen.py | 63 | def test_secret_metadata_withheld(self): | CODE |
| LOW | tests/test_fast.py | 32 | def test_optional_imports_do_not_load_cuda_extensions(): | CODE |
| LOW | tests/test_fast.py | 47 | def test_derived_ar_subset_and_hash_validation(tmp_path): | STRING |
| LOW⚡ | tests/test_fast.py | 60 | def test_missing_ar_tensor_fails(tmp_path): | STRING |
| LOW⚡ | tests/test_fast.py | 68 | def test_full_context_kv_budget(): | STRING |
| LOW⚡ | tests/test_fast.py | 77 | def test_cfg_and_device_fallback_preserve_protocol(monkeypatch, cfg, legacy, reason): | STRING |
| LOW | tests/test_fast.py | 96 | def test_worker_transport_handles_many_buffered_lines(monkeypatch): | STRING |
| LOW | tests/test_fast.py | 136 | def test_window_processor_counting_and_request_moves(): | STRING |
| LOW | tests/test_skill_release.py | 18 | def test_reproducible_archive_contains_complete_instrumental_workflow(self): | CODE |
| LOW | tests/test_skill_release.py | 39 | def test_rejects_unlisted_private_work_file(self): | CODE |
| LOW | tests/test_skill_release.py | 48 | def test_rejects_changed_manifest_payload(self): | CODE |
| LOW | tests/test_skill_transcribe_melody_only.py | 75 | def test_melody_tasks_explicitly_enable_export_flag(self): | STRING |
| LOW | tests/test_skill_transcribe_melody_only.py | 86 | def test_full_task_remains_compatible_with_old_wrapper(self): | STRING |
| LOW | tests/test_skill_transcribe_melody_only.py | 95 | def test_old_wrapper_rejected_before_transcribing_melody(self): | STRING |
| LOW | tests/test_skill_transcribe_melody_only.py | 106 | def test_missing_abc_remains_failure_with_partial_error_result(self): | STRING |
| LOW | tests/test_cli_batch.py | 15 | def test_batch_continues_after_request_preflight_failure(invalid, error, monkeypatch, tmp_path): | CODE |
| LOW | tests/test_progress.py | 35 | def test_quiet_never_touches_stream_or_starts_thread(monkeypatch): | CODE |
| LOW | tests/test_progress.py | 52 | def test_loading_heartbeat_refreshes_without_callbacks_and_stops(): | CODE |
| LOW | tests/test_progress.py | 65 | def test_non_tty_is_throttled_and_counts_only_callback_outputs(monkeypatch): | CODE |
| LOW | tests/test_progress.py | 85 | def test_real_total_can_arrive_after_stage_starts(monkeypatch): | CODE |
| LOW | tests/test_progress.py | 109 | def test_exceptions_propagate_with_correct_status_and_no_thread_leak(exception, status): | CODE |
| LOW | tests/test_progress.py | 121 | def test_truncated_stage_and_summary_do_not_claim_completion(): | CODE |
| LOW | tests/test_progress.py | 136 | def test_complete_uses_stderr_and_needs_no_thread(monkeypatch, capsys): | CODE |
| LOW | tests/test_progress.py | 149 | def test_concurrent_callbacks_are_counted_exactly_and_do_not_change_rng(): | CODE |
| LOW | tests/test_progress.py | 160 | def test_module_import_and_quiet_usage_require_no_torch_or_rng_modules(): | CODE |
| LOW | tests/test_progress.py | 174 | def test_closed_output_stream_does_not_fail_work(): | STRING |
| LOW | tests/test_progress.py | 182 | def test_outer_context_cleans_up_an_unfinished_stage_on_failure(): | STRING |
| LOW | tests/test_progress.py | 194 | def test_invalid_values_fail_without_spawning_threads(): | STRING |
| 102 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/yue2/modeling_yue2.py | 56 | # ══════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | src/yue2/modeling_yue2.py | 58 | # ══════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | src/yue2/modeling_yue2.py | 120 | # ══════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | src/yue2/modeling_yue2.py | 122 | # ══════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | src/yue2/modeling_yue2.py | 307 | # ══════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | src/yue2/modeling_yue2.py | 309 | # ══════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | src/yue2/modeling_yue2.py | 352 | # ══════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | src/yue2/modeling_yue2.py | 354 | # ══════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | src/yue2/modeling_yue2.py | 403 | # ══════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | src/yue2/modeling_yue2.py | 405 | # ══════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | src/yue2/modeling_yue2.py | 490 | # ── AR forward (standard causal LM, KV cached) ─────────────────── | COMMENT |
| MEDIUM | src/yue2/modeling_yue2.py | 601 | # ── NAR velocity (flow matching, no KV cache) ──────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/build_release.py | 7 | CODE | |
| LOW | tests/test_model.py | 2 | CODE | |
| LOW | tests/test_public_export.py | 3 | CODE | |
| LOW | tests/test_protocol.py | 1 | CODE | |
| LOW | tests/test_protocol.py | 2 | CODE | |
| LOW | tests/test_protocol.py | 5 | CODE | |
| LOW | tests/test_protocol.py | 8 | CODE | |
| LOW | tests/test_skill_listen.py | 1 | CODE | |
| LOW | tests/test_fast.py | 4 | CODE | |
| LOW | tests/test_skill_abc_tools.py | 2 | CODE | |
| LOW | …lls/yue2-music/instrumental/scripts/instrumentalize.py | 3 | CODE | |
| LOW | …lls/yue2-music/instrumental/scripts/instrumentalize.py | 5 | CODE | |
| LOW | skills/yue2-music/instrumental/scripts/abc_tools.py | 9 | CODE | |
| LOW | skills/yue2-music/instrumental/scripts/compile_score.py | 8 | CODE | |
| LOW | skills/yue2-music/instrumental/scripts/instrumental.py | 3 | CODE | |
| LOW | skills/yue2-music/instrumental/scripts/setup_runtime.py | 3 | CODE | |
| LOW | skills/yue2-music/scripts/abc_tools.py | 9 | CODE | |
| LOW | skills/yue2-music/scripts/listen.py | 9 | CODE | |
| LOW | src/yue2/cuda_graph.py | 7 | CODE | |
| LOW | src/yue2/modeling_vae.py | 7 | CODE | |
| LOW | src/yue2/quantization.py | 7 | CODE | |
| LOW | src/yue2/protocol.py | 2 | CODE | |
| LOW | src/yue2/cli.py | 2 | CODE | |
| LOW | src/yue2/cli.py | 9 | CODE | |
| LOW | src/yue2/pipeline.py | 2 | CODE | |
| LOW | src/yue2/pipeline.py | 12 | CODE | |
| LOW | src/yue2/pipeline.py | 15 | CODE | |
| LOW | src/yue2/nar.py | 7 | CODE | |
| LOW | src/yue2/sampling.py | 2 | CODE | |
| LOW | src/yue2/storage.py | 2 | CODE | |
| LOW | src/yue2/modeling_yue2.py | 7 | CODE | |
| LOW | src/yue2/tokenization_yue2.py | 2 | CODE | |
| LOW | src/yue2/progress.py | 9 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ls/yue2-music/instrumental/scripts/transcribe_cover.py | 15 | CODE | |
| LOW | …lls/yue2-music/instrumental/scripts/instrumentalize.py | 35 | CODE | |
| LOW | …lls/yue2-music/instrumental/scripts/instrumentalize.py | 51 | CODE | |
| LOW | skills/yue2-music/instrumental/scripts/abc_tools.py | 87 | CODE | |
| LOW | skills/yue2-music/instrumental/scripts/abc_tools.py | 153 | CODE | |
| LOW | skills/yue2-music/instrumental/scripts/abc_tools.py | 292 | CODE | |
| LOW | skills/yue2-music/instrumental/scripts/instrumental.py | 29 | CODE | |
| LOW | skills/yue2-music/instrumental/scripts/test_tools.py | 141 | CODE | |
| LOW | skills/yue2-music/scripts/run_yue2.py | 122 | CODE | |
| LOW | skills/yue2-music/scripts/abc_tools.py | 87 | CODE | |
| LOW | skills/yue2-music/scripts/abc_tools.py | 153 | CODE | |
| LOW | skills/yue2-music/scripts/abc_tools.py | 292 | CODE | |
| LOW | skills/yue2-music/scripts/transcribe.py | 14 | CODE | |
| LOW | skills/yue2-music/scripts/listen.py | 87 | CODE | |
| LOW | src/yue2/cuda_graph.py | 112 | CODE | |
| LOW | src/yue2/modeling_vae.py | 395 | CODE | |
| LOW | src/yue2/fast.py | 57 | CODE | |
| LOW | src/yue2/fast.py | 296 | CODE | |
| LOW | src/yue2/fast.py | 345 | CODE | |
| LOW | src/yue2/fast.py | 246 | CODE | |
| LOW | src/yue2/cli.py | 144 | CODE | |
| LOW | src/yue2/pipeline.py | 320 | CODE | |
| LOW | src/yue2/nar.py | 206 | CODE | |
| LOW | src/yue2/nar.py | 228 | CODE | |
| LOW | src/yue2/sampling.py | 57 | CODE | |
| LOW | src/yue2/storage.py | 58 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | README.md | 93 | | [Listen and inspect the score](https://map-yue2.github.io/#abc-cot-gen) | [Hear zero-shot covers](https://map-yue2.git | CODE |
| MEDIUM⚡ | README.md | 93 | | [Listen and inspect the score](https://map-yue2.github.io/#abc-cot-gen) | [Hear zero-shot covers](https://map-yue2.git | CODE |
| MEDIUM⚡ | README.md | 93 | | [Listen and inspect the score](https://map-yue2.github.io/#abc-cot-gen) | [Hear zero-shot covers](https://map-yue2.git | CODE |
| MEDIUM | README.md | 237 | **Zero-shot covers.** On 948 works, full-score YuE2 reaches **0.647 CLEWS mAP**, compared with **0.006 without a score** | CODE |
| MEDIUM | docs/covers.md | 62 | For a complete score with fixed harmony, use `cot="full"`. Melody-only is recommended for changing styles because it giv | CODE |
| MEDIUM | docs/benchmarks.md | 136 | The results support selective control of musical content through the score. Editing regenerates the entire recording; pr | CODE |
| MEDIUM | docs/benchmarks.md | 136 | The results support selective control of musical content through the score. Editing regenerates the entire recording; pr | CODE |
| MEDIUM | docs/editing.md | 57 | [Explore the 9-step, 14-version editing demo](https://map-yue2.github.io/#agentic-music-editing), where each version inc | CODE |
| MEDIUM | docs/editing.md | 57 | [Explore the 9-step, 14-version editing demo](https://map-yue2.github.io/#agentic-music-editing), where each version inc | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/yue2/progress.py | 50 | except ValueError: | CODE |
| HIGH | src/yue2/progress.py | 56 | except (AttributeError, OSError, ValueError): | CODE |
| HIGH | src/yue2/progress.py | 99 | except (AttributeError, OSError, ValueError): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ls/yue2-music/instrumental/scripts/transcribe_cover.py | 87 | except Exception as exc: | CODE |
| LOW | …ls/yue2-music/instrumental/scripts/transcribe_cover.py | 111 | except Exception as exc: | CODE |
| LOW | skills/yue2-music/instrumental/scripts/instrumental.py | 213 | except Exception: | CODE |
| LOW | skills/yue2-music/instrumental/scripts/instrumental.py | 275 | except Exception as exc: | CODE |
| LOW | skills/yue2-music/instrumental/scripts/instrumental.py | 363 | except Exception as exc: | CODE |
| LOW | skills/yue2-music/scripts/run_yue2.py | 173 | except Exception as exc: | CODE |
| LOW | skills/yue2-music/scripts/run_yue2.py | 180 | except Exception as exc: | CODE |
| LOW | skills/yue2-music/scripts/run_yue2.py | 207 | except Exception as exc: | CODE |
| LOW | skills/yue2-music/scripts/transcribe.py | 86 | except Exception as exc: | CODE |
| LOW | skills/yue2-music/scripts/transcribe.py | 109 | except Exception as exc: | CODE |
| LOW | src/yue2/cli.py | 174 | except Exception as exc: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/yue2/modeling_vae.py | 209 | CODE | |
| LOW | src/yue2/modeling_vae.py | 291 | CODE | |
| LOW | src/yue2/modeling_vae.py | 395 | CODE | |
| LOW | src/yue2/pipeline.py | 122 | CODE | |
| LOW | src/yue2/pipeline.py | 168 | CODE | |
| LOW | src/yue2/modeling_yue2.py | 79 | CODE | |
| LOW | src/yue2/modeling_yue2.py | 418 | CODE | |
| LOW | src/yue2/modeling_yue2.py | 492 | CODE |