# SAFETY-40: the integrator bound is not a bug **Decision.** `i_clamped` (the integrator reaching `integrator_max_w`, i.e. anti-windup) keeps alarming through the same `ClampWatchdog`: it is counted, notified on the same cadence, and escalates on a sustained run (SAFETY-41). It gets its own text, a `WARNING` and an amber status row. Only `clamped` (a command over `max_w`) and write-path clamps keep the BUG SIGNAL, the `ERROR` and the red row. **Why it still notifies.** On a default install `clamped` is unreachable (`control.py`, at the integrator bound), so the integrator bound is the only loop-side signal of a runaway such as the 14 768 W one. Silencing it would remove that. The card says the same: "the fix is to say the true thing, not to say less." **Why a bug has its own budget.** A genuine over-rating must not wait up to `REASSERT_S` behind anti-windup notices. `ClampWatchdog` tracks a separate `last_bug_alarm`, and a bug's text is never overwritten by later anti-windup text within an episode. Across episodes the WARNING uses its own notification id (`goodwe_integrator_bound`), so it cannot replace a BUG SIGNAL notice still on screen (review of #130). With only bug engagements, the cadence is the same as before (`test_clamp.py` part 9). **Numbers.** They come from the `Decision` of the clamping tick (`i_bound_w`, `requested_w`, `clamped_w`, `target_w`), not from `i_w` or `self.target`. **Open for the owner.** Whether scattered one-cycle anti-windup episodes should notify at all, or only log and count. They notify now, as before.