Solar boundaries, actual instants
Months change at the twelve jie solar terms, starting at Li Chun, not at the first lunar day or the Gregorian month. The astronomy engine finds the solar-longitude crossings. IANA timezones are resolved to UTC; skipped daylight-saving times fail, and repeated times require an explicit first/second choice. No unknown hour is invented.
A bounded seasonal model
Yin/Mao are Wood, Si/Wu Fire, Shen/You Metal, Hai/Zi Water. This simplified whole-branch convention treats Chen/Wei/Xu/Chou as Earth; it does not model the last eighteen days or hidden-stem day allocations. The seasonal element is Wang; what it generates is Xiang; what generates it is Xiu; what controls it is Qiu; what it controls is Si. This alone does not decide chart strength or useful elements.