soup-cli 0.71.7__tar.gz → 0.71.8__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 (791) hide show
  1. {soup_cli-0.71.7 → soup_cli-0.71.8}/CHANGELOG.md +46 -0
  2. {soup_cli-0.71.7 → soup_cli-0.71.8}/CONTRIBUTING.md +1 -1
  3. {soup_cli-0.71.7 → soup_cli-0.71.8}/PKG-INFO +15 -17
  4. {soup_cli-0.71.7 → soup_cli-0.71.8}/README.md +14 -16
  5. {soup_cli-0.71.7 → soup_cli-0.71.8}/docs/commands.md +7 -2
  6. {soup_cli-0.71.7 → soup_cli-0.71.8}/docs/evaluation.md +15 -2
  7. {soup_cli-0.71.7 → soup_cli-0.71.8}/pyproject.toml +1 -1
  8. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/__init__.py +1 -1
  9. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/cli.py +3 -2
  10. soup_cli-0.71.8/src/soup_cli/commands/probe.py +738 -0
  11. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/train.py +139 -0
  12. soup_cli-0.71.8/src/soup_cli/utils/harm_probe.py +149 -0
  13. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/hubs.py +93 -0
  14. soup_cli-0.71.8/src/soup_cli/utils/interference_live.py +163 -0
  15. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/live_eval.py +148 -0
  16. soup_cli-0.71.8/src/soup_cli/utils/probe_kernel.py +520 -0
  17. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/probe_pack.py +28 -8
  18. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/sae_diff.py +108 -27
  19. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/sleeper_probe.py +92 -27
  20. soup_cli-0.71.8/src/soup_cli/utils/truth_probe.py +152 -0
  21. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0717.py +2 -1
  22. soup_cli-0.71.8/tests/test_v0718.py +1545 -0
  23. soup_cli-0.71.7/src/soup_cli/commands/probe.py +0 -382
  24. {soup_cli-0.71.7 → soup_cli-0.71.8}/.dockerignore +0 -0
  25. {soup_cli-0.71.7 → soup_cli-0.71.8}/.github/FUNDING.yml +0 -0
  26. {soup_cli-0.71.7 → soup_cli-0.71.8}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  27. {soup_cli-0.71.7 → soup_cli-0.71.8}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  28. {soup_cli-0.71.7 → soup_cli-0.71.8}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  29. {soup_cli-0.71.7 → soup_cli-0.71.8}/.github/pull_request_template.md +0 -0
  30. {soup_cli-0.71.7 → soup_cli-0.71.8}/.github/workflows/ci.yml +0 -0
  31. {soup_cli-0.71.7 → soup_cli-0.71.8}/.github/workflows/docker.yml +0 -0
  32. {soup_cli-0.71.7 → soup_cli-0.71.8}/.github/workflows/publish.yml +0 -0
  33. {soup_cli-0.71.7 → soup_cli-0.71.8}/.github/workflows/recipe-validation.yml +0 -0
  34. {soup_cli-0.71.7 → soup_cli-0.71.8}/.gitignore +0 -0
  35. {soup_cli-0.71.7 → soup_cli-0.71.8}/.mailmap +0 -0
  36. {soup_cli-0.71.7 → soup_cli-0.71.8}/.pre-commit-config.yaml +0 -0
  37. {soup_cli-0.71.7 → soup_cli-0.71.8}/AGENTS.md +0 -0
  38. {soup_cli-0.71.7 → soup_cli-0.71.8}/CODEOWNERS +0 -0
  39. {soup_cli-0.71.7 → soup_cli-0.71.8}/CODE_OF_CONDUCT.md +0 -0
  40. {soup_cli-0.71.7 → soup_cli-0.71.8}/CONTRIBUTORS.md +0 -0
  41. {soup_cli-0.71.7 → soup_cli-0.71.8}/Dockerfile +0 -0
  42. {soup_cli-0.71.7 → soup_cli-0.71.8}/LICENSE +0 -0
  43. {soup_cli-0.71.7 → soup_cli-0.71.8}/NOTICE +0 -0
  44. {soup_cli-0.71.7 → soup_cli-0.71.8}/SECURITY.md +0 -0
  45. {soup_cli-0.71.7 → soup_cli-0.71.8}/docker-compose.yml +0 -0
  46. {soup_cli-0.71.7 → soup_cli-0.71.8}/docs/README.md +0 -0
  47. {soup_cli-0.71.7 → soup_cli-0.71.8}/docs/adapters-and-governance.md +0 -0
  48. {soup_cli-0.71.7 → soup_cli-0.71.8}/docs/backends-and-ops.md +0 -0
  49. {soup_cli-0.71.7 → soup_cli-0.71.8}/docs/data.md +0 -0
  50. {soup_cli-0.71.7 → soup_cli-0.71.8}/docs/models.md +0 -0
  51. {soup_cli-0.71.7 → soup_cli-0.71.8}/docs/peft-and-efficiency.md +0 -0
  52. {soup_cli-0.71.7 → soup_cli-0.71.8}/docs/performance-and-quantization.md +0 -0
  53. {soup_cli-0.71.7 → soup_cli-0.71.8}/docs/serving-and-export.md +0 -0
  54. {soup_cli-0.71.7 → soup_cli-0.71.8}/docs/training.md +0 -0
  55. {soup_cli-0.71.7 → soup_cli-0.71.8}/examples/README.md +0 -0
  56. {soup_cli-0.71.7 → soup_cli-0.71.8}/examples/configs/dpo_chat.yaml +0 -0
  57. {soup_cli-0.71.7 → soup_cli-0.71.8}/examples/configs/dpo_example.yaml +0 -0
  58. {soup_cli-0.71.7 → soup_cli-0.71.8}/examples/configs/grpo_reasoning.yaml +0 -0
  59. {soup_cli-0.71.7 → soup_cli-0.71.8}/examples/configs/rlhf_step1_sft.yaml +0 -0
  60. {soup_cli-0.71.7 → soup_cli-0.71.8}/examples/configs/rlhf_step2_reward.yaml +0 -0
  61. {soup_cli-0.71.7 → soup_cli-0.71.8}/examples/configs/rlhf_step3_ppo.yaml +0 -0
  62. {soup_cli-0.71.7 → soup_cli-0.71.8}/examples/configs/sft_basic.yaml +0 -0
  63. {soup_cli-0.71.7 → soup_cli-0.71.8}/examples/configs/vision_llama.yaml +0 -0
  64. {soup_cli-0.71.7 → soup_cli-0.71.8}/examples/data/alpaca_tiny.jsonl +0 -0
  65. {soup_cli-0.71.7 → soup_cli-0.71.8}/examples/data/chat_preferences.jsonl +0 -0
  66. {soup_cli-0.71.7 → soup_cli-0.71.8}/examples/data/dpo_sample.jsonl +0 -0
  67. {soup_cli-0.71.7 → soup_cli-0.71.8}/examples/data/reasoning_math.jsonl +0 -0
  68. {soup_cli-0.71.7 → soup_cli-0.71.8}/examples/synthetic_workflow.md +0 -0
  69. {soup_cli-0.71.7 → soup_cli-0.71.8}/examples/synthetic_workflow.yaml +0 -0
  70. {soup_cli-0.71.7 → soup_cli-0.71.8}/soup.png +0 -0
  71. {soup_cli-0.71.7 → soup_cli-0.71.8}/soup_logo_svg.svg +0 -0
  72. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/__main__.py +0 -0
  73. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/autopilot/__init__.py +0 -0
  74. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/autopilot/analyzer.py +0 -0
  75. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/autopilot/decisions.py +0 -0
  76. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/autopilot/generate_config.py +0 -0
  77. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/cans/__init__.py +0 -0
  78. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/cans/pack.py +0 -0
  79. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/cans/publish.py +0 -0
  80. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/cans/run.py +0 -0
  81. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/cans/schema.py +0 -0
  82. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/cans/unpack.py +0 -0
  83. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/cans/verify.py +0 -0
  84. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/__init__.py +0 -0
  85. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/_eval_v0550.py +0 -0
  86. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/_eval_v0610.py +0 -0
  87. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/_eval_v0650.py +0 -0
  88. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/_webhook_cli.py +0 -0
  89. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/ab.py +0 -0
  90. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/active_sample.py +0 -0
  91. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/adapters.py +0 -0
  92. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/advise.py +0 -0
  93. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/agent.py +0 -0
  94. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/airgap.py +0 -0
  95. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/apple_adapter.py +0 -0
  96. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/attest.py +0 -0
  97. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/audit_log.py +0 -0
  98. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/autopilot.py +0 -0
  99. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/bench.py +0 -0
  100. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/bom.py +0 -0
  101. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/build.py +0 -0
  102. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/can.py +0 -0
  103. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/chat.py +0 -0
  104. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/compile_cmd.py +0 -0
  105. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/compile_tools.py +0 -0
  106. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/completions.py +0 -0
  107. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/cost.py +0 -0
  108. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/data.py +0 -0
  109. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/data_forge.py +0 -0
  110. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/data_mix.py +0 -0
  111. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/data_score.py +0 -0
  112. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/delinearize_llama4.py +0 -0
  113. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/deploy.py +0 -0
  114. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/diagnose.py +0 -0
  115. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/diff.py +0 -0
  116. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/distill_prompt.py +0 -0
  117. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/doctor.py +0 -0
  118. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/drift_alarm.py +0 -0
  119. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/edit.py +0 -0
  120. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/env.py +0 -0
  121. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/eval.py +0 -0
  122. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/expect.py +0 -0
  123. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/export.py +0 -0
  124. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/fetch.py +0 -0
  125. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/generate.py +0 -0
  126. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/history.py +0 -0
  127. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/infer.py +0 -0
  128. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/ingest.py +0 -0
  129. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/init.py +0 -0
  130. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/iterative_dpo.py +0 -0
  131. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/license_advisor.py +0 -0
  132. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/llama.py +0 -0
  133. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/local_rl.py +0 -0
  134. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/lock.py +0 -0
  135. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/loop.py +0 -0
  136. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/merge.py +0 -0
  137. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/merge_sharded_fsdp_weights.py +0 -0
  138. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/migrate.py +0 -0
  139. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/monitor.py +0 -0
  140. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/plan.py +0 -0
  141. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/plugins.py +0 -0
  142. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/profile.py +0 -0
  143. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/prune_prompt.py +0 -0
  144. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/push.py +0 -0
  145. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/quantize.py +0 -0
  146. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/quickstart.py +0 -0
  147. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/recipes.py +0 -0
  148. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/registry.py +0 -0
  149. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/runs.py +0 -0
  150. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/serve.py +0 -0
  151. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/steer.py +0 -0
  152. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/sweep.py +0 -0
  153. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/tokenizer.py +0 -0
  154. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/tui.py +0 -0
  155. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/tunability.py +0 -0
  156. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/ui.py +0 -0
  157. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/commands/why.py +0 -0
  158. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/config/__init__.py +0 -0
  159. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/config/loader.py +0 -0
  160. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/config/schema.py +0 -0
  161. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/__init__.py +0 -0
  162. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/_fixtures/alpaca_tiny.jsonl +0 -0
  163. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/_fixtures/behavior/elephant.jsonl +0 -0
  164. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/_fixtures/behavior/harmbench.jsonl +0 -0
  165. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/_fixtures/behavior/jailbreakbench.jsonl +0 -0
  166. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/_fixtures/behavior/syceval.jsonl +0 -0
  167. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/_fixtures/behavior/xstest.jsonl +0 -0
  168. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/_fixtures/chat_preferences.jsonl +0 -0
  169. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/_fixtures/dpo_sample.jsonl +0 -0
  170. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/_fixtures/reasoning_math.jsonl +0 -0
  171. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/_fixtures/unlearning/muse_demo.jsonl +0 -0
  172. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/_fixtures/unlearning/tofu_demo.jsonl +0 -0
  173. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/_fixtures/unlearning/wmdp_demo.jsonl +0 -0
  174. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/augment.py +0 -0
  175. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/chat_templates.py +0 -0
  176. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/collators.py +0 -0
  177. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/formats.py +0 -0
  178. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/loader.py +0 -0
  179. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/loss_mask.py +0 -0
  180. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/providers/__init__.py +0 -0
  181. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/providers/_utils.py +0 -0
  182. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/providers/anthropic.py +0 -0
  183. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/providers/ollama.py +0 -0
  184. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/providers/vllm.py +0 -0
  185. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/sft_format.py +0 -0
  186. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/templates/__init__.py +0 -0
  187. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/templates/code.py +0 -0
  188. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/templates/conversation.py +0 -0
  189. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/templates/preference.py +0 -0
  190. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/templates/qa.py +0 -0
  191. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/templates/reasoning.py +0 -0
  192. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/templates/tool_calling.py +0 -0
  193. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/templates/verifiable.py +0 -0
  194. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/traces/__init__.py +0 -0
  195. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/traces/pair_builder.py +0 -0
  196. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/traces/parsers.py +0 -0
  197. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/traces/quality.py +0 -0
  198. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/data/validator.py +0 -0
  199. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/eval/__init__.py +0 -0
  200. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/eval/arena.py +0 -0
  201. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/eval/benchmarks_v0_43.py +0 -0
  202. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/eval/calibrate.py +0 -0
  203. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/eval/checkpoint_intelligence.py +0 -0
  204. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/eval/custom.py +0 -0
  205. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/eval/forgetting.py +0 -0
  206. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/eval/gate.py +0 -0
  207. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/eval/human.py +0 -0
  208. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/eval/judge.py +0 -0
  209. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/eval/leaderboard.py +0 -0
  210. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/eval/quant_check.py +0 -0
  211. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/experiment/__init__.py +0 -0
  212. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/experiment/tracker.py +0 -0
  213. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/migrate/__init__.py +0 -0
  214. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/migrate/axolotl.py +0 -0
  215. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/migrate/common.py +0 -0
  216. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/migrate/llamafactory.py +0 -0
  217. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/migrate/unsloth.py +0 -0
  218. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/monitoring/__init__.py +0 -0
  219. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/monitoring/callback.py +0 -0
  220. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/monitoring/curriculum_callback.py +0 -0
  221. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/monitoring/display.py +0 -0
  222. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/monitoring/grpo_stability_callback.py +0 -0
  223. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/monitoring/hf_push.py +0 -0
  224. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/monitoring/plugin_callback.py +0 -0
  225. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/monitoring/trace_logger.py +0 -0
  226. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/plugins/__init__.py +0 -0
  227. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/py.typed +0 -0
  228. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/recipes/__init__.py +0 -0
  229. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/recipes/catalog.py +0 -0
  230. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/registry/__init__.py +0 -0
  231. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/registry/attach.py +0 -0
  232. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/registry/diff.py +0 -0
  233. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/registry/hashing.py +0 -0
  234. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/registry/store.py +0 -0
  235. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/templates/__init__.py +0 -0
  236. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/templates/audio.yaml +0 -0
  237. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/templates/bco.yaml +0 -0
  238. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/templates/chat.yaml +0 -0
  239. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/templates/code.yaml +0 -0
  240. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/templates/embedding.yaml +0 -0
  241. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/templates/fetch_examples/llama-3.1-8b-lora.yaml +0 -0
  242. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/templates/fetch_examples/qwen2.5-7b-dpo.yaml +0 -0
  243. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/templates/fetch_examples/zero3-cpu-offload.json +0 -0
  244. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/templates/ipo.yaml +0 -0
  245. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/templates/kto.yaml +0 -0
  246. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/templates/longcontext.yaml +0 -0
  247. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/templates/manifest.json +0 -0
  248. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/templates/medical.yaml +0 -0
  249. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/templates/moe.yaml +0 -0
  250. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/templates/orpo.yaml +0 -0
  251. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/templates/pretrain.yaml +0 -0
  252. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/templates/reasoning.yaml +0 -0
  253. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/templates/rlhf.yaml +0 -0
  254. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/templates/simpo.yaml +0 -0
  255. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/templates/tool-calling.yaml +0 -0
  256. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/templates/vision.yaml +0 -0
  257. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/trainer/__init__.py +0 -0
  258. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/trainer/bco.py +0 -0
  259. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/trainer/classifier.py +0 -0
  260. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/trainer/distill.py +0 -0
  261. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/trainer/dpo.py +0 -0
  262. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/trainer/embedding.py +0 -0
  263. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/trainer/grpo.py +0 -0
  264. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/trainer/ipo.py +0 -0
  265. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/trainer/kto.py +0 -0
  266. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/trainer/mlx_dpo.py +0 -0
  267. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/trainer/mlx_grpo.py +0 -0
  268. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/trainer/mlx_routing.py +0 -0
  269. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/trainer/mlx_sft.py +0 -0
  270. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/trainer/orpo.py +0 -0
  271. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/trainer/ppo.py +0 -0
  272. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/trainer/preference.py +0 -0
  273. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/trainer/pretrain.py +0 -0
  274. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/trainer/prm.py +0 -0
  275. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/trainer/reward_model.py +0 -0
  276. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/trainer/rewards.py +0 -0
  277. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/trainer/sft.py +0 -0
  278. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/trainer/simpo.py +0 -0
  279. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/trainer/unlearn.py +0 -0
  280. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/tui_app.py +0 -0
  281. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/ui/__init__.py +0 -0
  282. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/ui/app.py +0 -0
  283. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/ui/plugins/__init__.py +0 -0
  284. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/ui/static/app.js +0 -0
  285. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/ui/static/index.html +0 -0
  286. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/ui/static/logo.png +0 -0
  287. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/ui/static/logo.svg +0 -0
  288. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/ui/static/style.css +0 -0
  289. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/__init__.py +0 -0
  290. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/_eval_text.py +0 -0
  291. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/ab_test.py +0 -0
  292. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/activation_offload.py +0 -0
  293. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/active_sampler.py +0 -0
  294. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/adapter_bisect.py +0 -0
  295. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/adapter_branch.py +0 -0
  296. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/adapter_diff.py +0 -0
  297. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/adapter_merge.py +0 -0
  298. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/adapter_pr.py +0 -0
  299. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/adapter_scan.py +0 -0
  300. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/adapter_sign.py +0 -0
  301. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/advanced_precision.py +0 -0
  302. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/advise.py +0 -0
  303. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/advise_history.py +0 -0
  304. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/agent_forge.py +0 -0
  305. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/agent_rollout.py +0 -0
  306. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/airgap_bundle.py +0 -0
  307. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/annex_xi.py +0 -0
  308. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/anthropic_messages.py +0 -0
  309. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/apple_adapter.py +0 -0
  310. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/attest.py +0 -0
  311. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/audit_log.py +0 -0
  312. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/auto_quant.py +0 -0
  313. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/backend_detect.py +0 -0
  314. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/batch_probe.py +0 -0
  315. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/behavior_battery.py +0 -0
  316. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/bitnet.py +0 -0
  317. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/blame.py +0 -0
  318. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/block_expansion.py +0 -0
  319. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/bom.py +0 -0
  320. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/brain_rot.py +0 -0
  321. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/brain_rot_lang.py +0 -0
  322. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/build_dag.py +0 -0
  323. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/canary_discovery.py +0 -0
  324. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/canary_router.py +0 -0
  325. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/capability_suite.py +0 -0
  326. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/checklist_dsl.py +0 -0
  327. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/checkpoint_trigger.py +0 -0
  328. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/citation_faithful.py +0 -0
  329. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/classifier.py +0 -0
  330. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/cmaes_merge.py +0 -0
  331. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/compile_tools.py +0 -0
  332. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/completions.py +0 -0
  333. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/constants.py +0 -0
  334. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/convergence.py +0 -0
  335. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/crash.py +0 -0
  336. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/cross_doc_attn.py +0 -0
  337. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/curriculum.py +0 -0
  338. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/curriculum_dynamic.py +0 -0
  339. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/cut_ce.py +0 -0
  340. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/data_forge.py +0 -0
  341. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/data_mix.py +0 -0
  342. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/data_pipeline.py +0 -0
  343. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/data_score.py +0 -0
  344. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/deepspeed.py +0 -0
  345. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/delinearize_llama4.py +0 -0
  346. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/demo_bundles.py +0 -0
  347. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/deploy_autopilot.py +0 -0
  348. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/deploy_measure.py +0 -0
  349. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/diagnose/__init__.py +0 -0
  350. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/diagnose/_common.py +0 -0
  351. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/diagnose/badge.py +0 -0
  352. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/diagnose/contamination.py +0 -0
  353. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/diagnose/forgetting.py +0 -0
  354. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/diagnose/format.py +0 -0
  355. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/diagnose/live.py +0 -0
  356. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/diagnose/memorization.py +0 -0
  357. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/diagnose/mode_collapse.py +0 -0
  358. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/diagnose/refusal.py +0 -0
  359. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/diagnose/report.py +0 -0
  360. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/diagnose/runner.py +0 -0
  361. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/distill.py +0 -0
  362. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/dpo_variants.py +0 -0
  363. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/drift_alarm.py +0 -0
  364. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/ebft_gdpo.py +0 -0
  365. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/echo_trap.py +0 -0
  366. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/edit_diff.py +0 -0
  367. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/edit_governor.py +0 -0
  368. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/encoding.py +0 -0
  369. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/energy.py +0 -0
  370. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/env_lock.py +0 -0
  371. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/errors.py +0 -0
  372. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/eval_design.py +0 -0
  373. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/eval_gate_hook.py +0 -0
  374. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/eval_lock_coverage.py +0 -0
  375. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/expectations.py +0 -0
  376. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/fetch_examples.py +0 -0
  377. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/flash_attn.py +0 -0
  378. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/fp8.py +0 -0
  379. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/freeze.py +0 -0
  380. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/fsdp.py +0 -0
  381. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/fsdp_consolidate.py +0 -0
  382. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/galore.py +0 -0
  383. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/gguf_quant.py +0 -0
  384. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/gpu.py +0 -0
  385. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/gpu_monitor.py +0 -0
  386. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/grace_codebook.py +0 -0
  387. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/graceful_save.py +0 -0
  388. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/grad_accum.py +0 -0
  389. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/gradient_ckpt.py +0 -0
  390. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/grpo_long_context.py +0 -0
  391. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/grpo_variants.py +0 -0
  392. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/hardware_fit.py +0 -0
  393. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/hf.py +0 -0
  394. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/hf_space.py +0 -0
  395. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/ingest_sources.py +0 -0
  396. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/integrations.py +0 -0
  397. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/interference.py +0 -0
  398. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/irt.py +0 -0
  399. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/iterative_dpo.py +0 -0
  400. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/jinja_analyzer.py +0 -0
  401. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/kernel_picker.py +0 -0
  402. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/knowledge_edit.py +0 -0
  403. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/kv_cache.py +0 -0
  404. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/launcher.py +0 -0
  405. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/license_advisor.py +0 -0
  406. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/license_matrix.py +0 -0
  407. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/liger.py +0 -0
  408. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/llama_proxy.py +0 -0
  409. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/llama_server_timings.py +0 -0
  410. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/local_rl.py +0 -0
  411. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/loftq_init.py +0 -0
  412. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/log_level.py +0 -0
  413. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/long_context.py +0 -0
  414. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/longlora.py +0 -0
  415. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/loop_budget.py +0 -0
  416. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/loop_daemon.py +0 -0
  417. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/loop_iteration.py +0 -0
  418. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/loop_stages.py +0 -0
  419. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/loop_state.py +0 -0
  420. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/lr_finder.py +0 -0
  421. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/lr_groups.py +0 -0
  422. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/magpie.py +0 -0
  423. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/metrics.py +0 -0
  424. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/mii.py +0 -0
  425. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/minillm.py +0 -0
  426. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/mix_proxy.py +0 -0
  427. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/mixed_precision.py +0 -0
  428. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/mlx.py +0 -0
  429. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/moe.py +0 -0
  430. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/moe_quant.py +0 -0
  431. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/mole_routing.py +0 -0
  432. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/multipack.py +0 -0
  433. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/multipack_sampler.py +0 -0
  434. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/multipack_trainer.py +0 -0
  435. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/namespace_pin.py +0 -0
  436. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/neat_packing.py +0 -0
  437. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/ngram_spec.py +0 -0
  438. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/nlg_metrics.py +0 -0
  439. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/ollama.py +0 -0
  440. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/onboarding.py +0 -0
  441. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/optimizer_zoo.py +0 -0
  442. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/paths.py +0 -0
  443. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/peft_builder.py +0 -0
  444. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/peft_patches.py +0 -0
  445. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/peft_wiring.py +0 -0
  446. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/persona_hub.py +0 -0
  447. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/pipeline.py +0 -0
  448. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/preference_combine.py +0 -0
  449. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/prm.py +0 -0
  450. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/profiler.py +0 -0
  451. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/profiling.py +0 -0
  452. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/profiling_v0_43.py +0 -0
  453. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/prompt_compile.py +0 -0
  454. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/prompt_distill.py +0 -0
  455. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/prune_prompt.py +0 -0
  456. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/qat.py +0 -0
  457. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/qr_url.py +0 -0
  458. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/quality.py +0 -0
  459. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/quant_menu.py +0 -0
  460. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/ra_dit.py +0 -0
  461. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/reasoning_effort.py +0 -0
  462. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/reasoning_parser.py +0 -0
  463. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/recipe_dag.py +0 -0
  464. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/recipe_run.py +0 -0
  465. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/registry.py +0 -0
  466. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/relora.py +0 -0
  467. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/replay.py +0 -0
  468. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/repro_receipt.py +0 -0
  469. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/reward_hacking.py +0 -0
  470. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/ring_attention.py +0 -0
  471. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/rl_checkpoint.py +0 -0
  472. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/run_cost.py +0 -0
  473. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/save_formats.py +0 -0
  474. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/server_tools.py +0 -0
  475. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/sglang.py +0 -0
  476. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/shortcuts.py +0 -0
  477. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/signing.py +0 -0
  478. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/soup_lock.py +0 -0
  479. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/spec_pairing.py +0 -0
  480. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/spike_recovery.py +0 -0
  481. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/sse_train_stream.py +0 -0
  482. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/steering.py +0 -0
  483. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/strict_safetensors.py +0 -0
  484. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/structured_output.py +0 -0
  485. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/sweep_config.py +0 -0
  486. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/tail_latency.py +0 -0
  487. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/terraform_plan.py +0 -0
  488. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/tool_outputs.py +0 -0
  489. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/topology.py +0 -0
  490. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/tracing.py +0 -0
  491. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/trackers.py +0 -0
  492. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/train_event_buffer.py +0 -0
  493. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/trainer_plugins.py +0 -0
  494. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/trust_remote.py +0 -0
  495. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/tts.py +0 -0
  496. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/tunability.py +0 -0
  497. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/ui_env.py +0 -0
  498. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/uld.py +0 -0
  499. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/unlearning.py +0 -0
  500. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/unlearning_eval.py +0 -0
  501. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/unsloth.py +0 -0
  502. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/v028_features.py +0 -0
  503. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/vector_bank.py +0 -0
  504. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/vllm.py +0 -0
  505. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/vscode_setup.py +0 -0
  506. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/warmup.py +0 -0
  507. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/webhooks.py +0 -0
  508. {soup_cli-0.71.7 → soup_cli-0.71.8}/src/soup_cli/utils/why.py +0 -0
  509. {soup_cli-0.71.7 → soup_cli-0.71.8}/templates/chat.yaml +0 -0
  510. {soup_cli-0.71.7 → soup_cli-0.71.8}/templates/code.yaml +0 -0
  511. {soup_cli-0.71.7 → soup_cli-0.71.8}/templates/medical.yaml +0 -0
  512. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/__init__.py +0 -0
  513. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/conftest.py +0 -0
  514. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/qa/v053_qa.md +0 -0
  515. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/qa/v0716_qa.md +0 -0
  516. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_adapters.py +0 -0
  517. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_advanced_peft.py +0 -0
  518. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_assistant_mask.py +0 -0
  519. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_audio.py +0 -0
  520. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_auto_tuning.py +0 -0
  521. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_autopilot.py +0 -0
  522. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_awq_gptq_export.py +0 -0
  523. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_batch_probe.py +0 -0
  524. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_bco.py +0 -0
  525. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_bench.py +0 -0
  526. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_brain_rot_multilingual.py +0 -0
  527. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_bugfixes.py +0 -0
  528. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_callback.py +0 -0
  529. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_cans.py +0 -0
  530. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_chat.py +0 -0
  531. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_chat_template.py +0 -0
  532. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_cli.py +0 -0
  533. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_cli_subprocess.py +0 -0
  534. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_config.py +0 -0
  535. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_cost.py +0 -0
  536. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_crash_reporter.py +0 -0
  537. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_curriculum.py +0 -0
  538. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_data.py +0 -0
  539. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_data_augment.py +0 -0
  540. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_data_sample.py +0 -0
  541. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_data_split.py +0 -0
  542. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_data_tools.py +0 -0
  543. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_dataset_hub.py +0 -0
  544. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_dataset_registry.py +0 -0
  545. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_deepspeed.py +0 -0
  546. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_deploy_ollama.py +0 -0
  547. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_diff.py +0 -0
  548. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_display.py +0 -0
  549. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_doctor.py +0 -0
  550. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_dpo_example.py +0 -0
  551. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_dpo_variants.py +0 -0
  552. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_embedding.py +0 -0
  553. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_errors.py +0 -0
  554. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_eval.py +0 -0
  555. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_eval_gate.py +0 -0
  556. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_eval_platform.py +0 -0
  557. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_export.py +0 -0
  558. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_formats.py +0 -0
  559. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_fp8_recipe.py +0 -0
  560. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_freeze_training.py +0 -0
  561. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_generate.py +0 -0
  562. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_gpu.py +0 -0
  563. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_grpo.py +0 -0
  564. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_hf_integration.py +0 -0
  565. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_infer.py +0 -0
  566. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_inference_advanced.py +0 -0
  567. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_init.py +0 -0
  568. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_ipo.py +0 -0
  569. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_jinja_analyzer.py +0 -0
  570. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_kto.py +0 -0
  571. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_loader.py +0 -0
  572. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_log_level.py +0 -0
  573. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_loss_watchdog.py +0 -0
  574. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_merge.py +0 -0
  575. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_migrate.py +0 -0
  576. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_mlx_backend.py +0 -0
  577. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_moe.py +0 -0
  578. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_multi_adapter.py +0 -0
  579. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_multi_gpu.py +0 -0
  580. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_multipack_config.py +0 -0
  581. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_multipack_invariants.py +0 -0
  582. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_multipack_sampler.py +0 -0
  583. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_neat_packing.py +0 -0
  584. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_neftune_rslora.py +0 -0
  585. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_onnx_tensorrt_export.py +0 -0
  586. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_orpo.py +0 -0
  587. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_packing.py +0 -0
  588. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_part_a_wave1.py +0 -0
  589. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_part_a_wave2.py +0 -0
  590. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_part_b.py +0 -0
  591. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_part_c.py +0 -0
  592. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_part_d.py +0 -0
  593. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_part_e.py +0 -0
  594. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_part_f_hardening.py +0 -0
  595. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_peft_methods.py +0 -0
  596. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_peft_patches.py +0 -0
  597. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_performance.py +0 -0
  598. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_pissa_init.py +0 -0
  599. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_ppo.py +0 -0
  600. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_preference_dispatcher.py +0 -0
  601. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_preference_multi.py +0 -0
  602. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_preference_multi_runtime.py +0 -0
  603. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_pretrain.py +0 -0
  604. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_profile.py +0 -0
  605. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_profiling.py +0 -0
  606. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_progress.py +0 -0
  607. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_push.py +0 -0
  608. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_qat.py +0 -0
  609. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_quality_filter.py +0 -0
  610. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_quant_check.py +0 -0
  611. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_quant_menu.py +0 -0
  612. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_quickstart.py +0 -0
  613. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_rank_pattern.py +0 -0
  614. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_recipes.py +0 -0
  615. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_recipes_v031.py +0 -0
  616. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_refusal_multilingual.py +0 -0
  617. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_registry.py +0 -0
  618. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_relora.py +0 -0
  619. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_replay.py +0 -0
  620. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_resume.py +0 -0
  621. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_rlvr.py +0 -0
  622. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_run_cost.py +0 -0
  623. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_runs.py +0 -0
  624. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_serve.py +0 -0
  625. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_server_generate.py +0 -0
  626. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_sglang_serve.py +0 -0
  627. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_simpo.py +0 -0
  628. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_smoke_train.py +0 -0
  629. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_speculative_decoding.py +0 -0
  630. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_sweep.py +0 -0
  631. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_synth_data_pro.py +0 -0
  632. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_templates_yaml.py +0 -0
  633. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_tensorboard.py +0 -0
  634. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_tool_calling.py +0 -0
  635. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_trace_to_pref.py +0 -0
  636. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_tracker.py +0 -0
  637. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_trainer_coverage_v035.py +0 -0
  638. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_trainer_init.py +0 -0
  639. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_training_intelligence.py +0 -0
  640. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_training_speed.py +0 -0
  641. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_trust_remote_code.py +0 -0
  642. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_tui.py +0 -0
  643. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_ui.py +0 -0
  644. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_ui_chat.py +0 -0
  645. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_ui_config_builder.py +0 -0
  646. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_ui_live_monitor.py +0 -0
  647. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_ui_metrics.py +0 -0
  648. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_unsloth.py +0 -0
  649. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0401_part_c.py +0 -0
  650. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0401_part_d.py +0 -0
  651. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0401_part_e.py +0 -0
  652. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0402_part_a.py +0 -0
  653. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0402_part_b.py +0 -0
  654. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0403_part_a.py +0 -0
  655. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0403_part_b.py +0 -0
  656. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0403_part_c.py +0 -0
  657. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0404_part_a.py +0 -0
  658. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0404_part_b.py +0 -0
  659. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0405_part_a.py +0 -0
  660. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0406_part_a.py +0 -0
  661. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0410_part_a.py +0 -0
  662. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0410_part_b.py +0 -0
  663. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0410_part_c.py +0 -0
  664. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0420.py +0 -0
  665. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0430_part_a.py +0 -0
  666. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0430_part_b.py +0 -0
  667. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0430_part_c.py +0 -0
  668. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0430_part_d.py +0 -0
  669. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0440_part_a.py +0 -0
  670. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0440_part_b.py +0 -0
  671. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0440_part_c.py +0 -0
  672. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0440_part_d.py +0 -0
  673. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0440_review_followups.py +0 -0
  674. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0450.py +0 -0
  675. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0460_part_a.py +0 -0
  676. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0460_part_b.py +0 -0
  677. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0470_part_a.py +0 -0
  678. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0470_part_b.py +0 -0
  679. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0480_part_a.py +0 -0
  680. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0480_part_b.py +0 -0
  681. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0490.py +0 -0
  682. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0500_part_a.py +0 -0
  683. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0500_part_b.py +0 -0
  684. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0500_part_c.py +0 -0
  685. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0500_part_d.py +0 -0
  686. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0500_part_e.py +0 -0
  687. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0510.py +0 -0
  688. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0520.py +0 -0
  689. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0530.py +0 -0
  690. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v05310.py +0 -0
  691. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v05311.py +0 -0
  692. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0531_109.py +0 -0
  693. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0531_139.py +0 -0
  694. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0531_142.py +0 -0
  695. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0531_82.py +0 -0
  696. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0532.py +0 -0
  697. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0533.py +0 -0
  698. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0534.py +0 -0
  699. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0535.py +0 -0
  700. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0536.py +0 -0
  701. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0537.py +0 -0
  702. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0538.py +0 -0
  703. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0539.py +0 -0
  704. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0540.py +0 -0
  705. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0550.py +0 -0
  706. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0550_followups.py +0 -0
  707. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0560.py +0 -0
  708. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0570_part_a.py +0 -0
  709. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0570_part_b.py +0 -0
  710. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0570_part_c.py +0 -0
  711. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0570_part_d.py +0 -0
  712. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0580.py +0 -0
  713. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0590.py +0 -0
  714. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0600_part_a.py +0 -0
  715. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0600_part_b.py +0 -0
  716. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0600_part_c.py +0 -0
  717. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0600_part_d.py +0 -0
  718. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0600_part_e.py +0 -0
  719. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0600_part_f.py +0 -0
  720. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0610_part_a.py +0 -0
  721. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0610_part_b.py +0 -0
  722. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0610_part_c.py +0 -0
  723. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0610_part_d.py +0 -0
  724. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0610_part_e.py +0 -0
  725. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0620_followups.py +0 -0
  726. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0620_part_a.py +0 -0
  727. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0620_part_b.py +0 -0
  728. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0620_part_c.py +0 -0
  729. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0620_part_d.py +0 -0
  730. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0620_part_e.py +0 -0
  731. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0630_followups.py +0 -0
  732. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0630_part_a.py +0 -0
  733. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0630_part_b.py +0 -0
  734. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0630_part_c.py +0 -0
  735. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0630_part_d.py +0 -0
  736. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0630_part_e.py +0 -0
  737. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0631_206.py +0 -0
  738. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0640_followups.py +0 -0
  739. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0640_part_a.py +0 -0
  740. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0640_part_b.py +0 -0
  741. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0640_part_c.py +0 -0
  742. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0640_part_d.py +0 -0
  743. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0640_part_e.py +0 -0
  744. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0640_part_f.py +0 -0
  745. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0650_followups.py +0 -0
  746. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0650_part_a.py +0 -0
  747. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0650_part_b.py +0 -0
  748. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0650_part_c.py +0 -0
  749. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0650_part_d.py +0 -0
  750. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0650_part_e.py +0 -0
  751. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0660_cli.py +0 -0
  752. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0660_followups.py +0 -0
  753. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0660_part_a.py +0 -0
  754. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0660_part_b.py +0 -0
  755. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0660_part_c.py +0 -0
  756. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0660_part_d.py +0 -0
  757. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0660_part_e.py +0 -0
  758. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0670_followups.py +0 -0
  759. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0670_part_a.py +0 -0
  760. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0670_part_b.py +0 -0
  761. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0670_part_c.py +0 -0
  762. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0670_part_d.py +0 -0
  763. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0670_part_e.py +0 -0
  764. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0670_part_f.py +0 -0
  765. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0680_followups.py +0 -0
  766. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0680_part_a.py +0 -0
  767. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0680_part_b.py +0 -0
  768. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0680_part_c.py +0 -0
  769. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0680_part_d.py +0 -0
  770. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0680_part_e.py +0 -0
  771. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0690_part_a.py +0 -0
  772. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0690_part_b.py +0 -0
  773. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0690_part_c.py +0 -0
  774. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0690_part_d.py +0 -0
  775. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0690_part_e.py +0 -0
  776. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0700_part_a.py +0 -0
  777. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0700_part_b.py +0 -0
  778. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0700_part_c.py +0 -0
  779. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0700_part_d.py +0 -0
  780. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0700_part_e.py +0 -0
  781. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0700_part_f.py +0 -0
  782. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0712.py +0 -0
  783. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0713.py +0 -0
  784. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0714.py +0 -0
  785. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0715.py +0 -0
  786. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_v0716.py +0 -0
  787. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_validator.py +0 -0
  788. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_vision.py +0 -0
  789. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_vllm_serve.py +0 -0
  790. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_why.py +0 -0
  791. {soup_cli-0.71.7 → soup_cli-0.71.8}/tests/test_windows_encoding.py +0 -0
