Follow-up to #609 / #610, blocked on PolicyEngine/policyengine.py#452.
The executor's Modal image now installs its bootstrap packages canonically via uv_sync(frozen=True, --only-group modal-simulation-image), but the country-model packages are still installed by policyengine bundle install (bridged into uv's environment via --venv /.uv/.venv), because the bundle CLI has no datasets-only mode — it cannot lay down certified datasets and the receipt without also managing packages.
Once PolicyEngine/policyengine.py#452 ships:
- Add a
models dependency group in projects/policyengine-simulation-executor/pyproject.toml referencing the existing bot-maintained model pins (policyengine, policyengine-core, policyengine-us, policyengine-uk), included by the image's uv_sync call.
- Switch the bundle layer to the datasets-only invocation (data + receipt, no packages).
- Verify via the existing gates: image smoke, staging prewarm, scripted staging deploy, and a state-level calculation.
End state: uv.lock is the sole source of packages in both simulation images; the bundle's role shrinks to certified data. (If #596 — published single-year datasets — lands first, the data layer may shrink further or disappear.)
Follow-up to #609 / #610, blocked on PolicyEngine/policyengine.py#452.
The executor's Modal image now installs its bootstrap packages canonically via
uv_sync(frozen=True, --only-group modal-simulation-image), but the country-model packages are still installed bypolicyengine bundle install(bridged into uv's environment via--venv /.uv/.venv), because the bundle CLI has no datasets-only mode — it cannot lay down certified datasets and the receipt without also managing packages.Once PolicyEngine/policyengine.py#452 ships:
modelsdependency group inprojects/policyengine-simulation-executor/pyproject.tomlreferencing the existing bot-maintained model pins (policyengine, policyengine-core, policyengine-us, policyengine-uk), included by the image'suv_synccall.End state: uv.lock is the sole source of packages in both simulation images; the bundle's role shrinks to certified data. (If #596 — published single-year datasets — lands first, the data layer may shrink further or disappear.)