Health Dashboard
VEREDITO · SÁB 9 MAI → ver análise
Atenção: Prioriza Z2
HRV fora do ideal.
SONO ?
8h57
+90 min
BODY BATTERY MAX ?
75
+19
FC REPOUSO ?
51
-2 bpm
DISPOSIÇÃO ?
76
+4
SONO POR FASE
REM 1h52 Deep 1h10 Light 5h56 Awake 6 min
HRV — ÚLTIMA NOITE
31.0 ms
↑ 4 ms vs ontem
alvo ≥32
29 06 34 07 27 08 31 hoje
DATA HRV SONO BB FCREP READY VEREDITO
09/05/2026 31 8h57 75 51 76 Atenção: Prioriza Z2
08/05/2026 27 7h27 56 53 72 Descanso recomendado
07/05/2026 34 6h55 73 51 56 Pronto pra treinar
06/05/2026 29 7h01 69 51 40 Atenção: Prioriza Z2
05/05/2026 29 56 34 Corte forçado

Análises diárias

💡 Em telas estreitas, gira o celular pra leitura com mais conforto.
09/05/2026
sáb 9 mai

Diário 2026-05-09 (sáb) — LR7 day, recuperação consolidada

Reportagem matinal

Auto-gerado por dash_today.py em 19:05 de sáb 9 mai.

Métrica Valor Δ vs ontem
HRV overnight 31 ms +4 ⬆
BB max / min 75 / 29 +19 ⬆
FCrep 51 bpm −2 ⬇
Sleep Score 80
Sono total 8h57 +90 ⬆
REM 1h52
Deep 1h10
Light 5h56
Awake 6 min
Stress avg / max 25 / 65
Disposição (Garmin Readiness) 76 +4 ⬆

Veredito automático

🟡 Atenção: Prioriza Z2 (score 1)

HRV fora do ideal.

Reportagem matinal (via health_daily.py)

Métrica Valor Δ vs ontem Status
HRV overnight 31 ms +4 (27→31) ⬆️ amarelo (faltou 1 pro alvo ≥32)
BB max/min 75 / 29 +19 ⬆️ acima do alvo ≥70
FCrep 51 bpm −2 (53→51) ⬇️ volta ao baseline
Sleep Score 80 +2 OK
Sono total 8h57 +90 min promessa cumprida
REM 112 min +50 recuperação parassimpática profunda
Deep 70 min +21 reparação muscular
Disposição (Readiness Garmin) 76 +4 alto

O que aconteceu

  • HRV subiu 4 ms (27→31) — voltou pra zona amarela superior, faltou 1 ms pro alvo verde ≥32
  • BB max 75 — bem acima do alvo ≥70 (estava 56 ontem, +19)
  • FCrep voltou ao baseline 51 (estava 53)
  • Sono 8h57 com REM 112 min — promessa cumprida e recuperação parassimpática profunda
  • Disposição 76 — alto, coerente com o resto

Pelo modelo: HRV 31 (1 pt) + resto verde + sem modifiers = total 1 → 🟡 Atenção: Prioriza Z2

Pela leitura humana: corpo absorveu o RHR6 e está pronto. O 1 ms abaixo do verde é provavelmente ruído de medição.

LR7 hoje — gate aplicado

HRV BB max Decisão LR7
≥32 ≥65 17 km Z2 normal
30-31 ≥65 14 km Z2 conservador ⬅️ você está aqui
<30 <55 12 km leve

Veredito: 14 km Z2 conservador, FC <134, cadência alvo 160-165 spm sustentada.

A regra é OR — basta uma métrica borderline pra cortar. HRV 31 manda pro 14. Mas as condições de execução são excelentes:
- Sono profundo confirmado (REM 112 = referência)
- BB 75 sobra
- FCrep no baseline = sem stress acumulado
- Disposição alto

Por que 14 e não 17: se HRV ≥32 amanhã (e for um treino seu), pulamos o conservador no próximo gate. Hoje é o primeiro longão pós-RHR6 forte; segura a margem de segurança.

Pendências de hoje

  • [ ] LR7 14 km Z2 (FC <134, cadência alvo 160-165)
  • [ ] Hidratação 3-3,5 L
  • [ ] Proteína 150-160 g
  • [ ] Reportar sensações pós-treino
08/05/2026
sex 8 mai

Diário 2026-05-08 (sexta) — Descanso puro

Reportagem matinal

Auto-gerado por dash_today.py em 17:04 de sex 8 mai.

Métrica Valor Δ vs ontem
HRV overnight 27 ms −7 ⬇
BB max / min 54 / — −19 ⬇
FCrep 53 bpm +2 ⬆
Sleep Score 78
Sono total
REM
Deep
Light
Awake
Stress avg / max — / —
Disposição (Garmin Readiness)

Veredito automático

🟠 Descanso recomendado (score 4)

Sinais fracos: HRV, BB.

Reportagem matinal (via health_daily.py)

Métrica Valor Alvo Status
Sleep Score 78 ≥75 OK
Sono total 7h27 (REM 62 / Deep 49 / Light 337 / Awake 4) ≥8h, REM ≥70 parcial
HRV overnight 27 ms (status NONE) ≥32 abaixo
BB max/min 54 / 15 (carga +39 / desgaste 0) ≥70 / ≥30 abaixo
FCrep 53 bpm ≤53 limite
Stress avg/max 23 / 41 <20 levemente elevado
Training Readiness 72/100 ≥65 OK (mas conflita com HRV)

Trend HRV / BB / RHR desde 05/05

Data HRV BB max/min FCrep Readiness
05/05 29 29/15 34
06/05 29 69/17 51 40
07/05 34 73/30 51 56
08/05 27 ⬇️ -7 54/15 53 ⬆️ +2 72

Diagnóstico

Resposta autonômica esperada 24-48h pós-RHR6 (07/05 — 8 tiros que viraram 60s = carga ~2× a planejada).
HRV caiu 7 ms + FCrep subiu 2 + BB máximo só 54 = parasimpático ainda processando carga.
Readiness 72 mascara: sono bom + tempo de recovery elapsed → Garmin marca "ok", mas indicadores autonômicos diretos (HRV + FCrep) discordam.
Não é overtraining. É o preço do RHR6 dobrado de ontem. Descanso hoje vira mandatório.

Plano executado

  • [ ] Corrida / força — zero
  • [ ] Caminhada leve 15-20 min (opcional)
  • [ ] Hidratação 3,5 L + sódio
  • [ ] Proteína 150-160 g
  • [ ] Tela cortada 21h15
  • [ ] Dormir 22h00 (promessa renovada)

Gate pra LR7 amanhã (sábado 09/05)

Reportagem matinal de 09/05 com python health_daily.py define a sessão:

HRV BB max Decisão LR7
≥32 ≥65 17 km Z2 normal (FC <134, cadência 160-165)
30-31 55-65 14 km Z2 conservador
<30 <55 12 km Z2 leve + reavaliar semana

HRV é métrica-líder. Se amanhã ainda em 27-28 = janela de absorção precisa +24h, LR7 vira 12 km tranquilo.

