API Stability

Clawdius follows semantic versioning for its public APIs.

Versioning

The current version is 1.0.0-rc.1. The crate versions are managed at the workspace level in Cargo.toml:

[workspace.package]
version = "1.0.0-rc.1"

Stability Guarantees

Public API Surface

The following types and modules are considered part of the stable public API:

ModuleExports
clawdius_core::ConfigConfiguration loading and saving
clawdius_core::SessionManagerSession lifecycle management
clawdius_core::error::ErrorUnified error type
clawdius_core::error::ResultResult type alias
clawdius_core::llmLLM client and configuration
clawdius_core::sessionSession types and storage
clawdius_core::contextContext building and mentions
clawdius_core::output::OutputFormatOutput format enum
clawdius_core::diffDiff types and rendering
clawdius_core::timelineTimeline and checkpoints
clawdius_core::completionsCode completion handler
clawdius_core::config::KeyringStorageKeyring storage (feature-gated)

Breaking Changes

Breaking changes to the public API will only occur with a major version bump (following SemVer). The project is currently at rc.1, indicating the API is nearing stability but may still change.

Unsafe Code Policy

[workspace.lints.rust]
unsafe_code = "deny"

All unsafe code is denied at the workspace level. This is a hard constraint across all crates.

Lint Policy

[workspace.lints.rust]
missing_docs = "warn"
rust_2018_idioms = { level = "warn", priority = -1 }

[workspace.lints.clippy]
pedantic = { level = "warn", priority = -1 }
unwrap_used = "warn"
expect_used = "warn"
panic = "warn"
todo = "warn"

CI enforces stricter checks than the baseline workspace lints.

Feature Flags

Feature flags are considered part of the API contract. Adding a new feature flag is not a breaking change. Removing or changing the behavior of an existing flag requires a major version bump.

See the Rust API page for the full feature flag reference.

Error Type Stability

The Error enum is extended with new variants as non-breaking additions. Existing variants and their Display messages are stable.

CLI Stability

CLI command names, flags, and argument formats are part of the public API. Changes follow SemVer conventions.

Deprecation Policy

Deprecated APIs will emit warnings for at least one minor version before removal. Deprecated items are documented in the changelog.