Skip to content

v0.5.0

Latest

Choose a tag to compare

@cristianducu cristianducu released this 27 Aug 20:17
· 14 commits to main since this release
77bac8f

Retraction and standing on every surface. This release adds no new record kinds and no spec change - the epoch stays 0.3 - and the library API is unchanged. What changes is reach: the semantics that define Bellbook (retraction, transitive taint, standing, restoration) were previously exercisable only from the Rust core; the CLI and the Python package can now tell the whole story, and the story is enforced in CI on both surfaces. Existing 0.3/0.4 receipts and rules validate identically.

Added

  • CLI bellbook retract (#83). Retract a committed record from a log: bellbook retract --log DIR --rules FILE --author ID --target RECORD_ID --reason TEXT [--json], with the same conventions as the other mutating commands. The record stays in the log; the receipt reports Tainted from then on.
  • Python Writer.retract(author, target, reason) (#82). The same verb from the bellbook package, returning a Commit like the other verbs. Ownership is enforced by replay: the retractor must be the target's author or an admin retraction actor, an Executor may never author one, and a Verdict or Retraction cannot be retracted.
  • Retraction-story rules knobs on both surfaces (#84). bellbook rules init --admin ID and --reaffirmer ID, with matching admins= and reaffirmers= keyword arguments on Python default_rules. Without these, records authored by an Executor were retractable only through a knob no adoption surface could set.
  • The repair pattern, verified and documented (#85). A candidate motivated by an evaluation names it in derives_from alongside the candidate it derives from; Cause carries intent, not taint, so retracting that evaluation later does not compromise the repair.
  • The release gate, enforced (#87). A CLI test and a Python test each replay the broken-benchmark story end to end - Clean, retract, standing collapse at depth, reaffirm, restoration recorded - asserting behavioral equivalence with examples/broken_benchmark.rs, plus an ownership battery.
  • Quickstart Phase 2: the benchmark was broken (#86). docs/quickstart-best-of-n.md walks retract -> Tainted -> reaffirm -> restoration in both columns, stating plainly: restoration restores standing, not Clean. The receipt stays Tainted permanently, because a record that could quietly return to Clean would be a record you could not trust.

Install

Rust:

cargo add bellbook@0.5.0

Python (prebuilt wheels for Linux, macOS, Windows; no Rust toolchain needed):

pip install bellbook==0.5.0

Verified

Full Changelog: https://github.com/bellbook-ai/bellbook/blob/v0.5.0/CHANGELOG.md