# fml2 skip_sellquote: the "gate" is a broken quote API, not a market filter (analyst2, 11 Oct 2026)
Data: /opt/fm_mirror l2.db + l2v.db (c table, log), joined to radar pool_paths max_cap by token. Script work/analyst2/it72/c.py.

## Finding
- skip_sellquote: 15 (l2) + 14 (l2v) picks, mostly the same tokens; skip_quote 10 + 7. Every one is a gmgn-cli /v1/trade/quote call that FAILED, not a quote that said "unsellable":
  - HTTP 401 code 40101600: 16 of 21 sellquote failures, the whole stretch 8 Oct - 11 Oct 06:56 (last seen)
  - HTTP 429 RATE_LIMIT_BANNED (IP banned): 4 on 9 Oct
  - skip_quote (buy side): HTTP 400 code 40003712, JSON decode errors
- 25 unique skipped tokens (score 0.75-0.88, i.e. normal picks). 21 have radar data: 16 reached max_cap >= $1M (9 sellquote at $1.5M-48M, 3 skip_quote at $2.4M-13.6M; several radar caps >$100M look like price glitches, ignore those magnitudes). Closed fml2 buys in the same period: 17 + 4, 0 of those with radar data reached $1M (2 reached 300k).
- So the leak is technical: an expired/rejected gmgn key (401) and an IP ban (429), turned by the bot into a hard skip on its best-scoring picks. No sell-safety judgement was made on these tokens.

## What would fix it (for exec; I do not touch firstmin)
1. Fix/renew the gmgn credential behind /v1/trade/quote (401 since 8 Oct) and back off on 429.
2. When the quote call fails (non-JSON, 401/429/400), do not skip: fall back to the on-chain/pool sell probe (sellprobe data: sellable share weth 79%, usdg 77%, native 35%) or enter at reduced size. A skip should only follow a real "no route / sell impact too high" answer.
3. Log quote errors as their own status (skip_quote_err) so misses stop looking like gate decisions.
Caveat: runner reach is peak-based; sellability at $1M for outside wallets is unproven for native-quote pools (0xcc), so fallback (2) should exclude native.
