2026-11-13 Heimdall Docs: a Twitch step-up proof is weaker; point the unlink section at the step-up note ... Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> 46e5d5364f View at this point in history 2026-11-13 19:21:45 +00:00 Heimdall Pin the proof window's 600 s edge, foreign-id 404 over last_identity, and the sign_in-only step_up_at guard ... Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> e9eef09446 View at this point in history 2026-11-13 19:21:45 +00:00 Heimdall Docs: identity list and unlink routes, step-up proof window, linked_identities single-writer rule; evidence ledger line ... Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> d8b8d25e81 View at this point in history 2026-11-13 18:59:21 +00:00 Heimdall Member identity list and step-up-gated unlink: step_up_at on a step-up sign-in's access claim, GET /v1/me/identities, POST /v1/me/identities/:id/unlink ... resolveBearer is the one bearer verifier; the link race maps to link_initiator_mismatch and links/confirm 409. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> 3afc956f92 View at this point in history 2026-11-13 18:59:21 +00:00 Heimdall Store: an upsert never moves an identity between accounts; unlinkLinkedIdentity is the one delete, under an account lock, refusing the last identity ... STORE_TABLE_PRIVILEGES.linked_identities gains DELETE; startup refuses a role without it. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> 46d5044925 View at this point in history 2026-11-13 18:59:21 +00:00