soup-cli 0.71.3__tar.gz → 0.71.4__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 (775) hide show
  1. {soup_cli-0.71.3 → soup_cli-0.71.4}/CHANGELOG.md +45 -0
  2. {soup_cli-0.71.3 → soup_cli-0.71.4}/CONTRIBUTING.md +1 -1
  3. {soup_cli-0.71.3 → soup_cli-0.71.4}/PKG-INFO +16 -14
  4. {soup_cli-0.71.3 → soup_cli-0.71.4}/README.md +15 -13
  5. {soup_cli-0.71.3 → soup_cli-0.71.4}/docs/adapters-and-governance.md +35 -1
  6. {soup_cli-0.71.3 → soup_cli-0.71.4}/docs/commands.md +8 -5
  7. {soup_cli-0.71.3 → soup_cli-0.71.4}/pyproject.toml +1 -1
  8. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/__init__.py +1 -1
  9. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/adapters.py +225 -50
  10. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/history.py +14 -0
  11. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/loop.py +73 -5
  12. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/registry/store.py +2 -0
  13. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/adapter_branch.py +119 -1
  14. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/adapter_merge.py +145 -7
  15. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/adapter_pr.py +151 -1
  16. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/cmaes_merge.py +149 -0
  17. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/loop_daemon.py +68 -0
  18. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/loop_iteration.py +104 -0
  19. soup_cli-0.71.4/src/soup_cli/utils/loop_stages.py +418 -0
  20. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/loop_state.py +7 -0
  21. soup_cli-0.71.4/tests/test_v0714.py +1784 -0
  22. {soup_cli-0.71.3 → soup_cli-0.71.4}/.dockerignore +0 -0
  23. {soup_cli-0.71.3 → soup_cli-0.71.4}/.github/FUNDING.yml +0 -0
  24. {soup_cli-0.71.3 → soup_cli-0.71.4}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  25. {soup_cli-0.71.3 → soup_cli-0.71.4}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  26. {soup_cli-0.71.3 → soup_cli-0.71.4}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  27. {soup_cli-0.71.3 → soup_cli-0.71.4}/.github/pull_request_template.md +0 -0
  28. {soup_cli-0.71.3 → soup_cli-0.71.4}/.github/workflows/ci.yml +0 -0
  29. {soup_cli-0.71.3 → soup_cli-0.71.4}/.github/workflows/docker.yml +0 -0
  30. {soup_cli-0.71.3 → soup_cli-0.71.4}/.github/workflows/publish.yml +0 -0
  31. {soup_cli-0.71.3 → soup_cli-0.71.4}/.github/workflows/recipe-validation.yml +0 -0
  32. {soup_cli-0.71.3 → soup_cli-0.71.4}/.gitignore +0 -0
  33. {soup_cli-0.71.3 → soup_cli-0.71.4}/.pre-commit-config.yaml +0 -0
  34. {soup_cli-0.71.3 → soup_cli-0.71.4}/AGENTS.md +0 -0
  35. {soup_cli-0.71.3 → soup_cli-0.71.4}/CODEOWNERS +0 -0
  36. {soup_cli-0.71.3 → soup_cli-0.71.4}/CODE_OF_CONDUCT.md +0 -0
  37. {soup_cli-0.71.3 → soup_cli-0.71.4}/Dockerfile +0 -0
  38. {soup_cli-0.71.3 → soup_cli-0.71.4}/LICENSE +0 -0
  39. {soup_cli-0.71.3 → soup_cli-0.71.4}/NOTICE +0 -0
  40. {soup_cli-0.71.3 → soup_cli-0.71.4}/SECURITY.md +0 -0
  41. {soup_cli-0.71.3 → soup_cli-0.71.4}/docker-compose.yml +0 -0
  42. {soup_cli-0.71.3 → soup_cli-0.71.4}/docs/README.md +0 -0
  43. {soup_cli-0.71.3 → soup_cli-0.71.4}/docs/backends-and-ops.md +0 -0
  44. {soup_cli-0.71.3 → soup_cli-0.71.4}/docs/data.md +0 -0
  45. {soup_cli-0.71.3 → soup_cli-0.71.4}/docs/evaluation.md +0 -0
  46. {soup_cli-0.71.3 → soup_cli-0.71.4}/docs/models.md +0 -0
  47. {soup_cli-0.71.3 → soup_cli-0.71.4}/docs/peft-and-efficiency.md +0 -0
  48. {soup_cli-0.71.3 → soup_cli-0.71.4}/docs/performance-and-quantization.md +0 -0
  49. {soup_cli-0.71.3 → soup_cli-0.71.4}/docs/serving-and-export.md +0 -0
  50. {soup_cli-0.71.3 → soup_cli-0.71.4}/docs/training.md +0 -0
  51. {soup_cli-0.71.3 → soup_cli-0.71.4}/examples/README.md +0 -0
  52. {soup_cli-0.71.3 → soup_cli-0.71.4}/examples/configs/dpo_chat.yaml +0 -0
  53. {soup_cli-0.71.3 → soup_cli-0.71.4}/examples/configs/dpo_example.yaml +0 -0
  54. {soup_cli-0.71.3 → soup_cli-0.71.4}/examples/configs/grpo_reasoning.yaml +0 -0
  55. {soup_cli-0.71.3 → soup_cli-0.71.4}/examples/configs/rlhf_step1_sft.yaml +0 -0
  56. {soup_cli-0.71.3 → soup_cli-0.71.4}/examples/configs/rlhf_step2_reward.yaml +0 -0
  57. {soup_cli-0.71.3 → soup_cli-0.71.4}/examples/configs/rlhf_step3_ppo.yaml +0 -0
  58. {soup_cli-0.71.3 → soup_cli-0.71.4}/examples/configs/sft_basic.yaml +0 -0
  59. {soup_cli-0.71.3 → soup_cli-0.71.4}/examples/configs/vision_llama.yaml +0 -0
  60. {soup_cli-0.71.3 → soup_cli-0.71.4}/examples/data/alpaca_tiny.jsonl +0 -0
  61. {soup_cli-0.71.3 → soup_cli-0.71.4}/examples/data/chat_preferences.jsonl +0 -0
  62. {soup_cli-0.71.3 → soup_cli-0.71.4}/examples/data/dpo_sample.jsonl +0 -0
  63. {soup_cli-0.71.3 → soup_cli-0.71.4}/examples/data/reasoning_math.jsonl +0 -0
  64. {soup_cli-0.71.3 → soup_cli-0.71.4}/examples/synthetic_workflow.md +0 -0
  65. {soup_cli-0.71.3 → soup_cli-0.71.4}/examples/synthetic_workflow.yaml +0 -0
  66. {soup_cli-0.71.3 → soup_cli-0.71.4}/soup.png +0 -0
  67. {soup_cli-0.71.3 → soup_cli-0.71.4}/soup_logo_svg.svg +0 -0
  68. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/__main__.py +0 -0
  69. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/autopilot/__init__.py +0 -0
  70. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/autopilot/analyzer.py +0 -0
  71. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/autopilot/decisions.py +0 -0
  72. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/autopilot/generate_config.py +0 -0
  73. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/cans/__init__.py +0 -0
  74. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/cans/pack.py +0 -0
  75. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/cans/publish.py +0 -0
  76. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/cans/run.py +0 -0
  77. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/cans/schema.py +0 -0
  78. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/cans/unpack.py +0 -0
  79. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/cans/verify.py +0 -0
  80. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/cli.py +0 -0
  81. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/__init__.py +0 -0
  82. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/_eval_v0550.py +0 -0
  83. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/_eval_v0610.py +0 -0
  84. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/_eval_v0650.py +0 -0
  85. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/ab.py +0 -0
  86. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/active_sample.py +0 -0
  87. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/advise.py +0 -0
  88. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/agent.py +0 -0
  89. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/airgap.py +0 -0
  90. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/apple_adapter.py +0 -0
  91. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/attest.py +0 -0
  92. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/audit_log.py +0 -0
  93. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/autopilot.py +0 -0
  94. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/bench.py +0 -0
  95. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/bom.py +0 -0
  96. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/build.py +0 -0
  97. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/can.py +0 -0
  98. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/chat.py +0 -0
  99. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/compile_cmd.py +0 -0
  100. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/compile_tools.py +0 -0
  101. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/completions.py +0 -0
  102. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/cost.py +0 -0
  103. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/data.py +0 -0
  104. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/data_forge.py +0 -0
  105. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/data_mix.py +0 -0
  106. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/data_score.py +0 -0
  107. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/delinearize_llama4.py +0 -0
  108. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/deploy.py +0 -0
  109. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/diagnose.py +0 -0
  110. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/diff.py +0 -0
  111. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/distill_prompt.py +0 -0
  112. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/doctor.py +0 -0
  113. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/drift_alarm.py +0 -0
  114. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/edit.py +0 -0
  115. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/env.py +0 -0
  116. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/eval.py +0 -0
  117. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/expect.py +0 -0
  118. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/export.py +0 -0
  119. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/fetch.py +0 -0
  120. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/generate.py +0 -0
  121. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/infer.py +0 -0
  122. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/ingest.py +0 -0
  123. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/init.py +0 -0
  124. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/iterative_dpo.py +0 -0
  125. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/license_advisor.py +0 -0
  126. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/llama.py +0 -0
  127. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/local_rl.py +0 -0
  128. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/lock.py +0 -0
  129. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/merge.py +0 -0
  130. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/merge_sharded_fsdp_weights.py +0 -0
  131. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/migrate.py +0 -0
  132. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/monitor.py +0 -0
  133. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/plan.py +0 -0
  134. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/plugins.py +0 -0
  135. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/probe.py +0 -0
  136. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/profile.py +0 -0
  137. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/prune_prompt.py +0 -0
  138. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/push.py +0 -0
  139. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/quantize.py +0 -0
  140. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/quickstart.py +0 -0
  141. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/recipes.py +0 -0
  142. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/registry.py +0 -0
  143. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/runs.py +0 -0
  144. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/serve.py +0 -0
  145. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/steer.py +0 -0
  146. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/sweep.py +0 -0
  147. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/tokenizer.py +0 -0
  148. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/train.py +0 -0
  149. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/tui.py +0 -0
  150. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/tunability.py +0 -0
  151. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/ui.py +0 -0
  152. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/commands/why.py +0 -0
  153. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/config/__init__.py +0 -0
  154. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/config/loader.py +0 -0
  155. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/config/schema.py +0 -0
  156. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/__init__.py +0 -0
  157. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/_fixtures/alpaca_tiny.jsonl +0 -0
  158. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/_fixtures/behavior/elephant.jsonl +0 -0
  159. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/_fixtures/behavior/harmbench.jsonl +0 -0
  160. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/_fixtures/behavior/jailbreakbench.jsonl +0 -0
  161. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/_fixtures/behavior/syceval.jsonl +0 -0
  162. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/_fixtures/behavior/xstest.jsonl +0 -0
  163. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/_fixtures/chat_preferences.jsonl +0 -0
  164. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/_fixtures/dpo_sample.jsonl +0 -0
  165. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/_fixtures/reasoning_math.jsonl +0 -0
  166. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/_fixtures/unlearning/muse_demo.jsonl +0 -0
  167. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/_fixtures/unlearning/tofu_demo.jsonl +0 -0
  168. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/_fixtures/unlearning/wmdp_demo.jsonl +0 -0
  169. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/augment.py +0 -0
  170. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/chat_templates.py +0 -0
  171. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/collators.py +0 -0
  172. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/formats.py +0 -0
  173. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/loader.py +0 -0
  174. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/loss_mask.py +0 -0
  175. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/providers/__init__.py +0 -0
  176. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/providers/_utils.py +0 -0
  177. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/providers/anthropic.py +0 -0
  178. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/providers/ollama.py +0 -0
  179. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/providers/vllm.py +0 -0
  180. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/sft_format.py +0 -0
  181. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/templates/__init__.py +0 -0
  182. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/templates/code.py +0 -0
  183. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/templates/conversation.py +0 -0
  184. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/templates/preference.py +0 -0
  185. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/templates/qa.py +0 -0
  186. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/templates/reasoning.py +0 -0
  187. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/templates/tool_calling.py +0 -0
  188. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/templates/verifiable.py +0 -0
  189. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/traces/__init__.py +0 -0
  190. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/traces/pair_builder.py +0 -0
  191. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/traces/parsers.py +0 -0
  192. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/traces/quality.py +0 -0
  193. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/data/validator.py +0 -0
  194. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/eval/__init__.py +0 -0
  195. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/eval/arena.py +0 -0
  196. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/eval/benchmarks_v0_43.py +0 -0
  197. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/eval/calibrate.py +0 -0
  198. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/eval/checkpoint_intelligence.py +0 -0
  199. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/eval/custom.py +0 -0
  200. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/eval/forgetting.py +0 -0
  201. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/eval/gate.py +0 -0
  202. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/eval/human.py +0 -0
  203. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/eval/judge.py +0 -0
  204. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/eval/leaderboard.py +0 -0
  205. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/eval/quant_check.py +0 -0
  206. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/experiment/__init__.py +0 -0
  207. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/experiment/tracker.py +0 -0
  208. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/migrate/__init__.py +0 -0
  209. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/migrate/axolotl.py +0 -0
  210. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/migrate/common.py +0 -0
  211. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/migrate/llamafactory.py +0 -0
  212. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/migrate/unsloth.py +0 -0
  213. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/monitoring/__init__.py +0 -0
  214. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/monitoring/callback.py +0 -0
  215. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/monitoring/curriculum_callback.py +0 -0
  216. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/monitoring/display.py +0 -0
  217. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/monitoring/grpo_stability_callback.py +0 -0
  218. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/monitoring/hf_push.py +0 -0
  219. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/monitoring/plugin_callback.py +0 -0
  220. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/monitoring/trace_logger.py +0 -0
  221. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/plugins/__init__.py +0 -0
  222. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/py.typed +0 -0
  223. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/recipes/__init__.py +0 -0
  224. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/recipes/catalog.py +0 -0
  225. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/registry/__init__.py +0 -0
  226. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/registry/attach.py +0 -0
  227. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/registry/diff.py +0 -0
  228. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/registry/hashing.py +0 -0
  229. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/templates/__init__.py +0 -0
  230. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/templates/audio.yaml +0 -0
  231. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/templates/bco.yaml +0 -0
  232. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/templates/chat.yaml +0 -0
  233. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/templates/code.yaml +0 -0
  234. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/templates/embedding.yaml +0 -0
  235. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/templates/fetch_examples/llama-3.1-8b-lora.yaml +0 -0
  236. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/templates/fetch_examples/qwen2.5-7b-dpo.yaml +0 -0
  237. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/templates/fetch_examples/zero3-cpu-offload.json +0 -0
  238. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/templates/ipo.yaml +0 -0
  239. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/templates/kto.yaml +0 -0
  240. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/templates/longcontext.yaml +0 -0
  241. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/templates/manifest.json +0 -0
  242. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/templates/medical.yaml +0 -0
  243. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/templates/moe.yaml +0 -0
  244. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/templates/orpo.yaml +0 -0
  245. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/templates/pretrain.yaml +0 -0
  246. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/templates/reasoning.yaml +0 -0
  247. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/templates/rlhf.yaml +0 -0
  248. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/templates/simpo.yaml +0 -0
  249. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/templates/tool-calling.yaml +0 -0
  250. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/templates/vision.yaml +0 -0
  251. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/trainer/__init__.py +0 -0
  252. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/trainer/bco.py +0 -0
  253. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/trainer/classifier.py +0 -0
  254. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/trainer/distill.py +0 -0
  255. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/trainer/dpo.py +0 -0
  256. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/trainer/embedding.py +0 -0
  257. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/trainer/grpo.py +0 -0
  258. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/trainer/ipo.py +0 -0
  259. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/trainer/kto.py +0 -0
  260. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/trainer/mlx_dpo.py +0 -0
  261. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/trainer/mlx_grpo.py +0 -0
  262. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/trainer/mlx_routing.py +0 -0
  263. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/trainer/mlx_sft.py +0 -0
  264. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/trainer/orpo.py +0 -0
  265. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/trainer/ppo.py +0 -0
  266. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/trainer/preference.py +0 -0
  267. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/trainer/pretrain.py +0 -0
  268. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/trainer/prm.py +0 -0
  269. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/trainer/reward_model.py +0 -0
  270. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/trainer/rewards.py +0 -0
  271. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/trainer/sft.py +0 -0
  272. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/trainer/simpo.py +0 -0
  273. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/trainer/unlearn.py +0 -0
  274. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/tui_app.py +0 -0
  275. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/ui/__init__.py +0 -0
  276. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/ui/app.py +0 -0
  277. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/ui/plugins/__init__.py +0 -0
  278. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/ui/static/app.js +0 -0
  279. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/ui/static/index.html +0 -0
  280. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/ui/static/logo.png +0 -0
  281. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/ui/static/logo.svg +0 -0
  282. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/ui/static/style.css +0 -0
  283. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/__init__.py +0 -0
  284. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/_eval_text.py +0 -0
  285. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/ab_test.py +0 -0
  286. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/activation_offload.py +0 -0
  287. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/active_sampler.py +0 -0
  288. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/adapter_bisect.py +0 -0
  289. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/adapter_diff.py +0 -0
  290. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/adapter_scan.py +0 -0
  291. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/adapter_sign.py +0 -0
  292. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/advanced_precision.py +0 -0
  293. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/advise.py +0 -0
  294. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/advise_history.py +0 -0
  295. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/agent_forge.py +0 -0
  296. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/agent_rollout.py +0 -0
  297. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/airgap_bundle.py +0 -0
  298. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/annex_xi.py +0 -0
  299. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/anthropic_messages.py +0 -0
  300. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/apple_adapter.py +0 -0
  301. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/attest.py +0 -0
  302. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/audit_log.py +0 -0
  303. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/auto_quant.py +0 -0
  304. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/backend_detect.py +0 -0
  305. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/batch_probe.py +0 -0
  306. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/behavior_battery.py +0 -0
  307. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/bitnet.py +0 -0
  308. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/blame.py +0 -0
  309. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/block_expansion.py +0 -0
  310. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/bom.py +0 -0
  311. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/brain_rot.py +0 -0
  312. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/brain_rot_lang.py +0 -0
  313. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/build_dag.py +0 -0
  314. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/canary_discovery.py +0 -0
  315. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/canary_router.py +0 -0
  316. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/capability_suite.py +0 -0
  317. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/checklist_dsl.py +0 -0
  318. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/checkpoint_trigger.py +0 -0
  319. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/citation_faithful.py +0 -0
  320. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/classifier.py +0 -0
  321. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/compile_tools.py +0 -0
  322. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/completions.py +0 -0
  323. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/constants.py +0 -0
  324. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/convergence.py +0 -0
  325. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/crash.py +0 -0
  326. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/cross_doc_attn.py +0 -0
  327. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/curriculum.py +0 -0
  328. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/curriculum_dynamic.py +0 -0
  329. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/cut_ce.py +0 -0
  330. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/data_forge.py +0 -0
  331. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/data_mix.py +0 -0
  332. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/data_pipeline.py +0 -0
  333. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/data_score.py +0 -0
  334. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/deepspeed.py +0 -0
  335. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/delinearize_llama4.py +0 -0
  336. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/demo_bundles.py +0 -0
  337. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/deploy_autopilot.py +0 -0
  338. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/deploy_measure.py +0 -0
  339. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/diagnose/__init__.py +0 -0
  340. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/diagnose/_common.py +0 -0
  341. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/diagnose/badge.py +0 -0
  342. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/diagnose/contamination.py +0 -0
  343. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/diagnose/forgetting.py +0 -0
  344. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/diagnose/format.py +0 -0
  345. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/diagnose/memorization.py +0 -0
  346. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/diagnose/mode_collapse.py +0 -0
  347. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/diagnose/refusal.py +0 -0
  348. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/diagnose/report.py +0 -0
  349. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/diagnose/runner.py +0 -0
  350. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/distill.py +0 -0
  351. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/dpo_variants.py +0 -0
  352. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/drift_alarm.py +0 -0
  353. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/ebft_gdpo.py +0 -0
  354. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/echo_trap.py +0 -0
  355. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/edit_diff.py +0 -0
  356. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/edit_governor.py +0 -0
  357. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/encoding.py +0 -0
  358. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/energy.py +0 -0
  359. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/env_lock.py +0 -0
  360. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/errors.py +0 -0
  361. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/eval_design.py +0 -0
  362. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/eval_gate_hook.py +0 -0
  363. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/eval_lock_coverage.py +0 -0
  364. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/expectations.py +0 -0
  365. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/fetch_examples.py +0 -0
  366. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/flash_attn.py +0 -0
  367. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/fp8.py +0 -0
  368. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/freeze.py +0 -0
  369. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/fsdp.py +0 -0
  370. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/fsdp_consolidate.py +0 -0
  371. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/galore.py +0 -0
  372. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/gguf_quant.py +0 -0
  373. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/gpu.py +0 -0
  374. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/gpu_monitor.py +0 -0
  375. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/grace_codebook.py +0 -0
  376. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/graceful_save.py +0 -0
  377. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/grad_accum.py +0 -0
  378. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/gradient_ckpt.py +0 -0
  379. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/grpo_long_context.py +0 -0
  380. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/grpo_variants.py +0 -0
  381. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/hardware_fit.py +0 -0
  382. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/hf.py +0 -0
  383. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/hf_space.py +0 -0
  384. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/hubs.py +0 -0
  385. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/ingest_sources.py +0 -0
  386. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/integrations.py +0 -0
  387. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/interference.py +0 -0
  388. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/irt.py +0 -0
  389. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/iterative_dpo.py +0 -0
  390. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/jinja_analyzer.py +0 -0
  391. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/kernel_picker.py +0 -0
  392. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/knowledge_edit.py +0 -0
  393. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/kv_cache.py +0 -0
  394. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/launcher.py +0 -0
  395. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/license_advisor.py +0 -0
  396. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/license_matrix.py +0 -0
  397. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/liger.py +0 -0
  398. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/llama_proxy.py +0 -0
  399. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/llama_server_timings.py +0 -0
  400. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/local_rl.py +0 -0
  401. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/loftq_init.py +0 -0
  402. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/log_level.py +0 -0
  403. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/long_context.py +0 -0
  404. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/longlora.py +0 -0
  405. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/loop_budget.py +0 -0
  406. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/lr_finder.py +0 -0
  407. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/lr_groups.py +0 -0
  408. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/magpie.py +0 -0
  409. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/metrics.py +0 -0
  410. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/mii.py +0 -0
  411. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/minillm.py +0 -0
  412. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/mix_proxy.py +0 -0
  413. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/mixed_precision.py +0 -0
  414. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/mlx.py +0 -0
  415. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/moe.py +0 -0
  416. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/moe_quant.py +0 -0
  417. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/mole_routing.py +0 -0
  418. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/multipack.py +0 -0
  419. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/multipack_sampler.py +0 -0
  420. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/multipack_trainer.py +0 -0
  421. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/namespace_pin.py +0 -0
  422. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/neat_packing.py +0 -0
  423. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/ngram_spec.py +0 -0
  424. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/nlg_metrics.py +0 -0
  425. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/ollama.py +0 -0
  426. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/onboarding.py +0 -0
  427. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/optimizer_zoo.py +0 -0
  428. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/paths.py +0 -0
  429. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/peft_builder.py +0 -0
  430. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/peft_patches.py +0 -0
  431. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/peft_wiring.py +0 -0
  432. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/persona_hub.py +0 -0
  433. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/pipeline.py +0 -0
  434. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/preference_combine.py +0 -0
  435. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/prm.py +0 -0
  436. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/probe_pack.py +0 -0
  437. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/profiler.py +0 -0
  438. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/profiling.py +0 -0
  439. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/profiling_v0_43.py +0 -0
  440. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/prompt_compile.py +0 -0
  441. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/prompt_distill.py +0 -0
  442. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/prune_prompt.py +0 -0
  443. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/qat.py +0 -0
  444. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/qr_url.py +0 -0
  445. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/quality.py +0 -0
  446. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/quant_menu.py +0 -0
  447. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/ra_dit.py +0 -0
  448. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/reasoning_effort.py +0 -0
  449. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/reasoning_parser.py +0 -0
  450. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/recipe_dag.py +0 -0
  451. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/recipe_run.py +0 -0
  452. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/registry.py +0 -0
  453. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/relora.py +0 -0
  454. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/replay.py +0 -0
  455. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/repro_receipt.py +0 -0
  456. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/reward_hacking.py +0 -0
  457. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/ring_attention.py +0 -0
  458. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/rl_checkpoint.py +0 -0
  459. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/run_cost.py +0 -0
  460. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/sae_diff.py +0 -0
  461. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/save_formats.py +0 -0
  462. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/server_tools.py +0 -0
  463. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/sglang.py +0 -0
  464. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/shortcuts.py +0 -0
  465. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/signing.py +0 -0
  466. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/sleeper_probe.py +0 -0
  467. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/soup_lock.py +0 -0
  468. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/spec_pairing.py +0 -0
  469. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/spike_recovery.py +0 -0
  470. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/sse_train_stream.py +0 -0
  471. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/steering.py +0 -0
  472. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/strict_safetensors.py +0 -0
  473. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/structured_output.py +0 -0
  474. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/sweep_config.py +0 -0
  475. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/tail_latency.py +0 -0
  476. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/terraform_plan.py +0 -0
  477. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/tool_outputs.py +0 -0
  478. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/topology.py +0 -0
  479. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/tracing.py +0 -0
  480. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/trackers.py +0 -0
  481. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/train_event_buffer.py +0 -0
  482. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/trainer_plugins.py +0 -0
  483. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/trust_remote.py +0 -0
  484. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/tts.py +0 -0
  485. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/tunability.py +0 -0
  486. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/ui_env.py +0 -0
  487. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/uld.py +0 -0
  488. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/unlearning.py +0 -0
  489. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/unlearning_eval.py +0 -0
  490. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/unsloth.py +0 -0
  491. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/v028_features.py +0 -0
  492. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/vector_bank.py +0 -0
  493. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/vllm.py +0 -0
  494. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/vscode_setup.py +0 -0
  495. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/warmup.py +0 -0
  496. {soup_cli-0.71.3 → soup_cli-0.71.4}/src/soup_cli/utils/why.py +0 -0
  497. {soup_cli-0.71.3 → soup_cli-0.71.4}/templates/chat.yaml +0 -0
  498. {soup_cli-0.71.3 → soup_cli-0.71.4}/templates/code.yaml +0 -0
  499. {soup_cli-0.71.3 → soup_cli-0.71.4}/templates/medical.yaml +0 -0
  500. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/__init__.py +0 -0
  501. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/conftest.py +0 -0
  502. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/qa/v053_qa.md +0 -0
  503. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_adapters.py +0 -0
  504. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_advanced_peft.py +0 -0
  505. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_assistant_mask.py +0 -0
  506. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_audio.py +0 -0
  507. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_auto_tuning.py +0 -0
  508. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_autopilot.py +0 -0
  509. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_awq_gptq_export.py +0 -0
  510. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_batch_probe.py +0 -0
  511. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_bco.py +0 -0
  512. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_bench.py +0 -0
  513. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_brain_rot_multilingual.py +0 -0
  514. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_bugfixes.py +0 -0
  515. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_callback.py +0 -0
  516. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_cans.py +0 -0
  517. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_chat.py +0 -0
  518. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_chat_template.py +0 -0
  519. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_cli.py +0 -0
  520. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_cli_subprocess.py +0 -0
  521. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_config.py +0 -0
  522. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_cost.py +0 -0
  523. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_crash_reporter.py +0 -0
  524. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_curriculum.py +0 -0
  525. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_data.py +0 -0
  526. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_data_augment.py +0 -0
  527. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_data_sample.py +0 -0
  528. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_data_split.py +0 -0
  529. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_data_tools.py +0 -0
  530. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_dataset_hub.py +0 -0
  531. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_dataset_registry.py +0 -0
  532. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_deepspeed.py +0 -0
  533. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_deploy_ollama.py +0 -0
  534. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_diff.py +0 -0
  535. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_display.py +0 -0
  536. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_doctor.py +0 -0
  537. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_dpo_example.py +0 -0
  538. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_dpo_variants.py +0 -0
  539. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_embedding.py +0 -0
  540. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_errors.py +0 -0
  541. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_eval.py +0 -0
  542. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_eval_gate.py +0 -0
  543. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_eval_platform.py +0 -0
  544. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_export.py +0 -0
  545. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_formats.py +0 -0
  546. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_fp8_recipe.py +0 -0
  547. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_freeze_training.py +0 -0
  548. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_generate.py +0 -0
  549. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_gpu.py +0 -0
  550. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_grpo.py +0 -0
  551. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_hf_integration.py +0 -0
  552. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_infer.py +0 -0
  553. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_inference_advanced.py +0 -0
  554. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_init.py +0 -0
  555. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_ipo.py +0 -0
  556. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_jinja_analyzer.py +0 -0
  557. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_kto.py +0 -0
  558. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_loader.py +0 -0
  559. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_log_level.py +0 -0
  560. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_loss_watchdog.py +0 -0
  561. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_merge.py +0 -0
  562. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_migrate.py +0 -0
  563. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_mlx_backend.py +0 -0
  564. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_moe.py +0 -0
  565. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_multi_adapter.py +0 -0
  566. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_multi_gpu.py +0 -0
  567. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_multipack_config.py +0 -0
  568. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_multipack_invariants.py +0 -0
  569. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_multipack_sampler.py +0 -0
  570. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_neat_packing.py +0 -0
  571. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_neftune_rslora.py +0 -0
  572. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_onnx_tensorrt_export.py +0 -0
  573. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_orpo.py +0 -0
  574. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_packing.py +0 -0
  575. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_part_a_wave1.py +0 -0
  576. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_part_a_wave2.py +0 -0
  577. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_part_b.py +0 -0
  578. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_part_c.py +0 -0
  579. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_part_d.py +0 -0
  580. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_part_e.py +0 -0
  581. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_part_f_hardening.py +0 -0
  582. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_peft_methods.py +0 -0
  583. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_peft_patches.py +0 -0
  584. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_performance.py +0 -0
  585. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_pissa_init.py +0 -0
  586. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_ppo.py +0 -0
  587. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_preference_dispatcher.py +0 -0
  588. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_preference_multi.py +0 -0
  589. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_preference_multi_runtime.py +0 -0
  590. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_pretrain.py +0 -0
  591. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_profile.py +0 -0
  592. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_profiling.py +0 -0
  593. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_progress.py +0 -0
  594. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_push.py +0 -0
  595. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_qat.py +0 -0
  596. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_quality_filter.py +0 -0
  597. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_quant_check.py +0 -0
  598. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_quant_menu.py +0 -0
  599. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_quickstart.py +0 -0
  600. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_rank_pattern.py +0 -0
  601. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_recipes.py +0 -0
  602. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_recipes_v031.py +0 -0
  603. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_refusal_multilingual.py +0 -0
  604. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_registry.py +0 -0
  605. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_relora.py +0 -0
  606. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_replay.py +0 -0
  607. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_resume.py +0 -0
  608. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_rlvr.py +0 -0
  609. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_run_cost.py +0 -0
  610. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_runs.py +0 -0
  611. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_serve.py +0 -0
  612. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_server_generate.py +0 -0
  613. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_sglang_serve.py +0 -0
  614. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_simpo.py +0 -0
  615. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_smoke_train.py +0 -0
  616. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_speculative_decoding.py +0 -0
  617. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_sweep.py +0 -0
  618. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_synth_data_pro.py +0 -0
  619. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_templates_yaml.py +0 -0
  620. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_tensorboard.py +0 -0
  621. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_tool_calling.py +0 -0
  622. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_trace_to_pref.py +0 -0
  623. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_tracker.py +0 -0
  624. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_trainer_coverage_v035.py +0 -0
  625. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_trainer_init.py +0 -0
  626. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_training_intelligence.py +0 -0
  627. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_training_speed.py +0 -0
  628. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_trust_remote_code.py +0 -0
  629. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_tui.py +0 -0
  630. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_ui.py +0 -0
  631. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_ui_chat.py +0 -0
  632. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_ui_config_builder.py +0 -0
  633. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_ui_live_monitor.py +0 -0
  634. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_ui_metrics.py +0 -0
  635. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_unsloth.py +0 -0
  636. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0401_part_c.py +0 -0
  637. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0401_part_d.py +0 -0
  638. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0401_part_e.py +0 -0
  639. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0402_part_a.py +0 -0
  640. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0402_part_b.py +0 -0
  641. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0403_part_a.py +0 -0
  642. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0403_part_b.py +0 -0
  643. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0403_part_c.py +0 -0
  644. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0404_part_a.py +0 -0
  645. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0404_part_b.py +0 -0
  646. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0405_part_a.py +0 -0
  647. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0406_part_a.py +0 -0
  648. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0410_part_a.py +0 -0
  649. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0410_part_b.py +0 -0
  650. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0410_part_c.py +0 -0
  651. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0420.py +0 -0
  652. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0430_part_a.py +0 -0
  653. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0430_part_b.py +0 -0
  654. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0430_part_c.py +0 -0
  655. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0430_part_d.py +0 -0
  656. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0440_part_a.py +0 -0
  657. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0440_part_b.py +0 -0
  658. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0440_part_c.py +0 -0
  659. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0440_part_d.py +0 -0
  660. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0440_review_followups.py +0 -0
  661. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0450.py +0 -0
  662. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0460_part_a.py +0 -0
  663. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0460_part_b.py +0 -0
  664. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0470_part_a.py +0 -0
  665. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0470_part_b.py +0 -0
  666. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0480_part_a.py +0 -0
  667. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0480_part_b.py +0 -0
  668. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0490.py +0 -0
  669. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0500_part_a.py +0 -0
  670. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0500_part_b.py +0 -0
  671. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0500_part_c.py +0 -0
  672. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0500_part_d.py +0 -0
  673. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0500_part_e.py +0 -0
  674. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0510.py +0 -0
  675. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0520.py +0 -0
  676. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0530.py +0 -0
  677. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v05310.py +0 -0
  678. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v05311.py +0 -0
  679. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0531_109.py +0 -0
  680. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0531_139.py +0 -0
  681. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0531_142.py +0 -0
  682. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0531_82.py +0 -0
  683. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0532.py +0 -0
  684. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0533.py +0 -0
  685. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0534.py +0 -0
  686. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0535.py +0 -0
  687. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0536.py +0 -0
  688. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0537.py +0 -0
  689. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0538.py +0 -0
  690. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0539.py +0 -0
  691. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0540.py +0 -0
  692. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0550.py +0 -0
  693. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0550_followups.py +0 -0
  694. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0560.py +0 -0
  695. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0570_part_a.py +0 -0
  696. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0570_part_b.py +0 -0
  697. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0570_part_c.py +0 -0
  698. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0570_part_d.py +0 -0
  699. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0580.py +0 -0
  700. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0590.py +0 -0
  701. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0600_part_a.py +0 -0
  702. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0600_part_b.py +0 -0
  703. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0600_part_c.py +0 -0
  704. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0600_part_d.py +0 -0
  705. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0600_part_e.py +0 -0
  706. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0600_part_f.py +0 -0
  707. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0610_part_a.py +0 -0
  708. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0610_part_b.py +0 -0
  709. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0610_part_c.py +0 -0
  710. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0610_part_d.py +0 -0
  711. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0610_part_e.py +0 -0
  712. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0620_followups.py +0 -0
  713. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0620_part_a.py +0 -0
  714. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0620_part_b.py +0 -0
  715. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0620_part_c.py +0 -0
  716. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0620_part_d.py +0 -0
  717. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0620_part_e.py +0 -0
  718. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0630_followups.py +0 -0
  719. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0630_part_a.py +0 -0
  720. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0630_part_b.py +0 -0
  721. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0630_part_c.py +0 -0
  722. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0630_part_d.py +0 -0
  723. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0630_part_e.py +0 -0
  724. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0631_206.py +0 -0
  725. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0640_followups.py +0 -0
  726. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0640_part_a.py +0 -0
  727. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0640_part_b.py +0 -0
  728. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0640_part_c.py +0 -0
  729. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0640_part_d.py +0 -0
  730. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0640_part_e.py +0 -0
  731. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0640_part_f.py +0 -0
  732. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0650_followups.py +0 -0
  733. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0650_part_a.py +0 -0
  734. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0650_part_b.py +0 -0
  735. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0650_part_c.py +0 -0
  736. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0650_part_d.py +0 -0
  737. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0650_part_e.py +0 -0
  738. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0660_cli.py +0 -0
  739. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0660_followups.py +0 -0
  740. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0660_part_a.py +0 -0
  741. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0660_part_b.py +0 -0
  742. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0660_part_c.py +0 -0
  743. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0660_part_d.py +0 -0
  744. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0660_part_e.py +0 -0
  745. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0670_followups.py +0 -0
  746. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0670_part_a.py +0 -0
  747. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0670_part_b.py +0 -0
  748. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0670_part_c.py +0 -0
  749. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0670_part_d.py +0 -0
  750. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0670_part_e.py +0 -0
  751. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0670_part_f.py +0 -0
  752. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0680_followups.py +0 -0
  753. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0680_part_a.py +0 -0
  754. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0680_part_b.py +0 -0
  755. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0680_part_c.py +0 -0
  756. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0680_part_d.py +0 -0
  757. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0680_part_e.py +0 -0
  758. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0690_part_a.py +0 -0
  759. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0690_part_b.py +0 -0
  760. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0690_part_c.py +0 -0
  761. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0690_part_d.py +0 -0
  762. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0690_part_e.py +0 -0
  763. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0700_part_a.py +0 -0
  764. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0700_part_b.py +0 -0
  765. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0700_part_c.py +0 -0
  766. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0700_part_d.py +0 -0
  767. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0700_part_e.py +0 -0
  768. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0700_part_f.py +0 -0
  769. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0712.py +0 -0
  770. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_v0713.py +0 -0
  771. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_validator.py +0 -0
  772. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_vision.py +0 -0
  773. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_vllm_serve.py +0 -0
  774. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_why.py +0 -0
  775. {soup_cli-0.71.3 → soup_cli-0.71.4}/tests/test_windows_encoding.py +0 -0
