edit-session 0.1.0-beta.1

Toolkit-independent preview, validation and commit lifecycle
Documentation
# Beta compatibility boundary

`0.1.0-beta.1` is a release candidate, not a published or stable release. The last
published version is `0.1.0-alpha.5`. No runtime implementation changes are needed
for this candidate; the added checks make the intended consumer contract explicit.

## Supported surface

- Rust 1.88 or later, edition 2024, `no_std`, no runtime dependencies or unsafe code.
- `EditSession<T, C>`, `Change<T>` and the three `FinishError` variants. Existing
  constructors, accessors, proposal, reset, check, cancel and finish methods remain.
- Only construction/reset require `T: Clone`; checks/finish require `T: PartialEq`
  and `C: PartialEq`. Contexts need not implement `Clone`, `Copy` or `Debug`.
- Context conflict takes precedence over value conflict; both take precedence over
  an invalid proposal. `check_live` deliberately ignores proposal validity so the
  host can keep an invalid draft open for correction.
- Invalid proposals preserve the last valid preview. Reset restores the original
  preview and clears invalidity without rebasing the captured context.
- Finish consumes the draft, returning either one change, a no-op, or an error.
  No-op/cancel do not issue commands. A failed finish also consumes the draft; use
  checks before consuming it if the UI needs to retain it for correction.

The host must supply independent snapshots and an identity/revision context that
changes on edits **and Undo/Redo**, serialize check/command application, validate
domain rules, and own history. This crate provides no transaction or concurrency
lock. An `Rc<RefCell<_>>` clone is not an independent snapshot.

## Upgrading and evidence

Pin the exact prerelease (`=0.1.0-beta.1` once published). Re-run the host's native
regressions before changing the pin. The beta adds no fields to stored documents:
sessions are in-memory state, not a serialization format. Error variants are for
branching; Display/Debug prose and memory layout are not a machine protocol.

`tests/consumer_contract.rs` exercises a downstream-style API with minimal trait
bounds and simultaneous failures. Existing lifecycle tests and the retry/context
examples remain required. Packaging runs those checks from the extracted crate on
the MSRV as well as testing the checkout. These are compatibility checks, not a
claim that an external dependency is better than a correct local helper.

Within beta, preserve this surface; a necessary incompatible correction must use a
new prerelease, document the migration and add a regression. Never replace a
published version. Version 1.0 additionally needs a separately reviewed long-term
support/deprecation policy and consumer experience. Beta is not that promise.

## Dependency approval is separate

We can supply the exact source/archive hash, dual-license notices, dependency and
build-input inventory, tests, a local-helper comparison, and a patch for an
organisation-owned source or licensed vendored copy. Maintainers decide whether
the feature is useful, which source/owner to accept and how updates are maintained.
Keep their source gate intact while that decision is pending; a pin, green CI or
beta version does not mean a dependency was reviewed or approved. Running the
separate interaction-check tool in CI needs its own permission/workflow decision.