mirror of
https://github.com/Wei-Shaw/sub2api.git
synced 2026-10-28 16:09:34 +00:00
filterSchedulerExtra is an allowlist and never carried openai_passthrough / openai_oauth_passthrough, while credentials.model_mapping is preserved in full. Candidate filtering (ListSchedulableAccounts) reads that trimmed projection (sched:meta:<id>), so there a passthrough account looks exactly like a whitelist-mode one: Account.IsModelSupported falls back to the model_mapping whitelist and the account is dropped as model_not_supported. Forwarding, which hydrates the full account from sched:acc:<id>, still honors passthrough - hence "testing the account directly succeeds, but the gateway reports no available accounts supporting model X". The practical impact is that a stale leftover whitelist silently shrinks the candidate pool of accounts that were explicitly configured to let the upstream decide. When no account in the group lists the requested model, the group is fully dark for it even though every account can serve it. This is not a regression of #4936: that fix corrected the predicate (Account.IsModelSupported short-circuits passthrough before the mapping check), this one restores the input the predicate is fed. The projection allowlist predates #4936 by three and a half months and has never carried the flag, so the fix simply never took effect on the snapshot path. Add both keys to the allowlist, plus a regression test that round-trips the projection through JSON (the real sched:meta write/read path) and asserts the model gate still lets a non-whitelisted model through for a passthrough account. Claude-Session: https://claude.ai/code/session_01LwvyJVV2sdqiu41Z9JDNUq