v0.17.0
[0.17.0] - 2026-06-29
Security & MCP integrity audit remediation.
Changed (BREAKING)
- Audit hash format
ledger-audit-v1→ledger-audit-v2. The hash now covers
each line's accounttypeandname(previously tamper-blind — a type flip or
rename left the digest unchanged) and canonicalizes tag key order. Hashes
produced by ≤0.16.x will differ; re-baseline any stored hashes. (H1, L3)
Fixed
Money.divrejects division by zero, andmul/div/convertreject non-finite
results instead of silently yieldingInfinity/NaN. (H3)Money.allocaterejects negative ratios and ratios summing to zero; the MCP
money_computeallocate now reports a verifiedsumsToOriginal. (M1)Ledger.applyandvalidateEntryreject reusing an account code with a
conflicting type/name (ACCOUNT_REDEFINED), so balances and the fundamental
equation can no longer be silently corrupted. (H2)verifyDeterminismnow proves a JSON serialization roundtrip reproduces the
hash (reportsroundtripOk), instead of re-hashing the same in-memory objects. (M3)- The MCP server installs asset decimal scales, so native-precision crypto
(BTC 8dp, ETH 18dp, …) is accepted instead of capped at 2dp. (M2) - MCP money-construction errors are labeled
SUB_SCALE/NON_FINITE/
INVALID_AMOUNTdistinctly. (L2)
Security
- Private vulnerability reporting via GitHub Security Advisories; honest
documentation of the best-effort release-signing posture; removed a stray
empty.sigartifact. (L1)