Detectado en la revisión del PR #45.
_parse_date("2025-12-31") produce 2025-12-31T00:00:00+00:00, y _filter_in_range descarta item.created_at > until. Un item del 31-dic a las 14:00Z es > until y se excluye, pese a que el docstring promete una ventana inclusiva [since, until] y el usuario que escribe --until 2025-12-31 espera incluir todo el 31. Solo sobrevive el instante exacto de medianoche. since no tiene el problema simétrico (medianoche-inclusivo coincide con la intuición).
Fix propuesto: cuando --until es solo-fecha (sin hora), snap a fin-de-día (until + 1 día exclusivo, o 23:59:59.999999), o documentar que --until es un bound de timestamp exclusivo. Afecta a _parse_date (cli.py) — código compartido por extract/fetch/generate, por eso se difirió fuera del PR #45.
Tests: añadir un caso con item en el día until.
Detectado en la revisión del PR #45.
_parse_date("2025-12-31")produce2025-12-31T00:00:00+00:00, y_filter_in_rangedescartaitem.created_at > until. Un item del 31-dic a las 14:00Z es> untily se excluye, pese a que el docstring promete una ventana inclusiva[since, until]y el usuario que escribe--until 2025-12-31espera incluir todo el 31. Solo sobrevive el instante exacto de medianoche.sinceno tiene el problema simétrico (medianoche-inclusivo coincide con la intuición).Fix propuesto: cuando
--untiles solo-fecha (sin hora), snap a fin-de-día (until + 1 díaexclusivo, o23:59:59.999999), o documentar que--untiles un bound de timestamp exclusivo. Afecta a_parse_date(cli.py) — código compartido por extract/fetch/generate, por eso se difirió fuera del PR #45.Tests: añadir un caso con item en el día
until.