Skip to content

Releases: grainulation/bean

bean 1.1.2 — bean-check robustness pass

15 Jun 18:27

Choose a tag to compare

1.1.2 — 2026-06-15

A robustness pass on bean-check from an independent cross-model (Codex) review that
re-ran against 1.1.1.

Fixed

  • A partial run.json could silently disable the evidence gate — a run.json with
    only evidence_bar.load_bearing clobbered the default recommendation tier, making it
    undefined so below-bar claims passed as ready. run.json is now deep-merged and its
    tiers validated (an invalid/missing tier falls back to the default).
  • Malformed claims no longer crash the compiler — a null entry or a non-array
    conflicts_with raised a raw TypeError; such claims are now recorded as E_SCHEMA
    and excluded.
  • The certificate is JSON-encoded over status + each admitted claim's (id, evidence, content), so ids/values can't collide via delimiters.
  • Dry-round tracks content, not just ids — an in-place revision (same id, new content)
    correctly counts as progress and increments the round.
  • budget-exceeded now takes precedence over blocked (CLI contract: exit 2 = stop),
    with the blockers still reported. --dir with no value exits 3 instead of a stack trace.

Verified

  • The three 1.1.1 fixes (symmetric conflict pairing, valid-resolver discharge, content
    certificate) were independently re-confirmed correct by the same review.

bean 1.1.1 — bean-check hardening + operating guide

15 Jun 18:07

Choose a tag to compare

1.1.1 — 2026-06-15

Hardens bean-check and its docs after a blindspot + independent cross-model review.

Fixed

  • Conflict detection was unsound — a one-directional conflicts_with link from the
    higher-lexical-id side was silently dropped (the gate exited "ready" on a real conflict).
    Pairing is now symmetric: a link from either side registers the conflict.
  • A risk or conflict could discharge itself — a resolved_by pointing at a dangling or
    self id cleared the gate. It now discharges only when it references a real, active,
    different claim.
  • The certificate now covers status + claim content, not just the id set, so two
    different ledgers no longer collide on one certificate.
  • --dir with no value exits cleanly (3) instead of a raw stack trace; duplicate ids raise
    E_DUP_ID; empty / over-budget ledgers are noted.

Added / Changed

  • New references/bean-check.md — the operating guide for the default compiler: the
    .bean/ file layout, the claim shape, a worked example, and the blocker-code → next-move
    table. Linked from SKILL.md and runtime.md.
  • Regression fixtures + tests for the asymmetric-conflict and self-discharge cases.
  • Docs: scrubbed "confidence" (a wheat-only signal) from the default-compiler descriptions;
    reframed grainulator as the optional richer backend; documented that bean-check detects
    only conflicts_with-linked conflicts.

bean 1.1.0 — bean-check, a zero-dep convergence compiler

15 Jun 17:38

Choose a tag to compare

1.1.0 — 2026-06-15

Adds bean-check — bean's own convergence compiler — so convergence is a thing that can
fail, not just a discipline you are trusted to follow.

