-- +goose Up -- +goose StatementBegin -- Phase 3.4: Cluster-Join-Token One-Shot-Consume-Tracking. -- -- Token-Format ist HMAC-self-contained (siehe internal/cluster/jointoken): -- nonce + expires_at + ca-fingerprint, signiert mit dem Cluster-Join- -- Secret. Damit der Token wirklich nur EINMAL benutzbar ist, speichern -- wir die nonce beim Consume — Re-Use → 409. expires_at hilft beim -- Cleanup (Tokens älter als ihre eigene Expiry können gelöscht werden, -- auch ungebraucht). CREATE TABLE IF NOT EXISTS join_tokens_used ( nonce TEXT PRIMARY KEY, used_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), expires_at TIMESTAMPTZ NOT NULL, consumed_by TEXT ); CREATE INDEX IF NOT EXISTS idx_join_tokens_used_expires ON join_tokens_used (expires_at); -- +goose StatementEnd -- +goose Down -- +goose StatementBegin DROP TABLE IF EXISTS join_tokens_used; -- +goose StatementEnd