← Ukesrapport-indeksen

Blokkeval — Uke 30, 2026 (20.–26. juli)

Skrevet: 2026-07-27 · Fase: Bygg uke 1 — bane+gym tilbake; første uke i frossen v4-original u30–42 · Beslutning: GRØNN

Ferskhet: activities.json skrevet 27.7 kl. 07:47 (etter distansekorreksjonen under), wellness.json 27.7 kl. 06:24 — fersk. Drifts-frys 2026-W30.json finnes (fryst 19.7 kl. 09:27) og er identisk med frossen original u30 (102 km · 2Q · langtur 34) — målt mot den.

Oppfølging: u29 var GRØNN, ingen GUL/RØD-handling å følge opp. T2.5-konsekvensen (man = KONTROLL #2 5×2000 @ 3:52 m/ Lt drag 2+5) ble gjennomført som spesifisert, og pace@128-målingen porten ba om ble tatt tir/ons i normaltemp (11,9 °C).

Skjema

#PunktKildeverdiStatusKommentar
1Volum100,1 km vs plan 102 (−1,9 %); 7 løp, ingen hiking🟢innenfor ±10 %; tir 6,0 vs 11 hentet inn ons/fre/søn
2Kvalitet antall+format2/2: man KONTROLL #2 5×2000 @ 3:52 (skår 8,7) · tor 45/15 × 20 mølle → 6×1000 utendørs I4 3:39 snitt, progressivt 3:39→3:34 (skår 8,1)🟡Q2 byttet format, arena og intensitetsklasse (plan: kontrollert I3 15,0→16,5 km/t, «IKKE full topp»). Andre uke på rad at Q2 flyttes opp (jf. 17.7) — R1-aksen. Ingen to harde dager på rad: tor→lør = 48 t
3Dragsnitt + laktatI3 vektet 3:52 (10 km) · I3+I4 3:47 (16 km). Kontroll #2: Lt(2) 3,2 · Lt(5) 2,5 mot forventet 2,6–3,0🟡I3-dosen er i u30–31-båndet 3:50–3:52 (brief §8/101). Lt(2) 3,2 over forventningskolonnen, men under regelterskelen 3,3 → 3:52-dosen holdes. Drag 2→5 falt 0,7 — motsatt av clearance-flagget
4K6-akkumulatoraktiv fra u31
5Langtur32,19 L1 Rolig volum, dcp −3,36 %, skår 9,5 Sterk; fylling ikke logget (plan 80 g/t, trapp 4/10)🟡levert, −1,8 km mot 34 og én klasse lettere enn planlagt L2 (<138) — cruise-HR 122,7. Aerobt blokkas beste: dcp under hele 17-turers-baselinen (−2,65 til 6,56 %). B1b: HRV 56 D+1 (under gulv 62) → 70 D+2, retur på dag 2 ✓. Distansen korrigert 27.7 fra 31,16 → 32,19 (økta lå i to Strava-filer); skår fulgte 9,3 → 9,5
6Drag-km (a) intervall / (b) totalt16,0 I3/I4-intervall (10 + 6) · (b) 16,0 totalt, 0 langtur-MP🟡spec §2 presisert 27.7 til to tall. (a) over 11–14-dosen med 2,0 km — hele overskuddet kommer fra torsdagens format-bytte (planlagt 45/15 × 20 ≈ 3,9 drag-km → utført 6×1000 = 6,0), altså samme rot som pkt 2. (b) ikke bindende: planlagt rolig L2-langtur gir 0 MP-km
7BremserRHR-7d 39,0 · oHR-7d 43,4 · HRV-7d 70,3; dager ≥41 RHR: 2 (20.7, 26.7) · ≥46 oHR: 1 (26.7) · HRV <55: 0🟢ingen brems — begge krever ≥5 dager. Alle 7 dager BALANCED
8Sykdom/søvn/stress1 dysreguleringsdag (stress, 26.7, peak 5,5 — Carl-typet 27.7) · 0 sykedager · søvn-7d 84,3 · stress-7d 19,9🟡årsak oppgitt av Carl: 32 km langtur samme dag som 7 t legevakt til 23:00, middag 23:30 og sen leggetid — treningslast pluss ødelagt søvnvindu. Reell autonom respons (HRV 56, RHR 42, oHR 47), men forventet og borte etter én natt (HRV 70 D+2). Ingen infeksjonssymptomer. Gult følger regelen ordrett («0 sykedager»); se løype-notat 5 for foreslått presisering. Lov 7 ikke utløst (84,3 ≥ 80, 19,9 ≤ 25)
9Styrkestrength_log: 0 rader (plan: 1 × Styrke A 60 kg tir)🟡ikke logget — kan ikke skilles fra ikke utført. Siste loggførte økt 18.6. Tirsdagen ble også kortet til 6,0 km
10Modell27.7: Energimila 35:57/79 % · Kbh 1:19:35/55 % · Amsterdam 2:45:05/74 %; Δ fra 19.7: −1 / −4 / +1 pp🟢ingen fall >10 pp. Kbh-fallet på 4 pp er innenfor støyen i en uke uten HM-spesifikt arbeid

Beslutning: GRØNN

Ingen rad i justeringstabellen (spec §2) utløst: brems 1/2 nei (39,0 / 43,4 mot ≥41 / ≥46, og ingen av dem nær ≥5-dagerskravet) · HRV-regel nei (laveste 56, ikke <55; søvnskår samme dag 84 ≥ 75; null LOW/UNBALANCED) · sykdomsord/infeksjon nei (26.7 er Carl-typet stress: langtur + legevaktvakt, borte etter én natt) · B1b nei (HRV-retur dag 2) · kontroll-laktat nei (3,2 < 3,3, og drag 2→5 falt) · jobbstress nei (84,3 / 19,9) · to harde dager på rad forekom ikke.

Port: T2.5 er dermed ferdig lest. pace@128 målt tir/ons i normaltemp — norm@128 5:22 (21.7) og 5:26 (22.7, 11,9 °C); rullende median 5:19 nå mot 5:20 ved ankeret, og modellens egen delta (aerobic_change_s) er +0,5 s, altså flat. Porten hadde ingen tallfestet terskel på dette punktet, så den er lukket som måling, ikke som gate. Konsekvensen v4 §170 hang på (u30-kvaliteten kan være full terskel hvis T2.5 er grønn) ble tatt ut i praksis.

Det som ikke utløser en regel, men som er verdt å notere før u31: to uker på rad har Q2 blitt en klasse hardere enn planlagt (17.7 tempo I3 → 8×1000 I4; 23.7 45/15 kontrollert I3 → 6×1000 progressiv til 3:34). Ingen enkeltuke bryter noe. Mønsteret er nøyaktig det v4 §7 kaller «intensitetskryp» under R1, og u31 er ukas første dobbel — det er den uka mønsteret koster mest hvis det gjentar seg.

GRØNN = u31 som planlagt (frossen 2026-W31.json: 106 km · 2Q · 2 styrke · langtur 34 L3-progressiv — uendret fra v4).

Amendments — forslag (ikke skrevet inn)

Klasse (a), avvik som allerede skjedde i uka og mangler i plan_amendments.json:


{"date": "2026-07-23", "reason": "annet", "justified": false,
 "note": "Valg: 45/15 × 20 mølle kontrollert I3 (15,0→16,5 km/t, «IKKE full topp») → 6×1000 utendørs progressiv I4, snitt 3:39, siste drag 3:34. Andre uke på rad med intensitetsoppgradering på Q2."}
{"date": "2026-07-25", "reason": "annet", "justified": false,
 "note": "Langtur 32,2 km vs 34 planlagt og L1 rolig vs L2 (<138); fylling 80 g/t (trapp 4/10) ikke logget. Distansen korrigert 27.07 fra 31,16 til 32,19 — økta lå i to Strava-filer (bane-km + hovedfil).",
 "adjusts": {"long_run_km": 32.2}}

Klasse (b): ingen — beslutningen krever ingen endring i u31.

Neste uke (u31, 27.7.–2.8. — Bygg uke 2)

Nøkkeløkter: man 5×2000 @ 3:50–3:52 (i dag — HRV-gaten etter 30k+-lørdag er åpen: 70 mot gulv 62, TSB +0,3) · ons første DOBBEL i blokka (AM 5×5 min @ 4:10–4:15 · PM 10×1000 @ 3:50–3:53) · lør 34 km L3-progressiv, siste 6 km 4:15→4:00, fylling 80–85 g/t (trapp 5/10).

Vernes: fyllingstrappa. fueling_log.json er fortsatt tom etter trapp 4/10 — logges «NN g/t» ikke i Strava-desc på lørdag, er trapp 5/10 like umålbar, og KPI-en (85–90 g/t) har da null datapunkter tre uker inn i blokka. Sekundært: onsdagsdobbelen er ukas eneste tillatte stabling — torsdag og fredag skal være ekte easy.

Sko — avklart 27.7 (Carl): Saucony Endorphin Elite 2 er nyinnkjøpt intervallsko, ikke racesko. Den står allerede korrekt i shoe_log.json (role=quality, best_for: intervaller, aktivert 20.7). Racesko-rekka er dekket av ubrukte par: PUMA Fast-R Nitro Elite 3 #Poison Pink til Kbh og Amsterdam, Adidas Adios Pro 4 #3 til Energimila, Alphafly 3 i reserve — alle tre med _planned: true i loggen. v4 §171-punktet «ny PUMA Fast-R kjøpes u30–32» er dermed allerede lukket, og Energimila-skoen er Adios Pro 4 #3, ikke Streakfly 2 som briefen sier. Begge avvikene bør rettes i v4 §171.

Løype-notat (pilot, runde 2)

Alle punktene under er behandlet 27.07 samme dag. Status i klammer.

  1. Pkt 6 hadde to motstridende kanoner — spec §2 «21–25 drag-km i byggeuker» mot v4 §10 «I3/I4 11–14 drag-km/u». [LØST] Carl 27.7: de måler ulike størrelser. Spec §2 pkt 6 er presisert til to tall — (a) ren I3/I4-intervalldose mot 11–14, (b) total inkl. langtur-MP mot 21–25, der (b) kun er bindende når langturen har MP-/terskelinnhold. Skjemaet over er rescoret etter den regelen.
  2. v4-briefens §10-tabell var utdatert mot frossen original (103 km / «30 rolig L2» mot 102 / 34). [LØST] Rettet i Running_Brief_Plan_Kbh-Amsterdam_v4.md med datert errata-blokk; regnskapslinja fulgte med (planlagte ≥34,0 går fra 5 til 6). Den frosne md-kopien i data/plan_snapshots/ er urørt.
  3. Splittede økter manglet et spor. Lørdagens tur lå i to Strava-filer og telte som 31,16 km langtur + 1,03 km easy. [LØST] data/static/split_activity_merges.json + scripts/apply_split_merges.py, nytt steg 3c i sync_daily/sync_all før classify. Bieffekt verdt å kjenne: korrigert distanse endret langtur-skåren 9,3 → 9,5 fordi distansekomponenten passerer 32 km.
  4. Sidecar-JSON-en klarte ikke negativ decouplingdcp\s*(\d+…)% matchet ikke minus, så langtur_dcp_pct ble null. [LØST] backfill_blokkeval_json.py tar nå ASCII-minus, U+2212 og en-dash i både _num og dcp-regexen. W30 gir −3,36; W27–29 er byte-identiske etter re-kjøring.
  5. Pkt 8 skiller ikke forklart fra uforklart. 26.7 var en reell autonom respons, men årsaken er kjent og godartet (langtur + legevakt + ødelagt søvnvindu, borte etter én natt). Regelen «0 sykedager» gir gult uansett, så hver 30k+-uke og hver vaktuke blir gul. [FORSLAG — venter Carls ja] Endre spec §2 pkt 8 til: *grønn = 0 uforklarte dager (uavklart/infection i illness_classification.json), søvn-7d ≥80, stress-7d ≤25. Dager Carl har typet stress med begrunnelse telles fortsatt i sick_days, men gir ikke gult alene når de er borte innen 2 døgn — de føres i kommentaren.* Bruker maskineri som alt finnes (type + type_source: carl), ingen nye felt.
  6. CURRENT_STATUS viste feil sko-anbefaling — race-raden sa «(ingen aktive — kjøp ny PUMA Fast-R)» selv om tre ubrukte racesko sto i shoe_log.json. Årsak: generate_status bygde active kun fra shoe_mileage.shoes og så aldri shoe_mileage.planned. [LØST] planned slås nå inn i active, ubrukte merkes «📦 ubrukt» og listes på egen linje under mileage-tabellen (samme mønster som build_shoe_tracker alltid har hatt). v4 §171 er oppdatert med den faktiske rotasjonen.
  7. STALE TSB-vakten ga varige falske alarmer. Briefs er øyeblikksbilder som fryser TSB på skrivedagen, mens training_load.json reberegnes og blir retroaktivt bedre — 14.07-briefen står på −15,8 mot live −10,9, 17.07 på −13,6 mot −9,4, mens briefs regenerert i etterkant matcher eksakt. [LØST] validate_scores.py har fått eget --tsb-days-vindu (default 2). Carl valgte «scope vakten til ferske briefs»; 7 dager var ikke nok, siden 20.07-briefen driftet innenfor det vinduet. 2 døgn er vinduet der et avvik faktisk betyr 2026-06-10-bugen (brief generert før compute_load), ikke bare snapshot-alder. Sjekken virker fortsatt — --tsb-days 30 fanger begge de gamle.