@@ -12,6 +12,51 @@ reproducing 70+ versions of notes.
12
12
 
13
13
  ## [Unreleased]
14
14
 
15
+ ## [0.71.4] - 2026-06-02
16
+
17
+ ### Added
18
+ - **Live canary verdict for `soup adapters merge`** — `--canary <suite.json>`
19
+ scores the merged adapter against the first input and classifies
20
+ **OK / MINOR / MAJOR** using the Quant-Lobotomy taxonomy (drop <2% OK, <5%
21
+ MINOR, else MAJOR). `--strict-verdict` exits 2 on MAJOR. Pre-scored
22
+ `{"baseline_scores","candidate_scores"}` suites run with no model load; a
23
+ `{"tasks":[...]}` suite uses an injectable scorer. Replaces the v0.57 `UNKNOWN`
24
+ stub.
25
+ - **Live evolutionary merge** — `soup adapters merge --strategy cmaes --eval
26
+ <suite> --budget <t>` now runs the full CMA-ES loop: each candidate is merged,
27
+ materialised, scored against the eval suite, and the best-weighted merge is
28
+ written to `--output`. Replaces the v0.67 plan-only stub.
29
+ - **Publish an adapter PR to GitHub** — `soup adapters pr <title> --base-sha
30
+ <hex> --adapter <path> --push owner/repo#N` posts the rendered PR Markdown as a
31
+ GitHub PR comment via `gh api` (argv-list, body over JSON stdin; no shell).
32
+ Token resolves from `GITHUB_TOKEN` / `GH_TOKEN`.
33
+ - **Pre-wired `soup loop` production stages** — `soup loop init --pre-wired` (or
34
+ `soup loop watch --pre-wired`) swaps the v0.58 no-op stage stubs for real
35
+ harvest (traces → preference pairs) → DPO train → eval-gate → canary-deploy
36
+ callables. `soup loop status` now shows the `pre_wired` flag.
37
+ - **Loop iterations as Soup Cans + Registry lineage** — `soup loop watch
38
+ --pack-cans` packs each successful iteration as a v0.26 Soup Can and appends a
39
+ Registry entry (tag `loop-iter`), chaining a real lineage DAG across
40
+ iterations visible through `soup history`. `soup loop replay <id> --extract
41
+ <dir>` unpacks a recorded iteration.
42
+ - **Branch pointers into the Registry** — `soup adapters branch <name>
43
+ --attach-to-registry <id>` links a branch snapshot to a Registry entry (shown
44
+ as a `branches` node in `soup history`); `soup adapters branch <name>
45
+ --from-registry <id>` derives a fresh snapshot's config + base from an entry.
46
+
47
+ ### Security
48
+ - The backdoor-scan gate (v0.71.2 #192) and license-conflict gate (v0.60 Part E)
49
+ now run for **all** merge strategies, including `--strategy cmaes` (previously
50
+ bypassed because cmaes returned before the gates).
51
+ - `soup loop` canary deploy restricts `SOUP_LOOP_SERVE_ENDPOINT` to loopback /
52
+ RFC1918-private hosts (a serve endpoint is the operator's own box/LAN), beyond
53
+ the general webhook SSRF policy which permits any HTTPS host.
54
+ - `soup adapters pr --push` builds the `gh` child environment from an allowlist
55
+ so unrelated secrets (`HF_TOKEN` / `OPENAI_API_KEY` / …) never reach the
56
+ subprocess.
57
+ - The canary-suite JSON read uses `O_NOFOLLOW` + `os.fstat` (size cap enforced on
58
+ the same fd) to close the symlink/size-cap TOCTOU window.
59
+
15
60
  ## [0.71.3] - 2026-06-01
16
61
 
17
62
  ### 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 (273 files, 12342 tests)
123
+ tests/ - Test suite (274 files, 12474 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.3
3
+ Version: 0.71.4
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,19 +183,21 @@ infrastructure instead of improving models. Soup fixes that.
183
183
 
184
184
  ## What's New
185
185
 
186
- **v0.71.3Compliance / annex / audit / energy.** The EU AI Act + carbon + audit surfaces go live:
187
-
188
- - **Energy & CO2 measurement** — `soup train --track-energy` measures the training window with an
189
- offline carbon tracker (no network) and reports kWh / CO2, feeding them into the Annex doc.
190
- Install with `pip install soup-cli[carbon]`.
191
- - **PDF compliance docs** — `soup train --annex-xi report.pdf` now renders a real PDF of the
192
- EU AI Act Annex XI/XII (a `.md` path still gives markdown). The top crawled domains of your
193
- training corpus are auto-listed. `pip install soup-cli[pdf]`.
194
- - **Per-command audit log** — every `soup` command appends one HIPAA/SOC2 record to
195
- `~/.soup/audit.jsonl` (secrets redacted). Opt out with `--no-audit-log` or `SOUP_NO_AUDIT_LOG=1`.
196
- - **Signed Soup Cans + airgap receipts** — `soup can pack --attest statement.json` embeds in-toto
197
- attestations into a can; `soup airgap-bundle --repro-receipt receipt.json` ships a reproducibility
198
- receipt inside the offline bundle.
186
+ **v0.71.4Adapter lifecycle + loop wiring.** The merge, PR, and continuous-loop surfaces go live:
187
+
188
+ - **Canary verdict on merge** — `soup adapters merge … --canary suite.json` scores the merged
189
+ adapter and reports **OK / MINOR / MAJOR**; `--strict-verdict` exits non-zero on a MAJOR
190
+ regression. Works with no model load using a pre-scored canary suite.
191
+ - **Evolutionary merge for real** — `soup adapters merge --strategy cmaes --eval suite --budget 1h`
192
+ now runs the full CMA-ES search (merge score optimise) and writes the best blend, instead of
193
+ just printing a plan.
194
+ - **Publish an adapter PR** — `soup adapters pr <title> --base-sha <hex> --adapter <path> --push
195
+ owner/repo#42` posts the rendered PR straight to a GitHub PR comment.
196
+ - **Continuous fine-tuning loop, wired up** — `soup loop watch --pre-wired` runs the real
197
+ traces DPO → eval-gate → canary pipeline; `--pack-cans` snapshots every iteration as a
198
+ shareable Soup Can with Registry lineage (`soup loop replay <id> --extract dir`).
199
+ - **Branches ↔ Registry** — `soup adapters branch <name> --attach-to-registry <id>` /
200
+ `--from-registry <id>` links training-env snapshots into the Registry lineage DAG.
199
201
 
200
202
  Full history: [CHANGELOG.md](CHANGELOG.md) &middot; [GitHub Releases](https://github.com/MakazhanAlpamys/Soup/releases).
201
203
 
@@ -49,19 +49,21 @@ infrastructure instead of improving models. Soup fixes that.
49
49
 
50
50
  ## What's New
51
51
 
52
- **v0.71.3Compliance / annex / audit / energy.** The EU AI Act + carbon + audit surfaces go live:
53
-
54
- - **Energy & CO2 measurement** — `soup train --track-energy` measures the training window with an
55
- offline carbon tracker (no network) and reports kWh / CO2, feeding them into the Annex doc.
56
- Install with `pip install soup-cli[carbon]`.
57
- - **PDF compliance docs** — `soup train --annex-xi report.pdf` now renders a real PDF of the
58
- EU AI Act Annex XI/XII (a `.md` path still gives markdown). The top crawled domains of your
59
- training corpus are auto-listed. `pip install soup-cli[pdf]`.
60
- - **Per-command audit log** — every `soup` command appends one HIPAA/SOC2 record to
61
- `~/.soup/audit.jsonl` (secrets redacted). Opt out with `--no-audit-log` or `SOUP_NO_AUDIT_LOG=1`.
62
- - **Signed Soup Cans + airgap receipts** — `soup can pack --attest statement.json` embeds in-toto
63
- attestations into a can; `soup airgap-bundle --repro-receipt receipt.json` ships a reproducibility
64
- receipt inside the offline bundle.
52
+ **v0.71.4Adapter lifecycle + loop wiring.** The merge, PR, and continuous-loop surfaces go live:
53
+
54
+ - **Canary verdict on merge** — `soup adapters merge … --canary suite.json` scores the merged
55
+ adapter and reports **OK / MINOR / MAJOR**; `--strict-verdict` exits non-zero on a MAJOR
56
+ regression. Works with no model load using a pre-scored canary suite.
57
+ - **Evolutionary merge for real** — `soup adapters merge --strategy cmaes --eval suite --budget 1h`
58
+ now runs the full CMA-ES search (merge score optimise) and writes the best blend, instead of
59
+ just printing a plan.
60
+ - **Publish an adapter PR** — `soup adapters pr <title> --base-sha <hex> --adapter <path> --push
61
+ owner/repo#42` posts the rendered PR straight to a GitHub PR comment.
62
+ - **Continuous fine-tuning loop, wired up** — `soup loop watch --pre-wired` runs the real
63
+ traces DPO → eval-gate → canary pipeline; `--pack-cans` snapshots every iteration as a
64
+ shareable Soup Can with Registry lineage (`soup loop replay <id> --extract dir`).
65
+ - **Branches ↔ Registry** — `soup adapters branch <name> --attach-to-registry <id>` /
66
+ `--from-registry <id>` links training-env snapshots into the Registry lineage DAG.
65
67
 
66
68
  Full history: [CHANGELOG.md](CHANGELOG.md) &middot; [GitHub Releases](https://github.com/MakazhanAlpamys/Soup/releases).
67
69
 
@@ -34,6 +34,8 @@ v0.57 shipped `adapters diff / merge / blame / branch`. v0.67 finishes the lifec
34
34
 
35
35
  ```bash
36
36
  # 1. Evolutionary merge: search the simplex of merge weights via CMA-ES.
37
+ # v0.71.4 makes this a LIVE loop — each candidate is merged, scored against
38
+ # --eval, and the best blend is written to --output.
37
39
  soup adapters merge \
38
40
  adapter-finance/ adapter-medical/ adapter-legal/ \
39
41
  --strategy cmaes \
@@ -43,6 +45,12 @@ soup adapters merge \
43
45
  --max-generations 20 \
44
46
  --output merged/
45
47
 
48
+ # 1b. One-shot merge with a live canary verdict (v0.71.4). Scores the merged
49
+ # adapter vs the first input → OK / MINOR / MAJOR; --strict-verdict exits 2
50
+ # on a MAJOR regression. A pre-scored canary suite needs no model load.
51
+ soup adapters merge adapter-a/ adapter-b/ -o merged/ \
52
+ --canary evals/canary.json --strict-verdict
53
+
46
54
  # 2. Render the merge as a GitHub PR for review (eval deltas + sample diffs).
47
55
  soup adapters pr "merge: 3-domain blend" \
48
56
  --base-sha $(git rev-parse HEAD) \
@@ -52,6 +60,12 @@ soup adapters pr "merge: 3-domain blend" \
52
60
  --dataset-diff data/diff.txt \
53
61
  --format markdown -o pr.md
54
62
 
63
+ # 2b. Post it straight to a GitHub PR comment (v0.71.4). Auth via GITHUB_TOKEN
64
+ # / GH_TOKEN; uses `gh api` under the hood (no secret leaks to the child).
65
+ soup adapters pr "merge: 3-domain blend" \
66
+ --base-sha $(git rev-parse HEAD) --adapter merged/ \
67
+ --eval evals/deltas.json --push your-org/your-repo#42
68
+
55
69
  # 3. Lock a reproducible run state. Closure = sha(base + dataset + env).
56
70
  soup env lock # v0.64 — capture env hash
57
71
  soup lock write \
@@ -93,6 +107,16 @@ soup loop status
93
107
  # Run the daemon (foreground)
94
108
  soup loop watch --poll-interval 300
95
109
 
110
+ # Pre-wired production stages (v0.71.4): real traces → DPO → eval-gate → canary,
111
+ # instead of the v0.58 no-op stubs. Opt in once via `loop init --pre-wired` or
112
+ # per-run via --pre-wired. Pack each iteration as a shareable Soup Can with
113
+ # Registry lineage via --pack-cans.
114
+ soup loop init registry://abc12 --eval evals/lock.json --baseline registry://prod --pre-wired
115
+ soup loop watch --pre-wired --pack-cans --poll-interval 300
116
+
117
+ # Unpack a recorded iteration's Soup Can for what-if analysis (v0.71.4)
118
+ soup loop replay iter-20260515T120000-abcdef01 --extract ./iter-dump
119
+
96
120
  # Background subprocess (writes PID, no shell)
97
121
  soup loop watch --detach
98
122
 
@@ -240,6 +264,14 @@ soup adapters blame ./run-v18 --dataset train.jsonl --layer q_proj.7 \
240
264
  soup adapters branch v18 --config soup.yaml --base meta-llama/Llama-3.1-8B \
241
265
  --dataset train.jsonl
242
266
 
267
+ # Link a branch into the Registry lineage DAG (v0.71.4) — shows as a
268
+ # `branches` node under the entry in `soup history`.
269
+ soup adapters branch v18 --config soup.yaml --base meta-llama/Llama-3.1-8B \
270
+ --attach-to-registry reg_20260601_abc123
271
+
272
+ # Or derive a fresh snapshot's config + base straight from a Registry entry (v0.71.4)
273
+ soup adapters branch v18-from-reg --from-registry reg_20260601_abc123
274
+
243
275
  # Restore the snapshot's config (refuses if source SHA drifted)
244
276
  soup adapters checkout v18 --output soup.yaml
245
277
 
@@ -264,7 +296,9 @@ soup adapters branches
264
296
  - Branch pointers live under `~/.soup/branches/` (override via `SOUP_BRANCHES_DIR`, constrained to `$HOME` / `$CWD` / `$TMPDIR`).
265
297
  - `soup adapters checkout` SHA-checks the source config — refuses to restore when the source has drifted from the snapshot, so reproducibility never silently lies.
266
298
 
267
- **v0.66.0:** `soup adapters blame` is now LIVE — the v0.57 `NotImplementedError` stub (#171) is lifted via a DataInf-style influence-function approximation. Pass `--top-k 50` to control the reported top-influencer count; pass a real `probe_fn` (Python API) to feed real gradients, or use the default deterministic synthetic probe for offline planning. `MergeReport.verdict` remains the `UNKNOWN` stub (live canary eval in v0.57.1).
299
+ **v0.66.0:** `soup adapters blame` is now LIVE — the v0.57 `NotImplementedError` stub (#171) is lifted via a DataInf-style influence-function approximation. Pass `--top-k 50` to control the reported top-influencer count; pass a real `probe_fn` (Python API) to feed real gradients, or use the default deterministic synthetic probe for offline planning.
300
+
301
+ **v0.71.4:** the merge verdict is now LIVE — `soup adapters merge … --canary suite.json` lifts the `MergeReport.verdict` `UNKNOWN` stub. A pre-scored `{"baseline_scores","candidate_scores"}` suite classifies the blend OK / MINOR / MAJOR with no model load; a `{"tasks":[...]}` suite uses an injectable scorer. `--strict-verdict` exits 2 on MAJOR. The backdoor-scan and license-conflict gates now run for **every** strategy, including `cmaes`. `soup adapters branch <name> --from-registry <id>` / `--attach-to-registry <id>` link training-env snapshots into the Registry lineage DAG (shown as a `branches` node in `soup history`).
268
302
 
269
303
 
270
304
  ## Soup Cans (Shareable Recipes)
@@ -109,12 +109,12 @@ soup cost --config soup.yaml --gpu H100 Estimate training cost for specific
109
109
  soup adapters list ./output/ Scan for LoRA adapters
110
110
  soup adapters info ./output/checkpoint-500/ Show adapter metadata
111
111
  soup adapters compare adapter1/ adapter2/ Compare two adapters
112
- soup loop init <model> --eval <s> --baseline <b> Create .soup/loop.yaml (data flywheel)
113
- soup loop status Counters + status (traces / pairs / runs / shipped)
114
- soup loop watch [--detach] [--max-iter N] Harvest → train → gate → deploy daemon
112
+ soup loop init <model> --eval <s> --baseline <b> [--pre-wired] Create .soup/loop.yaml (data flywheel; --pre-wired = real stages)
113
+ soup loop status Counters + status + pre_wired flag
114
+ soup loop watch [--detach] [--max-iter N] [--pre-wired] [--pack-cans] Harvest → train → gate → deploy daemon (pre-wired stages + Soup Can packing)
115
115
  soup loop pause / soup loop resume Atomic status flip
116
116
  soup loop canary <adapter> --traffic 5% Promote canary + auto-rollback on MAJOR
117
- soup loop replay [<iter-id>] Replay a recorded iteration manifest
117
+ soup loop replay [<iter-id>] [--extract <dir>] Replay / unpack a recorded iteration manifest
118
118
  soup serve --model m --adapters chat=./c code=./d Multi-adapter serving
119
119
  soup migrate --from llamafactory config.yaml Import config from LLaMA-Factory
120
120
  soup migrate --from axolotl config.yml Import config from Axolotl
@@ -188,8 +188,11 @@ soup probe interference <losses.json> [--output o.json] Pairwise N×N adapter i
188
188
  soup probe pack <base> [--output o.json] Per-base calibrated probe pack manifest (v0.66.0)
189
189
  soup probe pack --list List bundled probe-pack bases (v0.66.0)
190
190
  soup adapters blame ... --top-k 50 Live DataInf-style influence runner (v0.66.0, closes #171)
191
- soup adapters merge ... --strategy cmaes --eval <s> --budget 1h CMA-ES evolutionary merge (v0.67.0)
191
+ soup adapters merge ... --strategy cmaes --eval <s> --budget 1h CMA-ES evolutionary merge — live loop (v0.67.0 schema / v0.71.4 live)
192
+ soup adapters merge ... --canary <suite.json> [--strict-verdict] Live OK/MINOR/MAJOR canary verdict, exit 2 on MAJOR (v0.71.4)
192
193
  soup adapters pr <title> --base-sha <hex> --adapter <path> GitHub-shaped adapter PR Markdown / JSON (v0.67.0)
194
+ soup adapters pr <title> ... --push owner/repo#N Post the PR as a GitHub comment via gh api (v0.71.4)
195
+ soup adapters branch <name> --from-registry <id> | --attach-to-registry <id> Branch ↔ Registry lineage (v0.71.4)
193
196
  soup adapters bisect <ckpt>... --eval-command "..." Binary search over training history (v0.67.0)
194
197
  soup lock write --base-sha <h> --dataset-sha <h> --env-hash <h> Write soup.lock (v0.67.0)
195
198
  soup lock write --base-sha <h> --dataset-sha <h> --env-lock soup-env.lock Auto-derive --env-hash from soup-env.lock (v0.71.1)
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "soup-cli"
7
- version = "0.71.3"
7
+ version = "0.71.4"
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.3"
3
+ __version__ = "0.71.4"