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
4 changes: 2 additions & 2 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -136,8 +136,8 @@ jobs:
run: cargo clippy --workspace --all-targets --all-features --locked -- -D warnings
- name: Validate SQL and peer contracts
run: node crates/cellule-runtime/docs/validate.mjs
- name: Package the independent bootstrap crate
run: cargo package -p cellule-types --locked
- name: Package and verify the complete release set
run: cargo package --workspace --locked

msrv:
runs-on: ubuntu-24.04
Expand Down
21 changes: 21 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,30 @@ User-facing changes to the matched Cellule crate set are recorded here.

## [Unreleased]

## [0.2.0] - 2026-10-12

- Add the optional `cellule-axum` crate with a typed handle extractor,
JSON outputs with receipts, outcome-aware HTTP errors, and a runnable local
SQL service that drains HTTP before the runtime.
- Add typed application builders, native module registration, scoped bindings,
OpenAPI integration, and persistent prepared commands for exact retries.
- Add durable Fleet movement, maintenance, and recovery orchestration; retain
recovery claims during slow publication and preserve follower admission
deadlines across clock rollback.
- Share and batch Cell publication, pipeline follower replication and checkpoint
preparation, and bound execution and retained publication work. Performance
reports are scoped to their measured revisions and environments; the fresh
three-VM capacity qualification remains pending. This release does not claim
a throughput or latency improvement over 0.1.0.
- **Breaking persisted-format change:** use Node Bundle v1 exclusively, including
its authenticated catalog/history encodings and new `.nodebundle` object paths.
Legacy bundle formats and paths are rejected; there is no fallback reader or
automatic migration. Upgrade publication and recovery consumers together and
use a fresh storage prefix. Before retiring an older deployment, drain and
materialize its complete acknowledged history with the previous binary.
See the [format and cutover contract](docs/bundle-coverage-implementation.md#format-and-bounds).
- Publish all eight framework crates at the matched 0.2.0 version. Consumers must
update their Cellule dependencies together; Rust 1.97 or newer is required.

## [0.1.0] - 2026-09-28

Expand Down
16 changes: 8 additions & 8 deletions Cargo.lock

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

18 changes: 9 additions & 9 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,21 @@ members = [
]

[workspace.package]
version = "0.1.0"
version = "0.2.0"
edition = "2024"
license = "Apache-2.0"
repository = "https://github.com/crabbuild/cellule"
rust-version = "1.97"

[workspace.dependencies]
cellule-types = { version = "0.1.0", path = "crates/cellule-types", default-features = false }
cellule-store = { version = "0.1.0", path = "crates/cellule-store", default-features = false }
cellule-ltx = { version = "0.1.0", path = "crates/cellule-ltx", default-features = false }
cellule-runtime = { version = "0.1.0", path = "crates/cellule-runtime", default-features = false }
cellule-app = { version = "0.1.0", path = "crates/cellule-app", default-features = false }
cellule-host = { version = "0.1.0", path = "crates/cellule-host", default-features = false }
cellule-peer-http = { version = "0.1.0", path = "crates/cellule-peer-http", default-features = false }
cellule-axum = { version = "0.1.0", path = "crates/cellule-axum", default-features = false }
cellule-types = { version = "0.2.0", path = "crates/cellule-types", default-features = false }
cellule-store = { version = "0.2.0", path = "crates/cellule-store", default-features = false }
cellule-ltx = { version = "0.2.0", path = "crates/cellule-ltx", default-features = false }
cellule-runtime = { version = "0.2.0", path = "crates/cellule-runtime", default-features = false }
cellule-app = { version = "0.2.0", path = "crates/cellule-app", default-features = false }
cellule-host = { version = "0.2.0", path = "crates/cellule-host", default-features = false }
cellule-peer-http = { version = "0.2.0", path = "crates/cellule-peer-http", default-features = false }
cellule-axum = { version = "0.2.0", path = "crates/cellule-axum", default-features = false }
axum = { version = "0.8.9", default-features = false }
uuid = { version = "=1.24.0", features = ["v7", "serde"] }
async-trait = "0.1"
Expand Down
12 changes: 6 additions & 6 deletions cookbook/Cargo.lock

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

4 changes: 3 additions & 1 deletion crates/cellule-app/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@ cellule-runtime.workspace = true
[dev-dependencies]
async-trait.workspace = true
bytes.workspace = true
cellule-host.workspace = true
# Host-backed scenarios run from the repository; omit this development-only
# dependency from published manifests to avoid app -> host -> app release cycles.
cellule-host = { path = "../cellule-host" }
cellule-runtime = { workspace = true, features = ["test-support"] }
cellule-ltx = { workspace = true, features = ["replica"] }
cellule-store.workspace = true
Expand Down
6 changes: 3 additions & 3 deletions crates/cellule-axum/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,9 +131,9 @@ Add the adapter alongside Axum and your Cellule application crates:
```toml
[dependencies]
axum = { version = "0.8", features = ["json"] }
cellule-app = "0.1"
cellule-axum = "0.1"
cellule-runtime = "0.1"
cellule-app = "0.2"
cellule-axum = "0.2"
cellule-runtime = "0.2"
serde = { version = "1", features = ["derive"] }
```

Expand Down

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

6 changes: 3 additions & 3 deletions crates/cellule-ltx/fuzz/Cargo.lock

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

2 changes: 1 addition & 1 deletion crates/cellule-ltx/perf/cellule/Cargo.lock

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

6 changes: 3 additions & 3 deletions crates/cellule-ltx/perf/replica-cost/Cargo.lock

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

11 changes: 5 additions & 6 deletions docs/releasing.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,12 +106,11 @@ the versioned commit has merged and passed CI:
Allow each package version to reach the registry index before publishing
its dependents. Keep the account token in Cargo's local credentials file;
never paste it into the repository or workflow configuration.
The first release has a dev-only cycle: `cellule-app` tests depend on
`cellule-host`, while `cellule-host` depends on `cellule-app`. For the
one-time `0.1.0` bootstrap, publish `cellule-app` with that dev-dependency
temporarily removed and `--no-verify`, restore the manifest immediately,
then publish `cellule-host`. Subsequent releases use the normal workflow
after both crate names exist on crates.io.
`cellule-app` uses a path-only development dependency on `cellule-host` for
repository examples and integration tests. Cargo omits it from the published
manifest, so new compatibility lines publish without an app/host development
cycle. Run these examples and tests from a repository checkout; consumers of
the published libraries resolve the normal dependency order above.
2. In the settings for **each** crate, add a GitHub Actions trusted publisher
with repository `crabbuild/cellule`, workflow file `release.yml`, and
environment `crates-io`. The workflow uses
Expand Down
Loading