Roadmap & FAQ
What is planned, and honest answers to common questions. Anything planned is labeled planned.
Roadmap
PyPI publish (smelt-rs)
Wheel and sdist build green and install-verify from disk. Upload pending the maintainer's go. Name smelt-rs is unclaimed.
Multi-parameter oracle
Independent random columns + capped edge product (~40–140 cases).
Package layout support
Relative-import modules are refused today; a refactor hint points at a standalone module.
i64 domain-policy decision
Inputs whose Python result exceeds i64 cannot be matched by an i64 rewrite; whether to filter such cases at capture time is open.
FAQ
Is this part of Python?
No — it is an external tool. It uses pip/uv to install, PyO3 to bind Rust to Python, and maturin to package the extension into a wheel. smelt itself is a CLI you run on a function; it does not patch the interpreter.
Does it work on any code?
No. It works on ONE pure function of simple types (str / int / float / bool / list[int] / list[str]). Impure targets (I/O, randomness, time, globals) are refused with a hint. Package layouts with relative imports are refused today. Rejections are honest outcomes, not failures.
Is the generated code safe?
Generated Rust is treated as untrusted. The model fills one function body in a pinned scaffold (pyo3 =0.29.3). A static scan rejects unsafe, extra crates, build.rs, std net/process/fs, include_*!, env!. Builds run in scratch dirs and the extension executes in a separate worker process under resource limits. What is not isolated: the model still generates arbitrary (but scanned) Rust — the guarantee is that it passes the oracle, not that it is free of all bugs.
Which models?
gemma-4-26b-a4b-it (default, free-tier friendly) and gemma-4-31b-it (strongest, slower) via the Gemini API. A fully offline local provider (llama.cpp, gemma-4-e2b-qat) is also tested. Every result in this repo names the exact model that produced it.
Is it a thin wrapper around a model?
No — the model only writes candidate text. Acceptance, refusal, retries, verification and benchmarking are code. The model never decides anything.