Lock-in técnico mantido

Independente de distância amanhã, as 2 prioridades técnicas valem:
1. Cadência alvo 160-165 spm (não-negociável #3)
2. FC controlada na zona Z2 122-134 bpm (não-negociável #4)

07/05/2026
qui 7 mai

2026-05-07 (Quinta) — Diário

🌅 Reportagem matinal

Métrica Valor Leitura
Sleep Score 78/100 🟢 bom (não excelente)
HRV (VFC) 30 ms 🟡 gate — ontem 29, hoje 30 = pattern de 2 dias
Sono duração 6h55min 🟡 abaixo do ideal 8h+
BB min/max noite 30 / 73 min 30 sugere noite trabalhada
BB atual manhã 74 🟢 recuperou bem
FC repouso 51 bpm 🟢 baseline
Stress médio 20 🟢 baixo
Passos 81 (início do dia)

Diagnóstico: 4 verdes, 2 amarelos (HRV + sono). Sistema autonômico OK (FCrep 51, stress 20), mas HRV 2 dias seguidos <31 indica recuperação parcial. Sono curto (6h55) ajuda a explicar.

🎯 Decisão do treino RHR6

Treino prescrito: 12 × 30'' Z5 (Subida)
Decisão: 10 tiros (corte 17%)

Régua aplicada (gate fechado em 06/05):
- BB ≥60 + HRV ≥32 → 12 tiros (verde total)
- BB 55-59 ou HRV 30-31 → 10 tiros ← caso de hoje (HRV 30)
- BB <55 ou HRV <30 → 8 tiros
- BB <40 ou HRV <25 → skip + easy run Z2

Por que cortar (lógica espelho):
1. HRV dois dias seguidos abaixo de 31 = sinal autonômico real, não ruído
2. ATL 51 já alto; Z5 hoje vai dar spike
3. LR7 sábado 09/05 (17 km Z2) é o GATE CRÍTICO da meta 4h00 — preservar pernas
4. Forçar 12 hoje não aproxima de 4h00; adia ou degrada o LR7

🏃 Execução planejada

Bloco O quê Como
Aquecimento (15-20 min) Z1→Z2 progressivo FC até ~135. Últimos 3-4 min: educativos curtos (skipping baixo)
Série principal 10 × 30'' Z5 subida FC alvo pico 158-170. Não é sprint all-out — Z5 controlado. Cadência alta (~180+)
Recuperação 1:30 Z1 entre tiros Caminhada/trote leve descendo o aclive. FC <130 antes do próximo
Desaquece (10-15 min) Z1 + 5 min caminhada Sem cortar seco

Banderas pra abortar e virar Z2:
- FC pico >175 nos primeiros 2-3 tiros
- Pace na subida 30s+ acima do esperado
- Tontura, peito apertado, qualquer coisa anormal

📋 9 não-negociáveis — checklist do dia

  • [ ] Treino conforme decisão (10 tiros respeitando bandeiras)
  • [ ] Hidratação: ≥35 ml/kg = ~3,4 L hoje
  • [ ] Proteína: ≥1,6 g/kg = ~157 g
  • [ ] Sono: dormir cedo hoje (compensar 6h55) — alvo 22h00
  • [ ] Força não está prevista (3×/sem, hoje é dia de Q)
  • [ ] Reportar amanhã 08/05 (HRV principalmente — quero ver se a baseline volta pra 32+)

✅ Execução real (TCX 22795686320)

Decisão dele em campo: 8 tiros (cortou mais 2 da régua de 10 — "não quis forçar muito"). Alinhado com contrato: ele segura quando precisa segurar.

Estrutura no relógio (manual, com 2 voltas perdidas por toque acidental):

Bloco Métrica
Aquecimento 2,0 km em 14:29 (pace ~7:15/km) — Z1-Z2 ✅
Pausa de água Volta 6 — 355 m em 3:02
Tiros visíveis 6 pares (TCX) — 8 reais (cabeça do atleta)
FC pico tiros 157-159 bpm (piso da Z5: 158)
Recup HR média 132-141 bpm
Desaquece 2,17 km em 21:50 (caminhada/trote leve) ✅
TOTAL 6,77 km em 59 min, ~669 kcal
HR média ponderada ~131 bpm (Z3 médio)

Tabela tiros (6 visíveis):

# Duração lap (s) HR pico HR avg recup
1 (l4-5) 52,5 157 141
2 (l7-8) 76,0 159 138
3 (l9-10) 76,8 159 132
4 (l11-12) 77,2 158 133
5 (l13-14) 74,8 158 132
6 (l15-16) 72,0 158 135

⚠️ Correção crítica (relatada pelo atleta): os tiros foram executados em ~60s, não 30s. Voltas-tiro de 72-77s no TCX = ~60s de esforço + ~15s transição/lap. Lap manual em subida ofegante sem cronômetro visível = receita pra alongar tiro inconscientemente. Lição operacional: próxima sessão Z5 curta exige auto-lap por tempo OU treino estruturado pré-programado no Garmin.

Sensação reportada: 7/10 + "Z4 forte" (não Z5 verdadeira)

🔍 Veredito do dia (espelho — recalibrado)

O treino feito ≠ o treino prescrito. Mas o feito foi legítimo, só de outra natureza.

Dimensão Prescrito Executado
Estrutura 8 × 30s Z5 8 × ~60s Z4 forte
Stimulus fisiológico Anaeróbio aláctico / potência neural Anaerobic capacity / threshold-VO2max
Tempo Z4+ total ~4 min ~8 min (dobro)
TSS estimado ~35-40 ~65-75
Custo recuperação Baixo-moderado Médio-alto

Por que a FC pico ficou em 157-159:
1. ✅ Faz sentido pra esforços de 60s (HR tem tempo de subir até esse nível, mas não vai ao topo Z5 sem all-out)
2. ✅ Confirmado pela sensação subjetiva: "Z4 forte"
3. Em 30s reais, a FC nem teria chegado nesse pico — lag cardíaco impede

Conclusão: você fez um treino válido pra meta 4h00 (threshold work é EXATAMENTE o estímulo que serve maratona), mas com volume Z4+ dobrado vs o planejado.

O que funcionou:
- Decisão em camadas: 12→10 (régua HRV) → 8 (leitura no campo) — uso correto da escala
- Aquecimento + desaquece bem feitos
- Intensidade controlada (não foi all-out)
- Pernas reportadas em 7/10 = absorção razoável

⚠️ O que ajustar:
- PRÓXIMA SESSÃO DE TIROS CURTOS: Pré-programar treino estruturado no Garmin (workout do TrainingPeaks ou criar no Connect IQ) → relógio bipa início/fim de cada tiro, sem espaço pra interpretação
- Auto-lap por tempo (30s) é o mínimo aceitável, mas estruturado é melhor
- Se "Z4 forte ≠ Z5 prescrita" repetir em sessões com timing correto → re-testar FCmax (170 pode estar subestimado)

Implicação meta 4h00: Positiva no estímulo entregue (threshold útil), mas custo de recuperação real exige sexta MAIS leve do que planejado.

TSS estimado revisado: ~65-75 (não os ~50-55 originais)

📋 9 não-negociáveis — checklist do dia

  • [x] Treino executado conforme leitura honesta (8 tiros)
  • [ ] Hidratação: ≥35 ml/kg = ~3,4 L hoje (∗pausa de água no treino marca atenção)
  • [ ] Proteína: ≥1,6 g/kg = ~157 g
  • [ ] Sono: dormir cedo hoje (alvo 22h) — fundamental pra HRV voltar pra ≥32
  • [x] Força não estava prevista (dia de Q)
  • [ ] Reportar amanhã 08/05 — HRV é o número-chave

🔄 Recalibração pós-coleta via health_daily.py (tarde 07/05)

Hoje rodamos o pipeline novo e veio dado oficial Garmin que muda partes da leitura do dia. Honestidade total:

1. HRV: era 34, não 30

Fonte Valor
Reportado pelo atleta de manhã 30 ms
Garmin oficial (lastNightAvg) 34 ms

Trend real (não 2 dias seguidos baixos):

Data HRV overnight
06/05 29 ms
07/05 34 ms (Δ +5)

Sistema autonômico ABSORVENDO bem, não estagnado. A régua de "10 tiros" aplicada de manhã (HRV 30-31) não era o caso real — com 34 + BB max 73 + Readiness 56, o caso era régua de 12 tiros. A decisão final dele de cortar pra 8 foi conservadora demais com base no número errado.

Lição: número oficial pra acompanhar = lastNightAvg da API. Não confiar em qualquer leitura pontual da tela do Garmin que não seja esse campo. A partir de amanhã, health_daily.py traz isso pronto.

2. Cadência: 161 spm no Z2 — DELIBERADA

Bloco Cadência média Notas
Z2 warmup (laps 1-2) 161 spm (162 mediana) Picos de 170 spm
Tiros (subida) 180-198 spm Foco na ladeira
Sessão inteira 152 spm Diluído pelo cooldown lento

Comparativo histórico:

Run Cadência (média total)
RFF5 (05/05) 155 spm
RHR6 hoje — Z2 warmup 161 spm

🎯 Cruzamento com o plano de cadência (não-negociável #3):

Semana Alvo do plano Hoje
1 (atual) 153 → 158 161 — adiantado
2 158 → 162 já alcançou

🧠 O que ATLETA verbalizou (importante registrar):

"Agora isso entrou na minha mente. Junto com a questão do Z2 com frequência controlada. São as duas coisas que priorizo agora nos treinos. Tanto pro Z2, quanto pra ladeira, eu priorizei aumentar a cadência, tendo isso em mente."

Lock-in cognitivo das 2 prioridades técnicas:
1. Z2 verdadeira (FC 122-134 — não copiar erro do LR 03/05)
2. Cadência alta (153 → 170+ ao longo da temporada)

Não foi sorte de aquecimento — foi escolha consciente. Isso re-explica a sessão inteira:
- FC pico 158-159 nos tiros não foi "Z4 forte por acaso" — foi consequência de cadência ALTA na ladeira (mecânica eficiente reduz custo cardíaco no mesmo esforço muscular)
- Sessão mais inteligente do que a leitura inicial sugeria

3. Veredito recalibrado (FINAL do dia)

Trinity verde: HRV ↑, BB ↑, Readiness ↑ + cadência trabalhada conscientemente em Z2 e Z5 = dia tecnicamente bem executado.

⚠️ Mantém-se: o problema de 60s vs 30s nos tiros (lição operacional do timer) e o custo de recuperação real (~65-75 TSS) → sexta DESCANSO PURO mantido.

📈 Implicação meta 4h00: trend autonômico positivo + 2 prioridades técnicas internalizadas = você está construindo a base correta. Não está atrasado no cronograma.

📅 Próximos marcos (ajustados após correção do volume)

  • 08/05 (sex): DESCANSO PURO — não força, não corrida, mobilidade leve + caminhada curta. TSS hoje foi 65-75 (não 50-55) → recuperação não pode ser comprometida.
  • 09/05 (sáb): LR7 — 17 km Z2 verdadeira = primeiro gate grande da meta 4h00
  • Pernas devem chegar OK se sexta for descanso real
  • Reportagem matinal sábado é checkpoint crítico: se HRV <30 ou BB <55, LR7 vira 12-14 km Z2
  • Próxima oportunidade pra testar cadência sustentada em Z2 longo — alvo 160-165 spm sem sentir esforço
  • ~13/05: cleanup das pastas legadas
  • Próxima sessão de tiros curtos: treino estruturado pré-programado + auto-lap por tempo

Atualizado em 07/05/2026 (manhã + pós-treino + recalibração via health_daily.py + lock-in das 2 prioridades técnicas).

06/05/2026
qua 6 mai

Diário 06/05/2026 (Quarta-feira)

🌅 Reporte da manhã

Dados Garmin / TrainingPeaks

Métrica Valor Leitura Status
Sleep Score 80/100 Bom
Duração sono 7h10m (22:50 → 05:59) Abaixo do alvo (8h+) 🟡
Estresse médio (durante sono) 19 Razoável 🟡
Profundo 1h15m (17%) Bom (faixa 13-23%)
Leve 4h57m Normal
REM 49m (11%) Curto (alvo 20-25%) 🟡
Acordado/Inquietação 8m Excelente
FC repouso 51 bpm Match baseline
HRV (RMSSD) 29 ms Lower-end p/ 50+ (sem baseline ainda) 🟠
Body Battery (Disposição) ao acordar 41 — Baixo Não recuperou bem 🔴

Nota: HRV ainda sem baseline calibrada (precisa ~19 dias de uso 24/7, ETA ~24/05). Valor absoluto 29 ms = baixo para faixa etária, mas só será conclusivo após calibração.

Diagnóstico

  • Sleep Score 80 vs BB 41 não é contradição. Sleep Score mede qualidade dentro do sono; BB mede energia disponível total (atividade anterior + recuperação).
  • Tradução: sono razoável, mas não foi suficiente para descontar o RFF5 de ontem + carga acumulada (ATL 51). Corpo ainda processando.
  • REM 49 min + estresse 19 reforçam: regulação autônoma em débito leve.
  • Bate com o quadro PMC: build produtivo (TSB -13), ATL alto, corpo pedindo prudência.

🎯 Ajuste do plano (originalmente: easy 5 km Z1-Z2 + Sessão B força)

Recomendação adotada

Opção A — Adaptação suave:
- Manhã: pular corrida; caminhar 20-25 min ao ar livre (luz solar para circadiano + BB recarregar)
- Tarde/noite: Sessão B força com 70-75% das cargas habituais (mantém estímulo, reduz punição) — foco em técnica
- Hidratar bem (~3 L com sódio nas refeições)
- Dormir 8h+ hoje à noite — meta inegociável

Não fazer

  • ❌ Z2 ou Z3 hoje
  • ❌ Carga máxima na força (risco de lesão sobe com HRV baixo)
  • ❌ Café depois das 14h

Plano para próximos dias

  • Quinta 07/05 (RHR6): se BB <55 e HRV <30 → reduzir para 8 tiros em vez de 12
  • Quinta 07/05 (RHR6): se BB ≥60 e HRV ≥32 → executa normal
  • Prioridade da semana: chegar descansado no LR7 sábado (mais importante que matar RHR6)

📌 Regra geral acordada para a temporada

Body Battery (acordando) Conduta
<50 Dia de prudência: reduzir volume/intensidade
50-69 Treino normal, sem extra
70+ Verde para sessão de qualidade (intervalado, longão)

✅ Decisões e pendências

  • [x] Decisão: seguir Opção A (pular corrida, caminhada + força reduzida) — confirmado pelo usuário
  • [ ] Caminhada 20-25 min ao ar livre (manhã ou início da tarde, com luz solar)
  • [ ] Sessão B força à tarde/noite — cargas a 70-75% do habitual, foco em técnica
  • [ ] Hidratação ~3 L com sódio nas refeições
  • [ ] Dormir 8h+ hoje à noite (meta inegociável)
  • [ ] Reportar à noite: como foi o dia, sensação subjetiva, BB ao deitar
  • [ ] Amanhã cedo: novo reporte (Sleep + BB + HRV) antes do RHR6 — define se RHR6 vai a 12 tiros (verde) ou 8 (amarelo)


🔧 Update da tarde (16:05) — Pipeline Garmin operacional

Setup técnico do pipeline Python concluído com sucesso em sessão guiada passo-a-passo. Marcos:

O que foi feito

  1. ✅ Senha Garmin rotacionada (era exclusiva do Garmin)
  2. ✅ Python 3.13.9 confirmado
  3. .venv criado e ativado em pipeline/
  4. ✅ Dependências instaladas (~60 pacotes via python -m pip install -r requirements.txt)
  5. .env criado com credenciais novas
  6. python conn.py retornou dados em tempo real (passos, FCrep, BB, atividades)
  7. streamlit run dashboard.py abriu dashboard com mapa, FC, zonas Karvonen, cadência, pace, watts

Bug encontrado e resolvido

Pegadinha do Windows + Python 3.13: o python -m venv .venv não criou o pip.exe dentro do venv automaticamente. pip install ia parar no Python global. Correção: usar sempre python -m pip install ... em vez de pip install .... Documentado na memory project_pipeline_garmin.md para sessões futuras.

Dados novos surgiram em conn.py (que não tinham na manhã)

  • Body Battery min/max do dia: 17 / 69
  • Min 17 = quase zero na madrugada (esgotamento total após RFF5 + carga acumulada)
  • Max 69 = pico durante sono (recuperou 52 pontos)
  • Acordou em 41 = perdeu 28 pontos do peak antes de checar
  • Reforça que a Opção A foi a escolha certa — começar o dia em 17 e tentar Z2/Z3 seria desastre

Warnings 429 em conn.py

Garmin rate-limita logins via mobile API. A garminconnect tenta primeiro mobile, falha com 429, e cai num fallback que funciona. Não é blocker. Se virar problema persistente, alternativa é migrar pra garth.

Próximos passos do pipeline

  • Após 12/05 (HRV diário aparecendo) → criar health_daily.py (coleta automática + SQLite)
  • Após 19/05pmc.py + tp_import.py
  • Após 24/05 (baseline HRV pronta) → scoring.py + agendamento Windows + Telegram
  • C:\Python\Garmin\ original NÃO foi deletada ainda — esperar 1 semana de uso do pipeline novo antes de remover

Diário atualizado em 06/05/2026 16:05 após setup do pipeline.


🚀 Update da tarde (17:00-18:00) — Migração estrutural + meta 4h00

1. Migração de pasta: pipeline/Pesq_Jr/RunTechOps/

A pipeline Python foi migrada da subpasta 2026-05-04-.../pipeline/ para o top-level de Pesq_Jr/, virando RunTechOps/ (nome escolhido: fusão de "RunTech" + "DevOps Ops"). Razão: pipeline é genérico — serve futuras temporadas, não só 2026.

Executado:
- Cópia de todos os arquivos (exceto .venv)
- Update de paths em README.md e SETUP.md
- .venv recriado em RunTechOps/ (Python 3.13.9)
- Deps instaladas via python -m pip install -r requirements.txt
- conn.py, dashboard.py, lastrun.py 5 testados — todos funcionando

2. Refatoração do lastrun.py

Reescrito do zero com 5 melhorias:
- Lê credenciais do .env (sem prompt interativo)
- Aceita quantidade via argv: python lastrun.py 5
- Salva em Atividades Baixadas/ (não na raiz)
- Skip idempotente de TCXs já existentes
- Resumo final (baixados / já existiam / não-corridas)

Teste com python lastrun.py 5: 3 corridas baixadas (incluindo o RFF5 de ontem), 2 não-corridas ignoradas (sessões de força), 0 duplicadas.

3. Conn.py revelou dado crítico — BB do dia

Body Battery min/max: 17 / 69
  • Min 17 = madrugada (RFF5 da véspera + ATL acumulado)
  • Max 69 = pico durante sono (recuperou 52 pontos)
  • Você acordou em 41 (perdeu 28 do peak)

Reforço da Opção A como decisão correta — começar o dia em 17 + Z3 = receita pra desastre.

4. Apagada pipeline/ antiga (conteúdo) — casca vazia restante

Conteúdo da pasta antiga apagado. Casca vazia mantida porque OneDrive.Sync.Service (PID 11088) segura handle no diretório mesmo com sync pausado. Deletar manualmente em próximo reboot.

5. 🎯 META MARATONA UPGRADE: 4h30 → 4h00

Você declarou: "meu objetivo é fazer a maratona em 4hs. quero fazer o possível e até o impossível pra isso acontecer. me ajude. vamos juntos."

Análise feita com Riegel n=0,86 (50+):
- 21K #2 em 2h05 → maratona ~3h46 (4h00 com folga) ✅
- 21K #2 em 2h10 → maratona ~3h55 (4h00 com sobra de 5 min) ✅
- 21K #2 em 2h15 → maratona ~4h05 (estoura 4h00) ⚠️

21K #2 (26/07) virou o teste decisivo. Se atingir 2h05-2h10 → 4h00 viva.

6. Contrato de coaching firmado (3 cláusulas)

  1. Espelho, não cheerleader — números crus, sem suavizar
  2. Quando coach diz "segura aí", segura — já validado hoje (BB 41 → Opção A)
  3. Se 4h00 ficar inviável (5+ das 9 não-negociáveis no vermelho), conversa honesta sobre reorientação

Você fechou: "topo o contrato, fechado!"

7. As 9 não-negociáveis pra meta 4h00

(salvas em project_temporada_corrida_2026.md — auditadas a cada reporte diário)

  1. Peso 92-94 kg até 30/08 (-4 a -6 kg)
  2. CTL 62-68 na semana de prova
  3. Cadência 170+ spm (hoje 153)
  4. Z2 verdadeira em TODOS os longões
  5. Longão de 32-34 km na semana 14
  6. 4 sessões de marathon pace (5:41) nas semanas 12-14
  7. Sono médio ≥7h30 (móvel 7d)
  8. HRV "Balanced" em 80%+ dos dias após 24/05
  9. Sem lesão

8. Sessão exportada via /session-output

Arquivo gerado em .sessions-output/Jr/sessao-2026-05-06-17-30-dfa9290a.md (271 KB, modo A). Sumário + tags preenchidos. Índice atualizado.

9. Claude Code project migrado de Pesq_JrRunTechOps

Você fechou a sessão em Pesq_Jr/ e abriu nova em RunTechOps/. O projeto Claude Code (memórias + transcript + settings) foi migrado:
- Memórias: ~/.claude/projects/...-JR-Pesq-Jr-RunTechOps/memory/ (9 arquivos .md + MEMORY.md)
- Settings novo (RunTechOps/.claude/settings.local.json) inclui additionalDirectories: Pesq_Jr/ — acessa o protocolo daqui sem fricção
- Pasta antiga em ~/.claude/projects/...-Jr-Pesq-Jr/ mantida como backup até ~13/05


📊 Recapitulação do dia (numérica)

Frente Quantificação
Treino físico 1 caminhada planejada (a executar) + Sessão B força a 70-75% (a executar)
Pipeline 60+ pacotes Python instalados, 3 scripts testados, 1 refatorado, 1 nova pasta criada
Documentação Diário, SETUP.md, README atualizado, sessão exportada (271 KB)
Memórias 9 arquivos consolidados, 1 nova (feedback_contrato_coach_4h00.md), 1 renomeada (project_runtechops.md), 1 (project_pipeline_garmin.md) deletada
Decisões Opção A pra hoje, meta 4h00 (de 4h30), contrato de coaching firmado

⏰ Pendências físicas ainda do dia

  • [ ] Caminhada 20-25 min com luz solar (urgente — sol já caindo)
  • [ ] Sessão B força à noite (70-75% das cargas)
  • [ ] ~3 L hidratação com sódio
  • [ ] Dormir 8h+ (deitar antes de 23:00)
  • [ ] Reporte à noite: sensação subjetiva + BB ao deitar

Diário fechado em 06/05/2026 ~18:00. Dia técnico massivo num "dia leve" pelo BB. Próximo reporte amanhã 07/05 cedo via python conn.py.

05/05/2026
ter 5 mai

Diário — Terça 05/05/2026

Semana 1 da temporada | Dia 2 da semana de treino | 32 dias até o 21K #1 (Meia Maratona do Rio, 06/06)


📊 Estado de chegada (manhã)

TrainingPeaks (PMC) — fonte oficial confirmada via screenshot

Métrica Valor Leitura
Condicionamento (CTL) 37 Base razoável
Forma (TSB) -13 Fadiga produtiva (-10 a -30 = ganhando fitness)
Fadiga (ATL) 51 Alta — carga recente significativa
Status TP "Mantendo a Forma" Zona ótima — não sobrecarregado, não perdendo fitness

Sono

  • 7h30 (queria 8h-8h30, mas tolerável)

Outros

  • Garmin NÃO estava no pulso (será mudado a partir de hoje — ver decisões abaixo)

🔄 Recalibração crítica

Os números que apareceram ontem (04/05) — TSB +39 / CTL 31 / ATL 14 — estavam desatualizados ou de outra tela. Os reais e atuais são os de hoje (TSB -13 / CTL 37 / ATL 51).

Implicações da recalibração

Item Leitura ontem (errada) Leitura hoje (correta)
Estado "Destreinado, fresco demais" Já em build, fadiga produtiva
Ramp rate seguro +5-7 CTL/sem +2-4 CTL/sem (mais conservador)
CTL alvo pré-21K #1 44-46 (pico) 42-45 (mais realista)
Risco de overreaching Baixo Médio — ATL 51 é alto, vigiar

O que NÃO mudou

  • ✅ Longão tem que ser em Z2 verdadeiro (122-134 bpm)
  • ✅ 21K #1 a 90% (não PR) — agora com ainda mais razão
  • ✅ Macrociclo da temporada (3 provas) — segue válido
  • ✅ Suplementação, força 3×, modalidades — tudo igual

📝 Reporte do dia anterior (segunda 04/05)

  • Força MMII pesado (Sessão A) executado mesmo após longão de domingo (17 km)
  • Sensação: "muito melhor do que eu imaginava"
  • Sinal positivo: corpo aceita carga em fadiga moderada (adaptação fisiológica boa)

🏃 Treinos da semana (planejados pelo TrainingPeaks)

Terça 05/05 — RFF5 (hoje)

  • Estrutura: 5' Z1 + 25' Z2 + 12' Z3 + (5' desaquec)
  • Duração: 42 min | Distância: ~6 km | TSS: 54
  • Tipo: progressive run
  • Avaliação: apropriado para terça pós-força MMII pesada (mais inteligente que intervalado original)

Atenção:
- Pace prescrito de Z2 (6:40-7:26) é mais rápido que Z2 real por FC (122-134 bpm = pace ~6:55-7:15)
- Olhar FC durante o treino: se passar de 134 no bloco "Z2", desacelerar para 7:00-7:10
- Z3 alvo: 138-145 bpm (pace 6:25-6:35 deve sair natural)

Quinta 07/05 — RHR6 (12×30" Z5 em subida)

  • Estrutura: 5' Z1 + 5' Z2 + 12×(30" Z5 + 1:30 Z1) + 5' Z1
  • Total: ~39 min, 5-6 km
  • Tipo: tiros curtos em subida (potência neuromuscular)

Avaliação: ótimo para perfil de 98 kg + 54 anos. Subida = menor impacto articular vs sprint plano, mas mesmo recrutamento de fibras rápidas.

Como executar:
- Inclinação 4-6%
- Esforço "hard controlado" (RPE 8-9), não sprint total
- Cadência alta, passos curtos
- Ombros relaxados, leve inclinação para frente
- Esteira em 5-7% se não tiver subida disponível

Sábado 09/05 — LR7 (17 km Z2) — 🔴 PRIMEIRO LONGÃO Z2 VERDADEIRO

  • Estrutura: 2 km Z1 + 12 km Z2 + 1 km Z1 (matemática soma 15 km, mas título diz 17 km — verificar com plano)
  • Tipo: longão de base aeróbia

🔴 Regra de ouro: seguir FC, não pace. Se passar de 134 bpm, desacelerar mesmo que pace caia para 7:10-7:20.

Por que isso é não-negociável: o motivo do TSB +39 errado foi exatamente correr tudo em Z3 achando que era Z2 (longão a 6:33/140 bpm). Mais um longão em Z3 = paga em ATL e não constrói CTL.

⚠️ Cluster sex força + sáb longão

Dia Treino Risco
Sex 08/05 Sessão C força (funcional, 1h) Moderado em MMII
Sáb 09/05 Longão 17 km Z2

Mitigações:
1. Força sexta de manhã/tarde (não à noite) — máximo gap
2. Sexta noite: sono ≥ 8h, hidratação 4L, jantar com 100g+ carbo
3. Sábado manhã: 2h antes — café-da-manhã com 80-100g carbo
4. Se pernas pesadas no sábado: pace 7:15-7:25, FC < 130. Não força.


✅ Decisão tomada hoje: usar Garmin 24/7

Modelo: Forerunner 965 (top de linha — tem TODAS as métricas necessárias)

Razão: sem Garmin 24/7, perdia 3 das 4 fontes do score composto diário (HRV Status, Body Battery, Sleep Score). Restava só TSB do TrainingPeaks — leitura cega para sinais precoces de overreaching.

Hábito antigo: esquecimento/preguiça de colocar.
Compromisso novo: vai usar direto a partir de 05/05.

Cronograma de dados que vão aparecer

Janela Período O que fica disponível
Imediato (05/05) Hoje Body Battery, Sleep Score, FC repouso, FC média 24h
Após 3-7 noites 08-12/05 HRV diária (RMSSD bruto), Training Readiness
Após 14 noites ~19/05 Tendências de HRV se formam
Após 19 noites (BASELINE) ~24/05 HRV Status com classificação
Após 30 dias ~04/06 Status confiável + Training Status mais preciso

Timing crítico: baseline HRV pronto ~24/05 = 2 dias antes do início do taper do 21K #1. Vai entrar na semana decisiva já com leitura confiável.

To-do Garmin Connect (10 min)

  • [ ] Cadastrar evento "Meia Maratona do Rio" 06/06/2026, 21,1 km
  • [ ] Cadastrar evento "Maratona" 30/08/2026, 42,2 km
  • [ ] Configurar zonas de FC manualmente:
  • Z1: 111-122 | Z2: 122-134 | Z3: 134-146 | Z4: 146-158 | Z5: 158-170
  • [ ] Ativar HRV Status (Settings → Health)
  • [ ] Pulse Ox apenas durante sono (Settings → Sensors → "Sleep Only")
  • [ ] Considerar pulseira de silicone macio para dormir (se desconforto)

Dicas práticas de uso 24/7 com o 965

Item Recomendação
Bateria 14-18 dias real. Carga rápida: 15 min = 1 dia
Quando carregar No banho ou trabalhando. NUNCA à noite (perde HRV)
Pulseira Firme mas confortável — sensor ótico precisa contato
Dormir com ele Trocar para silicone macio se a pulseira incomodar

🐍 Pipeline Python (garth) — adiado

Não vale montar antes de 24/05 (baseline HRV pronta). Cronograma:

  • 05-23/05: Garmin coletando dados, usar app + Connect mobile
  • 24-31/05: primeira coleta de teste com garth
  • 01-13/06: dashboard básico antes do 21K #1
  • Jun-jul: ferramenta madura para o bloco maratoniano

📤 Formato de reportagem a partir de agora

Sempre que reportar treino/dia, mandar os 6 dados:

  1. TSB / CTL / ATL (TrainingPeaks)
  2. Sleep Score + horas de sono (Garmin)
  3. Body Battery ao acordar (Garmin)
  4. HRV (a partir de ~24/05, com Status; antes só o número RMSSD)
  5. FC média do treino (não só pace)
  6. Sensação subjetiva 1-10

🎯 Pra reportar depois do treino de hoje (terça à noite)

  • FC média de cada bloco (Z1 / Z2 / Z3)
  • Pace efetivo de cada bloco
  • Sensação geral 1-10
  • Se conseguiu manter Z2 no limite ou se a FC subiu

🎯 Pra reportar depois do treino de quinta (RHR6)

  • Quantos tiros completou (de 12)
  • Sensação no 8º vs 12º
  • Inclinação da subida usada
  • Pace médio nos tiros

🎯 Pra reportar depois do longão de sábado (o mais crítico)

  • FC média do bloco Z2 (alvo 122-134)
  • Pace médio do bloco Z2
  • Sensação 1-10
  • Como acordou sábado pós-força sexta
  • TSB no TrainingPeaks antes de sair

Esse longão é o teste mais importante da semana 1. Se sair em Z2 verdadeiro, semana foi sucesso.


💡 Curiosidade discutida hoje (longão e meia de compressão)

Diferença entre meia DURANTE vs DEPOIS do treino

Quando Mecanismo Função
Durante Redução de oscilação muscular + suporte mecânico Atenua dano que apareceria 24h depois
Depois Bombeamento venoso passivo Acelera clearance de CK, lactato, mioglobina

Não é "ou", é "e": usar nas duas pontas é a versão completa.
- Bota no longão de domingo
- Mantém pernas até hora do almoço
- Troca por roupa normal à tarde

Bota pneumática (NormaTec/Hyperice): veredicto = NÃO vale para o perfil dele agora. Pra prova de 33 dias é overkill. Avaliar pós-prova se mantiver volume 50+ km/sem. Marca chinesa (Aerlang/Joymax R$ 1,5-3k) faz 80% do que NormaTec faz por 1/6 do preço.


🌙 Update de noite — Execução do treino RFF5

📋 Atividade

  • Nome: Vitória — RFF5 Corrida — 25' Z2 + 12' Z3
  • Hora: 18:27
  • Distância: 6,03 km
  • Tempo total: 42:43 (em movimento: 42:41 — sem paradas)
  • Pace médio: 7:05 /km
  • Pace ajust. inclinação: 7:04 /km (terreno plano)
  • Calorias: 555

🎯 Plano vs Execução por bloco

Bloco Tempo Distância Pace alvo (Karvonen) Pace efetivo Status
Aquec Z1 5:00 0,67 km 7:30-8:00 7:29
Z2 (25') 25:00 3,48 km 6:55-7:15 7:11 ✅ Bullseye
Z3 (12') 12:00 1,80 km 6:25-6:50 6:40 ✅ Bullseye
Desaq (gravado) 0:43 0,09 km 8:22 — pausa social
Desaq (real, caminhada home) ~3 min Z1 caminhada ✅ não gravado

📊 Splits (variação interna)

Bloco Z2 — variação 14s entre splits (controle bom):
- km 1: 7:18
- km 2: 7:04
- km 3: 7:08
- últ. 480 m: 7:17

Bloco Z3 — consistente:
- km 1: 6:43
- últ. 800 m: 6:37

❤️ Cardíaco

Métrica Valor Status
FC média total 134 bpm Limite Z2/Z3 — perfeito p/ treino misto
FC máxima 148 bpm Z4 baixa pontual — não estourou
FC recuperação 1' 31 bpm Excelente (>30 = topo)

🔥 Efeito de treino e carga

Métrica Valor Análise
Principal benefício Base (Aeróbico baixo) ✅ Constrói CTL aeróbio
Efeito aeróbico 3,1 / 5 Melhoria efetiva
Efeito anaeróbico 0,0 Não estourou
Carga de exercício 84 Faixa "ótima" (50-150)
Stamina 99% → 82% (-17 pts) Sobrava tanque
Potência média 324 W Linha base p/ comparação futura
Potência máxima 517 W Pico Z3

🦵 Dinâmica de corrida (forma)

Métrica Seu valor Faixa ideal Status
Cadência média 153 spm 170-180 🔴 Baixa demais
Cadência máxima 171 spm Você consegue quando acelera
Tempo contato solo 313 ms <250 🔴 Pobre (>305 = pobre)
Oscilação vertical 8,5 cm <7,5 🟡 Médio
Proporção vertical 9,2% <8,6% 🟡 Razoável
Comprimento médio passo 0,92 m Compensando cadência baixa

🧠 Sensação subjetiva

10/10 — corpo respondendo bem à carga acumulada da semana. Sinal de adaptação saudável, não de overreaching.

📈 PMC (TrainingPeaks)

Métrica Manhã Pós-treino Variação
Condicionamento (CTL) 37 37
Forma (TSB) -13 -13
Fadiga (ATL) 51 51

PMC estável: TSS estimado ~54 absorvido pela média de 7d sem mover a agulha. Coerente.

🏆 Veredicto: execução cirúrgica

Você rodou pelas suas zonas reais (Karvonen FCmáx 170 / FCrep 51), não pelas zonas genéricas que o TrainingPeaks prescreveu (que assumiam pace mais rápido).

  • Z2 prescrito pelo TP: 6:40-7:26 → você ficou em 7:11 (correto p/ não entrar em Z3)
  • Z3 prescrito pelo TP: 6:10-6:35 → você ficou em 6:40 (5s mais lento que limite TP, mas dentro da SUA Z3 real)

Comparativo com o longão de domingo:

Treino Distância Pace FC média Zona real
Longão dom 03/05 17 km 6:33 140 Z3 médio
RFF5 hoje 05/05 6 km 7:05 134 Z2/Z3 controlado

📝 Notas por aspecto

Aspecto Nota
Estratégia (FC vs pace) 10/10
Z1 (aquecimento) 9/10
Z2 (controle de pace e FC) 10/10
Z3 (controle dentro da zona) 10/10
Variação interna dos blocos 9/10
Desaquecimento 9/10 (corrigido — caminhada de 3 min pra casa cumpriu a função)
Geral 9,5/10

🔧 Pontos a trabalhar

  1. 🔴 Cadência (PRIORITÁRIO) — subir gradualmente de 153 → 170+ spm. Para 98 kg + 54 anos, é a alavanca mais importante de:
  2. Prevenção de lesão (menos impacto articular)
  3. Economia de corrida (3-5% melhor com +10-15 spm)
  4. Em maratona de 4h30, equivale a ~10-15 min de ganho

Como: métronomo (apps Run Tempo, Polar Beat) ou playlist Spotify "Running 170 BPM" em 1 corrida easy por semana, alvo:
- Sem 1: 153 → 158
- Sem 2: 158 → 162
- Sem 3: 162 → 165
- Sem 6+ (pós-21K #1): 165 → 170

  1. 🟢 Desaquecimento — você fez certo (3 min caminhada pra casa após o Z3). Só não dê pausa no relógio entre o esforço e a caminhada de retorno — deixa gravando até chegar em casa. Os dados do desaquec são úteis para análise (queda gradual de FC, tempo total de exercício real). Vai melhorar suas métricas no Garmin sem mudar o que você já faz na prática.

📤 Dados pendentes (chegam manhã 06/05)

Quando acordar, o Garmin terá calculado:
- [ ] Sleep Score + horas dormidas
- [ ] Body Battery ao acordar
- [ ] HRV (RMSSD da noite)

Esses 3 fecham a leitura completa do dia. Sensação 10 + dados objetivos = diagnóstico final de "build saudável" ou "fadiga oculta".


Diário gerado em 05/05/2026. Update de noite anexado após execução do RFF5 (~22h). Próxima sessão: 06/05 manhã com os 3 dados de saúde da noite.

Glossário

Definição e contexto dos termos técnicos usados no dashboard. Clique em qualquer card da aba HOJE pra pular direto pro termo correspondente.

HRV Overnight

Indicador autonômico

HRV (Heart Rate Variability) = a variação dos intervalos entre batimentos cardíacos. Cada batimento não é metronômico — entre um e outro existem microvariações de milissegundos. HRV é o desvio-padrão dessas variações.

O Garmin mede durante o sono ("overnight") porque é o sinal mais limpo do dia: sem ruído de movimento, café, estresse mental ou comida.

O que significa

  • HRV alta → sistema parassimpático dominando → corpo recuperado, pronto pra absorver carga
  • HRV baixa → sistema simpático dominando → corpo em modo de defesa, ainda processando estresse

O que influencia (em ordem de impacto)

Fator Efeito Latência
Álcool −20 a −40% mesma noite
Treino intenso (Z4-Z5) −10 a −25% 24-48h
Doença incipiente −15 a −30% 24-48h ANTES dos sintomas
Sono curto (<6h) ou ruim −10 a −20% imediato
Refeição pesada perto de dormir −5 a −15% mesma noite
Cafeína após 14h −5 a −10% mesma noite
Desidratação −5 a −15% mesma noite
Estresse mental forte −5 a −20% mesma noite
Sono profundo (REM + Deep altos) +5 a +15% imediato
Z2 bem dosado neutro / levemente positivo

Faixas pra atletas amadores 50+

  • Saudável típico: 25-50 ms
  • Alvo deste dashboard: ≥32 ms
  • Crítico (precaução): <26 ms (gate vermelho)

Como subir

Alavancas grandes: dormir 8h+ com REM ≥70 min · cortar álcool · última refeição 3h antes de deitar.
Alavancas médias: hidratação contínua · respiração 4-7-8 antes de dormir · cafeína cortada após 14h.

Body Battery (BB)

Reserva de energia

Body Battery (BB) é uma estimativa proprietária do Garmin que combina HRV, FCrep, qualidade de sono e atividade física pra estimar o quanto de "bateria" o corpo tem disponível, numa escala 0-100.

Como ler

  • 0-25: baixíssima — corpo precisa de descanso real
  • 25-50: baixa — opere em volume reduzido
  • 50-70: moderada — treino normal OK
  • 70-100: alta — pronto pra carga maior

O que sobe

  • Sono de qualidade (especialmente REM + Deep)
  • Períodos de relaxamento (HRV alta durante o dia)
  • Refeição balanceada
  • Hidratação

O que desce

  • Atividade física (proporcional à intensidade — Z5 derruba ~25 pts em 24h)
  • Estresse mental medido (Garmin estima via HRV diurno)
  • Refeições pesadas (digestão consome bateria)
  • Sono ruim
  • Álcool

Métricas mostradas no dashboard

  • BB MAX: o pico que você atingiu nas últimas 24h. Geralmente atingido logo após acordar.
  • BB MIN: o vale. Geralmente próximo da hora de dormir.
  • Carga / Desgaste: quanto subiu e quanto baixou no dia.

Alvo prático

Pra um treino "normal", quero acordar com BB MAX ≥65. Pra longão ou intervalos pesados, ≥75. Abaixo de 50 = sinal pra reduzir carga ou descansar.

FC Repouso (FCrep)

Indicador cardiovascular

FC Repouso (FCrep) = frequência cardíaca em repouso, medida pelo Garmin durante períodos de baixa atividade (geralmente nos primeiros minutos após acordar ou em momentos de inatividade prolongada durante o dia).

Por que importa

A FCrep é uma janela direta pro estado autonômico crônico. Diferente da HRV (que oscila bastante dia a dia), a FCrep é mais estável — variações de 2-3 bpm são significativas.

Como ler (relativo ao SEU baseline)

  • No baseline ou abaixo: corpo recuperado, treino tolerável
  • +2 a +4 bpm vs baseline: sinal de fadiga acumulada ou estresse incipiente
  • +5 ou mais: sinal forte — pode ser overtraining, doença chegando, dívida de sono, ou desidratação

O baseline pro este dashboard

51 bpm — calibrado a partir do seu histórico Garmin. O alvo é manter ≤53 bpm na manhã.

O que sobe a FCrep (sem ser benéfico)

  • Doença chegando (frequentemente sobe 3-5 bpm 24-48h ANTES dos sintomas)
  • Desidratação
  • Fadiga acumulada
  • Álcool na noite anterior
  • Refeição muito perto de dormir
  • Estresse psicológico crônico
  • Calor / quarto quente

O que desce a FCrep (saudável)

  • Adaptação aeróbica progressiva (1-3 bpm ao longo de meses de Z2 disciplinado)
  • Sono regular e profundo
  • Hidratação adequada
  • Resolução de inflamação

Sinal de alerta

Se FCrep ficar ≥56 bpm por 2+ dias seguidos sem causa óbvia (treino pesado recente), considerar: pode ser doença subclínica. Recuar volume + observar.

Disposição (Garmin Readiness)

Score composto Garmin

Training Readiness é o score 0-100 do Garmin que tenta resumir num número só "como seu corpo está pra treinar hoje". Combina:

  • HRV overnight
  • Qualidade do sono (duração, fases)
  • Recovery time pendente do último treino
  • Estresse acumulado
  • Body Battery atual

Como ler

  • 0-25: baixa — descanso recomendado
  • 25-50: moderada — treino leve OK
  • 50-75: boa — treino normal
  • 75-100: alta — pronto pra carga ou intensidade

Por que NÃO é a métrica-chefe

Por ser composto e proprietário, Readiness pode mascarar sinais discordantes. Exemplo real seu: dia 09/05 mostrou 76 (alto), mas HRV estava 31 (1 abaixo do alvo). O score Garmin se baseou no sono bom + tempo desde último treino, ignorando que o autonômico ainda não estava 100%.

Regra prática: quando Readiness e HRV/FCrep discordam, prefira HRV+FCrep como verdade. Readiness é confirmatório, não decisivo.

Quando Readiness é útil

  • Como sanity check rápido nos dias em que você está com pressa
  • Pra ver tendência ao longo da semana (se média sobe/desce)
  • Pra explicar o porquê de uma queda (Garmin lista os fatores que pesaram)

Sono / Sleep Score

Recuperação fisiológica

Sleep Score é o score Garmin (0-100) que avalia a qualidade do sono combinando duração total, distribuição entre fases (REM/Deep/Light/Awake) e respostas autonômicas durante o sono.

Faixas

  • <60: ruim — sono insuficiente ou fragmentado
  • 60-74: moderado — funcional mas sem otimização
  • 75-89: bom — atende necessidades básicas
  • ≥90: excelente — recuperação ótima

Fases do sono — o que cada uma faz

Fase % típico Função
REM 20-25% Consolidação de memória, aprendizado motor, regulação emocional
Deep (N3) 15-20% Recuperação física, hormônio do crescimento, reparação muscular, imunidade
Light (N1+N2) 50-60% Maior fatia, transição entre fases
Awake <5% Despertares breves — quanto menos, melhor

Alvos pra atletas

  • Total: ≥8h (480 min) — atletas amadores em fase de carga precisam mais que pessoa sedentária
  • REM: ≥70 min (≥1h10) — crítico pra adaptação de aprendizado motor e recuperação cognitiva
  • Deep: ≥60 min (≥1h00) — onde a recuperação muscular acontece de verdade
  • Awake: <30 min — fragmentação > 30 min indica sono ruim

O que sabota o sono

  • Cafeína após 14h
  • Álcool (derruba REM violentamente — você dorme, mas não recupera)
  • Tela com luz azul até a hora de deitar
  • Quarto quente (>21°C)
  • Treino intenso < 3h antes de dormir
  • Refeição pesada < 2h antes de dormir
  • Estresse mental não-processado

O que ajuda

  • Mesma hora de deitar e acordar (regularidade > duração)
  • Quarto frio (18-19°C) e escuro
  • Exposição ao sol pela manhã (regula melatonina à noite)
  • 30-45 min sem tela antes de deitar
  • Respiração 4-7-8 ao deitar

Veredito automático

Lógica do dashboard

O veredito que aparece no topo da aba HOJE é gerado por uma regra interna que combina HRV, BB, FCrep e Sleep Score. Não é mágica nem ML — é uma soma de pontos baseada em limiares calibrados pra você.

Como funciona

Cada métrica vira pontos:

Métrica 🟢 0 pts 🟡 1 pt 🔴 2 pts
HRV overnight ≥32 ms 26-31 ms <26 ms
BB max ≥65 50-64 <50
FCrep ≤52 bpm 53-54 ≥55
Sleep Score ≥75 60-74 <60

Modificadores adicionais:
- HRV caiu ≥5 ms vs ontem → +1 ponto
- FCrep subiu ≥3 bpm vs baseline 51 → +1 ponto

NULL = métrica é excluída do score (não soma 0, não soma 2 — é ignorada).

Mapa pontos → veredito

Total Cor Headline
0 🟢 verde Pronto pra treinar
1-2 🟡 amarelo Atenção: prioriza Z2
3-4 🟠 laranja Descanso recomendado
5+ 🔴 vermelho Corte forçado

Se < 2 métricas avaliáveis (muitas NULL), veredito vira ⚪ cinza "Dados insuficientes".

Limitações importantes

  • A regra não conhece o contexto do dia. Se você dormiu mal de propósito (ex: viagem) ou treinou pesado por estratégia, o score vai parecer ruim mas pode estar tudo bem.
  • A regra é conservadora. Em dia borderline (HRV 31), ela manda "atenção". A leitura humana pode ser "tá tudo bem, só o sensor pegou ruído".
  • O HRV pesa muito. Se cair 5+ ms, dá +1 modifier mesmo se valor absoluto ainda for OK. É proposital — quedas bruscas são mais informativas que valores absolutos.

Override manual

Você pode forçar o veredito via CLI:

python dash_today.py --verdict "Hoje só caminhada" --color amber

Útil pros 10% dos dias em que você sabe algo que a regra não sabe.