interior_struct.zalmoxis.global_miscibility = true is rejected by valid_zalmoxis for the zalmoxis structure, but valid_zalmoxis returns early for interior_struct.module = "spider", so the same setting is accepted there (test_spider_module_skips_the_gate asserts that). That makes the spider structure the only accepted config in which the solvus override in the main loop runs, and it is also the config in which nothing sets the solvus values.
The override in proteus.py (around line 1204) checks only that R_solvus is in hf_row and that R_solvus < R_int. ZeroHelpfileRow initialises R_solvus, T_solvus and P_solvus to 0, and only the Zalmoxis structure writes R_solvus. With the spider structure, 0 passes the check, and the atmosphere is called with T_surf = T_magma = T_solvus = 0, P_surf = 0 and R_int = 0. I have seen this with a stub interior that never sets R_solvus; I have not run a full proteus start with this config.
Two changes, I think:
- Reject
global_miscibility = true for every structure module until the Zalmoxis side is usable, or at least require the zalmoxis structure.
- In the override, require
R_solvus > 0 as well.
A related question for when miscibility is usable: after the atmosphere step, the finally block restores T_surf together with T_magma, P_surf and R_int. So the T_surf that the atmosphere solves in the solvus frame is never committed, and the helpfile T_surf stays at its value from before the solvus appeared. Is that what we want, or should T_surf stay out of the restored set?
interior_struct.zalmoxis.global_miscibility = trueis rejected byvalid_zalmoxisfor the zalmoxis structure, butvalid_zalmoxisreturns early forinterior_struct.module = "spider", so the same setting is accepted there (test_spider_module_skips_the_gateasserts that). That makes the spider structure the only accepted config in which the solvus override in the main loop runs, and it is also the config in which nothing sets the solvus values.The override in
proteus.py(around line 1204) checks only thatR_solvusis inhf_rowand thatR_solvus < R_int.ZeroHelpfileRowinitialisesR_solvus,T_solvusandP_solvusto 0, and only the Zalmoxis structure writesR_solvus. With the spider structure, 0 passes the check, and the atmosphere is called withT_surf = T_magma = T_solvus = 0,P_surf = 0andR_int = 0. I have seen this with a stub interior that never setsR_solvus; I have not run a fullproteus startwith this config.Two changes, I think:
global_miscibility = truefor every structure module until the Zalmoxis side is usable, or at least require the zalmoxis structure.R_solvus > 0as well.A related question for when miscibility is usable: after the atmosphere step, the
finallyblock restoresT_surftogether withT_magma,P_surfandR_int. So theT_surfthat the atmosphere solves in the solvus frame is never committed, and the helpfileT_surfstays at its value from before the solvus appeared. Is that what we want, or shouldT_surfstay out of the restored set?