From cc7fe950443d013dd4af7ed5879d94ddd68e267c Mon Sep 17 00:00:00 2001 From: Christian-Manuel Butzke Date: Wed, 29 Jul 2026 14:02:28 +0900 Subject: [PATCH 1/2] release: prepare Python package metadata for 0.1.0 --- AGENTS.md | 11 ++++++++--- CONTRIBUTING.md | 6 +++++- README.md | 12 ++++++++---- src/determa/state/__about__.py | 2 +- tests/test_cli.py | 2 +- 5 files changed, 23 insertions(+), 10 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 47a88a6..15bb4d0 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -11,12 +11,17 @@ package so it can coexist with the umbrella `determa` launcher. The implementation is conformant only when it passes the language-neutral suite. Format-1 work currently uses these immutable pre-release inputs: -- specification: `4bd4d9588d11b75d376380b6120676a056a4bc45`; -- conformance: `ffbc65cbce49733803119a7dabf02a9727819ba8` (88 core cases). +- specification: `1502a58a780d837e05bfacb37680dfc92e3488b5`; +- conformance: `707a49ce01c6f57f673c1959cdfe078bc8d0fc9a` (110 core cases plus + persistence profiles). -The package metadata is `0.0.7` for the next synchronized release; the specification, +The package metadata is `0.1.0` for the next synchronized release; the specification, conformance suite, Python engine, and Rust engine version together. +Before this release is ready, replace the exact pre-release commit pins with and verify +them against the real synchronized specification and conformance `v0.1.0` tags after +those tags are created. Do not invent those tags or weaken pin checks. + ## Boundaries The implemented public API is `load_bundle`, `create`, and `dispatch`, plus validation diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 623a6ce..7f91e49 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -56,7 +56,11 @@ behavior. `src/determa/state/__about__.py` is the single package version source. Determa State specification, conformance, Python, and Rust versions are synchronized. The package -metadata is `0.0.7` for the next synchronized format 1 release. +metadata is `0.1.0` for the next synchronized format 1 release. + +The current exact specification and conformance commit pins remain authoritative while +the release is prepared. Before this release is ready, they must be replaced with and +verified against the real synchronized `v0.1.0` tags after those tags are created. A `vX.Y.Z` tag triggers `release.yml` and publishes to PyPI through Trusted Publishing, gated by the manually approved `pypi` environment. Version bumps, tags, and publication diff --git a/README.md b/README.md index 6785e70..be64b36 100644 --- a/README.md +++ b/README.md @@ -8,14 +8,14 @@ commit `1502a58a780d837e05bfacb37680dfc92e3488b5`. Correctness is determined by 110-case core suite and persistence profiles at conformance commit `707a49ce01c6f57f673c1959cdfe078bc8d0fc9a`. -The package metadata is `0.0.7` for the next synchronized release of the specification, +The package metadata is `0.1.0` for the next synchronized release of the specification, conformance suite, Python engine, and Rust engine. ## Install -The published `0.0.6` distribution predates format 1. Until the synchronized `0.0.7` -Determa State release is published, install this pre-release implementation from a -checkout: +The published `0.0.7` distribution predates portable persistence and definition +migration. Until the synchronized `0.1.0` Determa State release is published, install +this pre-release implementation from a checkout: ```sh git clone https://github.com/fruwehq/determa-state-python.git @@ -191,6 +191,10 @@ Unit tests are hermetic and offline. The conformance harness uses the immutable listed above, cached under `.cache/`; local checkouts can be supplied with `DETERMA_CONFORMANCE_DIR` and `DETERMA_SPEC_DIR`. +Before this release is ready, the exact pre-release specification and conformance +commit pins must be replaced with and verified against the real synchronized `v0.1.0` +tags after those tags are created. + ## License MIT. See [LICENSE](LICENSE). diff --git a/src/determa/state/__about__.py b/src/determa/state/__about__.py index d1aaf19..77013d2 100644 --- a/src/determa/state/__about__.py +++ b/src/determa/state/__about__.py @@ -5,4 +5,4 @@ is exactly one place to bump. """ -__version__ = "0.0.7" +__version__ = "0.1.0" diff --git a/tests/test_cli.py b/tests/test_cli.py index 42daccb..78d54e3 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -9,7 +9,7 @@ def test_version_matches_release_metadata() -> None: - assert __version__ == "0.0.7" + assert __version__ == "0.1.0" def test_validate_command_reports_fingerprint(tmp_path, capsys) -> None: From 418ae84535c5ac78417c964eaa6329e528811807 Mon Sep 17 00:00:00 2001 From: Christian-Manuel Butzke Date: Wed, 29 Jul 2026 16:29:56 +0900 Subject: [PATCH 2/2] release: pin synchronized 0.1.0 inputs --- .github/workflows/test.yml | 4 ++-- AGENTS.md | 10 +++------- CONTRIBUTING.md | 5 ++--- README.md | 12 ++++-------- conformance/conftest.py | 2 +- conformance/pins.py | 6 +++--- scripts/sync_schema.py | 2 +- 7 files changed, 16 insertions(+), 25 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c4227b5..dd5adad 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -36,13 +36,13 @@ jobs: uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: repository: fruwehq/determa-state-conformance - ref: 707a49ce01c6f57f673c1959cdfe078bc8d0fc9a + ref: 600523ca08c3b8a6ee790439a32dc4ce47f71b95 path: .pinned/determa-state-conformance - name: Check out pinned specification uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: repository: fruwehq/determa-state-spec - ref: 1502a58a780d837e05bfacb37680dfc92e3488b5 + ref: c1635d74e6a216301a8986d37be8ce7e7111dfd7 path: .pinned/determa-state-spec - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: diff --git a/AGENTS.md b/AGENTS.md index 15bb4d0..e768f51 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -9,19 +9,15 @@ This is the Python implementation of Determa State. The distribution is package so it can coexist with the umbrella `determa` launcher. The implementation is conformant only when it passes the language-neutral suite. -Format-1 work currently uses these immutable pre-release inputs: +The synchronized 0.1.0 release uses these immutable inputs: -- specification: `1502a58a780d837e05bfacb37680dfc92e3488b5`; -- conformance: `707a49ce01c6f57f673c1959cdfe078bc8d0fc9a` (110 core cases plus +- specification: `c1635d74e6a216301a8986d37be8ce7e7111dfd7`; +- conformance: `600523ca08c3b8a6ee790439a32dc4ce47f71b95` (110 core cases plus persistence profiles). The package metadata is `0.1.0` for the next synchronized release; the specification, conformance suite, Python engine, and Rust engine version together. -Before this release is ready, replace the exact pre-release commit pins with and verify -them against the real synchronized specification and conformance `v0.1.0` tags after -those tags are created. Do not invent those tags or weaken pin checks. - ## Boundaries The implemented public API is `load_bundle`, `create`, and `dispatch`, plus validation diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7f91e49..061feff 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -58,9 +58,8 @@ behavior. specification, conformance, Python, and Rust versions are synchronized. The package metadata is `0.1.0` for the next synchronized format 1 release. -The current exact specification and conformance commit pins remain authoritative while -the release is prepared. Before this release is ready, they must be replaced with and -verified against the real synchronized `v0.1.0` tags after those tags are created. +The exact synchronized 0.1.0 specification and conformance commits recorded in +`conformance/pins.py` are the authoritative release inputs. A `vX.Y.Z` tag triggers `release.yml` and publishes to PyPI through Trusted Publishing, gated by the manually approved `pypi` environment. Version bumps, tags, and publication diff --git a/README.md b/README.md index be64b36..a084fe9 100644 --- a/README.md +++ b/README.md @@ -3,10 +3,10 @@ Python implementation of [Determa State](https://github.com/fruwehq/determa-state-spec), a language-agnostic statechart engine with a shared normative conformance suite. -This pre-release implements Determa State `format: 1` at the approved specification -commit `1502a58a780d837e05bfacb37680dfc92e3488b5`. Correctness is determined by the +This release implements Determa State `format: 1` at the synchronized specification +commit `c1635d74e6a216301a8986d37be8ce7e7111dfd7`. Correctness is determined by the 110-case core suite and persistence profiles at conformance commit -`707a49ce01c6f57f673c1959cdfe078bc8d0fc9a`. +`600523ca08c3b8a6ee790439a32dc4ce47f71b95`. The package metadata is `0.1.0` for the next synchronized release of the specification, conformance suite, Python engine, and Rust engine. @@ -15,7 +15,7 @@ conformance suite, Python engine, and Rust engine. The published `0.0.7` distribution predates portable persistence and definition migration. Until the synchronized `0.1.0` Determa State release is published, install -this pre-release implementation from a checkout: +this release candidate from a checkout: ```sh git clone https://github.com/fruwehq/determa-state-python.git @@ -191,10 +191,6 @@ Unit tests are hermetic and offline. The conformance harness uses the immutable listed above, cached under `.cache/`; local checkouts can be supplied with `DETERMA_CONFORMANCE_DIR` and `DETERMA_SPEC_DIR`. -Before this release is ready, the exact pre-release specification and conformance -commit pins must be replaced with and verified against the real synchronized `v0.1.0` -tags after those tags are created. - ## License MIT. See [LICENSE](LICENSE). diff --git a/conformance/conftest.py b/conformance/conftest.py index 0d32151..56c57c5 100644 --- a/conformance/conftest.py +++ b/conformance/conftest.py @@ -1,4 +1,4 @@ -"""Fetch the immutable pre-release conformance and specification inputs.""" +"""Fetch the immutable synchronized conformance and specification inputs.""" from __future__ import annotations diff --git a/conformance/pins.py b/conformance/pins.py index 0674c31..3e4266e 100644 --- a/conformance/pins.py +++ b/conformance/pins.py @@ -1,11 +1,11 @@ -"""Immutable pre-release specification and conformance inputs.""" +"""Immutable synchronized specification and conformance inputs.""" from __future__ import annotations from pathlib import Path -CONFORMANCE_COMMIT = "707a49ce01c6f57f673c1959cdfe078bc8d0fc9a" -SPEC_COMMIT = "1502a58a780d837e05bfacb37680dfc92e3488b5" +CONFORMANCE_COMMIT = "600523ca08c3b8a6ee790439a32dc4ce47f71b95" +SPEC_COMMIT = "c1635d74e6a216301a8986d37be8ce7e7111dfd7" ROOT = Path(__file__).resolve().parent.parent CONFORMANCE_CACHE = ROOT / ".cache" / f"determa-state-conformance-{CONFORMANCE_COMMIT[:12]}" diff --git a/scripts/sync_schema.py b/scripts/sync_schema.py index a752ed3..51b21d0 100644 --- a/scripts/sync_schema.py +++ b/scripts/sync_schema.py @@ -25,7 +25,7 @@ "migration-descriptor.schema.json", "aggregate-state-package.schema.json", ) -SPEC_COMMIT = "1502a58a780d837e05bfacb37680dfc92e3488b5" +SPEC_COMMIT = "c1635d74e6a216301a8986d37be8ce7e7111dfd7" def _fetch(name: str) -> str: