{ "version": 2, "id": "D12", "kind": "synthetic-chat", "origin": "synthetic", "actors": [ "Bea", "Yan", "Dee" ], "initialDocument": "", "steps": [ { "id": "m1", "kind": "say", "actor": "Bea", "text": "clients are timing out on the activity endpoint. how should paging work?", "to": "room" }, { "id": "m2", "kind": "say", "actor": "Yan", "text": "offset/limit is easiest for the admin UI; opaque cursor is better when new events arrive mid-scroll.", "to": "room" }, { "id": "m3", "kind": "say", "actor": "Bea", "text": "could we keep offset for admin and cursor for the public API?", "to": "room" }, { "id": "c3", "kind": "checkpoint", "waitFor": "settled", "deadlineMs": 30000 }, { "id": "m4", "kind": "say", "actor": "Dee", "text": "I'd rather one contract. cursor for both, even if the admin table needs a little work.", "to": "room" }, { "id": "c4", "kind": "checkpoint", "waitFor": "settled", "deadlineMs": 30000 }, { "id": "m5", "kind": "say", "actor": "Yan", "text": "yes, cursor for both. include `next_cursor`, don't make clients parse IDs.", "to": "room" }, { "id": "m6", "kind": "say", "actor": "Bea", "text": "okay, but I want a short API example in the docs.", "to": "room" }, { "id": "c6", "kind": "checkpoint", "waitFor": "settled", "deadlineMs": 30000 } ] }