Yes, of course, this all can be achieved with separate mosfets for pre-charge and the main contactor mosfets, specialized gate drivers, dedicated power supplies, and MCU controlled duty cycles. However, I think the appeal of this approach was to make it elegantly simple. Possibly a silver bullet.
Anyway, after dozens of hours and blown mosfets, the schematic below almost worked the way I wanted. The pre-charge ramped up nicely and the bleeding transistor pulled the gate down fast enough when turned off. BUT... The big problem is that there is a spike on the gate every time I connect battery (and there still a spark too). It happens even with the switch on the upper 1M resistor off. It's pretty clear that 1uF+1k network connecting DC link cap negative side/load and the mosfet gate causes a voltage spike killing the mosfet and the zener is not effective stopping that (I have two zeners in different spots). This may not necessarily always kill mosfets each time at lower currents (smaller DC link banks) and/or voltages below 60v which may explain variances in people's experiences, where it may work without blowing mosfets every time. However, it clearly does turn on the mosfet for a split second when the battery is connected and then fades out. Once I disconnect the 1uf+1k from the gate, there is no spike anymore but of course, there is no pre-charge. I attempted to change 1k resistor with a 2k one but it kills mosfets faster and for sure. I think because the DC link caps once discharged are basically a short to the Batt+, we are getting almost battery voltage to the gate for a split second and zener is no help here.
Anyhow, I went back to leveraging the ohmic region of the mosfet and it works without spikes, sparks, and blowing mosfets. With a dialed-in ramp-up rate of approximately 1v/sec on the gate, it's slow enough to charge the caps but not long enough to heat up mosfets. I have three 170A rated in parallel with Vgs of 2-3v solders to metal core board, so heat dissipation is not a problem. The only downside is that it takes a couple of seconds to turn on but it's a small price to pay. Of course, real world tests will show if this is feasible approach long term.
Edit:
Finally, I was able to simulate exactly what I thought was happening. Simply connecting the battery positive lead to this schematic with assumed 150v causes a momentary spike up to 51v on the gate (or about 48v with 60v battery). this is more than 2x enough to kill a mosfet.
I removed the zener from the simulation intentionally as the simulation seems to suppress like it should in theory but that's not what happens in practice, not with zeners anyhow. Reading more about zeners, even though they are used for regulating the currents they are not effective in suppressing transients. For that, we'd need to use a TVS which is what I am planning to test next. If it works, that's great, however, it looks like the mosfet would be again compromised if the battery negative side gets disconnected (like BMS tripping for example). The gate again would go to crazy high voltage more than enough to kill it. See the second screenshot below. I'll experiment with TVS but I don't know if it's a good idea to always rely on them for a condition that we know is sure to occur.
