Cada tramo sin ninguna entrada (mas alla del umbral de 3 min, que sigue contando como trabajo
igual que siempre) queda registrado como {desde, segundos} y viaja en el lote como `idles`,
aparte de los bloques. Sin app, sin titulo, sin contenido: la inactividad no tiene nada que
mirar. La bandeja lo dice: «inactivo (se anota aparte)».
Decisiones que importan, salidas de una revision adversaria previa (11 hallazgos, todos
atendidos):
- Tope de 4 h por tramo: una torre que nunca se suspende, bloqueada toda la noche, anotaba
«14 h inactivo» en el dia anterior. Mas de 4 h sin tocar el equipo es ausencia, no descanso;
pasado el tope no se reabre nada hasta que vuelva la entrada. El servidor ademas rechaza
cualquier tramo de mas de 6 h como red de seguridad.
- La suspension corta el tramo (la noche del portatil es una laguna, no un dato) y al
despertar el reloj queda EN el umbral: sin eso, los despertares automaticos de Windows a las
3 a. m. contaban hasta 3 min de trabajo fantasma y fabricaban jornadas de madrugada.
- El tramo en curso se persiste a disco (rastreador-encurso.json, un latido por minuto): un
apagado, el cierre de la app o la auto-actualizacion —que reinicia a todo el equipo a la
vez— lo cierran en su ultimo latido en vez de perderlo entero.
- La subida se acota a 12 lotes por ciclo y el tiempo de subida no cuenta como suspension:
al volver la red tras dias sin ella, los cientos de POST seguidos bloqueaban el hilo del
sensor y el siguiente tic diagnosticaba un «dormido» falso que cortaba el tramo abierto.
- La cola en disco lee el formato viejo (Vec<Vec<Bloque>>) ademas del nuevo: lo pendiente de
subir en la 1.8 no se pierde al actualizar.
- En pausa no se anota nada, y reanudar no retro-anota la pausa como ocio.
El servidor (labstream-os 453a640) ya acepta `idles` y enseña la columna «Inactivo» en las
jornadas de /rastreo; los sensores 1.8 siguen funcionando sin cambios.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>