🌳
pt0/deployF/claimLockF/claimCoreAI.mts
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