#!/usr/bin/env php ═══════════════════════════════════════════════════════════════ Deep Debug Test ═══════════════════════════════════════════════════════════════ Parameters: user=1, name=20251012T053349Z-ca94635b, z=4, x=2, y=15 Step 1: Check Redis ─────────────────────────────────────────────────────────────── ✓ Redis connected Cache status: header: 127 bytes root: 2578 bytes leaf: NOT FOUND Step 2: Parse Header ─────────────────────────────────────────────────────────────── Header: minZoom: 1 maxZoom: 2 rootLen: 2578 leafOff: 0 leafLen: 2722 tileDataOff: 4931102 Step 3: Parse Directory ─────────────────────────────────────────────────────────────── Using: root directory Size: 2578 bytes Parsed: 102 entries Step 4: Compute Actual Zoom Range ─────────────────────────────────────────────────────────────── Actual zoom range: [0, 17] Header zoom range: [1, 2] Step 5: Check Requested Zoom ─────────────────────────────────────────────────────────────── Requested z=4 ✓ Zoom is in range Step 6: Compute TileID ─────────────────────────────────────────────────────────────── z=4, x=2, y=15 => TileID=99 Step 7: Search Directory ─────────────────────────────────────────────────────────────── Looking for TileID=99 First 5 entries: [0] TileID=99, run=61, offset=77, len=64 [1] TileID=1467064, run=12022, offset=936, len=9 [2] TileID=3359991, run=59, offset=1012, len=492 [3] TileID=3376329, run=1850014, offset=1096, len=13919 [4] TileID=3376443, run=170350892, offset=351777249486534, len=15488484252 Search result: relOff: 77 len: 64 ✓ Tile found! NOTE: Directory offsets are ABSOLUTE file offsets Tile data offset: 77 Tile data length: 64 bytes Step 8: Fetch from S3 ─────────────────────────────────────────────────────────────── S3 key: 1/20251012T053349Z-ca94635b/20251012T053349Z-ca94635b.pmtiles Range: bytes=77-140 ✓ Retrieved 64 bytes First 32 bytes (hex): 000000f803000000000000f60300000000000001020104000d689b98c3bc4594 ✅ SUCCESS!