Bind dispatcher idempotency keys to command identity #34

Merged
lost-rob0t merged 13 commits from agent/star-lang-dispatch-idempotency-identity-v1 into main 2026-07-23 18:02:49 +00:00
lost-rob0t commented 2026-07-23 16:30:03 +00:00 (Migrated from github.com)

What

  • define a stable semantic identity for lifecycle commands
  • exclude delivery metadata: message ID, causation ID, attempt, and sent-at
  • include actor, sender, correlation, dataset, reply target, deadline, message type, and payload
  • reject semantic reuse of an existing actor/idempotency-key pair
  • enforce compatibility for terminal, in-progress, and retry records
  • preserve compatible terminal replay and retry redelivery
  • load the identity invariant in the BBP main runtime
  • add focused SBCL conformance tests and CI

Identity model

semantic identity
  star version
  command kind
  message type
  actor
  sender
  correlation ID
  idempotency key
  dataset
  reply-to
  deadline
  payload

delivery metadata excluded
  message ID
  causation ID
  attempt
  sent-at

A proper redelivery can therefore receive a new message ID, causation link, attempt number, and timestamp while remaining the same command. Changing the payload or routing semantics under the same idempotency key is a conflict.

Verification

  • delivery-only changes preserve identity
  • payload changes alter identity
  • compatible terminal redelivery replays deterministic outcomes
  • terminal semantic conflict is rejected before handler invocation
  • in-progress semantic conflict is rejected before handler invocation
  • retry semantic conflict is rejected before handler invocation
  • compatible retry redelivery executes again and may complete

Stack

This draft is based on agent/star-lang-bbp-runtime-journal-v1 / PR #33.

Next

  • integrate the identity layer into the general Star-Lang runtime assembly
  • add canonical payload identity for map-like payloads
  • add durable journal checksums and torn-tail repair
## What - define a stable semantic identity for lifecycle commands - exclude delivery metadata: message ID, causation ID, attempt, and sent-at - include actor, sender, correlation, dataset, reply target, deadline, message type, and payload - reject semantic reuse of an existing actor/idempotency-key pair - enforce compatibility for terminal, in-progress, and retry records - preserve compatible terminal replay and retry redelivery - load the identity invariant in the BBP main runtime - add focused SBCL conformance tests and CI ## Identity model ```text semantic identity star version command kind message type actor sender correlation ID idempotency key dataset reply-to deadline payload delivery metadata excluded message ID causation ID attempt sent-at ``` A proper redelivery can therefore receive a new message ID, causation link, attempt number, and timestamp while remaining the same command. Changing the payload or routing semantics under the same idempotency key is a conflict. ## Verification - delivery-only changes preserve identity - payload changes alter identity - compatible terminal redelivery replays deterministic outcomes - terminal semantic conflict is rejected before handler invocation - in-progress semantic conflict is rejected before handler invocation - retry semantic conflict is rejected before handler invocation - compatible retry redelivery executes again and may complete ## Stack This draft is based on `agent/star-lang-bbp-runtime-journal-v1` / PR #33. ## Next - integrate the identity layer into the general Star-Lang runtime assembly - add canonical payload identity for map-like payloads - add durable journal checksums and torn-tail repair
Sign in to join this conversation.
No description provided.