[eric] policy: a block on Opus 5 finishes the ask on Opus 4.8 on the same lane before touching the user's key, one failover per ask; fleet 14 days: 78 blocks on opus-5, 0 on opus-4-8

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
ciregenz
2026-09-07 18:32:56 -07:00
co-authored by Claude Fable 5.1
parent 9a56b2058b
commit 9bdd45f791
6 changed files with 105 additions and 7 deletions
+16
View File
@@ -189,6 +189,22 @@ def write_would_suicide(field: str, new_value: Any, powering: PoweringCredential
return False
# Anthropic's abuse classifier declines Opus 5 requests it passes on every other model: 78 of 84 fleet
# blocks in the fortnight to 2026-09-07 were on opus-5 against 0 on opus-4-8 across a comparable error
# volume, and Anthropic's own block text says to switch models. The sibling is the same vendor on the
# SAME lane and wallet, so a step can finish there without spending anything the user did not connect.
POLICY_BLOCK_SIBLING: dict[str, str] = {
"opus-5": "opus-4-8",
"opus-5-cc": "opus-4-8-cc",
"opus-5-api": "opus-4-8-api",
}
def policy_block_sibling(model_value: str) -> Optional[str]:
"""The same-lane model a policy-blocked step may finish on, or None when there is no such sibling."""
return POLICY_BLOCK_SIBLING.get(model_value)
def api_key_twin_model(model_value: str, settings: AppSettings) -> Optional[str]:
"""The same Claude model on the user's OWN Anthropic API key, when this run was on a subscription
lane and such a key is configured; None otherwise. Never the OpenSwarm Pro pool (not their money to