Skip to content

v0.38.0

Latest

Choose a tag to compare

@New1Direction New1Direction released this 13 Oct 19:17
b233132

Fixed

  • Signed canonical-Korg journals no longer verify as tampered. Canonical Korg adds a per-event Ed25519 event_sig signed over the event's preimage. korgex hashed that field into the preimage, so every signed Korg journal failed with "content tampered" in both the Python verifier (src/ledger_spec.py) and the in-browser verifier (src/assets/korg_verify.js). Both now exclude HASH_FIELDS = ("entry_hash", "event_sig"), matching Korg. Unsigned journals and all existing vectors hash exactly as before.
  • The in-browser verifier sorts object keys by Unicode code point, as Python does. It previously used UTF-16 code-unit order, so events with astral-plane keys (such as emoji) failed verification in audit reports.

Changed

  • The korg-ledger@v1 number domain is enforced (SPEC §7). Canonicalization rejects integers beyond ±(2^53−1) and NaN/±Infinity, and verifiers report such events as "not canonicalizable" instead of crashing or calling them tampered. The browser verifier also reports floats as unverifiable, and audit reports show an UNVERIFIABLE verdict for them, not TAMPERED. korgex's writers (_build_body and transcript import) store out-of-domain numbers as exact strings, so recording a tool call never fails.
  • CI lint is pinned to ruff 0.15.x (ruff==0.15.22; dev extra <0.16). ruff 0.16 changed its default rule set, which turned lint red without any source change.
  • README test badge refreshed to 1,657 passing.

Added

  • Canonical-Korg conformance fixtures. spec/korg-ledger-v1/vectors/signed-intact.jsonl is Korg's signed fixture, vendored byte-for-byte; signed-tampered.jsonl adds a tampered variant. Both run in the Python and browser conformance tests. ledger_spec.preimage() exposes the signed bytes, and SPEC §8 documents compatibility.

https://ampcode.com/threads/T-01a135b8-7b96-71de-89fd-640149415925