Added

  • bin/bean-check.js — a zero-dependency, type-checked (// @ts-check + JSDoc) Node
    CLI built from the Bran-IR core. Reads .bean/claims.json (+ optional .bean/run.json)
    and exits nonzero until the loop converges: 0 ready, 1 blocked, 2 budget-exceeded.
  • Hard gates (where a single-snapshot compiler only warns): undischarged risks
    (notice→act), load-bearing claims below the evidence bar, and load-bearing abstentions all
    BLOCK; plus temporal checks — dry-round, budget, and rejected-claim reappearance.
  • Conflict resolution = evidence-driven belief revision, fail-closed. A conflict always
    blocks; when one side strictly out-evidences the other, bean-check emits a belief-revision
    hint (supersede the weaker) but never edits the ledger — the agent records the auditable
    supersede. No Schulze: bean has no voters, and Fable revises beliefs rather than holding
    elections (the Bran paper itself proves Schulze is correctness-neutral).
  • Deterministic certificate (sha256 over sorted admitted-claim ids), ported from Bran.
  • schemas/ (claim / run / result), curated test/fixtures/, and test/bean-check.test.js
    (11 behavioral checks). tsc --noEmit typechecks the JS via JSDoc; CI runs it.

Changed

  • bean-check is now the default control plane; grainulator/wheat is an optional richer
    backend. Docs updated to match.
  • Abstention is a tag (needs-input / unknown) on a normal claim, not a status —
    fixes a 1.0.1 doc bug where the named status would be rejected by the runtime.
  • Added an assess-vs-mutate boundary to the skill, and an MCP compile parse-status
    caveat (the --check nonzero exit is CLI-only).

bean 1.0.1 — sharper convergence loop

15 Jun 14:11

Choose a tag to compare

1.0.1 — 2026-06-15

Sharpens the loop with lessons drawn from documented model behavior on agentic and
self-correction tasks. No structural changes — all refinements to existing references.

  • Notice→act gate — the dominant failure isn't missing a problem, it's noticing one and
    proceeding anyway. A concern is now recorded at find-time and blocks convergence until
    it's a confirmed non-issue, a verified fix, or a named true residual. Recording is not
    resolving. (convergence.md, self-critique.md, SKILL.md)
  • Abstention is first-class — an honest unknown / needs-input is a valid claim state,
    scored as cheaper than a confident wrong answer; fabricating under missing context is the
    failure to avoid. (verify.md, runtime.md)
  • Corroborate across independent methods — verification signals correlate less than they
    seem; a load-bearing claim earns a high tier from methods that fail independently, not one
    check run twice. (verify.md)
  • Effort is a budget to allocate — pour high effort and fan-out on the one or two most
    decisive fronts; single-pass the rest. (convergence.md)
  • Persistent context beats respawn — prefer a long-lived loop over the shared ledger to a
    blocking orchestrator that re-hydrates context per step. (delegate.md, runtime.md)
  • Realism reduces gaming — brief delegated work as the real task, not as a check to pass;
    grade the final artifact, not the reasoning narration. (delegate.md, codex-blindspot.md)
  • Tool/subagent output is untrusted input — treat retrieved content and worker reports as
    claims to verify, never as instructions; quarantine injected directives. Ground before the
    first run of any side-effecting command. (verify.md)

v1.0.0

15 Jun 05:55

Choose a tag to compare

bean — a recursive convergence loop for large tasks, for Claude Code and Codex.

bean runs a task the way the Fable model worked: investigate the most decisive open front, record what you learn as typed evidence in a claim ledger, let a compiler score what's still weak or contradictory, revise the beliefs that don't hold, and loop until it converges — then deliver. It shapes the procedure a model follows, not its capability ceiling.

Highlights

  • Convergence loop, not a fixed checklist — Frame → Survey → Investigate → Record → Compile → Revise → Converged?, repeating until there's nothing decisive left to learn.
  • Runs on a runtime — a claim ledger + a compiler that scores convergence. grainulator/wheat is the primary runtime; a minimal built-in ledger (bean-stalk.md) is the fallback for Codex and bare installs.
  • Belief revision is first-class — including respectfully revising the user's stated beliefs when grounded evidence contradicts them (counter-sycophancy).
  • Ground before you assert; verify by running or rendering — read the source / run the test / render the artifact; "looks right" is not a check.
  • Persistence with proportion — drive every open front to a confirmed non-issue, a verified fix, or a true residual; but don't over-engineer trivial tasks or refuse to ask the human when asking is cheaper.
  • Cross-model Codex blindspot lane for independent verification on high-stakes work.
  • Dual packaging — Claude Code (.claude-plugin/) and Codex (.codex-plugin/), plus install.sh. /bean in both.

Install

claude plugin marketplace add https://github.com/grainulation/bean.git
claude plugin install bean

Doc-only (Markdown + JSON), no runtime dependencies. MIT. Verified by a structural smoke test (manifests, frontmatter, link resolution) and CI on Node 20 + 22.