From e93d48be08876b81836814b0cbc14ba2032ee8a6 Mon Sep 17 00:00:00 2001 From: James Ross Date: Fri, 15 May 2026 03:49:08 -0700 Subject: [PATCH 1/2] chore(release): v0.0.4 --- CHANGELOG.md | 5 +- Cargo.lock | 8 +-- README.md | 27 +++++----- crates/wesley-cli/Cargo.toml | 8 +-- crates/wesley-core/Cargo.toml | 2 +- crates/wesley-emit-rust/Cargo.toml | 4 +- crates/wesley-emit-typescript/Cargo.toml | 4 +- docs/BEARING.md | 2 +- docs/ENTRYPOINTS.md | 2 +- docs/GUIDE.md | 4 +- docs/method/releases/README.md | 4 ++ docs/method/releases/v0.0.4/release.md | 48 +++++++++++++++++ docs/method/releases/v0.0.4/verification.md | 46 ++++++++++++++++ docs/releases/README.md | 4 ++ docs/releases/v0.0.4.md | 59 +++++++++++++++++++++ 15 files changed, 195 insertions(+), 32 deletions(-) create mode 100644 docs/method/releases/v0.0.4/release.md create mode 100644 docs/method/releases/v0.0.4/verification.md create mode 100644 docs/releases/v0.0.4.md diff --git a/CHANGELOG.md b/CHANGELOG.md index f1abb094..242f0afb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ The format is based on Keep a Changelog, and this project adheres to Semantic Ve ## [Unreleased] +## [0.0.4] - 2026-05-15 + ### Added - **Runtime optic requirements artifact**: `compile_runtime_optic()` now emits a @@ -914,7 +916,8 @@ The format is based on Keep a Changelog, and this project adheres to Semantic Ve ## [0.1.0] - 2025-09-01 - Initial public repository layout -[Unreleased]: https://github.com/flyingrobots/wesley/compare/v0.0.3...HEAD +[Unreleased]: https://github.com/flyingrobots/wesley/compare/v0.0.4...HEAD +[0.0.4]: https://github.com/flyingrobots/wesley/compare/v0.0.3...v0.0.4 [0.0.3]: https://github.com/flyingrobots/wesley/compare/v0.0.2...v0.0.3 [0.0.2]: https://github.com/flyingrobots/wesley/compare/v0.0.1...v0.0.2 [0.0.1]: https://github.com/flyingrobots/wesley/releases/tag/v0.0.1 diff --git a/Cargo.lock b/Cargo.lock index 20e79afc..e600e396 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1004,7 +1004,7 @@ dependencies = [ [[package]] name = "wesley-cli" -version = "0.0.3" +version = "0.0.4" dependencies = [ "serde", "serde_json", @@ -1015,7 +1015,7 @@ dependencies = [ [[package]] name = "wesley-core" -version = "0.0.3" +version = "0.0.4" dependencies = [ "apollo-parser", "async-trait", @@ -1034,7 +1034,7 @@ dependencies = [ [[package]] name = "wesley-emit-rust" -version = "0.0.3" +version = "0.0.4" dependencies = [ "pretty_assertions", "serde_json", @@ -1044,7 +1044,7 @@ dependencies = [ [[package]] name = "wesley-emit-typescript" -version = "0.0.3" +version = "0.0.4" dependencies = [ "pretty_assertions", "serde_json", diff --git a/README.md b/README.md index 731c467d..05a513d8 100644 --- a/README.md +++ b/README.md @@ -27,20 +27,19 @@ For the bounded-autonomy direction, read --- -## What's New in v0.0.3 - -Wesley `0.0.3` introduces the first runtime optic artifact compiler surface. -`wesley-core` can compile supported GraphQL runtime optic operations into -stable, content-addressed artifact claims with operation identity, variable and -payload shapes, preserved directive records, admission requirements, law claim -templates, artifact hashes, and registration descriptors for runtime import. - -The release also hardens the runtime optic executable subset before -`shape.valid.v1` is emitted. Unsupported v0 features are rejected explicitly, -footprints are root-field-only admission declarations, nested inputs and list -wrappers are validated, response-name conflicts are rejected, authority and -witness wire spellings are snapshotted, and causal suffix bundle design notes -record the next runtime synchronization direction. +## What's New in v0.0.4 + +Wesley `0.0.4` makes runtime optic admission requirements importable as a +canonical compiler-owned artifact. `compile_runtime_optic()` still exposes the +structured `OpticAdmissionRequirements` for compiler-side inspection, and now +also emits deterministic requirement bytes, an explicit +`wesley.requirements.canonical-json.v0` codec, and a digest computed from those +exact bytes. + +This release keeps the runtime boundary narrow. Downstream runtimes can import +Wesley's requirement bytes, digest, and codec directly instead of reserializing +compiler structs to create admission truth. Echo still owns registration, +handles, grants, tickets, witnesses, and runtime enforcement. For the complete release history, read [CHANGELOG.md](./CHANGELOG.md). diff --git a/crates/wesley-cli/Cargo.toml b/crates/wesley-cli/Cargo.toml index 35e37644..5bab33f2 100644 --- a/crates/wesley-cli/Cargo.toml +++ b/crates/wesley-cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wesley-cli" -version = "0.0.3" +version = "0.0.4" edition = "2021" description = "Wesley native CLI" license = "Apache-2.0" @@ -18,6 +18,6 @@ path = "src/main.rs" [dependencies] serde = "1.0" serde_json = "1.0" -wesley-core = { path = "../wesley-core", version = "0.0.3" } -wesley-emit-rust = { path = "../wesley-emit-rust", version = "0.0.3" } -wesley-emit-typescript = { path = "../wesley-emit-typescript", version = "0.0.3" } +wesley-core = { path = "../wesley-core", version = "0.0.4" } +wesley-emit-rust = { path = "../wesley-emit-rust", version = "0.0.4" } +wesley-emit-typescript = { path = "../wesley-emit-typescript", version = "0.0.4" } diff --git a/crates/wesley-core/Cargo.toml b/crates/wesley-core/Cargo.toml index 241e89c4..e7164caf 100644 --- a/crates/wesley-core/Cargo.toml +++ b/crates/wesley-core/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wesley-core" -version = "0.0.3" +version = "0.0.4" edition = "2021" description = "Wesley Rust Core - Deterministic compiler kernel" license = "Apache-2.0" diff --git a/crates/wesley-emit-rust/Cargo.toml b/crates/wesley-emit-rust/Cargo.toml index 28f5836a..5f83312d 100644 --- a/crates/wesley-emit-rust/Cargo.toml +++ b/crates/wesley-emit-rust/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wesley-emit-rust" -version = "0.0.3" +version = "0.0.4" edition = "2021" description = "AST-based Rust emitter for Wesley IR" license = "Apache-2.0" @@ -13,7 +13,7 @@ categories = ["compilers"] [dependencies] serde_json = "1.0" -wesley-core = { path = "../wesley-core", version = "0.0.3" } +wesley-core = { path = "../wesley-core", version = "0.0.4" } [dev-dependencies] pretty_assertions = "1.4" diff --git a/crates/wesley-emit-typescript/Cargo.toml b/crates/wesley-emit-typescript/Cargo.toml index 0b6b88fe..ea36d254 100644 --- a/crates/wesley-emit-typescript/Cargo.toml +++ b/crates/wesley-emit-typescript/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wesley-emit-typescript" -version = "0.0.3" +version = "0.0.4" edition = "2021" description = "AST-based TypeScript emitter for Wesley IR" license = "Apache-2.0" @@ -13,7 +13,7 @@ categories = ["compilers"] [dependencies] serde_json = "1.0" -wesley-core = { path = "../wesley-core", version = "0.0.3" } +wesley-core = { path = "../wesley-core", version = "0.0.4" } [dev-dependencies] pretty_assertions = "1.4" diff --git a/docs/BEARING.md b/docs/BEARING.md index b9baf393..dd43bb93 100644 --- a/docs/BEARING.md +++ b/docs/BEARING.md @@ -52,7 +52,7 @@ timeline moving away from npm scripts. Native preflight now includes Rust docs checks, Rust tests, and native CLI help. - Keeping native install/release checks on the Cargo path with - `cargo install wesley-cli --version 0.0.3`, + `cargo install wesley-cli --version 0.0.4`, `cargo install --locked --path crates/wesley-cli`, and `cargo xtask release-check`. - Treating `pnpm wesley` as legacy package tooling until its remaining useful diff --git a/docs/ENTRYPOINTS.md b/docs/ENTRYPOINTS.md index 9c9af3a0..ed374162 100644 --- a/docs/ENTRYPOINTS.md +++ b/docs/ENTRYPOINTS.md @@ -11,7 +11,7 @@ For installed alpha builds, the crates.io package is `wesley-cli` and the installed command is `wesley`: ```bash -cargo install wesley-cli --version 0.0.3 +cargo install wesley-cli --version 0.0.4 wesley --help ``` diff --git a/docs/GUIDE.md b/docs/GUIDE.md index 60821045..0c0d0986 100644 --- a/docs/GUIDE.md +++ b/docs/GUIDE.md @@ -12,7 +12,7 @@ If you need the main Wesley nouns and the layer split before reading anything el Compile authored GraphQL into generic or explicitly selected generated artifacts. - **Inspect native CLI**: `cargo wesley --help` -- **Install alpha from crates.io**: `cargo install wesley-cli --version 0.0.3` +- **Install alpha from crates.io**: `cargo install wesley-cli --version 0.0.4` - **Install locally**: `cargo install --locked --path crates/wesley-cli` - **Rust preflight**: `cargo xtask preflight` - **Release check**: `cargo xtask release-check` @@ -23,7 +23,7 @@ native binary stays small while core behavior moves into the Rust library. selection paths and extracting directive arguments; Echo-owned tooling owns Echo-specific footprint honesty checks. -Use `cargo install wesley-cli --version 0.0.3` when you want the published +Use `cargo install wesley-cli --version 0.0.4` when you want the published alpha `wesley` binary on your PATH. Use `cargo install --locked --path crates/wesley-cli` when working from this checkout. Use `cargo xtask release-check` before cutting native release diff --git a/docs/method/releases/README.md b/docs/method/releases/README.md index 6b2064e5..26646080 100644 --- a/docs/method/releases/README.md +++ b/docs/method/releases/README.md @@ -2,6 +2,10 @@ Store internal release artifacts here. +## Release Packets + +- [Wesley v0.0.4](./v0.0.4/release.md) + Each shaped release should have a versioned directory such as `docs/method/releases/vX.Y.Z/` containing: diff --git a/docs/method/releases/v0.0.4/release.md b/docs/method/releases/v0.0.4/release.md new file mode 100644 index 00000000..82a41898 --- /dev/null +++ b/docs/method/releases/v0.0.4/release.md @@ -0,0 +1,48 @@ +# Wesley v0.0.4 Release Packet + +## Summary + +Wesley `0.0.4` is a narrow Rust crate release for the runtime optic compiler +surface. It publishes Wesley-owned canonical admission requirement bytes on +every runtime optic artifact. + +## Included Scope + +- `wesley-core` exposes `OpticAdmissionRequirementsArtifact`. +- `compile_runtime_optic()` emits canonical requirement bytes, an explicit + `wesley.requirements.canonical-json.v0` codec, and a digest computed from the + exact byte buffer. +- `OpticArtifact` carries both structured `OpticAdmissionRequirements` and the + canonical requirements artifact. +- Documentation explains that downstream runtimes should import the canonical + bytes instead of reserializing Wesley structs. + +## Sponsored Users + +- Echo adapter work can import compiler-owned requirement truth from + `wesley-core` instead of maintaining temporary adapter-local canonical JSON. +- Runtime authors can verify the requirement digest against bytes without + depending on private serialization assumptions. + +## Version Justification + +This is a patch release because it adds a small public data surface to an +experimental `0.0.x` compiler API without changing runtime optic lowering +semantics, authority behavior, registration behavior, or CLI command behavior. + +## Non-Goals + +- No Echo changes. +- No admission enforcement. +- No `CapabilityGrant` validation. +- No runtime handle semantics. +- No `@wes_footprint` rename. +- No new runtime optic executable subset behavior. + +## Acceptance + +- Publishable Rust crate manifests all use version `0.0.4`. +- Release notes describe the canonical requirements artifact. +- Release prep guard passes for `0.0.4`. +- Package sanity passes for `0.0.4`. +- Full preflight passes before opening the release PR. diff --git a/docs/method/releases/v0.0.4/verification.md b/docs/method/releases/v0.0.4/verification.md new file mode 100644 index 00000000..b652f1d7 --- /dev/null +++ b/docs/method/releases/v0.0.4/verification.md @@ -0,0 +1,46 @@ +# Wesley v0.0.4 Verification + +## Discovery + +- Repository type: mixed Rust and Node workspace. +- Rust publishable units: `wesley-core`, `wesley-emit-rust`, + `wesley-emit-typescript`, and `wesley-cli`. +- Package managers: Cargo for Rust crates, pnpm for legacy/tooling workspace. +- Latest reachable release tag before prep: `v0.0.3`. +- Target version: `0.0.4`. +- Target tag: `v0.0.4`. +- Release authority: GitHub Actions tag workflow. +- Prep branch: `release/v0.0.4`. + +## Guard Evidence + +| Command | Result | +| --- | --- | +| `git status --porcelain=v1` | Passed; worktree was clean before release prep. | +| `git rev-parse --abbrev-ref HEAD` | Passed; release prep started from `main`. | +| `git fetch origin main --tags --prune` | Passed. | +| `git rev-parse HEAD` and `git rev-parse origin/main` | Passed; both resolved to `84ed74068cbfcecb8f88a73edb726e69ed98dea0` before branching. | +| `git tag --list 'v0.0.4'` | Passed; no local tag collision. | +| `git ls-remote --tags origin 'refs/tags/v0.0.4'` | Passed; no remote tag collision. | + +## Local Release Prep Evidence + +| Command | Result | +| --- | --- | +| `cargo xtask docs-check` | Passed. | +| `cargo check --workspace --all-targets` | Passed. | +| `cargo test --workspace --all-features` | Passed. | +| `cargo clippy --workspace --all-targets -- -D warnings` | Passed. | +| `cargo xtask release-check` | Passed. | +| `cargo audit` | Passed. | +| `cargo xtask release-prep-guard --version 0.0.4` | Passed. | +| `cargo xtask package-crates --version 0.0.4` | Passed. | +| `cargo test -p wesley-core runtime_optic` | Passed. | +| `pnpm run preflight` | Passed. | +| `git diff --check` | Passed. | + +## Publication Evidence + +Publication is pending the tag-triggered GitHub Actions release workflow. +Do not treat this packet as crates.io publication evidence until the release +workflow has completed and registry visibility has been checked directly. diff --git a/docs/releases/README.md b/docs/releases/README.md index d4db2362..6df83897 100644 --- a/docs/releases/README.md +++ b/docs/releases/README.md @@ -2,6 +2,10 @@ Store user-facing release notes here. +## Release Notes + +- [Wesley v0.0.4](./v0.0.4.md) + Each release note should live at `docs/releases/vX.Y.Z.md` and include these sections in order: diff --git a/docs/releases/v0.0.4.md b/docs/releases/v0.0.4.md new file mode 100644 index 00000000..16038a7c --- /dev/null +++ b/docs/releases/v0.0.4.md @@ -0,0 +1,59 @@ +# Wesley v0.0.4 + +## Summary + +Wesley `0.0.4` publishes the canonical runtime optic requirements artifact +surface. Runtime optic artifacts now carry deterministic Wesley-owned +requirement bytes, an explicit codec string, and a digest computed from those +exact bytes. + +## What Changed + +- `compile_runtime_optic()` emits + `OpticAdmissionRequirementsArtifact { digest, codec, bytes }`. +- `OpticArtifact` now includes `requirements_artifact` alongside the structured + `OpticAdmissionRequirements`. +- `requirements_digest` matches `requirements_artifact.digest`. +- The requirements artifact codec is explicit: + `wesley.requirements.canonical-json.v0`. +- Canonical requirement bytes are generated by Wesley, with ordered JSON object + keys when the canonical JSON codec is used. + +## Why It Matters + +Downstream runtimes no longer need to reserialize +`OpticAdmissionRequirements` to create admission truth. They can import +Wesley's compiler-owned bytes, digest, and codec directly, which keeps Echo's +adapter boundary honest: + +```text +Wesley owns compiler truth. +Echo imports published compiler truth. +Echo does not guess compiler truth. +``` + +## Breaking Changes + +No breaking changes are expected for current Rust callers unless they construct +`OpticArtifact` directly. Direct struct constructors must now provide +`requirements_artifact`. + +## Migration + +No migration required for CLI users. + +Runtime adapters should prefer: + +```text +artifact.requirements_artifact.bytes +artifact.requirements_artifact.codec +artifact.requirements_artifact.digest +``` + +over local serialization of `artifact.requirements`. + +## Links to deeper docs + +- [CHANGELOG](../../CHANGELOG.md) +- [Wesley North Star](../NORTHSTAR.md) +- [SDL, Shape, And Law](../SDL.md) From ca5181bfe21dc74869e9d3e76038f797b5757fa2 Mon Sep 17 00:00:00 2001 From: James Ross Date: Fri, 15 May 2026 03:54:09 -0700 Subject: [PATCH 2/2] docs(release): clarify release packet index --- docs/method/releases/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/method/releases/README.md b/docs/method/releases/README.md index 26646080..642d1d91 100644 --- a/docs/method/releases/README.md +++ b/docs/method/releases/README.md @@ -2,7 +2,7 @@ Store internal release artifacts here. -## Release Packets +## Available Releases - [Wesley v0.0.4](./v0.0.4/release.md)