# Resource no-kill policy for CPU — throttle rates, never kill scopes

outcome: agent-set slice misconfiguration can no longer starve or kill workloads: CPU is a rate (CPUWeight only), never a quota; enforcement is a deny rule plus policy lint, not convention.
status: DONE
source request: owner 2026-08-15 — "it keeps happening when agents set bad settings for slices... enforce a 'no kill policy' for cpu load just like we have for OOM."

## Policy (canonical copy lives in `.claude/skills/od-overload/SKILL.md`)

- CPU: CPUWeight only. CPUQuota on agent slices is FORBIDDEN (150% quota + weight 1 starved 50 sessions, nr_throttled 2.88M).
- Memory: stall-based ManagedOOM; MemoryHigh/MemoryMax forbidden (froze the box once).
- Pids: pids.max cap — new forks fail, nothing running is killed.

## Receipt

2026-08-15: od-overload SKILL.md policy table + fire-response commands landed; repo agent.slice source carried the killer CPUQuota — removed; `modules/workstation/claude/tools.json` deny rule `cpuquota-on-agent-slice` blocks setting CPUQuota on agent slices (clearing allowed); fleet `policy_lint.py` blocks CPUQuota/MemoryHigh/missing pids.max in fleet roles (landed 363f398c5). Next executable action: none.
