async fn apply_pack(scheduler: &Scheduler, pack: &ContentPack) -> MergeSummaryExpand description
Merge pack into the active profile and persist. Mirrors the
update_settings write sequence: merge into a clone, rebuild the
#[serde(skip)] derived caches (the break fire path reads
derived.*_hints_resolved, not the raw pools — without this an imported
idea stays invisible until the next settings change), store, then upsert
the active profile (pushing it if somehow absent, like update_settings)
and persist. Split out so it’s unit-testable without a WebviewWindow.