diff --git a/changelog.d/emitter-pypi-release.changed.md b/changelog.d/emitter-pypi-release.changed.md new file mode 100644 index 0000000000..8947e68ac9 --- /dev/null +++ b/changelog.d/emitter-pypi-release.changed.md @@ -0,0 +1 @@ +Install microcosm-emitter 0.2.1 from PyPI instead of an unreleased Git commit. The release includes the bounded service startup and telemetry and graph-publication concurrency fixes that the previous pin lacked. diff --git a/docs/orrery-publication.md b/docs/orrery-publication.md index 8ca1a72409..b6b0a59a68 100644 --- a/docs/orrery-publication.md +++ b/docs/orrery-publication.md @@ -72,18 +72,17 @@ HF receipt snapshot. Pending jobs also resume when a subsequent local service starts. The retry command comes from the emitter package; Microcosm does not retain a second delivery implementation or a compatibility wrapper. -## Deferred migration prerequisites - -This adapter is implemented and tested in a draft PR, not merged or activated. -It depends on PolicyEngine/microcosm-emitter#4. The draft uses one exact root -Git source pin in `packages/microcosm-build/pyproject.toml` and `uv.lock` for -that PR's single `microcosm-emitter` distribution; no registry release was -available when this draft was updated. -Before merge, merge emitter #4, verify registry-owner configuration, publish -one `microcosm-emitter` release containing those changes, replace the draft source -override with that released version, regenerate `uv.lock`, update its -approved worker-identity digest and rerun tests and wheel checks. Merely building -a Microcosm wheel does not make its unpublished dependencies installable. +## Emitter dependency + +`packages/microcosm-build` depends on one exact `microcosm-emitter` release +from PyPI, which `uv.lock` records with its wheel and source-archive hashes. +Microcosm has no Git source override for the emitter. Every merge to the +emitter's `main` publishes a new version automatically. To adopt one, change the +exact requirement, regenerate `uv.lock`, update `APPROVED_UV_LOCK_SHA256` in +`microcosm.build.us_runtime.worker_identity` to the new lockfile digest and +rerun the tests and wheel checks. + +## Migrating an existing workstation The emitter rejects unversioned databases without modification. Before switching an existing workstation, upgrade any old unversioned queue using the preceding diff --git a/packages/microcosm-build/pyproject.toml b/packages/microcosm-build/pyproject.toml index 0f40e28b58..9498457b89 100644 --- a/packages/microcosm-build/pyproject.toml +++ b/packages/microcosm-build/pyproject.toml @@ -24,7 +24,7 @@ dependencies = [ "pyyaml>=6", "jsonschema>=4.23,<5", "referencing>=0.35,<1", - "microcosm-emitter==0.1.0", + "microcosm-emitter==0.2.1", ] [project.optional-dependencies] @@ -81,5 +81,3 @@ microcosm-fit = { workspace = true } microcosm-calibrate = { workspace = true } microcosm-diagnostics = { workspace = true } microcosm-data = { workspace = true } -# Draft-only root source pin. Replace with a published distribution before merge. -microcosm-emitter = { git = "https://github.com/PolicyEngine/microcosm-emitter", rev = "12624a118db255405a0ce7397d53b3181deaf49a" } diff --git a/packages/microcosm-build/src/microcosm/build/us_runtime/worker_identity.py b/packages/microcosm-build/src/microcosm/build/us_runtime/worker_identity.py index e890126dd1..4a071a1009 100644 --- a/packages/microcosm-build/src/microcosm/build/us_runtime/worker_identity.py +++ b/packages/microcosm-build/src/microcosm/build/us_runtime/worker_identity.py @@ -28,7 +28,7 @@ PRIMARY_QRF_WORKER_MODULE = "microcosm.build.us_runtime.puf_qrf_worker" PRIMARY_QRF_INTERPRETER_PLACEHOLDER = "{python_interpreter}" APPROVED_UV_LOCK_SHA256 = ( - "75ffb31c9b711a288e7de3e8f0442047b5aafcdd146c7fd95219f4cc1ac769ae" + "6b32bcb10b20c0ee3ce3174ab5da4794bb3ab2147b91d9729effde446576a156" ) LEGACY_CAMPAIGN_UV_LOCK_SHA256 = ( "27f47e385cfa35e2644a37410d1804b361ad9aee123577551c8421547bda65ee" diff --git a/uv.lock b/uv.lock index fa69800b45..21ea6ba0aa 100644 --- a/uv.lock +++ b/uv.lock @@ -848,7 +848,7 @@ requires-dist = [ { name = "microcosm-data", marker = "extra == 'uk'", editable = "packages/microcosm-data" }, { name = "microcosm-data", marker = "extra == 'us'", editable = "packages/microcosm-data" }, { name = "microcosm-diagnostics", editable = "packages/microcosm-diagnostics" }, - { name = "microcosm-emitter", git = "https://github.com/PolicyEngine/microcosm-emitter?rev=12624a118db255405a0ce7397d53b3181deaf49a" }, + { name = "microcosm-emitter", specifier = "==0.2.1" }, { name = "microcosm-fit", editable = "packages/microcosm-fit" }, { name = "microcosm-frame", editable = "packages/microcosm-frame" }, { name = "microcosm-graph", editable = "packages/microcosm-graph" }, @@ -965,8 +965,8 @@ dev = [{ name = "pytest", specifier = ">=8" }] [[package]] name = "microcosm-emitter" -version = "0.1.0" -source = { git = "https://github.com/PolicyEngine/microcosm-emitter?rev=12624a118db255405a0ce7397d53b3181deaf49a#12624a118db255405a0ce7397d53b3181deaf49a" } +version = "0.2.1" +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "alembic" }, { name = "httpx" }, @@ -974,6 +974,10 @@ dependencies = [ { name = "psutil" }, { name = "sqlalchemy" }, ] +sdist = { url = "https://files.pythonhosted.org/packages/d4/b7/757043995c931fd147998b0c0f8f1f58f4ba9369f60bc72cfaf57a76ba6d/microcosm_emitter-0.2.1.tar.gz", hash = "sha256:43c41762057838b92d8e53bf53b4941fbfd45130f632b8b106adc4324664dbaf", size = 146537, upload-time = "2026-10-14T16:41:57.71Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/42/a1/6d00bb00db2d2b554e2ac76065e9fe0d75b167d47e2bd4d03d23d5482530/microcosm_emitter-0.2.1-py3-none-any.whl", hash = "sha256:a1baa6e110b3248cfd77d9d2e443a8190cb8011600c13b195b8ae68754abf4aa", size = 57888, upload-time = "2026-10-14T16:41:56.32Z" }, +] [[package]] name = "microcosm-fit"