1export type Claim = {owner: string, hb: number, ttlSec: number}3// pure staleness/ownership gate — kept separate from claimLockAI so lightweight bundles (validator initContainer)4// can reuse the canonical logic without pulling in the notify (nodemailer) chain.5export const isClaimAcquirable = (claim: Claim | null, owner: string, now: number): boolean =>6 !claim || claim.owner === owner || now - claim.hb > claim.ttlSec