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 47a88a6..e768f51 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -9,12 +9,13 @@ 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: `4bd4d9588d11b75d376380b6120676a056a4bc45`; -- conformance: `ffbc65cbce49733803119a7dabf02a9727819ba8` (88 core cases). +- specification: `c1635d74e6a216301a8986d37be8ce7e7111dfd7`; +- conformance: `600523ca08c3b8a6ee790439a32dc4ce47f71b95` (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. ## Boundaries diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 623a6ce..061feff 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -56,7 +56,10 @@ 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 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 6785e70..a084fe9 100644 --- a/README.md +++ b/README.md @@ -3,19 +3,19 @@ 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.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 release candidate from a checkout: ```sh git clone https://github.com/fruwehq/determa-state-python.git 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: 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: