Captures the design we tried on 2026-05-04, the bugs we hit, and
recommendations for v2. Force-pushed the failed attempt away from
origin/clearpilot so the commits aren't recoverable from the remote;
this document is the durable record of what was learned.
Key takeaways for v2:
- Throttle modeld/dmonitoringmodeld instead of killing them — the
cold-spawn chain (modeld -> plannerd/frogpilot_process publishing
longitudinalPlan/frogpilotPlan, plus locationd/sensord/etc. settling)
is the root cause of the alert cascade.
- card.initialize() must run before park-mode is entered (it wires
up CarController so controls_update actually generates CAN sends).
- NO_ENTRY alerts fire on engage attempt, not on engage success — any
alert-suppression grace must key off CS.cruiseState.enabled rising
edge, not just self.enabled.
- The fan-range widening piece (parked -> 0-100% fan range, no floor)
is independently safe to land without the rest of the park-mode
plumbing.