Fine-tune LLMs from one YAML. Layer streaming trains an 8B model on a 4 GB laptop GPU.
This report presents the forensic synthetic code analysis of MakazhanAlpamys/Soup, a Python project with 3,531 GitHub stars. SynthScan v2.0 examined 409,702 lines of code across 1047 source files, recording 16524 pattern matches distributed across 20 syntactic categories. The overall adjusted score of 59.0 places this repository in the Strong AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 16524 distinct pattern matches across 20 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_v0403_part_c.py | 26 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_v0403_part_c.py | 28 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_v0403_part_c.py | 267 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_v0403_part_c.py | 269 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_training_intelligence.py | 80 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_training_intelligence.py | 82 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_training_intelligence.py | 318 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_training_intelligence.py | 320 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_training_intelligence.py | 5 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_training_intelligence.py | 7 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_training_intelligence.py | 190 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_training_intelligence.py | 192 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_cans.py | 69 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_cans.py | 71 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_cans.py | 160 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_cans.py | 162 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_cans.py | 13 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_cans.py | 15 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_cans.py | 202 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_cans.py | 204 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_v0660_part_a.py | 75 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_v0660_part_a.py | 77 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_v0660_part_a.py | 139 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_v0660_part_a.py | 141 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_v0660_part_a.py | 210 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_v0660_part_a.py | 212 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_v0660_part_a.py | 362 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_v0660_part_a.py | 364 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_v0660_part_a.py | 417 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_v0660_part_a.py | 419 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_v0660_part_a.py | 464 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_v0660_part_a.py | 466 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_v0660_part_a.py | 542 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_v0660_part_a.py | 544 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_v0660_part_a.py | 36 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_v0660_part_a.py | 38 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_v07133.py | 34 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_v07133.py | 36 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_v07133.py | 419 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_v07133.py | 421 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_v07133.py | 676 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_v07133.py | 678 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_v07133.py | 872 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_v07133.py | 874 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_v07133.py | 1215 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_v07133.py | 1217 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_v0538.py | 21 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_v0538.py | 23 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_v0538.py | 86 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_v0538.py | 88 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_v0538.py | 247 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_v0538.py | 249 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_v0538.py | 356 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_v0538.py | 358 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_v0538.py | 401 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_v0538.py | 403 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_v0538.py | 606 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_v0538.py | 608 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_v0538.py | 468 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_v0538.py | 470 | # ---------------------------------------------------------------------- | COMMENT |
| 3156 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_v0403_part_c.py | 60 | def test_kept_when_chosen_clearly_wins(self): | CODE |
| LOW⚡ | tests/test_v0403_part_c.py | 67 | def test_dropped_when_diff_below_threshold(self): | CODE |
| LOW⚡ | tests/test_v0403_part_c.py | 74 | def test_dropped_when_rejected_wins(self): | CODE |
| LOW⚡ | tests/test_v0403_part_c.py | 80 | def test_judge_exception_counts_as_error(self): | CODE |
| LOW⚡ | tests/test_v0403_part_c.py | 88 | def test_lower_threshold_keeps_borderline(self): | CODE |
| LOW⚡ | tests/test_v0403_part_c.py | 96 | def test_threshold_zero_keeps_ties(self): | CODE |
| LOW⚡ | tests/test_v0403_part_c.py | 101 | def test_rejects_non_numeric_threshold(self): | CODE |
| LOW⚡ | tests/test_v0403_part_c.py | 106 | def test_rejects_bool_threshold(self): | CODE |
| LOW⚡ | tests/test_v0403_part_c.py | 111 | def test_rejects_threshold_above_one(self): | CODE |
| LOW⚡ | tests/test_v0403_part_c.py | 116 | def test_rejects_threshold_below_zero(self): | CODE |
| LOW⚡ | tests/test_v0403_part_c.py | 121 | def test_rejects_nan_threshold(self): | CODE |
| LOW⚡ | tests/test_v0403_part_c.py | 126 | def test_too_many_pairs_rejected(self): | CODE |
| LOW⚡ | tests/test_v0403_part_c.py | 132 | def test_empty_pairs_returns_empty(self): | CODE |
| LOW⚡ | tests/test_v0403_part_c.py | 138 | def test_uses_judge_rubric_scale(self): | CODE |
| LOW⚡ | tests/test_v0403_part_c.py | 144 | def test_report_is_frozen_dataclass(self): | CODE |
| LOW⚡ | tests/test_v0403_part_c.py | 154 | def test_degenerate_scale_drops_all_at_positive_threshold(self): | CODE |
| LOW⚡ | tests/test_v0403_part_c.py | 162 | def test_degenerate_scale_keeps_all_at_zero_threshold(self): | CODE |
| LOW⚡ | tests/test_v0403_part_c.py | 169 | def test_lazy_materialisation_does_not_buffer_full_generator(self): | CODE |
| LOW⚡ | tests/test_v0403_part_c.py | 292 | def test_appends_multiple_lines(self, tmp_path, monkeypatch): | CODE |
| LOW⚡ | tests/test_v0403_part_c.py | 300 | def test_outside_cwd_rejected(self, tmp_path, monkeypatch): | CODE |
| LOW⚡ | tests/test_v0403_part_c.py | 307 | def test_null_byte_path_rejected(self, tmp_path, monkeypatch): | CODE |
| LOW⚡ | tests/test_v0403_part_c.py | 317 | def test_cap_below_min_rejected(self, tmp_path, monkeypatch): | CODE |
| LOW⚡ | tests/test_v0403_part_c.py | 322 | def test_cap_above_max_rejected(self, tmp_path, monkeypatch): | CODE |
| LOW⚡ | tests/test_v0403_part_c.py | 332 | def test_non_string_path_rejected(self): | CODE |
| LOW⚡ | tests/test_v0403_part_c.py | 336 | def test_rotation_when_cap_exceeded(self, tmp_path, monkeypatch): | CODE |
| LOW | tests/test_v0403_part_c.py | 198 | def test_judge_flag_filters_pairs(self, tmp_path, monkeypatch): | CODE |
| LOW | tests/test_v0403_part_c.py | 244 | def test_judge_provider_invalid_rejected_early(self, tmp_path, monkeypatch): | CODE |
| LOW | tests/test_v0403_part_c.py | 362 | def test_secret_redaction_in_prompt(self, tmp_path, monkeypatch): | CODE |
| LOW | tests/test_v0403_part_c.py | 376 | def test_secret_redaction_in_response(self, tmp_path, monkeypatch): | CODE |
| LOW | tests/test_v0403_part_c.py | 390 | def test_secret_redaction_preserves_trailing_period(self, tmp_path, monkeypatch): | CODE |
| LOW | tests/test_v0403_part_c.py | 406 | def test_secret_redaction_in_extra_dict(self, tmp_path, monkeypatch): | CODE |
| LOW | tests/test_v0403_part_c.py | 419 | def test_secret_redaction_redacts_sk_keys(self, tmp_path, monkeypatch): | CODE |
| LOW | tests/test_v0403_part_c.py | 433 | def test_rotation_refuses_symlink_backup(self, tmp_path, monkeypatch): | CODE |
| LOW | tests/test_v0403_part_c.py | 453 | def test_unserialisable_entry_dropped_silently(self, tmp_path, monkeypatch): | CODE |
| LOW | tests/test_v0403_part_c.py | 488 | def test_extra_does_not_override_core_fields(self, tmp_path, monkeypatch): | CODE |
| LOW | tests/test_v0403_part_c.py | 527 | def test_serve_help_lists_trace_log(self): | CODE |
| LOW | tests/test_v0403_part_c.py | 536 | def test_serve_help_lists_trace_log_cap_mb(self): | CODE |
| LOW | tests/test_v0403_part_c.py | 547 | def test_create_app_accepts_trace_log_writer(self, tmp_path, monkeypatch): | CODE |
| LOW | tests/test_v0403_part_c.py | 571 | def test_create_app_default_writer_is_none(self, tmp_path, monkeypatch): | CODE |
| LOW⚡ | tests/test_training_intelligence.py | 85 | def test_built_in_benchmarks_exist(self): | CODE |
| LOW⚡ | tests/test_training_intelligence.py | 130 | def test_check_forgetting_level_yellow(self): | CODE |
| LOW⚡ | tests/test_training_intelligence.py | 140 | def test_check_forgetting_level_red(self): | CODE |
| LOW⚡ | tests/test_training_intelligence.py | 150 | def test_check_forgetting_integration(self): | CODE |
| LOW⚡ | tests/test_training_intelligence.py | 210 | def test_record_better_replaces_best(self): | CODE |
| LOW⚡ | tests/test_training_intelligence.py | 219 | def test_record_worse_keeps_best(self): | CODE |
| LOW⚡ | tests/test_training_intelligence.py | 228 | def test_should_early_stop_no_regression(self): | CODE |
| LOW⚡ | tests/test_training_intelligence.py | 237 | def test_should_early_stop_on_patience(self): | CODE |
| LOW⚡ | tests/test_training_intelligence.py | 305 | def test_composite_missing_metrics(self): | CODE |
| LOW⚡ | tests/test_training_intelligence.py | 312 | def test_composite_all_none_returns_zero(self): | CODE |
| LOW⚡ | tests/test_training_intelligence.py | 323 | def test_checkpoint_quality_table_created(self, tmp_path): | CODE |
| LOW | tests/test_training_intelligence.py | 118 | def test_check_forgetting_level_green(self): | CODE |
| LOW | tests/test_training_intelligence.py | 170 | def test_unknown_benchmark_rejected(self): | CODE |
| LOW | tests/test_training_intelligence.py | 179 | def test_forgetting_stop_schema(self): | CODE |
| LOW | tests/test_training_intelligence.py | 270 | def test_prune_refuses_non_checkpoint_dirs(self, tmp_path): | CODE |
| LOW | tests/test_training_intelligence.py | 289 | def test_composite_metric_weights(self): | CODE |
| LOW | tests/test_training_intelligence.py | 340 | def test_forgetting_eval_table_created(self, tmp_path): | CODE |
| LOW | tests/test_data_sample.py | 62 | def test_sample_n_larger_than_dataset(self, tmp_path, monkeypatch): | CODE |
| LOW | tests/test_data_sample.py | 166 | def test_must_specify_n_or_pct(self, tmp_path): | CODE |
| LOW | tests/test_data_sample.py | 187 | def test_sample_output_path_traversal(self, tmp_path): | CODE |
| LOW⚡ | tests/test_cans.py | 30 | def test_unknown_format_version_rejected(self): | CODE |
| 11148 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_v0403_part_c.py | 3 | CODE | |
| LOW | tests/test_v0403_part_c.py | 521 | CODE | |
| LOW | tests/test_cans.py | 3 | CODE | |
| LOW | tests/test_peft_patches.py | 8 | CODE | |
| LOW | tests/test_v0660_part_a.py | 20 | CODE | |
| LOW | tests/test_v07133.py | 12 | CODE | |
| LOW | tests/test_v0538.py | 11 | CODE | |
| LOW | tests/test_refusal_multilingual.py | 11 | CODE | |
| LOW | tests/test_issue359_deepspeed_guard_coverage.py | 16 | CODE | |
| LOW | tests/test_batch_probe.py | 8 | CODE | |
| LOW | tests/test_recipe_count_is_synced.py | 19 | CODE | |
| LOW | tests/test_issue549_bon_resume.py | 3 | CODE | |
| LOW | tests/test_v07117.py | 15 | CODE | |
| LOW | tests/test_ui_metrics.py | 87 | CODE | |
| LOW | tests/test_issue533_offline_hf_materialization.py | 3 | CODE | |
| LOW | tests/test_v0570_part_c.py | 3 | CODE | |
| LOW | tests/test_v0600_part_c.py | 10 | CODE | |
| LOW | tests/test_v07123.py | 21 | CODE | |
| LOW | tests/test_registry.py | 3 | CODE | |
| LOW | tests/test_windows_encoding.py | 11 | CODE | |
| LOW | tests/test_v0650_part_b.py | 6 | CODE | |
| LOW | tests/test_part_a_wave1.py | 12 | CODE | |
| LOW | tests/test_v0640_followups.py | 20 | CODE | |
| LOW | tests/test_v0430_part_b.py | 2 | CODE | |
| LOW | tests/test_code_review_medium_low.py | 3 | CODE | |
| LOW | tests/test_v0660_part_e.py | 25 | CODE | |
| LOW | tests/test_replay.py | 3 | CODE | |
| LOW | tests/test_issue459_interleave_streaming_hub.py | 32 | CODE | |
| LOW | tests/test_v0630_part_d.py | 3 | CODE | |
| LOW | tests/test_v0680_part_b.py | 8 | CODE | |
| LOW | tests/test_v05311.py | 7 | CODE | |
| LOW | tests/test_v07127.py | 15 | CODE | |
| LOW | tests/test_v07127.py | 29 | CODE | |
| LOW | tests/test_issue573_qwen4_expert_lora.py | 3 | CODE | |
| LOW | tests/test_issue330_mix_recipe_train_loadable.py | 17 | CODE | |
| LOW | tests/test_v07113.py | 9 | CODE | |
| LOW | tests/test_v0430_part_c.py | 2 | CODE | |
| LOW | tests/test_v0430_part_c.py | 115 | CODE | |
| LOW | tests/test_v0660_part_d.py | 17 | CODE | |
| LOW | tests/test_contributing_test_counts_are_digit_free.py | 19 | CODE | |
| LOW | tests/test_v0670_followups.py | 16 | CODE | |
| LOW | tests/test_code_review_recurring.py | 9 | CODE | |
| LOW | tests/test_v0630_part_e.py | 3 | CODE | |
| LOW | tests/test_v0460_part_b.py | 3 | CODE | |
| LOW | tests/test_v07136.py | 3 | CODE | |
| LOW | tests/test_multi_adapter.py | 100 | CODE | |
| LOW | tests/test_multi_adapter.py | 194 | CODE | |
| LOW | tests/test_v05310.py | 16 | CODE | |
| LOW | tests/test_v0680_part_c.py | 8 | CODE | |
| LOW | tests/test_v0630_followups.py | 13 | CODE | |
| LOW | tests/test_issue565_grpo_reward_metadata.py | 3 | CODE | |
| LOW | tests/test_v0600_part_f.py | 10 | CODE | |
| LOW | tests/test_code_review_deferred.py | 6 | CODE | |
| LOW | tests/test_v07126.py | 15 | CODE | |
| LOW | tests/test_v07112.py | 13 | CODE | |
| LOW | tests/test_issue443_interleave_wiring.py | 22 | CODE | |
| LOW | tests/test_issue350_fsdp_qlora.py | 8 | CODE | |
| LOW | tests/test_v0403_part_b.py | 3 | CODE | |
| LOW | tests/test_ui_chat.py | 20 | CODE | |
| LOW | tests/test_issue563_mps_bf16_training.py | 3 | CODE | |
| 810 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | tests/test_cans.py | 80 | eid = store.push( | CODE |
| HIGH⚡ | tests/test_cans.py | 172 | eid = store.push( | CODE |
| HIGH | tests/test_cans.py | 215 | eid = store.push( | CODE |
| HIGH | tests/test_cans.py | 269 | eid = store.push(name="recipe", tag="v1", base_model="llama", | CODE |
| HIGH | tests/test_issue549_bon_resume.py | 364 | '{"index":1,"sft":{},"dpo":null}\n', | CODE |
| HIGH⚡ | tests/test_registry.py | 215 | e1 = store.push(name="model-a", tag="v1", base_model="b", task="sft", | CODE |
| HIGH⚡ | tests/test_registry.py | 217 | e2 = store.push(name="model-a", tag="v1", base_model="b", task="sft", | CODE |
| HIGH⚡ | tests/test_registry.py | 232 | store.push(name=f"m{i}", tag="v1", base_model="b", task="sft", | CODE |
| HIGH⚡ | tests/test_registry.py | 240 | store.push(name="m1", tag="v1", base_model="b", task="sft", | CODE |
| HIGH⚡ | tests/test_registry.py | 242 | store.push(name="m2", tag="v2", base_model="b", task="sft", | CODE |
| HIGH⚡ | tests/test_registry.py | 249 | store.push(name="m1", tag="v1", base_model="llama-3.1-8b", task="sft", | CODE |
| HIGH⚡ | tests/test_registry.py | 251 | store.push(name="m2", tag="v1", base_model="qwen-3-8b", task="sft", | CODE |
| HIGH⚡ | tests/test_registry.py | 259 | store.push(name="medical-chat", tag="v1", base_model="llama", | CODE |
| HIGH⚡ | tests/test_registry.py | 261 | store.push(name="legal-chat", tag="v1", base_model="llama", | CODE |
| HIGH⚡ | tests/test_registry.py | 269 | store.push(name="Medical-Chat", tag="v1", base_model="llama", | CODE |
| HIGH⚡ | tests/test_registry.py | 276 | eid = store.push(name="m1", tag="v1", base_model="b", task="sft", | CODE |
| HIGH⚡ | tests/test_registry.py | 284 | eid = store.push(name="m1", tag="v1", base_model="b", task="sft", | CODE |
| HIGH⚡ | tests/test_registry.py | 290 | eid = store.push(name="m1", tag="v1", base_model="b", task="sft", | CODE |
| HIGH⚡ | tests/test_registry.py | 296 | eid = store.push(name="m1", tag="v1", base_model="b", task="sft", | CODE |
| HIGH⚡ | tests/test_registry.py | 320 | store.push(name="m1", tag="v1", base_model="b", | CODE |
| HIGH⚡ | tests/test_registry.py | 322 | store.push(name="m2", tag="v1", base_model="b", | CODE |
| HIGH⚡ | tests/test_registry.py | 333 | store.push(name="m1", tag="v1", base_model="", | CODE |
| HIGH⚡ | tests/test_registry.py | 340 | store.push(name="m1", tag="v1", base_model="b", | CODE |
| HIGH⚡ | tests/test_registry.py | 348 | eid = store.push( | CODE |
| HIGH⚡ | tests/test_registry.py | 360 | store.push(name="m1", tag="v1", base_model="b", task="sft", | CODE |
| HIGH⚡ | tests/test_registry.py | 362 | store.push(name="m2", tag="v1", base_model="b", task="dpo", | CODE |
| HIGH⚡ | tests/test_registry.py | 372 | store.push(name=f"m{i}", tag="v1", base_model="b", task="sft", | CODE |
| HIGH⚡ | tests/test_registry.py | 380 | store.push(name="m1", tag="v1", base_model="b", task="sft", | CODE |
| HIGH⚡ | tests/test_registry.py | 399 | parent = store.push(name="parent", tag="v1", base_model="b", | CODE |
| HIGH⚡ | tests/test_registry.py | 401 | child = store.push(name="child", tag="v1", base_model="b", | CODE |
| HIGH⚡ | tests/test_registry.py | 437 | eid = store.push(name="m1", tag="v1", base_model="b", | CODE |
| HIGH⚡ | tests/test_registry.py | 451 | store.push(name="m1", tag="v1", base_model="b", | CODE |
| HIGH⚡ | tests/test_registry.py | 468 | eid = store.push(name="m1", tag="v1", base_model="b", task="sft", | CODE |
| HIGH⚡ | tests/test_registry.py | 487 | eid = store.push(name="m1", tag="v1", base_model="b", task="sft", | CODE |
| HIGH⚡ | tests/test_registry.py | 501 | eid = store.push(name="m1", tag="v1", base_model="b", task="sft", | CODE |
| HIGH⚡ | tests/test_registry.py | 520 | eid = store.push(name="m1", tag="v1", base_model="b", task="sft", | CODE |
| HIGH⚡ | tests/test_registry.py | 533 | eid = store.push(name="m1", tag="v1", base_model="b", task="sft", | CODE |
| HIGH⚡ | tests/test_registry.py | 553 | parent = store.push(name="base", tag="v1", base_model="b", task="sft", | CODE |
| HIGH⚡ | tests/test_registry.py | 555 | child = store.push(name="fork", tag="v1", base_model="b", task="sft", | CODE |
| HIGH⚡ | tests/test_registry.py | 570 | a = store.push(name="a", tag="v1", base_model="b", task="sft", | CODE |
| HIGH⚡ | tests/test_registry.py | 572 | b = store.push(name="b", tag="v1", base_model="b", task="sft", | CODE |
| HIGH⚡ | tests/test_registry.py | 582 | a = store.push(name="a", tag="v1", base_model="b", task="sft", | CODE |
| HIGH⚡ | tests/test_registry.py | 593 | a = store.push(name="a", tag="v1", base_model="b", task="sft", | CODE |
| HIGH⚡ | tests/test_registry.py | 595 | b = store.push(name="b", tag="v1", base_model="b", task="sft", | CODE |
| HIGH⚡ | tests/test_registry.py | 607 | parent = store.push(name="p", tag="v1", base_model="b", task="sft", | CODE |
| HIGH⚡ | tests/test_registry.py | 618 | child = store.push(name="c", tag="v1", base_model="b", task="sft", | CODE |
| HIGH⚡ | tests/test_registry.py | 860 | eid = store.push(name="m1", tag="v1", base_model="llama", | CODE |
| HIGH⚡ | tests/test_registry.py | 875 | eid = store.push(name="m1", tag="v1", base_model="llama", | CODE |
| HIGH⚡ | tests/test_registry.py | 911 | eid = store.push(name="m1", tag="v1", base_model="llama", | CODE |
| HIGH⚡ | tests/test_registry.py | 953 | parent = store.push(name="base", tag="v1", base_model="llama", | CODE |
| HIGH⚡ | tests/test_registry.py | 955 | child = store.push(name="base", tag="v2", base_model="llama", | CODE |
| HIGH⚡ | tests/test_registry.py | 986 | eid = store.push(name="m1", tag="v1", base_model="b", task="sft", | CODE |
| HIGH⚡ | tests/test_registry.py | 1005 | store.push(name="clean", tag="v1", base_model="b", task="sft", | CODE |
| HIGH⚡ | tests/test_registry.py | 1020 | store.push(name="alpha", tag="v1", base_model="b", | CODE |
| HIGH⚡ | tests/test_registry.py | 1022 | store.push(name="beta", tag="v1", base_model="b", | CODE |
| HIGH⚡ | tests/test_registry.py | 1034 | store.push(name="m1", tag="v1", base_model="b", | CODE |
| HIGH | tests/test_registry.py | 193 | entry_id = store.push( | CODE |
| HIGH | tests/test_registry.py | 809 | eid = store.push(name="m1", tag="v1", base_model="llama", | CODE |
| HIGH | tests/test_registry.py | 830 | store.push(name="medical-chat", tag="v1", base_model="llama", | CODE |
| HIGH | tests/test_registry.py | 843 | a = store.push(name="m1", tag="v1", base_model="llama", | CODE |
| 57 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_eval_platform.py | 0 | remove ansi escape codes from rich-formatted output. | STRING |
| HIGH | tests/test_speculative_decoding.py | 0 | remove ansi escape codes from rich-formatted output. | STRING |
| HIGH | tests/test_synth_data_pro.py | 0 | remove ansi escape codes from rich-formatted output. | STRING |
| HIGH | tests/test_inference_advanced.py | 0 | remove ansi escape codes from rich-formatted output. | STRING |
| HIGH | tests/test_pretrain.py | 0 | test the runtimeerror guard when train() is called before setup(). | STRING |
| HIGH | tests/test_kto.py | 0 | test the runtimeerror guard when train() is called before setup(). | STRING |
| HIGH | tests/test_orpo.py | 0 | test the runtimeerror guard when train() is called before setup(). | STRING |
| HIGH | tests/test_embedding.py | 0 | test the runtimeerror guard when train() is called before setup(). | STRING |
| HIGH | tests/test_pretrain.py | 0 | calling train() before setup() should raise runtimeerror. | STRING |
| HIGH | tests/test_kto.py | 0 | calling train() before setup() should raise runtimeerror. | STRING |
| HIGH | tests/test_embedding.py | 0 | calling train() before setup() should raise runtimeerror. | STRING |
| HIGH | tests/test_pretrain.py | 0 | test the result dict returned by train() using a mocked trainer. | STRING |
| HIGH | tests/test_kto.py | 0 | test the result dict returned by train() using a mocked trainer. | STRING |
| HIGH | tests/test_orpo.py | 0 | test the result dict returned by train() using a mocked trainer. | STRING |
| HIGH | tests/test_embedding.py | 0 | test the result dict returned by train() using a mocked trainer. | STRING |
| HIGH | tests/test_pretrain.py | 0 | train() result dict must contain all expected keys. | STRING |
| HIGH | tests/test_kto.py | 0 | train() result dict must contain all expected keys. | STRING |
| HIGH | tests/test_embedding.py | 0 | train() result dict must contain all expected keys. | STRING |
| HIGH | tests/test_pretrain.py | 0 | initial_loss and final_loss should come from trainer log_history. | STRING |
| HIGH | tests/test_kto.py | 0 | initial_loss and final_loss should come from trainer log_history. | STRING |
| HIGH | tests/test_embedding.py | 0 | initial_loss and final_loss should come from trainer log_history. | STRING |
| HIGH | tests/test_pretrain.py | 0 | when log_history has no 'loss' entries, losses should be 0. | STRING |
| HIGH | tests/test_kto.py | 0 | when log_history has no 'loss' entries, losses should be 0. | STRING |
| HIGH | tests/test_embedding.py | 0 | when log_history has no 'loss' entries, losses should be 0. | STRING |
| HIGH | tests/test_pretrain.py | 0 | total_steps should match trainer.state.global_step. | STRING |
| HIGH | tests/test_kto.py | 0 | total_steps should match trainer.state.global_step. | STRING |
| HIGH | tests/test_embedding.py | 0 | total_steps should match trainer.state.global_step. | STRING |
| HIGH | tests/test_pretrain.py | 0 | output_dir in result should match wrapper._output_dir. | STRING |
| HIGH | tests/test_kto.py | 0 | output_dir in result should match wrapper._output_dir. | STRING |
| HIGH | tests/test_embedding.py | 0 | output_dir in result should match wrapper._output_dir. | STRING |
| HIGH | tests/test_pretrain.py | 0 | train() should call trainer.save_model with output_dir. | STRING |
| HIGH | tests/test_kto.py | 0 | train() should call trainer.save_model with output_dir. | STRING |
| HIGH | tests/test_embedding.py | 0 | train() should call trainer.save_model with output_dir. | STRING |
| HIGH | tests/test_pretrain.py | 0 | train() should call tokenizer.save_pretrained with output_dir. | STRING |
| HIGH | tests/test_kto.py | 0 | train() should call tokenizer.save_pretrained with output_dir. | STRING |
| HIGH | tests/test_embedding.py | 0 | train() should call tokenizer.save_pretrained with output_dir. | STRING |
| HIGH | tests/test_pretrain.py | 0 | train() should forward resume_from_checkpoint to trainer.train(). | STRING |
| HIGH | tests/test_kto.py | 0 | train() should forward resume_from_checkpoint to trainer.train(). | STRING |
| HIGH | tests/test_embedding.py | 0 | train() should forward resume_from_checkpoint to trainer.train(). | STRING |
| HIGH | tests/test_pretrain.py | 0 | long durations (>=1h) should produce 'xh ym' format. | STRING |
| HIGH | tests/test_kto.py | 0 | long durations (>=1h) should produce 'xh ym' format. | STRING |
| HIGH | tests/test_embedding.py | 0 | long durations (>=1h) should produce 'xh ym' format. | STRING |
| HIGH | tests/test_v0500_part_b.py | 0 | base: test-llama task: grpo data: train: ./data.jsonl format: chatml output: ./out training: epochs: 1 lr: 1e-4 reward_f | STRING |
| HIGH | tests/test_v0500_part_c.py | 0 | base: test-llama task: grpo data: train: ./data.jsonl format: chatml output: ./out training: epochs: 1 lr: 1e-4 reward_f | STRING |
| HIGH | tests/test_v0500_part_d.py | 0 | base: test-llama task: grpo data: train: ./data.jsonl format: chatml output: ./out training: epochs: 1 lr: 1e-4 reward_f | STRING |
| HIGH | tests/test_v0500_part_a.py | 0 | base: test-llama task: grpo data: train: ./data.jsonl format: chatml output: ./out training: epochs: 1 lr: 1e-4 reward_f | STRING |
| HIGH | tests/test_v0500_part_e.py | 0 | base: test-llama task: grpo data: train: ./data.jsonl format: chatml output: ./out training: epochs: 1 lr: 1e-4 reward_f | STRING |
| HIGH | src/soup_cli/utils/relora.py | 0 | return hf ``trainercallback`` (or ``object`` when transformers is absent). imported inside the function so the module ha | STRING |
| HIGH | src/soup_cli/monitoring/hf_push.py | 0 | return hf ``trainercallback`` (or ``object`` when transformers is absent). imported inside the function so the module ha | STRING |
| HIGH | src/soup_cli/utils/lisa.py | 0 | return hf ``trainercallback`` (or ``object`` when transformers is absent). imported inside the function so the module ha | STRING |
| HIGH | src/soup_cli/commands/merge.py | 0 | read base_model_name_or_path from adapter_config.json. | STRING |
| HIGH | src/soup_cli/commands/serve.py | 0 | read base_model_name_or_path from adapter_config.json. | STRING |
| HIGH | src/soup_cli/commands/export.py | 0 | read base_model_name_or_path from adapter_config.json. | STRING |
| HIGH | src/soup_cli/commands/chat.py | 0 | read base_model_name_or_path from adapter_config.json. | STRING |
| HIGH | src/soup_cli/trainer/pretrain.py | 0 | load model via standard transformers + peft pipeline. | STRING |
| HIGH | src/soup_cli/trainer/kto.py | 0 | load model via standard transformers + peft pipeline. | STRING |
| HIGH | src/soup_cli/trainer/embedding.py | 0 | load model via standard transformers + peft pipeline. | STRING |
| HIGH | src/soup_cli/trainer/orpo.py | 0 | load model via standard transformers + peft pipeline. | STRING |
| HIGH | src/soup_cli/trainer/bco.py | 0 | load model via standard transformers + peft pipeline. | STRING |
| HIGH | src/soup_cli/trainer/grpo.py | 0 | load model via standard transformers + peft pipeline. | STRING |
| 15 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_v07200.py | 1188 | def _cuda_available(): | CODE |
| LOW⚡ | tests/test_v07200.py | 1193 | except Exception: | CODE |
| LOW | tests/test_v07200.py | 1213 | except Exception: | CODE |
| MEDIUM | tests/test_v07204.py | 27 | def _cuda_available(): | CODE |
| MEDIUM | tests/test_v07204.py | 48 | def _mps_is_the_accelerator(): | CODE |
| LOW⚡ | tests/test_v07204.py | 32 | except Exception: # pragma: no cover - torch always present in CI | CODE |
| LOW | tests/test_v07204.py | 44 | except Exception: # pragma: no cover - torch always present in CI | CODE |
| LOW | tests/test_v07204.py | 57 | except Exception: # pragma: no cover | CODE |
| LOW | tests/test_trl_preference_config_contract.py | 298 | except Exception as exc: # noqa: BLE001 - reported, not swallowed | CODE |
| MEDIUM | tests/test_v07300.py | 203 | def _cuda_available(): | CODE |
| LOW⚡ | tests/test_v07300.py | 206 | except Exception: | CODE |
| MEDIUM | tests/test_issue349_measured_fit.py | 435 | def _cuda() -> bool: | CODE |
| LOW | tests/test_issue349_measured_fit.py | 440 | except Exception: | CODE |
| MEDIUM | tests/test_v0532.py | 256 | def _torch_or_skip(): | CODE |
| LOW⚡ | tests/test_v0532.py | 261 | except Exception: # pragma: no cover - CI without torch | CODE |
| LOW | tests/test_why.py | 101 | except Exception: | CODE |
| LOW⚡ | tests/test_issue385_stream_dtype.py | 387 | except Exception: | CODE |
| MEDIUM | tests/test_issue385_stream_dtype.py | 382 | def _cuda_available() -> bool: | CODE |
| LOW | tests/test_v0712.py | 474 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | tests/test_part_d.py | 113 | except Exception: # tokenizer mock approximation may explode in decode | CODE |
| LOW⚡ | tests/test_recipes.py | 84 | except Exception as exc: | CODE |
| LOW | tests/test_v0540.py | 974 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | tests/test_trl_version_compat.py | 244 | except Exception as exc: # noqa: BLE001 - reported, not swallowed | CODE |
| MEDIUM | tests/test_v07202.py | 32 | def _cuda() -> bool: | CODE |
| LOW | tests/test_v07202.py | 61 | except Exception: | CODE |
| LOW⚡ | tests/test_issue336_deepspeed_lora.py | 363 | except Exception: # noqa: BLE001 - any other refusal still counts as strict | CODE |
| LOW | .github/workflows/dependency-drift.yml | 98 | except Exception: | CODE |
| LOW | .github/workflows/ci.yml | 227 | except Exception as exc: # noqa: BLE001 — best effort, never fail the job | CODE |
| LOW | src/soup_cli/cli.py | 800 | except Exception: # noqa: BLE001 — audit must never crash the CLI | CODE |
| LOW | src/soup_cli/cli.py | 831 | except Exception as exc: | CODE |
| LOW | src/soup_cli/ui/app.py | 269 | except Exception as exc: | CODE |
| LOW | src/soup_cli/ui/app.py | 289 | except Exception as exc: | CODE |
| LOW | src/soup_cli/ui/app.py | 362 | except Exception as exc: | CODE |
| LOW | src/soup_cli/ui/app.py | 741 | except Exception as exc: | CODE |
| LOW | src/soup_cli/ui/plugins/__init__.py | 114 | except Exception: # noqa: BLE001 — plugin failure must not crash UI | CODE |
| LOW | src/soup_cli/plugins/__init__.py | 298 | except Exception: # noqa: BLE001 — plugin failure must not crash CLI | CODE |
| LOW | src/soup_cli/utils/liger.py | 96 | except Exception: # noqa: BLE001 — detection is best-effort by design | CODE |
| LOW⚡ | src/soup_cli/utils/structured_output.py | 123 | except Exception: # noqa: BLE001 — degrade to free-form rather than 500 | CODE |
| LOW⚡ | src/soup_cli/utils/structured_output.py | 128 | except Exception: # noqa: BLE001 | CODE |
| LOW | src/soup_cli/utils/v028_features.py | 61 | except Exception: # noqa: BLE001 — degrade gracefully | CODE |
| LOW | src/soup_cli/utils/v028_features.py | 75 | except Exception: # noqa: BLE001 | CODE |
| LOW | src/soup_cli/utils/v028_features.py | 155 | except Exception: # noqa: BLE001 — picker is best-effort | CODE |
| LOW | src/soup_cli/utils/prune_prompt.py | 251 | except Exception as exc: # noqa: BLE001 — surface a friendly message. | CODE |
| LOW | src/soup_cli/utils/ci_workflow.py | 208 | except Exception: | CODE |
| LOW | src/soup_cli/utils/data_forge.py | 392 | except Exception as exc: # noqa: BLE001 — judge backends vary | CODE |
| LOW | src/soup_cli/utils/data_forge.py | 462 | except Exception: | CODE |
| LOW | src/soup_cli/utils/data_forge.py | 610 | except Exception as exc: # noqa: BLE001 — httpx error variety | CODE |
| LOW | src/soup_cli/utils/data_forge.py | 654 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | src/soup_cli/utils/data_forge.py | 695 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | src/soup_cli/utils/advise.py | 797 | except Exception: # noqa: BLE001 — torch/transformers missing → heuristic | CODE |
| LOW | src/soup_cli/utils/advise.py | 819 | except Exception: # noqa: BLE001 — any live failure → heuristic fallback | CODE |
| LOW | src/soup_cli/utils/advise.py | 845 | except Exception: # noqa: BLE001 | CODE |
| LOW | src/soup_cli/utils/advise.py | 857 | except Exception: # noqa: BLE001 — any live failure → heuristic fallback | CODE |
| LOW | src/soup_cli/utils/advise.py | 882 | except Exception: # noqa: BLE001 | CODE |
| LOW | src/soup_cli/utils/advise.py | 892 | except Exception: # noqa: BLE001 | CODE |
| LOW | src/soup_cli/utils/ra_dit_run.py | 90 | except Exception: # noqa: BLE001 — Registry is optional. | CODE |
| LOW | src/soup_cli/utils/ra_dit_run.py | 94 | except Exception: # noqa: BLE001 — degrade to "no retriever". | CODE |
| LOW | src/soup_cli/utils/ra_dit_run.py | 131 | except Exception: # noqa: BLE001 — best-effort cleanup. | CODE |
| LOW | src/soup_cli/utils/ra_dit_run.py | 248 | except Exception: | CODE |
| LOW | src/soup_cli/utils/mole_routing.py | 461 | except Exception: # noqa: BLE001 — probe must never raise | CODE |
| 305 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_v07133.py | 939 | CODE | |
| LOW | tests/test_v0538.py | 503 | CODE | |
| LOW | tests/test_v07132.py | 160 | CODE | |
| LOW | tests/test_v07201.py | 87 | CODE | |
| LOW | tests/test_awq_gptq_export.py | 196 | CODE | |
| LOW | tests/test_awq_gptq_export.py | 360 | CODE | |
| LOW | tests/test_awq_gptq_export.py | 508 | CODE | |
| LOW | tests/test_build_dag.py | 21 | CODE | |
| LOW | tests/test_onnx_tensorrt_export.py | 80 | CODE | |
| LOW | tests/test_trainer_coverage_v035.py | 42 | CODE | |
| LOW | tests/test_trainer_coverage_v035.py | 202 | CODE | |
| LOW | tests/test_issue550_bon_offline.py | 446 | CODE | |
| LOW | tests/test_issue341_seed_and_fullft.py | 684 | CODE | |
| LOW | tests/test_cli_help_assertions_are_ansi_safe.py | 81 | CODE | |
| LOW | tests/test_ui_live_monitor.py | 31 | CODE | |
| LOW | scripts/assemble_changelog.py | 240 | CODE | |
| LOW | src/soup_cli/cli.py | 605 | CODE | |
| LOW | src/soup_cli/ui/app.py | 76 | CODE | |
| LOW | src/soup_cli/ui/app.py | 145 | CODE | |
| LOW | src/soup_cli/ui/app.py | 540 | CODE | |
| LOW | src/soup_cli/ui/app.py | 653 | CODE | |
| LOW | src/soup_cli/ui/app.py | 549 | CODE | |
| LOW | src/soup_cli/ui/app.py | 701 | CODE | |
| LOW | src/soup_cli/config/schema.py | 5507 | CODE | |
| LOW | src/soup_cli/utils/liger.py | 101 | CODE | |
| LOW | src/soup_cli/utils/advise_history.py | 195 | CODE | |
| LOW | src/soup_cli/utils/prune_prompt.py | 392 | CODE | |
| LOW | src/soup_cli/utils/data_forge.py | 231 | CODE | |
| LOW | src/soup_cli/utils/advise.py | 227 | CODE | |
| LOW | src/soup_cli/utils/mole_routing.py | 676 | CODE | |
| LOW | src/soup_cli/utils/data_doctor.py | 205 | CODE | |
| LOW | src/soup_cli/utils/reward_hack_control.py | 499 | CODE | |
| LOW | src/soup_cli/utils/prompt_compile.py | 248 | CODE | |
| LOW | src/soup_cli/utils/adapter_arithmetic.py | 75 | CODE | |
| LOW | src/soup_cli/utils/adapter_arithmetic.py | 405 | CODE | |
| LOW | src/soup_cli/utils/layer_shard.py | 650 | CODE | |
| LOW | src/soup_cli/utils/deploy_measure.py | 141 | CODE | |
| LOW | src/soup_cli/utils/deploy_measure.py | 196 | CODE | |
| LOW | src/soup_cli/utils/deploy_measure.py | 548 | CODE | |
| LOW | src/soup_cli/utils/ingest_sources.py | 156 | CODE | |
| LOW | src/soup_cli/utils/ingest_sources.py | 247 | CODE | |
| LOW | src/soup_cli/utils/ingest_sources.py | 293 | CODE | |
| LOW | src/soup_cli/utils/_eval_text.py | 27 | CODE | |
| LOW | src/soup_cli/utils/crash.py | 95 | CODE | |
| LOW | src/soup_cli/utils/vllm.py | 44 | CODE | |
| LOW | src/soup_cli/utils/kernel_picker.py | 204 | CODE | |
| LOW | src/soup_cli/utils/lr_groups.py | 41 | CODE | |
| LOW | src/soup_cli/utils/shrink.py | 257 | CODE | |
| LOW | src/soup_cli/utils/paths.py | 154 | CODE | |
| LOW | src/soup_cli/utils/annex_xi.py | 232 | CODE | |
| LOW | src/soup_cli/utils/annex_xi.py | 347 | CODE | |
| LOW | src/soup_cli/utils/annex_xi.py | 416 | CODE | |
| LOW | src/soup_cli/utils/annex_xi.py | 461 | CODE | |
| LOW | src/soup_cli/utils/irt.py | 404 | CODE | |
| LOW | src/soup_cli/utils/reward_hacking.py | 437 | CODE | |
| LOW | src/soup_cli/utils/drift_alarm.py | 179 | CODE | |
| LOW | src/soup_cli/utils/anthropic_messages.py | 54 | CODE | |
| LOW | src/soup_cli/utils/deploy_autopilot.py | 244 | CODE | |
| LOW | src/soup_cli/utils/batch_probe.py | 115 | CODE | |
| LOW | src/soup_cli/utils/reward_synth.py | 107 | CODE | |
| 174 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/soup_cli/ui/app.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/soup_cli/ui/app.py | 62 | def set_auth_token(token: str) -> None: | CODE |
| LOW | src/soup_cli/ui/plugins/__init__.py | 32 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/soup_cli/plugins/__init__.py | 35 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/soup_cli/plugins/__init__.py | 305 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/tool_outputs.py | 138 | def set_output(self, text: str) -> None: | CODE |
| LOW | src/soup_cli/utils/tool_outputs.py | 143 | def set_error(self, text: str) -> None: | CODE |
| LOW | src/soup_cli/utils/prune_prompt.py | 440 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/seeding.py | 39 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/soup_cli/utils/ci_workflow.py | 217 | __all__ = ["render_soup_gate_workflow", "write_soup_gate_workflow"] | CODE |
| LOW | src/soup_cli/utils/data_forge.py | 712 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/local_rl_scheduler.py | 267 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/ra_dit_run.py | 46 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/prompt_distill.py | 316 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/data_doctor.py | 913 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/reward_hack_control.py | 47 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/soup_cli/utils/prompt_compile.py | 478 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/tracing.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/soup_cli/utils/persona_hub.py | 268 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/layer_shard.py | 37 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/soup_cli/utils/mix_proxy.py | 43 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/curriculum_dynamic.py | 35 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/vllm.py | 10 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/soup_cli/utils/magpie.py | 579 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/data_pipeline.py | 803 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/embed.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/soup_cli/utils/apple_adapter.py | 56 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/soup_cli/utils/apple_adapter.py | 564 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/drift_alarm.py | 243 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/anthropic_messages.py | 210 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/deploy_autopilot.py | 384 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/prm_reward.py | 435 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/hardware_fit.py | 347 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/multipack_trainer.py | 34 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/soup_cli/utils/server_tools.py | 169 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/license_advisor.py | 321 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/tunability.py | 620 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/interference_live.py | 163 | __all__ = ["measure_interference_losses"] | CODE |
| LOW | src/soup_cli/utils/terraform_plan.py | 413 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/grpo_long_context.py | 27 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/soup_cli/utils/peft_wiring.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/soup_cli/utils/ngram_spec.py | 65 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/fsdp_consolidate.py | 30 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/soup_cli/utils/completions.py | 294 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/build_dag.py | 1025 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/brain_rot.py | 363 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/brain_rot_lang.py | 267 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/lisa.py | 35 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/soup_cli/utils/recipe_run.py | 668 | __all__ = ["run_recipe"] | CODE |
| LOW | src/soup_cli/utils/expectations.py | 537 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/agent_forge.py | 563 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/data_mix.py | 47 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/ab_test.py | 307 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/layer_stream_runtime.py | 27 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/soup_cli/utils/layer_stream_runtime.py | 70 | def _set_module_param(root: Any, full_name: str, tensor: Any) -> None: | CODE |
| LOW | src/soup_cli/utils/freeze.py | 9 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/soup_cli/utils/echo_trap.py | 478 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/compile_tools.py | 234 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/webhooks.py | 164 | __all__ = [ | CODE |
| LOW | src/soup_cli/utils/local_rl.py | 351 | def set_state(db_path: str, key: str, value: str) -> None: | CODE |
| 82 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/soup_cli/utils/fsdp.py | 64 | Get FSDP config dict by preset name. Args: preset: One of 'full_shard', 'shard_grad', 'full_offload'. | STRING |
| HIGH | src/soup_cli/utils/fsdp.py | 104 | Mutate and return ``training_kwargs`` with FSDP + optional torch.compile. Centralizes the "FSDP-block" logic from t | STRING |
| HIGH | src/soup_cli/utils/data_forge.py | 534 | Build a ``judge(prompt) -> {'text': str}`` callable for ``provider``. Args: provider: one of ``"ollama"`` / | STRING |
| HIGH | src/soup_cli/utils/ra_dit_run.py | 300 | Chain the two RA-DIT stages: retriever → auto-link → generator. Args: retriever_config: Path (under cwd) to | STRING |
| HIGH | src/soup_cli/utils/mix_proxy.py | 264 | Run one short proxy training and return the observed eval loss. Args: weights: Per-dataset interleave proba | STRING |
| HIGH | src/soup_cli/utils/kernel_picker.py | 262 | Pick the fastest kernel combo given benchmarked timings. Args: candidates: List of dicts each with ``name`` | STRING |
| HIGH | src/soup_cli/utils/multipack_sampler.py | 86 | First-Fit-Decreasing bin packing. Args: lengths: per-sample sequence lengths. max_len: maximum sum | STRING |
| HIGH | src/soup_cli/utils/ebft_gdpo.py | 307 | Energy-Based Fine-Tuning loss kernel (v0.53.2 #135). EBFT treats per-token logits as energies (lower = more probabl | STRING |
| HIGH | src/soup_cli/utils/lr_finder.py | 136 | Run an in-process LR-sweep training loop (#56, v0.33.0). For each LR in ``schedule``, pulls the next batch from ``d | STRING |
| HIGH | src/soup_cli/utils/gradient_ckpt.py | 94 | Install selective / medium gradient-checkpoint hooks on transformer blocks (#44, v0.33.0). Iterates the model's | STRING |
| HIGH | src/soup_cli/utils/hubs.py | 652 | Snapshot ``base`` from ``hub`` into a cwd-contained cache + return path. v0.53.10 #152 — shared helper extracted fr | STRING |
| HIGH | src/soup_cli/utils/jinja_analyzer.py | 55 | Walk ``template``'s Jinja AST and return the set of message fields. Detects both attribute-style ``{{ m.role }}`` a | STRING |
| HIGH | src/soup_cli/utils/recipe_run.py | 532 | Execute a validated :class:`RecipeDAG` end-to-end (v0.53.7 live). Per-node handlers dispatch on ``RecipeNode.kind`` | STRING |
| HIGH | src/soup_cli/utils/longlora.py | 264 | Apply the LongLoRA S² shift to half the attention heads. Pure math kernel used by :func:`apply_longlora_forward_ove | STRING |
| HIGH | src/soup_cli/utils/strict_safetensors.py | 216 | Refuse pickle / PyTorch-classic weights when ``strict=True``. Args: model_dir: cwd-contained model / adapte | STRING |
| HIGH | src/soup_cli/utils/neat_packing.py | 37 | Convert document boundaries into per-token 1-indexed segment IDs. Example: ``[0, 3, 5, 9]`` (3 docs of length 3, 2, | STRING |
| HIGH | src/soup_cli/utils/neat_packing.py | 107 | Build a ``(B, 1, S, S)`` additive attention mask from segment IDs. Args: seq_pos_ids: integer array of shap | STRING |
| HIGH | src/soup_cli/utils/data_mix.py | 190 | Validate dataset paths: containment + dedup + bounds. Args: raw: Sequence of dataset paths (relative or abs | STRING |
| HIGH | src/soup_cli/utils/freeze.py | 77 | Freeze every parameter, then unfreeze those matching ``patterns``. This is the Spectrum (#266) targeted-training me | STRING |
| HIGH | src/soup_cli/utils/trust_remote.py | 94 | Decide whether to pass ``trust_remote_code=True`` to HF loaders. Args: model_name: HF repo id or local path | STRING |
| HIGH | src/soup_cli/utils/multipack.py | 47 | Build a :class:`MultipackBatchSampler` from per-sample token lengths. Args: lengths: token counts for each | STRING |
| HIGH | src/soup_cli/utils/ollama.py | 160 | Generate Ollama Modelfile content. Args: gguf_path: Path to the GGUF model file. template: Template | STRING |
| HIGH | src/soup_cli/utils/cross_doc_attn.py | 26 | Build a block-diagonal causal attention mask. Args: boundaries: Sorted document boundary indices in ``[0, s | STRING |
| HIGH | src/soup_cli/data/loss_mask.py | 257 | Build labels where only assistant tokens contribute to loss. Args: messages: Chat messages list (``{"role": | STRING |
| HIGH | src/soup_cli/data/providers/anthropic.py | 24 | Generate examples using Anthropic Claude API. Args: prompt: User-provided topic/instructions. count | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/test_v07129.py | 439 | # Task 4 — commands/shrink.py prune orchestration + CLI registration | COMMENT |
| MEDIUM⚡ | tests/test_v0580.py | 498 | # Part C — budget guardrails | COMMENT |
| MEDIUM⚡ | tests/test_v0715.py | 187 | profile = self._profile() # factual_lookup + high variance → RAG | CODE |
| MEDIUM⚡ | tests/test_v0715.py | 196 | profile = self._profile() # would be RAG by default | CODE |
| MEDIUM | tests/test_v0535.py | 511 | # `subprocess.run` and asserts orchestration instead.) | COMMENT |
| MEDIUM | tests/test_v0680_part_e.py | 434 | # scaffold and exits 0 (no systemctl call). | COMMENT |
| MEDIUM | docs/training.md | 42 | - [RAFT — Retrieval-Augmented Fine-Tuning](#raft--retrieval-augmented-fine-tuning) | CODE |
| MEDIUM | docs/training.md | 43 | - [RA-DIT — Retrieval-Augmented Dual Instruction Tuning](#ra-dit--retrieval-augmented-dual-instruction-tuning) | CODE |
| MEDIUM⚡ | docs/evaluation.md | 73 | # Choice: SFT (or PROMPT_ENG / RAG / DPO / GRPO) | COMMENT |
| MEDIUM⚡ | docs/evaluation.md | 78 | # Optional ROI probe (offline heuristic: zero/few-shot + RAG + LoRA estimate). | COMMENT |
| MEDIUM⚡ | docs/evaluation.md | 78 | # Optional ROI probe (offline heuristic: zero/few-shot + RAG + LoRA estimate). | COMMENT |
| MEDIUM⚡ | docs/evaluation.md | 81 | # LIVE ROI probe (v0.71.7): loads the model for zero/few-shot token-F1, a short | COMMENT |
| MEDIUM | src/soup_cli/config/schema.py | 3773 | # so a recipe locks the right pairing; live two-stage orchestration | COMMENT |
| MEDIUM | src/soup_cli/config/schema.py | 6549 | # Fine-tune a model for chain-of-thought reasoning with GRPO | COMMENT |
| MEDIUM | src/soup_cli/config/schema.py | 6844 | # Extend model context window for long-document understanding | COMMENT |
| MEDIUM | src/soup_cli/config/schema.py | 6878 | # Fine-tune a sentence embedding model (BGE, E5, GTE, etc.) | COMMENT |
| MEDIUM⚡ | src/soup_cli/utils/advise.py | 944 | # Heuristic: shorter outputs → easier zero-shot; long-form → harder. | COMMENT |
| MEDIUM⚡ | src/soup_cli/utils/advise.py | 946 | # Few-shot beats zero-shot by a small margin when input length is moderate. | COMMENT |
| MEDIUM⚡ | src/soup_cli/utils/advise.py | 948 | # RAG only helps when there's lookup-style variance. | COMMENT |
| MEDIUM | src/soup_cli/utils/advise.py | 719 | # Marginal RAG → SFT flip: strong SFT track record, no comparable RAG | COMMENT |
| MEDIUM | src/soup_cli/utils/advise.py | 720 | # track record. RAG is the marginal call (it fired on a heuristic | COMMENT |
| MEDIUM | src/soup_cli/utils/advise.py | 1063 | "# RAG is outside Soup core — wire your data into a vector store " | CODE |
| MEDIUM | src/soup_cli/utils/advise.py | 910 | a LIVE probe (#161): it generates zero-shot and few-shot completions on a | STRING |
| MEDIUM | src/soup_cli/utils/ra_dit_run.py | 1 | """v0.71.10 #200 — live RA-DIT two-stage orchestration + retriever auto-link. | STRING |
| MEDIUM | src/soup_cli/utils/prm_reward.py | 225 | # Cap the assembled length to the PRM's own context window (bounded by a | COMMENT |
| MEDIUM | src/soup_cli/utils/asr_metrics.py | 154 | # pure insertions so a hallucination on an empty-ref row is NOT | COMMENT |
| MEDIUM | src/soup_cli/utils/compile_tools.py | 33 | # -> str`` callable so the parse -> iterate -> write orchestration is | COMMENT |
| MEDIUM⚡ | src/soup_cli/utils/spectrum_scan.py | 564 | # Resolve + scan orchestration | COMMENT |
| MEDIUM | src/soup_cli/templates/embedding.yaml | 2 | # Fine-tune a sentence embedding model (BGE, E5, GTE, etc.) | COMMENT |
| MEDIUM | src/soup_cli/templates/reasoning.yaml | 2 | # Fine-tune a model for chain-of-thought reasoning with GRPO | COMMENT |
| MEDIUM | src/soup_cli/templates/longcontext.yaml | 2 | # Extend model context window for long-document understanding | COMMENT |
| MEDIUM | src/soup_cli/commands/advise.py | 298 | # Pick the best of zero-shot vs few-shot as the "prompt_eng" baseline. | COMMENT |
| MEDIUM | src/soup_cli/commands/eval.py | 1341 | # so CI without GPUs can still smoke-test the orchestration layer. | COMMENT |
| MEDIUM | src/soup_cli/commands/local_rl.py | 211 | # Render the scheduler scaffold; never run systemctl / launchctl. | COMMENT |
| MEDIUM | src/soup_cli/data/formats.py | 492 | _MAX_RAFT_FIELD_LEN = 65_536 # 64 KiB per document — generous for legal/RAG corpora. | CODE |
| MEDIUM | src/soup_cli/trainer/asr.py | 272 | # teaches hallucination), so count both and warn once after the map. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_registry.py | 755 | # Create a finished run first | COMMENT |
| MEDIUM | tests/test_sweep.py | 269 | # Create a minimal config | COMMENT |
| MEDIUM | tests/test_v0620_part_c.py | 344 | # Create a tiny pairs JSONL to pass the path-containment check. | COMMENT |
| MEDIUM⚡ | tests/test_v0580.py | 1311 | # Create the dir then monkeypatch os.listdir to raise — simulates a | COMMENT |
| MEDIUM⚡ | tests/test_vllm_serve.py | 71 | # Create a fake model dir | COMMENT |
| MEDIUM⚡ | tests/test_v0537.py | 293 | # Create a tiny module with an upper-casing transform | COMMENT |
| MEDIUM | tests/test_ui.py | 315 | # Create a run | COMMENT |
| MEDIUM⚡ | tests/test_sglang_serve.py | 213 | # Create a dummy model path | COMMENT |
| MEDIUM | tests/test_templates_yaml.py | 115 | # Create a file OUTSIDE the templates dir | COMMENT |
| MEDIUM | tests/test_adapters.py | 28 | # Create a small dummy safetensors file (just for size detection) | COMMENT |
| MEDIUM | tests/test_bugfixes.py | 823 | # Create a real callable with no params (like experimental PPOTrainer.train) | COMMENT |
| MEDIUM | tests/test_bugfixes.py | 861 | # Create a real callable that accepts resume_from_checkpoint | COMMENT |
| MEDIUM | tests/test_part_f_hardening.py | 90 | # Create a broken symlink as 'checkpoint-300' | COMMENT |
| MEDIUM⚡ | tests/test_v0660_followups.py | 237 | # Create a real adapter dir | COMMENT |
| MEDIUM | tests/test_dataset_registry.py | 133 | # Create a dummy data file | COMMENT |
| MEDIUM⚡ | tests/test_cli.py | 59 | # Create a file (not a directory) | COMMENT |
| MEDIUM⚡ | tests/test_cli.py | 69 | # Create an empty directory (no adapter_config.json or config.json) | COMMENT |
| MEDIUM | src/soup_cli/templates/eu-ai-act.yaml | 4 | # This file is a normal training config — the compliance controls are Soup | COMMENT |
| MEDIUM | src/soup_cli/templates/hipaa.yaml | 4 | # This file is a normal training config — the compliance controls are Soup | COMMENT |
| MEDIUM | src/soup_cli/templates/soc2.yaml | 4 | # This file is a normal training config — the compliance controls are Soup | COMMENT |
| MEDIUM | src/soup_cli/templates/sr-11-7.yaml | 4 | # This file is a normal training config — the compliance controls are Soup | COMMENT |
| MEDIUM | src/soup_cli/trainer/embedding.py | 412 | # Create a custom Trainer subclass dynamically to inject compute_loss | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .pre-commit-config.yaml | 1 | # Pre-commit hooks for Soup CLI. | COMMENT |
| LOW | .pre-commit-config.yaml | 21 | # 2. run `ruff format src/soup_cli/ tests/` and commit the result alone, | COMMENT |
| LOW | pyproject.toml | 41 | # Soup supports both the 5.x and 6.x surfaces through plotext_compat (#522). | COMMENT |
| LOW | pyproject.toml | 61 | # explicit qwen3_5_text target policy below the automatic PEFT mapping layer. | COMMENT |
| LOW | pyproject.toml | 81 | # the config class whether it accepts the keyword (trainer/_trl_compat.py) | COMMENT |
| LOW | pyproject.toml | 141 | "mlx-lm>=0.31.3", | COMMENT |
| LOW | pyproject.toml | 161 | # stays infra-blocked and is NOT bundled here. | COMMENT |
| LOW | pyproject.toml | 181 | # `mcp.shared.memory.create_connected_server_and_client_session` and dropped | COMMENT |
| LOW | tests/test_issue459_interleave_streaming_hub.py | 561 | streaming=True, | COMMENT |
| LOW | tests/test_issue443_interleave_wiring.py | 301 | cfg = load_config_from_string(yaml_text) | COMMENT |
| LOW | tests/test_v0640_part_c.py | 721 | monkeypatch.chdir(tmp_path) | COMMENT |
| LOW | tests/test_v0535.py | 501 | # but `DataConfig.train` was typed `str`, so every `--live` candidate | COMMENT |
| LOW | tests/test_v07202.py | 1261 | #: BY CONSTRUCTION, and the construction is worth stating precisely because it was | COMMENT |
| LOW | tests/test_v07202.py | 1281 | #: | COMMENT |
| LOW | tests/test_v07203.py | 481 | COMMENT | |
| LOW | tests/test_v07203.py | 1401 | #: Free RAM to report so the tiny base comfortably takes the RAM tier. | COMMENT |
| LOW | examples/configs/rlhf_step3_ppo.yaml | 1 | # RLHF Step 3: PPO Training | COMMENT |
| LOW | examples/configs/sft_basic.yaml | 1 | # SFT Basic Example | COMMENT |
| LOW | examples/configs/rlhf_step1_sft.yaml | 1 | # RLHF Step 1: Supervised Fine-Tuning (SFT) | COMMENT |
| LOW | examples/configs/grpo_reasoning.yaml | 1 | # GRPO Reasoning Example | COMMENT |
| LOW | examples/configs/vision_llama.yaml | 1 | # TEMPLATE — NOT runnable as-is. Bring your own images and JSONL. | COMMENT |
| LOW | examples/configs/rlhf_step2_reward.yaml | 1 | # RLHF Step 2: Train Reward Model | COMMENT |
| LOW | .github/FUNDING.yml | 1 | # Sponsor button shown in the repo sidebar and on every issue / PR. | COMMENT |
| LOW | .github/constraints/transformers-floor.txt | 1 | # #571 — exact pins for the dedicated dependency-floor CI job. | COMMENT |
| LOW | .github/workflows/dependency-drift.yml | 1 | # Dependency drift (#323). | COMMENT |
| LOW | .github/workflows/ci.yml | 21 | # reject: 195d60b used the `runner` context in a job-level `env:` block, | COMMENT |
| LOW | .github/workflows/ci.yml | 161 | restore-keys: hf-${{ runner.os }}- | COMMENT |
| LOW | .github/workflows/ci.yml | 241 | - name: Save HF Hub cache | COMMENT |
| LOW | src/soup_cli/config/schema.py | 41 | # names in apply_unfrozen_parameters. soup.yaml is shareable config, so the | COMMENT |
| LOW | src/soup_cli/config/schema.py | 5201 | # model, and under streaming that model never loads, so the probe would | COMMENT |
| LOW | src/soup_cli/config/schema.py | 5581 | # literally (not imported — that would import loader.py, which | COMMENT |
| LOW | src/soup_cli/config/schema.py | 6941 | alpha: 16 | COMMENT |
| LOW | src/soup_cli/utils/liger.py | 61 | # model name. That private classmethod does not exist in liger-kernel 0.8.1 | COMMENT |
| LOW | src/soup_cli/utils/ship_verdict.py | 101 | # | COMMENT |
| LOW | src/soup_cli/utils/deepspeed.py | 81 | # `offload_optimizer` stays "none" deliberately. Turning it on makes DeepSpeed | COMMENT |
| LOW | src/soup_cli/utils/deepspeed.py | 121 | # real hardware in #336: | COMMENT |
| LOW | src/soup_cli/utils/lr_finder.py | 221 | # but ``smoothed_losses`` could carry a non-finite if the input loss | COMMENT |
| LOW | src/soup_cli/utils/multipack_trainer.py | 141 | class MultipackTrainer(base_cls): # type: ignore[misc, valid-type] | COMMENT |
| LOW | src/soup_cli/utils/multipack_trainer.py | 221 | data_collator = getattr(self, "data_collator", None) | COMMENT |
| LOW | src/soup_cli/utils/multipack_trainer.py | 241 | # Full multi-GPU validation is a QA issue (no multi-GPU box here); | COMMENT |
| LOW | src/soup_cli/utils/tts.py | 201 | "task='tts' is not supported on backend=mlx in v0.52.0" | COMMENT |
| LOW | src/soup_cli/utils/longlora.py | 21 | import re | COMMENT |
| LOW | src/soup_cli/utils/layer_stream_runtime.py | 881 | COMMENT | |
| LOW | src/soup_cli/utils/layer_stream_runtime.py | 901 | # match no child and are inert) and nothing is double-added. | COMMENT |
| LOW | src/soup_cli/utils/layer_stream_runtime.py | 961 | # `...layers.0.inner.self_attn.q_proj.lora_A.weight`. That file | COMMENT |
| LOW | src/soup_cli/utils/layer_stream.py | 41 | # Measured throughput a page-locked RAM store buys over a pageable one | COMMENT |
| LOW | src/soup_cli/utils/layer_stream.py | 61 | COMMENT | |
| LOW | src/soup_cli/utils/layer_stream.py | 101 | "qwen3_5_moe": "qwen3", | COMMENT |
| LOW | src/soup_cli/utils/layer_stream.py | 121 | COMMENT | |
| LOW | src/soup_cli/utils/layer_stream.py | 141 | #: it sees only its own reference — this stays charged: dropping it under- | COMMENT |
| LOW | src/soup_cli/utils/layer_stream.py | 161 | #: rounding, small per-run buffers). It came out at ~13.3 MB for a 135M model | COMMENT |
| LOW | src/soup_cli/utils/layer_stream.py | 301 | kind: str | COMMENT |
| LOW | src/soup_cli/utils/layer_stream.py | 1461 | if tier == TIER_DISK: | COMMENT |
| LOW | src/soup_cli/utils/gpu.py | 401 | if not torch.cuda.is_available(): | COMMENT |
| LOW | src/soup_cli/utils/uld.py | 321 | ) | COMMENT |
| LOW | src/soup_cli/utils/env_lock.py | 261 | for raw in requirements: | COMMENT |
| LOW | src/soup_cli/utils/active_sampler.py | 141 | # 1 - |2*s - 1| -> peak at s=0.5 | COMMENT |
| LOW | src/soup_cli/templates/eu-ai-act.yaml | 1 | # Soup compliance template: EU AI Act (Annex XI/XII technical documentation) | COMMENT |
| LOW | src/soup_cli/templates/hipaa.yaml | 1 | # Soup compliance template: HIPAA (Protected Health Information) | COMMENT |
| LOW | src/soup_cli/templates/rlhf.yaml | 1 | # Soup template: Full RLHF Pipeline (SFT + Reward Model + PPO) | COMMENT |
| 15 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | pyproject.toml | 113 | # Aider's normal CLI. Its Polyglot harness is source-only, so `soup eval aider` | COMMENT |
| LOW⚡ | tests/test_registry.py | 1007 | # SQL injection attempt — should simply return 0 hits, not crash | COMMENT |
| LOW | tests/test_issue443_interleave_wiring.py | 358 | # the real process cwd — must actually chdir, not just pass tmp_path. | COMMENT |
| LOW | tests/test_doctor.py | 160 | # We mock mp.spawn to just set a value in the return_dict instead of actually running processes. | COMMENT |
| MEDIUM | tests/test_v0401_part_d.py | 1 | """v0.40.1 Part D — CLI UX consistency tests (highest-leverage subset). | STRING |
| LOW⚡ | tests/test_inference_advanced.py | 482 | # Should not raise, just return None + log | COMMENT |
| MEDIUM⚡ | tests/test_v0713.py | 33 | # Rich's FORCE_COLOR splitting on CI (mirrors the v0.71.1 ANSI-robust fix: | COMMENT |
| LOW | tests/test_bugfixes.py | 914 | # resume is None/falsy so it should just call train() | COMMENT |
| MEDIUM | tests/test_v0404_part_a.py | 27 | # Strip ANSI so substring assertions are robust. Mirrors the helper in | COMMENT |
| MEDIUM⚡ | tests/test_trust_remote_code.py | 19 | # ANSI so substring assertions are robust. Mirrors the helper in | COMMENT |
| MEDIUM | tests/test_log_level.py | 23 | # substring assertions are robust across all CI matrix jobs. | COMMENT |
| MEDIUM⚡ | tests/test_v0718.py | 45 | # Tiny real-torch harness for activation capture (#215 / #217 / #219). | COMMENT |
| MEDIUM⚡ | tests/test_v07141.py | 179 | # zip short-circuits) — must be a hard error, never a silent 0/1=robust. | COMMENT |
| MEDIUM | tests/test_v07141.py | 345 | # false "robust" exit 0. | STRING |
| MEDIUM | benchmarks/harness/bnb_repro.py | 263 | # A successful reproduction here would mean the harness is not | COMMENT |
| MEDIUM | benchmarks/harness/bnb_repro.py | 282 | # is removed or bypassed, the comparison becomes equal and the harness | COMMENT |
| MEDIUM | src/soup_cli/cli.py | 347 | # v0.63.0 Part D — mSPRT A/B harness. | COMMENT |
| MEDIUM | src/soup_cli/utils/curriculum_dynamic.py | 263 | # Median is robust to outliers; matches Axolotl curriculum policy. | COMMENT |
| MEDIUM | src/soup_cli/utils/capability_suite.py | 249 | # Lazy-load the harness via importlib so the module has no heavy | COMMENT |
| MEDIUM | src/soup_cli/utils/freeze.py | 117 | # (quantization='none') normally prevents this, but stay robust. | COMMENT |
| MEDIUM | src/soup_cli/commands/reward.py | 287 | """Adversarially probe a reward verifier for gameability (exit 0 robust / 2 gameable).""" | STRING |
| MEDIUM | src/soup_cli/commands/doctor.py | 576 | _NCCL_BENCHMARK_TIMED_ITERS = 10 # 10 timed runs; report the median (robust to outliers) | CODE |
| MEDIUM | src/soup_cli/commands/doctor.py | 608 | # Per-iteration timing (10 samples). Median is more robust to | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_v07127.py | 59 | CODE | |
| LOW | tests/test_v07122.py | 626 | CODE | |
| LOW | tests/test_v07203.py | 2015 | CODE | |
| LOW | src/soup_cli/utils/reward_hack_control.py | 804 | CODE | |
| LOW | src/soup_cli/utils/layer_shard.py | 650 | CODE | |
| LOW | src/soup_cli/utils/vllm.py | 144 | CODE | |
| LOW | src/soup_cli/utils/magpie.py | 475 | CODE | |
| LOW | src/soup_cli/utils/long_context.py | 281 | CODE | |
| LOW | src/soup_cli/utils/adapter_pr.py | 243 | CODE | |
| LOW | src/soup_cli/utils/layer_stream_runtime.py | 2256 | CODE | |
| LOW | src/soup_cli/utils/launcher.py | 118 | CODE | |
| LOW | src/soup_cli/commands/distill_prompt.py | 22 | CODE | |
| LOW | src/soup_cli/commands/data_forge.py | 25 | CODE | |
| LOW | src/soup_cli/commands/data_doctor.py | 138 | CODE | |
| LOW | src/soup_cli/commands/merge.py | 14 | CODE | |
| LOW | src/soup_cli/commands/steer.py | 57 | CODE | |
| LOW | src/soup_cli/commands/deploy.py | 202 | CODE | |
| LOW | src/soup_cli/commands/deploy.py | 571 | CODE | |
| LOW | src/soup_cli/commands/shrink.py | 234 | CODE | |
| LOW | src/soup_cli/commands/generate.py | 22 | CODE | |
| LOW | src/soup_cli/commands/generate.py | 494 | CODE | |
| LOW | src/soup_cli/commands/ci.py | 24 | CODE | |
| LOW | src/soup_cli/commands/tunability.py | 47 | CODE | |
| LOW | src/soup_cli/commands/serve.py | 68 | CODE | |
| LOW | src/soup_cli/commands/serve.py | 1486 | CODE | |
| LOW | src/soup_cli/commands/serve.py | 1578 | CODE | |
| LOW | src/soup_cli/commands/serve.py | 2264 | CODE | |
| LOW | src/soup_cli/commands/edit.py | 127 | CODE | |
| LOW | src/soup_cli/commands/edit.py | 326 | CODE | |
| LOW | src/soup_cli/commands/export.py | 35 | CODE | |
| LOW | src/soup_cli/commands/bench.py | 15 | CODE | |
| LOW | src/soup_cli/commands/diagnose.py | 232 | CODE | |
| LOW | src/soup_cli/commands/chat.py | 14 | CODE | |
| LOW | src/soup_cli/commands/chat.py | 306 | CODE | |
| LOW | src/soup_cli/commands/bom.py | 30 | CODE | |
| LOW | src/soup_cli/commands/data_mix.py | 44 | CODE | |
| LOW | src/soup_cli/commands/train.py | 190 | CODE | |
| LOW | src/soup_cli/commands/infer.py | 54 | CODE | |
| LOW | src/soup_cli/commands/diff.py | 16 | CODE | |
| LOW | src/soup_cli/commands/sweep.py | 18 | CODE | |
| LOW | src/soup_cli/commands/ship.py | 1144 | CODE | |
| LOW | src/soup_cli/commands/eval.py | 138 | CODE | |
| LOW | src/soup_cli/commands/attest.py | 35 | CODE | |
| LOW | src/soup_cli/commands/local_rl.py | 160 | CODE | |
| LOW | src/soup_cli/commands/reward.py | 111 | CODE | |
| LOW | src/soup_cli/commands/reward.py | 258 | CODE | |
| LOW | src/soup_cli/commands/draft.py | 476 | CODE | |
| LOW | src/soup_cli/commands/draft.py | 653 | CODE | |
| LOW | src/soup_cli/commands/_eval_v0650.py | 251 | CODE | |
| LOW | src/soup_cli/commands/data.py | 882 | CODE | |
| LOW | src/soup_cli/commands/data.py | 1582 | CODE | |
| LOW | src/soup_cli/commands/data.py | 1893 | CODE | |
| LOW | src/soup_cli/commands/data.py | 2817 | CODE | |
| LOW | src/soup_cli/commands/data.py | 3021 | CODE | |
| LOW | src/soup_cli/commands/data.py | 3577 | CODE | |
| LOW | src/soup_cli/commands/push.py | 22 | CODE | |
| LOW | src/soup_cli/commands/adapters.py | 343 | CODE | |
| LOW | src/soup_cli/commands/adapters.py | 955 | CODE | |
| LOW | src/soup_cli/commands/adapters.py | 1420 | CODE | |
| LOW | src/soup_cli/monitoring/callback.py | 32 | CODE | |
| 1 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | src/soup_cli/config/schema.py | 6991 | # Step 1: soup train --config soup_sft.yaml # SFT warmup | COMMENT |
| LOW⚡ | src/soup_cli/config/schema.py | 6992 | # Step 2: soup train --config soup_rm.yaml # Train reward model | COMMENT |
| LOW⚡ | src/soup_cli/config/schema.py | 6993 | # Step 3: soup train --config soup_ppo.yaml # PPO with reward model | COMMENT |
| LOW⚡ | src/soup_cli/templates/rlhf.yaml | 5 | # Step 1: soup train --config soup_sft.yaml # SFT warmup | COMMENT |
| LOW⚡ | src/soup_cli/templates/rlhf.yaml | 6 | # Step 2: soup train --config soup_rm.yaml # Train reward model | COMMENT |
| LOW⚡ | src/soup_cli/templates/rlhf.yaml | 7 | # Step 3: soup train --config soup_ppo.yaml # PPO with reward model | COMMENT |
| LOW | src/soup_cli/commands/export.py | 289 | # Step 1: Convert HF model to GGUF (f16) | COMMENT |
| LOW | src/soup_cli/commands/export.py | 757 | # Step 1: Convert HF model to TensorRT-LLM checkpoint | COMMENT |
| LOW | src/soup_cli/commands/export.py | 783 | # Step 2: Build TensorRT engine | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | src/soup_cli/config/schema.py | 6991 | # Step 1: soup train --config soup_sft.yaml # SFT warmup | COMMENT |
| LOW⚡ | src/soup_cli/config/schema.py | 6992 | # Step 2: soup train --config soup_rm.yaml # Train reward model | COMMENT |
| LOW⚡ | src/soup_cli/config/schema.py | 6993 | # Step 3: soup train --config soup_ppo.yaml # PPO with reward model | COMMENT |
| LOW⚡ | src/soup_cli/templates/rlhf.yaml | 5 | # Step 1: soup train --config soup_sft.yaml # SFT warmup | COMMENT |
| LOW⚡ | src/soup_cli/templates/rlhf.yaml | 6 | # Step 2: soup train --config soup_rm.yaml # Train reward model | COMMENT |
| LOW⚡ | src/soup_cli/templates/rlhf.yaml | 7 | # Step 3: soup train --config soup_ppo.yaml # PPO with reward model | COMMENT |
| LOW | src/soup_cli/commands/export.py | 289 | # Step 1: Convert HF model to GGUF (f16) | COMMENT |
| LOW | src/soup_cli/commands/export.py | 757 | # Step 1: Convert HF model to TensorRT-LLM checkpoint | COMMENT |
| LOW | src/soup_cli/commands/export.py | 783 | # Step 2: Build TensorRT engine | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_issue459_interleave_streaming_hub.py | 540 | (tmp_path / f"a{suffix}").write_text("placeholder", encoding="utf-8") | CODE |
| LOW⚡ | tests/test_issue459_interleave_streaming_hub.py | 541 | (tmp_path / f"b{suffix}").write_text("placeholder", encoding="utf-8") | CODE |
| LOW⚡ | tests/test_v07127.py | 1388 | prompt = "Please summarize the following article: " + ("lorem ipsum " * 5) | CODE |
| LOW⚡ | tests/test_v07127.py | 1396 | prompt = "Please summarize the following article: " + ("lorem ipsum " * 5) | CODE |
| LOW | tests/test_v07127.py | 1523 | leak_prompt = "Please summarize the following unique article: " + ("lorem ipsum " * 5) | CODE |
| LOW⚡ | tests/test_v05310.py | 117 | presidio_hits = [{"kind": "email", "snippet": "user@example.com"}] | CODE |
| LOW⚡ | tests/test_v07116.py | 236 | "lorem ipsum dolor sit amet consectetur", | CODE |
| LOW⚡ | tests/test_v07116.py | 236 | "lorem ipsum dolor sit amet consectetur", | CODE |
| LOW⚡ | tests/test_v07122.py | 1207 | assert original_assistant["content"] == "placeholder" | CODE |
| LOW | tests/test_v07122.py | 1194 | original_assistant = {"role": "assistant", "content": "placeholder"} | CODE |
| LOW | tests/test_v0537.py | 1797 | target = self._write_arrow_dir(tmp_path, cache_key="placeholder") | CODE |
| LOW | tests/test_v0537.py | 1838 | target = self._write_arrow_dir(tmp_path, cache_key="placeholder") | CODE |
| LOW⚡ | tests/test_v0712.py | 1502 | existing.write_text("placeholder", encoding="utf-8") | CODE |
| LOW⚡ | tests/test_v0430_part_d.py | 82 | target.write_text("placeholder", encoding="utf-8") | CODE |
| LOW⚡ | tests/test_v0430_part_d.py | 108 | outside.write_text("placeholder", encoding="utf-8") | CODE |
| LOW | docs/adapters-and-governance.md | 203 | --subject "The CEO of Acme is" --target "Jane Doe" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_awq_gptq_export.py | 881 | # Set cwd to a subdirectory so ../evil is outside | COMMENT |
| LOW | src/soup_cli/ui/app.py | 478 | # Check if training is still running | COMMENT |
| LOW | src/soup_cli/commands/export.py | 603 | # Check if it's in PATH | COMMENT |
| LOW | src/soup_cli/commands/export.py | 627 | # Check if LoRA adapter | COMMENT |
| LOW | src/soup_cli/commands/export.py | 726 | # Check if LoRA adapter | COMMENT |
| LOW | src/soup_cli/commands/export.py | 934 | # Check if LoRA adapter — merge first | COMMENT |
| LOW | src/soup_cli/commands/export.py | 1080 | # Check if LoRA adapter — merge first | COMMENT |
| LOW | src/soup_cli/commands/eval.py | 393 | # Display results | COMMENT |
| LOW | src/soup_cli/commands/data.py | 652 | # Check if this is a vision dataset | COMMENT |
| LOW | src/soup_cli/data/loader.py | 368 | # Check if it's a HuggingFace dataset | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/configs/dpo_example.yaml | 5 | # Usage: | COMMENT |
| LOW | examples/configs/rlhf_step3_ppo.yaml | 9 | # Usage: | COMMENT |
| LOW | examples/configs/sft_basic.yaml | 9 | # Usage: | COMMENT |
| LOW | examples/configs/rlhf_step1_sft.yaml | 8 | # Usage: | COMMENT |
| LOW | examples/configs/grpo_reasoning.yaml | 10 | # Usage: | COMMENT |
| LOW | examples/configs/rlhf_step2_reward.yaml | 8 | # Usage: | COMMENT |
| LOW | examples/configs/dpo_chat.yaml | 9 | # Usage: | COMMENT |
| LOW⚡ | src/soup_cli/config/schema.py | 6990 | # Usage: | COMMENT |
| LOW⚡ | src/soup_cli/templates/rlhf.yaml | 4 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/test_refusal_multilingual.py | 68 | assert looks_like_refusal("As an AI language model, I refuse to answer.") | CODE |
| MEDIUM⚡ | tests/test_v0560.py | 280 | assert looks_like_refusal("As an AI language model, I refuse to answer.") | CODE |