Files
gmgn-skills/skills
Jiujiu PanandClaude Opus 5 48720c2f5f fix(holder-analysis): stop reporting artifacts and empty data as verdicts
The report could reach a confident rating from numbers that carried no
information. Six fixes, all of the same shape: never turn a divide-by-zero
or an empty set into a conclusion.

- Degenerate float guard (FLOAT_MIN 2%): when burn + DEX hold nearly all
  supply, every `/ float_share` inflated dust wallets to double digits. A
  wallet holding ~$2 was rated "largest wallet holds 100% — extreme
  concentration → Not Recommended". Now prints absolute token/USD figures,
  forces percentage flags to  and rates  Cannot Assess. The dev
  sock-puppet rule uses no percentage, so it still escalates to 🔴.
- Empty holder list: upstream returns {"list":[]} for dead or de-indexed
  tokens. Every percentage read 0.00%, no threshold fired, and the report
  printed "no obvious dump risk" and "Normal" — a positive verdict on zero
  data. Same treatment as above, plus "none found 🟢" lines become .
- Coverage caveat now follows actual coverage: floors below 99.5%, complete
  values when Top100 covers the whole float. It previously contradicted the
  line directly above it.
- Chip quality split into three exclusive buckets (bought-in / zero-cost
  airdrop / risk-tagged) instead of one healthy ratio that collapsed to
  "0.0% 🔴" on any airdrop-distributed token. 🔴 is reserved for
  risk-tagged >30%: unknown provenance is not proven-bad.
- Diamond hands now require buy_tx_count_cur > 0. Never-bought wallets were
  counted as diamond hands, so an airdropped token claimed both "airdrop
  79% 🔴" and "diamond hands 80% " from the same wallets. They are now a
  separate Idle airdrop line.
- ATH staleness: upstream ath_price has been seen equal to price_24h, so
  creator_ath_info.ath_mc can sit below current MC. Cannot be recomputed
  here, so it is flagged rather than presented as the dev's peak.

Also fixes a NameError in the dev created-tokens Top3 loop (mig_lcomabel
assigned, mig_label read) that fired for any dev with a non-empty tokens
array.

Verified on live data in zh and en: a degenerate-float token, an
empty-holder token, and a token with real holders; the full-coverage and
created-tokens branches were covered with a stub CLI.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 14:53:13 +08:00
..