2026-08-09 — marvelousdb: candados anti-abuso + apagado (billing 0)
- Rate limit por IP (120/min, ventana deslizante en memoria, configurable por env) en web.js; la API ya era interna (solo :5050 publicado).
- Cache-Control max-age=7d en production para estaticos (menos egress).
- Workflows GitHub Actions sleep/wake (23:00/08:00 CDMX) con FLY_API_TOKEN.
- Bug de refactor: al requerir web.js en tests arrancaba el servidor (app.listen top-level) — guard require.main === module (patron de api.js).
- 51/51 tests. Verificado en prod: 429 despues de 5 con limite bajo, cache headers 604800s.