Skip to content

[spike] S0.2 Atomic lease API (claim / heartbeat / fence) #80

Description

@alexfrmn

Part of #77.
Single SQL contract + thin Node and Python wrappers (coldstart is Python).

  • claim_or_skip: INSERT ... ON CONFLICT(conversation_id,member_slot) DO UPDATE ... WHERE stale OR same_session, token=token+1 RETURNING token (CAS, read changes()).
  • heartbeat: UPDATE WHERE token/session still match.
  • fence: outbound re-checks token==current; else drop/mark superseded.
  • heartbeat 5s, TTL 20s, reclaim after 2 missed, jitter.

AC:

  • S0.2a concurrency: two processes claim simultaneously -> exactly one wins.
  • S0.2b WAL smoke: heartbeat under concurrent daemon+foreground+coldstart, p99 write latency no regression, no DLQ storm.

Metadata

Metadata

Assignees

No one assigned

    Labels

    phase-0-spikePhase 0 spike — lease + mute corescoped-channelsScoped/addressed channels + session-affinity release

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions