Bug: nach Cooldown-Ablauf reaktivierte sich der Schutz automatisch. Root-Cause: Race zwischen zwei Endpoints die abgelaufene Cooldowns auflösen. /api/cooldown/status setzt korrekt profile.protectionDisabledAt. /api/ protection/state — alle 5s während Cooldown gepollt — machte beim Ablauf NUR resolveCooldown(), ohne protectionDisabledAt. state.get gewann das Race fast immer → protectionDisabledAt blieb null → protectionShouldBeActive=true → Frontend-Bypass-Detection reaktivierte den Schutz. Fix: state.get.ts setzt im expired-Branch ebenfalls protectionDisabledAt + cooldownJustResolved-Flag.
Description
Self-hosted mirror of rebreak monorepo
Languages
TypeScript
68%
Vue
7.9%
Swift
7.7%
Shell
4.2%
JavaScript
3.1%
Other
8.9%