7cf94f8a3a132ee9a3709a9d3c38aa1ea1840c3e
CRITICAL BUG FIX: skew_retries_exhausted was a global skip gate — once first slot exhausted retries, ALL subsequent slots skipped retries. Later slots could miss the midnight transition during their own window. New design: - Two-phase pseudo-exponential backoff PER SLOT (not global): Phase 1 (aggressive): 43ms x 1.5^n for first 6 retries Phase 2 (gradual): 330ms x 1.15^n after 6 (less bot-spammy) - 2.5s time budget per slot (covers NTP skew up to ~2s + lift) - skew_retries_exhausted is now diagnostics-only (set but NOT used to skip) - _skew_delay() helper computes two-phase delays - Only 'Hora no permitida' certifies a slot as taken - 'Fecha posterior' never a give-up reason — server date not rolled yet Tests: 57 passed Live: 8 retries on 15:15, all 9 slots still free post-test
Description
Municipal cita previa booking automation
Languages
Python
68.7%
JavaScript
29.4%
Shell
1.9%