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).
| # | Punkt | Kildeverdi | Status | Kommentar |
|---|---|---|---|---|
| 1 | Volum | 100,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 |
| 2 | Kvalitet antall+format | 2/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 |
| 3 | Dragsnitt + laktat | I3 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 |
| 4 | K6-akkumulator | — | — | aktiv fra u31 |
| 5 | Langtur | 32,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 |
| 6 | Drag-km (a) intervall / (b) totalt | 16,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 |
| 7 | Bremser | RHR-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 |
| 8 | Sykdom/søvn/stress | 1 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) |
| 9 | Styrke | strength_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 |
| 10 | Modell | 27.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 |
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).
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.
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.
Alle punktene under er behandlet 27.07 samme dag. Status i klammer.
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.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.dcp\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.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.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.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.