Added
- Dynamic model ingestion for the
identifiabilityandoedMCP tools (NUDGE-LIM-030). Both tools now acceptmodel_path(an absolute path to a user model file) ormodel_code(inline Python source) in addition to a registrymodelname — precedencemodel_code>model_path>model— loading a user's OWN differentiable model via the newnudge.inference.model_loader. The file exposesnudge_identifiability/nudge_oedbuilders and needs nonudgeimport; the loaded model reproduces the equivalent registered model to machine precision (verified: ×259 OED, the NUDGE-LIM-029 rank-deficiency guard, and the NLME arrowhead all reproduce throughmodel_path). This makes the with-vs-without-NUDGE demo symmetric — both arms analyze the same user model file. Ships standalone JAX model filesscripts/demo_ab/ad_qsp_model.py+ad_qsp_nlme_model.py. - Security (
NUDGE-LIM-030): dynamic ingestion executes arbitrary user Python in the server process — a local, trusted-input convenience, not for untrusted / multi-tenant use.
Changed
- GitHub README PyPI-version badge pinned to the released version (static) — the live
shields.io/pypi/vbadge chronically lagged several releases behind through shields' own cache and GitHub's Camo image cache.
Full detail in CHANGELOG.md.