One PR for everything unmerged on coral (14 commits, clean on main):
- per-model context config (compaction_strategy/trigger/deep_archive, respect_prompt_cache rename)
- snapcompact bitmap deep-archive frames via @oh-my-pi/pi-natives (Node loader bypass + startup-crash-on-load policy; the frames-intended check is inlined at the boot call site)
- web_search tool (Exa)
- skills index + skill tool
- idle_compaction_minutes per-model preset
- shutdown timeout fix, initJobManager restore, boredom wake, idle compaction wiring
- discord DM wake debounce
- resolve subagent model as preset key
Verified: tsc clean, 90/90 runtime tests, nix build .#coral succeeds.