github MakazhanAlpamys/Soup v0.64.0
v0.64.0 — Pre-flight & Tooling

latest releases: v0.76.1, v0.76.0, v0.75.2...
4 months ago

What's New

Six new top-level commands close axis 1 + 11 of the roadmap: pick the right base, lock the env, refuse OOMs before launch, ship license-clean deploys.

  • soup tunability — probe-train 8 candidate bases (Qwen3-0.6/1.7B, Llama-3.2-1/3B, Gemma-3-E2B, Phi-4-mini, SmolLM3, Qwen2.5-1.5B) → Pareto frontier over (delta × cost × license). Live LoRA probe deferred to v0.64.1; v0.64.0 ships the schema, Pareto math, and a probe_fn= injection point.
  • soup plan / soup apply — Terraform-shape lock-and-execute. plan writes soup.tfstate with the run's config SHA, dataset SHA, estimated cost, ETA, peak VRAM. apply refuses on drift (exit 3) so you never silently re-spend on a mutated config.
  • soup env lock / status / check — hermetic env lockfile via importlib.metadata across 15 ABI-sensitive packages + Python + CUDA. env check exits 3 on ABI-sensitive drift.
  • Hardware-fit calculator — static analytical 5-bucket VRAM predictor with 10% safety margin + actionable hint (--batch-size halve / --quantization 4bit / --gradient-checkpointing auto).
  • soup completions bash | zsh | fish — sourceable shell completion scripts; recipe names auto-complete from the 115-recipe catalogue.
  • soup license-advisor — per-deploy-target license matrix (b2c / defense / embedded) + Llama community + 700M MAU gate (exit 3). Composes with v0.60 adapters merge license-conflict gate.

Install / Upgrade

pip install -U soup-cli==0.64.0

Security

0 CRITICAL + 6 HIGH + 8 MEDIUM + 4 LOW review fixes landed across a consolidated code+security+TDD review wave:

  • HIGH TOCTOU symlink rejection on every new read path (plan YAML / tunability load_report / env read_lock / terraform read_state); compute_dataset_sha cwd-containment + symlink-reject; narrow except Exception → (OSError, ValueError) in env probe
  • MEDIUM strict-JSON config SHA (no default=str silent collision); strict-bool applied; _activation_bytes overflow clamp at 1e18; PEP 604 → Optional[str] for Typer Py3.9 compat; tight Llama-family allowlist replaces .startswith; Windows v12.1 CUDA path-parse; containment-before-existence ordering (defeats distinguish-attack via exception type)
  • LOW source-grep regression for atomic_write_text usage in all 3 writers; MAU upper cap at 1e13; Sequence imported from collections.abc not typing; end-to-end drift-refusal exit-3 regression test

Full security-fix notes: SECURITY.md.

Known Limitations

  • Live LoRA probe deferred to v0.64.1 — _default_probe is a heuristic stub returning constant delta=0.0. Operators wanting real Pareto-frontier data today must inject a probe_fn=... callable.
  • soup apply does NOT execute soup train in-process — prints the canonical soup train --config <yaml> command for the operator to run (Typer commands aren't safe to re-enter).
  • soup env does NOT recreate a venv — schema + drift detection ship now; the --fix action lands in v0.64.1.
  • Hardware-fit calculator is analytical only; composes with v0.40.3 live CUDA probe but does NOT replace it.
  • complete_target_modules returns canonical Llama-shape defaults regardless of base — live HF-config introspection is v0.64.1.
  • Deploy targets are a 3-entry allowlist (b2c / defense / embedded); more targets tracked as v0.64.x follow-up if operator demand emerges.
  • compute_dataset_sha returns zero-hash for outside-cwd paths rather than raising — design choice so soup plan runs before the dataset exists.

Tests: 10035 → 10306 (+271 net in 7 new test files).

Don't miss a new Soup release

NewReleases is sending notifications on new releases.