# v4tape #294 #297: hook code + init price (10 Oct)
Host research-box, /opt/sw/v4tape/. New fields on every NEW pools.jsonl row (service restarted 22:20 UTC 9 Oct; backup v4tape.py.bak-294):
- init_sqrtP (string, Initialize sqrtPriceX96), init_tick (int)  [#297, all classes]
- hook_code_size (bytes of eth_getCode of hook), hook_code_hash (sha1 of the "0x.." code string, first 10 chars; matches ba22_codes.json), hook_pool_count (pools in tape with this hook incl. this one; null if no hook)  [#294]
- Unhooked pools: hook_* = null. Existing fields code_size/code_hash are the TOKEN's code, not the hook's.
Backfill (history, 288 pools of the tape): /opt/sw/v4tape/pools_bf.jsonl (join on pool_id). hook_pool_count there counts within the tape only (not the 330 hooks of ba22).
hook_versions.csv: date, code_size, code_hash, pools, first_seen_utc; seeded from the tape, then updated per new hooked pool.
Example: jq -c 'select(.hook_code_size!=null)|[.pool_id,.hook_code_size,.hook_code_hash,.init_tick]' pools.jsonl
Gaps: no pools before the tape start; pool counts for hooks seen before the tape are not included.
