@@ -25,7 +25,7 @@ Allt nytt arbete ska följa indexet nedan. Fungerar något annorlunda i praktike
2525| ` tmp/ ` | Tillfälliga skript/artefakter | Valfritt (se §9) |
2626
2727Toppnivån ska bara innehålla: ` README.md ` , ` REPO_POLICY.md ` , ` pyproject.toml ` ,
28- ` uv.lock ` , ` .gitignore ` , och dessa mappar. ** Inga stub-filer** som bara pekar
28+ ` uv.lock ` , ` .gitignore ` , ` .pre-commit-config.yaml ` (lokal hook-kedja), och dessa mappar. ** Inga stub-filer** som bara pekar
2929bort flyttat innehåll — uppdatera länkar till canonical path (t.ex. ` docs/FIB_BACKTEST_PLAN.md ` ).
3030Tillfälliga filer läggs i ` tmp/ ` .
3131
@@ -83,6 +83,51 @@ Varje modul ska ha ett tydligt ansvar. Inga “utils.py” utan kategori.
8383| ` experiment.py ` | Standardrunner som loggar till ` experiments/runs/ ` |
8484| ` core/logging_conf.py ` | Loguru-setup |
8585
86+ ## 2B. Modulstorlek, ansvar och anti-blob (MÅSTE)
87+
88+ Undvik ** monolitiska moduler** (en fil som gör för många saker) och ** blobs**
89+ (stora klumpiga filer utan tydlig struktur). En fil ska ha ** en huvudorsak att ändras** .
90+
91+ ### Principer
92+
93+ - ** Ett ansvar per modul** — följ tabellen i §2; dela om en fil både CLI, domänlogik
94+ och GUI i samma modul utan tydlig gräns.
95+ - ** Inga generiska ` utils.py ` ** — namnge efter domän (` store.py ` , ` stability.py ` , …).
96+ - ** Tunna entrypoints** — ` experiment.py ` , ` runner.py ` , ` autolabel.py ` ska orkestrera;
97+ tung logik i paket undermappar.
98+ - ** Data ≠ dokumentation** — rå metrics i ` experiments/results/*.jsonl ` ; guider i ` docs/ ` ;
99+ korta beslut i ` premortem/reflections/ ` .
100+
101+ ### Storleksgränser (verkställs i pre-commit)
102+
103+ | Mönster | Max rader | Max storlek | Kommentar |
104+ | ---------| -----------| -------------| -----------|
105+ | ` premortem/reflections/*.md ` | 80 | 8 KiB | utom ` INDEX.md ` , ` README.md ` |
106+ | ` src/fibengine/**/*.py ` | 400 | 25 KiB | ny kod ska ligga under gränsen |
107+ | ` tests/**/*.py ` | 250 | 15 KiB | |
108+ | ` docs/**/*.md ` | 200 | 20 KiB | längre innehåll → flera docs-filer |
109+ | ` scripts/*.py ` | 120 | 8 KiB | |
110+
111+ Kör lokalt: ` uv run python scripts/check_repo_bounds.py `
112+
113+ ### Känd skuld (får inte växa)
114+
115+ | Fil | Rader (ca) | Plan |
116+ | -----| ------------| ------|
117+ | ` src/fibengine/labeling/tool.py ` | ~ 595 | Dela workspace / plot / CLI — grandfather tills split |
118+ | ` src/fibengine/labeling/behavior_facit.py ` | ~ 530 | Dela I/O vs validate — grandfather tills split |
119+ | ` scripts/behavior_facit.py ` | ~ 220 | Tunn CLI-wrapper — grandfather tills split |
120+ | ` scripts/compare_mtf_disambiguation.py ` | ~ 245 | Dela argparse vs report — grandfather tills split |
121+ | ` src/fibengine/research/human_review_level_events.py ` | ~ 610 | Dela pack writer vs runner — grandfather (main PR #11 ) |
122+
123+ Lägg ** inte** till funktioner i grandfathered filer; fixa genom split.
124+
125+ ### När ska du dela?
126+
127+ - Modul över gränsen ** och** inte på grandfather-listan.
128+ - Flera orelaterade klasser eller ` if __name__ ` + stor GUI i samma fil.
129+ - Du kan inte beskriva filens ansvar i en mening.
130+
86131## 3. Namnkonventioner
87132
88133- ** Filer i kod:** ` snake_case.py ` .
@@ -254,18 +299,30 @@ Premortem-tänk och reflektion är en **obligatorisk del** av arbetsflödet.
254299 ny backtest-matris) ska minst en reflektion skrivas i
255300 ` premortem/reflections/ ` .
2563013 . Filnamn i ` premortem/reflections/ ` ** MÅSTE** följa:
257- ` YYYY-MM-DD-<kort-beskrivning>.md `
258- 4 . Reflektionen ** MÅSTE** innehålla:
302+ ` YYYY-MM-DD-<kort-beskrivning>.md ` (eller ` premortem/reflections/YYYY/ ` när årsindelning
303+ är aktiv — se ` premortem/reflections/README.md ` ).
304+ 4 . ** INDEX:** Nya reflektioner ska listas i ` premortem/reflections/INDEX.md ` (en rad:
305+ datum, fil, typ, ämnen, status).
306+ 5 . Reflektionen ** MÅSTE** innehålla:
259307 - Hypotes
260308 - Scope (symbol/timeframe/data)
261309 - Observationer (nyckelmetrics)
262310 - Beslut
263311 - Nästa steg
312+ 6 . ** Storlek (MÅSTE):** varje fil i ` premortem/reflections/*.md ` (utom ` INDEX.md ` /` README.md ` )
313+ är ** ≤ 80 rader** och ** ≤ 8 KiB** . Detaljer → ` docs/ ` eller ` experiments/results/ ` .
314+ Pre-commit hook ` repo-bounds ` verkställer detta (samma regler som §2B för kod/docs).
264315
265316### Miniminivå per vecka
266317
267318- Minst ** en** ny reflektion per aktiv vecka där experiment körs.
268319
320+ ### Skalning
321+
322+ När ` reflections/ ` växer: följ ` premortem/reflections/README.md ` (flat + INDEX → års-mappar
323+ → arkiv för ` historical ` ). Djupare guider (t.ex. maskin-labeling) i ` docs/ ` , inte som
324+ långa reflektioner.
325+
269326## 12. Skriva på policyn
270327
271328Policyn ändras genom att uppdatera den här filen direkt. Vid större ändringar i
0 commit comments