soup-cli 0.76.0__tar.gz → 0.76.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1986) hide show
  1. soup_cli-0.76.1/.github/constraints/transformers-floor.txt +25 -0
  2. {soup_cli-0.76.0 → soup_cli-0.76.1}/.github/workflows/ci.yml +11 -1
  3. {soup_cli-0.76.0 → soup_cli-0.76.1}/CHANGELOG.md +42 -4
  4. {soup_cli-0.76.0 → soup_cli-0.76.1}/CONTRIBUTING.md +29 -28
  5. {soup_cli-0.76.0 → soup_cli-0.76.1}/PKG-INFO +48 -58
  6. {soup_cli-0.76.0 → soup_cli-0.76.1}/README.ar.md +61 -38
  7. {soup_cli-0.76.0 → soup_cli-0.76.1}/README.ja.md +61 -39
  8. {soup_cli-0.76.0 → soup_cli-0.76.1}/README.md +46 -56
  9. {soup_cli-0.76.0 → soup_cli-0.76.1}/README.tr.md +64 -43
  10. {soup_cli-0.76.0 → soup_cli-0.76.1}/README.zh.md +57 -37
  11. {soup_cli-0.76.0 → soup_cli-0.76.1}/changelog.d/README.md +3 -2
  12. {soup_cli-0.76.0 → soup_cli-0.76.1}/docs/backends-and-ops.md +4 -0
  13. {soup_cli-0.76.0 → soup_cli-0.76.1}/docs/performance-and-quantization.md +7 -6
  14. {soup_cli-0.76.0 → soup_cli-0.76.1}/docs/serving-and-export.md +1 -1
  15. {soup_cli-0.76.0 → soup_cli-0.76.1}/pyproject.toml +13 -2
  16. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/__init__.py +1 -1
  17. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/cans/unpack.py +10 -16
  18. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/cli.py +6 -4
  19. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/adapters.py +12 -4
  20. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/deploy.py +10 -3
  21. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/doctor.py +3 -1
  22. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/eval.py +3 -2
  23. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/export.py +1 -1
  24. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/plan.py +2 -3
  25. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/push.py +8 -3
  26. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/recipes.py +5 -1
  27. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/ship.py +1 -1
  28. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/train.py +10 -5
  29. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/config/loader.py +83 -5
  30. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/formats.py +250 -19
  31. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/loader.py +36 -4
  32. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/eval/gate.py +4 -2
  33. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/eval/judge.py +4 -3
  34. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/migrate/axolotl.py +4 -4
  35. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/migrate/llamafactory.py +4 -4
  36. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/online_dpo.py +10 -6
  37. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/agent_forge.py +2 -2
  38. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/argv_redaction.py +98 -25
  39. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/build_dag.py +3 -1
  40. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/checklist_dsl.py +2 -1
  41. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/data_mix.py +2 -3
  42. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/expectations.py +3 -1
  43. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/license_matrix.py +4 -2
  44. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/mix_proxy.py +6 -1
  45. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/ra_dit_run.py +2 -2
  46. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/recipe_dag.py +3 -1
  47. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/save_formats.py +4 -3
  48. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/sweep_config.py +2 -3
  49. soup_cli-0.76.1/src/soup_cli/utils/yaml_limits.py +403 -0
  50. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_argv_redaction_bundled_shorts.py +10 -3
  51. soup_cli-0.76.1/tests/test_argv_redaction_command_tree.py +470 -0
  52. soup_cli-0.76.1/tests/test_cli_dependency_floors.py +313 -0
  53. soup_cli-0.76.1/tests/test_config_loader_limits.py +698 -0
  54. soup_cli-0.76.1/tests/test_formats_preference_layouts.py +1179 -0
  55. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue897_ui_yaml_body_cap.py +6 -2
  56. soup_cli-0.76.1/tests/test_loader_hub_id_routing.py +329 -0
  57. soup_cli-0.76.1/tests/test_trainer_preference_layouts.py +475 -0
  58. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_transformers_floor_compat.py +7 -1
  59. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_yaml_expanded_limit.py +85 -0
  60. soup_cli-0.76.1/tests/test_yaml_limits.py +664 -0
  61. soup_cli-0.76.1/tests/test_yaml_reads_are_limited.py +658 -0
  62. soup_cli-0.76.0/.github/constraints/transformers-floor.txt +0 -13
  63. soup_cli-0.76.0/src/soup_cli/utils/yaml_limits.py +0 -121
  64. {soup_cli-0.76.0 → soup_cli-0.76.1}/.dockerignore +0 -0
  65. {soup_cli-0.76.0 → soup_cli-0.76.1}/.gitattributes +0 -0
  66. {soup_cli-0.76.0 → soup_cli-0.76.1}/.github/FUNDING.yml +0 -0
  67. {soup_cli-0.76.0 → soup_cli-0.76.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  68. {soup_cli-0.76.0 → soup_cli-0.76.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  69. {soup_cli-0.76.0 → soup_cli-0.76.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  70. {soup_cli-0.76.0 → soup_cli-0.76.1}/.github/pull_request_template.md +0 -0
  71. {soup_cli-0.76.0 → soup_cli-0.76.1}/.github/workflows/codspeed.yml +0 -0
  72. {soup_cli-0.76.0 → soup_cli-0.76.1}/.github/workflows/dependency-drift.yml +0 -0
  73. {soup_cli-0.76.0 → soup_cli-0.76.1}/.github/workflows/docker.yml +0 -0
  74. {soup_cli-0.76.0 → soup_cli-0.76.1}/.github/workflows/issue-triage.yml +0 -0
  75. {soup_cli-0.76.0 → soup_cli-0.76.1}/.github/workflows/merge-freshness.yml +0 -0
  76. {soup_cli-0.76.0 → soup_cli-0.76.1}/.github/workflows/publish.yml +0 -0
  77. {soup_cli-0.76.0 → soup_cli-0.76.1}/.github/workflows/recipe-attach.yml +0 -0
  78. {soup_cli-0.76.0 → soup_cli-0.76.1}/.github/workflows/recipe-repo-ids.yml +0 -0
  79. {soup_cli-0.76.0 → soup_cli-0.76.1}/.github/workflows/recipe-validation.yml +0 -0
  80. {soup_cli-0.76.0 → soup_cli-0.76.1}/.gitignore +0 -0
  81. {soup_cli-0.76.0 → soup_cli-0.76.1}/.mailmap +0 -0
  82. {soup_cli-0.76.0 → soup_cli-0.76.1}/.pre-commit-config.yaml +0 -0
  83. {soup_cli-0.76.0 → soup_cli-0.76.1}/AGENTS.md +0 -0
  84. {soup_cli-0.76.0 → soup_cli-0.76.1}/CODEOWNERS +0 -0
  85. {soup_cli-0.76.0 → soup_cli-0.76.1}/CODE_OF_CONDUCT.md +0 -0
  86. {soup_cli-0.76.0 → soup_cli-0.76.1}/CONTRIBUTORS.md +0 -0
  87. {soup_cli-0.76.0 → soup_cli-0.76.1}/Dockerfile +0 -0
  88. {soup_cli-0.76.0 → soup_cli-0.76.1}/LICENSE +0 -0
  89. {soup_cli-0.76.0 → soup_cli-0.76.1}/NOTICE +0 -0
  90. {soup_cli-0.76.0 → soup_cli-0.76.1}/SECURITY.md +0 -0
  91. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/README.md +0 -0
  92. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/bench_validator.py +0 -0
  93. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/evidence/quest-674-postfit-v1.json +0 -0
  94. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/gate-1227-ab-burn-in.md +0 -0
  95. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/gate-1265-ab-nig.md +0 -0
  96. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/gate-1418-ab-cs-accept.md +0 -0
  97. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/gate-1702-arena-packing.md +0 -0
  98. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/gate-395-second-stack-vram.md +0 -0
  99. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/gate-655-pinned-store-accounting.md +0 -0
  100. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/gate-674-quest-mixed-route.md +0 -0
  101. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/gate-674-quest-w4a4-sft.md +0 -0
  102. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/gate-725-lorafa-operating-point.md +0 -0
  103. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/gate-836-bench-train-contract.md +0 -0
  104. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/gate-901-14b-on-8gb.md +0 -0
  105. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/gate-971-async-nvme-source.md +0 -0
  106. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/gate-974-disk-tier-direct-io.md +0 -0
  107. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/gate-h100-validation.md +0 -0
  108. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/gate-qwen4-ple-m4-max.md +0 -0
  109. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/gate-two-drive-striping.md +0 -0
  110. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/gate-v0.72.0-layer-streaming.md +0 -0
  111. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/gate-v0.72.2-nf4.md +0 -0
  112. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/gate-v0.72.3-breadth.md +0 -0
  113. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/gate-v0.72.4-preference-losses.md +0 -0
  114. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/gate-v0.73.1-measured-vram-fit.md +0 -0
  115. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/gate-v0.73.2-leg2-scoring.md +0 -0
  116. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/gate-v0.76.0-arithmetic-discrimination.md +0 -0
  117. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/gate-v0.76.0-common-sense-discrimination.md +0 -0
  118. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/gate-v0.76.0-cuda-graph-decode.md +0 -0
  119. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/gate-v0.76.0-tool-call-discrimination.md +0 -0
  120. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/gpu-test-runs.md +0 -0
  121. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/ab_burn_in_sweep.py +0 -0
  122. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/ab_cs_accept_sweep.py +0 -0
  123. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/ab_nig_sweep.py +0 -0
  124. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/batch_control_probe.py +0 -0
  125. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/batch_control_rule.py +0 -0
  126. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/batch_control_sampler.py +0 -0
  127. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/bitexact.py +0 -0
  128. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/bnb_repro.py +0 -0
  129. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/compare_shard_caches.py +0 -0
  130. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/cuda_graph_decode_bench.py +0 -0
  131. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/cuda_graph_decode_compare.py +0 -0
  132. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/cuda_graph_decode_gate.ps1 +0 -0
  133. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/cuda_graph_decode_prompts.py +0 -0
  134. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/cuda_graph_decode_rerecord_probe.py +0 -0
  135. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/cuda_graph_decode_synthetic_lora.py +0 -0
  136. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/cuda_graph_decode_verdict.py +0 -0
  137. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/determinism.py +0 -0
  138. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/fixture_window_cpu.py +0 -0
  139. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/fsdp_sharding_probe.py +0 -0
  140. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/graddiff.py +0 -0
  141. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/head_prefetch_ab.py +0 -0
  142. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/issue1702_arena_pack_gate.py +0 -0
  143. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/issue331_qlora_scope.py +0 -0
  144. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/issue361_nf4_throughput.py +0 -0
  145. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/issue395_second_stack_vram.py +0 -0
  146. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/issue725_lorafa_operating_point.py +0 -0
  147. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/issue901_stream_step_probe.py +0 -0
  148. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/issue974_cache_populate.py +0 -0
  149. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/issue974_cold_ranges.py +0 -0
  150. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/issue974_evict.py +0 -0
  151. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/issue974_read_paths.py +0 -0
  152. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/issue974_unbuffered.py +0 -0
  153. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/issue974_warm_stages.py +0 -0
  154. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/l2l_activations.py +0 -0
  155. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/l2l_box.py +0 -0
  156. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/l2l_probe.py +0 -0
  157. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/l2l_rule.py +0 -0
  158. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/l2l_schedule.py +0 -0
  159. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/l2l_session.sh +0 -0
  160. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/layer0_wait.py +0 -0
  161. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/mechanism.py +0 -0
  162. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/mechanism_cost.py +0 -0
  163. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/mlx_sft_smoke.py +0 -0
  164. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/mmap_limit_repro.py +0 -0
  165. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/moe_coverage_report.py +0 -0
  166. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/moe_expert_coverage.py +0 -0
  167. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/quest_mixed_route.py +0 -0
  168. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/quest_parity_evidence.py +0 -0
  169. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/source_provenance.py +0 -0
  170. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/stream_probe.py +0 -0
  171. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/synth_checkpoint.py +0 -0
  172. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/two_drive_aspm_probe.py +0 -0
  173. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/two_drive_depth_probe.py +0 -0
  174. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/two_drive_host_probe.py +0 -0
  175. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/two_drive_read.py +0 -0
  176. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/two_drive_stripe_gate.py +0 -0
  177. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/two_drive_sustained.py +0 -0
  178. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/two_drive_throttle.py +0 -0
  179. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/two_drive_throttle_read.py +0 -0
  180. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/two_drive_throttle_rule.py +0 -0
  181. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/harness/variant2_gate.py +0 -0
  182. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/probe-moe-expert-coverage.md +0 -0
  183. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/probe-rtx5070-batch-control.md +0 -0
  184. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/probe-rtx5070-drive-throttle.md +0 -0
  185. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/probe-rtx5070-l2l-step0.md +0 -0
  186. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/probe-rtx5070-two-drive-read.md +0 -0
  187. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/probe-rtx5070-two-drive-sustained.md +0 -0
  188. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/probe-rtx5070-what-bounds-streaming.md +0 -0
  189. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/probe-v0.73.0-what-bounds-streaming.md +0 -0
  190. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/quest-674-postfit-development-results.md +0 -0
  191. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/cuda-graph-decode/cg-gate-full-a1.json +0 -0
  192. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/cuda-graph-decode/cg-gate-full-a2.json +0 -0
  193. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/cuda-graph-decode/cg-gate-full-a3.json +0 -0
  194. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/cuda-graph-decode/cg-gate-full-b1.json +0 -0
  195. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/cuda-graph-decode/cg-gate-full-b2.json +0 -0
  196. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/cuda-graph-decode/cg-gate-full-b3.json +0 -0
  197. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/cuda-graph-decode/cg-gate-full-comparison.json +0 -0
  198. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/cuda-graph-decode/cg-gate-full-verdict.json +0 -0
  199. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/cuda-graph-decode/cg-gate-lora-a1.json +0 -0
  200. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/cuda-graph-decode/cg-gate-lora-a2.json +0 -0
  201. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/cuda-graph-decode/cg-gate-lora-a3.json +0 -0
  202. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/cuda-graph-decode/cg-gate-lora-b1.json +0 -0
  203. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/cuda-graph-decode/cg-gate-lora-b2.json +0 -0
  204. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/cuda-graph-decode/cg-gate-lora-b3.json +0 -0
  205. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/cuda-graph-decode/cg-gate-lora-comparison.json +0 -0
  206. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/cuda-graph-decode/cg-gate-lora-verdict.json +0 -0
  207. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/cuda-graph-decode/cg-gate-pinned-a.json +0 -0
  208. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/cuda-graph-decode/cg-gate-pinned-b.json +0 -0
  209. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/cuda-graph-decode/cg-trees.txt +0 -0
  210. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/cuda-graph-decode/cli-verdict.json +0 -0
  211. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/cuda-graph-decode/cli-wall-seconds.json +0 -0
  212. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/cuda-graph-decode/quiet-box.txt +0 -0
  213. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/cuda-graph-decode/rerecord-probe-1024.json +0 -0
  214. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/cuda-graph-decode/rerecord-probe-256.json +0 -0
  215. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-1227-ab-burn-in/part1.json +0 -0
  216. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-1227-ab-burn-in/part2.json +0 -0
  217. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-1227-ab-burn-in/part3.json +0 -0
  218. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-1227-ab-burn-in/part4.json +0 -0
  219. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-1227-ab-burn-in/sweep.log +0 -0
  220. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-1265-ab-nig/h0-part1.json +0 -0
  221. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-1265-ab-nig/h0-part2.json +0 -0
  222. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-1265-ab-nig/h0-part3.json +0 -0
  223. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-1265-ab-nig/h0-part4.json +0 -0
  224. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-1265-ab-nig/h0-part5.json +0 -0
  225. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-1265-ab-nig/h0-part6.json +0 -0
  226. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-1265-ab-nig/h0-part7.json +0 -0
  227. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-1265-ab-nig/h0-part8.json +0 -0
  228. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-1265-ab-nig/h1-part1.json +0 -0
  229. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-1265-ab-nig/h1-part2.json +0 -0
  230. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-1265-ab-nig/h1-part3.json +0 -0
  231. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-1265-ab-nig/report.txt +0 -0
  232. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-1265-ab-nig/sweep.log +0 -0
  233. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-1418-ab-cs-accept/h0-part1.json +0 -0
  234. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-1418-ab-cs-accept/h0-part2.json +0 -0
  235. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-1418-ab-cs-accept/h0-part3.json +0 -0
  236. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-1418-ab-cs-accept/h0-part4.json +0 -0
  237. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-1418-ab-cs-accept/h0-part5.json +0 -0
  238. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-1418-ab-cs-accept/h0-part6.json +0 -0
  239. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-1418-ab-cs-accept/h0-part7.json +0 -0
  240. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-1418-ab-cs-accept/h0-part8.json +0 -0
  241. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-1418-ab-cs-accept/h1-part1.json +0 -0
  242. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-1418-ab-cs-accept/h1-part2.json +0 -0
  243. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-1418-ab-cs-accept/h1-part3.json +0 -0
  244. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-1418-ab-cs-accept/report.txt +0 -0
  245. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-1418-ab-cs-accept/sweep.log +0 -0
  246. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-836/b1.json +0 -0
  247. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-836/b2.json +0 -0
  248. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-836/b3.json +0 -0
  249. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-836/bench.yaml +0 -0
  250. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-836/bench_b.yaml +0 -0
  251. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-836/bench_c.yaml +0 -0
  252. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-836/bench_dpo.yaml +0 -0
  253. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-836/bench_fixture.jsonl +0 -0
  254. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-836/bench_fixture_long.jsonl +0 -0
  255. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-836/bench_frozen.yaml +0 -0
  256. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-836/c1.json +0 -0
  257. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-836/c2.json +0 -0
  258. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-836/c3.json +0 -0
  259. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-836/d1.json +0 -0
  260. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-836/d2.json +0 -0
  261. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-836/d3.json +0 -0
  262. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-836/shapeA_run1.json +0 -0
  263. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-836/shapeA_run10.json +0 -0
  264. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-836/shapeA_run2.json +0 -0
  265. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-836/shapeA_run3.json +0 -0
  266. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-836/shapeA_run4.json +0 -0
  267. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-836/shapeA_run5.json +0 -0
  268. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-836/shapeA_run6.json +0 -0
  269. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-836/shapeA_run7.json +0 -0
  270. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-836/shapeA_run8.json +0 -0
  271. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-836/shapeA_run9.json +0 -0
  272. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-836/shapeA_run_e1.json +0 -0
  273. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-836/shapeA_run_e2.json +0 -0
  274. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-836/shapeA_run_e3.json +0 -0
  275. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-836/shapeA_run_e4.json +0 -0
  276. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-836/shapeA_run_e5.json +0 -0
  277. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/gate-836/shapeA_run_e6.json +0 -0
  278. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/issue361-post-repair-8b-nf4.json +0 -0
  279. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/async_cold_synth70b_nf4.json +0 -0
  280. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/async_cold_synth70b_nf4_ra1.json +0 -0
  281. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/async_cold_synth70b_nf4_ra2_repeat.json +0 -0
  282. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/async_cold_synth70b_nf4_ra4.json +0 -0
  283. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/async_warm_mistral7b_nf4.json +0 -0
  284. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/async_warm_mistral7b_nf4_reverse.json +0 -0
  285. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch2_build_striped.json +0 -0
  286. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch2_build_striped.log +0 -0
  287. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch2_r0_single_b1.json +0 -0
  288. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch2_r0_single_b1.log +0 -0
  289. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch2_r0_single_b2.json +0 -0
  290. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch2_r0_single_b2.log +0 -0
  291. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch2_r0_single_b3.json +0 -0
  292. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch2_r0_single_b3.log +0 -0
  293. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch2_r0_single_b3_void.json +0 -0
  294. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch2_r0_single_b3_void.log +0 -0
  295. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch2_r0_striped_b1.json +0 -0
  296. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch2_r0_striped_b1.log +0 -0
  297. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch2_r0_striped_b2.json +0 -0
  298. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch2_r0_striped_b2.log +0 -0
  299. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch2_r0_striped_b3.json +0 -0
  300. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch2_r0_striped_b3.log +0 -0
  301. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch2_r1_single_b1.json +0 -0
  302. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch2_r1_single_b1.log +0 -0
  303. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch2_r1_single_b2.json +0 -0
  304. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch2_r1_single_b2.log +0 -0
  305. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch2_r1_single_b3.json +0 -0
  306. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch2_r1_single_b3.log +0 -0
  307. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch2_r1_striped_b1.json +0 -0
  308. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch2_r1_striped_b1.log +0 -0
  309. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch2_r1_striped_b2.json +0 -0
  310. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch2_r1_striped_b2.log +0 -0
  311. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch2_r1_striped_b3.json +0 -0
  312. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch2_r1_striped_b3.log +0 -0
  313. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch_box_state.log +0 -0
  314. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch_build_striped.json +0 -0
  315. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch_build_striped.log +0 -0
  316. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch_driver.json +0 -0
  317. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch_r0_single_b1_void.json +0 -0
  318. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch_r0_single_b1_void.log +0 -0
  319. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch_r0_single_b1_void2.json +0 -0
  320. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/batch-control/batch_r0_single_b1_void2.log +0 -0
  321. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/control_sync_cold_synth70b_nf4.json +0 -0
  322. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/control_sync_cold_synth70b_nf4_last.json +0 -0
  323. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/control_sync_warm_mistral7b_nf4.json +0 -0
  324. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/control_sync_warm_mistral7b_nf4_reverse.json +0 -0
  325. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/disk_cold_synth70b_nf4_steps.json +0 -0
  326. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/disk_synth70b_nf4_armsBD_seq128.json +0 -0
  327. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/disk_synth70b_nf4_armsBD_seq256.json +0 -0
  328. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/disk_synth70b_nf4_armsBD_seq512.json +0 -0
  329. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/disk_warm_mistral7b_nf4.json +0 -0
  330. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue1702/series.jsonl +0 -0
  331. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue1702/strict.json +0 -0
  332. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue1702/verdict.json +0 -0
  333. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue901_14b_seq384_pageable_after_fixA.json +0 -0
  334. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue901_14b_seq384_pinned_arenas.json +0 -0
  335. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue901_14b_seq384_pinned_arenas_final.json +0 -0
  336. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue901_e2e_soup_train.log +0 -0
  337. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/cache_populate_run1.json +0 -0
  338. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/cold_ranges_runA.json +0 -0
  339. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/cold_ranges_runB.json +0 -0
  340. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_ablate_cold70b_seq256.json +0 -0
  341. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_ablate_cold70b_seq512.json +0 -0
  342. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_cold2_orderA_slot1_newasync.json +0 -0
  343. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_cold2_orderA_slot2_oldasync.json +0 -0
  344. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_cold2_orderA_slot3_control.json +0 -0
  345. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_cold2_orderB_slot1_control.json +0 -0
  346. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_cold2_orderB_slot2_oldasync.json +0 -0
  347. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_cold2_orderB_slot3_newasync.json +0 -0
  348. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_evictB_slot1_async.json +0 -0
  349. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_evictB_slot2_async.json +0 -0
  350. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_evictB_slot3_control.json +0 -0
  351. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_evictB_slot4_async.json +0 -0
  352. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_fix_cold_orderA_slot1_newasync.json +0 -0
  353. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_fix_cold_orderA_slot2_oldasync.json +0 -0
  354. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_fix_cold_orderA_slot3_control.json +0 -0
  355. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_fix_cold_orderB_slot1_control.json +0 -0
  356. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_fix_cold_orderB_slot2_oldasync.json +0 -0
  357. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_fix_cold_orderB_slot3_newasync.json +0 -0
  358. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_fix_orderA_slot1_async.json +0 -0
  359. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_fix_orderA_slot2_control.json +0 -0
  360. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_fix_orderB_slot1_control.json +0 -0
  361. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_fix_orderB_slot2_async.json +0 -0
  362. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_fix_orderC_slot1_ram.json +0 -0
  363. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_order1_control.json +0 -0
  364. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_order1_ram.json +0 -0
  365. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_quiet_orderA_slot1_async.json +0 -0
  366. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_quiet_orderA_slot2_control.json +0 -0
  367. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_quiet_orderB_slot1_control.json +0 -0
  368. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_quiet_orderB_slot2_async.json +0 -0
  369. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_quiet_orderC_slot1_ram.json +0 -0
  370. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_recheck_orderA_slot1_newasync.json +0 -0
  371. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_recheck_orderA_slot2_oldasync.json +0 -0
  372. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_recheck_orderA_slot3_control.json +0 -0
  373. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_recheck_orderA_slot4_ram.json +0 -0
  374. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_recheck_orderB_slot1_ram.json +0 -0
  375. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_recheck_orderB_slot2_control.json +0 -0
  376. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_recheck_orderB_slot3_oldasync.json +0 -0
  377. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_recheck_orderB_slot4_newasync.json +0 -0
  378. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/i974_validate_async.json +0 -0
  379. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/unbuffered_runA.json +0 -0
  380. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/issue974/unbuffered_runB.json +0 -0
  381. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/l2l/correctness_f1.json +0 -0
  382. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/l2l/correctness_f1_det.json +0 -0
  383. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/l2l/correctness_f2.json +0 -0
  384. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/l2l/correctness_f2_det.json +0 -0
  385. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/l2l/logs/correctness_f1.log +0 -0
  386. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/l2l/logs/correctness_f1_det.log +0 -0
  387. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/l2l/logs/correctness_f2.log +0 -0
  388. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/l2l/logs/correctness_f2_det.log +0 -0
  389. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/l2l/logs/session.txt +0 -0
  390. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/l2l/logs/soup_cli_file.txt +0 -0
  391. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/l2l/logs/spill.log +0 -0
  392. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/l2l/logs/timing.log +0 -0
  393. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/l2l/spill.json +0 -0
  394. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/l2l/timing.json +0 -0
  395. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/l2l/verdict.md +0 -0
  396. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/layer0_wait_cold_synth70b_nf4.json +0 -0
  397. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/moe/granite_bf16_cuda.json +0 -0
  398. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/moe/granite_bf16_cuda_run2.json +0 -0
  399. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/moe/olmoe_bf16_cpu_control.json +0 -0
  400. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/moe/olmoe_nf4_cuda.json +0 -0
  401. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/ram_mistral7b_nf4.json +0 -0
  402. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/ram_warm_mistral7b_nf4_reverse.json +0 -0
  403. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/ram_warm_mistral7b_nf4_today.json +0 -0
  404. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/d1_host_spin.json +0 -0
  405. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/d2_aspm.json +0 -0
  406. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate2_r0_single.json +0 -0
  407. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate2_r0_single.log +0 -0
  408. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate2_r0_striped.json +0 -0
  409. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate2_r0_striped.log +0 -0
  410. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate2_r1_single.json +0 -0
  411. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate2_r1_single.log +0 -0
  412. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate2_r1_striped.json +0 -0
  413. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate2_r1_striped.log +0 -0
  414. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate3_r0_single_void.json +0 -0
  415. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate3_r0_single_void.log +0 -0
  416. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate4_r0_single.json +0 -0
  417. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate4_r0_single.log +0 -0
  418. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate4_r0_striped.json +0 -0
  419. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate4_r0_striped.log +0 -0
  420. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate4_r1_single.json +0 -0
  421. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate4_r1_single.log +0 -0
  422. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate4_r1_striped.json +0 -0
  423. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate4_r1_striped.log +0 -0
  424. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate4_r2_single.json +0 -0
  425. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate4_r2_single.log +0 -0
  426. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate4_r2_striped.json +0 -0
  427. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate4_r2_striped.log +0 -0
  428. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate_box_state.log +0 -0
  429. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate_build_striped.json +0 -0
  430. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate_build_striped.log +0 -0
  431. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate_cache_compare.json +0 -0
  432. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate_driver.json +0 -0
  433. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate_r0_single.json +0 -0
  434. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate_r0_single.log +0 -0
  435. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate_r0_striped.json +0 -0
  436. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate_r0_striped.log +0 -0
  437. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate_r1_single_void.json +0 -0
  438. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate_r1_single_void.log +0 -0
  439. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate_r1_striped.json +0 -0
  440. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/gate_r1_striped.log +0 -0
  441. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/r1_k4.json +0 -0
  442. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/r1_k4_run2.json +0 -0
  443. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/r1_k4_run3_aspm_off.json +0 -0
  444. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/r3p_depth.json +0 -0
  445. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain2_build_striped.json +0 -0
  446. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain2_build_striped.log +0 -0
  447. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain2_cache_compare.json +0 -0
  448. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain2_cache_compare.log +0 -0
  449. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain2_driver_stdout.log +0 -0
  450. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain2_r0_single.json +0 -0
  451. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain2_r0_single.log +0 -0
  452. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain2_r0_striped.json +0 -0
  453. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain2_r0_striped.log +0 -0
  454. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain2_r1_single.json +0 -0
  455. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain2_r1_single.log +0 -0
  456. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain2_r1_striped.json +0 -0
  457. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain2_r1_striped.log +0 -0
  458. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain2_r2_single.json +0 -0
  459. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain2_r2_single.log +0 -0
  460. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain2_r2_striped_void.json +0 -0
  461. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain2_r2_striped_void.log +0 -0
  462. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain2_r2_striped_void2.json +0 -0
  463. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain2_r2_striped_void2.log +0 -0
  464. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain2_summarize.log +0 -0
  465. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain_box_state.log +0 -0
  466. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain_build_striped.json +0 -0
  467. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain_build_striped.log +0 -0
  468. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain_cache_compare.json +0 -0
  469. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain_cache_compare.log +0 -0
  470. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain_driver.json +0 -0
  471. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain_driver_stdout.log +0 -0
  472. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain_r0_single.json +0 -0
  473. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain_r0_single.log +0 -0
  474. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain_r0_striped.json +0 -0
  475. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain_r0_striped.log +0 -0
  476. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain_r1_single_void.json +0 -0
  477. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain_r1_single_void.log +0 -0
  478. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain_r1_striped.json +0 -0
  479. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain_r1_striped.log +0 -0
  480. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/sustain_summarize.log +0 -0
  481. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/throttle_box_state.log +0 -0
  482. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/throttle_driver.json +0 -0
  483. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/throttle_driver_stdout.log +0 -0
  484. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/throttle_r0_c_void.json +0 -0
  485. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/throttle_r0_c_void.log +0 -0
  486. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/throttle_r0_c_void2.json +0 -0
  487. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/throttle_r0_c_void2.log +0 -0
  488. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/results/probe-rtx5070/two-drive/throttle_summarize.log +0 -0
  489. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/run-m1-8gb-mlx-sft.md +0 -0
  490. {soup_cli-0.76.0 → soup_cli-0.76.1}/benchmarks/run-t4-colab-free-tier.md +0 -0
  491. {soup_cli-0.76.0 → soup_cli-0.76.1}/docker-compose.yml +0 -0
  492. {soup_cli-0.76.0 → soup_cli-0.76.1}/docs/README.md +0 -0
  493. {soup_cli-0.76.0 → soup_cli-0.76.1}/docs/adapters-and-governance.md +0 -0
  494. {soup_cli-0.76.0 → soup_cli-0.76.1}/docs/assets/layer-streaming.gif +0 -0
  495. {soup_cli-0.76.0 → soup_cli-0.76.1}/docs/assets/web-ui-new-training.png +0 -0
  496. {soup_cli-0.76.0 → soup_cli-0.76.1}/docs/autodistill.md +0 -0
  497. {soup_cli-0.76.0 → soup_cli-0.76.1}/docs/commands.md +0 -0
  498. {soup_cli-0.76.0 → soup_cli-0.76.1}/docs/compliance.md +0 -0
  499. {soup_cli-0.76.0 → soup_cli-0.76.1}/docs/data.md +0 -0
  500. {soup_cli-0.76.0 → soup_cli-0.76.1}/docs/evaluation.md +0 -0
  501. {soup_cli-0.76.0 → soup_cli-0.76.1}/docs/issue-difficulty.md +0 -0
  502. {soup_cli-0.76.0 → soup_cli-0.76.1}/docs/models.md +0 -0
  503. {soup_cli-0.76.0 → soup_cli-0.76.1}/docs/peft-and-efficiency.md +0 -0
  504. {soup_cli-0.76.0 → soup_cli-0.76.1}/docs/training.md +0 -0
  505. {soup_cli-0.76.0 → soup_cli-0.76.1}/examples/README.md +0 -0
  506. {soup_cli-0.76.0 → soup_cli-0.76.1}/examples/configs/dpo_chat.yaml +0 -0
  507. {soup_cli-0.76.0 → soup_cli-0.76.1}/examples/configs/dpo_example.yaml +0 -0
  508. {soup_cli-0.76.0 → soup_cli-0.76.1}/examples/configs/grpo_reasoning.yaml +0 -0
  509. {soup_cli-0.76.0 → soup_cli-0.76.1}/examples/configs/rlhf_step1_sft.yaml +0 -0
  510. {soup_cli-0.76.0 → soup_cli-0.76.1}/examples/configs/rlhf_step2_reward.yaml +0 -0
  511. {soup_cli-0.76.0 → soup_cli-0.76.1}/examples/configs/rlhf_step3_ppo.yaml +0 -0
  512. {soup_cli-0.76.0 → soup_cli-0.76.1}/examples/configs/sft_basic.yaml +0 -0
  513. {soup_cli-0.76.0 → soup_cli-0.76.1}/examples/configs/vision_llama.yaml +0 -0
  514. {soup_cli-0.76.0 → soup_cli-0.76.1}/examples/data/README.md +0 -0
  515. {soup_cli-0.76.0 → soup_cli-0.76.1}/examples/data/alpaca_tiny.jsonl +0 -0
  516. {soup_cli-0.76.0 → soup_cli-0.76.1}/examples/data/chat_preferences.jsonl +0 -0
  517. {soup_cli-0.76.0 → soup_cli-0.76.1}/examples/data/dpo_sample.jsonl +0 -0
  518. {soup_cli-0.76.0 → soup_cli-0.76.1}/examples/data/reasoning_math.jsonl +0 -0
  519. {soup_cli-0.76.0 → soup_cli-0.76.1}/examples/reward_hacking/rewards.py +0 -0
  520. {soup_cli-0.76.0 → soup_cli-0.76.1}/examples/synthetic_workflow.md +0 -0
  521. {soup_cli-0.76.0 → soup_cli-0.76.1}/examples/synthetic_workflow.yaml +0 -0
  522. {soup_cli-0.76.0 → soup_cli-0.76.1}/notebooks/proof-4gb.ipynb +0 -0
  523. {soup_cli-0.76.0 → soup_cli-0.76.1}/scripts/__init__.py +0 -0
  524. {soup_cli-0.76.0 → soup_cli-0.76.1}/scripts/assemble_changelog.py +0 -0
  525. {soup_cli-0.76.0 → soup_cli-0.76.1}/scripts/autodistill_b1_hardware_smoke.py +0 -0
  526. {soup_cli-0.76.0 → soup_cli-0.76.1}/scripts/check_recipe_attach.py +0 -0
  527. {soup_cli-0.76.0 → soup_cli-0.76.1}/scripts/check_recipe_repo_ids.py +0 -0
  528. {soup_cli-0.76.0 → soup_cli-0.76.1}/scripts/generate_recipe_snapshot.py +0 -0
  529. {soup_cli-0.76.0 → soup_cli-0.76.1}/scripts/issue_triage_labels.py +0 -0
  530. {soup_cli-0.76.0 → soup_cli-0.76.1}/scripts/merge_freshness.py +0 -0
  531. {soup_cli-0.76.0 → soup_cli-0.76.1}/scripts/record_recipe_base_architectures.py +0 -0
  532. {soup_cli-0.76.0 → soup_cli-0.76.1}/scripts/sync_recipe_count.py +0 -0
  533. {soup_cli-0.76.0 → soup_cli-0.76.1}/soup.png +0 -0
  534. {soup_cli-0.76.0 → soup_cli-0.76.1}/soup_logo_svg.svg +0 -0
  535. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/__main__.py +0 -0
  536. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/autodistill/__init__.py +0 -0
  537. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/autodistill/capture.py +0 -0
  538. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/autodistill/contract.py +0 -0
  539. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/autodistill/fingerprints.py +0 -0
  540. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/autodistill/mlx_worker.py +0 -0
  541. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/autodistill/publisher.py +0 -0
  542. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/autopilot/__init__.py +0 -0
  543. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/autopilot/analyzer.py +0 -0
  544. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/autopilot/decisions.py +0 -0
  545. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/autopilot/generate_config.py +0 -0
  546. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/bench/__init__.py +0 -0
  547. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/bench/collector.py +0 -0
  548. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/bench/train_report.py +0 -0
  549. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/bench/train_run.py +0 -0
  550. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/cans/__init__.py +0 -0
  551. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/cans/pack.py +0 -0
  552. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/cans/publish.py +0 -0
  553. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/cans/run.py +0 -0
  554. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/cans/schema.py +0 -0
  555. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/cans/verify.py +0 -0
  556. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/cloud/__init__.py +0 -0
  557. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/cloud/_common.py +0 -0
  558. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/cloud/lambda_labs.py +0 -0
  559. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/cloud/modal.py +0 -0
  560. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/__init__.py +0 -0
  561. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/_eval_v0550.py +0 -0
  562. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/_eval_v0610.py +0 -0
  563. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/_eval_v0650.py +0 -0
  564. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/_eval_v07110.py +0 -0
  565. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/_webhook_cli.py +0 -0
  566. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/ab.py +0 -0
  567. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/active_sample.py +0 -0
  568. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/advise.py +0 -0
  569. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/agent.py +0 -0
  570. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/airgap.py +0 -0
  571. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/apple_adapter.py +0 -0
  572. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/attest.py +0 -0
  573. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/audit_log.py +0 -0
  574. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/autopilot.py +0 -0
  575. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/bench.py +0 -0
  576. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/bom.py +0 -0
  577. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/build.py +0 -0
  578. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/can.py +0 -0
  579. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/card.py +0 -0
  580. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/chat.py +0 -0
  581. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/ci.py +0 -0
  582. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/compile_cmd.py +0 -0
  583. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/compile_tools.py +0 -0
  584. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/completions.py +0 -0
  585. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/cost.py +0 -0
  586. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/data.py +0 -0
  587. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/data_canary.py +0 -0
  588. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/data_clean.py +0 -0
  589. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/data_doctor.py +0 -0
  590. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/data_forge.py +0 -0
  591. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/data_mix.py +0 -0
  592. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/data_score.py +0 -0
  593. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/data_topics.py +0 -0
  594. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/delinearize_llama4.py +0 -0
  595. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/diagnose.py +0 -0
  596. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/diff.py +0 -0
  597. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/distill_prompt.py +0 -0
  598. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/draft.py +0 -0
  599. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/drift_alarm.py +0 -0
  600. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/edit.py +0 -0
  601. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/env.py +0 -0
  602. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/expect.py +0 -0
  603. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/fetch.py +0 -0
  604. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/generate.py +0 -0
  605. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/history.py +0 -0
  606. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/infer.py +0 -0
  607. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/ingest.py +0 -0
  608. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/init.py +0 -0
  609. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/iterative_dpo.py +0 -0
  610. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/license_advisor.py +0 -0
  611. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/llama.py +0 -0
  612. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/local_rl.py +0 -0
  613. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/lock.py +0 -0
  614. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/loop.py +0 -0
  615. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/mcp.py +0 -0
  616. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/merge.py +0 -0
  617. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/merge_sharded_fsdp_weights.py +0 -0
  618. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/migrate.py +0 -0
  619. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/monitor.py +0 -0
  620. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/plugins.py +0 -0
  621. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/probe.py +0 -0
  622. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/profile.py +0 -0
  623. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/prune_prompt.py +0 -0
  624. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/quantize.py +0 -0
  625. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/quickstart.py +0 -0
  626. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/ra_dit.py +0 -0
  627. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/registry.py +0 -0
  628. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/reward.py +0 -0
  629. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/rewind.py +0 -0
  630. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/runs.py +0 -0
  631. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/serve.py +0 -0
  632. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/shrink.py +0 -0
  633. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/spectrum.py +0 -0
  634. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/steer.py +0 -0
  635. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/sweep.py +0 -0
  636. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/tokenizer.py +0 -0
  637. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/tui.py +0 -0
  638. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/tunability.py +0 -0
  639. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/ui.py +0 -0
  640. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/commands/why.py +0 -0
  641. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/config/__init__.py +0 -0
  642. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/config/backend_support.py +0 -0
  643. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/config/deprecation.py +0 -0
  644. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/config/schema.py +0 -0
  645. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/config/staged_fields.py +0 -0
  646. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/config/unknown_keys.py +0 -0
  647. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/__init__.py +0 -0
  648. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/_fixtures/alpaca_tiny.jsonl +0 -0
  649. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/_fixtures/behavior/elephant.jsonl +0 -0
  650. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/_fixtures/behavior/harmbench.jsonl +0 -0
  651. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/_fixtures/behavior/jailbreakbench.jsonl +0 -0
  652. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/_fixtures/behavior/syceval.jsonl +0 -0
  653. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/_fixtures/behavior/xstest.jsonl +0 -0
  654. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/_fixtures/chat_preferences.jsonl +0 -0
  655. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/_fixtures/dpo_sample.jsonl +0 -0
  656. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/_fixtures/gate/format_json.jsonl +0 -0
  657. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/_fixtures/gate/over_refusal.jsonl +0 -0
  658. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/_fixtures/gate/safety.jsonl +0 -0
  659. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/_fixtures/gate/tool_call.jsonl +0 -0
  660. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/_fixtures/reasoning_math.jsonl +0 -0
  661. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/_fixtures/unlearning/muse_demo.jsonl +0 -0
  662. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/_fixtures/unlearning/tofu_demo.jsonl +0 -0
  663. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/_fixtures/unlearning/wmdp_demo.jsonl +0 -0
  664. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/augment.py +0 -0
  665. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/chat_templates.py +0 -0
  666. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/collators.py +0 -0
  667. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/loss_mask.py +0 -0
  668. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/providers/__init__.py +0 -0
  669. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/providers/_utils.py +0 -0
  670. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/providers/anthropic.py +0 -0
  671. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/providers/ollama.py +0 -0
  672. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/providers/vllm.py +0 -0
  673. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/sft_format.py +0 -0
  674. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/templates/__init__.py +0 -0
  675. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/templates/code.py +0 -0
  676. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/templates/conversation.py +0 -0
  677. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/templates/preference.py +0 -0
  678. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/templates/qa.py +0 -0
  679. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/templates/reasoning.py +0 -0
  680. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/templates/tool_calling.py +0 -0
  681. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/templates/verifiable.py +0 -0
  682. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/traces/__init__.py +0 -0
  683. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/traces/pair_builder.py +0 -0
  684. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/traces/parsers.py +0 -0
  685. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/traces/quality.py +0 -0
  686. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/data/validator.py +0 -0
  687. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/envs/__init__.py +0 -0
  688. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/envs/_common.py +0 -0
  689. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/envs/calculator.py +0 -0
  690. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/envs/guess_number.py +0 -0
  691. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/envs/retrieval_qa.py +0 -0
  692. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/eval/__init__.py +0 -0
  693. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/eval/aider_polyglot.py +0 -0
  694. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/eval/arena.py +0 -0
  695. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/eval/benchmarks_v0_43.py +0 -0
  696. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/eval/calibrate.py +0 -0
  697. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/eval/checkpoint_intelligence.py +0 -0
  698. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/eval/custom.py +0 -0
  699. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/eval/forgetting.py +0 -0
  700. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/eval/gate_suites.py +0 -0
  701. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/eval/human.py +0 -0
  702. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/eval/leaderboard.py +0 -0
  703. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/eval/quant_check.py +0 -0
  704. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/eval/results.py +0 -0
  705. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/experiment/__init__.py +0 -0
  706. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/experiment/tracker.py +0 -0
  707. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/mcp_server/__init__.py +0 -0
  708. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/mcp_server/execution.py +0 -0
  709. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/mcp_server/registry.py +0 -0
  710. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/mcp_server/server.py +0 -0
  711. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/migrate/__init__.py +0 -0
  712. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/migrate/common.py +0 -0
  713. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/migrate/unsloth.py +0 -0
  714. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/monitoring/__init__.py +0 -0
  715. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/monitoring/callback.py +0 -0
  716. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/monitoring/curriculum_callback.py +0 -0
  717. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/monitoring/display.py +0 -0
  718. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/monitoring/grpo_stability_callback.py +0 -0
  719. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/monitoring/hf_push.py +0 -0
  720. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/monitoring/plugin_callback.py +0 -0
  721. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/monitoring/rewind_log.py +0 -0
  722. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/monitoring/trace_logger.py +0 -0
  723. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/plugins/__init__.py +0 -0
  724. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/py.typed +0 -0
  725. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/recipes/__init__.py +0 -0
  726. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/recipes/catalog.py +0 -0
  727. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/registry/__init__.py +0 -0
  728. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/registry/attach.py +0 -0
  729. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/registry/diff.py +0 -0
  730. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/registry/hashing.py +0 -0
  731. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/registry/store.py +0 -0
  732. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/templates/__init__.py +0 -0
  733. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/templates/audio.yaml +0 -0
  734. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/templates/bco.yaml +0 -0
  735. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/templates/chat.yaml +0 -0
  736. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/templates/code.yaml +0 -0
  737. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/templates/embedding.yaml +0 -0
  738. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/templates/eu-ai-act.yaml +0 -0
  739. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/templates/fetch_examples/llama-3.1-8b-lora.yaml +0 -0
  740. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/templates/fetch_examples/qwen2.5-7b-dpo.yaml +0 -0
  741. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/templates/fetch_examples/zero3-cpu-offload.json +0 -0
  742. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/templates/hipaa.yaml +0 -0
  743. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/templates/ipo.yaml +0 -0
  744. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/templates/kto.yaml +0 -0
  745. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/templates/longcontext.yaml +0 -0
  746. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/templates/manifest.json +0 -0
  747. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/templates/medical.yaml +0 -0
  748. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/templates/moe.yaml +0 -0
  749. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/templates/orpo.yaml +0 -0
  750. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/templates/pretrain.yaml +0 -0
  751. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/templates/reasoning.yaml +0 -0
  752. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/templates/rlhf.yaml +0 -0
  753. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/templates/simpo.yaml +0 -0
  754. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/templates/soc2.yaml +0 -0
  755. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/templates/sr-11-7.yaml +0 -0
  756. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/templates/tool-calling.yaml +0 -0
  757. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/templates/vision.yaml +0 -0
  758. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/__init__.py +0 -0
  759. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/_trl_compat.py +0 -0
  760. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/asr.py +0 -0
  761. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/bco.py +0 -0
  762. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/bitnet.py +0 -0
  763. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/classifier.py +0 -0
  764. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/dispatch.py +0 -0
  765. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/distill.py +0 -0
  766. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/dpo.py +0 -0
  767. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/embedding.py +0 -0
  768. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/grpo.py +0 -0
  769. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/ipo.py +0 -0
  770. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/kto.py +0 -0
  771. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/loss_summary.py +0 -0
  772. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/mlx_dpo.py +0 -0
  773. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/mlx_grpo.py +0 -0
  774. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/mlx_masking.py +0 -0
  775. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/mlx_optim.py +0 -0
  776. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/mlx_routing.py +0 -0
  777. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/mlx_sft.py +0 -0
  778. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/mole_routing.py +0 -0
  779. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/online_dpo_ranking.py +0 -0
  780. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/orpo.py +0 -0
  781. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/ppo.py +0 -0
  782. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/preference.py +0 -0
  783. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/pretrain.py +0 -0
  784. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/prm.py +0 -0
  785. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/raft.py +0 -0
  786. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/reward_model.py +0 -0
  787. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/rewards.py +0 -0
  788. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/rewind_hf.py +0 -0
  789. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/rewind_mlx.py +0 -0
  790. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/sft.py +0 -0
  791. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/simpo.py +0 -0
  792. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/stream_setup.py +0 -0
  793. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/tts.py +0 -0
  794. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/trainer/unlearn.py +0 -0
  795. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/tui_app.py +0 -0
  796. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/ui/__init__.py +0 -0
  797. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/ui/app.py +0 -0
  798. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/ui/static/app.js +0 -0
  799. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/ui/static/index.html +0 -0
  800. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/ui/static/logo.png +0 -0
  801. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/ui/static/logo.svg +0 -0
  802. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/ui/static/safe_html.js +0 -0
  803. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/ui/static/style.css +0 -0
  804. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/__init__.py +0 -0
  805. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/_eval_text.py +0 -0
  806. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/ab_test.py +0 -0
  807. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/activation_offload.py +0 -0
  808. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/active_sampler.py +0 -0
  809. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/adapter_arithmetic.py +0 -0
  810. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/adapter_audit.py +0 -0
  811. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/adapter_bisect.py +0 -0
  812. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/adapter_branch.py +0 -0
  813. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/adapter_check.py +0 -0
  814. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/adapter_diff.py +0 -0
  815. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/adapter_fuse.py +0 -0
  816. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/adapter_merge.py +0 -0
  817. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/adapter_pr.py +0 -0
  818. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/adapter_scan.py +0 -0
  819. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/adapter_sign.py +0 -0
  820. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/advanced_precision.py +0 -0
  821. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/advise.py +0 -0
  822. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/advise_history.py +0 -0
  823. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/agent_rollout.py +0 -0
  824. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/agent_sandbox.py +0 -0
  825. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/airgap_bundle.py +0 -0
  826. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/annex_xi.py +0 -0
  827. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/anthropic_messages.py +0 -0
  828. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/apple_adapter.py +0 -0
  829. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/asr_metrics.py +0 -0
  830. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/async_disk_source.py +0 -0
  831. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/attach_preflight.py +0 -0
  832. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/attest.py +0 -0
  833. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/audit_log.py +0 -0
  834. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/backend_detect.py +0 -0
  835. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/batch_probe.py +0 -0
  836. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/behavior_battery.py +0 -0
  837. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/best_of_n.py +0 -0
  838. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/best_of_n_artifact.py +0 -0
  839. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/best_of_n_checkpoint.py +0 -0
  840. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/best_of_n_stream.py +0 -0
  841. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/bitnet.py +0 -0
  842. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/blame.py +0 -0
  843. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/block_expansion.py +0 -0
  844. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/bom.py +0 -0
  845. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/brain_rot.py +0 -0
  846. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/brain_rot_lang.py +0 -0
  847. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/canary.py +0 -0
  848. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/canary_discovery.py +0 -0
  849. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/canary_router.py +0 -0
  850. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/capability_suite.py +0 -0
  851. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/checkpoint_trigger.py +0 -0
  852. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/ci_workflow.py +0 -0
  853. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/citation_faithful.py +0 -0
  854. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/classifier.py +0 -0
  855. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/cmaes_merge.py +0 -0
  856. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/compile_tools.py +0 -0
  857. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/completions.py +0 -0
  858. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/config_bounds.py +0 -0
  859. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/constants.py +0 -0
  860. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/convergence.py +0 -0
  861. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/crash.py +0 -0
  862. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/cross_doc_attn.py +0 -0
  863. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/cuda_graphs.py +0 -0
  864. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/curriculum.py +0 -0
  865. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/curriculum_dynamic.py +0 -0
  866. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/cut_ce.py +0 -0
  867. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/data_clean.py +0 -0
  868. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/data_doctor.py +0 -0
  869. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/data_forge.py +0 -0
  870. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/data_lint.py +0 -0
  871. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/data_pipeline.py +0 -0
  872. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/data_score.py +0 -0
  873. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/deepspeed.py +0 -0
  874. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/delinearize_llama4.py +0 -0
  875. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/demo_bundles.py +0 -0
  876. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/deploy_autopilot.py +0 -0
  877. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/deploy_measure.py +0 -0
  878. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/diagnose/__init__.py +0 -0
  879. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/diagnose/_common.py +0 -0
  880. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/diagnose/badge.py +0 -0
  881. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/diagnose/citation.py +0 -0
  882. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/diagnose/contamination.py +0 -0
  883. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/diagnose/forgetting.py +0 -0
  884. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/diagnose/format.py +0 -0
  885. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/diagnose/live.py +0 -0
  886. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/diagnose/memorization.py +0 -0
  887. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/diagnose/mode_collapse.py +0 -0
  888. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/diagnose/refusal.py +0 -0
  889. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/diagnose/report.py +0 -0
  890. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/diagnose/runner.py +0 -0
  891. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/distill.py +0 -0
  892. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/dpo_variants.py +0 -0
  893. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/draft.py +0 -0
  894. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/drift_alarm.py +0 -0
  895. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/ebft_gdpo.py +0 -0
  896. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/echo_trap.py +0 -0
  897. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/edit_diff.py +0 -0
  898. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/edit_governor.py +0 -0
  899. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/edit_kernels.py +0 -0
  900. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/embed.py +0 -0
  901. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/encoding.py +0 -0
  902. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/energy.py +0 -0
  903. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/env_lock.py +0 -0
  904. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/errors.py +0 -0
  905. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/eval_design.py +0 -0
  906. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/eval_gate_hook.py +0 -0
  907. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/eval_lock_coverage.py +0 -0
  908. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/eval_schedule.py +0 -0
  909. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/evolve.py +0 -0
  910. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/exit_codes.py +0 -0
  911. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/fast_lora.py +0 -0
  912. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/fast_lora_mlp.py +0 -0
  913. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/fast_lora_qkv.py +0 -0
  914. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/fetch_examples.py +0 -0
  915. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/final_answer.py +0 -0
  916. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/flash_attn.py +0 -0
  917. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/fp8.py +0 -0
  918. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/freeze.py +0 -0
  919. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/fsdp.py +0 -0
  920. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/fsdp_consolidate.py +0 -0
  921. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/galore.py +0 -0
  922. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/gguf_quant.py +0 -0
  923. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/gpu.py +0 -0
  924. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/gpu_monitor.py +0 -0
  925. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/grace_codebook.py +0 -0
  926. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/graceful_save.py +0 -0
  927. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/grad_accum.py +0 -0
  928. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/gradient_ckpt.py +0 -0
  929. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/grpo_long_context.py +0 -0
  930. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/grpo_variants.py +0 -0
  931. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/hardware_fit.py +0 -0
  932. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/harm_probe.py +0 -0
  933. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/hf.py +0 -0
  934. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/hf_space.py +0 -0
  935. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/hubs.py +0 -0
  936. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/ingest_pull.py +0 -0
  937. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/ingest_sources.py +0 -0
  938. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/integrations.py +0 -0
  939. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/interference.py +0 -0
  940. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/interference_live.py +0 -0
  941. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/irt.py +0 -0
  942. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/iterative_dpo.py +0 -0
  943. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/jinja_analyzer.py +0 -0
  944. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/kernel_picker.py +0 -0
  945. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/knowledge_edit.py +0 -0
  946. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/kv_cache.py +0 -0
  947. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/launcher.py +0 -0
  948. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/layer_shard.py +0 -0
  949. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/layer_stream.py +0 -0
  950. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/layer_stream_runtime.py +0 -0
  951. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/license_advisor.py +0 -0
  952. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/liger.py +0 -0
  953. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/lisa.py +0 -0
  954. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/live_eval.py +0 -0
  955. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/llama_proxy.py +0 -0
  956. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/llama_server_timings.py +0 -0
  957. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/local_request_guard.py +0 -0
  958. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/local_rl.py +0 -0
  959. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/local_rl_scheduler.py +0 -0
  960. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/loftq_init.py +0 -0
  961. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/log_level.py +0 -0
  962. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/long_context.py +0 -0
  963. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/longlora.py +0 -0
  964. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/loop_budget.py +0 -0
  965. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/loop_daemon.py +0 -0
  966. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/loop_iteration.py +0 -0
  967. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/loop_stages.py +0 -0
  968. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/loop_state.py +0 -0
  969. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/lr_finder.py +0 -0
  970. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/lr_groups.py +0 -0
  971. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/magpie.py +0 -0
  972. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/metrics.py +0 -0
  973. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/mii.py +0 -0
  974. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/minillm.py +0 -0
  975. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/mixed_precision.py +0 -0
  976. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/mlx.py +0 -0
  977. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/mod.py +0 -0
  978. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/moe.py +0 -0
  979. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/moe_quant.py +0 -0
  980. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/mole_routing.py +0 -0
  981. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/multipack.py +0 -0
  982. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/multipack_sampler.py +0 -0
  983. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/multipack_trainer.py +0 -0
  984. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/namespace_pin.py +0 -0
  985. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/neat_packing.py +0 -0
  986. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/net_guard.py +0 -0
  987. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/ngram_spec.py +0 -0
  988. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/nlg_metrics.py +0 -0
  989. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/ollama.py +0 -0
  990. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/onboarding.py +0 -0
  991. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/optimizer_zoo.py +0 -0
  992. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/oq_affine.py +0 -0
  993. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/owner_only_dir.py +0 -0
  994. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/paths.py +0 -0
  995. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/peft_builder.py +0 -0
  996. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/peft_patches.py +0 -0
  997. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/peft_wiring.py +0 -0
  998. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/persona_hub.py +0 -0
  999. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/pipeline.py +0 -0
  1000. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/plotext_compat.py +0 -0
  1001. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/preference_combine.py +0 -0
  1002. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/prm.py +0 -0
  1003. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/prm_reward.py +0 -0
  1004. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/probe_kernel.py +0 -0
  1005. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/probe_pack.py +0 -0
  1006. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/process_liveness.py +0 -0
  1007. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/profiler.py +0 -0
  1008. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/profiling.py +0 -0
  1009. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/profiling_v0_43.py +0 -0
  1010. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/prompt_compile.py +0 -0
  1011. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/prompt_distill.py +0 -0
  1012. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/prune_prompt.py +0 -0
  1013. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/qat.py +0 -0
  1014. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/qr_url.py +0 -0
  1015. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/quality.py +0 -0
  1016. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/quant_menu.py +0 -0
  1017. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/quest.py +0 -0
  1018. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/qwen4_compat.py +0 -0
  1019. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/qwen4_ple.py +0 -0
  1020. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/ra_dit.py +0 -0
  1021. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/raft.py +0 -0
  1022. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/reasoning_effort.py +0 -0
  1023. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/reasoning_parser.py +0 -0
  1024. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/recipe_run.py +0 -0
  1025. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/registry.py +0 -0
  1026. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/rehearsal.py +0 -0
  1027. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/relora.py +0 -0
  1028. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/replay.py +0 -0
  1029. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/repro_receipt.py +0 -0
  1030. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/reward_hack_control.py +0 -0
  1031. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/reward_hacking.py +0 -0
  1032. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/reward_stress.py +0 -0
  1033. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/reward_synth.py +0 -0
  1034. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/rewind.py +0 -0
  1035. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/ring_attention.py +0 -0
  1036. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/rl_checkpoint.py +0 -0
  1037. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/rl_signal_buffer.py +0 -0
  1038. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/run_cost.py +0 -0
  1039. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/sae_diff.py +0 -0
  1040. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/safe_regex.py +0 -0
  1041. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/safetensors_reader.py +0 -0
  1042. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/seeding.py +0 -0
  1043. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/semdedup.py +0 -0
  1044. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/server_tools.py +0 -0
  1045. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/sglang.py +0 -0
  1046. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/ship_verdict.py +0 -0
  1047. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/shortcuts.py +0 -0
  1048. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/shrink.py +0 -0
  1049. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/signing.py +0 -0
  1050. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/sigstore_signing.py +0 -0
  1051. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/sleeper_probe.py +0 -0
  1052. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/soup_lock.py +0 -0
  1053. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/spdx_license_ids.py +0 -0
  1054. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/spec_pairing.py +0 -0
  1055. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/spectrum_scan.py +0 -0
  1056. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/spike_recovery.py +0 -0
  1057. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/sse_train_stream.py +0 -0
  1058. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/steering.py +0 -0
  1059. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/strict_safetensors.py +0 -0
  1060. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/stripe_roots.py +0 -0
  1061. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/structured_output.py +0 -0
  1062. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/tail_latency.py +0 -0
  1063. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/terminal.py +0 -0
  1064. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/terraform_plan.py +0 -0
  1065. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/tool_outputs.py +0 -0
  1066. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/topics.py +0 -0
  1067. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/topology.py +0 -0
  1068. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/torchao_compat.py +0 -0
  1069. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/tracing.py +0 -0
  1070. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/trackers.py +0 -0
  1071. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/train_event_buffer.py +0 -0
  1072. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/trainer_plugins.py +0 -0
  1073. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/trust_remote.py +0 -0
  1074. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/truth_probe.py +0 -0
  1075. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/tts.py +0 -0
  1076. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/tts_codec.py +0 -0
  1077. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/tunability.py +0 -0
  1078. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/ui_env.py +0 -0
  1079. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/uld.py +0 -0
  1080. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/unlearn_kernels.py +0 -0
  1081. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/unlearning.py +0 -0
  1082. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/unlearning_eval.py +0 -0
  1083. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/unsloth.py +0 -0
  1084. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/v028_features.py +0 -0
  1085. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/vector_bank.py +0 -0
  1086. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/vllm.py +0 -0
  1087. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/vscode_setup.py +0 -0
  1088. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/warmup.py +0 -0
  1089. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/webhooks.py +0 -0
  1090. {soup_cli-0.76.0 → soup_cli-0.76.1}/src/soup_cli/utils/why.py +0 -0
  1091. {soup_cli-0.76.0 → soup_cli-0.76.1}/templates/chat.yaml +0 -0
  1092. {soup_cli-0.76.0 → soup_cli-0.76.1}/templates/code.yaml +0 -0
  1093. {soup_cli-0.76.0 → soup_cli-0.76.1}/templates/medical.yaml +0 -0
  1094. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/__init__.py +0 -0
  1095. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/_tiny_hf_models.py +0 -0
  1096. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/_windows_ci.py +0 -0
  1097. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/conftest.py +0 -0
  1098. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/fixtures/autodistill/v1/capture_token.json +0 -0
  1099. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/fixtures/autodistill/v1/consumption_ledger.json +0 -0
  1100. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/fixtures/autodistill/v1/plan.json +0 -0
  1101. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/fixtures/autodistill/v1/shard_manifest.json +0 -0
  1102. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/fixtures/autodistill/v1/student_rollout_capture_token.json +0 -0
  1103. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/fixtures/cyclonedx/README.md +0 -0
  1104. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/fixtures/cyclonedx/bom-1.6.schema.json +0 -0
  1105. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/fixtures/cyclonedx/jsf-0.82.schema.json +0 -0
  1106. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/fixtures/cyclonedx/spdx.schema.json +0 -0
  1107. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/fixtures/issue204_langfuse_observations_v2_page.json +0 -0
  1108. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/fixtures/recipe_base_architectures.json +0 -0
  1109. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/fixtures/recipe_config_snapshots.json +0 -0
  1110. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/mcp_roundtrip.py +0 -0
  1111. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/preprocess_cache_blob.py +0 -0
  1112. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/qa/v053_qa.md +0 -0
  1113. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/qa/v07114_qa.md +0 -0
  1114. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/qa/v0716_qa.md +0 -0
  1115. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/recipe_count.py +0 -0
  1116. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_adapter_trusted_key_backend.py +0 -0
  1117. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_adapters.py +0 -0
  1118. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_advanced_peft.py +0 -0
  1119. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_align_trainable_dtype.py +0 -0
  1120. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_assistant_mask.py +0 -0
  1121. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_audio.py +0 -0
  1122. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_audit_log_option_masking.py +0 -0
  1123. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_auto_mixed_precision_task_gate.py +0 -0
  1124. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_auto_tuning.py +0 -0
  1125. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_autopilot.py +0 -0
  1126. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_awq_gptq_export.py +0 -0
  1127. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_batch_probe.py +0 -0
  1128. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_bco.py +0 -0
  1129. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_bench.py +0 -0
  1130. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_brain_rot_multilingual.py +0 -0
  1131. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_bugfixes.py +0 -0
  1132. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_build_dag.py +0 -0
  1133. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_callback.py +0 -0
  1134. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_can_deploy_target_containment.py +0 -0
  1135. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_can_output_control_bytes.py +0 -0
  1136. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_can_read_limits.py +0 -0
  1137. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_cans.py +0 -0
  1138. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_chat.py +0 -0
  1139. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_chat_template.py +0 -0
  1140. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_ci_full_matrix_on_approval.py +0 -0
  1141. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_ci_test_cells_run_in_parallel.py +0 -0
  1142. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_cli.py +0 -0
  1143. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_cli_help_assertions_are_ansi_safe.py +0 -0
  1144. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_cli_import_benchmark.py +0 -0
  1145. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_cli_startup_is_light.py +0 -0
  1146. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_cli_subprocess.py +0 -0
  1147. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_click_argument_help.py +0 -0
  1148. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_cloud_output_dir_containment.py +0 -0
  1149. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_code_review_critical.py +0 -0
  1150. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_code_review_deferred.py +0 -0
  1151. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_code_review_high.py +0 -0
  1152. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_code_review_medium_low.py +0 -0
  1153. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_code_review_recurring.py +0 -0
  1154. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_commands_md_covers_registered_commands.py +0 -0
  1155. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_config.py +0 -0
  1156. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_config_bounds_leaf.py +0 -0
  1157. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_config_deprecation.py +0 -0
  1158. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_config_regex_limits.py +0 -0
  1159. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_contributing_test_counts_are_digit_free.py +0 -0
  1160. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_cost.py +0 -0
  1161. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_crash_reporter.py +0 -0
  1162. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_cuda_graph_cli.py +0 -0
  1163. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_cuda_graph_decode_verdict.py +0 -0
  1164. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_cuda_graphs.py +0 -0
  1165. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_curriculum.py +0 -0
  1166. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_data.py +0 -0
  1167. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_data_augment.py +0 -0
  1168. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_data_clean.py +0 -0
  1169. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_data_sample.py +0 -0
  1170. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_data_split.py +0 -0
  1171. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_data_tools.py +0 -0
  1172. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_dataset_hub.py +0 -0
  1173. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_dataset_registry.py +0 -0
  1174. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_deepspeed.py +0 -0
  1175. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_demo_bundle_metadata.py +0 -0
  1176. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_deploy_ollama.py +0 -0
  1177. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_determinism.py +0 -0
  1178. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_device_map_distributed.py +0 -0
  1179. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_diagnose_evidence_terminal_output.py +0 -0
  1180. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_diagnose_unlearning_attach_to_registry.py +0 -0
  1181. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_diff.py +0 -0
  1182. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_disk_tier_stripe_cache.py +0 -0
  1183. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_disk_tier_stripe_folders.py +0 -0
  1184. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_disk_tier_stripe_read_ahead_advice.py +0 -0
  1185. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_disk_tier_stripe_reader.py +0 -0
  1186. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_disk_tier_stripe_roots.py +0 -0
  1187. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_disk_tier_stripe_runtime.py +0 -0
  1188. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_disk_tier_stripe_setup.py +0 -0
  1189. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_disk_tier_stripe_sharder.py +0 -0
  1190. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_disk_tier_stripe_terminal.py +0 -0
  1191. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_display.py +0 -0
  1192. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_doctor.py +0 -0
  1193. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_dpo_example.py +0 -0
  1194. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_dpo_variants.py +0 -0
  1195. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_edit_steer_registry_id_attaches.py +0 -0
  1196. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_embedding.py +0 -0
  1197. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_errors.py +0 -0
  1198. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_eval.py +0 -0
  1199. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_eval_gate.py +0 -0
  1200. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_eval_platform.py +0 -0
  1201. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_eval_unlearning_terminal_output.py +0 -0
  1202. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_examples_configs.py +0 -0
  1203. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_expect_unknown_key_lists_are_bounded.py +0 -0
  1204. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_export.py +0 -0
  1205. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_file_derived_text_printing.py +0 -0
  1206. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_formats.py +0 -0
  1207. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_fp8_recipe.py +0 -0
  1208. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_freeze_training.py +0 -0
  1209. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_generate.py +0 -0
  1210. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_gpu.py +0 -0
  1211. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_graddiff.py +0 -0
  1212. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_graddiff_acceptance.py +0 -0
  1213. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_grpo.py +0 -0
  1214. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_hf_cache_link_containment.py +0 -0
  1215. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_hf_cache_slot_key.py +0 -0
  1216. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_hf_integration.py +0 -0
  1217. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_hf_shared_blob_store.py +0 -0
  1218. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_hub_push_credentials.py +0 -0
  1219. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_infer.py +0 -0
  1220. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_inference_advanced.py +0 -0
  1221. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_init.py +0 -0
  1222. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_init_output_link.py +0 -0
  1223. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_ipo.py +0 -0
  1224. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1001_backend_support_cites_no_source_lines.py +0 -0
  1225. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1002_gpu_free_accelerator_error_classifier.py +0 -0
  1226. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1003_page_lock_drain_before_vram_probe.py +0 -0
  1227. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1005_peft021_canonical_names.py +0 -0
  1228. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1005_peft021_review_round.py +0 -0
  1229. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1011_streamed_save_guard.py +0 -0
  1230. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1012_lora_head_streamed_large_layer.py +0 -0
  1231. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1017_merge_freshness.py +0 -0
  1232. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1038_preprocess_to_pretokenized.py +0 -0
  1233. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1048_lora_head_save_resume.py +0 -0
  1234. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1049_untied_streamed_preference.py +0 -0
  1235. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1052_draft_panel_escapes_model_names.py +0 -0
  1236. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1054_pretokenized_labels.py +0 -0
  1237. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1067_chat_template_cache_key.py +0 -0
  1238. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1069_mlx_callback_monitoring_compat.py +0 -0
  1239. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1070_moe_target_modules.py +0 -0
  1240. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1099_moe_lora_remaining_tasks.py +0 -0
  1241. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1116_attach_preflight.py +0 -0
  1242. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1116_attach_ratchet.py +0 -0
  1243. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1122_glm4_granite_moe_targets.py +0 -0
  1244. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1124_sft_audio_stream_unsloth_fp8.py +0 -0
  1245. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1127_preprocess_cache_key_fields.py +0 -0
  1246. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1136_token_not_persisted.py +0 -0
  1247. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1137_regex_sink_guards.py +0 -0
  1248. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1138_run_log_symlink.py +0 -0
  1249. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1147_missing_grad_norm.py +0 -0
  1250. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1152_fp8_conversion_stops.py +0 -0
  1251. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1156_multimodal_mask_history_doctor.py +0 -0
  1252. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1158_run_log_directory_symlink_and_hardlink.py +0 -0
  1253. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1162_quest_base_identity.py +0 -0
  1254. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1165_fast_lora_patch_precedence.py +0 -0
  1255. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1166_bench_train_instrumentation.py +0 -0
  1256. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1174_head_prefetch_ab_provenance.py +0 -0
  1257. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1174_head_prefetch_after_lookup.py +0 -0
  1258. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1180_preprocess_refuses_bad_rows.py +0 -0
  1259. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1181_loader_reports_dropped_rows.py +0 -0
  1260. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1189_find_lr_small_dataset.py +0 -0
  1261. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1191_ui_session_cookie.py +0 -0
  1262. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1192_arithmetic_discrimination.py +0 -0
  1263. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1192_common_sense_discrimination.py +0 -0
  1264. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1194_ui_login_url.py +0 -0
  1265. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1195_ui_auth_non_ascii.py +0 -0
  1266. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1197_vera_moe_lora.py +0 -0
  1267. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1198_model_size_parsing.py +0 -0
  1268. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1199_quest_local_base_topology.py +0 -0
  1269. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1199_v1_resume_identity.py +0 -0
  1270. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1203_find_lr_no_synthetic_curve.py +0 -0
  1271. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1204_fsdp_deepspeed_forwarding.py +0 -0
  1272. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1208_simpo_zero_token_completion.py +0 -0
  1273. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1210_loraplus_model_only_optimizers.py +0 -0
  1274. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1211_mcp_plan_symlink.py +0 -0
  1275. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1212_autopilot_install_aware_kernels.py +0 -0
  1276. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1213_dispatch_parity.py +0 -0
  1277. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1214_migrators_pref_tasks.py +0 -0
  1278. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1215_migrate_quantization_none.py +0 -0
  1279. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1216_canary_formats.py +0 -0
  1280. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1217_tool_calling_nested.py +0 -0
  1281. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1217_zero_row_stop.py +0 -0
  1282. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1218_parquet_parity.py +0 -0
  1283. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1219_classifier_data_loader.py +0 -0
  1284. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1219_pair_rows_are_task_scoped.py +0 -0
  1285. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1220_resume_prm_moe.py +0 -0
  1286. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1221_forge_judge_failures.py +0 -0
  1287. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1222_refuse_int8_qat.py +0 -0
  1288. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1223_eval_steps_config.py +0 -0
  1289. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1223_evaluate_val_split.py +0 -0
  1290. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1223_rl_signal_eval_isolation.py +0 -0
  1291. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1224_registry_baseline_newest_row.py +0 -0
  1292. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1225_online_dpo_unranked_pairs.py +0 -0
  1293. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1225_runs_clean_keeps_a_checkpoint.py +0 -0
  1294. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1226_clause_scanner_is_linear.py +0 -0
  1295. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1226_grpo_gold_validation.py +0 -0
  1296. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1226_parser_edge_cases.py +0 -0
  1297. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1226_reward_gold_parsing.py +0 -0
  1298. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1227_ab_two_sided.py +0 -0
  1299. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1228_behavior_scoring.py +0 -0
  1300. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1230_refuse_ebft.py +0 -0
  1301. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1231_expect_all_formats.py +0 -0
  1302. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1232_grpo_variant_kl.py +0 -0
  1303. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1233_diagnose_unicode.py +0 -0
  1304. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1234_embedding_contrastive_batch_size.py +0 -0
  1305. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1235_prm_fp32_master_weights.py +0 -0
  1306. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1236_packing_loss_mask.py +0 -0
  1307. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1239_llama3_rope_compose.py +0 -0
  1308. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1240_refuse_longlora.py +0 -0
  1309. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1241_shrink_per_layer_config.py +0 -0
  1310. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1242_distill_causal_target_guard.py +0 -0
  1311. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1247_grpo_beta_zero.py +0 -0
  1312. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1251_data_doctor_mask_history.py +0 -0
  1313. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1263_grpo_variant_kl_metric.py +0 -0
  1314. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1264_unsloth_moe_lora_reason.py +0 -0
  1315. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1265_ab_nig.py +0 -0
  1316. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1266_mole_gate_fp32_master.py +0 -0
  1317. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1267_auth_status_classification.py +0 -0
  1318. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1269_optimizer_allowlist.py +0 -0
  1319. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1270_newest_eval_rows.py +0 -0
  1320. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1272_cache_refusal_reason.py +0 -0
  1321. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1274_augment_distill_provider_failures.py +0 -0
  1322. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1309_refuse_gdpo.py +0 -0
  1323. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1320_canary_io.py +0 -0
  1324. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1324_mlx_loraplus_refusal.py +0 -0
  1325. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1325_expand_layers_scope.py +0 -0
  1326. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1329_email_pattern_is_linear.py +0 -0
  1327. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1330_backend_support_active_values.py +0 -0
  1328. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1331_canary_placement.py +0 -0
  1329. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1338_clean_nested_tool_calls.py +0 -0
  1330. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1339_ab_boundary_and_overflow.py +0 -0
  1331. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1342_custom_eval_answer_scoring.py +0 -0
  1332. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1343_unspaced_and_symbols.py +0 -0
  1333. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1344_sequence_distill_dropped_row_numbering.py +0 -0
  1334. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1346_rewrites_are_linear.py +0 -0
  1335. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1347_boxed_scan.py +0 -0
  1336. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1347_mcq_boxed_letter.py +0 -0
  1337. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1349_grpo_demo_golds.py +0 -0
  1338. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1350_reward_synth_numeric_parser.py +0 -0
  1339. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1351_unpacked_assistant_masks.py +0 -0
  1340. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1352_narrow_terminal_guard.py +0 -0
  1341. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1355_accelerator_device.py +0 -0
  1342. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1357_unsloth_refused_without_setup.py +0 -0
  1343. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1358_vocab_expansion_refused.py +0 -0
  1344. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1361_auth_status_text_chain.py +0 -0
  1345. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1367_quadratic_backtracking.py +0 -0
  1346. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1384_ab_degenerate_spread.py +0 -0
  1347. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1387_source_provenance.py +0 -0
  1348. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1389_grpo_val_reward.py +0 -0
  1349. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1391_ppo_real_step.py +0 -0
  1350. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1393_dpo_vision_loader.py +0 -0
  1351. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1394_moe_aux_loss_modality.py +0 -0
  1352. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1395_mistral3_target_modules.py +0 -0
  1353. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1409_freeze_equals_expand.py +0 -0
  1354. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1413_ppo_loss_summary.py +0 -0
  1355. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1414_ci_fork_badge.py +0 -0
  1356. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1418_ab_cs_accept.py +0 -0
  1357. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1421_fused_moe_experts.py +0 -0
  1358. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1424_detect_format_multirow.py +0 -0
  1359. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1426_uld_unaligned_positions.py +0 -0
  1360. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1428_suite_unknown_keys.py +0 -0
  1361. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1429_bytelevel_tokenizer.py +0 -0
  1362. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1431_warmup_steps.py +0 -0
  1363. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1433_expect_judge.py +0 -0
  1364. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1434_expect_fail_closed.py +0 -0
  1365. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1435_diagnose_not_run.py +0 -0
  1366. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1435_diagnose_probe_rows.py +0 -0
  1367. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1436_forgetting_holdout.py +0 -0
  1368. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1437_memorization_long_rows.py +0 -0
  1369. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1438_info_rm_discrete_reward.py +0 -0
  1370. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1439_lambda_ssh_resilience.py +0 -0
  1371. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1440_from_traces_reads_ingest_signal.py +0 -0
  1372. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1441_ppo_refuses_unfed_rl_flags.py +0 -0
  1373. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1443_device_map.py +0 -0
  1374. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1445_early_destination_validation.py +0 -0
  1375. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1446_provenance_artifacts.py +0 -0
  1376. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1447_judge_unavailable.py +0 -0
  1377. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1448_advise_probe_model_roi_table.py +0 -0
  1378. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1448_data_score_benchmarks.py +0 -0
  1379. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1448_export_deploy_options.py +0 -0
  1380. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1448_generate_preference_dedup.py +0 -0
  1381. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1448_local_rl_schedule_args.py +0 -0
  1382. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1448_merge_4bit_forced.py +0 -0
  1383. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1448_real_helpers.py +0 -0
  1384. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1448_serve_streaming.py +0 -0
  1385. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1448_train_profile_trace.py +0 -0
  1386. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1449_trust_remote_code_dropped.py +0 -0
  1387. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue144_gguf_export.py +0 -0
  1388. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1450_atomic_replace.py +0 -0
  1389. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1464_bon_staging_cleanup.py +0 -0
  1390. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1465_documented_invocations_exist.py +0 -0
  1391. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1465_ui_plugin_registry_removed.py +0 -0
  1392. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1466_dora_prequantized.py +0 -0
  1393. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1466_mxfp4.py +0 -0
  1394. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1466_prm_reward_hub_id.py +0 -0
  1395. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1467_verdict_matching.py +0 -0
  1396. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1468_machine_output_raw_stdout.py +0 -0
  1397. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1477_call_only_empty_content.py +0 -0
  1398. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1478_serve_device_map.py +0 -0
  1399. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1480_machine_output_rich_json.py +0 -0
  1400. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1483_suite_top_level_keys.py +0 -0
  1401. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1497_freeze_refused_outside_sft.py +0 -0
  1402. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1522_judge_down.py +0 -0
  1403. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1524_ab_accept_hold_note.py +0 -0
  1404. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1528_contains_is_linear.py +0 -0
  1405. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1529_unlearn_duration.py +0 -0
  1406. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1530_from_traces_file_logs.py +0 -0
  1407. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1531_pinned_arena_alignment.py +0 -0
  1408. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1547_outbound_http_sinks.py +0 -0
  1409. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1548_loopback_set_is_shared.py +0 -0
  1410. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1550_ip_literal_portable.py +0 -0
  1411. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1550_numeric_host.py +0 -0
  1412. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1579_notebook_magics.py +0 -0
  1413. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1581_freeze_refused_off_the_text_path.py +0 -0
  1414. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1597_vision_image_objects.py +0 -0
  1415. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1603_trainer_config.py +0 -0
  1416. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1609_grpo_variants_finite_ratio.py +0 -0
  1417. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1613_early_stripe_roots.py +0 -0
  1418. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1631_mxfp4_preflight.py +0 -0
  1419. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1644_auto_eval_trust_remote_code.py +0 -0
  1420. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1652_preflight_prequantized.py +0 -0
  1421. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1675_trainer_init_attrs.py +0 -0
  1422. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1692_stream_layers_kernel_flags.py +0 -0
  1423. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1697_rope_scaling_refused_where_unapplied.py +0 -0
  1424. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1702_arena_pack_gate.py +0 -0
  1425. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1702_pinned_arena_packing.py +0 -0
  1426. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1718_benchmark_evidence.py +0 -0
  1427. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1721_adapters_check.py +0 -0
  1428. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1725_human_input_shape.py +0 -0
  1429. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1731_fp8_needs_transformers_5_17.py +0 -0
  1430. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1734_tool_args_credit.py +0 -0
  1431. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1736_unsloth_tip_only_when_it_loads.py +0 -0
  1432. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1740_quant_boundaries.py +0 -0
  1433. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue1744_deploy_measure_boundaries.py +0 -0
  1434. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue179_sigstore_attest.py +0 -0
  1435. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue185_sigstore_adapters.py +0 -0
  1436. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue185_sigstore_interactive_policy.py +0 -0
  1437. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue204_langfuse_pull.py +0 -0
  1438. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue23_mlx_display_bridge.py +0 -0
  1439. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue23_mlx_harness_bridge.py +0 -0
  1440. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue23_mlx_val_loss_producer.py +0 -0
  1441. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue264_cloud.py +0 -0
  1442. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue265_llasa_csm_live_codec.py +0 -0
  1443. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue265_spark_oute_contract.py +0 -0
  1444. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue265_xcodec2_audio_contract.py +0 -0
  1445. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue296_network_transport.py +0 -0
  1446. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue300_online_dpo_kwargs.py +0 -0
  1447. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue300_online_dpo_train.py +0 -0
  1448. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue302_vision_pad_token.py +0 -0
  1449. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue304_cross_tokenizer.py +0 -0
  1450. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue305_mixed_rank_arithmetic.py +0 -0
  1451. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue308_callback_subclass.py +0 -0
  1452. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue316_refusal_apostrophe.py +0 -0
  1453. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue316_suites.py +0 -0
  1454. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue320_lazy_callback_import.py +0 -0
  1455. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue322_mcp2_compat.py +0 -0
  1456. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue323_trl_kwarg_drift.py +0 -0
  1457. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue327_logits_estimate.py +0 -0
  1458. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue330_mix_recipe_train_loadable.py +0 -0
  1459. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue332_vllm_prompt.py +0 -0
  1460. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue334_fa3_detection.py +0 -0
  1461. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue336_deepspeed_lora.py +0 -0
  1462. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue338_awq_gptq_deprecated.py +0 -0
  1463. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue339_load_dtype.py +0 -0
  1464. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue341_seed_and_fullft.py +0 -0
  1465. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue342_grpo_nan.py +0 -0
  1466. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue348_calibrated_logits_wiring.py +0 -0
  1467. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue349_measured_fit.py +0 -0
  1468. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue350_fsdp_qlora.py +0 -0
  1469. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue352_fsdp_peft_checkpoint.py +0 -0
  1470. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue353_mlx_seed_warning.py +0 -0
  1471. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue353_seed_every_task.py +0 -0
  1472. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue359_deepspeed_guard_coverage.py +0 -0
  1473. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue360_sglang_prompt_finish_reason.py +0 -0
  1474. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue361_nf4_throughput.py +0 -0
  1475. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue367_live_eval_quantization.py +0 -0
  1476. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue367_ship_numerics.py +0 -0
  1477. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue369_canonical_named_parameters.py +0 -0
  1478. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue372_no_reexec_hint.py +0 -0
  1479. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue373_fsdp_sharding_probe.py +0 -0
  1480. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue374_stream_disk_preflight.py +0 -0
  1481. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue377_lisa_train_embeddings.py +0 -0
  1482. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue379_determinism.py +0 -0
  1483. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue379_determinism_main.py +0 -0
  1484. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue379_determinism_measure.py +0 -0
  1485. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue379_fixture_window_cpu_harness.py +0 -0
  1486. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue379_graddiff_guards.py +0 -0
  1487. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue379_mechanism.py +0 -0
  1488. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue379_mechanism_arms.py +0 -0
  1489. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue379_mechanism_verdict.py +0 -0
  1490. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue379_variant2_gate.py +0 -0
  1491. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue382_windows_ci_guard_is_shared.py +0 -0
  1492. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue385_stream_dtype.py +0 -0
  1493. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue389_torchao_error.py +0 -0
  1494. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue390_expandable_segments_reason.py +0 -0
  1495. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue392_mlx_target_keys.py +0 -0
  1496. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue394_mlx_runtime_isolation.py +0 -0
  1497. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue401_orphaned_run_reconcile.py +0 -0
  1498. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue402_restart_capacity.py +0 -0
  1499. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue404_baseline_scorer_stamp.py +0 -0
  1500. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue405_gate_discrimination.py +0 -0
  1501. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue423_mlx_device_detection.py +0 -0
  1502. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue424_windows_liveness.py +0 -0
  1503. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue427_qwen35_text_modality.py +0 -0
  1504. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue433_meta_adapter_guard.py +0 -0
  1505. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue441_coerce_token_ids.py +0 -0
  1506. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue443_interleave_wiring.py +0 -0
  1507. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue459_interleave_streaming_hub.py +0 -0
  1508. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue477_qwen38_catalog.py +0 -0
  1509. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue487_changelog_fragments.py +0 -0
  1510. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue491_frozen_base_load_dtype.py +0 -0
  1511. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue502_qwen35_transformers5.py +0 -0
  1512. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue505_launching_window_blocks_restart.py +0 -0
  1513. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue524_launching_reconcile.py +0 -0
  1514. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue531_stream_base_provenance.py +0 -0
  1515. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue532_supervised_token_guard.py +0 -0
  1516. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue533_offline_hf_materialization.py +0 -0
  1517. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue534_apple_nvme.py +0 -0
  1518. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue546_transient_finite_metric.py +0 -0
  1519. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue549_bon_resume.py +0 -0
  1520. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue550_bon_offline.py +0 -0
  1521. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue555_bon_stream_resume.py +0 -0
  1522. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue563_mps_bf16_training.py +0 -0
  1523. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue565_grpo_reward_metadata.py +0 -0
  1524. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue567_grpo_mps_bf16.py +0 -0
  1525. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue571_qwen4_exp.py +0 -0
  1526. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue573_qwen4_expert_lora.py +0 -0
  1527. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue580_autodistill_capture.py +0 -0
  1528. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue580_autodistill_contract.py +0 -0
  1529. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue580_autodistill_fingerprints.py +0 -0
  1530. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue580_autodistill_mlx_worker.py +0 -0
  1531. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue580_autodistill_publisher.py +0 -0
  1532. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue599_telemetry_dns_ssrf.py +0 -0
  1533. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue600_abbreviated_ipv4_ssrf.py +0 -0
  1534. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue602_qwen4_ple_streaming.py +0 -0
  1535. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue616_net_guard_is_shared.py +0 -0
  1536. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue621_recipe_snapshot.py +0 -0
  1537. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue623_stream_pin_allocation.py +0 -0
  1538. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue627_unknown_config_keys.py +0 -0
  1539. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue633_ansi_in_highlighted_output.py +0 -0
  1540. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue634_mlx_resume.py +0 -0
  1541. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue636_torch_floor.py +0 -0
  1542. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue642_sweep_dry_run.py +0 -0
  1543. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue649_batch_probe_peak_gate.py +0 -0
  1544. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue654_batch_probe_uncovered_branches.py +0 -0
  1545. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue674_postfit_evidence.py +0 -0
  1546. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue674_quest_continuation.py +0 -0
  1547. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue674_quest_integration.py +0 -0
  1548. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue676_non_dict_messages.py +0 -0
  1549. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue677_recipe_repo_id_guard.py +0 -0
  1550. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue681_uld_id_compat.py +0 -0
  1551. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue682_uld_loss_label_mask.py +0 -0
  1552. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue683_mlx_response_masking.py +0 -0
  1553. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue684_mlx_grad_accumulation.py +0 -0
  1554. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue685_mlx_grad_checkpoint.py +0 -0
  1555. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue686_mlx_optimizer_schedule.py +0 -0
  1556. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue687_ui_auth.py +0 -0
  1557. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue688_ui_drain.py +0 -0
  1558. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue689_hub_streaming.py +0 -0
  1559. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue690_embedding_trainer_attrs.py +0 -0
  1560. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue691_sft_packing.py +0 -0
  1561. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue692_minillm_offline_zero_ratio.py +0 -0
  1562. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue695_validate_agrees_with_loader.py +0 -0
  1563. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue700_embedding_lora_zero.py +0 -0
  1564. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue702_streaming_over_val_leak.py +0 -0
  1565. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue716_harness_step_guard.py +0 -0
  1566. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue719_stable_distill_divergence.py +0 -0
  1567. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue720_distill_grad_accum.py +0 -0
  1568. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue721_ppo_config_forwarding.py +0 -0
  1569. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue722_chunked_distill.py +0 -0
  1570. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue723_sequence_gspo.py +0 -0
  1571. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue724_loraplus_optimizer.py +0 -0
  1572. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue724_loraplus_wiring_coverage.py +0 -0
  1573. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue725_lorafa_optimizer.py +0 -0
  1574. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue725_lorafa_wiring_coverage.py +0 -0
  1575. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue731_ui_docs_bind.py +0 -0
  1576. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue745_online_dpo_loraplus.py +0 -0
  1577. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue745_ppo_loraplus_scheduler.py +0 -0
  1578. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue748_config_fields_reach_a_consumer.py +0 -0
  1579. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue752_cli_commands_called_as_functions.py +0 -0
  1580. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue755_backend_support_registry.py +0 -0
  1581. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue758_evidence_schema_parity.py +0 -0
  1582. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue761_mask_history.py +0 -0
  1583. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue761_staged_three_fields.py +0 -0
  1584. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue762_adapters_audit.py +0 -0
  1585. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue764_run_status_reconciliation.py +0 -0
  1586. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue771_validator_fast_path.py +0 -0
  1587. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue775_path_containment_ratchet.py +0 -0
  1588. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue781_inference_bos.py +0 -0
  1589. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue785_engine_bos.py +0 -0
  1590. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue785_training_bos.py +0 -0
  1591. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue791_preprocess_cache_eos.py +0 -0
  1592. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue793_rope_scaling.py +0 -0
  1593. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue794_peft_variants_reach_trainers.py +0 -0
  1594. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue795_quantization_unhonoured_tasks.py +0 -0
  1595. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue796_gradient_checkpointing_tiers.py +0 -0
  1596. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue797_kbit_checkpointing.py +0 -0
  1597. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue798_moe_flags_per_task.py +0 -0
  1598. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue799_autopilot_unwired_gates.py +0 -0
  1599. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue800_sft_nvfp4_fp8_attention.py +0 -0
  1600. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue801_kernel_auto_compose.py +0 -0
  1601. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue802_callback_kwargs_in_trainers.py +0 -0
  1602. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue803_lora_patterns_all_trainers.py +0 -0
  1603. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue804_chat_template_trainers.py +0 -0
  1604. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue805_optimizer_settings.py +0 -0
  1605. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue806_kernel_flags_task_scoped.py +0 -0
  1606. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue808_staged_config_fields.py +0 -0
  1607. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue810_data_lint_completion_view.py +0 -0
  1608. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue811_data_validate_exit_codes.py +0 -0
  1609. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue812_eval_against_results.py +0 -0
  1610. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue813_gate_exit_codes.py +0 -0
  1611. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue814_reward_stress.py +0 -0
  1612. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue815_canary_runtime.py +0 -0
  1613. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue816_auto_quant_refusal.py +0 -0
  1614. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue817_recipe_provider.py +0 -0
  1615. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue818_edit_diff_validation.py +0 -0
  1616. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue819_plugin_discovery.py +0 -0
  1617. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue820_windows_symlink_open_nofollow.py +0 -0
  1618. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue821_toxicity_truthfulness.py +0 -0
  1619. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue823_stale_feature_descriptions.py +0 -0
  1620. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue825_bitnet_training_gate.py +0 -0
  1621. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue826_torchao_class_names.py +0 -0
  1622. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue830_profile_gpu.py +0 -0
  1623. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue833_gpu_marker.py +0 -0
  1624. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue835_fp8_gate.py +0 -0
  1625. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue836_bench_collector.py +0 -0
  1626. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue836_bench_train_cli.py +0 -0
  1627. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue836_bench_train_contract.py +0 -0
  1628. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue837_fast_lora_mlp.py +0 -0
  1629. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue838_fast_lora_qkv.py +0 -0
  1630. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue839_fast_lora_single_projection.py +0 -0
  1631. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue842_checkpoint_visible_nf4.py +0 -0
  1632. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue843_draft_breakeven.py +0 -0
  1633. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue844_notebook_pin_guard.py +0 -0
  1634. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue865_langfuse_pull_bounds.py +0 -0
  1635. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue876_preprocess_cache_bos.py +0 -0
  1636. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue878_mcp_data_validate_format.py +0 -0
  1637. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue880_edit_diff_models_without_probes.py +0 -0
  1638. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue885_langfuse_error_ansi.py +0 -0
  1639. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue887_distill_broken_teacher_warning.py +0 -0
  1640. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue889_mcp_data_doctor_format.py +0 -0
  1641. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue890_sglang_engine_bos.py +0 -0
  1642. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue891_mii_engine_bos.py +0 -0
  1643. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue896_no_duplicate_terminal_sanitizer.py +0 -0
  1644. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue899_loss_summary.py +0 -0
  1645. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue901_failed_page_lock_recovery.py +0 -0
  1646. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue901_pinned_arenas.py +0 -0
  1647. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue91_aider_eval.py +0 -0
  1648. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue926_sharder_source_handles.py +0 -0
  1649. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue937_reward_stress_json_schema.py +0 -0
  1650. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue939_ui_body_cap.py +0 -0
  1651. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue942_audit_learning_rate.py +0 -0
  1652. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue944_sweep_nonfinite.py +0 -0
  1653. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue953_mcp_choices.py +0 -0
  1654. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue968_bnb_nf4_path_divergence.py +0 -0
  1655. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue971_async_disk_source.py +0 -0
  1656. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue971_read_ahead_config.py +0 -0
  1657. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue971_safetensors_reader.py +0 -0
  1658. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue974_direct_range_reads.py +0 -0
  1659. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue975_backward_tail_embed_prefetch.py +0 -0
  1660. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue979_documented_cli_flags_exist.py +0 -0
  1661. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue99_apple_monitor.py +0 -0
  1662. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_issue_triage_labels.py +0 -0
  1663. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_jinja_analyzer.py +0 -0
  1664. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_judge_key_scoping.py +0 -0
  1665. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_kto.py +0 -0
  1666. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_l2l_probe_harness.py +0 -0
  1667. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_lambda_submit_interrupt.py +0 -0
  1668. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_loader.py +0 -0
  1669. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_loader_media_paths_parity.py +0 -0
  1670. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_local_hf_snapshot_path.py +0 -0
  1671. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_local_request_guard.py +0 -0
  1672. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_log_level.py +0 -0
  1673. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_loss_watchdog.py +0 -0
  1674. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_mcp_capacity_all_runs.py +0 -0
  1675. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_mcp_digest_no_follow.py +0 -0
  1676. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_mcp_execute.py +0 -0
  1677. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_mcp_plan_inputs.py +0 -0
  1678. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_mcp_post_spawn_failure.py +0 -0
  1679. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_mcp_snapshot_run_directory.py +0 -0
  1680. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_merge.py +0 -0
  1681. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_migrate.py +0 -0
  1682. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_mii_serve.py +0 -0
  1683. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_mlx_backend.py +0 -0
  1684. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_mlx_dispatch.py +0 -0
  1685. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_mlx_max_grad_norm.py +0 -0
  1686. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_modal_stub_outputs.py +0 -0
  1687. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_moe.py +0 -0
  1688. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_multi_adapter.py +0 -0
  1689. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_multi_gpu.py +0 -0
  1690. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_multipack_config.py +0 -0
  1691. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_multipack_ffd_placement.py +0 -0
  1692. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_multipack_invariants.py +0 -0
  1693. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_multipack_sampler.py +0 -0
  1694. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_neat_packing.py +0 -0
  1695. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_neftune_rslora.py +0 -0
  1696. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_no_committed_conflict_markers.py +0 -0
  1697. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_no_foreign_license_headers.py +0 -0
  1698. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_onnx_tensorrt_export.py +0 -0
  1699. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_orpo.py +0 -0
  1700. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_outbound_endpoint_ip_literals.py +0 -0
  1701. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_packing.py +0 -0
  1702. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_part_a_wave1.py +0 -0
  1703. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_part_a_wave2.py +0 -0
  1704. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_part_b.py +0 -0
  1705. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_part_c.py +0 -0
  1706. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_part_d.py +0 -0
  1707. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_part_e.py +0 -0
  1708. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_part_f_hardening.py +0 -0
  1709. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_peft_methods.py +0 -0
  1710. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_peft_patches.py +0 -0
  1711. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_performance.py +0 -0
  1712. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_pissa_init.py +0 -0
  1713. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_plotext_compat.py +0 -0
  1714. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_ppo.py +0 -0
  1715. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_preference_dispatcher.py +0 -0
  1716. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_preference_multi.py +0 -0
  1717. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_preference_multi_runtime.py +0 -0
  1718. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_pretrain.py +0 -0
  1719. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_profile.py +0 -0
  1720. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_profiling.py +0 -0
  1721. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_progress.py +0 -0
  1722. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_push.py +0 -0
  1723. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_qat.py +0 -0
  1724. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_quality_filter.py +0 -0
  1725. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_quant_check.py +0 -0
  1726. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_quant_menu.py +0 -0
  1727. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_quickstart.py +0 -0
  1728. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_qwen35_streaming.py +0 -0
  1729. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_rank_pattern.py +0 -0
  1730. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_readme_translation_sync.py +0 -0
  1731. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_recipe_count_is_synced.py +0 -0
  1732. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_recipe_sizes.py +0 -0
  1733. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_recipes.py +0 -0
  1734. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_recipes_v031.py +0 -0
  1735. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_refusal_multilingual.py +0 -0
  1736. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_registry.py +0 -0
  1737. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_relora.py +0 -0
  1738. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_replay.py +0 -0
  1739. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_requires_python_bound.py +0 -0
  1740. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_resume.py +0 -0
  1741. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_resume_trainable_dtype.py +0 -0
  1742. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_review_fixes_v07133.py +0 -0
  1743. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_rewind_command.py +0 -0
  1744. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_rewind_hf.py +0 -0
  1745. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_rewind_log.py +0 -0
  1746. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_rewind_mlx.py +0 -0
  1747. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_rewind_wiring.py +0 -0
  1748. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_rlvr.py +0 -0
  1749. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_run_cost.py +0 -0
  1750. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_runs.py +0 -0
  1751. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_runs_clean_keep_weights.py +0 -0
  1752. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_safe_regex.py +0 -0
  1753. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_semantic_split.py +0 -0
  1754. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_serve.py +0 -0
  1755. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_serve_local_request_guard.py +0 -0
  1756. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_serve_non_loopback_notice.py +0 -0
  1757. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_server_generate.py +0 -0
  1758. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_sglang_serve.py +0 -0
  1759. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_sglang_trust_contract.py +0 -0
  1760. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_simpo.py +0 -0
  1761. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_smoke_train.py +0 -0
  1762. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_speculative_decoding.py +0 -0
  1763. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_stream_multi_gpu_guard.py +0 -0
  1764. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_sweep.py +0 -0
  1765. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_symlink_skips_are_capability_based.py +0 -0
  1766. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_sync_recipe_count.py +0 -0
  1767. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_synth_data_pro.py +0 -0
  1768. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_telemetry_ssrf.py +0 -0
  1769. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_templates_yaml.py +0 -0
  1770. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_tensorboard.py +0 -0
  1771. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_terminal_c1_controls.py +0 -0
  1772. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_terminal_output_hygiene.py +0 -0
  1773. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_tool_calling.py +0 -0
  1774. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_trace_to_pref.py +0 -0
  1775. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_tracker.py +0 -0
  1776. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_train_diagnose_gate_terminal_output.py +0 -0
  1777. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_train_extra_declares_requests.py +0 -0
  1778. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_train_gpus_exit_code.py +0 -0
  1779. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_trainer_coverage_v035.py +0 -0
  1780. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_trainer_init.py +0 -0
  1781. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_training_intelligence.py +0 -0
  1782. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_training_speed.py +0 -0
  1783. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_trl_preference_config_contract.py +0 -0
  1784. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_trl_version_compat.py +0 -0
  1785. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_trust_remote_code.py +0 -0
  1786. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_tui.py +0 -0
  1787. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_typer_defaults_do_not_leak.py +0 -0
  1788. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_ui.py +0 -0
  1789. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_ui_chat.py +0 -0
  1790. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_ui_config_builder.py +0 -0
  1791. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_ui_live_monitor.py +0 -0
  1792. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_ui_metrics.py +0 -0
  1793. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_ui_rendering_escapes.py +0 -0
  1794. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_ui_security_headers.py +0 -0
  1795. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_ui_training_log_panel.py +0 -0
  1796. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_unsloth.py +0 -0
  1797. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0401_part_c.py +0 -0
  1798. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0401_part_d.py +0 -0
  1799. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0401_part_e.py +0 -0
  1800. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0402_part_a.py +0 -0
  1801. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0402_part_b.py +0 -0
  1802. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0403_part_a.py +0 -0
  1803. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0403_part_b.py +0 -0
  1804. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0403_part_c.py +0 -0
  1805. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0404_part_a.py +0 -0
  1806. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0404_part_b.py +0 -0
  1807. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0405_part_a.py +0 -0
  1808. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0406_part_a.py +0 -0
  1809. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0410_part_a.py +0 -0
  1810. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0410_part_b.py +0 -0
  1811. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0410_part_c.py +0 -0
  1812. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0420.py +0 -0
  1813. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0430_part_a.py +0 -0
  1814. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0430_part_b.py +0 -0
  1815. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0430_part_c.py +0 -0
  1816. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0430_part_d.py +0 -0
  1817. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0440_part_a.py +0 -0
  1818. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0440_part_b.py +0 -0
  1819. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0440_part_c.py +0 -0
  1820. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0440_part_d.py +0 -0
  1821. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0440_review_followups.py +0 -0
  1822. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0450.py +0 -0
  1823. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0460_part_a.py +0 -0
  1824. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0460_part_b.py +0 -0
  1825. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0470_part_a.py +0 -0
  1826. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0470_part_b.py +0 -0
  1827. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0480_part_a.py +0 -0
  1828. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0480_part_b.py +0 -0
  1829. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0490.py +0 -0
  1830. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0500_part_a.py +0 -0
  1831. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0500_part_b.py +0 -0
  1832. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0500_part_c.py +0 -0
  1833. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0500_part_d.py +0 -0
  1834. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0500_part_e.py +0 -0
  1835. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0510.py +0 -0
  1836. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0520.py +0 -0
  1837. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0530.py +0 -0
  1838. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v05310.py +0 -0
  1839. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v05311.py +0 -0
  1840. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0531_109.py +0 -0
  1841. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0531_139.py +0 -0
  1842. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0531_142.py +0 -0
  1843. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0531_82.py +0 -0
  1844. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0532.py +0 -0
  1845. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0533.py +0 -0
  1846. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0534.py +0 -0
  1847. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0535.py +0 -0
  1848. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0536.py +0 -0
  1849. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0537.py +0 -0
  1850. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0538.py +0 -0
  1851. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0539.py +0 -0
  1852. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0540.py +0 -0
  1853. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0550.py +0 -0
  1854. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0550_followups.py +0 -0
  1855. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0560.py +0 -0
  1856. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0570_part_a.py +0 -0
  1857. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0570_part_b.py +0 -0
  1858. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0570_part_c.py +0 -0
  1859. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0570_part_d.py +0 -0
  1860. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0580.py +0 -0
  1861. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0590.py +0 -0
  1862. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0600_part_a.py +0 -0
  1863. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0600_part_b.py +0 -0
  1864. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0600_part_c.py +0 -0
  1865. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0600_part_d.py +0 -0
  1866. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0600_part_e.py +0 -0
  1867. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0600_part_f.py +0 -0
  1868. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0610_part_a.py +0 -0
  1869. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0610_part_b.py +0 -0
  1870. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0610_part_c.py +0 -0
  1871. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0610_part_d.py +0 -0
  1872. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0610_part_e.py +0 -0
  1873. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0620_followups.py +0 -0
  1874. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0620_part_a.py +0 -0
  1875. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0620_part_b.py +0 -0
  1876. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0620_part_c.py +0 -0
  1877. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0620_part_d.py +0 -0
  1878. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0620_part_e.py +0 -0
  1879. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0630_followups.py +0 -0
  1880. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0630_part_a.py +0 -0
  1881. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0630_part_b.py +0 -0
  1882. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0630_part_c.py +0 -0
  1883. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0630_part_d.py +0 -0
  1884. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0630_part_e.py +0 -0
  1885. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0631_206.py +0 -0
  1886. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0640_followups.py +0 -0
  1887. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0640_part_a.py +0 -0
  1888. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0640_part_b.py +0 -0
  1889. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0640_part_c.py +0 -0
  1890. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0640_part_d.py +0 -0
  1891. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0640_part_e.py +0 -0
  1892. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0640_part_f.py +0 -0
  1893. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0650_followups.py +0 -0
  1894. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0650_part_a.py +0 -0
  1895. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0650_part_b.py +0 -0
  1896. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0650_part_c.py +0 -0
  1897. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0650_part_d.py +0 -0
  1898. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0650_part_e.py +0 -0
  1899. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0660_cli.py +0 -0
  1900. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0660_followups.py +0 -0
  1901. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0660_part_a.py +0 -0
  1902. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0660_part_b.py +0 -0
  1903. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0660_part_c.py +0 -0
  1904. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0660_part_d.py +0 -0
  1905. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0660_part_e.py +0 -0
  1906. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0670_followups.py +0 -0
  1907. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0670_part_a.py +0 -0
  1908. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0670_part_b.py +0 -0
  1909. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0670_part_c.py +0 -0
  1910. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0670_part_d.py +0 -0
  1911. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0670_part_e.py +0 -0
  1912. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0670_part_f.py +0 -0
  1913. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0680_followups.py +0 -0
  1914. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0680_part_a.py +0 -0
  1915. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0680_part_b.py +0 -0
  1916. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0680_part_c.py +0 -0
  1917. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0680_part_d.py +0 -0
  1918. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0680_part_e.py +0 -0
  1919. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0690_part_a.py +0 -0
  1920. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0690_part_b.py +0 -0
  1921. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0690_part_c.py +0 -0
  1922. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0690_part_d.py +0 -0
  1923. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0690_part_e.py +0 -0
  1924. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0700_part_a.py +0 -0
  1925. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0700_part_b.py +0 -0
  1926. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0700_part_c.py +0 -0
  1927. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0700_part_d.py +0 -0
  1928. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0700_part_e.py +0 -0
  1929. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0700_part_f.py +0 -0
  1930. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07110.py +0 -0
  1931. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07111.py +0 -0
  1932. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07112.py +0 -0
  1933. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07113.py +0 -0
  1934. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07114.py +0 -0
  1935. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07115.py +0 -0
  1936. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07116.py +0 -0
  1937. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07117.py +0 -0
  1938. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07118.py +0 -0
  1939. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07119.py +0 -0
  1940. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0712.py +0 -0
  1941. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07120.py +0 -0
  1942. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07121.py +0 -0
  1943. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07122.py +0 -0
  1944. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07123.py +0 -0
  1945. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07124.py +0 -0
  1946. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07125.py +0 -0
  1947. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07126.py +0 -0
  1948. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07127.py +0 -0
  1949. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07128.py +0 -0
  1950. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07129.py +0 -0
  1951. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0713.py +0 -0
  1952. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07130.py +0 -0
  1953. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07131.py +0 -0
  1954. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07132.py +0 -0
  1955. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07133.py +0 -0
  1956. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07134.py +0 -0
  1957. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07135.py +0 -0
  1958. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07136.py +0 -0
  1959. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07137.py +0 -0
  1960. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07138.py +0 -0
  1961. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07139.py +0 -0
  1962. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0714.py +0 -0
  1963. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07140.py +0 -0
  1964. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07141.py +0 -0
  1965. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07141_telemetry_prompt.py +0 -0
  1966. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0715.py +0 -0
  1967. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0716.py +0 -0
  1968. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0717.py +0 -0
  1969. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0718.py +0 -0
  1970. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0719.py +0 -0
  1971. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07200.py +0 -0
  1972. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07201.py +0 -0
  1973. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07202.py +0 -0
  1974. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07203.py +0 -0
  1975. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07204.py +0 -0
  1976. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07300.py +0 -0
  1977. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v07302.py +0 -0
  1978. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_v0760_release_review.py +0 -0
  1979. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_val_loss_end_to_end.py +0 -0
  1980. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_validator.py +0 -0
  1981. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_version_sync.py +0 -0
  1982. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_vision.py +0 -0
  1983. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_vllm_serve.py +0 -0
  1984. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_warmup.py +0 -0
  1985. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_why.py +0 -0
  1986. {soup_cli-0.76.0 → soup_cli-0.76.1}/tests/test_windows_encoding.py +0 -0
@@ -0,0 +1,25 @@
1
+ # #571 — exact pins for the dedicated dependency-floor CI job.
2
+ # Qwen3.8-Flash-Next text loading establishes Transformers 5.16.1 as Soup's
3
+ # declared training floor. trl 0.29 is the first release that does not import the
4
+ # Transformers private availability helper whose v5 return type broke trl 0.28.
5
+ # Torch 2.6.0 deliberately exercises Qwen4-Exp's legacy int64-only scatter path.
6
+ # Plotext 6.0.0 is pinned here so one CI cell exercises the real Figure API rather
7
+ # than relying only on the fake 5.x/6.x contract doubles in the unit suite.
8
+ torch==2.6.0
9
+ torchaudio==2.6.0
10
+ transformers==5.16.1
11
+ trl==0.29.0
12
+ peft==0.20.0
13
+ plotext==6.0.0
14
+ # #1802 — the declared floors of the CLI's own framework, so one CI cell starts the
15
+ # CLI on them: `typer>=0.9.0` stayed declared while no command could run below
16
+ # 0.12.4, and nothing noticed because every cell resolved the newest Typer. These two
17
+ # pins must equal the floors in pyproject.toml's [project] dependencies
18
+ # (tests/test_cli_dependency_floors.py refuses a pin that differs), and the job runs
19
+ # that file to build the command tree and render every help page under them.
20
+ # Side effect, intended: huggingface-hub requires typer>=0.20.0 from 1.14.0 and
21
+ # click>=8.4.0 from 1.17.0, so under these pins the cell resolves huggingface-hub
22
+ # 1.13.0 (and the newest datasets that accepts it, 5.0.1 on 2026-10-13) — the low
23
+ # corner of the declared ranges, where every other cell runs the high one.
24
+ typer==0.15.4
25
+ click==8.0.0
@@ -454,6 +454,10 @@ jobs:
454
454
  # #502/#503/#522/#571/#651: install the exact Torch 2.6.0 / Transformers 5.16.1 /
455
455
  # trl 0.29 / PEFT 0.20 support stack and Plotext 6.0.0 so pip cannot silently
456
456
  # upgrade the cell, then assert every pinned compatibility boundary.
457
+ # #1802: the same file pins Typer and Click to the floors pyproject.toml declares,
458
+ # and the last step starts the CLI on them. It is the one cell that does: every
459
+ # other cell resolves the newest Typer, which is how a floor no command could run
460
+ # on stayed declared. The job keeps its name; branch protection requires it.
457
461
  transformers-floor:
458
462
  needs: plan
459
463
  if: needs.plan.outputs.full == 'true'
@@ -488,7 +492,10 @@ jobs:
488
492
  )
489
493
  expected = dict(pairs)
490
494
  assert len(expected) == len(pairs), "duplicate package pin in floor constraints"
491
- for name in ("torch", "torchaudio", "transformers", "trl", "peft", "plotext"):
495
+ for name in (
496
+ "torch", "torchaudio", "transformers", "trl", "peft", "plotext",
497
+ "typer", "click", # #1802: the CLI's own declared floors
498
+ ):
492
499
  assert name in expected, f"floor constraints missing exact {name} pin"
493
500
  want = expected[name]
494
501
  got = md.version(name)
@@ -528,6 +535,9 @@ jobs:
528
535
  tests/test_bugfixes.py::TestDiffModelLoading
529
536
  tests/test_issue636_torch_floor.py
530
537
  tests/test_issue265_xcodec2_audio_contract.py
538
+ tests/test_cli_dependency_floors.py
539
+ tests/test_click_argument_help.py
540
+ tests/test_cli_startup_is_light.py
531
541
 
532
542
  test:
533
543
  needs: plan
@@ -12,6 +12,42 @@ reproducing 70+ versions of notes.
12
12
 
13
13
  ## [Unreleased]
14
14
 
15
+ ## [0.76.1] - 2026-10-14
16
+
17
+ ### Changed
18
+
19
+ - **The README and the performance docs now state the 8B NF4 figure with its SM clock and give the post-#331 row, and no longer say the re-measurement is pending (#1207, in #1699).** Llama-3.1-8B-Instruct NF4 on an RTX 3050 Laptop 4 GB reads **119.6 tok/s at 952 MHz in a 3.32 GB peak** before the #331 repair and **208.6 tok/s at 1935–1957 MHz in a 2.40 GB peak** after it, the second row measured by @umran666 (#1103). The two are not directly comparable: 59% against 68% of the same-session GEMM ceiling is about 14% slower per unit clock, so the raw 1.74x gain is the clock, not a speedup, and large-layer streaming changed the memory pattern between the rows, so even the fraction is not like-for-like. Changed: the headline, the GIF alt text and caption and the preprint bullet (Citing Soup) in `README.md`, and the table row, the headline and the large-layer paragraph in `docs/performance-and-quantization.md`. The four README translations (`README.tr.md`, `README.ar.md`, `README.ja.md`, `README.zh.md`) carry the same sentences, with every number, link and code span kept identical, and are re-stamped; their prose is a machine-assisted draft for the translation maintainers to polish. The preprint (DOI 10.5281/zenodo.21771064) is not edited in place; #1207 tracks its amendment as a new version.
20
+
21
+ - **The "What's New" block of `README.tr.md`, `README.ar.md`, `README.ja.md` and `README.zh.md`
22
+ now describes v0.76.0 (#1825).** All four still described v0.75.0. The new text follows the
23
+ block in `README.md` bullet by bullet, with every inline code span, command, flag, config key,
24
+ URL, link target, number and benchmark file name kept identical; the prose is a machine-assisted
25
+ draft for the translation maintainers to polish. This change moves no `synced-from` stamp,
26
+ because the section is exempt from them; the stamps of the four files were re-taken by #1699 in
27
+ the same release.
28
+
29
+ - soup.yaml and every other YAML file Soup reads go through one loader that applies the same nesting and expansion limits (100 levels of nesting; one node per source byte plus 10,000 for anchors, aliases and merge keys, with merge keys chained at most 100 levels), and each reader keeps its own size cap: 1 MiB for the training-config readers and for readers that had no cap before, 256 KiB for recipes, `export --quant-config` files, RA-DIT configs and sweep files, 5 MiB for agent specs, 16 MiB for can manifests, 64 KiB for README frontmatter, 4 MiB for the config read by `soup ship`. A soup.yaml that is over a limit, cannot be read or is not valid YAML is refused with one line naming the file and the problem; the other readers report through their own handlers. The audit log now finds credential options from the command tree and also masks long options by name, so the values of `--slack-url` and `--discord-url` are masked and `--min-tokens`, a length threshold, is no longer masked (#1827).
30
+
31
+ - **The Typer floor is `typer>=0.15.4`, and one CI cell now starts the CLI on the declared Typer
32
+ and Click floors (#1858).** `typer>=0.9.0` was declared while no command could run below Typer
33
+ 0.12.4: the command tree did not build (`RuntimeError: Type not yet supported: int | None`), so
34
+ `soup --help` and `soup version` failed with everything else. Typer 0.12.4 - 0.15.3 start the
35
+ CLI only next to Click 8.1 or older and do not ask for it, so a resolver paired them with a
36
+ Click on which every help page raised. 0.15.4 is the lowest Typer that works with any Click it
37
+ can be installed with; `click>=8.0.0` was measured again and holds. A fresh install is
38
+ unchanged, since a resolver already picks the newest Typer. An environment that holds an older
39
+ Typer now has it upgraded, or the conflict named, at install time, where before the install
40
+ succeeded and the first command failed; `soup doctor` reports such a Typer as outdated. The
41
+ `transformers-floor` CI job installs exactly the two declared floors, builds the command tree,
42
+ renders every help page and runs `soup version` under them, and a test fails when a declared
43
+ floor and that job's pin differ (#1802).
44
+
45
+ ### Fixed
46
+
47
+ - **`task: dpo`, `ipo`, `bco` and `preference` train on the bundled DPO examples again.** Both files (`examples/data/dpo_sample.jsonl`, `examples/data/chat_preferences.jsonl`) and any dataset written the same way, a string `prompt` beside `chosen` / `rejected` message lists that repeat the user turn, failed inside trl after the model had loaded, with an error that changed with `PYTHONHASHSEED` (`'list' object has no attribute 'endswith'`, or a `TypeError`). The `dpo` and `kto` converters now hand the trainer every preference row in one layout: all strings, or all message lists with the prompt turns in `prompt` only. `reward_model` no longer trains on a text with the question in it twice, and `orpo` and `simpo` prepare the same tokens as before. A row that cannot be written that way (one answer a string and the other a message list, a malformed message, no prompt to be found) is dropped at load with a reason that names the field, and a dataset that mixes text rows with conversational ones loads as conversations, with a note. A string `prompt` beside message-list answers is not read when the two answers share leading turns: those turns are the prompt, as `orpo` and `simpo` already read such a row, so a question written only in that string has to be in the conversations as well (#1849 by @dryn85-max in #1866).
48
+
49
+ - A single-string `data.train` that names a Hub dataset with a dot in its name (`teknium/OpenHermes-2.5`, `org/name.v1`) is now loaded from the Hub instead of failing with `Data file not found`: the loader read the dot as a file extension. A single string now takes the same route as the same name inside a `data.train` list: a supported file extension (`.jsonl`, `.json`, `.csv`, `.parquet`, `.txt`) means a local file, a `://` string a remote URI, anything else a Hub id. A path with an unsupported suffix that does not exist (a typo such as `data/train.jsnol`) therefore goes to the Hub lookup too, instead of `Data file not found`, while an existing file with an unsupported suffix (`data.tsv`) still gets `Unsupported file format` (#1889).
50
+
15
51
  ## [0.76.0] - 2026-10-12
16
52
 
17
53
  ### Added
@@ -1369,7 +1405,7 @@ control characters in rejected values are escaped (#953 by @shubhambhar007 in #9
1369
1405
  `soup data pii` and `soup data score` (#1329 by @taljeon in #1360).
1370
1406
  - Email snippets now follow the bounded local-part match, so leading punctuation
1371
1407
  and punctuation-adjacent addresses may produce different snippet spans; row-level
1372
- detection remains unchanged.
1408
+ detection remains unchanged (#1329 by @taljeon in #1360).
1373
1409
 
1374
1410
  - **Refuse incompatible pre-tokenized data transformations.** Soup data preprocessing does not apply non-text modality transforms (vision/audio/audio_out), `data.add_new_tokens`, `data.new_special_tokens`, or `data.prompt_strategy` to cached ids, so those combinations are refused at config load (#1273 by @Samearth17 in #1363)
1375
1411
 
@@ -1491,7 +1527,8 @@ control characters in rejected values are escaped (#953 by @shubhambhar007 in #9
1491
1527
  not given, so these rules apply without the flag too, and to `soup bench`,
1492
1528
  which loads through `soup infer`. On a CPU-only host the model now loads in
1493
1529
  `float32` pinned to the CPU instead of `"auto"`/`float16`, which doubles its
1494
- RAM use (a 7B model needs about 28 GB instead of 14 GB).
1530
+ RAM use (a 7B model needs about 28 GB instead of 14 GB) (#1443 by @drakeo338 in
1531
+ #1460).
1495
1532
 
1496
1533
  - **`soup expect` refuses suite keys and argument names an expectation does not take, instead of running it on its defaults (#1428 by @Srinivasan8888 in #1461).**
1497
1534
  `parse_suite_spec` read only `name` and `args` and dropped every other key, and the dispatcher read arguments with `args.get(key, default)`, so the `min_tokens` / `max_tokens` example in `docs/compliance.md` (written beside `name` instead of under `args:`) and a misspelled argument such as `max_token` both ran `expect_token_length_between` on its defaults of 1 and 1,048,576 tokens and passed a 5000-token row with exit 0. A key beside `name` or an argument the expectation does not take is now refused when the suite loads (exit 3, before the data file is opened), with the key named and either "belongs under `args:`" or the nearest valid name; `min_tokens` / `max_tokens` / `threshold` are validated at parse time too. The `docs/compliance.md` example moves to the `args:` form. A suite that carried one of these keys now exits 3 on its next run, which is the point.
@@ -2028,7 +2065,7 @@ control characters in rejected values are escaped (#953 by @shubhambhar007 in #9
2028
2065
 
2029
2066
  ### Security
2030
2067
 
2031
- - Hardening of outbound endpoint validation. A security advisory with details and upgrade guidance will be published alongside this release.
2068
+ - Hardening of outbound endpoint validation — [GHSA-9f49-hqpf-c849](https://github.com/MakazhanAlpamys/Soup/security/advisories/GHSA-9f49-hqpf-c849). The advisory has the details and upgrade guidance.
2032
2069
 
2033
2070
  ## [0.75.1] - 2026-09-21
2034
2071
 
@@ -6684,7 +6721,8 @@ what a fine-tune forgets and leaks.
6684
6721
  `SECURITY.md` (~220 KB). `SECURITY.md` is now a concise security policy; the
6685
6722
  detailed hardening notes remain in git history and the GitHub Releases notes.
6686
6723
 
6687
- [Unreleased]: https://github.com/MakazhanAlpamys/Soup/compare/v0.76.0...HEAD
6724
+ [Unreleased]: https://github.com/MakazhanAlpamys/Soup/compare/v0.76.1...HEAD
6725
+ [0.76.1]: https://github.com/MakazhanAlpamys/Soup/compare/v0.76.0...v0.76.1
6688
6726
  [0.76.0]: https://github.com/MakazhanAlpamys/Soup/compare/v0.75.2...v0.76.0
6689
6727
  [0.75.2]: https://github.com/MakazhanAlpamys/Soup/compare/v0.75.1...v0.75.2
6690
6728
  [0.75.1]: https://github.com/MakazhanAlpamys/Soup/compare/v0.75.0...v0.75.1
@@ -122,6 +122,7 @@ src/soup_cli/
122
122
  monitoring/ - Callbacks and live dashboard
123
123
  experiment/ - SQLite experiment tracking
124
124
  eval/ - Eval platform (custom tasks, LLM judge, human eval, leaderboard)
125
+ bench/ - Benchmark instruments behind `soup bench train` (collector, train_report, train_run) (#836)
125
126
  migrate/ - Config migration (LLaMA-Factory, Axolotl, Unsloth)
126
127
  recipes/ - Ready-made configs for popular models (170 recipes)
127
128
  autopilot/ - Zero-config decision engine (v0.25.0)
@@ -289,51 +290,51 @@ Accepted runs are recorded in [`benchmarks/gpu-test-runs.md`](benchmarks/gpu-tes
289
290
  | test_inference_advanced.py | Inference Excellence: prefix caching, spec-decoding auto-pairing, LoRA hot-swap, structured output, dashboard + /metrics, OpenTelemetry tracing (v0.30.0) |
290
291
  | test_recipes_v031.py | Model & Recipe Breadth: 34 new recipes (vision/audio/reasoning/edge/domain/multimodal); catalog-wide invariants; CI workflow validation (v0.31.0) |
291
292
  | test_auto_tuning.py | Training Stability & Auto-Tuning: LR range finder, grad-accum monitor, auto mixed-precision, auto warmup, spike recovery, convergence detector, autopilot wiring (v0.32.0) |
292
- | test_part_f_hardening.py | Live Wire Part F: RLVR OS-level sandbox isolation + prune_checkpoints TOCTOU (v0.33.0) |
293
- | test_part_a_wave1.py | Live Wire Part A: live eval-gate scoring + registry attach (v0.33.0) |
294
- | test_part_a_wave2.py | Live Wire Part A: soup can run / publish + DeployTarget schema (v0.33.0) |
295
- | test_part_e.py | Live Wire Part E: --find-lr live loop + spike recovery hint + auto mixed-precision push + grad-accum advisory (v0.33.0) |
296
- | test_part_d.py | Historical Part D primitives: structured-output LogitsProcessor + HF push integration smoke (v0.33.0) |
297
- | test_part_c.py | Live Wire Part C: multi-trainer v0.28.0 features + selective ckpt hooks + CrossDocCollator (v0.33.0) |
298
- | test_part_b.py | Live Wire Part B: auto-reexec under accelerate launch + DeepSpeed-MII live serve (v0.33.0) |
299
- | test_log_level.py | Smart logging tiers `--log-level quiet/normal/verbose/debug` (v0.34.0 Part A) |
300
- | test_run_cost.py | Per-run cost: GPU-rate lookup + estimate + format + tracker integration (v0.34.0 Part B) |
301
- | test_why.py | `soup why` heuristic explainer: NaN / plateau / divergence / grad-norm / LR bounds (v0.34.0 Part C) |
302
- | test_crash_reporter.py | `.crash` bundle: classify, redact secrets, write under cwd, oversize truncation (v0.34.0 Part D) |
303
- | test_replay.py | `soup runs replay`: summarise + downsample + CLI rendering (v0.34.0 Part E) |
304
- | test_profiling.py | Auto-profiling: ProfilerSchedule + path containment + torch-less degradation (v0.34.0 Part F) |
305
- | test_tui.py | `soup tui`: CLI bounds + missing-textual error + row builders (v0.34.0 Part G) |
306
- | test_trainer_coverage_v035.py | Multi-trainer v0.28.0 wiring smoke matrix: every trainer × every speed/memory feature + benchmark_kernel_combos + schema-gate lift (v0.35.0 Parts A / B / C / D — #60, #61, #45) |
293
+ | test_part_f_hardening.py | Live Wire hardening: RLVR OS-level sandbox isolation + prune_checkpoints TOCTOU (v0.33.0) |
294
+ | test_part_a_wave1.py | Live Wire: live eval-gate scoring + registry attach (v0.33.0) |
295
+ | test_part_a_wave2.py | Live Wire: soup can run / publish + DeployTarget schema (v0.33.0) |
296
+ | test_part_e.py | Live Wire: --find-lr live loop + spike recovery hint + auto mixed-precision push + grad-accum advisory (v0.33.0) |
297
+ | test_part_d.py | Historical Live Wire primitives: structured-output LogitsProcessor + HF push integration smoke (v0.33.0) |
298
+ | test_part_c.py | Live Wire: multi-trainer v0.28.0 features + selective ckpt hooks + CrossDocCollator (v0.33.0) |
299
+ | test_part_b.py | Live Wire: auto-reexec under accelerate launch + DeepSpeed-MII live serve (v0.33.0) |
300
+ | test_log_level.py | Smart logging tiers `--log-level quiet/normal/verbose/debug` (v0.34.0) |
301
+ | test_run_cost.py | Per-run cost: GPU-rate lookup + estimate + format + tracker integration (v0.34.0) |
302
+ | test_why.py | `soup why` heuristic explainer: NaN / plateau / divergence / grad-norm / LR bounds (v0.34.0) |
303
+ | test_crash_reporter.py | `.crash` bundle: classify, redact secrets, write under cwd, oversize truncation (v0.34.0) |
304
+ | test_replay.py | `soup runs replay`: summarise + downsample + CLI rendering (v0.34.0) |
305
+ | test_profiling.py | Auto-profiling: ProfilerSchedule + path containment + torch-less degradation (v0.34.0) |
306
+ | test_tui.py | `soup tui`: CLI bounds + missing-textual error + row builders (v0.34.0) |
307
+ | test_trainer_coverage_v035.py | Multi-trainer v0.28.0 wiring smoke matrix: every trainer × every speed/memory feature + benchmark_kernel_combos + schema-gate lift (v0.35.0 — #60, #61, #45) |
307
308
  | test_v0470_part_a.py | Synthetic Data Forge: ForgePlan / ProvenanceRecord / ForgeRow frozen dataclasses + VALID_TASKS allowlist + chunk_document + score_uncertainty + discover_documents (cwd-contained, symlink-rejecting, extension allowlist) + build_forge_plan validators (task / target_rows / teacher / NaN+Inf threshold) + synthesise_forge_rows (judge-exception swallow at DEBUG) + write_forge_dataset + write_provenance (atomic, TOCTOU-safe) + CLI smoke (v0.47.0) |
308
309
  | test_v0470_part_b.py | Data Quality Moat: BENCHMARKS MappingProxyType + ScoreReport frozen + ngram_set / ngram_overlap_ratio / decontaminate_rows (containment ratio) + detect_pii (ReDoS-hardened regexes + 50 KB pre-cap) + detect_language (6-language stopword heuristic) + score_toxicity (keyword baseline) + score_educational_value + compute_scorecard + load_jsonl_rows / write_jsonl_rows (cwd-contained, symlink-rejecting, atomic) + CLI smoke per subcommand (v0.47.0) |
309
310
  | test_v0480_part_a.py | Curriculum-Aware Trainer (BETA): DynamicCurriculumPolicy frozen + bounds; compute_bucket_weights softmax + water-fill (floor-strict invariant); validate_distributed_curriculum DDP gate; render_curve + parse_history_jsonl with 100k-row DoS cap; SoupConfig cross-validators (requires-curriculum / mlx-rejected / non-SFT-rejected / floor ≤ 1/buckets); `soup runs curriculum-curve` CLI (TOCTOU symlink reject + 50 MB cap + corrupt-JSONL exit 2) (v0.48.0) |
310
311
  | test_v0490.py | v0.49.0 Long Context & Architecture: YaRN math kernels (yarn_find_correction_dim / yarn_find_correction_range / yarn_linear_ramp_mask / yarn_get_mscale — bool/NaN/Inf rejection, auto-disambiguated low==high); YaRN schema fields (yarn_factor / yarn_attn_factor / yarn_beta_fast / yarn_beta_slow) + cross-validator rejecting yarn fields without rope_scaling_type=yarn; Dynamic NTK harden + verify; LongLoRA schema gate (Llama-family + sft + transformers + !ring_attn); `is_llama_model` word-boundary regex (mirrors v0.39.0 `is_gemma4_model` / v0.44.0 `is_llama4_model` policy); Llama 3.1 NTK-aware (`scale_inv_freq_llama3` smooth-transition / bool-rejected on every param / zero-`old_context_len` rejected; `detect_llama3_rope_in_config` with `rope_type` alias + explicit `is None` check); public-boundary input validation on `get_rope_scaling_config` (target_length / original_length / yarn_factor — security review fix) (v0.49.0) |
311
312
  | test_v0480_part_b.py | Data Mixing Optimizer (BETA): parse_budget (digits + s/m/h suffix [60s, 24h]) + validate_datasets (containment + symlink + dedup + 32-cap) + MixCandidate (simplex + finite + bool-rejected) + BudgetTracker (injectable clock) + run_mix_optimizer (isolated proxy failures + KeyboardInterrupt propagation + NaN skip + partial budget trip) + render_mix_recipe_yaml (YAML injection defence) + write_mix_recipe / load_mix_recipe (atomic + TOCTOU + 256 KB cap) + `soup data mix --optimize / --apply` CLI (v0.48.0) |
312
313
 
313
- | test_v0500_part_a.py | v0.50.0 Part A — GRPO objective variants (gspo / dapo / dr_grpo / bnpo / two_sided / rft / standard); closed allowlist + frozen `GRPOVariantSpec` + `MappingProxyType` immutability; `validate_grpo_variant` (bool / null-byte / oversize / unknown rejected); `validate_grpo_delta` (bool / NaN / Inf / out-of-range rejected); `apply_variant_loss` deferred-live stub; TrainingConfig integration (Literal accept + two_sided requires delta cross-validator + NaN/Inf field_validator) (v0.50.0 Part A) |
314
- | test_v0500_part_b.py | v0.50.0 Part B — Long-context GRPO + vLLM sleep; `validate_long_context_grpo_compat` (task / backend / ring-attention exclusivity + null-byte + bool guards); `validate_vllm_sleep_mode_compat` (transformers / unsloth allowlist + null-byte); `apply_vllm_sleep_mode` deferred stub with v0.50.1 marker; SoupConfig integration (vllm_sleep_mode requires task='grpo' — code-review HIGH fix) (v0.50.0 Part B) |
315
- | test_v0500_part_c.py | v0.50.0 Part C — Multi-turn agent rollout backend allowlist (art / ruler / nemo_gym / openenv); frozen `RolloutBackendSpec` + `MappingProxyType` immutability; `validate_rollout_backend` (bool rejected); `required_rollout_package` per-entry mapping; `launch_rollout` deferred stub; SoupConfig task-gate + mlx rejection (v0.50.0 Part C) |
316
- | test_v0500_part_d.py | v0.50.0 Part D — 7 stability/efficiency knobs (`ref_model_ema_alpha` / `replay_buffer_size` / `async_grpo_prefetch` / `tis_threshold` / `mask_truncated_completions` / `defer_rerolling` / `skip_zero_advantage` / `off_policy_mask_threshold`); explicit bool-rejection field_validator across all numeric fields (tdd-guide HIGH fix); `mask_truncated_completions` requires `tis_threshold` cross-validator; SoupConfig task-gate naming every offending field; `grpo_fp16` task-gate (code-review HIGH fix) (v0.50.0 Part D) |
317
- | test_v0500_part_e.py | v0.50.0 Part E — `task='prm'` (Process Reward Model) + `vision_grpo` flag; `validate_prm_compat` (data.format / modality / mlx gates); `validate_vision_grpo_compat` (task ∈ {grpo, ppo} / modality='vision' / non-mlx); `build_prm_trainer` deferred stub; SoupConfig integration with all rejection paths exercised (v0.50.0 Part E) |
314
+ | test_v0500_part_a.py | v0.50.0 — GRPO objective variants (gspo / dapo / dr_grpo / bnpo / two_sided / rft / standard); closed allowlist + frozen `GRPOVariantSpec` + `MappingProxyType` immutability; `validate_grpo_variant` (bool / null-byte / oversize / unknown rejected); `validate_grpo_delta` (bool / NaN / Inf / out-of-range rejected); `apply_variant_loss` deferred-live stub; TrainingConfig integration (Literal accept + two_sided requires delta cross-validator + NaN/Inf field_validator) (v0.50.0) |
315
+ | test_v0500_part_b.py | v0.50.0 — Long-context GRPO + vLLM sleep; `validate_long_context_grpo_compat` (task / backend / ring-attention exclusivity + null-byte + bool guards); `validate_vllm_sleep_mode_compat` (transformers / unsloth allowlist + null-byte); `apply_vllm_sleep_mode` deferred stub with v0.50.1 marker; SoupConfig integration (vllm_sleep_mode requires task='grpo' — code-review HIGH fix) (v0.50.0) |
316
+ | test_v0500_part_c.py | v0.50.0 — Multi-turn agent rollout backend allowlist (art / ruler / nemo_gym / openenv); frozen `RolloutBackendSpec` + `MappingProxyType` immutability; `validate_rollout_backend` (bool rejected); `required_rollout_package` per-entry mapping; `launch_rollout` deferred stub; SoupConfig task-gate + mlx rejection (v0.50.0) |
317
+ | test_v0500_part_d.py | v0.50.0 — 7 stability/efficiency knobs (`ref_model_ema_alpha` / `replay_buffer_size` / `async_grpo_prefetch` / `tis_threshold` / `mask_truncated_completions` / `defer_rerolling` / `skip_zero_advantage` / `off_policy_mask_threshold`); explicit bool-rejection field_validator across all numeric fields (tdd-guide HIGH fix); `mask_truncated_completions` requires `tis_threshold` cross-validator; SoupConfig task-gate naming every offending field; `grpo_fp16` task-gate (code-review HIGH fix) (v0.50.0) |
318
+ | test_v0500_part_e.py | v0.50.0 — `task='prm'` (Process Reward Model) + `vision_grpo` flag; `validate_prm_compat` (data.format / modality / mlx gates); `validate_vision_grpo_compat` (task ∈ {grpo, ppo} / modality='vision' / non-mlx); `build_prm_trainer` deferred stub; SoupConfig integration with all rejection paths exercised (v0.50.0) |
318
319
  | test_v0520.py | v0.52.0 Modality II — TTS / classifier / distill / BitNet / EBFT-GDPO / MoE quant / reasoning_effort: TTS family allowlist + per-family emotion allowlists (Orpheus + Oute) + validate_tts_compat; classifier / reranker / cross_encoder tasks + num_labels (with field_validator bool guard) + label_names dedup + classifier-only field gates; distill divergence (kl alias canonicalised, Literal excludes alias) + teacher_model + distill_temperature bounds; BitNet 1.58 quant + bitnet/tq1_0 export-format stubs + Falcon-E recipe + is_bitnet_model org-prefix detect; EBFT (structured/strided) + GDPO (standard/length_normalized/margin) variant allowlists + task gates; MoE expert quant (nf4/int8_rowwise) + train_router_only requiring moe_lora=true; reasoning_effort + train_on_eot with SFT-family task gate; 6 new recipes (5 TTS + Falcon-E BitNet); review-fix coverage (num_labels bool guard, Oute emotion allowlist, lazy-import in classifier validator, task gates, oversize / NaN / Inf matrices). Test count: 272 (v0.52.0) |
319
320
  | test_v0531_82.py | v0.53.1 #82 autopilot pre-quantized detection: `detect_prequantized_format` + `decide_quantization(prequantized=...)` + `detect_prequantized_format_from_path` with cwd-containment + config.json symlink rejection + name/config aliases + word-boundary regex (v0.53.1) |
320
321
  | test_v0531_142.py | v0.53.1 #142 merge_4bit + export_torchao live wiring: BNB-4bit single-stage merge + TorchAO PTQ with per-scheme kwarg allowlist + CLI `--save-format` + `--quant-config` + `load_quant_config` (yaml.safe_load + 256 KB cap + extension allowlist) + path TOCTOU (v0.53.1) |
321
322
  | test_v0531_139.py | v0.53.1 #139 export_advanced_gguf live: 3-stage llama.cpp pipeline (convert → imatrix → quantize) + UD-prefix strip + subprocess argv shape + `_prepare_calibration_text` JSONL alias fallback + null-byte strip + 50 MB cap + POSIX O_NOFOLLOW + `_safe_stderr` Rich escape (v0.53.1) |
322
323
  | test_v0531_109.py | v0.53.1 #109 deploy autopilot --measure: `compute_cache_key` + `sha_of_file` + `measure_candidate` OK/MINOR/MAJOR bands + `pick_best` soft-fallback (max-by-delta) + cache round-trip with symlink rejection on load AND save + CLI integration + `_MAX_CANDIDATES=32` cap + `render_measure_table` markup escape regression (v0.53.1) |
323
- | test_v0530.py | v0.53.0 Quant Menu II — UD GGUFs + KV cache + NVFP4 + LF parity + save formats: Parts A+B GGUF (UD ladder 14 entries + IQ 12 + Apple/ARM 10 frozensets + non-overlap invariant + `validate_*` case-insensitive + rejection matrix + `is_advanced_gguf_format` union + `_LOWER_INDEX` O(1) lookup + MappingProxyType immutability + `validate_calibration_data_path` shape rejection + 4096-boundary + `export_advanced_gguf` v0.53.1 deferred stub); Part C KV cache (`KV_CACHE_TYPES` frozenset + `validate_kv_cache_type` case + bool/null/oversize/non-string rejection + `requires_hopper` delegates to spec + `get_kv_cache_spec` frozen + schema fp8-on-mlx rejected with specific message + q8_0-on-mlx allowed); Part D advanced precision (`fp8_attention` requires `quantization_aware='fp8'` BEFORE mlx-gate ordering + bool guards on every string param + schema rejects-without-fp8-qat; `nvfp4` mlx + vision rejection + bool guards; `unsloth_bnb_4bit` backend='unsloth' + quantization='4bit' rejection matrix; `apply_*` deferred); Part E LF parity (`bnb_4bit_use_double_quant` rejects none/8bit/gptq parametrize; `llm_int8` rejects default-none + 4bit; `quantize_ref_model` happy on dpo/grpo/kto + rejects sft/pretrain; `quantize_reward_model` happy on ppo/reward_model + rejects dpo; explicit `TypeError("v0.53.0 flag must be bool")` from `_validate_v053_bool_fields`; explicit-null surfaces as `valid boolean` ValidationError); Part F save formats (`MERGE_SAVE_FORMATS` lowercase normalisation + rejection matrix; `TORCHAO_PTQ_SCHEMES` CASE-SENSITIVE — `int4weightonly` rejected; `validate_quant_config_path` 4096-boundary; `MergeSaveSpec` + `TorchAOPTQSpec` frozen + MappingProxyType immutability; `merge_4bit` + `export_torchao` deferred); Cross-cutting (full 5-field YAML round-trip + cardinality invariant + tautological-assert replaced with allowlist + idempotent re-validate + `get_gguf_spec` unknown raises + bool guards on backend/modality/quantization across every Part D validator). Test count: 154 (v0.53.0) |
324
- | test_v0570_part_a.py | v0.57.0 Part A `soup adapters diff` — `effective_rank` SVD entropy (identity / concentrated / empty / 1D / zero / bool-eps / non-finite eps); `compute_layer_diffs` (identical-zero / known-norm-5 / shape-mismatch-skipped / intersection-only / non-mapping / oversize cap); `render_report_json` + `render_report_markdown` (roundtrip / non-report TypeError / only-lists section); `LayerDiff` frozen via FrozenInstanceError; end-to-end `compute_adapter_diff` (safetensors fixture + outside-cwd reject + bool top_k + 1/201 boundary + missing safetensors + .bin rejection + POSIX symlink at weights file); CLI (table/json/markdown smoke + unknown --format + --output requires non-table + outside-cwd + atomic write); no-top-level-torch source-grep guard. Test count: 36 (v0.57.0 Part A) |
325
- | test_v0570_part_b.py | v0.57.0 Part B `soup adapters merge` — 4 strategies in pure numpy: `merge_linear` (average / weighted / intersection / shape-mismatch / single-rejected / 17-too-many / bool weight / negative / NaN / inf rejection / zero-sum / length-mismatch); `merge_ties` (density top-half / majority-sign election / **tied-sign-defaults-positive** review fix / density bounds / density=1.0 inclusive / bool-density); `merge_dare` (deterministic-by-seed / different-seeds-diverge / bool-seed / negative-seed / density=1 equals linear); `merge_svd` (no-rank equals linear / rank reduces / non-2d passthrough / rank clamp / invalid-rank); `merge_adapters` e2e linear + unknown-strategy + output-outside-cwd + **POSIX symlink-at-output-safetensors rejection**; `SUPPORTED_STRATEGIES` frozenset + `STRATEGY_ORDER` tuple invariants; `predict_merged_verdict` stub + non-report + canary_suite type; `MergeReport` FrozenInstanceError; CLI help / linear / unknown-strategy / invalid-weights / single-adapter rejection; no-top-level-torch source-grep. Test count: 43 (v0.57.0 Part B) |
326
- | test_v0570_part_c.py | v0.57.0 Part C `soup adapters blame` — `parse_budget` (60/60s/5m/2h / below-floor / above-cap / invalid-format / empty / bool / null-byte / non-string); `plan_blame` (happy / infeasible-budget / shard offsets / uneven split / empty dataset / outside-cwd-adapter / outside-cwd-dataset / invalid-layer / shard bounds / **bool=True AND False shards** / **bool budget_seconds**); `run_blame` stub raises NotImplementedError v0.57.1 + non-plan TypeError; `BlamePlan` + `BlameShardWork` FrozenInstanceError; CLI help + plan-only smoke + invalid-budget + live runner advisory exit-0. Test count: 33 (v0.57.0 Part C) |
324
+ | test_v0530.py | v0.53.0 Quant Menu II — UD GGUFs + KV cache + NVFP4 + LF parity + save formats: GGUF (UD ladder 14 entries + IQ 12 + Apple/ARM 10 frozensets + non-overlap invariant + `validate_*` case-insensitive + rejection matrix + `is_advanced_gguf_format` union + `_LOWER_INDEX` O(1) lookup + MappingProxyType immutability + `validate_calibration_data_path` shape rejection + 4096-boundary + `export_advanced_gguf` v0.53.1 deferred stub); KV cache (`KV_CACHE_TYPES` frozenset + `validate_kv_cache_type` case + bool/null/oversize/non-string rejection + `requires_hopper` delegates to spec + `get_kv_cache_spec` frozen + schema fp8-on-mlx rejected with specific message + q8_0-on-mlx allowed); advanced precision (`fp8_attention` requires `quantization_aware='fp8'` BEFORE mlx-gate ordering + bool guards on every string param + schema rejects-without-fp8-qat; `nvfp4` mlx + vision rejection + bool guards; `unsloth_bnb_4bit` backend='unsloth' + quantization='4bit' rejection matrix; `apply_*` deferred); LF parity (`bnb_4bit_use_double_quant` rejects none/8bit/gptq parametrize; `llm_int8` rejects default-none + 4bit; `quantize_ref_model` happy on dpo/grpo/kto + rejects sft/pretrain; `quantize_reward_model` happy on ppo/reward_model + rejects dpo; explicit `TypeError("v0.53.0 flag must be bool")` from `_validate_v053_bool_fields`; explicit-null surfaces as `valid boolean` ValidationError); save formats (`MERGE_SAVE_FORMATS` lowercase normalisation + rejection matrix; `TORCHAO_PTQ_SCHEMES` CASE-SENSITIVE — `int4weightonly` rejected; `validate_quant_config_path` 4096-boundary; `MergeSaveSpec` + `TorchAOPTQSpec` frozen + MappingProxyType immutability; `merge_4bit` + `export_torchao` deferred); Cross-cutting (full 5-field YAML round-trip + cardinality invariant + tautological-assert replaced with allowlist + idempotent re-validate + `get_gguf_spec` unknown raises + bool guards on backend/modality/quantization across every advanced-precision validator). Test count: 154 (v0.53.0) |
325
+ | test_v0570_part_a.py | v0.57.0 `soup adapters diff` — `effective_rank` SVD entropy (identity / concentrated / empty / 1D / zero / bool-eps / non-finite eps); `compute_layer_diffs` (identical-zero / known-norm-5 / shape-mismatch-skipped / intersection-only / non-mapping / oversize cap); `render_report_json` + `render_report_markdown` (roundtrip / non-report TypeError / only-lists section); `LayerDiff` frozen via FrozenInstanceError; end-to-end `compute_adapter_diff` (safetensors fixture + outside-cwd reject + bool top_k + 1/201 boundary + missing safetensors + .bin rejection + POSIX symlink at weights file); CLI (table/json/markdown smoke + unknown --format + --output requires non-table + outside-cwd + atomic write); no-top-level-torch source-grep guard. Test count: 36 (v0.57.0) |
326
+ | test_v0570_part_b.py | v0.57.0 `soup adapters merge` — 4 strategies in pure numpy: `merge_linear` (average / weighted / intersection / shape-mismatch / single-rejected / 17-too-many / bool weight / negative / NaN / inf rejection / zero-sum / length-mismatch); `merge_ties` (density top-half / majority-sign election / **tied-sign-defaults-positive** review fix / density bounds / density=1.0 inclusive / bool-density); `merge_dare` (deterministic-by-seed / different-seeds-diverge / bool-seed / negative-seed / density=1 equals linear); `merge_svd` (no-rank equals linear / rank reduces / non-2d passthrough / rank clamp / invalid-rank); `merge_adapters` e2e linear + unknown-strategy + output-outside-cwd + **POSIX symlink-at-output-safetensors rejection**; `SUPPORTED_STRATEGIES` frozenset + `STRATEGY_ORDER` tuple invariants; `predict_merged_verdict` stub + non-report + canary_suite type; `MergeReport` FrozenInstanceError; CLI help / linear / unknown-strategy / invalid-weights / single-adapter rejection; no-top-level-torch source-grep. Test count: 43 (v0.57.0) |
327
+ | test_v0570_part_c.py | v0.57.0 `soup adapters blame` — `parse_budget` (60/60s/5m/2h / below-floor / above-cap / invalid-format / empty / bool / null-byte / non-string); `plan_blame` (happy / infeasible-budget / shard offsets / uneven split / empty dataset / outside-cwd-adapter / outside-cwd-dataset / invalid-layer / shard bounds / **bool=True AND False shards** / **bool budget_seconds**); `run_blame` stub raises NotImplementedError v0.57.1 + non-plan TypeError; `BlamePlan` + `BlameShardWork` FrozenInstanceError; CLI help + plan-only smoke + invalid-budget + live runner advisory exit-0. Test count: 33 (v0.57.0) |
327
328
  | test_v0580.py | v0.58.0 `soup loop` CLI-first data flywheel — `LoopState` frozen + 3 closed allowlist + bool/null/oversize/non-string reject; `with_status` / `bumped` (unknown counter + bool delta rejected); state file I/O atomic + cwd containment + POSIX symlink rejection + 1 MiB cap + forward-compat unknown-field-dropping; `init_state` refuses overwrite without `--force`; `CanaryPolicy` (cross-field, NaN/Inf, frozen); deterministic SHA-256 routing (stable-only / 0% / 100% / determinism / 25% split approximate / empty key / NUL key / non-policy); `rollback` (clears canary / route-after-rollback all-stable / reason / non-policy); `BucketStats` (record + verdict OK/MAJOR/UNKNOWN + bounds + invalid bucket + snapshot MappingProxyType); `parse_budget_string` (5 happy + empty/garbage/NUL/negative/overflow); `check_budget` (within/budget-blocked/daily-cap-blocked/None=unlimited + negative/NaN/bool guards); `reset_daily_counter_if_new_day` (same-day/new-day/None-prior/negative); `IterationRecord` frozen + verdict allowlist + path-separator id; iteration write/read roundtrip + outside-cwd + missing + sorted listing + non-record + invalid manifest; `new_iteration_id` unique × 20; `run_once` (defaults + budget-skip + custom callbacks + invalid types); `WatchConfig` (defaults + bad poll_interval/max_iterations/callable); `watch` finite-runs + on_iteration flips status to stop; `maybe_rollback` (OK no-op / MAJOR clears / UNKNOWN no-op / non-policy / non-str); CLI smoke (loop --help / init / refuse overwrite / --force / invalid budget / status without init / status / pause+resume cycle / pause-stopped / resume-running / watch --max-iterations / --foreground/--detach mutex / canary / canary invalid traffic / canary same-as-stable / replay list-empty / replay show / replay unknown); source-grep (cli.py registers loop / `__init__.py` == 0.58.0 / no top-level torch in 5 loop modules / typer.Typer). Review-fix coverage: 1 CRITICAL + 3 HIGH + 3 MEDIUM + 1 LOW. Test count: 160 (188 pass + 1 POSIX-skipped). (v0.58.0) |
328
- | test_v0570_part_d.py | v0.57.0 Part D `soup adapters branch/checkout/branches` — `create_branch` happy + with-dataset + invalid-name + null-byte name + bool name + config-outside-cwd + missing-config + empty-base-model + null-byte base + **bool base_model rejected** + oversize 1MiB config + atomic write; `list_branches` empty + sorted; `load_branch` roundtrip + missing + invalid-name + **POSIX symlink rejection**; `delete_branch` true-when-present + false-missing + **POSIX symlink rejection** + traversal rejection; `write_checkout` writes target + drift detection + outside-cwd reject + non-branch + missing source; `Branch` FrozenInstanceError; SOUP_BRANCHES_DIR env override (valid-honoured + null-byte falls-back via mocked os.environ.get + CRLF falls-back); CLI smoke create / list / checkout / invalid-name / missing-config / missing-branch / empty-list. Test count: 37 (v0.57.0 Part D, 4 POSIX-skipped on Windows) |
329
+ | test_v0570_part_d.py | v0.57.0 `soup adapters branch/checkout/branches` — `create_branch` happy + with-dataset + invalid-name + null-byte name + bool name + config-outside-cwd + missing-config + empty-base-model + null-byte base + **bool base_model rejected** + oversize 1MiB config + atomic write; `list_branches` empty + sorted; `load_branch` roundtrip + missing + invalid-name + **POSIX symlink rejection**; `delete_branch` true-when-present + false-missing + **POSIX symlink rejection** + traversal rejection; `write_checkout` writes target + drift detection + outside-cwd reject + non-branch + missing source; `Branch` FrozenInstanceError; SOUP_BRANCHES_DIR env override (valid-honoured + null-byte falls-back via mocked os.environ.get + CRLF falls-back); CLI smoke create / list / checkout / invalid-name / missing-config / missing-branch / empty-list. Test count: 37 (v0.57.0, 4 POSIX-skipped on Windows) |
329
330
  | test_issue349_measured_fit.py | v0.73.1 #349 — measured stream VRAM fit: `training.stream_vram_probe` (bool, default false, sft-only) decides layer-streaming VRAM pre-flight by MEASURING a real forward+backward at the configured shape instead of using the fitted formula; justified on RTX 3050 where the formula under-predicts 0.934x at seq 5120 / 0.787x at seq 6144. Config validation + schema bounds (task gate sft, rejects stream_layers=false). Plus: `training.batch_size` field_validator now rejects 0 and negative values (was accepting `-4` before). Test count: 33 (v0.73.1) |
330
331
  | test_issue372_no_reexec_hint.py | #372 — `--no-reexec` hint is derived from the same argv as auto-reexec (`build_train_reexec_argv` + `hint_argv_from_reexec`); tokenised printed command is a superset of user flags parametrised over `--fsdp` / `--deepspeed` / `--config` / `--trust-remote-code`; control with no extra flags still prints a valid minimal command; CLI smoke does not skip. |
331
332
  | test_issue392_mlx_target_keys.py | v0.73.1 #392 — the MLX `adapter_config.json` serialised `target_modules` UNRESOLVED, so a default MLX adapter loaded as a silent no-op. `_apply_lora` resolved `auto` into a LOCAL variable and trained the resolved modules; the writer serialised the raw config value, so the file carried `{"keys": ["auto"]}`, `linear_to_lora_layers` matched no module and `load_weights(strict=False)` dropped all 96 LoRA tensors WITHOUT A WORD — generation with the adapter bit-identical to the base. `auto` is the schema DEFAULT, so this was every MLX run that did not name its modules by hand, and `adapter_config.json` exists specifically to promise the output dir loads with `mlx_lm.load(..., adapter_path=...)`. Reported by @armanbot-jpg with the control that isolates it: hand-editing `keys` makes the very same `adapters.safetensors` produce the tuned behaviour, i.e. the weights were fine and the config was not. **Third time in this project a healthy loss curve shipped a dead artifact** (v0.72.0's `.inner.` keys, #362's full-fine-tune adapter, this) — the loss curve structurally cannot see it, only the artifact can. Repaired as ONE shared `resolve_mlx_target_keys()` rather than teaching the writer to resolve too, since two copies of "which modules did we train?" is how they drifted. 10 red before, 10 green after; two are controls (the resolved value must never contain `auto` whatever the input, and rank/scale/dropout must still come from the config, so a repair that hardcoded the block would fail rather than pass). (v0.73.1) |
332
333
  | test_issue441_coerce_token_ids.py | #441 — `coerce_token_ids` is the public shared helper (`data_doctor` must import that name, not `_coerce_token_ids`, and must not define its own copy); duck-typed mapping (has `get`, not a `collections.abc.Mapping`) returns `[1, 2, 3]` rather than raising `input_ids[0]='input_ids'`; the same object carrying `assistant_masks` takes the mask path (labels keep only the masked token — fails if only the coerce gate is widened); missing `input_ids` still raises the existing error; both call sites share `_is_mapping_like` (`isinstance(out, Mapping)` lives in exactly one place). |
333
334
  | test_v07302.py | v0.73.2 `soup ship` leg-2 suite enhancements + noise floor: `--noise-floor N` (N in [2,10], metric-mode-only) re-runs base N times, per-axis floor = max-min spread, gates each at max(threshold, floor) — `VramFit.noise_floor_block` frozen + `measure_base_spreads` (base-only, N forward passes) + `compute_noise_floors` aggregation; evidence JSON schema extended with optional `noise_floor` block (runs + floors dict); 8th bundled suite `mini_over_refusal` (inverse safety gate, benign-not-refused) + DEFAULT_GENERAL_SUITE count 8; scorer fixes: `extract_mcq_letter` now understands `\boxed{C}` single-letter format, `tool_call_name_match` tolerates missing outer `{"function": ...}` envelope (carries BOTH name + arguments), `score_bundled_suite` raises TypeError for non-callable generator (was silently returning 0.0); baseline scale warning for the three affected suites (mini_mmlu / mini_common_sense / mini_tool_call); MCP `ship_evidence` tool honours noise_floor in evidence schema. (v0.73.2) |
334
- | test_v0560.py | v0.56.0 `soup diagnose` post-training failure-mode report card — Part A 6 probes (forgetting Δ-accuracy + tolerance band; refusal advbench/xstest delta + `_MAX_REFUSAL_SCAN=8192` cap; format JSON/regex/tool_call with ReDoS probe + `_VALID_KINDS` frozenset; mode_collapse pairwise n-gram Jaccard over K completions; memorization training-prefix echo via `split_prefix`; contamination v0.47 ngram-overlap reuse + combined-complexity cap N×M>1e9); Part B `FailureReport` + `FailureScore` frozen dataclasses with OK/MINOR/MAJOR taxonomy (≥0.85/≥0.60 thresholds) + `compose_report` / `build_report` SDK + atomic `write_report` (realpath containment + symlink reject) + `render_badge_svg` HTML-escaped 6-cell SVG + CLI smoke (--evidence/--output/--badge/--attach-to-registry); Part C `diagnose_report` artifact kind + `soup train --diagnose-gate` MAJOR-rejection helper. Review-fix coverage: atomic+TOCTOU-safe badge write, typer.Exit (not sys.exit), 16 MiB evidence size cap, `extract_row_text` centralisation, `tokenize` delegates to `_eval_text`, extras null-byte sanitisation, source-grep regression guards. Test count: 123 (v0.56.0) |
335
- | test_v0540.py | v0.54.0 `soup advise` pre-flight decision — Part A Verdict engine (TASK_CATEGORIES + CHOICES allowlists; frozen Verdict / DatasetProfile / ROIEstimate; `classify_task` keyword + tool_calls + reasoning-trace signals + goal-steers; `compute_dataset_profile` shape + diversity + chosen/rejected + reasoning detection; `build_verdict` 5-branch rubric with `_MIN_ROWS_FOR_GRPO=500`; `load_advise_dataset` cwd-containment + symlink reject + BOM strip + malformed-JSON reject); Part B Probe runner (`synth_probe_baselines` + `synth_probe_lora_delta` heuristic stubs with forward-compat `model`/`device`/`lr`/`timeout_seconds` kwargs; `format_verdict_rubric` + `next_command_for` handoff); Part C Cross-project learning (`record_verdict` + `load_history` + `_append_with_lock` cross-process fcntl/msvcrt locking; `~/.soup/advise_history.jsonl` + sidecar `.lock` on Windows; `history_path` env override containment; per-line 64 KB cap on history reads); CLI smoke (run / explain / compare subcommands + `_rewrite_advise_argv` scoped to argv[1]); review-fix coverage (atomic scratch write + symlink reject on read; concurrent 8-thread record stress; 49↔50 / 499↔500 / 4096↔4097 boundary). Test count: 136 (v0.54.0) |
336
- | test_v0510.py | v0.51.0 Model Catalog Expansion + Alternative Model Hubs: Part E hubs.py (`SUPPORTED_HUBS` + `validate_hub_name` + `validate_hub_endpoint` SSRF parity / CRLF rejection / IPv6 mapped private rejected / IPv6 loopback ok / control chars; `resolve_endpoint` env-var override; `default_endpoint` + `endpoint_env_var` + `required_hub_package` + `is_hf` with bool guards; MappingProxyType immutability); TrainingConfig `hub` field (default + Literal accept + None reject + case-insensitive normalisation + YAML round-trip) + SoupConfig `_validate_hub_supported` (mlx + non-hf rejected; mlx + hf accepted; modelers + transformers accepted); Part D MULTIPACK_ARCHITECTURES extension (20 new arches parametrize + legacy preserved + exact count=38 + frozenset immutability); Parts A/B/C 26 new recipes (parametrize over every name × {get_recipe / RecipeMeta / SoupConfig load / yaml.safe_load / model id no null/whitespace/empty parts / max_length bounds / GRPO required fields}); baichuan-sft uses `hub: modelscope`; total recipe count >= 105 (v0.51.0) |
335
+ | test_v0560.py | v0.56.0 `soup diagnose` post-training failure-mode report card — 6 probes (forgetting Δ-accuracy + tolerance band; refusal advbench/xstest delta + `_MAX_REFUSAL_SCAN=8192` cap; format JSON/regex/tool_call with ReDoS probe + `_VALID_KINDS` frozenset; mode_collapse pairwise n-gram Jaccard over K completions; memorization training-prefix echo via `split_prefix`; contamination v0.47 ngram-overlap reuse + combined-complexity cap N×M>1e9); `FailureReport` + `FailureScore` frozen dataclasses with OK/MINOR/MAJOR taxonomy (≥0.85/≥0.60 thresholds) + `compose_report` / `build_report` SDK + atomic `write_report` (realpath containment + symlink reject) + `render_badge_svg` HTML-escaped 6-cell SVG + CLI smoke (--evidence/--output/--badge/--attach-to-registry); `diagnose_report` artifact kind + `soup train --diagnose-gate` MAJOR-rejection helper. Review-fix coverage: atomic+TOCTOU-safe badge write, typer.Exit (not sys.exit), 16 MiB evidence size cap, `extract_row_text` centralisation, `tokenize` delegates to `_eval_text`, extras null-byte sanitisation, source-grep regression guards. Test count: 123 (v0.56.0) |
336
+ | test_v0540.py | v0.54.0 `soup advise` pre-flight decision — Verdict engine (TASK_CATEGORIES + CHOICES allowlists; frozen Verdict / DatasetProfile / ROIEstimate; `classify_task` keyword + tool_calls + reasoning-trace signals + goal-steers; `compute_dataset_profile` shape + diversity + chosen/rejected + reasoning detection; `build_verdict` 5-branch rubric with `_MIN_ROWS_FOR_GRPO=500`; `load_advise_dataset` cwd-containment + symlink reject + BOM strip + malformed-JSON reject); Probe runner (`synth_probe_baselines` + `synth_probe_lora_delta` heuristic stubs with forward-compat `model`/`device`/`lr`/`timeout_seconds` kwargs; `format_verdict_rubric` + `next_command_for` handoff); Cross-project learning (`record_verdict` + `load_history` + `_append_with_lock` cross-process fcntl/msvcrt locking; `~/.soup/advise_history.jsonl` + sidecar `.lock` on Windows; `history_path` env override containment; per-line 64 KB cap on history reads); CLI smoke (run / explain / compare subcommands + `_rewrite_advise_argv` scoped to argv[1]); review-fix coverage (atomic scratch write + symlink reject on read; concurrent 8-thread record stress; 49↔50 / 499↔500 / 4096↔4097 boundary). Test count: 136 (v0.54.0) |
337
+ | test_v0510.py | v0.51.0 Model Catalog Expansion + Alternative Model Hubs: hubs.py (`SUPPORTED_HUBS` + `validate_hub_name` + `validate_hub_endpoint` SSRF parity / CRLF rejection / IPv6 mapped private rejected / IPv6 loopback ok / control chars; `resolve_endpoint` env-var override; `default_endpoint` + `endpoint_env_var` + `required_hub_package` + `is_hf` with bool guards; MappingProxyType immutability); TrainingConfig `hub` field (default + Literal accept + None reject + case-insensitive normalisation + YAML round-trip) + SoupConfig `_validate_hub_supported` (mlx + non-hf rejected; mlx + hf accepted; modelers + transformers accepted); MULTIPACK_ARCHITECTURES extension (20 new arches parametrize + legacy preserved + exact count=38 + frozenset immutability); 26 new recipes (parametrize over every name × {get_recipe / RecipeMeta / SoupConfig load / yaml.safe_load / model id no null/whitespace/empty parts / max_length bounds / GRPO required fields}); baichuan-sft uses `hub: modelscope`; total recipe count >= 105 (v0.51.0) |
337
338
 
338
339
  (Note: the test-file table above is a representative subset, not exhaustive — every `tests/test_*.py` file maps to a feature area or release.)
339
340
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: soup-cli
3
- Version: 0.76.0
3
+ Version: 0.76.1
4
4
  Summary: Fine-tune and post-train LLMs in one command. No SSH, no config hell.
5
5
  Project-URL: Homepage, https://github.com/MakazhanAlpamys/Soup
6
6
  Project-URL: Repository, https://github.com/MakazhanAlpamys/Soup
@@ -25,7 +25,7 @@ Requires-Dist: plotext>=5.2.0
25
25
  Requires-Dist: pydantic>=2.0.0
26
26
  Requires-Dist: pyyaml>=6.0
27
27
  Requires-Dist: rich>=13.0.0
28
- Requires-Dist: typer<0.21.0,>=0.9.0
28
+ Requires-Dist: typer<0.21.0,>=0.15.4
29
29
  Provides-Extra: aider
30
30
  Requires-Dist: aider-chat<0.87,>=0.86.2; extra == 'aider'
31
31
  Provides-Extra: all
@@ -223,11 +223,14 @@ soup train
223
223
 
224
224
  **Fine-tune an 8B model on a 4 GB laptop GPU.** Layer streaming keeps the frozen base out of
225
225
  VRAM and feeds it to the GPU one decoder layer at a time. Measured on an RTX 3050 Laptop 4 GB:
226
- Llama-3.1-8B-Instruct + NF4 at **119.6 tok/s, 3.32 GB peak** — bit-exact against a normal
227
- resident run, and reproduced independently on an H100 at 113.00 tok/s in the same 3.32 GB.
228
- (Both figures were measured on v0.72.2, before the v0.73.0 correctness repair that cost
229
- −4.8% at 32B; neither has been re-run on a 4 GB card since — re-measurement pending in
230
- issue [#361](https://github.com/MakazhanAlpamys/Soup/issues/361).) Opt-in (`stream_layers: true`)
226
+ Llama-3.1-8B-Instruct + NF4 at **119.6 tok/s at 952 MHz, 3.32 GB peak** (pre-repair) — bit-exact
227
+ against a normal resident run, and reproduced independently on an H100 at 113.00 tok/s in the same
228
+ 3.32 GB. (Both figures were measured on v0.72.2, before the v0.73.0 correctness repair that cost
229
+ −4.8% at 32B. The post-repair run, on another RTX 3050 Laptop 4 GB (@umran666, #1103), reads
230
+ **208.6 tok/s at 1935–1957 MHz in a 2.40 GB peak**. That is 59% of its same-session GEMM ceiling
231
+ against 68%: about 14% slower per unit clock, so the raw 1.74x gain is the clock, not a speedup.
232
+ Large-layer streaming also changed the memory pattern between the two rows, so even the fraction
233
+ is not like-for-like — [the record](benchmarks/gate-v0.72.2-nf4.md).) Opt-in (`stream_layers: true`)
231
234
  and still BETA —
232
235
  [how it works](docs/performance-and-quantization.md#layer-streaming-beta-v0720-nf4-v0722-disk--wider-archs-v0723-preference-losses-v0724) ·
233
236
  [all measurements](benchmarks/) · [paper](https://doi.org/10.5281/zenodo.21771064) ·
@@ -235,8 +238,8 @@ and still BETA —
235
238
  4 GB, then asserts a streamed model is bit-identical to a normal one)
236
239
 
237
240
  <p align="center">
238
- <a href="https://youtu.be/T1LCErE943E"><img src="docs/assets/layer-streaming.gif" alt="soup train pre-flight for Llama-3.1-8B on a 4 GB card: a 3.60 GB base store pinned in RAM across 32 layers and two 113 MB VRAM buffers, then a measured peak of 3.32 GB at 119.6 tok/s, stopping short of the 4 GB line (measured on v0.72.2, before the #331 repair; re-measurement pending in issue #361)"></a><br>
239
- <sub>Llama-3.1-8B-Instruct + NF4, LoRA, batch 1, seq 512 on an RTX 3050 Laptop 4 GB — <b>3.32 GB peak, 119.6 tok/s</b> (measured on v0.72.2, before the #331 repair; re-measurement pending in issue #361). <a href="https://youtu.be/T1LCErE943E">Full video (90s)</a></sub>
241
+ <a href="https://youtu.be/T1LCErE943E"><img src="docs/assets/layer-streaming.gif" alt="soup train pre-flight for Llama-3.1-8B on a 4 GB card: a 3.60 GB base store pinned in RAM across 32 layers and two 113 MB VRAM buffers, then a measured peak of 3.32 GB at 119.6 tok/s, stopping short of the 4 GB line (pre-repair row, measured on v0.72.2 at 952 MHz; the post-#331 row is in the caption below)"></a><br>
242
+ <sub>Llama-3.1-8B-Instruct + NF4, LoRA, batch 1, seq 512 on an RTX 3050 Laptop 4 GB — <b>3.32 GB peak, 119.6 tok/s</b> at 952 MHz (pre-repair, v0.72.2; post-#331: 208.6 tok/s at 1935 MHz in 2.40 GB, not directly comparable, @umran666, #1103). <a href="https://youtu.be/T1LCErE943E">Full video (90s)</a></sub>
240
243
  </p>
241
244
 
242
245
  ## Why Soup?
@@ -251,53 +254,36 @@ infrastructure instead of improving models. Soup fixes that.
251
254
 
252
255
  ## What's New
253
256
 
254
- **v0.76.0 — settings Soup accepted and never applied now stop the load.** Options that were
255
- validated and documented, and read by nothing on the path they claimed to configure, are now
256
- refused at load, naming the setting and what to change; the rest warn and name the release
257
- that will refuse them. A config that loaded before can stop loading: run
258
- `soup doctor --config soup.yaml` first.
259
-
260
- - **Breaking: a setting that never took effect is refused at load.** Among them
261
- `training.quantization_aware: true` (it never ran quantization-aware training),
262
- `training.use_longlora`, `training.ebft_variant`, `training.gdpo_variant`,
263
- `training.rope_scaling_type` where no setup reads it, `freeze_layers` / `freeze_ratio`
264
- outside the text `sft` / `tts` path on the transformers backend, `auto_mixed_precision`
265
- outside `sft` / `tts`, and `backend: unsloth` on seven further tasks that have no unsloth
266
- setup. Each message names the field and what to change. `lr_groups`, `early_stop_patience`,
267
- `forgetting_eval_steps` and other unread knobs warn at load now and are refused from v0.77.
268
- - **Validation loss is now evaluated.** `data.val_split` held rows out of training on every
269
- run, and no trainer on the transformers backend evaluated them. Every task that gets a
270
- split now evaluates it at the end of each epoch, or every N steps with `training.eval_steps`,
271
- and records the val loss; runs take a few percent longer. **Breaking for `grpo`, `ppo` and
272
- `online_dpo`:** by default they no longer hold rows out (`data.val_split` is ignored with
273
- a note), so every row trains.
274
- - **Breaking: every non-standard `grpo_variant` applies the `grpo_beta` KL penalty.** `gspo`,
275
- `dapo`, `dr_grpo`, `bnpo`, `two_sided` and `rft` validated `grpo_beta` and dropped it, so
276
- existing variant configs will not reproduce prior runs. `grpo_beta: 0` now runs KL-free and
277
- skips the reference forward pass.
278
- - **Layer streaming reads its disk tier on a background thread, through direct I/O, and can
279
- stripe it across NVMe drives.** On a 36 GB 70B-shaped NF4 store larger than RAM (one RTX 5070
280
- Laptop 8 GB box), a cold step went from 110.5 s on the synchronous read to 16.2-17.3 s, and
281
- from 17.4 s to 9.97 s across two drives with `SOUP_LAYER_STREAM_STRIPE_DIRS` (a sustained-load
282
- probe: two rounds, 1.28x and 1.41x, no formal verdict;
283
- [record](benchmarks/probe-rtx5070-two-drive-sustained.md)). A store that fits RAM is still
284
- faster on the RAM tier, which `stream_source: auto` picks. Opt-in (`stream_layers: true`) and
285
- still BETA; records: [direct I/O](benchmarks/gate-974-disk-tier-direct-io.md),
286
- [striping](benchmarks/gate-two-drive-striping.md).
287
- - **New commands and options.** `soup adapters check` scans a LoRA adapter for silent failure;
288
- `soup bench train` trains a fixed number of steps and exits 1 when the model was not training
289
- (it covers `task: sft` on the transformers backend; `soup bench` is now a group, and
290
- `soup bench infer` is the old inference benchmark);
291
- `soup data clean` sanitizes and repairs a dataset without touching the input file;
292
- `soup recipes verify` checks on the meta device, with no weights downloaded, that every shipped
293
- recipe can attach a LoRA adapter; `soup rewind` names the dataset rows behind a loss spike.
294
- `soup infer` gains opt-in `--batch-size` and an experimental `--cuda-graphs` (PyTorch 2.14 or
295
- newer; on one RTX 5070 Laptop, unpinned, Qwen2.5-1.5B in FP16, the slowest run with it decoded
296
- 2.9x faster than the fastest without). `soup ab` runs a two-sided, variance-robust test, and
297
- `soup adapters sign --backend sigstore` and `soup attest emit --sign sigstore` sign with
298
- Sigstore keyless OIDC (`pip install "soup-cli[sigstore]"`).
299
- - **Deprecated:** `soup export --format awq` and `--format gptq` will be removed in v0.77; both
300
- upstream projects are archived and neither extra installs next to `[train]`.
257
+ **v0.76.1 — a patch: the bundled DPO examples train again, and every YAML file Soup reads has
258
+ the same limits.** Everything in v0.76.0 is unchanged. That release refuses settings Soup
259
+ accepted and never applied, so a config that loaded before can stop loading: coming from
260
+ 0.75.x, run `soup doctor --config soup.yaml` first. Its feature list is in the
261
+ [v0.76.0 release notes](https://github.com/MakazhanAlpamys/Soup/releases/tag/v0.76.0). The
262
+ settings that only warn at load are refused from v0.77, which also removes
263
+ `soup export --format awq` and `--format gptq`.
264
+
265
+ - **The bundled DPO examples train again.** `task: dpo`, `ipo`, `bco` and `preference` failed
266
+ inside trl, after the model had loaded, on `examples/data/dpo_sample.jsonl`,
267
+ `examples/data/chat_preferences.jsonl` and any dataset written the same way (a string
268
+ `prompt` beside `chosen` / `rejected` message lists), with an error that changed with
269
+ `PYTHONHASHSEED`. Every preference row now reaches the trainer in one layout, and a row that
270
+ cannot be written that way is dropped at load with a reason that names the field.
271
+ - **One YAML loader, with limits, for every file Soup reads.** `soup.yaml` and the other YAML
272
+ readers share a nesting limit (100 levels) and an expansion limit, and each keeps its own
273
+ size cap (1 MiB for a `soup.yaml`). A file over a limit, unreadable or not valid YAML is
274
+ refused with one line naming the file and the problem. The audit log masks credential
275
+ options by name.
276
+ - **The Typer floor is `typer>=0.15.4`.** `typer>=0.9.0` was declared while no command could
277
+ start below Typer 0.12.4, and 0.12.4 - 0.15.3 started only next to Click 8.1 or older. An
278
+ environment with an older Typer now has it upgraded, or the conflict named, at install time;
279
+ `soup doctor` reports it. A fresh install is unchanged, and one CI cell now starts the CLI on
280
+ the declared Typer and Click floors.
281
+ - **A Hub dataset id with a dot loads from the Hub.** `data.train: teknium/OpenHermes-2.5`
282
+ failed with `Data file not found`: the loader read the dot as a file extension.
283
+ - **Docs.** The README and the performance docs state the 8B NF4 figure with its SM clock
284
+ (119.6 tok/s at 952 MHz) beside the post-#331 row (208.6 tok/s at 1935-1957 MHz,
285
+ [#1207](https://github.com/MakazhanAlpamys/Soup/issues/1207) tracks the preprint
286
+ amendment), and the What's New of the four translations describes v0.76.0.
301
287
 
302
288
  > Python **3.10–3.12** only. On 3.13+, pip used to resolve untested PyTorch wheels that
303
289
  > crash in the native extension before Soup runs at all.
@@ -616,8 +602,12 @@ published**, which is also the shortest way to describe what the paper is for:
616
602
  the replication survives in a weaker form — the constraint is common to both machines and is
617
603
  not the GPU's compute.
618
604
  - **Replication on hardware nothing like the original** (added in v2): 119.6 tok/s on the RTX
619
- 3050 against a median 113.00 on an H100, at the same 3.32 GB peak. Both pre-date the #331
620
- repair; the 4 GB re-measurement is pending in issue #361.
605
+ 3050 (at 952 MHz) against a median 113.00 on an H100, at the same 3.32 GB peak. Both pre-date
606
+ the #331 repair and are the figures the paper reports. The post-#331 row (@umran666, #1103) is
607
+ 208.6 tok/s at 1935–1957 MHz in a 2.40 GB peak, 59% against 68% of the same-session GEMM
608
+ ceiling: the raw 1.74x gain is the clock, not a speedup, and the memory pattern changed between
609
+ the rows, so even the fraction is not like-for-like
610
+ ([the record](benchmarks/gate-v0.72.2-nf4.md)).
621
611
  - **A silent wrong-gradient defect, found and repaired.** On NF4 above ~165 MiB per layer the
622
612
  forward stayed bit-exact and the loss curve looked healthy while the gradients were wrong. The
623
613
  cause is named in the upstream library and reported there; the repair is gated against controls