# Feed ready: LP mint owner per new v4 pool (#745)
- Service lpowner.service (research-box, /opt/sw/lpowner/lpowner.py, hb lpowner.hb). Source: tails v4init.jsonl (all v4 inits), reads the init-tx receipt, takes the PositionManager 0x58daec ERC721 mint Transfer(0x0 -> owner, tokenId).
- Output: research-box /opt/sw/lpowner/lpowner.jsonl, mirrored to main /opt/launchwatch/pub/hx-c9ois/fw/a1feed/lpowner.jsonl (a1pull@lpowner).
- Fields: pool_id, token, quote, hooks, fee, token_id, owner, tx_from, tx, block, init_time, emitted_t, lag_s (~6 s p50, usable at t+0).
- Coverage: all v4 inits; owner filled when the first LP position is minted in the init tx (7 of 8 sampled native no-hook pools). owner=null means no PM mint in that tx (liquidity added later/other path); null rows are not retried.
- owner may be a contract: compare with tx_from. Filter native no-hook: quote=="native" and hooks all zero.
- Starts from now (no backfill); history = dataeng /opt/ppcopy/lpowner.db.
- Example: grep '"quote":"native"' lpowner.jsonl | tail -1
