soup-cli 0.71.5__tar.gz → 0.71.7__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 (787) hide show
  1. soup_cli-0.71.7/.mailmap +8 -0
  2. {soup_cli-0.71.5 → soup_cli-0.71.7}/CHANGELOG.md +81 -0
  3. {soup_cli-0.71.5 → soup_cli-0.71.7}/CONTRIBUTING.md +17 -2
  4. soup_cli-0.71.7/CONTRIBUTORS.md +43 -0
  5. {soup_cli-0.71.5 → soup_cli-0.71.7}/PKG-INFO +17 -17
  6. {soup_cli-0.71.5 → soup_cli-0.71.7}/README.md +16 -16
  7. {soup_cli-0.71.5 → soup_cli-0.71.7}/docs/commands.md +6 -4
  8. {soup_cli-0.71.5 → soup_cli-0.71.7}/docs/data.md +10 -6
  9. {soup_cli-0.71.5 → soup_cli-0.71.7}/docs/evaluation.md +30 -5
  10. {soup_cli-0.71.5 → soup_cli-0.71.7}/pyproject.toml +1 -1
  11. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/__init__.py +1 -1
  12. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/_eval_v0650.py +140 -7
  13. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/advise.py +40 -6
  14. soup_cli-0.71.7/src/soup_cli/commands/build.py +92 -0
  15. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/data.py +126 -47
  16. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/diagnose.py +101 -38
  17. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/tunability.py +32 -1
  18. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/providers/ollama.py +4 -1
  19. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/providers/vllm.py +4 -1
  20. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/advise.py +151 -20
  21. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/behavior_battery.py +55 -1
  22. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/build_dag.py +482 -10
  23. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/capability_suite.py +111 -1
  24. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/diagnose/_common.py +64 -0
  25. soup_cli-0.71.7/src/soup_cli/utils/diagnose/live.py +320 -0
  26. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/diagnose/memorization.py +57 -12
  27. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/irt.py +199 -2
  28. soup_cli-0.71.7/src/soup_cli/utils/live_eval.py +464 -0
  29. soup_cli-0.71.7/src/soup_cli/utils/magpie.py +595 -0
  30. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/tunability.py +119 -1
  31. soup_cli-0.71.7/tests/qa/v0716_qa.md +110 -0
  32. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0690_part_a.py +25 -9
  33. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0690_part_c.py +18 -8
  34. soup_cli-0.71.7/tests/test_v0716.py +1723 -0
  35. soup_cli-0.71.7/tests/test_v0717.py +868 -0
  36. soup_cli-0.71.5/src/soup_cli/commands/build.py +0 -67
  37. soup_cli-0.71.5/src/soup_cli/utils/magpie.py +0 -164
  38. {soup_cli-0.71.5 → soup_cli-0.71.7}/.dockerignore +0 -0
  39. {soup_cli-0.71.5 → soup_cli-0.71.7}/.github/FUNDING.yml +0 -0
  40. {soup_cli-0.71.5 → soup_cli-0.71.7}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  41. {soup_cli-0.71.5 → soup_cli-0.71.7}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  42. {soup_cli-0.71.5 → soup_cli-0.71.7}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  43. {soup_cli-0.71.5 → soup_cli-0.71.7}/.github/pull_request_template.md +0 -0
  44. {soup_cli-0.71.5 → soup_cli-0.71.7}/.github/workflows/ci.yml +0 -0
  45. {soup_cli-0.71.5 → soup_cli-0.71.7}/.github/workflows/docker.yml +0 -0
  46. {soup_cli-0.71.5 → soup_cli-0.71.7}/.github/workflows/publish.yml +0 -0
  47. {soup_cli-0.71.5 → soup_cli-0.71.7}/.github/workflows/recipe-validation.yml +0 -0
  48. {soup_cli-0.71.5 → soup_cli-0.71.7}/.gitignore +0 -0
  49. {soup_cli-0.71.5 → soup_cli-0.71.7}/.pre-commit-config.yaml +0 -0
  50. {soup_cli-0.71.5 → soup_cli-0.71.7}/AGENTS.md +0 -0
  51. {soup_cli-0.71.5 → soup_cli-0.71.7}/CODEOWNERS +0 -0
  52. {soup_cli-0.71.5 → soup_cli-0.71.7}/CODE_OF_CONDUCT.md +0 -0
  53. {soup_cli-0.71.5 → soup_cli-0.71.7}/Dockerfile +0 -0
  54. {soup_cli-0.71.5 → soup_cli-0.71.7}/LICENSE +0 -0
  55. {soup_cli-0.71.5 → soup_cli-0.71.7}/NOTICE +0 -0
  56. {soup_cli-0.71.5 → soup_cli-0.71.7}/SECURITY.md +0 -0
  57. {soup_cli-0.71.5 → soup_cli-0.71.7}/docker-compose.yml +0 -0
  58. {soup_cli-0.71.5 → soup_cli-0.71.7}/docs/README.md +0 -0
  59. {soup_cli-0.71.5 → soup_cli-0.71.7}/docs/adapters-and-governance.md +0 -0
  60. {soup_cli-0.71.5 → soup_cli-0.71.7}/docs/backends-and-ops.md +0 -0
  61. {soup_cli-0.71.5 → soup_cli-0.71.7}/docs/models.md +0 -0
  62. {soup_cli-0.71.5 → soup_cli-0.71.7}/docs/peft-and-efficiency.md +0 -0
  63. {soup_cli-0.71.5 → soup_cli-0.71.7}/docs/performance-and-quantization.md +0 -0
  64. {soup_cli-0.71.5 → soup_cli-0.71.7}/docs/serving-and-export.md +0 -0
  65. {soup_cli-0.71.5 → soup_cli-0.71.7}/docs/training.md +0 -0
  66. {soup_cli-0.71.5 → soup_cli-0.71.7}/examples/README.md +0 -0
  67. {soup_cli-0.71.5 → soup_cli-0.71.7}/examples/configs/dpo_chat.yaml +0 -0
  68. {soup_cli-0.71.5 → soup_cli-0.71.7}/examples/configs/dpo_example.yaml +0 -0
  69. {soup_cli-0.71.5 → soup_cli-0.71.7}/examples/configs/grpo_reasoning.yaml +0 -0
  70. {soup_cli-0.71.5 → soup_cli-0.71.7}/examples/configs/rlhf_step1_sft.yaml +0 -0
  71. {soup_cli-0.71.5 → soup_cli-0.71.7}/examples/configs/rlhf_step2_reward.yaml +0 -0
  72. {soup_cli-0.71.5 → soup_cli-0.71.7}/examples/configs/rlhf_step3_ppo.yaml +0 -0
  73. {soup_cli-0.71.5 → soup_cli-0.71.7}/examples/configs/sft_basic.yaml +0 -0
  74. {soup_cli-0.71.5 → soup_cli-0.71.7}/examples/configs/vision_llama.yaml +0 -0
  75. {soup_cli-0.71.5 → soup_cli-0.71.7}/examples/data/alpaca_tiny.jsonl +0 -0
  76. {soup_cli-0.71.5 → soup_cli-0.71.7}/examples/data/chat_preferences.jsonl +0 -0
  77. {soup_cli-0.71.5 → soup_cli-0.71.7}/examples/data/dpo_sample.jsonl +0 -0
  78. {soup_cli-0.71.5 → soup_cli-0.71.7}/examples/data/reasoning_math.jsonl +0 -0
  79. {soup_cli-0.71.5 → soup_cli-0.71.7}/examples/synthetic_workflow.md +0 -0
  80. {soup_cli-0.71.5 → soup_cli-0.71.7}/examples/synthetic_workflow.yaml +0 -0
  81. {soup_cli-0.71.5 → soup_cli-0.71.7}/soup.png +0 -0
  82. {soup_cli-0.71.5 → soup_cli-0.71.7}/soup_logo_svg.svg +0 -0
  83. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/__main__.py +0 -0
  84. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/autopilot/__init__.py +0 -0
  85. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/autopilot/analyzer.py +0 -0
  86. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/autopilot/decisions.py +0 -0
  87. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/autopilot/generate_config.py +0 -0
  88. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/cans/__init__.py +0 -0
  89. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/cans/pack.py +0 -0
  90. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/cans/publish.py +0 -0
  91. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/cans/run.py +0 -0
  92. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/cans/schema.py +0 -0
  93. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/cans/unpack.py +0 -0
  94. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/cans/verify.py +0 -0
  95. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/cli.py +0 -0
  96. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/__init__.py +0 -0
  97. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/_eval_v0550.py +0 -0
  98. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/_eval_v0610.py +0 -0
  99. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/_webhook_cli.py +0 -0
  100. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/ab.py +0 -0
  101. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/active_sample.py +0 -0
  102. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/adapters.py +0 -0
  103. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/agent.py +0 -0
  104. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/airgap.py +0 -0
  105. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/apple_adapter.py +0 -0
  106. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/attest.py +0 -0
  107. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/audit_log.py +0 -0
  108. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/autopilot.py +0 -0
  109. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/bench.py +0 -0
  110. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/bom.py +0 -0
  111. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/can.py +0 -0
  112. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/chat.py +0 -0
  113. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/compile_cmd.py +0 -0
  114. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/compile_tools.py +0 -0
  115. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/completions.py +0 -0
  116. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/cost.py +0 -0
  117. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/data_forge.py +0 -0
  118. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/data_mix.py +0 -0
  119. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/data_score.py +0 -0
  120. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/delinearize_llama4.py +0 -0
  121. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/deploy.py +0 -0
  122. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/diff.py +0 -0
  123. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/distill_prompt.py +0 -0
  124. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/doctor.py +0 -0
  125. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/drift_alarm.py +0 -0
  126. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/edit.py +0 -0
  127. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/env.py +0 -0
  128. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/eval.py +0 -0
  129. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/expect.py +0 -0
  130. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/export.py +0 -0
  131. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/fetch.py +0 -0
  132. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/generate.py +0 -0
  133. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/history.py +0 -0
  134. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/infer.py +0 -0
  135. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/ingest.py +0 -0
  136. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/init.py +0 -0
  137. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/iterative_dpo.py +0 -0
  138. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/license_advisor.py +0 -0
  139. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/llama.py +0 -0
  140. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/local_rl.py +0 -0
  141. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/lock.py +0 -0
  142. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/loop.py +0 -0
  143. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/merge.py +0 -0
  144. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/merge_sharded_fsdp_weights.py +0 -0
  145. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/migrate.py +0 -0
  146. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/monitor.py +0 -0
  147. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/plan.py +0 -0
  148. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/plugins.py +0 -0
  149. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/probe.py +0 -0
  150. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/profile.py +0 -0
  151. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/prune_prompt.py +0 -0
  152. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/push.py +0 -0
  153. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/quantize.py +0 -0
  154. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/quickstart.py +0 -0
  155. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/recipes.py +0 -0
  156. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/registry.py +0 -0
  157. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/runs.py +0 -0
  158. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/serve.py +0 -0
  159. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/steer.py +0 -0
  160. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/sweep.py +0 -0
  161. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/tokenizer.py +0 -0
  162. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/train.py +0 -0
  163. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/tui.py +0 -0
  164. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/ui.py +0 -0
  165. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/commands/why.py +0 -0
  166. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/config/__init__.py +0 -0
  167. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/config/loader.py +0 -0
  168. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/config/schema.py +0 -0
  169. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/__init__.py +0 -0
  170. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/_fixtures/alpaca_tiny.jsonl +0 -0
  171. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/_fixtures/behavior/elephant.jsonl +0 -0
  172. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/_fixtures/behavior/harmbench.jsonl +0 -0
  173. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/_fixtures/behavior/jailbreakbench.jsonl +0 -0
  174. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/_fixtures/behavior/syceval.jsonl +0 -0
  175. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/_fixtures/behavior/xstest.jsonl +0 -0
  176. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/_fixtures/chat_preferences.jsonl +0 -0
  177. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/_fixtures/dpo_sample.jsonl +0 -0
  178. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/_fixtures/reasoning_math.jsonl +0 -0
  179. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/_fixtures/unlearning/muse_demo.jsonl +0 -0
  180. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/_fixtures/unlearning/tofu_demo.jsonl +0 -0
  181. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/_fixtures/unlearning/wmdp_demo.jsonl +0 -0
  182. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/augment.py +0 -0
  183. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/chat_templates.py +0 -0
  184. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/collators.py +0 -0
  185. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/formats.py +0 -0
  186. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/loader.py +0 -0
  187. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/loss_mask.py +0 -0
  188. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/providers/__init__.py +0 -0
  189. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/providers/_utils.py +0 -0
  190. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/providers/anthropic.py +0 -0
  191. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/sft_format.py +0 -0
  192. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/templates/__init__.py +0 -0
  193. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/templates/code.py +0 -0
  194. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/templates/conversation.py +0 -0
  195. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/templates/preference.py +0 -0
  196. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/templates/qa.py +0 -0
  197. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/templates/reasoning.py +0 -0
  198. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/templates/tool_calling.py +0 -0
  199. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/templates/verifiable.py +0 -0
  200. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/traces/__init__.py +0 -0
  201. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/traces/pair_builder.py +0 -0
  202. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/traces/parsers.py +0 -0
  203. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/traces/quality.py +0 -0
  204. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/data/validator.py +0 -0
  205. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/eval/__init__.py +0 -0
  206. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/eval/arena.py +0 -0
  207. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/eval/benchmarks_v0_43.py +0 -0
  208. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/eval/calibrate.py +0 -0
  209. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/eval/checkpoint_intelligence.py +0 -0
  210. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/eval/custom.py +0 -0
  211. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/eval/forgetting.py +0 -0
  212. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/eval/gate.py +0 -0
  213. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/eval/human.py +0 -0
  214. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/eval/judge.py +0 -0
  215. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/eval/leaderboard.py +0 -0
  216. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/eval/quant_check.py +0 -0
  217. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/experiment/__init__.py +0 -0
  218. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/experiment/tracker.py +0 -0
  219. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/migrate/__init__.py +0 -0
  220. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/migrate/axolotl.py +0 -0
  221. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/migrate/common.py +0 -0
  222. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/migrate/llamafactory.py +0 -0
  223. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/migrate/unsloth.py +0 -0
  224. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/monitoring/__init__.py +0 -0
  225. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/monitoring/callback.py +0 -0
  226. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/monitoring/curriculum_callback.py +0 -0
  227. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/monitoring/display.py +0 -0
  228. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/monitoring/grpo_stability_callback.py +0 -0
  229. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/monitoring/hf_push.py +0 -0
  230. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/monitoring/plugin_callback.py +0 -0
  231. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/monitoring/trace_logger.py +0 -0
  232. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/plugins/__init__.py +0 -0
  233. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/py.typed +0 -0
  234. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/recipes/__init__.py +0 -0
  235. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/recipes/catalog.py +0 -0
  236. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/registry/__init__.py +0 -0
  237. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/registry/attach.py +0 -0
  238. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/registry/diff.py +0 -0
  239. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/registry/hashing.py +0 -0
  240. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/registry/store.py +0 -0
  241. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/__init__.py +0 -0
  242. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/audio.yaml +0 -0
  243. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/bco.yaml +0 -0
  244. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/chat.yaml +0 -0
  245. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/code.yaml +0 -0
  246. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/embedding.yaml +0 -0
  247. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/fetch_examples/llama-3.1-8b-lora.yaml +0 -0
  248. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/fetch_examples/qwen2.5-7b-dpo.yaml +0 -0
  249. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/fetch_examples/zero3-cpu-offload.json +0 -0
  250. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/ipo.yaml +0 -0
  251. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/kto.yaml +0 -0
  252. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/longcontext.yaml +0 -0
  253. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/manifest.json +0 -0
  254. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/medical.yaml +0 -0
  255. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/moe.yaml +0 -0
  256. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/orpo.yaml +0 -0
  257. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/pretrain.yaml +0 -0
  258. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/reasoning.yaml +0 -0
  259. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/rlhf.yaml +0 -0
  260. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/simpo.yaml +0 -0
  261. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/tool-calling.yaml +0 -0
  262. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/templates/vision.yaml +0 -0
  263. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/__init__.py +0 -0
  264. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/bco.py +0 -0
  265. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/classifier.py +0 -0
  266. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/distill.py +0 -0
  267. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/dpo.py +0 -0
  268. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/embedding.py +0 -0
  269. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/grpo.py +0 -0
  270. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/ipo.py +0 -0
  271. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/kto.py +0 -0
  272. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/mlx_dpo.py +0 -0
  273. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/mlx_grpo.py +0 -0
  274. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/mlx_routing.py +0 -0
  275. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/mlx_sft.py +0 -0
  276. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/orpo.py +0 -0
  277. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/ppo.py +0 -0
  278. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/preference.py +0 -0
  279. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/pretrain.py +0 -0
  280. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/prm.py +0 -0
  281. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/reward_model.py +0 -0
  282. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/rewards.py +0 -0
  283. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/sft.py +0 -0
  284. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/simpo.py +0 -0
  285. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/trainer/unlearn.py +0 -0
  286. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/tui_app.py +0 -0
  287. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/ui/__init__.py +0 -0
  288. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/ui/app.py +0 -0
  289. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/ui/plugins/__init__.py +0 -0
  290. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/ui/static/app.js +0 -0
  291. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/ui/static/index.html +0 -0
  292. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/ui/static/logo.png +0 -0
  293. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/ui/static/logo.svg +0 -0
  294. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/ui/static/style.css +0 -0
  295. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/__init__.py +0 -0
  296. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/_eval_text.py +0 -0
  297. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/ab_test.py +0 -0
  298. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/activation_offload.py +0 -0
  299. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/active_sampler.py +0 -0
  300. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/adapter_bisect.py +0 -0
  301. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/adapter_branch.py +0 -0
  302. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/adapter_diff.py +0 -0
  303. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/adapter_merge.py +0 -0
  304. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/adapter_pr.py +0 -0
  305. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/adapter_scan.py +0 -0
  306. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/adapter_sign.py +0 -0
  307. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/advanced_precision.py +0 -0
  308. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/advise_history.py +0 -0
  309. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/agent_forge.py +0 -0
  310. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/agent_rollout.py +0 -0
  311. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/airgap_bundle.py +0 -0
  312. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/annex_xi.py +0 -0
  313. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/anthropic_messages.py +0 -0
  314. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/apple_adapter.py +0 -0
  315. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/attest.py +0 -0
  316. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/audit_log.py +0 -0
  317. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/auto_quant.py +0 -0
  318. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/backend_detect.py +0 -0
  319. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/batch_probe.py +0 -0
  320. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/bitnet.py +0 -0
  321. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/blame.py +0 -0
  322. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/block_expansion.py +0 -0
  323. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/bom.py +0 -0
  324. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/brain_rot.py +0 -0
  325. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/brain_rot_lang.py +0 -0
  326. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/canary_discovery.py +0 -0
  327. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/canary_router.py +0 -0
  328. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/checklist_dsl.py +0 -0
  329. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/checkpoint_trigger.py +0 -0
  330. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/citation_faithful.py +0 -0
  331. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/classifier.py +0 -0
  332. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/cmaes_merge.py +0 -0
  333. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/compile_tools.py +0 -0
  334. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/completions.py +0 -0
  335. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/constants.py +0 -0
  336. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/convergence.py +0 -0
  337. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/crash.py +0 -0
  338. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/cross_doc_attn.py +0 -0
  339. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/curriculum.py +0 -0
  340. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/curriculum_dynamic.py +0 -0
  341. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/cut_ce.py +0 -0
  342. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/data_forge.py +0 -0
  343. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/data_mix.py +0 -0
  344. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/data_pipeline.py +0 -0
  345. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/data_score.py +0 -0
  346. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/deepspeed.py +0 -0
  347. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/delinearize_llama4.py +0 -0
  348. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/demo_bundles.py +0 -0
  349. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/deploy_autopilot.py +0 -0
  350. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/deploy_measure.py +0 -0
  351. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/diagnose/__init__.py +0 -0
  352. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/diagnose/badge.py +0 -0
  353. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/diagnose/contamination.py +0 -0
  354. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/diagnose/forgetting.py +0 -0
  355. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/diagnose/format.py +0 -0
  356. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/diagnose/mode_collapse.py +0 -0
  357. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/diagnose/refusal.py +0 -0
  358. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/diagnose/report.py +0 -0
  359. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/diagnose/runner.py +0 -0
  360. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/distill.py +0 -0
  361. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/dpo_variants.py +0 -0
  362. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/drift_alarm.py +0 -0
  363. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/ebft_gdpo.py +0 -0
  364. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/echo_trap.py +0 -0
  365. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/edit_diff.py +0 -0
  366. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/edit_governor.py +0 -0
  367. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/encoding.py +0 -0
  368. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/energy.py +0 -0
  369. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/env_lock.py +0 -0
  370. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/errors.py +0 -0
  371. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/eval_design.py +0 -0
  372. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/eval_gate_hook.py +0 -0
  373. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/eval_lock_coverage.py +0 -0
  374. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/expectations.py +0 -0
  375. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/fetch_examples.py +0 -0
  376. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/flash_attn.py +0 -0
  377. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/fp8.py +0 -0
  378. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/freeze.py +0 -0
  379. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/fsdp.py +0 -0
  380. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/fsdp_consolidate.py +0 -0
  381. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/galore.py +0 -0
  382. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/gguf_quant.py +0 -0
  383. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/gpu.py +0 -0
  384. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/gpu_monitor.py +0 -0
  385. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/grace_codebook.py +0 -0
  386. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/graceful_save.py +0 -0
  387. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/grad_accum.py +0 -0
  388. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/gradient_ckpt.py +0 -0
  389. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/grpo_long_context.py +0 -0
  390. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/grpo_variants.py +0 -0
  391. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/hardware_fit.py +0 -0
  392. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/hf.py +0 -0
  393. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/hf_space.py +0 -0
  394. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/hubs.py +0 -0
  395. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/ingest_sources.py +0 -0
  396. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/integrations.py +0 -0
  397. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/interference.py +0 -0
  398. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/iterative_dpo.py +0 -0
  399. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/jinja_analyzer.py +0 -0
  400. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/kernel_picker.py +0 -0
  401. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/knowledge_edit.py +0 -0
  402. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/kv_cache.py +0 -0
  403. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/launcher.py +0 -0
  404. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/license_advisor.py +0 -0
  405. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/license_matrix.py +0 -0
  406. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/liger.py +0 -0
  407. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/llama_proxy.py +0 -0
  408. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/llama_server_timings.py +0 -0
  409. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/local_rl.py +0 -0
  410. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/loftq_init.py +0 -0
  411. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/log_level.py +0 -0
  412. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/long_context.py +0 -0
  413. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/longlora.py +0 -0
  414. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/loop_budget.py +0 -0
  415. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/loop_daemon.py +0 -0
  416. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/loop_iteration.py +0 -0
  417. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/loop_stages.py +0 -0
  418. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/loop_state.py +0 -0
  419. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/lr_finder.py +0 -0
  420. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/lr_groups.py +0 -0
  421. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/metrics.py +0 -0
  422. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/mii.py +0 -0
  423. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/minillm.py +0 -0
  424. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/mix_proxy.py +0 -0
  425. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/mixed_precision.py +0 -0
  426. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/mlx.py +0 -0
  427. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/moe.py +0 -0
  428. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/moe_quant.py +0 -0
  429. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/mole_routing.py +0 -0
  430. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/multipack.py +0 -0
  431. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/multipack_sampler.py +0 -0
  432. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/multipack_trainer.py +0 -0
  433. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/namespace_pin.py +0 -0
  434. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/neat_packing.py +0 -0
  435. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/ngram_spec.py +0 -0
  436. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/nlg_metrics.py +0 -0
  437. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/ollama.py +0 -0
  438. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/onboarding.py +0 -0
  439. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/optimizer_zoo.py +0 -0
  440. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/paths.py +0 -0
  441. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/peft_builder.py +0 -0
  442. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/peft_patches.py +0 -0
  443. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/peft_wiring.py +0 -0
  444. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/persona_hub.py +0 -0
  445. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/pipeline.py +0 -0
  446. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/preference_combine.py +0 -0
  447. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/prm.py +0 -0
  448. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/probe_pack.py +0 -0
  449. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/profiler.py +0 -0
  450. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/profiling.py +0 -0
  451. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/profiling_v0_43.py +0 -0
  452. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/prompt_compile.py +0 -0
  453. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/prompt_distill.py +0 -0
  454. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/prune_prompt.py +0 -0
  455. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/qat.py +0 -0
  456. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/qr_url.py +0 -0
  457. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/quality.py +0 -0
  458. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/quant_menu.py +0 -0
  459. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/ra_dit.py +0 -0
  460. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/reasoning_effort.py +0 -0
  461. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/reasoning_parser.py +0 -0
  462. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/recipe_dag.py +0 -0
  463. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/recipe_run.py +0 -0
  464. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/registry.py +0 -0
  465. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/relora.py +0 -0
  466. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/replay.py +0 -0
  467. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/repro_receipt.py +0 -0
  468. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/reward_hacking.py +0 -0
  469. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/ring_attention.py +0 -0
  470. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/rl_checkpoint.py +0 -0
  471. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/run_cost.py +0 -0
  472. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/sae_diff.py +0 -0
  473. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/save_formats.py +0 -0
  474. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/server_tools.py +0 -0
  475. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/sglang.py +0 -0
  476. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/shortcuts.py +0 -0
  477. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/signing.py +0 -0
  478. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/sleeper_probe.py +0 -0
  479. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/soup_lock.py +0 -0
  480. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/spec_pairing.py +0 -0
  481. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/spike_recovery.py +0 -0
  482. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/sse_train_stream.py +0 -0
  483. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/steering.py +0 -0
  484. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/strict_safetensors.py +0 -0
  485. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/structured_output.py +0 -0
  486. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/sweep_config.py +0 -0
  487. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/tail_latency.py +0 -0
  488. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/terraform_plan.py +0 -0
  489. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/tool_outputs.py +0 -0
  490. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/topology.py +0 -0
  491. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/tracing.py +0 -0
  492. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/trackers.py +0 -0
  493. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/train_event_buffer.py +0 -0
  494. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/trainer_plugins.py +0 -0
  495. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/trust_remote.py +0 -0
  496. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/tts.py +0 -0
  497. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/ui_env.py +0 -0
  498. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/uld.py +0 -0
  499. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/unlearning.py +0 -0
  500. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/unlearning_eval.py +0 -0
  501. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/unsloth.py +0 -0
  502. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/v028_features.py +0 -0
  503. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/vector_bank.py +0 -0
  504. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/vllm.py +0 -0
  505. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/vscode_setup.py +0 -0
  506. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/warmup.py +0 -0
  507. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/webhooks.py +0 -0
  508. {soup_cli-0.71.5 → soup_cli-0.71.7}/src/soup_cli/utils/why.py +0 -0
  509. {soup_cli-0.71.5 → soup_cli-0.71.7}/templates/chat.yaml +0 -0
  510. {soup_cli-0.71.5 → soup_cli-0.71.7}/templates/code.yaml +0 -0
  511. {soup_cli-0.71.5 → soup_cli-0.71.7}/templates/medical.yaml +0 -0
  512. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/__init__.py +0 -0
  513. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/conftest.py +0 -0
  514. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/qa/v053_qa.md +0 -0
  515. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_adapters.py +0 -0
  516. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_advanced_peft.py +0 -0
  517. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_assistant_mask.py +0 -0
  518. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_audio.py +0 -0
  519. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_auto_tuning.py +0 -0
  520. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_autopilot.py +0 -0
  521. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_awq_gptq_export.py +0 -0
  522. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_batch_probe.py +0 -0
  523. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_bco.py +0 -0
  524. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_bench.py +0 -0
  525. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_brain_rot_multilingual.py +0 -0
  526. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_bugfixes.py +0 -0
  527. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_callback.py +0 -0
  528. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_cans.py +0 -0
  529. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_chat.py +0 -0
  530. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_chat_template.py +0 -0
  531. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_cli.py +0 -0
  532. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_cli_subprocess.py +0 -0
  533. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_config.py +0 -0
  534. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_cost.py +0 -0
  535. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_crash_reporter.py +0 -0
  536. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_curriculum.py +0 -0
  537. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_data.py +0 -0
  538. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_data_augment.py +0 -0
  539. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_data_sample.py +0 -0
  540. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_data_split.py +0 -0
  541. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_data_tools.py +0 -0
  542. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_dataset_hub.py +0 -0
  543. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_dataset_registry.py +0 -0
  544. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_deepspeed.py +0 -0
  545. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_deploy_ollama.py +0 -0
  546. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_diff.py +0 -0
  547. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_display.py +0 -0
  548. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_doctor.py +0 -0
  549. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_dpo_example.py +0 -0
  550. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_dpo_variants.py +0 -0
  551. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_embedding.py +0 -0
  552. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_errors.py +0 -0
  553. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_eval.py +0 -0
  554. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_eval_gate.py +0 -0
  555. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_eval_platform.py +0 -0
  556. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_export.py +0 -0
  557. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_formats.py +0 -0
  558. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_fp8_recipe.py +0 -0
  559. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_freeze_training.py +0 -0
  560. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_generate.py +0 -0
  561. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_gpu.py +0 -0
  562. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_grpo.py +0 -0
  563. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_hf_integration.py +0 -0
  564. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_infer.py +0 -0
  565. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_inference_advanced.py +0 -0
  566. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_init.py +0 -0
  567. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_ipo.py +0 -0
  568. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_jinja_analyzer.py +0 -0
  569. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_kto.py +0 -0
  570. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_loader.py +0 -0
  571. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_log_level.py +0 -0
  572. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_loss_watchdog.py +0 -0
  573. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_merge.py +0 -0
  574. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_migrate.py +0 -0
  575. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_mlx_backend.py +0 -0
  576. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_moe.py +0 -0
  577. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_multi_adapter.py +0 -0
  578. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_multi_gpu.py +0 -0
  579. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_multipack_config.py +0 -0
  580. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_multipack_invariants.py +0 -0
  581. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_multipack_sampler.py +0 -0
  582. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_neat_packing.py +0 -0
  583. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_neftune_rslora.py +0 -0
  584. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_onnx_tensorrt_export.py +0 -0
  585. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_orpo.py +0 -0
  586. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_packing.py +0 -0
  587. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_part_a_wave1.py +0 -0
  588. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_part_a_wave2.py +0 -0
  589. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_part_b.py +0 -0
  590. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_part_c.py +0 -0
  591. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_part_d.py +0 -0
  592. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_part_e.py +0 -0
  593. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_part_f_hardening.py +0 -0
  594. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_peft_methods.py +0 -0
  595. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_peft_patches.py +0 -0
  596. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_performance.py +0 -0
  597. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_pissa_init.py +0 -0
  598. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_ppo.py +0 -0
  599. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_preference_dispatcher.py +0 -0
  600. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_preference_multi.py +0 -0
  601. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_preference_multi_runtime.py +0 -0
  602. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_pretrain.py +0 -0
  603. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_profile.py +0 -0
  604. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_profiling.py +0 -0
  605. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_progress.py +0 -0
  606. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_push.py +0 -0
  607. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_qat.py +0 -0
  608. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_quality_filter.py +0 -0
  609. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_quant_check.py +0 -0
  610. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_quant_menu.py +0 -0
  611. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_quickstart.py +0 -0
  612. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_rank_pattern.py +0 -0
  613. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_recipes.py +0 -0
  614. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_recipes_v031.py +0 -0
  615. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_refusal_multilingual.py +0 -0
  616. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_registry.py +0 -0
  617. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_relora.py +0 -0
  618. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_replay.py +0 -0
  619. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_resume.py +0 -0
  620. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_rlvr.py +0 -0
  621. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_run_cost.py +0 -0
  622. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_runs.py +0 -0
  623. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_serve.py +0 -0
  624. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_server_generate.py +0 -0
  625. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_sglang_serve.py +0 -0
  626. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_simpo.py +0 -0
  627. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_smoke_train.py +0 -0
  628. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_speculative_decoding.py +0 -0
  629. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_sweep.py +0 -0
  630. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_synth_data_pro.py +0 -0
  631. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_templates_yaml.py +0 -0
  632. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_tensorboard.py +0 -0
  633. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_tool_calling.py +0 -0
  634. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_trace_to_pref.py +0 -0
  635. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_tracker.py +0 -0
  636. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_trainer_coverage_v035.py +0 -0
  637. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_trainer_init.py +0 -0
  638. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_training_intelligence.py +0 -0
  639. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_training_speed.py +0 -0
  640. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_trust_remote_code.py +0 -0
  641. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_tui.py +0 -0
  642. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_ui.py +0 -0
  643. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_ui_chat.py +0 -0
  644. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_ui_config_builder.py +0 -0
  645. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_ui_live_monitor.py +0 -0
  646. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_ui_metrics.py +0 -0
  647. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_unsloth.py +0 -0
  648. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0401_part_c.py +0 -0
  649. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0401_part_d.py +0 -0
  650. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0401_part_e.py +0 -0
  651. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0402_part_a.py +0 -0
  652. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0402_part_b.py +0 -0
  653. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0403_part_a.py +0 -0
  654. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0403_part_b.py +0 -0
  655. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0403_part_c.py +0 -0
  656. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0404_part_a.py +0 -0
  657. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0404_part_b.py +0 -0
  658. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0405_part_a.py +0 -0
  659. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0406_part_a.py +0 -0
  660. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0410_part_a.py +0 -0
  661. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0410_part_b.py +0 -0
  662. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0410_part_c.py +0 -0
  663. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0420.py +0 -0
  664. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0430_part_a.py +0 -0
  665. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0430_part_b.py +0 -0
  666. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0430_part_c.py +0 -0
  667. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0430_part_d.py +0 -0
  668. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0440_part_a.py +0 -0
  669. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0440_part_b.py +0 -0
  670. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0440_part_c.py +0 -0
  671. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0440_part_d.py +0 -0
  672. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0440_review_followups.py +0 -0
  673. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0450.py +0 -0
  674. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0460_part_a.py +0 -0
  675. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0460_part_b.py +0 -0
  676. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0470_part_a.py +0 -0
  677. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0470_part_b.py +0 -0
  678. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0480_part_a.py +0 -0
  679. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0480_part_b.py +0 -0
  680. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0490.py +0 -0
  681. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0500_part_a.py +0 -0
  682. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0500_part_b.py +0 -0
  683. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0500_part_c.py +0 -0
  684. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0500_part_d.py +0 -0
  685. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0500_part_e.py +0 -0
  686. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0510.py +0 -0
  687. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0520.py +0 -0
  688. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0530.py +0 -0
  689. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v05310.py +0 -0
  690. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v05311.py +0 -0
  691. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0531_109.py +0 -0
  692. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0531_139.py +0 -0
  693. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0531_142.py +0 -0
  694. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0531_82.py +0 -0
  695. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0532.py +0 -0
  696. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0533.py +0 -0
  697. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0534.py +0 -0
  698. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0535.py +0 -0
  699. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0536.py +0 -0
  700. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0537.py +0 -0
  701. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0538.py +0 -0
  702. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0539.py +0 -0
  703. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0540.py +0 -0
  704. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0550.py +0 -0
  705. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0550_followups.py +0 -0
  706. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0560.py +0 -0
  707. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0570_part_a.py +0 -0
  708. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0570_part_b.py +0 -0
  709. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0570_part_c.py +0 -0
  710. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0570_part_d.py +0 -0
  711. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0580.py +0 -0
  712. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0590.py +0 -0
  713. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0600_part_a.py +0 -0
  714. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0600_part_b.py +0 -0
  715. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0600_part_c.py +0 -0
  716. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0600_part_d.py +0 -0
  717. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0600_part_e.py +0 -0
  718. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0600_part_f.py +0 -0
  719. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0610_part_a.py +0 -0
  720. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0610_part_b.py +0 -0
  721. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0610_part_c.py +0 -0
  722. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0610_part_d.py +0 -0
  723. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0610_part_e.py +0 -0
  724. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0620_followups.py +0 -0
  725. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0620_part_a.py +0 -0
  726. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0620_part_b.py +0 -0
  727. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0620_part_c.py +0 -0
  728. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0620_part_d.py +0 -0
  729. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0620_part_e.py +0 -0
  730. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0630_followups.py +0 -0
  731. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0630_part_a.py +0 -0
  732. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0630_part_b.py +0 -0
  733. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0630_part_c.py +0 -0
  734. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0630_part_d.py +0 -0
  735. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0630_part_e.py +0 -0
  736. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0631_206.py +0 -0
  737. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0640_followups.py +0 -0
  738. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0640_part_a.py +0 -0
  739. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0640_part_b.py +0 -0
  740. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0640_part_c.py +0 -0
  741. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0640_part_d.py +0 -0
  742. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0640_part_e.py +0 -0
  743. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0640_part_f.py +0 -0
  744. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0650_followups.py +0 -0
  745. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0650_part_a.py +0 -0
  746. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0650_part_b.py +0 -0
  747. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0650_part_c.py +0 -0
  748. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0650_part_d.py +0 -0
  749. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0650_part_e.py +0 -0
  750. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0660_cli.py +0 -0
  751. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0660_followups.py +0 -0
  752. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0660_part_a.py +0 -0
  753. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0660_part_b.py +0 -0
  754. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0660_part_c.py +0 -0
  755. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0660_part_d.py +0 -0
  756. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0660_part_e.py +0 -0
  757. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0670_followups.py +0 -0
  758. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0670_part_a.py +0 -0
  759. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0670_part_b.py +0 -0
  760. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0670_part_c.py +0 -0
  761. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0670_part_d.py +0 -0
  762. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0670_part_e.py +0 -0
  763. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0670_part_f.py +0 -0
  764. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0680_followups.py +0 -0
  765. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0680_part_a.py +0 -0
  766. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0680_part_b.py +0 -0
  767. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0680_part_c.py +0 -0
  768. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0680_part_d.py +0 -0
  769. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0680_part_e.py +0 -0
  770. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0690_part_b.py +0 -0
  771. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0690_part_d.py +0 -0
  772. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0690_part_e.py +0 -0
  773. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0700_part_a.py +0 -0
  774. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0700_part_b.py +0 -0
  775. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0700_part_c.py +0 -0
  776. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0700_part_d.py +0 -0
  777. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0700_part_e.py +0 -0
  778. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0700_part_f.py +0 -0
  779. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0712.py +0 -0
  780. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0713.py +0 -0
  781. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0714.py +0 -0
  782. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_v0715.py +0 -0
  783. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_validator.py +0 -0
  784. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_vision.py +0 -0
  785. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_vllm_serve.py +0 -0
  786. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_why.py +0 -0
  787. {soup_cli-0.71.5 → soup_cli-0.71.7}/tests/test_windows_encoding.py +0 -0
