From 16ab5b3ead56812e3a116663802bee60d61e8f55 Mon Sep 17 00:00:00 2001 From: huangruiteng <14976749+huangruiteng@users.noreply.github.com> Date: Mon, 28 Sep 2026 03:16:01 +0800 Subject: [PATCH 1/2] chore(release): prepare v1.2.2 Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com> --- docs/product/release-readiness.md | 5 +++++ loopx/__init__.py | 2 +- pyproject.toml | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/product/release-readiness.md b/docs/product/release-readiness.md index 75a0d3d9b..677101697 100644 --- a/docs/product/release-readiness.md +++ b/docs/product/release-readiness.md @@ -635,6 +635,11 @@ path, and canary route rather than as a user-facing release baseline. The release separates package acquisition, delivered host material, runtime activation, and enabled-extension readiness. +- `v1.2.1` on 2026-09-27 16:22 +08:00: recoverable work, clearer Chat usage, + and lifecycle compatibility at commit `fce1a4bac`. + The published package, desktop artifacts, signed update feed, and website + were verified against the release source before `stable` fast-forwarded. + When a new public release is promoted, add it here only after the matching tag, release note, stable ref, update path, and focused release canary agree. diff --git a/loopx/__init__.py b/loopx/__init__.py index b688c7403..499281313 100644 --- a/loopx/__init__.py +++ b/loopx/__init__.py @@ -2,4 +2,4 @@ __all__ = ["__version__"] -__version__ = "1.2.1" +__version__ = "1.2.2" diff --git a/pyproject.toml b/pyproject.toml index 2af0fbb50..97b72f025 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "loopx" -version = "1.2.1" +version = "1.2.2" description = "A Loop Engineering control plane for long-running agent goals (requires Node.js 22.22.3+)." readme = "README.md" requires-python = ">=3.11" From 8444845bcf6c35622a7ff07f110d8ad267524155 Mon Sep 17 00:00:00 2001 From: huangruiteng <14976749+huangruiteng@users.noreply.github.com> Date: Mon, 28 Sep 2026 03:22:08 +0800 Subject: [PATCH 2/2] fix(release): reconcile retained status compatibility imports Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com> --- loopx/canary/maintainability_ratchet.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/loopx/canary/maintainability_ratchet.py b/loopx/canary/maintainability_ratchet.py index d2d158f7f..ebad2d40c 100644 --- a/loopx/canary/maintainability_ratchet.py +++ b/loopx/canary/maintainability_ratchet.py @@ -56,9 +56,11 @@ def _exception( metric_ceilings={"package_reexport_count": 101, "source_module_count": 37}, ), "compatibility_facade:loopx.status": _exception( - "The public loopx.status import surface remains a supported compatibility contract.", + "The public loopx.status import surface remains a supported compatibility contract. " + "Fifteen existing carriers now import their single owners instead of restating " + "local values; the import count changes without adding public names.", "Keep internal consumers on canonical modules and shrink exports as callers migrate.", - metric_ceilings={"package_reexport_count": 117, "source_module_count": 50}, + metric_ceilings={"package_reexport_count": 119, "source_module_count": 50}, ), }