check / check (push) Canceled after 0s
A netblock's next ban for a broken limit within SWWAF_LIMIT_BAN_REPEAT_WINDOW lasts three times its last limit or admin ban. A hand-written entry with an expires at or before its start made that length zero or less, so the next limit ban refused nothing. The bans.json checks now refuse such an entry: it stops the start, and an edit holding one is set aside as bans.json.bad while running. README's "State files" lists it with the other refused entries. Model: opus-5-5