@@ -0,0 +1,8 @@
1
+ # .mailmap — consolidate contributor identities for `git shortlog` and the
2
+ # GitHub contributors graph. See: https://git-scm.com/docs/gitmailmap
3
+ #
4
+ # Salil Mhatre committed under four name/email combinations
5
+ # (two emails, three display names). Map them all to one canonical identity.
6
+ Salil Mhatre <32305505+Deadpool2000@users.noreply.github.com> <d2kyt@protonmail.com>
7
+ Salil Mhatre <32305505+Deadpool2000@users.noreply.github.com> Salil <32305505+Deadpool2000@users.noreply.github.com>
8
+ Salil Mhatre <32305505+Deadpool2000@users.noreply.github.com> Salil M <32305505+Deadpool2000@users.noreply.github.com>
@@ -12,6 +12,87 @@ reproducing 70+ versions of notes.
12
12
 
13
13
  ## [Unreleased]
14
14
 
15
+ ## [0.71.7] - 2026-06-02
16
+
17
+ ### Added
18
+ - **Eval live runners** — six probe surfaces that previously emitted heuristic
19
+ / neutral stubs now load a real model and run live (closes #161, #162, #208,
20
+ #211, #212, #165). New shared `soup_cli/utils/live_eval.py` provides the
21
+ model-loading primitives (generator / multi-generator closures, masked
22
+ cross-entropy eval-loss, a short-LoRA probe, and held-out logit agreement);
23
+ every heavy import (`torch` / `transformers` / `peft` / `lm_eval`) is lazy.
24
+ - **`soup advise --probe-model <id>`** — runs a LIVE ROI probe: zero/few-shot
25
+ token-F1 baselines, a short LoRA probe (relative held-out-loss improvement +
26
+ real wall-clock), and base-model proximity (held-out logit agreement) folded
27
+ into the dataset profile. Without `--probe-model`, `--probe` stays the offline
28
+ heuristic.
29
+ - **`soup tunability --live`** — replaces the offline heuristic with a real
30
+ per-candidate LoRA probe (loads each `repo_id`, trains `--probe-steps` on a
31
+ held-out-excluded slice, reports the held-out-loss drop).
32
+ - **`soup eval capability --live --model <id>`** — invokes lm-eval-harness per
33
+ resolved task (or a `--tasks` override) with `--limit` / `--device`, isolating
34
+ per-task failures and surfacing a no-metric result as an explicit error.
35
+ - **`soup eval behavior --base-model <id> [--adapter <path>]`** — generates
36
+ pre/post responses on the bundled behaviour battery and scores the live diff.
37
+ - **`soup diagnose --base-model <id> [--adapter <path>] [--dataset <jsonl>]
38
+ [--tokenizer <id>]`** — runs all six failure-mode probes (forgetting / refusal
39
+ / format / mode_collapse / memorization / contamination) live via
40
+ `soup_cli.utils.diagnose.live.run_live_diagnose`; falls back to neutral OK or
41
+ `--evidence` JSON when no model is supplied.
42
+
43
+ ### Security
44
+ - The two new JSONL dataset readers (`diagnose.live._load_dataset_rows`,
45
+ `tunability._load_jsonl_rows`) open with `O_NOFOLLOW` after the cwd-containment
46
+ check, closing the check→open TOCTOU window (matches the v0.65 / v0.67 reader
47
+ policy).
48
+
49
+ ## [0.71.6] - 2026-06-02
50
+
51
+ ### Added
52
+ - **`soup build` live runner** — the dbt-for-SFT DAG (`soup build <manifest>`) now
53
+ *materialises* datasets instead of only dry-running the plan. Five built-in
54
+ transforms ship live (`identity`, `drop_empty`, `lowercase`, `strip`,
55
+ `dedup_exact`); `table` rebuilds from scratch, `view` re-derives on every run,
56
+ and `incremental` re-transforms only the rows whose content hash changed
57
+ (tracked in a SQLite state store, keyed by row hash **and** the model's
58
+ transform+config fingerprint so a transform change re-runs everything). Custom
59
+ transforms are passed per-run via the Python API's `transforms=` map. Outputs
60
+ are written atomically; the `--output-dir` is symlink-checked before any
61
+ directory is created.
62
+ - **`soup data gen-magpie` live generator** — the Magpie synthetic generator
63
+ (Xu et al. 2024) now actually generates. It feeds an aligned model its
64
+ chat-template prefix (chatml / llama3 / gemma / mistral families auto-detected)
65
+ and harvests the self-generated user instruction + assistant response via raw
66
+ completion. Live providers: `ollama` (`/api/generate` raw) and `vllm`
67
+ (`/v1/completions`) — both SSRF-hardened (loopback-only HTTP); `anthropic` is
68
+ rejected (no raw-completion endpoint). Optional `--quality-filter` drops
69
+ low-quality rows via the v0.47 toxicity/educational scorers; exact-duplicate
70
+ instructions are de-duplicated.
71
+ - **`soup eval irt-subset --model {1pl,2pl,3pl}`** — the IRT eval-cost optimiser
72
+ gained 2PL (per-item discrimination) and 3PL (+guessing floor) joint
73
+ coordinate-ascent MLE fits alongside the existing 1PL Rasch. `1pl` keeps the
74
+ closed-form path for back-compat; `2pl`/`3pl` route through the new `fit_irt`.
75
+ - **Tokenizer-aware memorization probe** — `score_memorization(..., tokenizer=...)`
76
+ and `split_prefix(..., tokenizer=...)` (used by `soup diagnose`) now split the
77
+ prefix/suffix on real token-id boundaries and measure echo-overlap over
78
+ sub-word tokens when a tokenizer (HF id / path / duck-typed object) is supplied,
79
+ catching BPE-level memorization that whitespace tokenisation misses. Default
80
+ (no tokenizer) keeps the whitespace behaviour.
81
+
82
+ ### Fixed
83
+ - **`soup data augment --provider ollama|vllm` no longer crashes** — the command
84
+ imported a non-existent `OllamaProvider` symbol and raised `ImportError` on
85
+ every non-OpenAI provider. It now routes through the shared, SSRF-hardened
86
+ provider factory; `--model` / `--base-url` are honoured, the output path is
87
+ containment- and symlink-checked, and the write is atomic.
88
+
89
+ ### Security
90
+ - **Ollama / vLLM provider URLs reject `0.0.0.0`** — `validate_ollama_url` /
91
+ `validate_vllm_url` dropped the bind-any wildcard from their loopback allow-set
92
+ (now `localhost` / `127.0.0.1` / `::1` only), matching the newer
93
+ `validate_hub_endpoint` / `validate_webhook_url` SSRF validators. Reachable now
94
+ that Magpie threads a user-supplied `--base-url` through these providers.
95
+
15
96
  ## [0.71.5] - 2026-06-02
16
97
 
17
98
  ### Added
@@ -120,7 +120,7 @@ src/soup_cli/
120
120
  templates/ - 17 built-in soup.yaml templates (YAML + manifest.json) with load_template loader (v0.39.0, +bco v0.40.0)
121
121
  ui/ - Web UI (FastAPI + HTML/JS SPA)
122
122
 
123
- tests/ - Test suite (275 files, 12581 tests)
123
+ tests/ - Test suite (277 files, 12771 tests)
124
124
  examples/ - Real-world config examples and datasets
125
125
  ```
126
126
 
@@ -150,7 +150,11 @@ pytest tests/test_data.py::test_detect_alpaca_format -v
150
150
  pytest tests/ --cov=soup_cli --cov-report=html
151
151
  ```
152
152
 
153
- ### Test Files (86 files)
153
+ ### Test Files (275 files)
154
+
155
+ > A representative sample of the suite below. The full table lives in
156
+ > [`.claude/CLAUDE.md`](.claude/CLAUDE.md); run `pytest tests/ -v` for the complete list.
157
+
154
158
 
155
159
  | File | Covers |
156
160
  |------|--------|
@@ -441,6 +445,17 @@ The project follows semantic versioning: `MAJOR.MINOR.PATCH`
441
445
  5. Tag: `git tag v0.X.0 && git push --tags`
442
446
  6. GitHub Actions auto-publishes to PyPI on the `v*` tag (Trusted Publisher / OIDC)
443
447
 
448
+ ## Recognition
449
+
450
+ We credit every contributor — recognition is free and you earned it.
451
+
452
+ - **[CONTRIBUTORS.md](CONTRIBUTORS.md):** every merged (or in-tree-adopted) PR adds you here, with your work and PR number.
453
+ - **CHANGELOG.md:** from the release that ships your change, the entry is tagged `(#NNN by @you)`.
454
+ - **Commit trailers:** PRs land with a `Co-Authored-By:` line for you, so the GitHub
455
+ contributors graph reflects your work even after a squash merge.
456
+
457
+ If you contributed and aren't credited somewhere, that's a bug — open a PR or an issue and we'll fix it.
458
+
444
459
  ## Community
445
460
 
446
461
  - **Issues:** Report bugs and request features on [GitHub Issues](https://github.com/MakazhanAlpamys/Soup/issues)
@@ -0,0 +1,43 @@
1
+ # Contributors
2
+
3
+ Soup is built by its community. Thank you to everyone who has contributed code,
4
+ tests, docs, and ideas. ❤️
5
+
6
+ This list is maintained by hand alongside the GitHub
7
+ [contributors graph](https://github.com/MakazhanAlpamys/Soup/graphs/contributors).
8
+ Merged a PR and don't see yourself here? Open a PR adding your line — that counts too.
9
+
10
+ ## Maintainer
11
+
12
+ - **Alpamys** ([@MakazhanAlpamys](https://github.com/MakazhanAlpamys)) — creator & lead maintainer
13
+
14
+ ## Contributors
15
+
16
+ Listed by first contribution. PR numbers link the work.
17
+
18
+ - **Salil Mhatre** ([@Deadpool2000](https://github.com/Deadpool2000))
19
+ - `soup version --json` for machine-readable CI output ([#6](https://github.com/MakazhanAlpamys/Soup/pull/6))
20
+ - RAM + disk-space checks in `soup doctor` ([#7](https://github.com/MakazhanAlpamys/Soup/pull/7))
21
+ - `soup runs clean` for smart checkpoint space management ([#9](https://github.com/MakazhanAlpamys/Soup/pull/9))
22
+ - Official Docker support for easier onboarding ([#20](https://github.com/MakazhanAlpamys/Soup/pull/20))
23
+ - `soup bench` — model speed + VRAM measurement ([#25](https://github.com/MakazhanAlpamys/Soup/pull/25))
24
+ - `--prompts-file` option for `soup bench` ([#30](https://github.com/MakazhanAlpamys/Soup/pull/30))
25
+ - Happy-path + CPU-warning tests for `soup bench` ([#31](https://github.com/MakazhanAlpamys/Soup/pull/31))
26
+ - `soup cost` — cloud GPU training cost estimation ([#42](https://github.com/MakazhanAlpamys/Soup/pull/42))
27
+ - `--nccl` flag for `soup doctor` multi-GPU bandwidth checks ([#178](https://github.com/MakazhanAlpamys/Soup/pull/178))
28
+ - **Chinmaya Sahu** ([@csking101](https://github.com/csking101))
29
+ - DPO example config, sample data, and tests ([#48](https://github.com/MakazhanAlpamys/Soup/pull/48))
30
+ - FP8 `rowwise` + `rowwise_with_gw_hp` scaling recipes ([#62](https://github.com/MakazhanAlpamys/Soup/pull/62))
31
+ - **Yixuan Xu** ([@mzl2233](https://github.com/mzl2233))
32
+ - Guard diagnose-gate on distributed worker ranks ([#169](https://github.com/MakazhanAlpamys/Soup/pull/169))
33
+ - **dreamer0129** ([@dreamer0129](https://github.com/dreamer0129))
34
+ - Rich-markup escape fix in legacy `soup adapters` commands ([#175](https://github.com/MakazhanAlpamys/Soup/pull/175), adopted in-tree as [#174](https://github.com/MakazhanAlpamys/Soup/issues/174))
35
+ - **Vivaan Dhawan** ([@VIVAAN-DHAWAN](https://github.com/VIVAAN-DHAWAN))
36
+ - Reject pickle/zip streams renamed to `.safetensors` via magic-byte check ([#198](https://github.com/MakazhanAlpamys/Soup/pull/198))
37
+ - **Shivam** ([@shivam2931120](https://github.com/shivam2931120))
38
+ - Tokenizer-aware repetition scoring for the echo-trap detector ([#242](https://github.com/MakazhanAlpamys/Soup/pull/242))
39
+
40
+ ---
41
+
42
+ Want to join this list? See [CONTRIBUTING.md](CONTRIBUTING.md) — good first issues are
43
+ labelled in the [issue tracker](https://github.com/MakazhanAlpamys/Soup/labels/good%20first%20issue).
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: soup-cli
3
- Version: 0.71.5
3
+ Version: 0.71.7
4
4
  Summary: Fine-tune 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
@@ -183,22 +183,22 @@ infrastructure instead of improving models. Soup fixes that.
183
183
 
184
184
  ## What's New
185
185
 
186
- **v0.71.5Ingest, data & prompt polish.** Sharper production-loop ergonomics:
187
-
188
- - **Alternative model hubs for data** — `soup data push --hub modelscope|modelers` uploads a
189
- local JSONL to ModelScope / Modelers, and `soup data forge --hub --teacher owner/name`
190
- pre-fetches the teacher from that hub.
191
- - **Tokenizer-aware prompt pruning** `soup prune-prompt --tokenizer <id-or-path>` finds the
192
- shared *token* prefix and decodes only the remainder, so BPE multi-byte sequences never get
193
- truncated mid-token the way char-slicing can.
194
- - **Webhooks everywhere**`--slack-url` / `--discord-url` now work on `soup ingest`,
195
- `soup prune-prompt`, `soup ab`, and `soup data active-sample` (same SSRF-hardened validator as
196
- `soup drift-alarm`). The A/B harness only pings when the sequential test actually decides.
197
- - **Curriculum by difficulty percentile** dynamic curriculum can bucket by `loss` /
198
- `perplexity` percentile instead of length round-robin.
199
- - **Smarter pre-flight `advise`** `soup advise` now nudges its confidence using your prior
200
- verdicts for the same project, and `soup runs replay` can plot a benchmark-score curve, not
201
- just the loss curve.
186
+ **v0.71.7Eval live runners.** Six probe surfaces that used to emit heuristic / neutral stubs
187
+ now load a real model and run live (opt-in flags; the offline paths stay the default):
188
+
189
+ - **`soup diagnose --base-model <id> [--adapter <path>] [--dataset d.jsonl]`** runs all six
190
+ failure-mode probes (forgetting / refusal / format / mode_collapse / memorization /
191
+ contamination) against the loaded model instead of emitting neutral OK.
192
+ - **`soup advise --probe-model <id>`** a live ROI probe: zero/few-shot token-F1 baselines, a
193
+ short LoRA probe (real held-out-loss drop + wall-clock), and base-model proximity.
194
+ - **`soup tunability --live`** a real per-candidate LoRA probe (loads each base, trains
195
+ `--probe-steps` on a held-out slice).
196
+ - **`soup eval capability --live --model <id>`** invokes lm-eval-harness per task (with
197
+ `--tasks` / `--limit` / `--device`), isolating per-task failures.
198
+ - **`soup eval behavior --base-model <id> [--adapter <path>]`** — generates pre/post responses on
199
+ the bundled behaviour battery and scores the live diff.
200
+ - New shared `soup_cli/utils/live_eval.py` holds the model-loading primitives; heavy imports stay
201
+ lazy. Validated end-to-end on SmolLM2-135M (RTX 3050 4 GB).
202
202
 
203
203
  Full history: [CHANGELOG.md](CHANGELOG.md) &middot; [GitHub Releases](https://github.com/MakazhanAlpamys/Soup/releases).
204
204
 
@@ -49,22 +49,22 @@ infrastructure instead of improving models. Soup fixes that.
49
49
 
50
50
  ## What's New
51
51
 
52
- **v0.71.5Ingest, data & prompt polish.** Sharper production-loop ergonomics:
53
-
54
- - **Alternative model hubs for data** — `soup data push --hub modelscope|modelers` uploads a
55
- local JSONL to ModelScope / Modelers, and `soup data forge --hub --teacher owner/name`
56
- pre-fetches the teacher from that hub.
57
- - **Tokenizer-aware prompt pruning** `soup prune-prompt --tokenizer <id-or-path>` finds the
58
- shared *token* prefix and decodes only the remainder, so BPE multi-byte sequences never get
59
- truncated mid-token the way char-slicing can.
60
- - **Webhooks everywhere**`--slack-url` / `--discord-url` now work on `soup ingest`,
61
- `soup prune-prompt`, `soup ab`, and `soup data active-sample` (same SSRF-hardened validator as
62
- `soup drift-alarm`). The A/B harness only pings when the sequential test actually decides.
63
- - **Curriculum by difficulty percentile** dynamic curriculum can bucket by `loss` /
64
- `perplexity` percentile instead of length round-robin.
65
- - **Smarter pre-flight `advise`** `soup advise` now nudges its confidence using your prior
66
- verdicts for the same project, and `soup runs replay` can plot a benchmark-score curve, not
67
- just the loss curve.
52
+ **v0.71.7Eval live runners.** Six probe surfaces that used to emit heuristic / neutral stubs
53
+ now load a real model and run live (opt-in flags; the offline paths stay the default):
54
+
55
+ - **`soup diagnose --base-model <id> [--adapter <path>] [--dataset d.jsonl]`** runs all six
56
+ failure-mode probes (forgetting / refusal / format / mode_collapse / memorization /
57
+ contamination) against the loaded model instead of emitting neutral OK.
58
+ - **`soup advise --probe-model <id>`** a live ROI probe: zero/few-shot token-F1 baselines, a
59
+ short LoRA probe (real held-out-loss drop + wall-clock), and base-model proximity.
60
+ - **`soup tunability --live`** a real per-candidate LoRA probe (loads each base, trains
61
+ `--probe-steps` on a held-out slice).
62
+ - **`soup eval capability --live --model <id>`** invokes lm-eval-harness per task (with
63
+ `--tasks` / `--limit` / `--device`), isolating per-task failures.
64
+ - **`soup eval behavior --base-model <id> [--adapter <path>]`** — generates pre/post responses on
65
+ the bundled behaviour battery and scores the live diff.
66
+ - New shared `soup_cli/utils/live_eval.py` holds the model-loading primitives; heavy imports stay
67
+ lazy. Validated end-to-end on SmolLM2-135M (RTX 3050 4 GB).
68
68
 
69
69
  Full history: [CHANGELOG.md](CHANGELOG.md) &middot; [GitHub Releases](https://github.com/MakazhanAlpamys/Soup/releases).
70
70
 
@@ -72,7 +72,8 @@ soup data generate ... --provider anthropic Use Claude API
72
72
  soup data generate ... --provider vllm Use local vLLM server
73
73
  soup data generate ... --template code Domain templates (code/conversation/qa/preference/reasoning)
74
74
  soup data generate ... --quality-pipeline Auto validate + filter + dedup
75
- soup data augment <path> --strategy rephrase|translate|style LLM-driven augmentationsoup data from-traces --logs l.jsonl --format langchain --signal thumbs_up --output p.jsonl Preference pairs from traces
75
+ soup data augment <path> --strategy rephrase|translate|style [--provider ollama|vllm --model <m> --base-url <url>] LLM-driven augmentation
76
+ soup data from-traces --logs l.jsonl --format langchain --signal thumbs_up --output p.jsonl Preference pairs from traces
76
77
  soup data from-traces ... --judge --min-confidence 0.7 LLM-judge confidence filter
77
78
  soup data review prefs.jsonl --sample 10 Preview preference pairssoup data filter <path> --coherence 0.3 Quality filter (perplexity/coherence)
78
79
  soup data sample <path> --n 1000 Random sample subset
@@ -178,7 +179,8 @@ soup ingest|prune-prompt|ab|data active-sample ... --slack-url <https> | --disco
178
179
  soup drift-alarm --reference <jsonl> --live <jsonl> --threshold 0.2 Rolling-KL drift alarm (exit 3 on drift)
179
180
  soup drift-alarm ... --slack-url <https> | --discord-url <https> Optional SSRF-validated webhook on drift detected
180
181
  soup tunability --list List built-in candidate-base catalogue
181
- soup tunability --dataset <jsonl> [--candidates a,b,c] Probe 8 candidate bases + Pareto frontier report
182
+ soup tunability --dataset <jsonl> [--candidates a,b,c] Probe candidate bases + Pareto frontier report
183
+ soup tunability --dataset <jsonl> --live [--device cpu] LIVE per-candidate LoRA probe (loads each repo)
182
184
  soup plan --config soup.yaml Pre-flight summary + write soup.tfstate
183
185
  soup apply --config soup.yaml [--dry-run] Lock-and-execute; refuses on drift (exit 3)
184
186
  soup env lock | status | check Hermetic env lockfile + ABI drift detection (exit 3)
@@ -210,9 +212,9 @@ soup local-rl status --db <path> Print interactions / thumbs-up / t
210
212
  soup local-rl record --db <path> --prompt <q> --response <r> --thumb up|down Append thumbs record
211
213
  soup local-rl harvest --db <path> -o <pairs.jsonl> Harvest DPO pairs from thumbs into JSONL
212
214
  soup local-rl train --db <path> --backend ollama|mlx --model <id> Nightly DPO/KTO/ORPO train (v0.68.1)
213
- soup build <manifest.yaml> [--dry-run] dbt-for-SFT DAG: validate + plan dataset transforms (v0.69.0)
215
+ soup build <manifest.yaml> [--dry-run] [--output-dir <dir>] dbt-for-SFT DAG: validate + plan + live materialise (v0.69.0; live v0.71.6)
214
216
  soup expect <data.jsonl> <suite.yaml> Expectations suite: PII / token-length / refusal / judge (v0.69.0)
215
- soup data gen-magpie --base <m> --provider ollama|anthropic|vllm --target N [--plan-only] Magpie synthetic generator (v0.69.0)
217
+ soup data gen-magpie --base <m> --provider ollama|vllm --target N --output <jsonl> [--base-url <url>] [--quality-filter] Magpie synthetic generator — live (v0.69.0; live v0.71.6)
216
218
  soup data persona-mix --prompts <jsonl> --n N --output <jsonl> Persona-Hub diversity sampler (v0.69.0)
217
219
  soup data brain-rot <data.jsonl> [--strict] Brain-rot detector — arXiv 2510.13928 (v0.69.0)
218
220
  soup iterative-dpo --base-model <m> --reward-model <rm> --prompts <p.jsonl> --output-dir <out> --rounds N --pairs-per-round N [--plan-only] Iterative DPO loop driver (v0.70.0; live runner v0.70.1)
@@ -41,8 +41,8 @@ models:
41
41
  - {name: filtered, kind: incremental, refs: [raw], transform: filter_low_quality}
42
42
  - {name: tokenized, kind: incremental, refs: [filtered], transform: tokenize}
43
43
  EOF
44
- soup build build.yaml --dry-run # validate topology + plan
45
- # soup build build.yaml # live materialise (v0.69.1)
44
+ soup build build.yaml --dry-run # validate topology + plan
45
+ soup build build.yaml --output-dir built/ # live materialise (v0.71.6)
46
46
 
47
47
  # Expectations suite — Great Expectations for chat data
48
48
  cat > suite.yaml << 'EOF'
@@ -53,9 +53,9 @@ expectations:
53
53
  EOF
54
54
  soup expect data.jsonl suite.yaml # exit 3 on suite failure
55
55
 
56
- # Magpie synthetic data — chat-template-prefix harvest (plan, runner v0.69.1)
56
+ # Magpie synthetic data — chat-template-prefix harvest (live, v0.71.6)
57
57
  soup data gen-magpie --base meta-llama/Llama-3.1-8B-Instruct \
58
- --provider ollama --target 1000 --plan-only
58
+ --provider ollama --target 1000 --output magpie.jsonl --quality-filter
59
59
 
60
60
  # Persona-Hub diversity — prompt × persona × style matrix sampling
61
61
  soup data persona-mix --prompts prompts.jsonl --n 500 --output mixed.jsonl
@@ -64,7 +64,7 @@ soup data persona-mix --prompts prompts.jsonl --n 500 --output mixed.jsonl
64
64
  soup data brain-rot data.jsonl --strict --max-major-fraction 0.10
65
65
  ```
66
66
 
67
- Every command applies the project-wide TOCTOU policy (`os.lstat + S_ISLNK` symlink rejection before any open) and cwd containment via the shared `paths.enforce_under_cwd_and_no_symlink` helper. Live runners for `soup build` and `soup data gen-magpie` land in v0.69.1; the other three are LIVE today.
67
+ Every command applies the project-wide TOCTOU policy (`os.lstat + S_ISLNK` symlink rejection before any open) and cwd containment via the shared `paths.enforce_under_cwd_and_no_symlink` helper. All five are LIVE: `soup build` materialises with five built-in transforms (`identity` / `drop_empty` / `lowercase` / `strip` / `dedup_exact`) and SQLite-tracked incremental re-transform (v0.71.6); `soup data gen-magpie` harvests via raw completion against `--provider ollama|vllm` (loopback-only; `anthropic` rejected no raw-completion endpoint, v0.71.6).
68
68
 
69
69
 
70
70
  ## Production Trace Ecosystem (`soup ingest`)
@@ -206,9 +206,13 @@ soup data augment ./data/train.jsonl --strategy translate --lang es,fr,de \
206
206
  # Style transfer (formal / casual / technical / etc.)
207
207
  soup data augment ./data/train.jsonl --strategy style --styles formal,casual \
208
208
  --output ./data/train_styled.jsonl
209
+
210
+ # Local provider (Ollama / vLLM) — loopback-only, pick the model + base URL
211
+ soup data augment ./data/train.jsonl --strategy rephrase --count 2 \
212
+ --provider ollama --model qwen2.5:0.5b --output ./data/train_local.jsonl
209
213
  ```
210
214
 
211
- Works with any provider supported by `soup data generate` (OpenAI, Ollama, Anthropic, vLLM, local server). `--count` is capped at 10; `--lang` and `--styles` each capped at 10 entries × 32 chars.
215
+ Works with any provider supported by `soup data generate` (OpenAI, Ollama, vLLM, local server). `--model` and `--base-url` select a specific local model/endpoint; the Ollama/vLLM paths are loopback-only (SSRF-hardened). `--count` is capped at 10; `--lang` and `--styles` each capped at 10 entries × 32 chars.
212
216
 
213
217
 
214
218
  ## Trace-to-Preference
@@ -61,9 +61,13 @@ soup advise data.jsonl --goal "make our chatbot more concise"
61
61
  # Why: Task is summarization with 120 rows and healthy diversity ...
62
62
  # Flip when: the prompt-engineering baseline already meets your target ...
63
63
 
64
- # Optional 10-min ROI probe (zero/few-shot + RAG + 100-step LoRA).
64
+ # Optional ROI probe (offline heuristic: zero/few-shot + RAG + LoRA estimate).
65
65
  soup advise data.jsonl --goal "summarize my reports" --probe
66
66
 
67
+ # LIVE ROI probe (v0.71.7): loads the model for zero/few-shot token-F1, a short
68
+ # LoRA probe, and base-model proximity (held-out logit agreement). Implies --probe.
69
+ soup advise data.jsonl --goal "..." --probe-model HuggingFaceTB/SmolLM2-135M
70
+
67
71
  # Print the rubric / evidence trail of the last verdict.
68
72
  soup advise explain
69
73
 
@@ -239,9 +243,13 @@ Default threshold 0.2 matches v0.43.0 KL-delta quant-check thresholds. Webhooks
239
243
  `soup diagnose` scores six independent failure modes for a trained adapter and renders an OK / MINOR / MAJOR verdict per mode plus an overall headline — same taxonomy as Quant-Lobotomy. Useful for catching adapter regressions that a loss curve cannot distinguish from a healthy run.
240
244
 
241
245
  ```bash
242
- # Heuristic neutral report (no model load — runs as a sanity check)
246
+ # Neutral report (no model load — runs as a sanity check)
243
247
  soup diagnose my-run-id
244
248
 
249
+ # LIVE (v0.71.7): load the model and run all six probes for real
250
+ soup diagnose my-run-id --base-model HuggingFaceTB/SmolLM2-135M \
251
+ --adapter ./out --dataset train.jsonl --tokenizer HuggingFaceTB/SmolLM2-135M
252
+
245
253
  # Compute scores from a pre-built evidence JSON
246
254
  soup diagnose my-run-id --evidence evidence.json --output diag.json
247
255
 
@@ -252,6 +260,12 @@ soup diagnose my-run-id --badge diag.svg
252
260
  soup diagnose my-run-id --output diag.json --attach-to-registry abc123
253
261
  ```
254
262
 
263
+ **Live runners (v0.71.7).** With `--base-model` the six probes run against the loaded model
264
+ (+ optional `--adapter` LoRA path, `--dataset` for the forgetting / format / memorization probes,
265
+ `--tokenizer` for a sub-word memorization variant) instead of emitting neutral OK. `refusal` uses
266
+ a built-in probe set; `format` only fires when the dataset's own targets look like JSON;
267
+ `contamination` stays neutral unless a benchmark corpus is supplied. Validated on SmolLM2-135M.
268
+
255
269
  **Six failure-mode probes:**
256
270
 
257
271
  | Mode | What it catches | Score range |
@@ -429,7 +443,7 @@ soup tunability --dataset ./eval.jsonl --candidates qwen3-0.6b,phi-4-mini --plan
429
443
  soup tunability --dataset ./eval.jsonl --probe-steps 100 --output ./tunability.json
430
444
  ```
431
445
 
432
- The report is a Pareto frontier over (eval delta from base, train cost, license) — candidates that nothing dominates on both axes survive, so you see a clean shortlist instead of a noisy single-leaderboard score. Live LoRA probe lands in v0.64.1; v0.64.0 ships the schema, Pareto math, and a `probe_fn=` injection point.
446
+ The report is a Pareto frontier over (eval delta from base, train cost, license) — candidates that nothing dominates on both axes survive, so you see a clean shortlist instead of a noisy single-leaderboard score. By default the probe is a deterministic offline heuristic; pass `--live` (v0.71.7) to run a real per-candidate LoRA probe (loads each `repo_id`, trains `--probe-steps` on a held-out-excluded slice, reports the held-out-loss drop). `--device` selects cuda / cpu.
433
447
 
434
448
 
435
449
  ## Eval Depth (`soup eval behavior / capability / checklist / irt-subset`)
@@ -459,6 +473,10 @@ Persist a calibration once and reuse it across runs (v0.71.1): `write_judge_cali
459
473
  # Score over-refusal regression on XSTest (operator supplies evidence JSON)
460
474
  soup eval behavior my_run --battery xstest --evidence ev.json --output diff.json
461
475
 
476
+ # LIVE (v0.71.7): generate pre/post responses on the bundled battery + score the diff
477
+ soup eval behavior my_run --battery xstest \
478
+ --base-model HuggingFaceTB/SmolLM2-135M --adapter ./out
479
+
462
480
  # Bundled batteries: xstest, harmbench, jailbreakbench, elephant, syceval
463
481
  # Harmful prompts ship REDACTED — pull real sets from upstream papers.
464
482
  ```
@@ -472,9 +490,13 @@ soup eval capability my_run --suite math --output cap.json # AIME + MATH-500
472
490
  soup eval capability my_run --suite code --output cap.json # HumanEval+ + SWE-bench-Verified
473
491
  soup eval capability my_run --suite fast --output cap.json # MMLU-Pro + HumanEval+
474
492
  soup eval capability my_run --suite full --output cap.json # all 7 benchmarks
493
+
494
+ # LIVE (v0.71.7): invoke lm-eval-harness per task against a real model
495
+ soup eval capability my_run --live --model HuggingFaceTB/SmolLM2-135M \
496
+ --tasks arc_easy --limit 1 --device cpu
475
497
  ```
476
498
 
477
- Emits the (benchmark, lm-eval task) manifest; chain into the existing `soup eval benchmark` surface.
499
+ Without `--live` it emits the (benchmark, lm-eval task) manifest; chain into the existing `soup eval benchmark` surface. With `--live --model <id>` (v0.71.7) it runs lm-eval-harness per resolved task — or a `--tasks` override — isolating per-task failures and capping examples with `--limit`.
478
500
 
479
501
  **CheckList behavioural DSL** — Ribeiro et al. 2020 MFT / INV / DIR tests:
480
502
 
@@ -503,8 +525,11 @@ soup eval checklist tests.yaml --evidence responses.json
503
525
  ```bash
504
526
  # Pick top-info 30% of items (5-10x eval-bill cut without losing power)
505
527
  soup eval irt-subset per_item_correctness.jsonl --size small --output plan.json
528
+
529
+ # Richer item models: 2PL learns per-item discrimination, 3PL adds a guessing floor
530
+ soup eval irt-subset per_item_correctness.jsonl --size small --model 2pl
506
531
  ```
507
532
 
508
- Closed-form 1PL Rasch fit (`β̂_i = -log(p̂_i / (1 - p̂_i))`); ranks by `p̂ · (1-p̂)` info (maximised at 50/50 items, since extremes carry no new ranking information). `full` keeps 100%, `small` keeps 30%, `tiny` keeps 10%.
533
+ `--model` picks the item-response model (default `1pl`). `1pl` is the closed-form Rasch fit (`β̂_i = -log(p̂_i / (1 - p̂_i))`); `2pl` adds a per-item discrimination parameter and `3pl` a guessing floor, both via joint coordinate-ascent MLE (v0.71.6). Items rank by Fisher information at θ=0 (`p̂ · (1-p̂)` in 1PL — maximised at 50/50 items, since extremes carry no new ranking information). `full` keeps 100%, `small` keeps 30%, `tiny` keeps 10%.
509
534
 
510
535
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "soup-cli"
7
- version = "0.71.5"
7
+ version = "0.71.7"
8
8
  description = "Fine-tune LLMs in one command. No SSH, no config hell."
9
9
  readme = "README.md"
10
10
  license = "Apache-2.0"
@@ -1,3 +1,3 @@
1
1
  """Soup CLI — Fine-tune LLMs in one command."""
2
2
 
3
- __version__ = "0.71.5"
3
+ __version__ = "0.71.7"