/** * Pure, deterministic dedup key for maintenance threads. * * Derives a stable key from the merge-base + head SHAs so that repeated * scheduled sync runs against the same upstream state collapse onto a single * maintenance thread instead of creating a new one each run. NEVER involves * Date.now()/random — the key must be identical for identical inputs. * * Returns `null` when the head SHA is missing/empty (unresolvable head → the * caller cannot dedup and should SKIP thread creation rather than mint a * unique key). */ export const maintenanceDedupKey = (input: { mergeBaseSha?: string; headSha?: string; }): string | null => { const head = input.headSha?.trim(); if (!head) return null; const base = input.mergeBaseSha?.trim() || 'nobase'; return `${base}:${head}`; };