# Hook cost campaign — dispatcher, fast-paths, design doctrine

outcome: per-tool-call hook cost cut from ~650ms/16 processes to ~97ms/10; the how-to-build-hooks doctrine lives in `/od-hooks` so the win is durable, not tribal.
status: DONE
source request: owner 2026-08-15 — "can we make the hooks less cpu intensive?", "do the same fast-path trick for the other always-on hooks", "add all this new knowledge about how to design hooks to /od-hooks".

## What landed (receipts)

- Dispatcher: one process per event (PreToolUse/PostToolUse/Stop), gates as modules; telemetry to `~/.local/state/overdeck/hook-fires.jsonl`; 88/88 tests; landed `b45f4de38`, deployed.
- Six .sh hooks fast-pathed (landed `3ce01a78d`); slopgate baseline-guard 67ms→5ms.
- Design ladder + cost model + third-party-plugin audit doctrine in `.claude/skills/od-hooks/SKILL.md` (adopted AND rejected rungs recorded, incl. measured bundle rejection).
- 2026-08-15 pm: `$(</dev/stdin)` idiom in the fast-paths broke on socket stdin (ENXIO), five guards fail-open fleet-wide; fixed to `read -rd ''` builtin, socket regression tests in both repos (overdeck `4ae53c12b`, slopgate `925c556`); ladder corrected same day.
- SessionStart ledger 40s fix: see `2026-08-15-session-start-ledger-latency.md`.
- Hooks page fire telemetry: see `2026-08-15-hooks-fire-telemetry.md` (own plan, ACTIVE).

Next executable action: none — follow-ons tracked in their own plans.
