From f86353e74fd8316e9383aa9b6187de3ad66b3ed5 Mon Sep 17 00:00:00 2001 From: Krzysztof Macewicz Date: Mon, 28 Sep 2026 07:19:17 +0200 Subject: [PATCH] docs: the documents describe smart-data-engine-sdk 0.1.1; main moves to 0.1.2.dev0 0.1.1 is on PyPI, published on the first run of python-v0.1.1 with attestations; npm keeps 0.1.0. The install commands pin 0.1.1 and 0.1.0, the pages name the current releases, and Python's development version moves to 0.1.2.dev0 while TypeScript, not released, stays on 0.1.1-dev.0. publishing.md corrects a rule written the day before. A pinned install waits for PyPI's simple index as well: 40 s after the upload, `pip install smart-data-engine-sdk==0.1.1 --no-cache-dir` answered "No matching distribution found", and the index listed 0.1.1 70 s after the upload. Right after a publish the files are verified through the JSON API; installs, pinned or not, wait for the simple index. Co-Authored-By: Claude Opus 5.5 (1M context) --- CHANGELOG.md | 2 ++ README.md | 2 +- docs/implementations.md | 8 +++++--- docs/publishing.md | 20 ++++++++++++++++---- docs/weather-starter.md | 12 ++++++------ examples/weather/README.md | 4 ++-- python/src/sde/__init__.py | 2 +- 7 files changed, 33 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2f89568..8058e82 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ not make them agree. What does is the conformance suite and ## `smart-data-engine-sdk` 0.1.1 +Published on 28 September 2026, on the first run of `python-v0.1.1`, with attestations. + A patch release of the Python library alone. `@smart-data-engines/sde` has no 0.1.1. Of what it ships, only the version field has changed since 0.1.0, to a development version. One tag per language keeps an otherwise identical package from going out under a new number (§5.1 of diff --git a/README.md b/README.md index ba08d68..2ef87be 100644 --- a/README.md +++ b/README.md @@ -108,7 +108,7 @@ artifacts under mixed traffic and checks scheduled latency, native recovery and ownership for concurrent applications. The [Weather starter](docs/weather-starter.md) provides a local setup, restricted runtime clients in Python/TypeScript, measured telemetry, operator handoffs and an ownership-checked reset. It ships in the -first release, `smart-data-engine-sdk` 0.1.0 and `@smart-data-engines/sde` 0.1.0, and the runbook +current releases, `smart-data-engine-sdk` 0.1.1 and `@smart-data-engines/sde` 0.1.0, and the runbook distinguishes this demo from production qualification. diff --git a/docs/implementations.md b/docs/implementations.md index 6a05501..8dd4964 100644 --- a/docs/implementations.md +++ b/docs/implementations.md @@ -76,9 +76,11 @@ The tier in the table above is checked against the library's own `TIER` constant list that says one thing while the code says another is the failure requirement 17.6 exists to prevent, and prose does not fail. -**`pip install smart-data-engine-sdk` installs `0.1.0`**, the first release, published by the release -workflow on 27 September 2026 with attestations. The name was claimed on PyPI on 12 September with a -development release, and the release candidate `0.1.0rc1` came through the same workflow earlier on +**`pip install smart-data-engine-sdk` installs `0.1.1`**, a patch release of 28 September 2026 that +fixes recovery of an interrupted PostgreSQL index build ([`CHANGELOG.md`](../CHANGELOG.md)). +`0.1.0`, the first release, was published by the release workflow on 27 September with +attestations, and so was `0.1.1`. The name was claimed on PyPI on 12 September with a development +release, and the release candidate `0.1.0rc1` came through the same workflow earlier on 27 September. **`npm install @smart-data-engines/sde` installs `0.1.0`**, published by the same workflow the same day, with provenance, after the candidate `0.1.0-rc.1`. The one version before those, `0.1.0-dev.0`, was published by hand. That publish was forced: npm configures trusted diff --git a/docs/publishing.md b/docs/publishing.md index 5fac9c2..c8dee27 100644 --- a/docs/publishing.md +++ b/docs/publishing.md @@ -569,7 +569,9 @@ and `0.1.1-dev.0` followed `0.1.0`. Otherwise every later commit builds an artef released number, and pip treats a local install of one as the release: `pip install smart-data-engine-sdk==0.1.0` answers "Requirement already satisfied" and fetches nothing. Measured on 27 September with a wheel of `f4d57c4` plus one comment: the comment stayed installed. The next -release bumps from there to whatever number it takes. +release bumps from there to whatever number it takes. A release of one language moves only that +language on: after `python-v0.1.1`, Python went to `0.1.2.dev0` and TypeScript, not released, +stayed on `0.1.1-dev.0`. **The tags are per-language, and the reason is not tidiness.** One shared tag would publish an artefact byte-identical to its predecessor, with an empty changelog, every time the *other* language @@ -763,6 +765,16 @@ one needs the one before it. - the simple index lagged the upload. The wheel was uploaded at 20:49:10Z, and the JSON API listed its files at 20:51:58Z. An unpinned `pip install --no-cache-dir` in a fresh environment, started at 20:52:49Z, still resolved `0.1.0rc1`. At 20:53:29Z the simple index - listed `0.1.0`, and the same install resolved it. Verification right after a publish pins the - version. An unpinned install is a separate check, made once the simple index lists the - version. + listed `0.1.0`, and the same install resolved it. +8. **The first patch release**, `python-v0.1.1` on `99c1ed7` (#101), was Python alone. Nothing the + npm package ships had changed, so npm kept `0.1.0` (§5.1). It published on its first run. One + more observation about the simple index: + - A *pinned* install waits for the index as well. The wheel was uploaded at 05:15:13Z. A + `pip install 'smart-data-engine-sdk==0.1.1' --no-cache-dir` started at 05:15:54Z answered "No + matching distribution found" and listed only `0.1.0rc1` and `0.1.0`. The simple index listed + `0.1.1` at 05:16:23Z. + - pip resolves a pinned version from that same index, so pinning is not the fix. Right after a + publish, the files are verified against the gate's artefacts through the JSON API, which + answered first both times. Installs, pinned or not, wait until the simple index lists the + version: `Accept: application/vnd.pypi.simple.v1+json`, which is served with + `cache-control: max-age=600`. diff --git a/docs/weather-starter.md b/docs/weather-starter.md index cfc1d4c..f3b6420 100644 --- a/docs/weather-starter.md +++ b/docs/weather-starter.md @@ -4,7 +4,7 @@ This is a local, synthetic demonstration for PostgreSQL and ClickHouse. Python p setup and runs the existing SDK operator. Python and TypeScript applications use independent runtime connections. They read `state/active-map.json`; a running controller is not required. -The starter ships in the first release, `smart-data-engine-sdk` 0.1.0 on PyPI and +The starter ships in the current releases, `smart-data-engine-sdk` 0.1.1 on PyPI and `@smart-data-engines/sde` 0.1.0 on npm. Do not publish a release merely to try the demo. [Publishing](publishing.md) describes the separate release procedure. @@ -15,7 +15,7 @@ from the registries, pinned: ```sh python3 -m venv .venv -.venv/bin/python -m pip install 'smart-data-engine-sdk[signed,postgres,clickhouse]==0.1.0' +.venv/bin/python -m pip install 'smart-data-engine-sdk[signed,postgres,clickhouse]==0.1.1' npm init -y npm install @smart-data-engines/sde@0.1.0 pg ``` @@ -23,7 +23,7 @@ npm install @smart-data-engines/sde@0.1.0 pg Or from reviewed build artifacts, which an operator supplies for a commit after the release: ```sh -.venv/bin/python -m pip install './smart_data_engine_sdk-0.1.1.dev0-py3-none-any.whl[signed,postgres,clickhouse]' +.venv/bin/python -m pip install './smart_data_engine_sdk-0.1.2.dev0-py3-none-any.whl[signed,postgres,clickhouse]' npm install ./smart-data-engines-sde-0.1.1-dev.0.tgz pg ``` @@ -32,9 +32,9 @@ naming what to install (`[postgres]` or `[clickhouse]` in Python, `pg` in Node). why the bootstrap's map does not load - for example that verifying its signature needs the `signed` extra - instead of reporting an incomplete operation. -A development version names a build, not a feature set: every commit after the release builds -`0.1.1.dev0`, whatever it contains. Retain the artifacts' SHA-256 checksums and the supplying source -commit. +A development version names a build, not a feature set: every commit after these releases builds +`0.1.2.dev0` in Python and `0.1.1-dev.0` in TypeScript, whatever it contains. Retain the artifacts' +SHA-256 checksums and the supplying source commit. The project owner can build a wheel with `python -m build --wheel --outdir ARTIFACT_DIRECTORY python` and a tarball with `npm pack --pack-destination ARTIFACT_DIRECTORY` in `typescript/` after CI passes. diff --git a/examples/weather/README.md b/examples/weather/README.md index 50fe101..3fffb08 100644 --- a/examples/weather/README.md +++ b/examples/weather/README.md @@ -4,8 +4,8 @@ The starter is shipped in the Python wheel (`sde-weather`) and npm tarball (`sde It writes and reads synthetic weather observations through the logical SDK API. The controller supplies signed metadata; it never runs this data application or receives its credentials. -The starter is in the first release: `smart-data-engine-sdk` 0.1.0 on PyPI and -`@smart-data-engines/sde` 0.1.0 on npm. Pin that version, or use reviewed artifacts built from a later +The starter is in the current releases: `smart-data-engine-sdk` 0.1.1 on PyPI and +`@smart-data-engines/sde` 0.1.0 on npm. Pin those versions, or use reviewed artifacts built from a later commit. The [runbook](../../docs/weather-starter.md) covers setup, both clients, telemetry, local operator handoffs, recovery and reset. [model.json](model.json) is the model to declare in the controller; diff --git a/python/src/sde/__init__.py b/python/src/sde/__init__.py index 6a9a70b..3b871c0 100644 --- a/python/src/sde/__init__.py +++ b/python/src/sde/__init__.py @@ -156,7 +156,7 @@ class Meta: from .write_fence import EPOCH_COLUMN as WRITE_EPOCH_COLUMN from .write_fence import FenceState, WriteFence -__version__ = "0.1.1" +__version__ = "0.1.2.dev0" __all__ = [ "ALSO_WRITE_SINCE",