From 5b734d923e557bc21035b4c18d39244fe1fb8397 Mon Sep 17 00:00:00 2001 From: PerchAnton <101743951+PerchAnton@users.noreply.github.com> Date: Tue, 27 Oct 2026 00:15:03 +0200 Subject: [PATCH] Document verified crates.io publication and installation --- CHANGELOG.md | 7 ++++- README.md | 37 ++++++++++++------------- docs/RELEASING.md | 28 +++++++++++-------- docs/assets/README.md | 2 +- docs/assets/release.svg | 10 +++---- docs/evidence/release-alpha4.json | 46 +++++++++++++++++++++++++++++++ 6 files changed, 92 insertions(+), 38 deletions(-) create mode 100644 docs/evidence/release-alpha4.json diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f79e74..17e891f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 0.1.0-alpha.4 — unpublished candidate +## 0.1.0-alpha.4 + +Published to [crates.io](https://crates.io/crates/edit-session/0.1.0-alpha.4) on +27 October 2026 (Europe/Kyiv; 26 October UTC). A fresh Rust 1.88 consumer installed +the crate from the registry and checked commit, no-op and stale-context behavior. +[Evidence and archive hash](docs/evidence/release-alpha4.json). - Prepare crates.io publication with an explicit registry allowlist, a package landing page, dry-run CI and a manual workflow for later Trusted Publishing. diff --git a/README.md b/README.md index bdc84ac..816900b 100644 --- a/README.md +++ b/README.md @@ -10,21 +10,23 @@ an optional way to test consumer workflows, not a dependency of this crate. ## Current prerelease -**[v0.1.0-alpha.3](https://github.com/PerchAnton/edit-session/releases/tag/v0.1.0-alpha.3) · released 26 October 2026 · Rust 1.88+** +**[0.1.0-alpha.4 on crates.io](https://crates.io/crates/edit-session/0.1.0-alpha.4) · published 27 October 2026 (Europe/Kyiv) · Rust 1.88+** -**[Download the source crate](https://github.com/PerchAnton/edit-session/releases/download/v0.1.0-alpha.3/edit-session-0.1.0-alpha.3.crate)** · [SHA-256 checksums](https://github.com/PerchAnton/edit-session/releases/download/v0.1.0-alpha.3/SHA256SUMS) · [Changelog](CHANGELOG.md) · [Use as a dependency](#use-from-another-project) +**[API documentation](https://docs.rs/edit-session/0.1.0-alpha.4/edit_session/)** · [Download the crate](https://crates.io/api/v1/crates/edit-session/0.1.0-alpha.4/download) · [SHA-256 and installation evidence](docs/evidence/release-alpha4.json) · [Changelog](CHANGELOG.md) · [Use as a dependency](#use-from-another-project) -![edit-session alpha 3, released 26 October 2026: 0 runtime dependencies, 25 scoped checks and a 29.4 KiB source archive. Check live state, attempt the host command, retain fields and draft on rejection, and close on success.](docs/assets/release.svg) +![edit-session alpha 4, published on crates.io 27 October 2026: 0 runtime dependencies, 25 scoped checks and a 34.2 KiB source archive. Check live state, attempt the host command, retain fields and draft on rejection, and close on success.](docs/assets/release.svg) Release snapshot: **16 lifecycle tests + 8 host-example tests + 1 doctest**, -**0 runtime dependencies**, **29.4 KiB source crate (30,112 bytes)**. -[Exact file, hash and release CI](docs/evidence/release-alpha3.json). The example tests +**0 runtime dependencies**, **34.2 KiB source crate (35,058 bytes)**. +[Exact file, hash, release CI and clean installation](docs/evidence/release-alpha4.json). The example tests model host recovery; they are separate from real application UI regressions. Package size describes the download. The library API is unchanged from alpha.2. -This GitHub prerelease is available as a source archive or fixed Git dependency; -it is not published on crates.io. The CI badge above tracks current main, while -the release snapshot stays tied to its tagged commit. +The crate was downloaded from crates.io into a fresh Cargo cache and built with +Rust 1.88; commit, no-op and stale-context behavior were checked. The CI badge above +tracks current main, while release facts stay tied to the tagged commit. The +[previous GitHub release](https://github.com/PerchAnton/edit-session/releases/tag/v0.1.0-alpha.3) +remains available. Trying the alpha? [Report a bug](https://github.com/PerchAnton/edit-session/issues/new?template=bug_report.yml) with your revision and a short sequence of calls, or read the [alpha compatibility policy](docs/RELEASING.md#alpha-compatibility). @@ -40,7 +42,7 @@ correction, Cancel, preserved Redo and duplicate confirmation. From a checkout of this release: ```sh -git clone --branch v0.1.0-alpha.3 --depth 1 https://github.com/PerchAnton/edit-session.git +git clone --branch v0.1.0-alpha.4 --depth 1 https://github.com/PerchAnton/edit-session.git cd edit-session cargo run --locked --example retry_command cargo test --locked --example retry_command @@ -71,8 +73,8 @@ dated measurements. Each figure has a source and a defined scope. | Proposal/check loop | **999 pairs; 0 additional clones** | [Instrumented test](tests/lifecycle.rs); one clone at construction, one more on Reset; caller work excluded | | Integration cost | **+217 production UI lines** | [267 added / 50 removed](docs/ADOPTION.md#count-the-cost-as-well); no total-code or speed improvement is claimed | -**Experimental, 0.1.0-alpha.3.** Maintained by [PerchAnton](https://github.com/PerchAnton). -Available as a Git dependency; not published to crates.io. PhotoCraft and PdfCraft +**Experimental, 0.1.0-alpha.4.** Maintained by [PerchAnton](https://github.com/PerchAnton). +Available on crates.io and as a Git dependency. PhotoCraft and PdfCraft integrations are proposed and await upstream approval. Begin an edit, preview values, reject invalid input, cancel, and produce a single change @@ -120,18 +122,15 @@ sequence and shared report help your consumer. The [API contracts](src/lib.rs) a ## Use from another project -**Crates.io candidate: `0.1.0-alpha.4` (not published yet).** After publication, -use `edit-session = "=0.1.0-alpha.4"` in `[dependencies]` and commit `Cargo.lock`. -The [publishing guide](docs/RELEASING.md#registry-publication) covers the first upload -and later Trusted Publishing. Until then, use the existing Git release below. - -Add this entry to your crate's `[dependencies]` to use the published alpha 3 at its fixed release commit: +Add this exact prerelease to your crate's `[dependencies]`: ```toml -edit-session = { git = "https://github.com/PerchAnton/edit-session", rev = "968ebd2f9a9b04c068b34a3fba42c246261380b7" } +edit-session = "=0.1.0-alpha.4" ``` -Commit the resulting `Cargo.lock`. The companion +Commit the resulting `Cargo.lock`. For a Git dependency, the same release is pinned +at revision `621ece8c2a969c47927fecbff80f94ac9adfa618`. +The companion [interaction-check](https://github.com/PerchAnton/interaction-check) project replays semantic scenarios against adapters using this library. diff --git a/docs/RELEASING.md b/docs/RELEASING.md index 88d3a63..756a6fb 100644 --- a/docs/RELEASING.md +++ b/docs/RELEASING.md @@ -2,12 +2,13 @@ ## Published prerelease -**[v0.1.0-alpha.3](https://github.com/PerchAnton/edit-session/releases/tag/v0.1.0-alpha.3)** -was published on **26 October 2026**, with a source `.crate` archive and SHA-256 -checksums. Its public library API and behavior are unchanged from alpha.2; it adds -the tested recovery example, documentation and package verification. The crate is -not published on crates.io. The separate alpha.4 candidate enables the `crates-io` -registry in its manifest; this does not publish anything. +**[0.1.0-alpha.4 on crates.io](https://crates.io/crates/edit-session/0.1.0-alpha.4)** +was published on **27 October 2026 (Europe/Kyiv; 26 October UTC)**. Its public API, +behavior, Rust 1.88 minimum and zero runtime dependencies are unchanged from alpha.3. +A fresh consumer downloaded it from the registry and checked commit, no-op and +stale-context behavior. The archive hash matches the upload and release CI artifact. +[Evidence](evidence/release-alpha4.json) · [Installation](../README.md#use-from-another-project). +The previous alpha.3 GitHub prerelease remains unchanged. ## Alpha compatibility @@ -55,18 +56,21 @@ Do not present an alpha release as the latest stable release. ## Registry publication -### Prepared candidate +### Published version -`0.1.0-alpha.4` is prepared, **not published**. The API, behavior, Rust 1.88 minimum +`0.1.0-alpha.4` is **published on crates.io**. The API, behavior, Rust 1.88 minimum and runtime dependencies are unchanged. Package metadata/docs change, so the candidate uses a new version; alpha.3 tags and archives stay untouched. `publish = ["crates-io"]` limits the registry target. `PACKAGE.md` is the registry landing page and uses absolute links so it works outside GitHub. -The public crates.io API returned HTTP 404 for `edit-session` on 26 October 2026. -This does not reserve the name or guarantee acceptance; check it again before upload. +The registry lists `PerchAnton` as the owner. This version cannot be overwritten; +prepare a new version for any future package change. -### First upload: owner action +### First upload: completed + +Alpha.4 was uploaded with the owner's scoped bootstrap token using Cargo 1.88. +The procedure below is retained for reference; do not upload this version again. Crates.io currently requires an API token for a crate's **first** publication. Trusted Publishing can only be configured after the crate exists. There is no token in this @@ -128,7 +132,7 @@ edit-session = "=0.1.0-alpha.4" Run `cargo check`, confirm `Cargo.lock` names the crates.io source (not a path/Git override), and check the [API documentation](https://docs.rs/edit-session/0.1.0-alpha.4/). -Only then mark the README/changelog as published and add registry badges. Never +Only then mark the README/changelog as published. Never overwrite a published version; fixes require a new version. Reference: [Cargo's publishing guide](https://doc.rust-lang.org/cargo/reference/publishing.html). diff --git a/docs/assets/README.md b/docs/assets/README.md index 37ca104..d40ea5e 100644 --- a/docs/assets/README.md +++ b/docs/assets/README.md @@ -31,7 +31,7 @@ the same information in a text table. Existing measured counts are unchanged. `release.svg` is a dated release summary and a three-step workflow diagram. Its version, publication date, exact compressed file size and CI references come from -the [release snapshot](../evidence/release-alpha3.json). KiB means bytes / 1024, +the [release snapshot](../evidence/release-alpha4.json). KiB means bytes / 1024, rounded to one decimal; this is download size, not runtime memory or a comparison between projects. The README repeats the scoped counts and links to the real assets. diff --git a/docs/assets/release.svg b/docs/assets/release.svg index fe57627..1cdc1b2 100644 --- a/docs/assets/release.svg +++ b/docs/assets/release.svg @@ -1,13 +1,13 @@ Keep the draft. Retry safely. -A tested host workflow using the existing draft API. Release alpha.3, 26 October 2026. 0 runtime dependencies Rust 1.88+ · no_std library; 25 passing scoped checks 16 lifecycle + 8 host + 1 doctest; 29.4 KiB source crate download 30,112 bytes · compressed archive. Workflow: 1 / CHECK Check the live state Validate input, document, target and revision on each try.; 2 / APPLY Try the host command The host owns permissions and atomic command rejection.; 3 / RECOVER Keep or close Rejected: retain fields + draft. Succeeded: close the editor.. +A tested host workflow using the existing draft API. Release alpha.4, 27 October 2026 (Europe/Kyiv). 0 runtime dependencies Rust 1.88+ · no_std library; 25 passing scoped checks 16 lifecycle + 8 host + 1 doctest; 34.2 KiB source crate download 35,058 bytes · compressed archive. Workflow: 1 / CHECK Check the live state Validate input, document, target and revision on each try.; 2 / APPLY Try the host command The host owns permissions and atomic command rejection.; 3 / RECOVER Keep or close Rejected: retain fields + draft. Succeeded: close the editor.. -EDIT-SESSION / GITHUB PRERELEASE -ALPHA.3 · 26 OCT 2026 +EDIT-SESSION / CRATES.IO PRERELEASE +ALPHA.4 · 27 OCT 2026 Keep the draft. Retry safely. A tested host workflow using the existing draft API. @@ -19,9 +19,9 @@ passing scoped checks 16 lifecycle + 8 host + 1 doctest -29.4 KiB +34.2 KiB source crate download -30,112 bytes · compressed archive +35,058 bytes · compressed archive 1 / CHECK Check the live state diff --git a/docs/evidence/release-alpha4.json b/docs/evidence/release-alpha4.json new file mode 100644 index 0000000..5202d05 --- /dev/null +++ b/docs/evidence/release-alpha4.json @@ -0,0 +1,46 @@ +{ + "recorded_date": "2026-10-27", + "timezone": "Europe/Kyiv", + "status": "published", + "runtime_dependencies": 0, + "license": "MIT OR Apache-2.0", + "scope": "Package and installation evidence; no claim of upstream adoption or application performance.", + "package": "edit-session", + "version": "0.1.0-alpha.4", + "source_commit": "621ece8c2a969c47927fecbff80f94ac9adfa618", + "tag": "v0.1.0-alpha.4", + "registry": "https://crates.io/crates/edit-session/0.1.0-alpha.4", + "registry_metadata": "https://crates.io/api/v1/crates/edit-session/0.1.0-alpha.4", + "published_at_utc": "2026-10-26T22:04:03.706343Z", + "tag_ci": "https://github.com/PerchAnton/edit-session/actions/runs/40407939344", + "package_verification": "https://github.com/PerchAnton/edit-session/actions/runs/40407143783", + "tests": { + "lifecycle": 16, + "recovery_example": 8, + "compile_fail_doctest": 1 + }, + "minimum_rust": "1.88", + "installation": { + "system": "macOS arm64", + "rust": "1.88.0", + "fresh_project": true, + "fresh_cargo_cache": true, + "dependency_source": "registry+https://github.com/rust-lang/crates.io-index", + "checks": [ + "exact prerelease download and compile", + "commit before/after values", + "reset produces no-op", + "stale context rejected", + "zero runtime dependencies", + "download checksum equals uploaded archive and verified CI package" + ] + }, + "files": [ + { + "name": "edit-session-0.1.0-alpha.4.crate", + "bytes": 35058, + "sha256": "a97757e1d66f678e3c49c5ba0e6dd915a821fb55ed9707b0d55b4d2b108fcbd0", + "url": "https://crates.io/api/v1/crates/edit-session/0.1.0-alpha.4/download" + } + ] +}