Alpamys
|
479931282c
|
feat(deploy): On-Device Deploy Autopilot — 10-profile catalog + recipe/script writer (v0.46.0 Part A)
Closes the v0.45.0 Known Limitations gap that flagged the 15-entry external
integrations catalog as descriptive-only. This release ships the live
autopilot CLI that picks PEFT + quantisation + speculative-decoding for the
target hardware and emits a ready-to-train recipe.
* soup_cli/utils/deploy_autopilot.py — `DeployProfile` frozen dataclass +
10-entry MappingProxyType-wrapped catalog: mac-m3 / mac-m4-pro /
rtx-3060-12gb / rtx-4090-24gb / iphone-16 / pixel-9 / ollama-local /
lm-studio / runpod-a100 / hf-jobs-h100. `_make` factory rejects bool
recommended_max_length, non-kebab-case names, runtime/quant/peft outside
closed allowlists. `render_recipe_yaml` validates `base` (≤200 chars, no
NUL/newline) + `output_dir` (≤4096 chars). `render_deploy_script` uses
`shlex.quote` on model_path. `write_recipe` / `write_deploy_script`
enforce `is_under_cwd` + `os.lstat + S_ISLNK` TOCTOU rejection at the
write target (matches v0.33.0 #22 / v0.43.0 Part C / v0.44.0 Part B /
v0.45.0 Part E policy).
* soup_cli/commands/deploy.py — new `autopilot` Typer subcommand with
`--target`, `--base`, `--recipe-out`, `--script-out`, `--list`. Every
Rich-rendered profile field passes through `rich.markup.escape`.
* tests/test_v0460_part_a.py — 76 tests covering catalog immutability,
10-profile presence, case-insensitive resolution, every `_make` failure
mode, render-* validation matrix, write-* path-containment + symlink
rejection (POSIX-only), CLI smoke (list / writes / outside-cwd reject).
Live Quant-Lobotomy auto-measure (against the v0.26.0 Checker) is deferred
to v0.46.1 — this release writes the canonical combo per profile, the
runtime measurement step lands in the patch release.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-11 17:11:36 +05:00 |