Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
8 changes: 4 additions & 4 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

27 changes: 13 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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).

Expand Down
8 changes: 4 additions & 4 deletions crates/wesley-cli/Cargo.toml
Original file line number Diff line number Diff line change
@@ -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"
Expand All @@ -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" }
2 changes: 1 addition & 1 deletion crates/wesley-core/Cargo.toml
Original file line number Diff line number Diff line change
@@ -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"
Expand Down
4 changes: 2 additions & 2 deletions crates/wesley-emit-rust/Cargo.toml
Original file line number Diff line number Diff line change
@@ -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"
Expand All @@ -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"
Expand Down
4 changes: 2 additions & 2 deletions crates/wesley-emit-typescript/Cargo.toml
Original file line number Diff line number Diff line change
@@ -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"
Expand All @@ -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"
2 changes: 1 addition & 1 deletion docs/BEARING.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion docs/ENTRYPOINTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
```

Expand Down
4 changes: 2 additions & 2 deletions docs/GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`
Expand All @@ -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
Expand Down
4 changes: 4 additions & 0 deletions docs/method/releases/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

Store internal release artifacts here.

## Available Releases

- [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:

Expand Down
48 changes: 48 additions & 0 deletions docs/method/releases/v0.0.4/release.md
Original file line number Diff line number Diff line change
@@ -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.
46 changes: 46 additions & 0 deletions docs/method/releases/v0.0.4/verification.md
Original file line number Diff line number Diff line change
@@ -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.
4 changes: 4 additions & 0 deletions docs/releases/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:

Expand Down
59 changes: 59 additions & 0 deletions docs/releases/v0.0.4.md
Original file line number Diff line number Diff line change
@@ -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)
Loading