From 4a4de398f2b4d9a3967491a1a0df90ddc2f6b2f9 Mon Sep 17 00:00:00 2001 From: Anthony Volk <14987227+anth-volk@users.noreply.github.com> Date: Wed, 14 Oct 2026 21:01:12 +0400 Subject: [PATCH] Install microcosm-emitter 0.2.1 from PyPI Replace the draft-only Git source pin on emitter commit 12624a1, which predates the bounded service startup and final concurrency fixes, with the exact PyPI release 0.2.1 that the emitter's release workflow published. uv.lock now records the registry wheel and source archive with hashes, and the approved primary-QRF worker-identity lock digest follows the regenerated lockfile. Co-Authored-By: Claude Opus 5.5 --- changelog.d/emitter-pypi-release.changed.md | 1 + docs/orrery-publication.md | 23 +++++++++---------- packages/microcosm-build/pyproject.toml | 4 +--- .../build/us_runtime/worker_identity.py | 2 +- uv.lock | 10 +++++--- 5 files changed, 21 insertions(+), 19 deletions(-) create mode 100644 changelog.d/emitter-pypi-release.changed.md 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"