Goal
Move stack/bundle ownership into policyengine.py, with the .py release version also serving as the stack version. Users should be able to install a validated PolicyEngine stack with normal pip commands such as pip install "policyengine[full]==X.Y.Z".
Work
- Add a stack manifest owned by this repo that records the exact PolicyEngine-owned package versions included in a stack.
- Generate
pyproject.toml optional dependencies from that manifest for extras such as models, data, full, us-full, and uk-full.
- Add runtime/CLI support for
policyengine stack show, policyengine stack verify, and policyengine stack cite.
- Add a stack-only PR workflow: update the manifest, regenerate derived files, run lightweight verification, and publish via the normal
.py release path.
- Add release assets for each
.py release: stack manifest JSON, constraints file, citation text, and verification output.
- Keep verification lightweight: exact installed versions, importability/module discovery, and reachable release-manifest/data URIs where applicable.
- Decide how artifact-only packages are represented, especially UK data if it remains unavailable as a pip-installable package.
Acceptance criteria
pip install "policyengine[models]==<version>" installs the exact model/core versions recorded by the stack.
policyengine stack verify --extra models can run in CI quickly.
- A stack-only PR can be opened without touching downstream repos.
- The normal
.py release publishes stack metadata as release assets.
- Documentation explains install commands, citation, and how to open a stack update PR.
Goal
Move stack/bundle ownership into
policyengine.py, with the.pyrelease version also serving as the stack version. Users should be able to install a validated PolicyEngine stack with normal pip commands such aspip install "policyengine[full]==X.Y.Z".Work
pyproject.tomloptional dependencies from that manifest for extras such asmodels,data,full,us-full, anduk-full.policyengine stack show,policyengine stack verify, andpolicyengine stack cite..pyrelease path..pyrelease: stack manifest JSON, constraints file, citation text, and verification output.Acceptance criteria
pip install "policyengine[models]==<version>"installs the exact model/core versions recorded by the stack.policyengine stack verify --extra modelscan run in CI quickly..pyrelease publishes stack metadata as release assets.