@@ -12,6 +12,52 @@ reproducing 70+ versions of notes.
12
12
 
13
13
  ## [Unreleased]
14
14
 
15
+ ## [0.71.8] - 2026-06-03
16
+
17
+ ### Added
18
+ - **Probes & SAE — real weights + live downloads** (closes #215, #216, #217,
19
+ #218, #219). A new shared `soup_cli/utils/probe_kernel.py` provides the
20
+ linear-probe math (contrast-pair derivation, apply, flag-rate, verdict bands,
21
+ operator-supplied weight loading, deterministic synthetic fallback); every
22
+ heavy import (`numpy` / `torch` / `safetensors`) is lazy.
23
+ - **`soup probe sleeper --weights <w.npz|.npy|.safetensors>`** (#215) — load a
24
+ real calibrated probe direction instead of the synthetic fallback. Weights are
25
+ cwd-contained, symlink-rejected, `O_NOFOLLOW`-opened, `allow_pickle=False`,
26
+ and size-capped. `compute_contrast_probe(positive, negative)` derives a probe
27
+ from contrast-pair activations.
28
+ - **`soup probe sae-diff <repo> --auto-download`** (#216) — fetch an
29
+ allowlisted SAE from the HF Hub into `~/.soup/sae-cache/` (validated against
30
+ `HF_HUB_ALLOWLIST` BEFORE any network call) via a new SSRF-hardened
31
+ `soup_cli.utils.hubs.snapshot_download` (repo-id shape + home/cwd/tmp cache
32
+ containment + namespace-pin TOFU gate).
33
+ - **`soup probe truth` / `soup probe harm`** (#217) — TruthfulQA-style honesty
34
+ and HarmBench-style misuse activation probes (6 bundled bases each, 5% / 20%
35
+ verdict bands, `--weights` to skip the allowlist with a real probe). The
36
+ probe pack now ships truth + harm entries per base.
37
+ - **`soup probe interference --measure <eval_suite> --base-model <m> --adapter
38
+ name=path ...`** (#218) — auto-measure the N×N interference matrix by actually
39
+ loading the base + each LoRA adapter (PEFT multi-adapter), measuring loss for
40
+ each adapter alone (diagonal) and each co-loaded pair
41
+ (`add_weighted_adapter(combination_type="cat")`, off-diagonal). Exit 2 on a
42
+ MAJOR worst-pair.
43
+ - **`soup train --capture-activations <layer> --capture-prompts <jsonl>`** (#219)
44
+ — a post-training hook writes an SAE-diff-ready per-token activation snapshot
45
+ to `<output>/activations/activations.json`. `resolve_layer_module` resolves
46
+ the same `model.layers.N` path whether or not a LoRA adapter is loaded
47
+ (PEFT-wrapper fallback).
48
+
49
+ ### Security
50
+ - Probe / SAE / capture file I/O is cwd-contained + `O_NOFOLLOW` (TOCTOU close)
51
+ + size-capped; SAE weight loads use `allow_pickle=False`. SAE auto-download
52
+ validates the allowlist before any network call and rejects a glob result
53
+ that resolves outside the snapshot dir (symlink-escape guard).
54
+
55
+ ### Notes
56
+ - #215 is partial: the operator-supplied / contrast-pair / synthetic paths ship
57
+ now, but the 6 large-base Anthropic-calibrated probe vectors remain
58
+ upstream-gated (no public calibrated artifact exists). Documented as a known
59
+ limitation.
60
+
15
61
  ## [0.71.7] - 2026-06-02
16
62
 
17
63
  ### 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 (277 files, 12771 tests)
123
+ tests/ - Test suite (278 files, 12917 tests)
124
124
  examples/ - Real-world config examples and datasets
125
125
  ```
126
126
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: soup-cli
3
- Version: 0.71.7
3
+ Version: 0.71.8
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,20 @@ infrastructure instead of improving models. Soup fixes that.
183
183
 
184
184
  ## What's New
185
185
 
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).
186
+ **v0.71.8Probes & SAE.** The activation-probe surfaces ship real weights, live SAE downloads,
187
+ and an end-to-end capture diff pipeline:
188
+
189
+ - **`soup probe truth` / `soup probe harm`** — TruthfulQA-style honesty and HarmBench-style misuse
190
+ activation probes (6 bundled bases each, 5% / 20% verdict bands). `--weights` loads a real
191
+ calibrated probe; without it the bundled deterministic fallback is used.
192
+ - **`soup probe sleeper --weights <w.npz|.npy|.safetensors>`** — load a real calibrated sleeper
193
+ probe direction instead of the synthetic fallback (cwd-contained, `allow_pickle=False`).
194
+ - **`soup probe sae-diff <repo> --auto-download`** — fetch an allowlisted SAE from the HF Hub into
195
+ `~/.soup/sae-cache/` (validated before any network call) and diff pre/post activations.
196
+ - **`soup probe interference --measure <eval.jsonl> --base-model <m> --adapter a=path ...`**
197
+ auto-measure the N×N adapter-interference matrix by actually loading the base + each LoRA adapter.
198
+ - **`soup train --capture-activations <layer> --capture-prompts <jsonl>`**a post-training hook
199
+ writes an SAE-diff-ready per-token activation snapshot. Validated end-to-end on SmolLM2-135M.
202
200
 
203
201
  Full history: [CHANGELOG.md](CHANGELOG.md) &middot; [GitHub Releases](https://github.com/MakazhanAlpamys/Soup/releases).
204
202
 
@@ -49,22 +49,20 @@ infrastructure instead of improving models. Soup fixes that.
49
49
 
50
50
  ## What's New
51
51
 
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).
52
+ **v0.71.8Probes & SAE.** The activation-probe surfaces ship real weights, live SAE downloads,
53
+ and an end-to-end capture diff pipeline:
54
+
55
+ - **`soup probe truth` / `soup probe harm`** — TruthfulQA-style honesty and HarmBench-style misuse
56
+ activation probes (6 bundled bases each, 5% / 20% verdict bands). `--weights` loads a real
57
+ calibrated probe; without it the bundled deterministic fallback is used.
58
+ - **`soup probe sleeper --weights <w.npz|.npy|.safetensors>`** — load a real calibrated sleeper
59
+ probe direction instead of the synthetic fallback (cwd-contained, `allow_pickle=False`).
60
+ - **`soup probe sae-diff <repo> --auto-download`** — fetch an allowlisted SAE from the HF Hub into
61
+ `~/.soup/sae-cache/` (validated before any network call) and diff pre/post activations.
62
+ - **`soup probe interference --measure <eval.jsonl> --base-model <m> --adapter a=path ...`**
63
+ auto-measure the N×N adapter-interference matrix by actually loading the base + each LoRA adapter.
64
+ - **`soup train --capture-activations <layer> --capture-prompts <jsonl>`**a post-training hook
65
+ writes an SAE-diff-ready per-token activation snapshot. Validated end-to-end on SmolLM2-135M.
68
66
 
69
67
  Full history: [CHANGELOG.md](CHANGELOG.md) &middot; [GitHub Releases](https://github.com/MakazhanAlpamys/Soup/releases).
70
68
 
@@ -189,10 +189,15 @@ soup completions bash | zsh | fish Shell completion script
189
189
  soup license-advisor --target b2c|defense|embedded Recommend license-clean base for deploy target
190
190
  soup license-advisor ... --license <id> --mau N Per-license downstream-risk check (exit 3 on block)
191
191
  soup probe sae-diff <sae> <pre.json> <post.json> [--top-k N] SAE feature diff between pre/post-FT activations (v0.66.0)
192
- soup probe sleeper <base> [--evidence ev.json] [--output o.json] Calibrated sleeper-agent defection probe (v0.66.0)
192
+ soup probe sae-diff <repo> <pre.json> <post.json> --auto-download Fetch an allowlisted SAE into ~/.soup/sae-cache (v0.71.8)
193
+ soup probe sleeper <base> [--evidence ev.json] [--weights w.npz] [--output o.json] Sleeper-agent defection probe; --weights = real calibrated probe (v0.66.0; v0.71.8)
194
+ soup probe truth <base> [--evidence ev.json] [--weights w.npz] [--output o.json] TruthfulQA-style honesty probe (v0.71.8)
195
+ soup probe harm <base> [--evidence ev.json] [--weights w.npz] [--output o.json] HarmBench-style misuse probe (v0.71.8)
193
196
  soup probe interference <losses.json> [--output o.json] Pairwise N×N adapter interference matrix (exit 2 on MAJOR; v0.66.0)
194
- soup probe pack <base> [--output o.json] Per-base calibrated probe pack manifest (v0.66.0)
197
+ soup probe interference --measure <eval.jsonl> --base-model <m> --adapter name=path ... [--device cpu] Auto-measure live interference (v0.71.8)
198
+ soup probe pack <base> [--output o.json] Per-base calibrated probe pack manifest (v0.66.0; +truth/harm v0.71.8)
195
199
  soup probe pack --list List bundled probe-pack bases (v0.66.0)
200
+ soup train --capture-activations <layer> --capture-prompts <jsonl> Post-train SAE-diff-ready per-token activation snapshot (v0.71.8)
196
201
  soup adapters blame ... --top-k 50 Live DataInf-style influence runner (v0.66.0, closes #171)
197
202
  soup adapters merge ... --strategy cmaes --eval <s> --budget 1h CMA-ES evolutionary merge — live loop (v0.67.0 schema / v0.71.4 live)
198
203
  soup adapters merge ... --canary <suite.json> [--strict-verdict] Live OK/MINOR/MAJOR canary verdict, exit 2 on MAJOR (v0.71.4)
@@ -37,16 +37,29 @@ soup adapters blame ./my-adapter --dataset ./train.jsonl --layer q_proj.7 \
37
37
 
38
38
  # 3. Sleeper-agent defection probe: per-token defection rate via calibrated linear probe
39
39
  soup probe sleeper meta-llama/Llama-3-8B --evidence activations.json
40
+ soup probe sleeper my/model --weights probe.npz --evidence activations.json # real calibrated probe (v0.71.8)
41
+
42
+ # 3b. Honesty + misuse probes (v0.71.8) — same shape, 5% / 20% verdict bands
43
+ soup probe truth meta-llama/Llama-3-8B --evidence activations.json
44
+ soup probe harm meta-llama/Llama-3-8B --evidence activations.json
40
45
 
41
46
  # 4. Pairwise adapter interference matrix: which pairs can't be deployed together?
42
47
  soup probe interference losses.json # exit 2 if worst-pair score ≥ 20%
48
+ # v0.71.8: auto-measure the matrix live instead of supplying losses.json
49
+ soup probe interference --measure eval.jsonl --base-model meta-llama/Llama-3-8B \
50
+ --adapter a=./adapter-a --adapter b=./adapter-b --device cpu
43
51
 
44
- # 5. Probe pack: list/assemble calibrated probes per base
52
+ # 5. Probe pack: list/assemble calibrated probes per base (sleeper + truth + harm per base)
45
53
  soup probe pack --list # list bundled bases
46
54
  soup probe pack meta-llama/Llama-3-8B # render the per-base manifest
55
+
56
+ # 6. SAE auto-download + capture pipeline (v0.71.8)
57
+ soup train --config soup.yaml --capture-activations model.layers.5 \
58
+ --capture-prompts probes.jsonl # writes <output>/activations/activations.json
59
+ soup probe sae-diff google/gemma-scope-2b-pt-res pre.json post.json --auto-download
47
60
  ```
48
61
 
49
- Every probe uses the OK / MINOR / MAJOR taxonomy from v0.26 (Quant-Lobotomy) / v0.56 (Diagnose) / v0.65 (Eval Depth). Sleeper + interference exit 2 on MAJOR for CI gating. The blame runner closes the v0.57 `NotImplementedError` stub via a DataInf-style influence approximation: `cos(grad_row, grad_probe) × |grad_row|`. Operators supply a `probe_fn` returning `(row_grads, probe_grad)`, or the runner falls back to a deterministic synthetic probe so the surface always returns a real `BlameResult` (no exception leaks). SAE feature diff is pure-numpy; the safetensors loader is `O_NOFOLLOW`-protected (TOCTOU defence — closes the symlink swap window between containment check and read).
62
+ Every probe uses the OK / MINOR / MAJOR taxonomy from v0.26 (Quant-Lobotomy) / v0.56 (Diagnose) / v0.65 (Eval Depth). Sleeper / truth / harm / interference exit 2 on MAJOR for CI gating. **v0.71.8** ships real probe weights: `--weights <w.npz|.npy|.safetensors>` loads a calibrated direction (cwd-contained, `O_NOFOLLOW`, `allow_pickle=False`, size-capped); `compute_contrast_probe(positive, negative)` derives one from contrast-pair activations; the bundled specs fall back to a deterministic synthetic seed (the large-base Anthropic-calibrated vectors remain upstream-gated). `soup probe interference --measure` loads the base + each LoRA adapter via PEFT and measures loss per adapter alone (diagonal) and per co-loaded pair (`add_weighted_adapter(combination_type="cat")`, off-diagonal). `soup train --capture-activations` writes an SAE-diff-ready per-token snapshot (the `model.layers.N` path resolves whether or not a LoRA adapter is loaded). The blame runner closes the v0.57 `NotImplementedError` stub via a DataInf-style influence approximation: `cos(grad_row, grad_probe) × |grad_row|`. Operators supply a `probe_fn` returning `(row_grads, probe_grad)`, or the runner falls back to a deterministic synthetic probe so the surface always returns a real `BlameResult` (no exception leaks). SAE feature diff is pure-numpy; the safetensors loader is `O_NOFOLLOW`-protected (TOCTOU defence — closes the symlink swap window between containment check and read); `--auto-download` validates the `HF_HUB_ALLOWLIST` before any network call and rejects a glob result escaping the snapshot dir.
50
63
 
51
64
 
52
65
  ## Pre-flight Decision (`soup advise`)
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "soup-cli"
7
- version = "0.71.7"
7
+ version = "0.71.8"
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.7"
3
+ __version__ = "0.71.8"
@@ -410,8 +410,9 @@ app.add_typer(
410
410
  _probe_cmd.app,
411
411
  name="probe",
412
412
  help=(
413
- "Activation probes: sleeper-agent defection / pairwise interference "
414
- "/ SAE feature diff / probe pack (v0.66.0)."
413
+ "Activation probes: sleeper-agent defection / honesty / misuse / "
414
+ "pairwise interference / SAE feature diff / probe pack (v0.66.0, "
415
+ "truth+harm v0.71.8)."
415
416
  ),
416
417
  )
417
418