|
1 | 1 | # Changelog |
2 | 2 |
|
3 | | -## 2.0.0 — unreleased (Rust runtime) |
| 3 | +## 2.0.1 — fix-first hardening (independent review) |
| 4 | + |
| 5 | +A cross-model (Codex) review of the shipped 2.0 runtime found several **fail-open** bugs (the |
| 6 | +worst kind in a gate) and conformance gaps. All fixed, with regression coverage: |
| 7 | + |
| 8 | +- **Fail closed, not open.** The Stop hook (`bean-hook`) now BLOCKS on an active `.bean` ledger |
| 9 | + if `bean-check` can't run / returns no JSON / returns an unknown status (was: allow stop). |
| 10 | + An existing-but-invalid `run.json` or `state.json` now errors (exit 3) instead of silently |
| 11 | + reverting to compat / resetting temporal state. |
| 12 | +- **A residual can't launder a failing oracle.** A claim that declares a verifier which then |
| 13 | + fails/staled/errored now BLOCKS regardless of a `residual` tag; residual fallback applies |
| 14 | + only when no verifier is declared at all. |
| 15 | +- **`bean-verify`: a nonzero exit can't be upgraded to `pass`** by a `{"verdict":"pass"}` on |
| 16 | + stdout (JSON may only downgrade/explain). |
| 17 | +- **Real freshness for directory inputs.** `inputs_hash` is now byte-based and recurses into |
| 18 | + declared directories (a `inputs: ["src/"]` previously collapsed to "absent", so changes were |
| 19 | + never detected). Identical in `bean-check` and `bean-verify`. |
| 20 | +- **`bean-run` treats `converged-with-residuals` (exit 4) as terminal** instead of looping to |
| 21 | + stuck. |
| 22 | +- **Conformance parity restored & widened.** Rust now emits the coverage warnings |
| 23 | + (`W_SINGLE_SOURCE`/`W_MONOCULTURE`) it had dropped; the multi-claim `claims_hash` delimiter |
| 24 | + now matches the reference (`\x01` line join — single-claim tests had hidden the drift). The |
| 25 | + differential now compares warnings, with new multi-claim temporal and residual+failing-oracle |
| 26 | + cases (27 conformance + driver + gate checks). |
| 27 | +- **Polish:** certificate binds a canonical hash of each oracle spec (cmd+inputs); schemas carry |
| 28 | + the 2.0 fields (`verification`/`oracles`/`verified_by`); `SECURITY.md` describes the real |
| 29 | + execution surface (incl. `bean-run`'s `--agent` command); the release workflow smoke-tests each |
| 30 | + built binary before upload; the marketplace Stop hook degrades gracefully via a shim when no |
| 31 | + binary is present. |
| 32 | + |
| 33 | +## 2.0.0 — Rust runtime |
4 | 34 |
|
5 | 35 | bean 2.0 reimplements the runtime as a **single Rust static binary** (no install dependency — |
6 | 36 | Node was itself the dependency that undercut "runs anywhere"), reconverging with the Bran core, |
|
0 commit comments