Part of #64.
Problem
EnergyPlusData is in everyone's closure — it gates ~96% of compile failures, is too big to port wholesale, and impossible to avoid (every fn takes state). Porting it fully blocks everything; not porting it blocks everything.
Approach
Do not port the object — port a path-specific slice, the Route-B prune that already worked (Minimal.idf: 46→22 fields, cone 152→23):
Done when
- A minimal viable
EnergyPlusData slice compiles and supports one IDF end-to-end.
- Functions depend on per-module sub-states, not the full god-object.
Note: end-to-end-runnable for one IDF beats fully-ported-for-nothing.
🤖 Generated with Claude Code
Part of #64.
Problem
EnergyPlusDatais in everyone's closure — it gates ~96% of compile failures, is too big to port wholesale, and impossible to avoid (every fn takesstate). Porting it fully blocks everything; not porting it blocks everything.Approach
Do not port the object — port a path-specific slice, the Route-B prune that already worked (Minimal.idf: 46→22 fields, cone 152→23):
state.dataXxx->...fields are actually read/written on that path, port only those.dataCoolTower,dataInput, ...) — already namespaced in C++ — so each fn pulls in only the sub-struct it uses./home/bart/Github/EnergyPlus/READ-ONLY as the oracle for the slice.Done when
EnergyPlusDataslice compiles and supports one IDF end-to-end.Note: end-to-end-runnable for one IDF beats fully-ported-for-nothing.
🤖 Generated with Claude Code