mirror of
https://github.com/turnstonelabs/turnstone.git
synced 2026-08-12 23:12:23 -06:00
18c3301428
POST /approve accepts cycle_id / call_id selectors and 409s on stale selectors with the current cycle's ids so clients re-render instead of silently resolving an unrelated batch. Selector-less bodies pin the resolve to the cycle the lookup returned (not "whichever is oldest by the time the resolve runs"), and Approve+Always names apply only after the pinned cycle actually resolved — the auto-approve whitelist can no longer describe a different batch than the one that resolved. approve_request carries cycle_id; approval_resolved carries cycle_id + call_ids; SSE reconnect replays every live cycle's card. The console collector, coordinator UI fan-out, and both SDKs (Python + TS) thread the cycle correlation through. BREAKING (1.7): the singular pending_approval_detail field is removed from dashboard rows, workstream detail, and node snapshots — replaced by the pending_approval_details list (one entry per live cycle, each carrying its cycle_id). stable/1.6 keeps the old shape.