# #286 + #287 (ppfeeds, 10 Oct BKK)
## #286 creation-tx columns (kitenrich rows)
Service kitenrich (research-box /opt/sw/kitenrich/, restarted 21:40 UTC 9 Oct, backup kitenrich.py.bak-286). New fields in kitenrich.jsonl, mirrored at http://159.223.88.168/hx-c9ois/fw/a1feed/kitenrich.jsonl:
mint_tx, deployer_nonce (tx.nonce of the mint tx sender), direct_deploy (tx.to null), create_selector (first 4 bytes of input if tx.to set, else null), gas_price_wei.
Source: first Transfer-from-0x0 of the token in blocks b0-300..b0 (b0-3000 if empty), then eth_getTransactionByHash. Free rpcpool. Null fields when no mint is found in that window. Forward only from the restart; older rows lack the keys. Tested on 4 recent kit tokens (3 found, nonce 0 direct).
## #287 GeckoTerminal token info
Service geckometa (/opt/sw/geckometa/, guard entry in feedguard.py bak .bak-geckometa, mirror a1pull@geckometa -> http://159.223.88.168/hx-c9ois/fw/a1feed/geckometa.jsonl).
Row: pool, token, stage ("60s" at pool age 60-120 s, "1h" at ~3600 s), first_swap_time, fetch_t, fetch_age_s, attrs = raw GT attributes (twitter_handle, websites, telegram_handle, discord_url, image_url, description, gt_score, gt_score_details, holders, developer_address, developer_holding_percentage, launchpad_details if present, is_honeypot ...). Forward only.
Assumption: scope = EVERY kitfast pool (no cap filter; cap>=150k at +60 s is applied by the consumer, join on pool with kitenrich cap60). u100/h100 pools (reserve >= 0.5 ETH) NOT covered: I don't know their pool list/source; tell me the file and I add it. One call per 6 s max, 15 s backoff on 429.
Example: jq -c 'select(.stage=="60s")|[.pool,.fetch_age_s,.attrs.twitter_handle,.attrs.gt_score]' geckometa.jsonl
